Index: src/gpu/GrShape.h |
diff --git a/src/gpu/GrShape.h b/src/gpu/GrShape.h |
index 57b1d8a9bf06af2ee1bd542497824ee4efdcd215..0e863e2c6e9167368f98523ab8a11e25dc917c3a 100644 |
--- a/src/gpu/GrShape.h |
+++ b/src/gpu/GrShape.h |
@@ -33,16 +33,25 @@ |
*/ |
class GrShape { |
public: |
- GrShape(const SkPath& path) |
+ GrShape() : fType(Type::kEmpty) {} |
+ |
+ explicit GrShape(const SkPath& path) |
: fType(Type::kPath) |
, fPath(&path) { |
this->attemptToReduceFromPath(); |
} |
- GrShape() : fType(Type::kEmpty) {} |
+ explicit GrShape(const SkRRect& rrect) |
+ : fType(Type::kRRect) |
+ , fRRect(rrect) { |
+ this->attemptToReduceFromRRect(); |
+ } |
- explicit GrShape(const SkRRect& rrect) : fType(Type::kRRect), fRRect(rrect) {} |
- explicit GrShape(const SkRect& rect) : fType(Type::kRRect), fRRect(SkRRect::MakeRect(rect)) {} |
+ explicit GrShape(const SkRect& rect) |
+ : fType(Type::kRRect) |
+ , fRRect(SkRRect::MakeRect(rect)) { |
+ this->attemptToReduceFromRRect(); |
+ } |
GrShape(const SkPath& path, const GrStyle& style) |
: fType(Type::kPath) |
@@ -54,12 +63,16 @@ public: |
GrShape(const SkRRect& rrect, const GrStyle& style) |
: fType(Type::kRRect) |
, fRRect(rrect) |
- , fStyle(style) {} |
+ , fStyle(style) { |
+ this->attemptToReduceFromRRect(); |
+ } |
GrShape(const SkRect& rect, const GrStyle& style) |
: fType(Type::kRRect) |
, fRRect(SkRRect::MakeRect(rect)) |
- , fStyle(style) {} |
+ , fStyle(style) { |
+ this->attemptToReduceFromRRect(); |
+ } |
GrShape(const SkPath& path, const SkPaint& paint) |
: fType(Type::kPath) |
@@ -71,12 +84,16 @@ public: |
GrShape(const SkRRect& rrect, const SkPaint& paint) |
: fType(Type::kRRect) |
, fRRect(rrect) |
- , fStyle(paint) {} |
+ , fStyle(paint) { |
+ this->attemptToReduceFromRRect(); |
+ } |
GrShape(const SkRect& rect, const SkPaint& paint) |
: fType(Type::kRRect) |
, fRRect(SkRRect::MakeRect(rect)) |
- , fStyle(paint) {} |
+ , fStyle(paint) { |
+ this->attemptToReduceFromRRect(); |
+ } |
GrShape(const GrShape&); |
GrShape& operator=(const GrShape& that); |
@@ -182,12 +199,21 @@ private: |
} |
} |
+ void attemptToReduceFromRRect() { |
+ SkASSERT(Type::kRRect == fType); |
+ SkASSERT(!fInheritedKey.count()); |
+ if (fRRect.isEmpty()) { |
+ fType = Type::kEmpty; |
+ } |
+ } |
+ |
static Type AttemptToReduceFromPathImpl(const SkPath& path, SkRRect* rrect, |
const SkPathEffect* pe, const SkStrokeRec& strokeRec) { |
if (path.isEmpty()) { |
return Type::kEmpty; |
} |
if (path.isRRect(rrect)) { |
+ SkASSERT(!rrect->isEmpty()); |
return Type::kRRect; |
} |
SkRect rect; |