Vincent Povirk : gdiplus: Implement GdipSetImageAttributesColorMatrix.
Alexandre Julliard
julliard at winehq.org
Mon Dec 21 09:39:47 CST 2009
Module: wine
Branch: master
Commit: 0c9991c583a0694502121eefb2c91289a6719dc9
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0c9991c583a0694502121eefb2c91289a6719dc9
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Fri Dec 18 17:42:18 2009 -0600
gdiplus: Implement GdipSetImageAttributesColorMatrix.
---
dlls/gdiplus/gdiplus_private.h | 8 ++++++++
dlls/gdiplus/imageattributes.c | 27 ++++++++++++++++++++++-----
dlls/gdiplus/tests/image.c | 18 +++++++++---------
3 files changed, 39 insertions(+), 14 deletions(-)
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index 0ceeb6e..9a357c8 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -249,9 +249,17 @@ struct color_key{
ARGB high;
};
+struct color_matrix{
+ BOOL enabled;
+ ColorMatrixFlags flags;
+ ColorMatrix colormatrix;
+ ColorMatrix graymatrix;
+};
+
struct GpImageAttributes{
WrapMode wrap;
struct color_key colorkeys[ColorAdjustTypeCount];
+ struct color_matrix colormatrices[ColorAdjustTypeCount];
};
struct GpFont{
diff --git a/dlls/gdiplus/imageattributes.c b/dlls/gdiplus/imageattributes.c
index a52c297..6bfd23e 100644
--- a/dlls/gdiplus/imageattributes.c
+++ b/dlls/gdiplus/imageattributes.c
@@ -89,15 +89,32 @@ GpStatus WINGDIPAPI GdipSetImageAttributesColorMatrix(GpImageAttributes *imageat
ColorAdjustType type, BOOL enableFlag, GDIPCONST ColorMatrix* colorMatrix,
GDIPCONST ColorMatrix* grayMatrix, ColorMatrixFlags flags)
{
- static int calls;
+ TRACE("(%p,%u,%i,%p,%p,%u)\n", imageattr, type, enableFlag, colorMatrix,
+ grayMatrix, flags);
- if(!imageattr || !colorMatrix || !grayMatrix)
+ if(!imageattr || type >= ColorAdjustTypeCount || flags > ColorMatrixFlagsAltGray)
return InvalidParameter;
- if(!(calls++))
- FIXME("not implemented\n");
+ if (enableFlag)
+ {
+ if (!colorMatrix)
+ return InvalidParameter;
- return NotImplemented;
+ if (flags == ColorMatrixFlagsAltGray)
+ {
+ if (!grayMatrix)
+ return InvalidParameter;
+
+ imageattr->colormatrices[type].graymatrix = *grayMatrix;
+ }
+
+ imageattr->colormatrices[type].colormatrix = *colorMatrix;
+ imageattr->colormatrices[type].flags = flags;
+ }
+
+ imageattr->colormatrices[type].enabled = enableFlag;
+
+ return Ok;
}
GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes *imageAttr,
diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c
index 14a4b1b..e090de9 100644
--- a/dlls/gdiplus/tests/image.c
+++ b/dlls/gdiplus/tests/image.c
@@ -1125,7 +1125,7 @@ static void test_colormatrix(void)
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeDefault,
TRUE, &colormatrix, NULL, ColorMatrixFlagsDefault);
- todo_wine expect(Ok, stat);
+ expect(Ok, stat);
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeDefault,
TRUE, NULL, NULL, ColorMatrixFlagsDefault);
@@ -1133,11 +1133,11 @@ static void test_colormatrix(void)
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeDefault,
TRUE, &colormatrix, &graymatrix, ColorMatrixFlagsDefault);
- todo_wine expect(Ok, stat);
+ expect(Ok, stat);
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeDefault,
TRUE, &colormatrix, NULL, ColorMatrixFlagsSkipGrays);
- todo_wine expect(Ok, stat);
+ expect(Ok, stat);
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeDefault,
TRUE, &colormatrix, NULL, ColorMatrixFlagsAltGray);
@@ -1145,29 +1145,29 @@ static void test_colormatrix(void)
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeDefault,
TRUE, &colormatrix, &graymatrix, ColorMatrixFlagsAltGray);
- todo_wine expect(Ok, stat);
+ expect(Ok, stat);
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeDefault,
TRUE, &colormatrix, &graymatrix, 3);
- todo_wine expect(InvalidParameter, stat);
+ expect(InvalidParameter, stat);
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeCount,
TRUE, &colormatrix, &graymatrix, ColorMatrixFlagsDefault);
- todo_wine expect(InvalidParameter, stat);
+ expect(InvalidParameter, stat);
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeAny,
TRUE, &colormatrix, &graymatrix, ColorMatrixFlagsDefault);
- todo_wine expect(InvalidParameter, stat);
+ expect(InvalidParameter, stat);
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeDefault,
FALSE, NULL, NULL, ColorMatrixFlagsDefault);
- todo_wine expect(Ok, stat);
+ expect(Ok, stat);
/* Drawing a bitmap transforms the colors */
colormatrix = double_red;
stat = GdipSetImageAttributesColorMatrix(imageattr, ColorAdjustTypeDefault,
TRUE, &colormatrix, NULL, ColorMatrixFlagsDefault);
- todo_wine expect(Ok, stat);
+ expect(Ok, stat);
stat = GdipCreateBitmapFromScan0(1, 1, 0, PixelFormat32bppRGB, NULL, &bitmap1);
expect(Ok, stat);
More information about the wine-cvs
mailing list