Module: wine Branch: master Commit: 8fbdd670cab2abff8d01d3b3110a58075cfc5bf8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8fbdd670cab2abff8d01d3b311...
Author: Vincent Povirk vincent@codeweavers.com Date: Fri Aug 12 15:47:15 2016 -0500
gdiplus/tests: Test mixing Begin/EndContainer and Save/Restore.
Signed-off-by: Vincent Povirk vincent@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/gdiplus/tests/graphics.c | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+)
diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c index 56be8eb..4a762cc 100644 --- a/dlls/gdiplus/tests/graphics.c +++ b/dlls/gdiplus/tests/graphics.c @@ -326,6 +326,64 @@ static void test_save_restore(void)
log_state(state_a, &state_log);
+ /* A state created by SaveGraphics cannot be restored with EndContainer. */ + GdipCreateFromHDC(hdc, &graphics1); + GdipSetInterpolationMode(graphics1, InterpolationModeBilinear); + stat = GdipSaveGraphics(graphics1, &state_a); + expect(Ok, stat); + GdipSetInterpolationMode(graphics1, InterpolationModeBicubic); + stat = GdipEndContainer(graphics1, state_a); + expect(Ok, stat); + GdipGetInterpolationMode(graphics1, &mode); + todo_wine expect(InterpolationModeBicubic, mode); + stat = GdipRestoreGraphics(graphics1, state_a); + expect(Ok, stat); + GdipGetInterpolationMode(graphics1, &mode); + expect(InterpolationModeBilinear, mode); + GdipDeleteGraphics(graphics1); + + log_state(state_a, &state_log); + + /* A state created by BeginContainer cannot be restored with RestoreGraphics. */ + GdipCreateFromHDC(hdc, &graphics1); + GdipSetInterpolationMode(graphics1, InterpolationModeBilinear); + stat = GdipBeginContainer2(graphics1, &state_a); + expect(Ok, stat); + GdipSetInterpolationMode(graphics1, InterpolationModeBicubic); + stat = GdipRestoreGraphics(graphics1, state_a); + expect(Ok, stat); + GdipGetInterpolationMode(graphics1, &mode); + todo_wine expect(InterpolationModeBicubic, mode); + stat = GdipEndContainer(graphics1, state_a); + expect(Ok, stat); + GdipGetInterpolationMode(graphics1, &mode); + expect(InterpolationModeBilinear, mode); + GdipDeleteGraphics(graphics1); + + log_state(state_a, &state_log); + + /* BeginContainer and SaveGraphics use the same stack. */ + GdipCreateFromHDC(hdc, &graphics1); + GdipSetInterpolationMode(graphics1, InterpolationModeBilinear); + stat = GdipBeginContainer2(graphics1, &state_a); + expect(Ok, stat); + GdipSetInterpolationMode(graphics1, InterpolationModeBicubic); + stat = GdipSaveGraphics(graphics1, &state_b); + expect(Ok, stat); + GdipSetInterpolationMode(graphics1, InterpolationModeNearestNeighbor); + stat = GdipEndContainer(graphics1, state_a); + expect(Ok, stat); + GdipGetInterpolationMode(graphics1, &mode); + expect(InterpolationModeBilinear, mode); + stat = GdipRestoreGraphics(graphics1, state_b); + expect(Ok, stat); + GdipGetInterpolationMode(graphics1, &mode); + expect(InterpolationModeBilinear, mode); + GdipDeleteGraphics(graphics1); + + log_state(state_a, &state_log); + log_state(state_b, &state_log); + /* The same state value should never be returned twice. */ todo_wine check_no_duplicates(state_log);