Module: wine Branch: master Commit: e807eb9ad6027194114f0f65f87c720a690dd7ae URL: http://source.winehq.org/git/wine.git/?a=commit;h=e807eb9ad6027194114f0f65f8...
Author: Evan Stade estade@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);