d2d1.h: Work around GCC not being compatible with MSVC in aggregate retuns handling.

Based on patch by Tom Ritter.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
diff --git a/mingw-w64-headers/include/d2d1.h b/mingw-w64-headers/include/d2d1.h
index bc45785..ea8a032 100644
--- a/mingw-w64-headers/include/d2d1.h
+++ b/mingw-w64-headers/include/d2d1.h
@@ -664,9 +664,39 @@
 #ifndef D2D_USE_C_DEFINITIONS
 
 interface ID2D1Bitmap : public ID2D1Image {
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_SIZE_F, GetSize)(void) const PURE;
+#else
+    virtual D2D1_SIZE_F* STDMETHODCALLTYPE GetSize(D2D1_SIZE_F*) const = 0;
+    D2D1_SIZE_F STDMETHODCALLTYPE GetSize() const {
+        D2D1_SIZE_F __ret;
+        GetSize(&__ret);
+        return __ret;
+    }
+#endif
+
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_SIZE_U, GetPixelSize)(void) const PURE;
+#else
+    virtual D2D1_SIZE_U* STDMETHODCALLTYPE GetPixelSize(D2D1_SIZE_U*) const = 0;
+    D2D1_SIZE_U STDMETHODCALLTYPE GetPixelSize() const {
+        D2D1_SIZE_U __ret;
+        GetPixelSize(&__ret);
+        return __ret;
+    }
+#endif
+
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_PIXEL_FORMAT, GetPixelFormat)(void) const PURE;
+#else
+    virtual D2D1_PIXEL_FORMAT* STDMETHODCALLTYPE GetPixelFormat(D2D1_PIXEL_FORMAT*) const = 0;
+    D2D1_PIXEL_FORMAT STDMETHODCALLTYPE GetPixelFormat() const {
+        D2D1_PIXEL_FORMAT __ret;
+        GetPixelFormat(&__ret);
+        return __ret;
+    }
+#endif
+
     STDMETHOD_(void, GetDpi)(FLOAT *dpiX, FLOAT *dpiY) const PURE;
     STDMETHOD(CopyFromBitmap)(const D2D1_POINT_2U *destPoint, ID2D1Bitmap *bitmap, const D2D1_RECT_U *srcRect) PURE;
     STDMETHOD(CopyFromRenderTarget)(const D2D1_POINT_2U *destPoint, ID2D1RenderTarget *renderTarget, const D2D1_RECT_U *srcRect) PURE;
@@ -809,11 +839,43 @@
     STDMETHOD_(void, Clear)(const D2D1_COLOR_F *clearColor = NULL) PURE;
     STDMETHOD_(void, BeginDraw)(void) PURE;
     STDMETHOD(EndDraw)(D2D1_TAG *tag1 = NULL, D2D1_TAG *tag2 = NULL) PURE;
+
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_PIXEL_FORMAT, GetPixelFormat)(void) const PURE;
+#else
+    virtual D2D1_PIXEL_FORMAT* STDMETHODCALLTYPE GetPixelFormat(D2D1_PIXEL_FORMAT*) const = 0;
+    D2D1_PIXEL_FORMAT STDMETHODCALLTYPE GetPixelFormat() const {
+        D2D1_PIXEL_FORMAT __ret;
+        GetPixelFormat(&__ret);
+        return __ret;
+    }
+#endif
+
     STDMETHOD_(void, SetDpi)(FLOAT dpiX, FLOAT dpiY) PURE;
     STDMETHOD_(void, GetDpi)(FLOAT *dpiX, FLOAT *dpiY) const PURE;
+
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_SIZE_F, GetSize)(void) const PURE;
+#else
+    virtual D2D1_SIZE_F* STDMETHODCALLTYPE GetSize(D2D1_SIZE_F*) const = 0;
+    D2D1_SIZE_F STDMETHODCALLTYPE GetSize() const {
+        D2D1_SIZE_F __ret;
+        GetSize(&__ret);
+        return __ret;
+    }
+#endif
+
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_SIZE_U, GetPixelSize)(void) const PURE;
+#else
+    virtual D2D1_SIZE_U* STDMETHODCALLTYPE GetPixelSize(D2D1_SIZE_U*) const = 0;
+    D2D1_SIZE_U STDMETHODCALLTYPE GetPixelSize() const {
+        D2D1_SIZE_U __ret;
+        GetPixelSize(&__ret);
+        return __ret;
+    }
+#endif
+
     STDMETHOD_(UINT32, GetMaximumBitmapSize)(void) const PURE;
     STDMETHOD_(BOOL, IsSupported)(const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties) const PURE;
 
@@ -1962,7 +2024,16 @@
 #ifndef D2D_USE_C_DEFINITIONS
 
 interface ID2D1Layer : public ID2D1Resource {
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_SIZE_F, GetSize)(void) const PURE;
+#else
+    virtual D2D1_SIZE_F* STDMETHODCALLTYPE GetSize(D2D1_SIZE_F*) const = 0;
+    D2D1_SIZE_F STDMETHODCALLTYPE GetSize() const {
+        D2D1_SIZE_F __ret;
+        GetSize(&__ret);
+        return __ret;
+    }
+#endif
 };
 
 #else
@@ -1992,8 +2063,29 @@
 interface ID2D1LinearGradientBrush : public ID2D1Brush {
     STDMETHOD_(void, SetStartPoint)(D2D1_POINT_2F startPoint) PURE;
     STDMETHOD_(void, SetEndPoint)(D2D1_POINT_2F endPoint) PURE;
+
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_POINT_2F, GetStartPoint)(void) const PURE;
+#else
+    virtual D2D1_POINT_2F* STDMETHODCALLTYPE GetStartPoint(D2D1_POINT_2F*) const = 0;
+    D2D1_POINT_2F STDMETHODCALLTYPE GetStartPoint() const {
+        D2D1_POINT_2F __ret;
+        GetStartPoint(&__ret);
+        return __ret;
+    }
+#endif
+
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_POINT_2F, GetEndPoint)(void) const PURE;
+#else
+    virtual D2D1_POINT_2F* STDMETHODCALLTYPE GetEndPoint(D2D1_POINT_2F*) const = 0;
+    D2D1_POINT_2F STDMETHODCALLTYPE GetEndPoint() const {
+        D2D1_POINT_2F __ret;
+        GetEndPoint(&__ret);
+        return __ret;
+    }
+#endif
+
     STDMETHOD_(void, GetGradientStopCollection)(ID2D1GradientStopCollection **gradientStopCollection) const PURE;
 };
 
@@ -2116,8 +2208,31 @@
     STDMETHOD_(void, SetGradientOriginOffset)(D2D1_POINT_2F gradientOriginOffset) PURE;
     STDMETHOD_(void, SetRadiusX)(FLOAT radiusX) PURE;
     STDMETHOD_(void, SetRadiusY)(FLOAT radiusY) PURE;
+
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_POINT_2F, GetCenter)(void) const PURE;
+#else
+    virtual D2D1_POINT_2F* STDMETHODCALLTYPE GetCenter(D2D1_POINT_2F *__ret) const = 0;
+    D2D1_POINT_2F STDMETHODCALLTYPE GetCenter() const
+    {
+        D2D1_POINT_2F __ret;
+        GetCenter(&__ret);
+        return __ret;
+    }
+#endif
+
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_POINT_2F, GetGradientOriginOffset)(void) const PURE;
+#else
+    virtual D2D1_POINT_2F* STDMETHODCALLTYPE GetGradientOriginOffset(D2D1_POINT_2F *__ret) const = 0;
+    D2D1_POINT_2F STDMETHODCALLTYPE GetGradientOriginOffset() const
+    {
+        D2D1_POINT_2F __ret;
+        GetGradientOriginOffset(&__ret);
+        return __ret;
+    }
+#endif
+
     STDMETHOD_(FLOAT, GetRadiusX)(void) const PURE;
     STDMETHOD_(FLOAT, GetRadiusY)(void) const PURE;
     STDMETHOD_(void, GetGradientStopCollection)(ID2D1GradientStopCollection **gradientStopCollection) const PURE;
@@ -2251,7 +2366,17 @@
 
 interface ID2D1SolidColorBrush : public ID2D1Brush {
     STDMETHOD_(void, SetColor)(const D2D1_COLOR_F *color) PURE;
+
+#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
     STDMETHOD_(D2D1_COLOR_F, GetColor)(void) const PURE;
+#else
+    virtual D2D1_COLOR_F* STDMETHODCALLTYPE GetColor(D2D1_COLOR_F*) const = 0;
+    D2D1_COLOR_F STDMETHODCALLTYPE GetColor() const {
+        D2D1_COLOR_F __ret;
+        GetColor(&__ret);
+        return __ret;
+    }
+#endif
 
     void SetColor(const D2D1_COLOR_F &color) {
         SetColor(&color);