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:
@@ -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));
|
||||
}
|
||||
|
Reference in New Issue
Block a user