[4/6] gdiplus: added GdipDrawImageI
Evan Stade
estade at gmail.com
Mon Aug 6 20:55:50 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 f7e6c6c..d27e389 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 3615157..c74ae29 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -965,6 +965,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 10ab021..6f20d7e 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -57,6 +57,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