diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index 336fea1c51c..4d2feba8e6a 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 57a8579f668..dc0fd68cde4 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 f1f5f6c622b..b7c94b944fd 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -543,6 +543,7 @@ GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics) (*graphics)->hdc = hdc; (*graphics)->hwnd = NULL; (*graphics)->smoothing = SmoothingModeDefault; + (*graphics)->compqual = CompositingQualityDefault; return Ok; } @@ -798,6 +799,18 @@ GpStatus WINGDIPAPI GdipFillPie(GpGraphics *graphics, GpBrush *brush, REAL x, 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(GpGraphics *graphics, SmoothingMode *mo 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 f7e261d052a..e8ad9fd4353 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 cb04c4e0aef..246a04e5750 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -45,7 +45,9 @@ GpStatus WINGDIPAPI GdipDrawPath(GpGraphics*,GpPen*,GpPath*); 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**);