gdiplus: Partially implemented GdipTestControl.
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index f7b1d5d..9eafbde 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -602,7 +602,7 @@
@ stdcall GdipStartPathFigure(ptr)
@ stdcall GdipStringFormatGetGenericDefault(ptr)
@ stdcall GdipStringFormatGetGenericTypographic(ptr)
-@ stub GdipTestControl
+@ stdcall GdipTestControl(long ptr)
@ stdcall GdipTransformMatrixPoints(ptr ptr long)
@ stdcall GdipTransformMatrixPointsI(ptr ptr long)
@ stdcall GdipTransformPath(ptr ptr)
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index bcdc64f..61dade9 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -1280,3 +1280,24 @@
return Ok;
}
+
+GpStatus WINGDIPAPI GdipTestControl(GpTestControlEnum control, void *param)
+{
+ TRACE("(%d, %p)\n", control, param);
+
+ switch(control){
+ case TestControlForceBilinear:
+ if(param)
+ FIXME("TestControlForceBilinear not handled\n");
+ break;
+ case TestControlNoICM:
+ if(param)
+ FIXME("TestControlNoICM not handled\n");
+ break;
+ case TestControlGetBuildNumber:
+ *((DWORD*)param) = 3102;
+ break;
+ }
+
+ return Ok;
+}
diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c
index 46e63f2..5d8c535 100644
--- a/dlls/gdiplus/tests/image.c
+++ b/dlls/gdiplus/tests/image.c
@@ -518,6 +518,17 @@
expect(Ok, stat);
}
+static void test_testcontrol(void)
+{
+ GpStatus stat;
+ DWORD param;
+
+ param = 0;
+ stat = GdipTestControl(TestControlGetBuildNumber, ¶m);
+ expect(Ok, stat);
+ ok(param != 0, "Build number expected, got %u\n", param);
+}
+
START_TEST(image)
{
struct GdiplusStartupInput gdiplusStartupInput;
@@ -540,6 +551,7 @@
test_GdipCreateBitmapFromHBITMAP();
test_GdipGetImageFlags();
test_GdipCloneImage();
+ test_testcontrol();
GdiplusShutdown(gdiplusToken);
}
diff --git a/include/gdiplusenums.h b/include/gdiplusenums.h
index bc52bd5..f3cdad8 100644
--- a/include/gdiplusenums.h
+++ b/include/gdiplusenums.h
@@ -329,6 +329,13 @@
CoordinateSpaceDevice
};
+enum GpTestControlEnum
+{
+ TestControlForceBilinear = 0,
+ TestControlNoICM = 1,
+ TestControlGetBuildNumber = 2
+};
+
#ifndef __cplusplus
typedef enum Unit Unit;
@@ -364,6 +371,7 @@
typedef enum CombineMode CombineMode;
typedef enum FlushIntention FlushIntention;
typedef enum CoordinateSpace CoordinateSpace;
+typedef enum GpTestControlEnum GpTestControlEnum;
#endif /* end of c typedefs */
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index cbb59e5..03980ea 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -537,6 +537,8 @@
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL);
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL);
+GpStatus WINGDIPAPI GdipTestControl(GpTestControlEnum,void*);
+
#ifdef __cplusplus
}
#endif