gdiplus: Implement GdipGetImageThumbnail.
This commit is contained in:
parent
635fe30eac
commit
7dfc674437
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue