[1/3] gdiplus: GdipGetImageFlags (bug 12144)

Nikolay Sivov bunglehead at gmail.com
Thu May 8 17:15:17 CDT 2008


Changelog:
    - simple implementation of GdipGetImageFlags

---
 dlls/gdiplus/gdiplus.spec      |    2 +-
 dlls/gdiplus/gdiplus_private.h |    1 +
 dlls/gdiplus/image.c           |   11 +++++++++++
 include/gdiplusenums.h         |   25 ++++++++++++++++++++++---
 include/gdiplusflat.h          |    1 +
 5 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index ec3897a..905cff5 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -286,7 +286,7 @@
 @ stdcall GdipGetImageDimension(ptr ptr ptr)
 @ stdcall GdipGetImageEncoders(long long ptr)
 @ stdcall GdipGetImageEncodersSize(ptr ptr)
-@ stub GdipGetImageFlags
+@ stdcall GdipGetImageFlags(ptr ptr)
 @ stdcall GdipGetImageGraphicsContext(ptr ptr)
 @ stdcall GdipGetImageHeight(ptr ptr)
 @ stdcall GdipGetImageHorizontalResolution(ptr ptr)
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index 09ef83f..539254b 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -149,6 +149,7 @@ struct GpCustomLineCap{
 struct GpImage{
     IPicture* picture;
     ImageType type;
+    UINT flags;
 };
 
 struct GpMetafile{
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index a89b6ea..3eaecdc 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -789,6 +789,7 @@ GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream* stream, GpImage **image)
     }
 
     (*image)->picture = pic;
+    (*image)->flags   = ImageFlagsNone;
 
     return Ok;
 }
@@ -1108,3 +1109,13 @@ GpStatus WINGDIPAPI GdipSetEffectParameters(CGpEffect *effect,
 
     return NotImplemented;
 }
+
+GpStatus WINGDIPAPI GdipGetImageFlags(GpImage *image, UINT *flags)
+{
+    if(!image || !flags)
+        return InvalidParameter;
+
+    *flags = image->flags;
+
+    return Ok;
+}
diff --git a/include/gdiplusenums.h b/include/gdiplusenums.h
index b0d9884..6bf727a 100644
--- a/include/gdiplusenums.h
+++ b/include/gdiplusenums.h
@@ -170,6 +170,24 @@ enum ImageType
     ImageTypeMetafile
 };
 
+enum ImageFlags
+{
+    ImageFlagsNone              = 0,
+    ImageFlagsScalable          = 0x0001,
+    ImageFlagsHasAlpha          = 0x0002,
+    ImageFlagsHasTranslucent    = 0x0004,
+    ImageFlagsPartiallyScalable = 0x0008,
+    ImageFlagsColorSpaceRGB     = 0x0010,
+    ImageFlagsColorSpaceCMYK    = 0x0020,
+    ImageFlagsColorSpaceGRAY    = 0x0040,
+    ImageFlagsColorSpaceYCBCR   = 0x0080,
+    ImageFlagsColorSpaceYCCK    = 0x0100,
+    ImageFlagsHasRealDPI        = 0x1000,
+    ImageFlagsHasRealPixelSize  = 0x2000,
+    ImageFlagsReadOnly          = 0x00010000,
+    ImageFlagsCaching           = 0x00020000
+};
+
 enum WrapMode
 {
     WrapModeTile,
@@ -259,13 +277,13 @@ enum HotkeyPrefix
 
 enum ImageCodecFlags
 {
-    ImageCodecFlagsEncoder		= 1,
-    ImageCodecFlagsDecoder		= 2,
+    ImageCodecFlagsEncoder		    = 1,
+    ImageCodecFlagsDecoder		    = 2,
     ImageCodecFlagsSupportBitmap	= 4,
     ImageCodecFlagsSupportVector	= 8,
     ImageCodecFlagsSeekableEncode	= 16,
     ImageCodecFlagsBlockingDecode	= 32,
-    ImageCodecFlagsBuiltin		= 65536,
+    ImageCodecFlagsBuiltin		    = 65536,
     ImageCodecFlagsSystem	        = 131072,
     ImageCodecFlagsUser		        = 262144
 };
@@ -297,6 +315,7 @@ typedef enum DashCap DashCap;
 typedef enum DashStyle DashStyle;
 typedef enum MatrixOrder MatrixOrder;
 typedef enum ImageType ImageType;
+typedef enum ImageFlags ImageFlags;
 typedef enum WrapMode WrapMode;
 typedef enum MetafileType MetafileType;
 typedef enum LinearGradientMode LinearGradientMode;
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index ddd4914..8c46888 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -301,6 +301,7 @@ GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage*,GUID*);
 GpStatus WINGDIPAPI GdipGetImageType(GpImage*,ImageType*);
 GpStatus WINGDIPAPI GdipGetImageVerticalResolution(GpImage*,REAL*);
 GpStatus WINGDIPAPI GdipGetImageWidth(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipGetImageFlags(GpImage*,UINT*);
 GpStatus WINGDIPAPI GdipGetMetafileHeaderFromEmf(HENHMETAFILE,MetafileHeader*);
 GpStatus WINGDIPAPI GdipGetMetafileHeaderFromFile(GDIPCONST WCHAR*,MetafileHeader*);
 GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile*,MetafileHeader*);
-- 
1.4.4.4






More information about the wine-patches mailing list