Add asRRect method to SkClipStack::Element
Adds an asRRect method alongside asPath, for clip implementations that
can be generalized to round rects.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1793373002
Review URL: https://codereview.chromium.org/1793373002
diff --git a/include/core/SkClipStack.h b/include/core/SkClipStack.h
index 38d6d67..973f70a 100644
--- a/include/core/SkClipStack.h
+++ b/include/core/SkClipStack.h
@@ -98,6 +98,9 @@
//!< Call to get the element as a path, regardless of its type.
void asPath(SkPath* path) const;
+ //!< Call if getType() is not kPath to get the element as a round rect.
+ const SkRRect& asRRect() const { SkASSERT(kPath_Type != fType); return fRRect; }
+
/** If getType() is not kEmpty this indicates whether the clip shape should be anti-aliased
when it is rasterized. */
bool isAA() const { return fDoAA; }
diff --git a/src/core/SkClipStack.cpp b/src/core/SkClipStack.cpp
index 4227eea..4e53d8b 100644
--- a/src/core/SkClipStack.cpp
+++ b/src/core/SkClipStack.cpp
@@ -21,6 +21,7 @@
SkClipStack::Element::Element(const Element& that) {
switch (that.getType()) {
case kEmpty_Type:
+ fRRect.setEmpty();
fPath.reset();
break;
case kRect_Type: // Rect uses rrect
@@ -171,6 +172,7 @@
SkASSERT(kNormal_BoundsType == fFiniteBoundType);
SkASSERT(!fIsIntersectionOfRects);
SkASSERT(kEmptyGenID == fGenID);
+ SkASSERT(fRRect.isEmpty());
SkASSERT(!fPath.isValid());
}