[3/10] gdiplus: added compositing quality

Evan Stade estade at gmail.com
Fri Jul 13 19:51:25 CDT 2007


Hi,

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

-- 
Evan Stade
-------------- next part --------------
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 336fea1..4d2feba 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -235,7 +235,7 @@
 @ stub GdipGetClipBounds
 @ stub GdipGetClipBoundsI
 @ stub GdipGetCompositingMode
-@ stub GdipGetCompositingQuality
+@ stdcall GdipGetCompositingQuality(ptr ptr)
 @ stub GdipGetCustomLineCapBaseCap
 @ stub GdipGetCustomLineCapBaseInset
 @ stub GdipGetCustomLineCapStrokeCaps
@@ -493,7 +493,7 @@
 @ stub GdipSetClipRectI
 @ stub GdipSetClipRegion
 @ stub GdipSetCompositingMode
-@ stub GdipSetCompositingQuality
+@ stdcall GdipSetCompositingQuality(ptr long)
 @ stub GdipSetCustomLineCapBaseCap
 @ stub GdipSetCustomLineCapBaseInset
 @ stub GdipSetCustomLineCapStrokeCaps
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index 57a8579..dc0fd68 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -55,6 +55,7 @@ struct GpGraphics{
     HDC hdc;
     HWND hwnd;
     SmoothingMode smoothing;
+    CompositingQuality compqual;
 };
 
 struct GpBrush{
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index f1f5f6c..b7c94b9 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -543,6 +543,7 @@ GpStatus WINGDIPAPI GdipCreateFromHDC(HD
     (*graphics)->hdc = hdc;
     (*graphics)->hwnd = NULL;
     (*graphics)->smoothing = SmoothingModeDefault;
+    (*graphics)->compqual = CompositingQualityDefault;
 
     return Ok;
 }
@@ -798,6 +799,18 @@ GpStatus WINGDIPAPI GdipFillPie(GpGraphi
         width, height, startAngle, sweepAngle);
 }
 
+/* FIXME: Compositing quality is not used anywhere except the getter/setter. */
+GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics *graphics,
+    CompositingQuality *quality)
+{
+    if(!graphics || !quality)
+        return InvalidParameter;
+
+    *quality = graphics->compqual;
+
+    return Ok;
+}
+
 /* FIXME: Smoothing mode is not used anywhere except the getter/setter. */
 GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics *graphics, SmoothingMode *mode)
 {
@@ -809,6 +822,17 @@ GpStatus WINGDIPAPI GdipGetSmoothingMode
     return Ok;
 }
 
+GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics *graphics,
+    CompositingQuality quality)
+{
+    if(!graphics)
+        return InvalidParameter;
+
+    graphics->compqual = quality;
+
+    return Ok;
+}
+
 GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mode)
 {
     if(!graphics)
diff --git a/include/gdiplusenums.h b/include/gdiplusenums.h
index f7e261d..e8ad9fd 100644
--- a/include/gdiplusenums.h
+++ b/include/gdiplusenums.h
@@ -99,6 +99,16 @@ enum SmoothingMode
     SmoothingModeAntiAlias
 };
 
+enum CompositingQuality
+{
+    CompositingQualityInvalid          = QualityModeInvalid,
+    CompositingQualityDefault          = QualityModeDefault,
+    CompositingQualityHighSpeed        = QualityModeLow,
+    CompositingQualityHighQuality      = QualityModeHigh,
+    CompositingQualityGammaCorrected,
+    CompositingQualityAssumeLinear
+};
+
 #ifndef __cplusplus
 
 typedef enum Unit Unit;
@@ -109,6 +119,7 @@ typedef enum PathPointType PathPointType
 typedef enum LineJoin LineJoin;
 typedef enum QualityMode QualityMode;
 typedef enum SmoothingMode SmoothingMode;
+typedef enum CompositingQuality CompositingQuality;
 
 #endif /* end of c typedefs */
 
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index cb04c4e..246a04e 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -45,7 +45,9 @@ GpStatus WINGDIPAPI GdipDrawPath(GpGraph
 GpStatus WINGDIPAPI GdipDrawPie(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
 GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics*,GpPen*,INT,INT,INT,INT);
 GpStatus WINGDIPAPI GdipFillPie(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
 GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
+GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality);
 GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode);
 
 GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**);
-- 
1.4.1


More information about the wine-patches mailing list