gdiplus: Implement GdipGetImageThumbnail.

This commit is contained in:
Vincent Povirk 2010-05-08 13:29:53 -05:00 committed by Alexandre Julliard
parent 635fe30eac
commit 7dfc674437
2 changed files with 44 additions and 7 deletions

View File

@ -3515,9 +3515,46 @@ GpStatus WINGDIPAPI GdipGetImageThumbnail(GpImage *image, UINT width, UINT heigh
GpImage **ret_image, GetThumbnailImageAbort cb, GpImage **ret_image, GetThumbnailImageAbort cb,
VOID * cb_data) VOID * cb_data)
{ {
FIXME("(%p %u %u %p %p %p) stub\n", GpStatus stat;
GpGraphics *graphics;
UINT srcwidth, srcheight;
TRACE("(%p %u %u %p %p %p)\n",
image, width, height, ret_image, cb, cb_data); image, width, height, ret_image, cb, cb_data);
return NotImplemented;
if (!image || !ret_image)
return InvalidParameter;
if (!width) width = 120;
if (!height) height = 120;
GdipGetImageWidth(image, &srcwidth);
GdipGetImageHeight(image, &srcheight);
stat = GdipCreateBitmapFromScan0(width, height, 0, PixelFormat32bppARGB,
NULL, (GpBitmap**)ret_image);
if (stat == Ok)
{
stat = GdipGetImageGraphicsContext(*ret_image, &graphics);
if (stat == Ok)
{
stat = GdipDrawImageRectRectI(graphics, image,
0, 0, width, height, 0, 0, srcwidth, srcheight, UnitPixel,
NULL, NULL, NULL);
GdipDeleteGraphics(graphics);
}
if (stat != Ok)
{
GdipDisposeImage(*ret_image);
*ret_image = NULL;
}
}
return stat;
} }
/***************************************************************************** /*****************************************************************************

View File

@ -1219,16 +1219,16 @@ static void test_getthumbnail(void)
UINT width, height; UINT width, height;
stat = GdipGetImageThumbnail(NULL, 0, 0, &bitmap2, NULL, NULL); stat = GdipGetImageThumbnail(NULL, 0, 0, &bitmap2, NULL, NULL);
todo_wine expect(InvalidParameter, stat); expect(InvalidParameter, stat);
stat = GdipCreateBitmapFromScan0(128, 128, 0, PixelFormat32bppRGB, NULL, (GpBitmap**)&bitmap1); stat = GdipCreateBitmapFromScan0(128, 128, 0, PixelFormat32bppRGB, NULL, (GpBitmap**)&bitmap1);
expect(Ok, stat); expect(Ok, stat);
stat = GdipGetImageThumbnail(bitmap1, 0, 0, NULL, NULL, NULL); stat = GdipGetImageThumbnail(bitmap1, 0, 0, NULL, NULL, NULL);
todo_wine expect(InvalidParameter, stat); expect(InvalidParameter, stat);
stat = GdipGetImageThumbnail(bitmap1, 0, 0, &bitmap2, NULL, NULL); stat = GdipGetImageThumbnail(bitmap1, 0, 0, &bitmap2, NULL, NULL);
todo_wine expect(Ok, stat); expect(Ok, stat);
if (stat == Ok) if (stat == Ok)
{ {
@ -1250,7 +1250,7 @@ static void test_getthumbnail(void)
expect(Ok, stat); expect(Ok, stat);
stat = GdipGetImageThumbnail(bitmap1, 32, 32, &bitmap2, NULL, NULL); stat = GdipGetImageThumbnail(bitmap1, 32, 32, &bitmap2, NULL, NULL);
todo_wine expect(Ok, stat); expect(Ok, stat);
if (stat == Ok) if (stat == Ok)
{ {
@ -1266,7 +1266,7 @@ static void test_getthumbnail(void)
} }
stat = GdipGetImageThumbnail(bitmap1, 0, 0, &bitmap2, NULL, NULL); stat = GdipGetImageThumbnail(bitmap1, 0, 0, &bitmap2, NULL, NULL);
todo_wine expect(Ok, stat); expect(Ok, stat);
if (stat == Ok) if (stat == Ok)
{ {