gdiplus: GdipAddPathArcI, GdipAddPathBezier implementation

Nikolay Sivov bunglehead at gmail.com
Mon Apr 7 14:03:06 CDT 2008


Changelog:
    - GdipAddPathArcI, GdipAddPathBezier implemented using existing calls

Index: dlls/gdiplus/gdiplus.spec
===================================================================
RCS file: /home/wine/wine/dlls/gdiplus/gdiplus.spec,v
retrieving revision 1.170
diff -u -r1.170 gdiplus.spec
--- dlls/gdiplus/gdiplus.spec    24 Mar 2008 12:57:16 -0000    1.170
+++ dlls/gdiplus/gdiplus.spec    7 Apr 2008 18:57:29 -0000
@@ -1,6 +1,6 @@
 @ stdcall GdipAddPathArc(ptr long long long long long long)
-@ stub GdipAddPathArcI
-@ stub GdipAddPathBezier
+@ stdcall GdipAddPathArcI(ptr long long long long long long)
+@ stdcall GdipAddPathBezier(ptr long long long long long long long long)
 @ stdcall GdipAddPathBezierI(ptr long long long long long long long long)
 @ stdcall GdipAddPathBeziers(ptr ptr long)
 @ stub GdipAddPathBeziersI
Index: dlls/gdiplus/graphicspath.c
===================================================================
RCS file: /home/wine/wine/dlls/gdiplus/graphicspath.c,v
retrieving revision 1.33
diff -u -r1.33 graphicspath.c
--- dlls/gdiplus/graphicspath.c    4 Apr 2008 11:24:06 -0000    1.33
+++ dlls/gdiplus/graphicspath.c    7 Apr 2008 18:56:45 -0000
@@ -97,6 +97,13 @@
     return Ok;
 }
 
+GpStatus WINGDIPAPI GdipAddPathArcI(GpPath *path, INT x1, INT y1, INT x2,
+    INT y2, REAL startAngle, REAL sweepAngle)
+{
+    TRACE("%p %d %d %d %d %f %f\n",path,x1,y1,x2,y2,startAngle,sweepAngle);
+    return GdipAddPathArc(path, (REAL)x1, (REAL)y1, (REAL)x2, {REAL)y2, 
startAngle, sweepAngle);
+}
+
 GpStatus WINGDIPAPI GdipAddPathBezierI(GpPath *path, INT x1, INT y1, 
INT x2,
     INT y2, INT x3, INT y3, INT x4, INT y4)
 {
@@ -158,6 +165,23 @@
     return Ok;
 }
 
+GpStatus WINGDIPAPI GdipAddPathBezier(GpPath *path, REAL x1, REAL y1, 
REAL x2, REAL y2, REAL x3, REAL y3, REAL x4, REAL y4)
+{
+    GpPointF points[3];
+
+    points[0].X = x1;
+    points[0].Y = y1;
+    points[1].X = x2;
+    points[1].Y = y2;
+    points[2].X = x3;
+    points[2].Y = y3;
+    points[3].X = x4;
+    points[3].Y = y4;
+
+    TRACE("%p %f %f %f %f %f %f\n",path,x1,y1,x2,y2,x3,y3,x4,y4);
+    return GdipAddPathBeziers(path, points, 4);
+}
+
 GpStatus WINGDIPAPI GdipAddPathEllipse(GpPath *path, REAL x, REAL y, 
REAL width,
     REAL height)
 {

Index: include/gdiplusflat.h
===================================================================
RCS file: /home/wine/wine/include/gdiplusflat.h,v
retrieving revision 1.155
diff -u -r1.155 gdiplusflat.h
--- include/gdiplusflat.h    24 Mar 2008 12:57:16 -0000    1.155
+++ include/gdiplusflat.h    7 Apr 2008 18:55:25 -0000
@@ -182,6 +182,8 @@
 GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture *,GDIPCONST 
GpMatrix*);
 
 GpStatus WINGDIPAPI GdipAddPathArc(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathArcI(GpPath*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI 
GdipAddPathBezier(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL);
 GpStatus WINGDIPAPI 
GdipAddPathBezierI(GpPath*,INT,INT,INT,INT,INT,INT,INT,INT);
 GpStatus WINGDIPAPI GdipAddPathBeziers(GpPath*,GDIPCONST GpPointF*,INT);
 GpStatus WINGDIPAPI GdipAddPathEllipse(GpPath*,REAL,REAL,REAL,REAL);




More information about the wine-patches mailing list