[PATCH 5/5] d2d1: Implement d2d_d3d_render_target_GetSize().

Henri Verbeet hverbeet at codeweavers.com
Thu Sep 4 01:14:31 CDT 2014


---
 dlls/d2d1/render_target.c |   23 +++++++++++++++++++++--
 include/d2d1.idl          |    2 +-
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/dlls/d2d1/render_target.c b/dlls/d2d1/render_target.c
index 5d5253e..cee327f 100644
--- a/dlls/d2d1/render_target.c
+++ b/dlls/d2d1/render_target.c
@@ -485,14 +485,33 @@ static void STDMETHODCALLTYPE d2d_d3d_render_target_GetDpi(ID2D1RenderTarget *if
     *dpi_y = render_target->dpi_y;
 }
 
+static void d2d_d3d_render_target_get_size(const struct d2d_d3d_render_target *render_target, D2D1_SIZE_F *size)
+{
+    size->width = render_target->pixel_size.width / (render_target->dpi_x / 96.0f);
+    size->height = render_target->pixel_size.height / (render_target->dpi_y / 96.0f);
+}
+#if defined _MSC_VER
 static D2D1_SIZE_F STDMETHODCALLTYPE d2d_d3d_render_target_GetSize(ID2D1RenderTarget *iface)
 {
-    static const D2D1_SIZE_F size = {0.0f, 0.0f};
+    struct d2d_d3d_render_target *render_target = impl_from_ID2D1RenderTarget(iface);
+    D2D1_SIZE_F size;
 
-    FIXME("iface %p stub!\n", iface);
+    TRACE("iface %p.\n", iface);
+
+    d2d_d3d_render_target_get_size(render_target, &size);
 
     return size;
 }
+#else
+static void STDMETHODCALLTYPE d2d_d3d_render_target_GetSize(ID2D1RenderTarget *iface, D2D1_SIZE_F *size)
+{
+    struct d2d_d3d_render_target *render_target = impl_from_ID2D1RenderTarget(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    d2d_d3d_render_target_get_size(render_target, size);
+}
+#endif
 
 static void d2d_d3d_render_target_get_pixel_size(const struct d2d_d3d_render_target *render_target,
         D2D1_SIZE_U *pixel_size)
diff --git a/include/d2d1.idl b/include/d2d1.idl
index 5901a8b..97b25e7 100644
--- a/include/d2d1.idl
+++ b/include/d2d1.idl
@@ -1113,7 +1113,7 @@ interface ID2D1RenderTarget : ID2D1Resource
         [out] float *dpi_x,
         [out] float *dpi_y
     );
-    D2D1_SIZE_F GetSize();
+    [aggregate_return] D2D1_SIZE_F GetSize();
     [aggregate_return] D2D1_SIZE_U GetPixelSize();
     UINT32 GetMaximumBitmapSize();
     BOOL IsSupported(
-- 
1.7.10.4




More information about the wine-patches mailing list