Module: wine Branch: master Commit: a87ce7ab9265f4b90d34f48dae1474e72330fbc2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a87ce7ab9265f4b90d34f48dae...
Author: Evan Stade estade@gmail.com Date: Fri Jul 13 17:51:29 2007 -0700
gdiplus: Added interpolation mode.
---
dlls/gdiplus/gdiplus.spec | 4 ++-- dlls/gdiplus/gdiplus_private.h | 1 + dlls/gdiplus/graphics.c | 24 ++++++++++++++++++++++++ include/gdiplusenums.h | 14 ++++++++++++++ include/gdiplusflat.h | 2 ++ 5 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index 4d2feba..c4f68d2 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -283,7 +283,7 @@ @ stub GdipGetImageType @ stub GdipGetImageVerticalResolution @ stub GdipGetImageWidth -@ stub GdipGetInterpolationMode +@ stdcall GdipGetInterpolationMode(ptr ptr) @ stub GdipGetLineBlend @ stub GdipGetLineBlendCount @ stub GdipGetLineColors @@ -513,7 +513,7 @@ @ stub GdipSetImageAttributesWrapMode @ stub GdipSetImagePalette @ stub GdipSetInfinite -@ stub GdipSetInterpolationMode +@ stdcall GdipSetInterpolationMode(ptr long) @ stub GdipSetLineBlend @ stub GdipSetLineColors @ stub GdipSetLineGammaCorrection diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h index dc0fd68..3856dee 100644 --- a/dlls/gdiplus/gdiplus_private.h +++ b/dlls/gdiplus/gdiplus_private.h @@ -56,6 +56,7 @@ struct GpGraphics{ HWND hwnd; SmoothingMode smoothing; CompositingQuality compqual; + InterpolationMode interpolation; };
struct GpBrush{ diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index b7c94b9..b202f74 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -544,6 +544,7 @@ GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics) (*graphics)->hwnd = NULL; (*graphics)->smoothing = SmoothingModeDefault; (*graphics)->compqual = CompositingQualityDefault; + (*graphics)->interpolation = InterpolationModeDefault;
return Ok; } @@ -811,6 +812,18 @@ GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics *graphics, return Ok; }
+/* FIXME: Interpolation mode is not used anywhere except the getter/setter. */ +GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics *graphics, + InterpolationMode *mode) +{ + if(!graphics || !mode) + return InvalidParameter; + + *mode = graphics->interpolation; + + return Ok; +} + /* FIXME: Smoothing mode is not used anywhere except the getter/setter. */ GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics *graphics, SmoothingMode *mode) { @@ -833,6 +846,17 @@ GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics *graphics, return Ok; }
+GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics *graphics, + InterpolationMode mode) +{ + if(!graphics) + return InvalidParameter; + + graphics->interpolation = mode; + + return Ok; +} + GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mode) { if(!graphics) diff --git a/include/gdiplusenums.h b/include/gdiplusenums.h index e8ad9fd..699862c 100644 --- a/include/gdiplusenums.h +++ b/include/gdiplusenums.h @@ -109,6 +109,19 @@ enum CompositingQuality CompositingQualityAssumeLinear };
+enum InterpolationMode +{ + InterpolationModeInvalid = QualityModeInvalid, + InterpolationModeDefault = QualityModeDefault, + InterpolationModeLowQuality = QualityModeLow, + InterpolationModeHighQuality = QualityModeHigh, + InterpolationModeBilinear, + InterpolationModeBicubic, + InterpolationModeNearestNeighbor, + InterpolationModeHighQualityBilinear, + InterpolationModeHighQualityBicubic +}; + #ifndef __cplusplus
typedef enum Unit Unit; @@ -120,6 +133,7 @@ typedef enum LineJoin LineJoin; typedef enum QualityMode QualityMode; typedef enum SmoothingMode SmoothingMode; typedef enum CompositingQuality CompositingQuality; +typedef enum InterpolationMode InterpolationMode;
#endif /* end of c typedefs */
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index 246a04e..c7f921d 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -46,8 +46,10 @@ 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 GdipGetInterpolationMode(GpGraphics*,InterpolationMode*); GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*); GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality); +GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode); GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode);
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**);