Evan Stade : gdiplus: Added interpolation mode.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jul 16 08:23:41 CDT 2007


Module: wine
Branch: master
Commit: a87ce7ab9265f4b90d34f48dae1474e72330fbc2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a87ce7ab9265f4b90d34f48dae1474e72330fbc2

Author: Evan Stade <estade at 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**);




More information about the wine-cvs mailing list