Chromium Code Reviews| Index: include/core/SkCanvas.h |
| diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h |
| index e639212e384b0f58dda00b3e8086cbe03a059688..4a2d5ae976b4be95a9f692dc4a7ed18f5c9d966b 100644 |
| --- a/include/core/SkCanvas.h |
| +++ b/include/core/SkCanvas.h |
| @@ -935,7 +935,26 @@ public: |
| // do nothing. Subclasses may do something |
| } |
| + /** |
|
robertphillips
2014/02/27 14:12:36
Maybe "With this call the client asserts ..." to e
|
| + * This call asserts that subsequent draw operations (up to the matching popCull() call) |
| + * are fully contained within the given bounding box. The assertion is not enforced, |
| + * but the information might be used to quick-reject command blocks, so an incorrect |
| + * bounding box may result in incomplete rendering. |
| + */ |
| + void pushCull(const SkRect& cullRect) { |
| + ++fCullCount; |
| + this->onPushCull(cullRect); |
| + } |
| + /** |
| + * Terminates the current culling block, and restores the previous one (if any). |
| + */ |
| + void popCull() { |
| + if (fCullCount > 0) { |
| + --fCullCount; |
| + this->onPopCull(); |
| + } |
| + } |
| ////////////////////////////////////////////////////////////////////////// |
| /** Get the current bounder object. |
| @@ -1101,6 +1120,9 @@ protected: |
| // can perform copy-on-write or invalidate any cached images |
| void predrawNotify(); |
| + virtual void onPushCull(const SkRect& cullRect); |
| + virtual void onPopCull(); |
| + |
| private: |
| class MCRec; |
| @@ -1113,6 +1135,7 @@ private: |
| SkBounder* fBounder; |
| int fSaveLayerCount; // number of successful saveLayer calls |
| + int fCullCount; // number of active culls |
| SkMetaData* fMetaData; |