From 6e3702ee44cb1c38a4b4d0bc296b86be11169194 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Fri, 2 Jul 2010 17:39:17 -0400 Subject: [PATCH] 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; } -- 1.7.0.4