diff options
author | 2014-04-08 15:17:17 +0000 | |
---|---|---|
committer | 2014-04-08 15:17:17 +0000 | |
commit | 03a99b8f96b56d3349fa7b6832638e3b9830d169 (patch) | |
tree | a92ed00dc35cd688b33cc5346fda44471a2f7ac1 /src | |
parent | 43c27586e8b02243c16649de1cd7d95dcea0a712 (diff) |
Add push/pop cull to SkRecord.
BUG=skia:2378
R=fmalita@google.com, mtklein@google.com, fmalita@chromium.org
Author: mtklein@chromium.org
Review URL: https://codereview.chromium.org/224723026
git-svn-id: http://skia.googlecode.com/svn/trunk@14091 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src')
-rw-r--r-- | src/record/SkRecordDraw.h | 3 | ||||
-rw-r--r-- | src/record/SkRecorder.cpp | 8 | ||||
-rw-r--r-- | src/record/SkRecorder.h | 3 | ||||
-rw-r--r-- | src/record/SkRecords.h | 7 |
4 files changed, 20 insertions, 1 deletions
diff --git a/src/record/SkRecordDraw.h b/src/record/SkRecordDraw.h index 744dfc5b33..042147df99 100644 --- a/src/record/SkRecordDraw.h +++ b/src/record/SkRecordDraw.h @@ -25,6 +25,9 @@ CASE(Restore) { canvas->restore(); } CASE(Save) { canvas->save(r.flags); } CASE(SaveLayer) { canvas->saveLayer(r.bounds, r.paint, r.flags); } +CASE(PushCull) { canvas->pushCull(r.rect); } +CASE(PopCull) { canvas->popCull(); } + CASE(Concat) { canvas->concat(r.matrix); } CASE(SetMatrix) { canvas->setMatrix(r.matrix); } diff --git a/src/record/SkRecorder.cpp b/src/record/SkRecorder.cpp index 1edcc52239..fabb4be861 100644 --- a/src/record/SkRecorder.cpp +++ b/src/record/SkRecorder.cpp @@ -195,6 +195,14 @@ void SkRecorder::willRestore() { APPEND(Restore); } +void SkRecorder::onPushCull(const SkRect& rect) { + APPEND(PushCull, rect); +} + +void SkRecorder::onPopCull() { + APPEND(PopCull); +} + void SkRecorder::didConcat(const SkMatrix& matrix) { APPEND(Concat, matrix); } diff --git a/src/record/SkRecorder.h b/src/record/SkRecorder.h index 9d722b4b2b..b1782fed67 100644 --- a/src/record/SkRecorder.h +++ b/src/record/SkRecorder.h @@ -57,6 +57,9 @@ public: void onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle edgeStyle); void onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op); + void onPushCull(const SkRect& cullRect); + void onPopCull(); + private: template <typename T> T* copy(const T*); diff --git a/src/record/SkRecords.h b/src/record/SkRecords.h index 67cfb20c4c..17a8e849ad 100644 --- a/src/record/SkRecords.h +++ b/src/record/SkRecords.h @@ -39,7 +39,9 @@ namespace SkRecords { M(DrawSprite) \ M(DrawText) \ M(DrawTextOnPath) \ - M(DrawVertices) + M(DrawVertices) \ + M(PushCull) \ + M(PopCull) // Defines SkRecords::Type, an enum of all record types. #define ENUM(T) T##_Type, @@ -125,6 +127,9 @@ RECORD0(Restore); RECORD1(Save, SkCanvas::SaveFlags, flags); RECORD3(SaveLayer, SkRect*, bounds, SkPaint*, paint, SkCanvas::SaveFlags, flags); +RECORD1(PushCull, SkRect, rect); +RECORD0(PopCull); + RECORD1(Concat, SkMatrix, matrix); RECORD1(SetMatrix, SkMatrix, matrix); |