[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