[12/21] gdiplus: implemented GdipLoadImageFromStreamICM
Evan Stade
estade at gmail.com
Tue Jul 31 21:15:48 CDT 2007
Hi,
changelog:
*implemented GdipLoadImageFromStreamICM
*added its declaration to public headers
*now all internal files that include gdiplus.h must include objbase.h
(for IStream type)
dlls/gdiplus/brush.c | 3 +++
dlls/gdiplus/customlinecap.c | 2 ++
dlls/gdiplus/gdiplus.c | 2 ++
dlls/gdiplus/graphicspath.c | 3 +++
dlls/gdiplus/image.c | 21 ++++++++++++++++-----
dlls/gdiplus/imageattributes.c | 2 ++
dlls/gdiplus/matrix.c | 2 ++
dlls/gdiplus/pathiterator.c | 2 ++
dlls/gdiplus/pen.c | 3 +++
include/gdiplusflat.h | 1 +
10 files changed, 36 insertions(+), 5 deletions(-)
--
Evan Stade
-------------- next part --------------
diff --git a/dlls/gdiplus/brush.c b/dlls/gdiplus/brush.c
index 76456bd..ce01ccb 100644
--- a/dlls/gdiplus/brush.c
+++ b/dlls/gdiplus/brush.c
@@ -18,6 +18,9 @@
#include "windef.h"
#include "wingdi.h"
+
+#include "objbase.h"
+
#include "gdiplus.h"
#include "gdiplus_private.h"
diff --git a/dlls/gdiplus/customlinecap.c b/dlls/gdiplus/customlinecap.c
index eb851c9..417a740 100644
--- a/dlls/gdiplus/customlinecap.c
+++ b/dlls/gdiplus/customlinecap.c
@@ -22,6 +22,8 @@ #include "windef.h"
#include "winbase.h"
#include "wingdi.h"
+#include "objbase.h"
+
#include "gdiplus.h"
#include "gdiplus_private.h"
#include "wine/debug.h"
diff --git a/dlls/gdiplus/gdiplus.c b/dlls/gdiplus/gdiplus.c
index 041d6fe..edbfb1c 100644
--- a/dlls/gdiplus/gdiplus.c
+++ b/dlls/gdiplus/gdiplus.c
@@ -25,6 +25,8 @@ #include "winerror.h"
#include "wine/debug.h"
#include "wingdi.h"
+#include "objbase.h"
+
#include "gdiplus.h"
#include "gdiplus_private.h"
diff --git a/dlls/gdiplus/graphicspath.c b/dlls/gdiplus/graphicspath.c
index 4fe99e0..ea52408 100644
--- a/dlls/gdiplus/graphicspath.c
+++ b/dlls/gdiplus/graphicspath.c
@@ -24,6 +24,9 @@ #include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "wingdi.h"
+
+#include "objbase.h"
+
#include "gdiplus.h"
#include "gdiplus_private.h"
#include "wine/debug.h"
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index ba5a23e..00d0a58 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -20,10 +20,12 @@ #include <stdarg.h>
#include "windef.h"
#include "winbase.h"
+#include "winuser.h"
#include "wingdi.h"
#define COBJMACROS
#include "objbase.h"
+#include "olectl.h"
#include "gdiplus.h"
#include "gdiplus_private.h"
@@ -172,15 +174,24 @@ GpStatus WINGDIPAPI GdipImageGetFrameCou
return NotImplemented;
}
+/* FIXME: no ICM */
GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream* stream, GpImage **image)
{
- static int calls;
-
if(!stream || !image)
return InvalidParameter;
- if(!(calls++))
- FIXME("not implemented\n");
+ *image = GdipAlloc(sizeof(GpImage));
+ if(!*image) return OutOfMemory;
- return NotImplemented;
+ if(OleLoadPicture(stream, 0, FALSE, &IID_IPicture,
+ (LPVOID*) &((*image)->picture)) != S_OK){
+ TRACE("Could not load picture\n");
+ GdipFree(*image);
+ return GenericError;
+ }
+
+ /* FIXME: use IPicture_get_Type to get image type */
+ (*image)->type = ImageTypeUnknown;
+
+ return Ok;
}
diff --git a/dlls/gdiplus/imageattributes.c b/dlls/gdiplus/imageattributes.c
index 7c36780..29b8549 100644
--- a/dlls/gdiplus/imageattributes.c
+++ b/dlls/gdiplus/imageattributes.c
@@ -19,6 +19,8 @@
#include "windef.h"
#include "wingdi.h"
+#include "objbase.h"
+
#include "gdiplus.h"
#include "gdiplus_private.h"
#include "wine/debug.h"
diff --git a/dlls/gdiplus/matrix.c b/dlls/gdiplus/matrix.c
index 1c4738e..e6be418 100644
--- a/dlls/gdiplus/matrix.c
+++ b/dlls/gdiplus/matrix.c
@@ -23,6 +23,8 @@ #include "windef.h"
#include "winbase.h"
#include "wingdi.h"
+#include "objbase.h"
+
#include "gdiplus.h"
#include "gdiplus_private.h"
diff --git a/dlls/gdiplus/pathiterator.c b/dlls/gdiplus/pathiterator.c
index b978c26..d1e4e88 100644
--- a/dlls/gdiplus/pathiterator.c
+++ b/dlls/gdiplus/pathiterator.c
@@ -22,6 +22,8 @@ #include "windef.h"
#include "winbase.h"
#include "wingdi.h"
+#include "objbase.h"
+
#include "gdiplus.h"
#include "gdiplus_private.h"
diff --git a/dlls/gdiplus/pen.c b/dlls/gdiplus/pen.c
index b85f158..f121380 100644
--- a/dlls/gdiplus/pen.c
+++ b/dlls/gdiplus/pen.c
@@ -21,6 +21,9 @@ #include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
+
+#include "objbase.h"
+
#include "gdiplus.h"
#include "gdiplus_private.h"
#include "wine/debug.h"
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index 4906160..348d7c0 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -148,6 +148,7 @@ GpStatus WINGDIPAPI GdipGetImageVertical
GpStatus WINGDIPAPI GdipGetImageWidth(GpImage*,UINT*);
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile*,MetafileHeader*);
GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage*,GDIPCONST GUID*,UINT*);
+GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream*,GpImage**);
GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes**);
GpStatus WINGDIPAPI GdipDisposeImageAttributes(GpImageAttributes*);
--
1.4.1
More information about the wine-patches
mailing list