Chromium Code Reviews| Index: src/core/SkRasterClip.cpp |
| diff --git a/src/core/SkRasterClip.cpp b/src/core/SkRasterClip.cpp |
| index 89467677f3ec95904ff4ae540a82b031f2310bae..88bfbafc365da153e2ffb88898f1eb8abd22c9ab 100644 |
| --- a/src/core/SkRasterClip.cpp |
| +++ b/src/core/SkRasterClip.cpp |
| @@ -24,6 +24,14 @@ SkRasterClip::SkRasterClip(const SkRasterClip& src) { |
| SkDEBUGCODE(this->validate();) |
| } |
| +SkRasterClip::SkRasterClip(const SkRegion& rgn) : fBW(rgn) { |
| + fForceConservativeRects = false; |
| + fIsBW = true; |
| + fIsEmpty = this->computeIsEmpty(); // bounds might be empty, so compute |
| + fIsRect = !fIsEmpty; |
| + SkDEBUGCODE(this->validate();) |
| +} |
| + |
| SkRasterClip::SkRasterClip(const SkIRect& bounds, bool forceConservativeRects) : fBW(bounds) { |
| fForceConservativeRects = forceConservativeRects; |
| fIsBW = true; |
| @@ -44,6 +52,22 @@ SkRasterClip::~SkRasterClip() { |
| SkDEBUGCODE(this->validate();) |
| } |
| +bool SkRasterClip::operator==(const SkRasterClip& other) const { |
| + // This impl doesn't care if fForceConservativeRects is the same in both, only the current state |
| + |
| + if (fIsBW != other.fIsBW) { |
| + return false; |
| + } |
| + bool isEqual = fIsBW ? fBW == other.fBW : fAA == other.fAA; |
| +#ifdef SK_DEBUG |
| + if (isEqual) { |
|
hal.canary
2016/04/27 14:14:37
SkASSERT(!isEqual || fIsEmpty == other.fIsEmpty);
reed1
2016/04/27 14:25:20
I find that harder to parse. Do you see other bene
|
| + SkASSERT(fIsEmpty == other.fIsEmpty); |
| + SkASSERT(fIsRect == other.fIsRect); |
| + } |
| +#endif |
| + return isEqual; |
| +} |
| + |
| bool SkRasterClip::isComplex() const { |
| return fIsBW ? fBW.isComplex() : !fAA.isEmpty(); |
| } |