Evan Stade : gdiplus: Added GdipSetCompositingMode/GdipGetCompositingMode.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Aug 14 07:12:58 CDT 2007


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

Author: Evan Stade <estade at gmail.com>
Date:   Mon Aug 13 18:34:27 2007 -0700

gdiplus: Added GdipSetCompositingMode/GdipGetCompositingMode.

---

 dlls/gdiplus/gdiplus.spec      |    4 ++--
 dlls/gdiplus/gdiplus_private.h |    1 +
 dlls/gdiplus/graphics.c        |   24 ++++++++++++++++++++++++
 include/gdiplusenums.h         |    7 +++++++
 include/gdiplusflat.h          |    2 ++
 5 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 1f69314..d6b6ee4 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -247,7 +247,7 @@
 @ stub GdipGetClip
 @ stub GdipGetClipBounds
 @ stub GdipGetClipBoundsI
-@ stub GdipGetCompositingMode
+@ stdcall GdipGetCompositingMode(ptr ptr)
 @ stdcall GdipGetCompositingQuality(ptr ptr)
 @ stub GdipGetCustomLineCapBaseCap
 @ stub GdipGetCustomLineCapBaseInset
@@ -512,7 +512,7 @@
 @ stub GdipSetClipRect
 @ stub GdipSetClipRectI
 @ stub GdipSetClipRegion
-@ stub GdipSetCompositingMode
+@ stdcall GdipSetCompositingMode(ptr long)
 @ stdcall GdipSetCompositingQuality(ptr long)
 @ stub GdipSetCustomLineCapBaseCap
 @ stub GdipSetCustomLineCapBaseInset
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index 485394e..d36b8a2 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -79,6 +79,7 @@ struct GpGraphics{
     CompositingQuality compqual;
     InterpolationMode interpolation;
     PixelOffsetMode pixeloffset;
+    CompositingMode compmode;
     GpUnit unit;    /* page unit */
     REAL scale;     /* page scale */
     GpMatrix * worldtrans; /* world transform */
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index d9cf86f..1d2748a 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -760,6 +760,7 @@ GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics)
     (*graphics)->compqual = CompositingQualityDefault;
     (*graphics)->interpolation = InterpolationModeDefault;
     (*graphics)->pixeloffset = PixelOffsetModeDefault;
+    (*graphics)->compmode = CompositingModeSourceOver;
     (*graphics)->unit = UnitDisplay;
     (*graphics)->scale = 1.0;
 
@@ -1421,6 +1422,18 @@ GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics *graphics, GpBrush *brush,
     return Ok;
 }
 
+/* FIXME: Compositing mode is not used anywhere except the getter/setter. */
+GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics *graphics,
+    CompositingMode *mode)
+{
+    if(!graphics || !mode)
+        return InvalidParameter;
+
+    *mode = graphics->compmode;
+
+    return Ok;
+}
+
 /* FIXME: Compositing quality is not used anywhere except the getter/setter. */
 GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics *graphics,
     CompositingQuality *quality)
@@ -1523,6 +1536,17 @@ GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics *graphics, GraphicsState *state)
     return NotImplemented;
 }
 
+GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics *graphics,
+    CompositingMode mode)
+{
+    if(!graphics)
+        return InvalidParameter;
+
+    graphics->compmode = mode;
+
+    return Ok;
+}
+
 GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics *graphics,
     CompositingQuality quality)
 {
diff --git a/include/gdiplusenums.h b/include/gdiplusenums.h
index 7d71b6d..e503da5 100644
--- a/include/gdiplusenums.h
+++ b/include/gdiplusenums.h
@@ -198,6 +198,12 @@ enum EmfType
     EmfTypeEmfPlusDual = MetafileTypeEmfPlusDual
 };
 
+enum CompositingMode
+{
+    CompositingModeSourceOver,
+    CompositingModeSourceCopy
+};
+
 #ifndef __cplusplus
 
 typedef enum Unit Unit;
@@ -219,6 +225,7 @@ typedef enum WrapMode WrapMode;
 typedef enum MetafileType MetafileType;
 typedef enum LinearGradientMode LinearGradientMode;
 typedef enum EmfType EmfType;
+typedef enum CompositingMode CompositingMode;
 
 #endif /* end of c typedefs */
 
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index 6b45368..1b7f7ec 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -81,6 +81,7 @@ GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT
     GpFillMode);
 GpStatus WINGDIPAPI GdipFillRectangle(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL);
 GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics*,GpBrush*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics*,CompositingMode*);
 GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
 GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics*,InterpolationMode*);
 GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics*,REAL*);
@@ -90,6 +91,7 @@ GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
 GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics*,GpMatrix*);
 GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics*,GraphicsState);
 GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*);
+GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics*,CompositingMode);
 GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality);
 GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode);
 GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics*,REAL);




More information about the wine-cvs mailing list