gdiplus: Factor out the gdi32 code of GdipFillRegion.
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index e85a8ba..a17cbef 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -3282,30 +3282,16 @@
     return ret;
 }
 
-/*****************************************************************************
- * GdipFillRegion [GDIPLUS.@]
- */
-GpStatus WINGDIPAPI GdipFillRegion(GpGraphics* graphics, GpBrush* brush,
-        GpRegion* region)
+static GpStatus GDI32_GdipFillRegion(GpGraphics* graphics, GpBrush* brush,
+    GpRegion* region)
 {
     INT save_state;
     GpStatus status;
     HRGN hrgn;
     RECT rc;
 
-    TRACE("(%p, %p, %p)\n", graphics, brush, region);
-
-    if (!(graphics && brush && region))
-        return InvalidParameter;
-
-    if(graphics->busy)
-        return ObjectBusy;
-
     if(!graphics->hdc)
-    {
-        FIXME("graphics object has no HDC\n");
-        return Ok;
-    }
+        return NotImplemented;
 
     status = GdipGetRegionHRgn(region, graphics, &hrgn);
     if(status != Ok)
@@ -3332,6 +3318,33 @@
     return Ok;
 }
 
+/*****************************************************************************
+ * GdipFillRegion [GDIPLUS.@]
+ */
+GpStatus WINGDIPAPI GdipFillRegion(GpGraphics* graphics, GpBrush* brush,
+        GpRegion* region)
+{
+    GpStatus stat;
+
+    TRACE("(%p, %p, %p)\n", graphics, brush, region);
+
+    if (!(graphics && brush && region))
+        return InvalidParameter;
+
+    if(graphics->busy)
+        return ObjectBusy;
+
+    stat = GDI32_GdipFillRegion(graphics, brush, region);
+
+    if (stat == NotImplemented)
+    {
+        FIXME("partially implemented\n");
+        stat = Ok;
+    }
+
+    return stat;
+}
+
 GpStatus WINGDIPAPI GdipFlush(GpGraphics *graphics, GpFlushIntention intention)
 {
     TRACE("(%p,%u)\n", graphics, intention);