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