drawinglayer/source/processor2d/hittestprocessor2d.cxx | 40 ++++++++-------- include/drawinglayer/processor2d/hittestprocessor2d.hxx | 10 ++-- 2 files changed, 25 insertions(+), 25 deletions(-)
New commits: commit 3dc2f4f0d2a8a7c51d01d29fd55ca9e4e6926596 Author: Sarper Akdemir <sarper.akdemir.ext...@allotropia.de> AuthorDate: Fri Jul 21 15:29:17 2023 +0300 Commit: Sarper Akdemir <sarper.akdemir.ext...@allotropia.de> CommitDate: Fri Jul 21 18:26:10 2023 +0200 related tdf#152992: fix minor logic error in hittestprocessor2d Fix logic errors I've missed previously on (2c8c436c4a8546276e285dd18f3f7ded091a2c4e) where initialization of aDiscreteHalfLineVector wasn't adapted to new HitTolerancePerAxis in PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D & PRIMITIVE2D_ID_POLYGONWAVEPRIMITIVE2D. Change-Id: I5d9f0347e489301d7e4f06f98f4a9c9d1385d6d9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154717 Tested-by: Jenkins Reviewed-by: Sarper Akdemir <sarper.akdemir.ext...@allotropia.de> diff --git a/drawinglayer/source/processor2d/hittestprocessor2d.cxx b/drawinglayer/source/processor2d/hittestprocessor2d.cxx index 77b396f60f5d..b760b24f845a 100644 --- a/drawinglayer/source/processor2d/hittestprocessor2d.cxx +++ b/drawinglayer/source/processor2d/hittestprocessor2d.cxx @@ -291,7 +291,7 @@ namespace drawinglayer::processor2d { // for all other B2DLINEJOIN_* do a hairline HitTest with expanded tolerance const basegfx::B2DVector aDiscreteHalfLineVector(getViewInformation2D().getObjectToViewTransformation() - * basegfx::B2DVector(rLineAttribute.getWidth() * 0.5, 0.0)); + * basegfx::B2DVector(rLineAttribute.getWidth() * 0.5, rLineAttribute.getWidth() * 0.5)); mbHit = checkHairlineHitWithTolerance( rPolygonCandidate.getB2DPolygon(), getDiscreteHitTolerance() + aDiscreteHalfLineVector); @@ -328,7 +328,7 @@ namespace drawinglayer::processor2d } const basegfx::B2DVector aDiscreteHalfLineVector(getViewInformation2D().getObjectToViewTransformation() - * basegfx::B2DVector(fLogicHitTolerance, 0.0)); + * basegfx::B2DVector(fLogicHitTolerance, fLogicHitTolerance)); mbHit = checkHairlineHitWithTolerance( rPolygonCandidate.getB2DPolygon(), commit 2acfc1448facebd254bda18b2bf286a29be636a7 Author: Sarper Akdemir <sarper.akdemir.ext...@allotropia.de> AuthorDate: Fri Jul 21 13:47:21 2023 +0300 Commit: Sarper Akdemir <sarper.akdemir.ext...@allotropia.de> CommitDate: Fri Jul 21 18:25:59 2023 +0200 related tdf#152992: rename HitTolerance to HitTolerancePerAxis Rename ...HitTolerance instances to ...HitTolerancePerAxis as suggested by Noel on: https://gerrit.libreoffice.org/c/core/+/154694/2/include/drawinglayer/processor2d/hittestprocessor2d.hxx#45 Change-Id: I9c5b69218a4809f795c9a6324d76b2e2c1b12343 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154716 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins Reviewed-by: Sarper Akdemir <sarper.akdemir.ext...@allotropia.de> diff --git a/drawinglayer/source/processor2d/hittestprocessor2d.cxx b/drawinglayer/source/processor2d/hittestprocessor2d.cxx index 6e624fa4ef97..77b396f60f5d 100644 --- a/drawinglayer/source/processor2d/hittestprocessor2d.cxx +++ b/drawinglayer/source/processor2d/hittestprocessor2d.cxx @@ -41,25 +41,25 @@ namespace drawinglayer::processor2d { HitTestProcessor2D::HitTestProcessor2D(const geometry::ViewInformation2D& rViewInformation, const basegfx::B2DPoint& rLogicHitPosition, - const basegfx::B2DVector& rLogicHitTolerance, + const basegfx::B2DVector& rLogicHitTolerancePerAxis, bool bHitTextOnly) : BaseProcessor2D(rViewInformation), - maDiscreteHitTolerance(rLogicHitTolerance), + maDiscreteHitTolerancePerAxis(rLogicHitTolerancePerAxis), mbCollectHitStack(false), mbHit(false), mbHitTextOnly(bHitTextOnly) { // ensure input parameters for hit tolerance is >= 0.0 - if (maDiscreteHitTolerance.getX() < 0.0) - maDiscreteHitTolerance.setX(0.0); - if (maDiscreteHitTolerance.getY() < 0.0) - maDiscreteHitTolerance.setY(0.0); + if (maDiscreteHitTolerancePerAxis.getX() < 0.0) + maDiscreteHitTolerancePerAxis.setX(0.0); + if (maDiscreteHitTolerancePerAxis.getY() < 0.0) + maDiscreteHitTolerancePerAxis.setY(0.0); - if (!maDiscreteHitTolerance.equalZero()) + if (!maDiscreteHitTolerancePerAxis.equalZero()) { // generate discrete hit tolerance - maDiscreteHitTolerance - = getViewInformation2D().getObjectToViewTransformation() * rLogicHitTolerance; + maDiscreteHitTolerancePerAxis + = getViewInformation2D().getObjectToViewTransformation() * rLogicHitTolerancePerAxis; } // generate discrete hit position @@ -72,7 +72,7 @@ namespace drawinglayer::processor2d bool HitTestProcessor2D::checkHairlineHitWithTolerance( const basegfx::B2DPolygon& rPolygon, - const basegfx::B2DVector& rDiscreteHitTolerance) const + const basegfx::B2DVector& rDiscreteHitTolerancePerAxis) const { basegfx::B2DPolygon aLocalPolygon(rPolygon); aLocalPolygon.transform(getViewInformation2D().getObjectToViewTransformation()); @@ -80,9 +80,9 @@ namespace drawinglayer::processor2d // get discrete range basegfx::B2DRange aPolygonRange(aLocalPolygon.getB2DRange()); - if(rDiscreteHitTolerance.getX() > 0 || rDiscreteHitTolerance.getY() > 0) + if(rDiscreteHitTolerancePerAxis.getX() > 0 || rDiscreteHitTolerancePerAxis.getY() > 0) { - aPolygonRange.grow(rDiscreteHitTolerance); + aPolygonRange.grow(rDiscreteHitTolerancePerAxis); } // do rough range test first @@ -92,7 +92,7 @@ namespace drawinglayer::processor2d return basegfx::utils::isInEpsilonRange( aLocalPolygon, getDiscreteHitPosition(), - std::max(rDiscreteHitTolerance.getX(), rDiscreteHitTolerance.getY())); + std::max(rDiscreteHitTolerancePerAxis.getX(), rDiscreteHitTolerancePerAxis.getY())); } return false; @@ -100,7 +100,7 @@ namespace drawinglayer::processor2d bool HitTestProcessor2D::checkFillHitWithTolerance( const basegfx::B2DPolyPolygon& rPolyPolygon, - const basegfx::B2DVector& rDiscreteHitTolerance) const + const basegfx::B2DVector& rDiscreteHitTolerancePerAxis) const { bool bRetval(false); basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolyPolygon); @@ -109,12 +109,12 @@ namespace drawinglayer::processor2d // get discrete range basegfx::B2DRange aPolygonRange(aLocalPolyPolygon.getB2DRange()); - const bool bDiscreteHitToleranceUsed(rDiscreteHitTolerance.getX() > 0 - || rDiscreteHitTolerance.getY() > 0); + const bool bDiscreteHitToleranceUsed(rDiscreteHitTolerancePerAxis.getX() > 0 + || rDiscreteHitTolerancePerAxis.getY() > 0); if (bDiscreteHitToleranceUsed) { - aPolygonRange.grow(rDiscreteHitTolerance); + aPolygonRange.grow(rDiscreteHitTolerancePerAxis); } // do rough range test first @@ -125,7 +125,7 @@ namespace drawinglayer::processor2d basegfx::utils::isInEpsilonRange( aLocalPolyPolygon, getDiscreteHitPosition(), - std::max(rDiscreteHitTolerance.getX(), rDiscreteHitTolerance.getY()))) + std::max(rDiscreteHitTolerancePerAxis.getX(), rDiscreteHitTolerancePerAxis.getY()))) { bRetval = true; } diff --git a/include/drawinglayer/processor2d/hittestprocessor2d.hxx b/include/drawinglayer/processor2d/hittestprocessor2d.hxx index 5755cf77f5e0..6d092efe983a 100644 --- a/include/drawinglayer/processor2d/hittestprocessor2d.hxx +++ b/include/drawinglayer/processor2d/hittestprocessor2d.hxx @@ -42,7 +42,7 @@ namespace drawinglayer::processor2d basegfx::B2DPoint maDiscreteHitPosition; /// discrete HitTolerance - basegfx::B2DVector maDiscreteHitTolerance; + basegfx::B2DVector maDiscreteHitTolerancePerAxis; /// stack of HitPrimitives, taken care of during HitTest run primitive2d::Primitive2DContainer maHitStack; @@ -60,17 +60,17 @@ namespace drawinglayer::processor2d void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate) override; bool checkHairlineHitWithTolerance( const basegfx::B2DPolygon& rPolygon, - const basegfx::B2DVector& rDiscreteHitTolerance) const; + const basegfx::B2DVector& rDiscreteHitTolerancePerAxis) const; bool checkFillHitWithTolerance( const basegfx::B2DPolyPolygon& rPolyPolygon, - const basegfx::B2DVector& rDiscreteHitTolerance) const; + const basegfx::B2DVector& rDiscreteHitTolerancePerAxis) const; void check3DHit(const primitive2d::ScenePrimitive2D& rCandidate); public: HitTestProcessor2D( const geometry::ViewInformation2D& rViewInformation, const basegfx::B2DPoint& rLogicHitPosition, - const basegfx::B2DVector& rLogicHitTolerance, + const basegfx::B2DVector& rLogicHitTolerancePerAxis, bool bHitTextOnly); virtual ~HitTestProcessor2D() override; @@ -83,7 +83,7 @@ namespace drawinglayer::processor2d /// data read access const basegfx::B2DPoint& getDiscreteHitPosition() const { return maDiscreteHitPosition; } - const basegfx::B2DVector& getDiscreteHitTolerance() const { return maDiscreteHitTolerance; } + const basegfx::B2DVector& getDiscreteHitTolerance() const { return maDiscreteHitTolerancePerAxis; } bool getCollectHitStack() const { return mbCollectHitStack; } bool getHit() const { return mbHit; } bool getHitTextOnly() const { return mbHitTextOnly; }