[2/2] gdiplus: Implement GdipImageGetFrameCount and GdipImageSelectActiveFrame.
Dmitry Timoshkov
dmitry at baikal.ru
Wed May 16 04:29:25 CDT 2012
---
dlls/gdiplus/image.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index c6a72b4..a5fabb6 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -2456,23 +2456,22 @@ static struct image_format_dimension image_format_dimensions[] =
{NULL}
};
-/* FIXME: Need to handle multi-framed images */
GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage *image,
GDIPCONST GUID* dimensionID, UINT* count)
{
- static int calls;
-
TRACE("(%p,%s,%p)\n", image, debugstr_guid(dimensionID), count);
if(!image || !count)
return InvalidParameter;
- if(!(calls++))
- FIXME("returning frame count of 1\n");
-
- *count = 1;
+ if (IsEqualGUID(dimensionID, &image->format) ||
+ IsEqualGUID(dimensionID, &FrameDimensionPage))
+ {
+ *count = image->frame_count;
+ return Ok;
+ }
- return Ok;
+ return InvalidParameter;
}
GpStatus WINGDIPAPI GdipImageGetFrameDimensionsCount(GpImage *image,
@@ -2521,17 +2520,18 @@ GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage* image,
GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage *image,
GDIPCONST GUID* dimensionID, UINT frameidx)
{
- static int calls;
-
TRACE("(%p, %s, %u)\n", image, debugstr_guid(dimensionID), frameidx);
if(!image || !dimensionID)
return InvalidParameter;
- if(!(calls++))
- FIXME("not implemented\n");
+ if (frameidx < image->frame_count)
+ {
+ image->current_frame = frameidx;
+ return Ok;
+ }
- return Ok;
+ return InvalidParameter;
}
GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR* filename,
--
1.7.10.1
More information about the wine-patches
mailing list