From 53e17d2993f51b9fa8079ad5df6a1ff93d1955e7 Mon Sep 17 00:00:00 2001 From: Evan Stade Date: Fri, 13 Jul 2007 17:51:13 -0700 Subject: [PATCH] gdiplus: Added smoothing modes. --- dlls/gdiplus/gdiplus.spec | 4 ++-- dlls/gdiplus/gdiplus_private.h | 1 + dlls/gdiplus/graphics.c | 22 ++++++++++++++++++++++ include/gdiplusenums.h | 20 ++++++++++++++++++++ include/gdiplusflat.h | 2 ++ 5 files changed, 47 insertions(+), 2 deletions(-) diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index 9d6457e5d04..336fea1c51c 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -368,7 +368,7 @@ @ stub GdipGetRegionScansCount @ stub GdipGetRegionScansI @ stub GdipGetRenderingOrigin -@ stub GdipGetSmoothingMode +@ stdcall GdipGetSmoothingMode(ptr ptr) @ stub GdipGetSolidFillColor @ stub GdipGetStringFormatAlign @ stub GdipGetStringFormatDigitSubstitution @@ -562,7 +562,7 @@ @ stub GdipSetPixelOffsetMode @ stub GdipSetPropertyItem @ stub GdipSetRenderingOrigin -@ stub GdipSetSmoothingMode +@ stdcall GdipSetSmoothingMode(ptr long) @ stub GdipSetSolidFillColor @ stub GdipSetStringFormatAlign @ stub GdipSetStringFormatDigitSubstitution diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h index 1a2d67c01f7..57a8579f668 100644 --- a/dlls/gdiplus/gdiplus_private.h +++ b/dlls/gdiplus/gdiplus_private.h @@ -54,6 +54,7 @@ struct GpPen{ struct GpGraphics{ HDC hdc; HWND hwnd; + SmoothingMode smoothing; }; struct GpBrush{ diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index eb3799539e6..f1f5f6c622b 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -542,6 +542,7 @@ GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics) (*graphics)->hdc = hdc; (*graphics)->hwnd = NULL; + (*graphics)->smoothing = SmoothingModeDefault; return Ok; } @@ -796,3 +797,24 @@ GpStatus WINGDIPAPI GdipFillPie(GpGraphics *graphics, GpBrush *brush, REAL x, return draw_pie(graphics, brush->gdibrush, GetStockObject(NULL_PEN), x, y, width, height, startAngle, sweepAngle); } + +/* FIXME: Smoothing mode is not used anywhere except the getter/setter. */ +GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics *graphics, SmoothingMode *mode) +{ + if(!graphics || !mode) + return InvalidParameter; + + *mode = graphics->smoothing; + + return Ok; +} + +GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mode) +{ + if(!graphics) + return InvalidParameter; + + graphics->smoothing = mode; + + return Ok; +} diff --git a/include/gdiplusenums.h b/include/gdiplusenums.h index 629a7414265..f7e261d052a 100644 --- a/include/gdiplusenums.h +++ b/include/gdiplusenums.h @@ -81,6 +81,24 @@ enum LineJoin LineJoinMiterClipped = 3 }; +enum QualityMode +{ + QualityModeInvalid = -1, + QualityModeDefault = 0, + QualityModeLow = 1, + QualityModeHigh = 2 +}; + +enum SmoothingMode +{ + SmoothingModeInvalid = QualityModeInvalid, + SmoothingModeDefault = QualityModeDefault, + SmoothingModeHighSpeed = QualityModeLow, + SmoothingModeHighQuality = QualityModeHigh, + SmoothingModeNone, + SmoothingModeAntiAlias +}; + #ifndef __cplusplus typedef enum Unit Unit; @@ -89,6 +107,8 @@ typedef enum FillMode FillMode; typedef enum LineCap LineCap; typedef enum PathPointType PathPointType; typedef enum LineJoin LineJoin; +typedef enum QualityMode QualityMode; +typedef enum SmoothingMode SmoothingMode; #endif /* end of c typedefs */ diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index 42c33deaf28..cb04c4e0aef 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -45,6 +45,8 @@ 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 GdipGetSmoothingMode(GpGraphics*,SmoothingMode*); +GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode); GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**); GpStatus WINGDIPAPI GdipGetBrushType(GpBrush*,GpBrushType*);