Commit e72defc8 authored by Vincent Povirk's avatar Vincent Povirk Committed by Alexandre Julliard

gdiplus: Do not call IPicture_Render directly from GdipDrawImageI.

parent 69ba1415
...@@ -1734,18 +1734,10 @@ GpStatus WINGDIPAPI GdipDrawEllipseI(GpGraphics *graphics, GpPen *pen, INT x, ...@@ -1734,18 +1734,10 @@ GpStatus WINGDIPAPI GdipDrawEllipseI(GpGraphics *graphics, GpPen *pen, INT x,
GpStatus WINGDIPAPI GdipDrawImage(GpGraphics *graphics, GpImage *image, REAL x, REAL y) GpStatus WINGDIPAPI GdipDrawImage(GpGraphics *graphics, GpImage *image, REAL x, REAL y)
{ {
TRACE("(%p, %p, %.2f, %.2f)\n", graphics, image, x, y); UINT width, height;
GpPointF points[3];
/* IPicture::Render uses LONG coords */
return GdipDrawImageI(graphics,image,roundr(x),roundr(y));
}
GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics *graphics, GpImage *image, INT x,
INT y)
{
UINT width, height, srcw, srch;
TRACE("(%p, %p, %d, %d)\n", graphics, image, x, y); TRACE("(%p, %p, %.2f, %.2f)\n", graphics, image, x, y);
if(!graphics || !image) if(!graphics || !image)
return InvalidParameter; return InvalidParameter;
...@@ -1753,20 +1745,23 @@ GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics *graphics, GpImage *image, INT x, ...@@ -1753,20 +1745,23 @@ GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics *graphics, GpImage *image, INT x,
GdipGetImageWidth(image, &width); GdipGetImageWidth(image, &width);
GdipGetImageHeight(image, &height); GdipGetImageHeight(image, &height);
srcw = width * (((REAL) INCH_HIMETRIC) / /* FIXME: we should use the graphics and image dpi, somehow */
((REAL) GetDeviceCaps(graphics->hdc, LOGPIXELSX)));
srch = height * (((REAL) INCH_HIMETRIC) /
((REAL) GetDeviceCaps(graphics->hdc, LOGPIXELSY)));
if(image->type != ImageTypeMetafile){ points[0].X = points[2].X = x;
y += height; points[0].Y = points[1].Y = y;
height *= -1; points[1].X = x + width;
} points[2].Y = y + height;
IPicture_Render(image->picture, graphics->hdc, x, y, width, height, return GdipDrawImagePointsRect(graphics, image, points, 3, 0, 0, width, height,
0, 0, srcw, srch, NULL); UnitPixel, NULL, NULL, NULL);
}
return Ok; GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics *graphics, GpImage *image, INT x,
INT y)
{
TRACE("(%p, %p, %d, %d)\n", graphics, image, x, y);
return GdipDrawImage(graphics, image, (REAL)x, (REAL)y);
} }
GpStatus WINGDIPAPI GdipDrawImagePointRect(GpGraphics *graphics, GpImage *image, GpStatus WINGDIPAPI GdipDrawImagePointRect(GpGraphics *graphics, GpImage *image,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment