[GDIPLUS] Sync with Wine Staging 1.9.4. CORE-10912
authorAmine Khaldi <amine.khaldi@reactos.org>
Wed, 2 Mar 2016 10:34:40 +0000 (10:34 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Wed, 2 Mar 2016 10:34:40 +0000 (10:34 +0000)
svn path=/trunk/; revision=70862

reactos/dll/win32/gdiplus/gdiplus_private.h
reactos/dll/win32/gdiplus/graphicspath.c
reactos/dll/win32/gdiplus/pen.c
reactos/media/doc/README.WINE

index 9cde1f8..d52eb5d 100644 (file)
@@ -205,6 +205,7 @@ struct GpPen{
     REAL offset;    /* dash offset */
     GpBrush *brush;
     GpPenAlignment align;
+    GpMatrix transform;
 };
 
 struct GpGraphics{
index d37efe9..9901502 100644 (file)
@@ -2060,7 +2060,7 @@ GpStatus WINGDIPAPI GdipWidenPath(GpPath *path, GpPen *pen, GpMatrix *matrix,
     status = GdipClonePath(path, &flat_path);
 
     if (status == Ok)
-        status = GdipFlattenPath(flat_path, matrix, flatness);
+        status = GdipFlattenPath(flat_path, pen->unit == UnitPixel ? matrix : NULL, flatness);
 
     if (status == Ok && !init_path_list(&points, 314.0, 22.0))
         status = OutOfMemory;
@@ -2133,6 +2133,9 @@ GpStatus WINGDIPAPI GdipWidenPath(GpPath *path, GpPen *pen, GpMatrix *matrix,
 
     GdipDeletePath(flat_path);
 
+    if (status == Ok && pen->unit != UnitPixel)
+        status = GdipTransformPath(path, matrix);
+
     return status;
 }
 
index 0104d95..3f732eb 100644 (file)
@@ -159,6 +159,7 @@ GpStatus WINGDIPAPI GdipCreatePen2(GpBrush *brush, REAL width, GpUnit unit,
     gp_pen->offset = 0.0;
     gp_pen->customstart = NULL;
     gp_pen->customend = NULL;
+    GdipSetMatrixElements(&gp_pen->transform, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0);
 
     if(!((gp_pen->unit == UnitWorld) || (gp_pen->unit == UnitPixel))) {
         FIXME("UnitWorld, UnitPixel only supported units\n");
@@ -406,17 +407,14 @@ GpStatus WINGDIPAPI GdipGetPenWidth(GpPen *pen, REAL *width)
 
 GpStatus WINGDIPAPI GdipResetPenTransform(GpPen *pen)
 {
-    static int calls;
-
     TRACE("(%p)\n", pen);
 
     if(!pen)
         return InvalidParameter;
 
-    if(!(calls++))
-        FIXME("(%p) stub\n", pen);
+    GdipSetMatrixElements(&pen->transform, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0);
 
-    return NotImplemented;
+    return Ok;
 }
 
 GpStatus WINGDIPAPI GdipSetPenTransform(GpPen *pen, GpMatrix *matrix)
@@ -429,24 +427,23 @@ GpStatus WINGDIPAPI GdipSetPenTransform(GpPen *pen, GpMatrix *matrix)
         return InvalidParameter;
 
     if(!(calls++))
-        FIXME("not implemented\n");
+        FIXME("(%p,%p) Semi-stub\n", pen, matrix);
 
-    return NotImplemented;
+    pen->transform = *matrix;
+
+    return Ok;
 }
 
 GpStatus WINGDIPAPI GdipGetPenTransform(GpPen *pen, GpMatrix *matrix)
 {
-    static int calls;
-
     TRACE("(%p,%p)\n", pen, matrix);
 
     if(!pen || !matrix)
         return InvalidParameter;
 
-    if(!(calls++))
-        FIXME("not implemented\n");
+    *matrix = pen->transform;
 
-    return NotImplemented;
+    return Ok;
 }
 
 GpStatus WINGDIPAPI GdipTranslatePenTransform(GpPen *pen, REAL dx, REAL dy, GpMatrixOrder order)
index 89dae7d..7992a50 100644 (file)
@@ -68,7 +68,7 @@ reactos/dll/win32/dciman32            # Synced to WineStaging-1.7.55
 reactos/dll/win32/faultrep            # Synced to WineStaging-1.7.55
 reactos/dll/win32/fltlib              # Synced to WineStaging-1.7.55
 reactos/dll/win32/fusion              # Synced to WineStaging-1.9.4
-reactos/dll/win32/gdiplus             # Synced to WineStaging-1.7.55
+reactos/dll/win32/gdiplus             # Synced to WineStaging-1.9.4
 reactos/dll/win32/hhctrl.ocx          # Synced to WineStaging-1.7.55
 reactos/dll/win32/hlink               # Synced to WineStaging-1.7.55
 reactos/dll/win32/hnetcfg             # Synced to WineStaging-1.7.55