[4/10] gdiplus: added interpolation mode
Evan Stade
estade at gmail.com
Fri Jul 13 19:51:29 CDT 2007
Hi,
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(-)
--
Evan Stade
-------------- next part --------------
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(HD
(*graphics)->hwnd = NULL;
(*graphics)->smoothing = SmoothingModeDefault;
(*graphics)->compqual = CompositingQualityDefault;
+ (*graphics)->interpolation = InterpolationModeDefault;
return Ok;
}
@@ -811,6 +812,18 @@ GpStatus WINGDIPAPI GdipGetCompositingQu
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 GdipSetCompositingQu
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(GpGraphi
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**);
--
1.4.1
More information about the wine-patches
mailing list