Fixes Circular arrow distortion, Bug #46272

Distortion occurred when angle mod 90° != 0

All of my past & future contributions to LibreOffice may be
   licensed under the MPL/LGPLv3+ dual license
- Lennard Wasserthal

Change-Id: I4af7e7f1dcbc4d1262592c362532df4957e52399
Signed-off-by: Lennard <Wasserthal@nefkom.net>
Reviewed-on: https://gerrit.libreoffice.org/679
Reviewed-by: Radek Doulík <rodo@novell.com>
Tested-by: Radek Doulík <rodo@novell.com>
This commit is contained in:
Lennard
2012-09-23 20:56:39 +02:00
committed by Radek Doulík
parent 7d56303949
commit d9f21c90bd

View File

@@ -1725,10 +1725,9 @@ void EnhancedCustomShape2d::CreateSubPath( sal_uInt16& rSrcPt, sal_uInt16& rSegm
Point aCenter( aRect.Center() );
Point aStart( GetPoint( seqCoordinates[ (sal_uInt16)( rSrcPt + nXor ) ], sal_True, sal_True ) );
Point aEnd( GetPoint( seqCoordinates[ (sal_uInt16)( rSrcPt + ( nXor ^ 1 ) ) ], sal_True, sal_True ) );
double fRatio = (double)aRect.GetHeight() / (double)aRect.GetWidth();
aStart.X() = (sal_Int32)( ( (double)( aStart.X() - aCenter.X() ) ) * fRatio ) + aCenter.X();
aStart.X() = (sal_Int32)( ( (double)( aStart.X() - aCenter.X() ) ) ) + aCenter.X();
aStart.Y() = (sal_Int32)( ( (double)( aStart.Y() - aCenter.Y() ) ) ) + aCenter.Y();
aEnd.X() = (sal_Int32)( ( (double)( aEnd.X() - aCenter.X() ) ) * fRatio ) + aCenter.X();
aEnd.X() = (sal_Int32)( ( (double)( aEnd.X() - aCenter.X() ) ) ) + aCenter.X();
aEnd.Y() = (sal_Int32)( ( (double)( aEnd.Y() - aCenter.Y() ) ) ) + aCenter.Y();
aNewB2DPolygon.append(CreateArc( aRect, aStart, aEnd, bClockwise));
}