aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core/SkClipStack.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/core/SkClipStack.h')
-rw-r--r--include/core/SkClipStack.h10
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.
*/