Module: wine Branch: master Commit: 69d74ece533d1c62276a00e5601ff04920249088 URL: http://source.winehq.org/git/wine.git/?a=commit;h=69d74ece533d1c62276a00e560...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Mon May 6 12:08:38 2013 +0900
gdiplus: Implement GdipEnumerateMetafileDestRect and GdipEnumerateMetafileDestRectI.
---
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*);