Dmitry Timoshkov : gdiplus: Save total and current frame in the image structure.
Alexandre Julliard
julliard at winehq.org
Thu May 17 13:46:00 CDT 2012
Module: wine
Branch: master
Commit: 007d642e53b4ddc4ea75aba26fc35936b67fbc3f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=007d642e53b4ddc4ea75aba26fc35936b67fbc3f
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Wed May 16 23:33:48 2012 +0900
gdiplus: Save total and current frame in the image structure.
---
dlls/gdiplus/gdiplus_private.h | 1 +
dlls/gdiplus/image.c | 12 +++++++++++-
2 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index df66903..753a162 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -266,6 +266,7 @@ struct GpImage{
ImageType type;
GUID format;
UINT flags;
+ UINT frame_count, current_frame;
UINT palette_flags;
UINT palette_count;
UINT palette_size;
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index ba8b979..c6a72b4 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -1767,6 +1767,8 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT width, INT height, INT stride,
(*bitmap)->image.type = ImageTypeBitmap;
memcpy(&(*bitmap)->image.format, &ImageFormatMemoryBMP, sizeof(GUID));
(*bitmap)->image.flags = ImageFlagsNone;
+ (*bitmap)->image.frame_count = 1;
+ (*bitmap)->image.current_frame = 0;
(*bitmap)->image.palette_flags = 0;
(*bitmap)->image.palette_count = 0;
(*bitmap)->image.palette_size = 0;
@@ -2591,7 +2593,7 @@ static GpStatus decode_image_wic(IStream* stream, REFCLSID clsid, GpImage **imag
WICPixelFormatGUID wic_format;
PixelFormat gdip_format=0;
int i;
- UINT width, height;
+ UINT width, height, frame_count;
BitmapData lockeddata;
WICRect wrc;
HRESULT initresult;
@@ -2604,7 +2606,11 @@ static GpStatus decode_image_wic(IStream* stream, REFCLSID clsid, GpImage **imag
hr = IWICBitmapDecoder_Initialize(decoder, (IStream*)stream, WICDecodeMetadataCacheOnLoad);
if (SUCCEEDED(hr))
+ {
+ IWICBitmapDecoder_GetFrameCount(decoder, &frame_count);
+ /* FIXME: set current frame */
hr = IWICBitmapDecoder_GetFrame(decoder, 0, &frame);
+ }
if (SUCCEEDED(hr)) /* got frame */
{
@@ -2696,6 +2702,8 @@ end:
{
/* Native GDI+ used to be smarter, but since Win7 it just sets these flags. */
bitmap->image.flags |= ImageFlagsReadOnly|ImageFlagsHasRealPixelSize|ImageFlagsHasRealDPI|ImageFlagsColorSpaceRGB;
+ bitmap->image.frame_count = frame_count;
+ bitmap->image.current_frame = 0;
}
return status;
@@ -2765,6 +2773,8 @@ static GpStatus decode_image_olepicture_metafile(IStream* stream, REFCLSID clsid
(*image)->type = ImageTypeMetafile;
(*image)->picture = pic;
(*image)->flags = ImageFlagsNone;
+ (*image)->frame_count = 1;
+ (*image)->current_frame = 0;
(*image)->palette_flags = 0;
(*image)->palette_count = 0;
(*image)->palette_size = 0;
More information about the wine-cvs
mailing list