Andrew Eikum : gdiplus/tests: Test cases for GdipBeginContainer2.
Alexandre Julliard
julliard at winehq.org
Tue Jul 7 08:08:21 CDT 2009
Module: wine
Branch: master
Commit: 0ed10bf696dc6cf09034eaa2ca124f6ace52cd2f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0ed10bf696dc6cf09034eaa2ca124f6ace52cd2f
Author: Andrew Eikum <andrew at brightnightgames.com>
Date: Sun Jul 5 15:53:07 2009 -0500
gdiplus/tests: Test cases for GdipBeginContainer2.
---
dlls/gdiplus/tests/graphics.c | 186 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 186 insertions(+), 0 deletions(-)
diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c
index ad7f2d3..23aa717 100644
--- a/dlls/gdiplus/tests/graphics.c
+++ b/dlls/gdiplus/tests/graphics.c
@@ -323,6 +323,191 @@ static void test_GdipDrawArcI(void)
ReleaseDC(0, hdc);
}
+static void test_BeginContainer2(void)
+{
+ GpMatrix *transform;
+ GpRectF clip;
+ REAL defClip[] = {5, 10, 15, 20};
+ REAL elems[6], defTrans[] = {1, 2, 3, 4, 5, 6};
+ GraphicsContainer cont1, cont2, cont3, cont4;
+ CompositingQuality compqual, defCompqual = CompositingQualityHighSpeed;
+ CompositingMode compmode, defCompmode = CompositingModeSourceOver;
+ InterpolationMode interp, defInterp = InterpolationModeHighQualityBicubic;
+ REAL scale, defScale = 17;
+ GpUnit unit, defUnit = UnitPixel;
+ PixelOffsetMode offsetmode, defOffsetmode = PixelOffsetModeHighSpeed;
+ SmoothingMode smoothmode, defSmoothmode = SmoothingModeAntiAlias;
+ UINT contrast, defContrast = 5;
+ TextRenderingHint texthint, defTexthint = TextRenderingHintAntiAlias;
+
+ GpStatus status;
+ GpGraphics *graphics = NULL;
+ HDC hdc = GetDC(0);
+
+ ok(hdc != NULL, "Expected HDC to be initialized\n");
+
+ status = GdipCreateFromHDC(hdc, &graphics);
+ expect(Ok, status);
+ ok(graphics != NULL, "Expected graphics to be initialized\n");
+
+ /* null graphics, null container */
+ status = GdipBeginContainer2(NULL, &cont1);
+ expect(InvalidParameter, status);
+
+ status = GdipBeginContainer2(graphics, NULL);
+ expect(InvalidParameter, status);
+
+ status = GdipEndContainer(NULL, cont1);
+ expect(InvalidParameter, status);
+
+ /* test all quality-related values */
+ GdipSetCompositingMode(graphics, defCompmode);
+ GdipSetCompositingQuality(graphics, defCompqual);
+ GdipSetInterpolationMode(graphics, defInterp);
+ GdipSetPageScale(graphics, defScale);
+ GdipSetPageUnit(graphics, defUnit);
+ GdipSetPixelOffsetMode(graphics, defOffsetmode);
+ GdipSetSmoothingMode(graphics, defSmoothmode);
+ GdipSetTextContrast(graphics, defContrast);
+ GdipSetTextRenderingHint(graphics, defTexthint);
+
+ status = GdipBeginContainer2(graphics, &cont1);
+ expect(Ok, status);
+
+ GdipSetCompositingMode(graphics, CompositingModeSourceCopy);
+ GdipSetCompositingQuality(graphics, CompositingQualityHighQuality);
+ GdipSetInterpolationMode(graphics, InterpolationModeBilinear);
+ GdipSetPageScale(graphics, 10);
+ GdipSetPageUnit(graphics, UnitDocument);
+ GdipSetPixelOffsetMode(graphics, PixelOffsetModeHalf);
+ GdipSetSmoothingMode(graphics, SmoothingModeNone);
+ GdipSetTextContrast(graphics, 7);
+ GdipSetTextRenderingHint(graphics, TextRenderingHintClearTypeGridFit);
+
+ status = GdipEndContainer(graphics, cont1);
+ expect(Ok, status);
+
+ GdipGetCompositingMode(graphics, &compmode);
+ ok(defCompmode == compmode, "Expected Compositing Mode to be restored to %d, got %d\n", defCompmode, compmode);
+
+ GdipGetCompositingQuality(graphics, &compqual);
+ ok(defCompqual == compqual, "Expected Compositing Quality to be restored to %d, got %d\n", defCompqual, compqual);
+
+ GdipGetInterpolationMode(graphics, &interp);
+ ok(defInterp == interp, "Expected Interpolation Mode to be restored to %d, got %d\n", defInterp, interp);
+
+ GdipGetPageScale(graphics, &scale);
+ ok(fabs(defScale - scale) < 0.0001, "Expected Page Scale to be restored to %f, got %f\n", defScale, scale);
+
+ GdipGetPageUnit(graphics, &unit);
+ ok(defUnit == unit, "Expected Page Unit to be restored to %d, got %d\n", defUnit, unit);
+
+ GdipGetPixelOffsetMode(graphics, &offsetmode);
+ ok(defOffsetmode == offsetmode, "Expected Pixel Offset Mode to be restored to %d, got %d\n", defOffsetmode, offsetmode);
+
+ GdipGetSmoothingMode(graphics, &smoothmode);
+ ok(defSmoothmode == smoothmode, "Expected Smoothing Mode to be restored to %d, got %d\n", defSmoothmode, smoothmode);
+
+ GdipGetTextContrast(graphics, &contrast);
+ ok(defContrast == contrast, "Expected Text Contrast to be restored to %d, got %d\n", defContrast, contrast);
+
+ GdipGetTextRenderingHint(graphics, &texthint);
+ ok(defTexthint == texthint, "Expected Text Hint to be restored to %d, got %d\n", defTexthint, texthint);
+
+ /* test world transform */
+ status = GdipBeginContainer2(graphics, &cont1);
+ expect(Ok, status);
+
+ GdipCreateMatrix2(defTrans[0], defTrans[1], defTrans[2], defTrans[3],
+ defTrans[4], defTrans[5], &transform);
+ GdipSetWorldTransform(graphics, transform);
+ GdipDeleteMatrix(transform);
+ transform = NULL;
+
+ status = GdipBeginContainer2(graphics, &cont2);
+ expect(Ok, status);
+
+ GdipCreateMatrix2(10, 20, 30, 40, 50, 60, &transform);
+ GdipSetWorldTransform(graphics, transform);
+ GdipDeleteMatrix(transform);
+ transform = NULL;
+
+ status = GdipEndContainer(graphics, cont2);
+ expect(Ok, status);
+
+ GdipCreateMatrix(&transform);
+ GdipGetWorldTransform(graphics, transform);
+ GdipGetMatrixElements(transform, elems);
+ ok(fabs(defTrans[0] - elems[0]) < 0.0001 &&
+ fabs(defTrans[1] - elems[1]) < 0.0001 &&
+ fabs(defTrans[2] - elems[2]) < 0.0001 &&
+ fabs(defTrans[3] - elems[3]) < 0.0001 &&
+ fabs(defTrans[4] - elems[4]) < 0.0001 &&
+ fabs(defTrans[5] - elems[5]) < 0.0001,
+ "Expected World Transform Matrix to be restored to [%f, %f, %f, %f, %f, %f], got [%f, %f, %f, %f, %f, %f]\n",
+ defTrans[0], defTrans[1], defTrans[2], defTrans[3], defTrans[4], defTrans[5],
+ elems[0], elems[1], elems[2], elems[3], elems[4], elems[5]);
+ GdipDeleteMatrix(transform);
+ transform = NULL;
+
+ status = GdipEndContainer(graphics, cont1);
+ expect(Ok, status);
+
+ /* test clipping */
+ status = GdipBeginContainer2(graphics, &cont1);
+ expect(Ok, status);
+
+ GdipSetClipRect(graphics, defClip[0], defClip[1], defClip[2], defClip[3], CombineModeReplace);
+
+ status = GdipBeginContainer2(graphics, &cont2);
+ expect(Ok, status);
+
+ GdipSetClipRect(graphics, 2, 4, 6, 8, CombineModeReplace);
+
+ status = GdipEndContainer(graphics, cont2);
+
+ GdipGetClipBounds(graphics, &clip);
+ todo_wine ok(fabs(defClip[0] - clip.X) < 0.0001 &&
+ fabs(defClip[1] - clip.Y) < 0.0001 &&
+ fabs(defClip[2] - clip.Width) < 0.0001 &&
+ fabs(defClip[3] - clip.Height) < 0.0001,
+ "Expected Clipping Rectangle to be restored to [%f, %f, %f, %f], got [%f, %f, %f, %f]\n",
+ defClip[0], defClip[1], defClip[2], defClip[3],
+ clip.X, clip.Y, clip.Width, clip.Height);
+
+ status = GdipEndContainer(graphics, cont1);
+
+ /* nesting */
+ status = GdipBeginContainer2(graphics, &cont1);
+ expect(Ok, status);
+
+ status = GdipBeginContainer2(graphics, &cont2);
+ expect(Ok, status);
+
+ status = GdipBeginContainer2(graphics, &cont3);
+ expect(Ok, status);
+
+ status = GdipEndContainer(graphics, cont3);
+ expect(Ok, status);
+
+ status = GdipBeginContainer2(graphics, &cont4);
+ expect(Ok, status);
+
+ status = GdipEndContainer(graphics, cont4);
+ expect(Ok, status);
+
+ /* skip cont2 */
+ status = GdipEndContainer(graphics, cont1);
+ expect(Ok, status);
+
+ /* end an already-ended container */
+ status = GdipEndContainer(graphics, cont1);
+ expect(Ok, status);
+
+ GdipDeleteGraphics(graphics);
+ ReleaseDC(0, hdc);
+}
+
static void test_GdipDrawBezierI(void)
{
GpStatus status;
@@ -1511,6 +1696,7 @@ START_TEST(graphics)
test_GdipDrawLinesI();
test_GdipDrawString();
test_Get_Release_DC();
+ test_BeginContainer2();
test_transformpoints();
test_get_set_clip();
test_isempty();
More information about the wine-cvs
mailing list