gdiplus: GdipAddPathArcI, GdipAddPathBezier implementation

Nikolay Sivov bunglehead at gmail.com
Wed Apr 9 05:37:38 CDT 2008


Is it something wrong  with this patch?

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);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.winehq.org/pipermail/wine-devel/attachments/20080409/0d615f75/attachment.htm 


More information about the wine-devel mailing list