[1/2] gdiplus: Implement GdipEnumerateMetafileDestRect and GdipEnumerateMetafileDestRectI.

Dmitry Timoshkov dmitry at baikal.ru
Sun May 5 22:08:38 CDT 2013


---
 dlls/gdiplus/gdiplus.spec |  4 ++--
 dlls/gdiplus/metafile.c   | 33 +++++++++++++++++++++++++++++++++
 include/gdiplusflat.h     |  4 ++++
 3 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 920d78e..2fa1771 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -194,8 +194,8 @@
 194 stub GdipEnumerateMetafileDestPointI
 195 stub GdipEnumerateMetafileDestPoints
 196 stub GdipEnumerateMetafileDestPointsI
-197 stub GdipEnumerateMetafileDestRect
-198 stub GdipEnumerateMetafileDestRectI
+197 stdcall GdipEnumerateMetafileDestRect(ptr ptr ptr ptr ptr ptr)
+198 stdcall GdipEnumerateMetafileDestRectI(ptr ptr ptr ptr ptr ptr)
 199 stub GdipEnumerateMetafileSrcRectDestPoint
 200 stub GdipEnumerateMetafileSrcRectDestPointI
 201 stdcall GdipEnumerateMetafileSrcRectDestPoints(ptr ptr ptr long ptr long ptr ptr ptr)
diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c
index f03557b..893fe6b 100644
--- a/dlls/gdiplus/metafile.c
+++ b/dlls/gdiplus/metafile.c
@@ -551,6 +551,39 @@ GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestPoints(GpGraphics *graphics,
     return stat;
 }
 
+GpStatus WINGDIPAPI GdipEnumerateMetafileDestRect(GpGraphics *graphics,
+    GDIPCONST GpMetafile *metafile, GDIPCONST GpRectF *dest,
+    EnumerateMetafileProc callback, VOID *cb_data, GDIPCONST GpImageAttributes *attrs)
+{
+    GpPointF points[3];
+
+    if (!graphics || !metafile || !dest) return InvalidParameter;
+
+    points[0].X = points[2].X = dest->X;
+    points[0].Y = points[1].Y = dest->Y;
+    points[1].X = dest->X + dest->Width;
+    points[2].Y = dest->Y + dest->Height;
+
+    return GdipEnumerateMetafileSrcRectDestPoints(graphics, metafile, points, 3,
+        &metafile->bounds, metafile->unit, callback, cb_data, attrs);
+}
+
+GpStatus WINGDIPAPI GdipEnumerateMetafileDestRectI(GpGraphics *graphics,
+    GDIPCONST GpMetafile *metafile, GDIPCONST GpRect *dest,
+    EnumerateMetafileProc callback, VOID *cb_data, GDIPCONST GpImageAttributes *attrs)
+{
+    GpRectF destf;
+
+    if (!graphics || !metafile || !dest) return InvalidParameter;
+
+    destf.X = dest->X;
+    destf.Y = dest->Y;
+    destf.Width = dest->Width;
+    destf.Height = dest->Height;
+
+    return GdipEnumerateMetafileDestRect(graphics, metafile, &destf, callback, cb_data, attrs);
+}
+
 static int CALLBACK get_metafile_type_proc(HDC hDC, HANDLETABLE *lpHTable, const ENHMETARECORD *lpEMFR,
     int nObj, LPARAM lpData)
 {
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index f4ecec6..8e720f1 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -206,6 +206,10 @@ GpStatus WINGDIPAPI GdipDrawRectanglesI(GpGraphics*,GpPen*,GDIPCONST GpRect*,INT
 GpStatus WINGDIPAPI GdipDrawString(GpGraphics*,GDIPCONST WCHAR*,INT,
     GDIPCONST GpFont*,GDIPCONST RectF*, GDIPCONST GpStringFormat*,
     GDIPCONST GpBrush*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileDestRect(GpGraphics*,GDIPCONST GpMetafile*,
+    GDIPCONST GpRectF*,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
+GpStatus WINGDIPAPI GdipEnumerateMetafileDestRectI(GpGraphics*,GDIPCONST GpMetafile*,
+    GDIPCONST GpRect*,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
 GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestPoints(GpGraphics*,
     GDIPCONST GpMetafile*,GDIPCONST GpPointF*,INT,GDIPCONST GpRectF*,Unit,
     EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
-- 
1.8.2.2




More information about the wine-patches mailing list