[5/19] gdiplus: added GdipDrawImageI
Evan Stade
estade at gmail.com
Tue Aug 7 20:42:12 CDT 2007
Hi,
dlls/gdiplus/gdiplus.spec | 2 +-
dlls/gdiplus/graphics.c | 27 +++++++++++++++++++++++++++
include/gdiplusflat.h | 1 +
3 files changed, 29 insertions(+), 1 deletions(-)
--
Evan Stade
-------------- next part --------------
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index c49a395..b188170 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -174,7 +174,7 @@
@ stub GdipDrawEllipseI
@ stub GdipDrawImage
@ stub GdipDrawImageFX
-@ stub GdipDrawImageI
+@ stdcall GdipDrawImageI(ptr ptr long long)
@ stub GdipDrawImagePointRect
@ stub GdipDrawImagePointRectI
@ stub GdipDrawImagePoints
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 57ad025..8d31661 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -989,6 +989,33 @@ GpStatus WINGDIPAPI GdipDrawCurve2(GpGra
return retval;
}
+GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics *graphics, GpImage *image, INT x,
+ INT y)
+{
+ UINT width, height, srcw, srch;
+
+ if(!graphics || !image)
+ return InvalidParameter;
+
+ GdipGetImageWidth(image, &width);
+ GdipGetImageHeight(image, &height);
+
+ srcw = width * (((REAL) INCH_HIMETRIC) /
+ ((REAL) GetDeviceCaps(graphics->hdc, LOGPIXELSX)));
+ srch = height * (((REAL) INCH_HIMETRIC) /
+ ((REAL) GetDeviceCaps(graphics->hdc, LOGPIXELSY)));
+
+ if(image->type != ImageTypeMetafile){
+ y += height;
+ height *= -1;
+ }
+
+ IPicture_Render(image->picture, graphics->hdc, x, y, width, height,
+ 0, 0, srcw, srch, NULL);
+
+ return Ok;
+}
+
/* FIXME: partially implemented */
GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image,
GDIPCONST GpPointF *points, INT count, REAL srcx, REAL srcy, REAL srcwidth,
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index aba71ed..08f0696 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -58,6 +58,7 @@ GpStatus WINGDIPAPI GdipDrawArc(GpGraphi
GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,
REAL,REAL,REAL);
GpStatus WINGDIPAPI GdipDrawCurve2(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT,REAL);
+GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics*,GpImage*,INT,INT);
GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics*,GpImage*,
GDIPCONST GpPointF*,INT,REAL,REAL,REAL,REAL,GpUnit,
GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
--
1.4.1
More information about the wine-patches
mailing list