gdiplus: Do not call IPicture_Render directly from GdipDrawImageI.
This commit is contained in:
parent
69ba1415e3
commit
e72defc8f7
|
@ -1734,39 +1734,34 @@ GpStatus WINGDIPAPI GdipDrawEllipseI(GpGraphics *graphics, GpPen *pen, INT x,
|
|||
|
||||
GpStatus WINGDIPAPI GdipDrawImage(GpGraphics *graphics, GpImage *image, REAL x, REAL y)
|
||||
{
|
||||
UINT width, height;
|
||||
GpPointF points[3];
|
||||
|
||||
TRACE("(%p, %p, %.2f, %.2f)\n", graphics, image, x, y);
|
||||
|
||||
/* 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);
|
||||
|
||||
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)));
|
||||
/* FIXME: we should use the graphics and image dpi, somehow */
|
||||
|
||||
if(image->type != ImageTypeMetafile){
|
||||
y += height;
|
||||
height *= -1;
|
||||
}
|
||||
points[0].X = points[2].X = x;
|
||||
points[0].Y = points[1].Y = y;
|
||||
points[1].X = x + width;
|
||||
points[2].Y = y + height;
|
||||
|
||||
IPicture_Render(image->picture, graphics->hdc, x, y, width, height,
|
||||
0, 0, srcw, srch, NULL);
|
||||
return GdipDrawImagePointsRect(graphics, image, points, 3, 0, 0, width, height,
|
||||
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,
|
||||
|
|
Loading…
Reference in New Issue