| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 "Test.h" | 8 #include "Test.h" |
| 9 | 9 |
| 10 #include "SkDebugCanvas.h" | 10 #include "SkDebugCanvas.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 SkRecorder rerecorder(SkRecorder::kReadWrite_Mode, &rerecord, W, H); | 38 SkRecorder rerecorder(SkRecorder::kReadWrite_Mode, &rerecord, W, H); |
| 39 // This clip intersects the outer cull, but allows us to quick reject the in
ner one. | 39 // This clip intersects the outer cull, but allows us to quick reject the in
ner one. |
| 40 rerecorder.clipRect(SkRect::MakeLTRB(20, 20, 200, 200)); | 40 rerecorder.clipRect(SkRect::MakeLTRB(20, 20, 200, 200)); |
| 41 | 41 |
| 42 SkRecordDraw(record, &rerecorder); | 42 SkRecordDraw(record, &rerecorder); |
| 43 | 43 |
| 44 // We'll keep the clipRect call from above, and the outer two drawRects, and
the push/pop pair. | 44 // We'll keep the clipRect call from above, and the outer two drawRects, and
the push/pop pair. |
| 45 // If culling weren't working, we'd see 8 commands recorded here. | 45 // If culling weren't working, we'd see 8 commands recorded here. |
| 46 REPORTER_ASSERT(r, 5 == rerecord.count()); | 46 REPORTER_ASSERT(r, 5 == rerecord.count()); |
| 47 } | 47 } |
| 48 | |
| 49 DEF_TEST(RecordDraw_Clipping, r) { | |
| 50 SkRecord record; | |
| 51 SkRecorder recorder(SkRecorder::kWriteOnly_Mode, &record, W, H); | |
| 52 | |
| 53 // 8 draw commands. | |
| 54 recorder.save(); | |
| 55 recorder.clipRect(SkRect::MakeLTRB(0, 0, 100, 100)); | |
| 56 recorder.drawRect(SkRect::MakeLTRB(20, 20, 40, 40), SkPaint()); | |
| 57 recorder.save(); | |
| 58 // This clipRect makes the clip empty, so the next command does noth
ing. | |
| 59 recorder.clipRect(SkRect::MakeLTRB(200, 200, 300, 300)); | |
| 60 recorder.drawRect(SkRect::MakeLTRB(220, 220, 240, 240), SkPaint());
// Skipped | |
| 61 recorder.restore(); | |
| 62 recorder.restore(); | |
| 63 | |
| 64 // Same deal as above: we need full SkCanvas semantics for clip skipping to
work. | |
| 65 SkRecord rerecord; | |
| 66 SkRecorder rerecorder(SkRecorder::kReadWrite_Mode, &rerecord, W, H); | |
| 67 SkRecordDraw(record, &rerecorder); | |
| 68 | |
| 69 // All commands except the one marked // Skipped will be preserved. | |
| 70 REPORTER_ASSERT(r, 7 == rerecord.count()); | |
| 71 } | |
| OLD | NEW |