diff options
Diffstat (limited to 'include/core/SkClipStack.h')
-rw-r--r-- | include/core/SkClipStack.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/core/SkClipStack.h b/include/core/SkClipStack.h index d30bbcc128..4ca09154eb 100644 --- a/include/core/SkClipStack.h +++ b/include/core/SkClipStack.h @@ -20,8 +20,10 @@ class SkCanvasClipVisitor; #ifdef SK_SUPPORT_LEGACY_CLIPOPS_PLAIN_ENUM + #define SkClipStackImpl_UnionOp kUnion_SkClipOp #define SkClipStackImpl_ReplaceOp kReplace_SkClipOp #else + #define SkClipStackImpl_UnionOp SkClipOp::kUnion_private_internal_do_not_use #define SkClipStackImpl_ReplaceOp SkClipOp::kReplace_private_internal_do_not_use #endif @@ -363,6 +365,9 @@ public: void clipPath(const SkPath&, const SkMatrix& matrix, SkClipOp, bool doAA); // An optimized version of clipDevRect(emptyRect, kIntersect, ...) void clipEmpty(); + void setDeviceClipRestriction(const SkIRect& rect) { + fClipRestrictionRect = SkRect::MakeFromIRect(rect); + } /** * isWideOpen returns true if the clip state corresponds to the infinite @@ -504,6 +509,7 @@ private: // clipDevRect and clipDevPath call. 0 is reserved to indicate an // invalid ID. static int32_t gGenID; + SkRect fClipRestrictionRect = SkRect::MakeEmpty(); bool internalQuickContains(const SkRect& devRect) const; bool internalQuickContains(const SkRRect& devRRect) const; @@ -518,6 +524,10 @@ private: */ void restoreTo(int saveCount); + inline bool hasClipRestriction(SkClipOp op) { + return op >= SkClipStackImpl_UnionOp && !fClipRestrictionRect.isEmpty(); + } + /** * Return the next unique generation ID. */ |