Alexandre Julliard : gdi32: Avoid some rounding errors in AngleArc.
Alexandre Julliard
julliard at winehq.org
Fri Apr 9 11:49:58 CDT 2010
Module: wine
Branch: master
Commit: bd5ccea53f088fca4a8716c876587abd3ee9e8f7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=bd5ccea53f088fca4a8716c876587abd3ee9e8f7
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri Apr 9 18:16:08 2010 +0200
gdi32: Avoid some rounding errors in AngleArc.
---
dlls/gdi32/painting.c | 8 ++++----
dlls/gdi32/tests/path.c | 8 ++++----
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/dlls/gdi32/painting.c b/dlls/gdi32/painting.c
index fa498e0..1bcdc23 100644
--- a/dlls/gdi32/painting.c
+++ b/dlls/gdi32/painting.c
@@ -854,8 +854,8 @@ BOOL WINAPI AngleArc(HDC hdc, INT x, INT y, DWORD dwRadius, FLOAT eStartAngle, F
if(!dc) return FALSE;
/* Calculate the end point */
- x2 = x + cos((eStartAngle+eSweepAngle)*M_PI/180) * dwRadius;
- y2 = y - sin((eStartAngle+eSweepAngle)*M_PI/180) * dwRadius;
+ x2 = GDI_ROUND( x + cos((eStartAngle+eSweepAngle)*M_PI/180) * dwRadius );
+ y2 = GDI_ROUND( y - sin((eStartAngle+eSweepAngle)*M_PI/180) * dwRadius );
if(!PATH_IsPathOpen(dc->path) && dc->funcs->pAngleArc)
{
@@ -863,8 +863,8 @@ BOOL WINAPI AngleArc(HDC hdc, INT x, INT y, DWORD dwRadius, FLOAT eStartAngle, F
result = dc->funcs->pAngleArc( dc->physDev, x, y, dwRadius, eStartAngle, eSweepAngle );
}
else { /* do it using ArcTo */
- x1 = x + cos(eStartAngle*M_PI/180) * dwRadius;
- y1 = y - sin(eStartAngle*M_PI/180) * dwRadius;
+ x1 = GDI_ROUND( x + cos(eStartAngle*M_PI/180) * dwRadius );
+ y1 = GDI_ROUND( y - sin(eStartAngle*M_PI/180) * dwRadius );
arcdir = SetArcDirection( hdc, eSweepAngle >= 0 ? AD_COUNTERCLOCKWISE : AD_CLOCKWISE);
result = ArcTo( hdc, x-dwRadius, y-dwRadius, x+dwRadius, y+dwRadius,
diff --git a/dlls/gdi32/tests/path.c b/dlls/gdi32/tests/path.c
index 4a8ea6d..66cd039 100644
--- a/dlls/gdi32/tests/path.c
+++ b/dlls/gdi32/tests/path.c
@@ -260,9 +260,9 @@ static const path_test_t anglearc_path[] = {
{245, 200, PT_BEZIERTO, 0, 0}, /* 5 */
{200, 245, PT_BEZIERTO, 0, 0}, /* 6 */
{200, 300, PT_BEZIERTO, 0, 0}, /* 7 */
- {200, 300, PT_BEZIERTO, 0, 2}, /* 8 */
- {200, 300, PT_BEZIERTO, 0, 2}, /* 9 */
- {200, 300, PT_BEZIERTO, 0, 2}, /* 10 */
+ {200, 300, PT_BEZIERTO, 0, 0}, /* 8 */
+ {200, 300, PT_BEZIERTO, 0, 0}, /* 9 */
+ {200, 300, PT_BEZIERTO, 0, 0}, /* 10 */
{231, 260, PT_LINETO, 0, 0}, /* 11 */
{245, 235, PT_BEZIERTO, 0, 0}, /* 12 */
{271, 220, PT_BEZIERTO, 0, 0}, /* 13 */
@@ -289,7 +289,7 @@ static void test_anglearc(void)
CloseFigure(hdc);
EndPath(hdc);
- ok_path(hdc, "anglearc_path", anglearc_path, sizeof(anglearc_path)/sizeof(path_test_t), 1);
+ ok_path(hdc, "anglearc_path", anglearc_path, sizeof(anglearc_path)/sizeof(path_test_t), 0);
done:
ReleaseDC(0, hdc);
}
More information about the wine-cvs
mailing list