47 maDiscreteHitTolerancePerAxis(rLogicHitTolerancePerAxis),
48 mbCollectHitStack(false),
50 mbHitTextOnly(bHitTextOnly)
83 if(rDiscreteHitTolerancePerAxis.
getX() > 0 || rDiscreteHitTolerancePerAxis.
getY() > 0)
85 aPolygonRange.
grow(rDiscreteHitTolerancePerAxis);
95 std::max(rDiscreteHitTolerancePerAxis.
getX(), rDiscreteHitTolerancePerAxis.
getY()));
112 const bool bDiscreteHitToleranceUsed(rDiscreteHitTolerancePerAxis.
getX() > 0
113 || rDiscreteHitTolerancePerAxis.
getY() > 0);
115 if (bDiscreteHitToleranceUsed)
117 aPolygonRange.
grow(rDiscreteHitTolerancePerAxis);
124 if(bDiscreteHitToleranceUsed &&
128 std::max(rDiscreteHitTolerancePerAxis.
getX(), rDiscreteHitTolerancePerAxis.
getY())))
152 bool bTryFastResult(
false);
156 mbHit = bTryFastResult;
161 aInverseSceneTransform.
invert();
162 const basegfx::B2DPoint aRelativePoint(aInverseSceneTransform * aLogicHitPosition);
165 if(aRelativePoint.
getX() >= 0.0 && aRelativePoint.
getX() <= 1.0
166 && aRelativePoint.
getY() >= 0.0 && aRelativePoint.
getY() <= 1.0)
177 if(!aFront.
equal(aBack))
181 if(!rPrimitives.empty())
185 rPrimitives.
getB3DRange(rObjectViewInformation3D));
191 if(aObjectRange.
overlaps(aFrontBackRange))
195 rObjectViewInformation3D,
199 aCutFindProcessor.
process(rPrimitives);
316 double fLogicHitTolerance(0.0);
445 if(aUnitRange.
isInside(aRelativePoint))
499 if(!rChildren.empty())
511 const std::vector< basegfx::B2DPoint >& rPositions = rPointArrayCandidate.
getPositions();
512 const sal_uInt32
nCount(rPositions.size());
sal_uInt8 GetAlpha(sal_Int32 nX, sal_Int32 nY) const
const Size & GetSizePixel() const
constexpr tools::Long Height() const
constexpr tools::Long Width() const
void transform(const basegfx::B2DHomMatrix &rMatrix)
B2DRange getB2DRange() const
void transform(const basegfx::B2DHomMatrix &rMatrix)
B2DRange const & getB2DRange() const
bool overlaps(const B3DRange &rRange) const
bool equal(const B3DTuple &rTup) const
bool isInside(const Tuple2D< TYPE > &rTuple) const
basegfx::B2DLineJoin getLineJoin() const
virtual sal_uInt32 getPrimitive2DID() const =0
provide unique ID for fast identifying of known primitive implementations in renderers.
virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D &rViewInformation) const
The default implementation will use getDecomposition results to create the range.
const basegfx::B2DHomMatrix & getTransform() const
const BitmapEx & getBitmap() const
data read access
const Primitive2DContainer & getChildren() const
data read access
const basegfx::B2DPolyPolygon & getMask() const
data read access
PointArrayPrimitive2D class.
const std::vector< basegfx::B2DPoint > & getPositions() const
data read access
PolyPolygonColorPrimitive2D class.
const basegfx::B2DPolyPolygon & getB2DPolyPolygon() const
data read access
PolygonHairlinePrimitive2D class.
const basegfx::B2DPolygon & getB2DPolygon() const
data read access
PolygonMarkerPrimitive2D class.
const basegfx::B2DPolygon & getB2DPolygon() const
data read access
PolygonStrokePrimitive2D class.
const basegfx::B2DPolygon & getB2DPolygon() const
data read access
const attribute::LineAttribute & getLineAttribute() const
PolygonWavePrimitive2D class.
double getWaveHeight() const
void append(const Primitive2DReference &)
const geometry::ViewInformation3D & getViewInformation3D() const
const primitive3d::Primitive3DContainer & getChildren3D() const
data read access
bool tryToCheckLastVisualisationDirectHit(const basegfx::B2DPoint &rLogicHitPoint, bool &o_rResult) const
Fast HitTest which uses the last buffered BitmapEx from the last rendered area if available.
const basegfx::B2DHomMatrix & getObjectTransformation() const
TransparencePrimitive2D class.
basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D &aViewInformation) const
void process(const primitive2d::BasePrimitive2D &rCandidate)
void updateViewInformation(const geometry::ViewInformation2D &rViewInformation2D)
const geometry::ViewInformation2D & getViewInformation2D() const
data read access
bool checkFillHitWithTolerance(const basegfx::B2DPolyPolygon &rPolyPolygon, const basegfx::B2DVector &rDiscreteHitTolerancePerAxis) const
const basegfx::B2DPoint & getDiscreteHitPosition() const
data read access
basegfx::B2DVector maDiscreteHitTolerancePerAxis
discrete HitTolerance
virtual ~HitTestProcessor2D() override
bool checkHairlineHitWithTolerance(const basegfx::B2DPolygon &rPolygon, const basegfx::B2DVector &rDiscreteHitTolerancePerAxis) const
HitTestProcessor2D(const geometry::ViewInformation2D &rViewInformation, const basegfx::B2DPoint &rLogicHitPosition, const basegfx::B2DVector &rLogicHitTolerancePerAxis, bool bHitTextOnly)
bool getCollectHitStack() const
bool getHitTextOnly() const
void processBasePrimitive2D(const primitive2d::BasePrimitive2D &rCandidate) override
tooling methods
basegfx::B2DPoint maDiscreteHitPosition
discrete HitTest position
const basegfx::B2DVector & getDiscreteHitTolerance() const
primitive2d::Primitive2DContainer maHitStack
stack of HitPrimitives, taken care of during HitTest run
void check3DHit(const primitive2d::ScenePrimitive2D &rCandidate)
bool mbHit
Boolean to flag if a hit was found. If yes, fast exit is taken.
void process(const primitive3d::Primitive3DContainer &rSource)
const ::std::vector< basegfx::B3DPoint > & getCutPoints() const
data read access
#define PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLGRADIENTPRIMITIVE2D
#define PRIMITIVE2D_ID_SCENEPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLGRAPHICPRIMITIVE2D
#define PRIMITIVE2D_ID_CONTROLPRIMITIVE2D
#define PRIMITIVE2D_ID_GRIDPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONMARKERPRIMITIVE2D
#define PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D
#define PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D
#define PRIMITIVE2D_ID_HELPLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONWAVEPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLHATCHPRIMITIVE2D
#define PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D
#define PRIMITIVE2D_ID_SHADOWPRIMITIVE2D
#define PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D
#define PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D
#define PRIMITIVE2D_ID_MASKPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D
#define PRIMITIVE2D_ID_METAFILEPRIMITIVE2D
#define PRIMITIVE2D_ID_BITMAPPRIMITIVE2D
#define PRIMITIVE2D_ID_MEDIAPRIMITIVE2D
#define PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D
B2DPolygon createPolygonFromRect(const B2DRectangle &rRect, double fRadiusX, double fRadiusY)
bool isInside(const B2DPolygon &rCandidate, const B2DPoint &rPoint, bool bWithBorder)
bool isInEpsilonRange(const B2DPoint &rEdgeStart, const B2DPoint &rEdgeEnd, const B2DPoint &rTestPosition, double fDistance)
B2DPolygon const & createUnitPolygon()
B2IRange fround(const B2DRange &rRange)
o3tl::enumarray< SvxBoxItemLine, sal_uInt16 > aDistance