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());
 }