Vincent Povirk : gdiplus: Set flags and dpi when images are loaded.

Alexandre Julliard julliard at winehq.org
Thu Sep 2 12:01:24 CDT 2010


Module: wine
Branch: master
Commit: 77a5b635aa011bace81bb18fd103f0abd7860342
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=77a5b635aa011bace81bb18fd103f0abd7860342

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Fri Jul  2 17:39:17 2010 -0400

gdiplus: Set flags and dpi when images are loaded.

---

 dlls/gdiplus/image.c |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index bcee1aa..4ed226d 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -2606,6 +2606,18 @@ static GpStatus decode_image_wic(IStream* stream, REFCLSID clsid, GpImage **imag
                     *image = NULL;
                     GdipDisposeImage((GpImage*)bitmap);
                 }
+
+                if (SUCCEEDED(hr) && status == Ok)
+                {
+                    double dpix, dpiy;
+                    hr = IWICBitmapSource_GetResolution(source, &dpix, &dpiy);
+                    if (SUCCEEDED(hr))
+                    {
+                        bitmap->image.xres = dpix;
+                        bitmap->image.yres = dpiy;
+                    }
+                    hr = S_OK;
+                }
             }
 
             IWICBitmapSource_Release(source);
@@ -2621,6 +2633,12 @@ end:
 
     if (FAILED(hr) && status == Ok) status = hresult_to_status(hr);
 
+    if (status == Ok)
+    {
+        /* Native GDI+ used to be smarter, but since Win7 it just sets these flags. */
+        bitmap->image.flags |= ImageFlagsReadOnly|ImageFlagsHasRealPixelSize|ImageFlagsHasRealDPI|ImageFlagsColorSpaceRGB;
+    }
+
     return status;
 }
 




More information about the wine-cvs mailing list