summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorMuthu Subramanian <sumuthu@suse.com>2013-05-02 17:06:48 +0530
committerJan Holesovsky <kendy@suse.cz>2013-06-05 11:51:25 +0200
commit20785cefb9e7da06d21437a338e589c66a46dab5 (patch)
treea50e4a2b98565276baff664ab48e99d24a738356 /chart2
parent4d19f82c97694db258c18959313f2b4f1842a5b5 (diff)
n#816939: Improved label overlap detection - Part 2
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/view/axes/VCartesianAxis.cxx27
1 files changed, 19 insertions, 8 deletions
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index 261b23ecf4f6..eb7efa8aea7e 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -137,6 +137,19 @@ bool lcl_doesShapeOverlapWithTickmark( const Reference< drawing::XShape >& xShap
return aShapeRect.isInside(aPosition);
}
+void lcl_getRotatedPolygon( B2DPolygon &aPoly, const ::basegfx::B2DRectangle &aRect, const awt::Point &aPos, const double fRotationAngleDegree )
+{
+ ::basegfx::B2DHomMatrix aMatrix;
+
+ aPoly = basegfx::tools::createPolygonFromRect( aRect );
+ aMatrix.translate( -aRect.getWidth()/2, -aRect.getHeight()/2);
+ aMatrix.rotate( fRotationAngleDegree*M_PI/180.0 );
+ aPoly.transform( aMatrix );
+ aMatrix = ::basegfx::B2DHomMatrix();
+ aMatrix.translate( aRect.getWidth()/2+aPos.X, aRect.getHeight()/2+aPos.Y);
+ aPoly.transform( aMatrix );
+}
+
bool doesOverlap( const Reference< drawing::XShape >& xShape1
, const Reference< drawing::XShape >& xShape2
, double fRotationAngleDegree )
@@ -144,15 +157,13 @@ bool doesOverlap( const Reference< drawing::XShape >& xShape1
if( !xShape1.is() || !xShape2.is() )
return false;
- ::basegfx::B2DRectangle aRect1( BaseGFXHelper::makeRectangle( xShape1->getPosition(), ShapeFactory::getSizeAfterRotation( xShape1, 0 ) ));
- ::basegfx::B2DRectangle aRect2( BaseGFXHelper::makeRectangle( xShape2->getPosition(), ShapeFactory::getSizeAfterRotation( xShape2, 0 ) ));
+ ::basegfx::B2DRectangle aRect1( BaseGFXHelper::makeRectangle( awt::Point(0,0), xShape1->getSize()));
+ ::basegfx::B2DRectangle aRect2( BaseGFXHelper::makeRectangle( awt::Point(0,0), xShape2->getSize()));
- B2DPolygon aPoly1 = basegfx::tools::createPolygonFromRect( aRect1 );
- B2DPolygon aPoly2 = basegfx::tools::createPolygonFromRect( aRect2 );
- ::basegfx::B2DHomMatrix aMatrix;
- aMatrix.rotate( fRotationAngleDegree );
- aPoly1.transform( aMatrix );
- aPoly2.transform( aMatrix );
+ B2DPolygon aPoly1;
+ B2DPolygon aPoly2;
+ lcl_getRotatedPolygon( aPoly1, aRect1, xShape1->getPosition(), fRotationAngleDegree );
+ lcl_getRotatedPolygon( aPoly2, aRect2, xShape2->getPosition(), fRotationAngleDegree );
B2DPolyPolygon aPolyPoly1, aPolyPoly2;
aPolyPoly1.append( aPoly1 );