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