Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: tests/PictureTest.cpp

Issue 316063005: Fix error revealed by Android unit test (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkBitmapDevice.h" 8 #include "SkBitmapDevice.h"
9 #include "SkBlurImageFilter.h" 9 #include "SkBlurImageFilter.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 968 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 SkPictureRecorder recorder2; 979 SkPictureRecorder recorder2;
980 980
981 SkCanvas* canvas = recorder2.beginRecording(10, 10); 981 SkCanvas* canvas = recorder2.beginRecording(10, 10);
982 982
983 recorder->partialReplay(canvas); 983 recorder->partialReplay(canvas);
984 984
985 return recorder2.endRecording(); 985 return recorder2.endRecording();
986 } 986 }
987 }; 987 };
988 988
989 static void create_imbalance(SkCanvas* canvas) {
990 SkRect clipRect = SkRect::MakeWH(2, 2);
991 SkRect drawRect = SkRect::MakeWH(10, 10);
992 canvas->save();
993 canvas->clipRect(clipRect, SkRegion::kReplace_Op);
994 canvas->translate(1.0f, 1.0f);
995 SkPaint p;
996 p.setColor(SK_ColorGREEN);
997 canvas->drawRect(drawRect, p);
998 // no restore
999 }
1000
1001 static void check_balance(skiatest::Reporter* reporter, SkPicture* picture) {
scroggo 2014/06/10 13:31:25 Some comments here would be nice. e.g. // Test th
robertphillips 2014/06/10 17:26:28 Done.
1002 SkBitmap bm;
1003 bm.allocN32Pixels(4, 3);
1004 SkCanvas canvas(bm);
1005
1006 int beforeSaveCount = canvas.getSaveCount();
1007
1008 SkMatrix beforeMatrix = canvas.getTotalMatrix();
1009
1010 canvas.drawPicture(picture);
1011
1012 REPORTER_ASSERT(reporter, beforeSaveCount == canvas.getSaveCount());
1013 REPORTER_ASSERT(reporter, beforeMatrix == canvas.getTotalMatrix());
1014
1015 SkRect afterClip;
1016
1017 canvas.getClipBounds(&afterClip);
1018
1019 REPORTER_ASSERT(reporter, afterClip.width() == 4);
1020 REPORTER_ASSERT(reporter, afterClip.height() == 4);
scroggo 2014/06/10 13:31:25 How did the height end up 4?
robertphillips 2014/06/10 17:27:24 Switch to storing a beforeClip so things are clear
1021 }
1022
989 // Test out SkPictureRecorder::partialReplay 1023 // Test out SkPictureRecorder::partialReplay
990 DEF_TEST(PictureRecorder_replay, reporter) { 1024 DEF_TEST(PictureRecorder_replay, reporter) {
991 // check save/saveLayer state 1025 // check save/saveLayer state
992 { 1026 {
993 SkPictureRecorder recorder; 1027 SkPictureRecorder recorder;
994 1028
995 SkCanvas* canvas = recorder.beginRecording(10, 10); 1029 SkCanvas* canvas = recorder.beginRecording(10, 10);
996 1030
997 canvas->saveLayer(NULL, NULL); 1031 canvas->saveLayer(NULL, NULL);
998 1032
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1033 canvas->drawBitmapRectToRect(bm, NULL, r); 1067 canvas->drawBitmapRectToRect(bm, NULL, r);
1034 1068
1035 SkAutoTUnref<SkPicture> final(recorder.endRecording()); 1069 SkAutoTUnref<SkPicture> final(recorder.endRecording());
1036 REPORTER_ASSERT(reporter, final->willPlayBackBitmaps()); 1070 REPORTER_ASSERT(reporter, final->willPlayBackBitmaps());
1037 1071
1038 REPORTER_ASSERT(reporter, copy->uniqueID() != final->uniqueID()); 1072 REPORTER_ASSERT(reporter, copy->uniqueID() != final->uniqueID());
1039 1073
1040 // The snapshot shouldn't pick up any operations added after it was made 1074 // The snapshot shouldn't pick up any operations added after it was made
1041 REPORTER_ASSERT(reporter, !copy->willPlayBackBitmaps()); 1075 REPORTER_ASSERT(reporter, !copy->willPlayBackBitmaps());
1042 } 1076 }
1077
1078 // Recreate the Android partialReplay test case
1079 {
1080 SkPictureRecorder recorder;
1081
1082 SkCanvas* canvas = recorder.beginRecording(4, 3, NULL, 0);
1083 create_imbalance(canvas);
1084
1085 int expectedSaveCount = canvas->getSaveCount();
1086
1087 SkAutoTUnref<SkPicture> copy(SkPictureRecorderReplayTester::Copy(&record er));
1088 check_balance(reporter, copy);
1089
1090 REPORTER_ASSERT(reporter, expectedSaveCount = canvas->getSaveCount());
1091
1092 SkAutoTUnref<SkPicture> final(recorder.endRecording());
scroggo 2014/06/10 13:31:25 What does this test?
robertphillips 2014/06/10 17:26:28 Done - added comment.
1093 }
1043 } 1094 }
1044 1095
1045 static void test_unbalanced_save_restores(skiatest::Reporter* reporter) { 1096 static void test_unbalanced_save_restores(skiatest::Reporter* reporter) {
1046 SkCanvas testCanvas(100, 100); 1097 SkCanvas testCanvas(100, 100);
1047 set_canvas_to_save_count_4(&testCanvas); 1098 set_canvas_to_save_count_4(&testCanvas);
1048 1099
1049 REPORTER_ASSERT(reporter, 4 == testCanvas.getSaveCount()); 1100 REPORTER_ASSERT(reporter, 4 == testCanvas.getSaveCount());
1050 1101
1051 SkPaint paint; 1102 SkPaint paint;
1052 SkRect rect = SkRect::MakeLTRB(-10000000, -10000000, 10000000, 10000000); 1103 SkRect rect = SkRect::MakeLTRB(-10000000, -10000000, 10000000, 10000000);
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after
1578 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); 1629 SkAutoTUnref<SkPicture> picture(recorder.endRecording());
1579 } 1630 }
1580 1631
1581 DEF_TEST(Canvas_EmptyBitmap, r) { 1632 DEF_TEST(Canvas_EmptyBitmap, r) {
1582 SkBitmap dst; 1633 SkBitmap dst;
1583 dst.allocN32Pixels(10, 10); 1634 dst.allocN32Pixels(10, 10);
1584 SkCanvas canvas(dst); 1635 SkCanvas canvas(dst);
1585 1636
1586 test_draw_bitmaps(&canvas); 1637 test_draw_bitmaps(&canvas);
1587 } 1638 }
OLDNEW
« src/core/SkPictureRecorder.cpp ('K') | « src/core/SkPictureRecorder.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698