Index: src/gpu/GrClipStackClip.cpp |
diff --git a/src/gpu/GrClipStackClip.cpp b/src/gpu/GrClipStackClip.cpp |
index 7138f4b68a1d42bf6211b2a9f1dd36adf556a494..8233786ba2d1686edeedcc4955fdc73f38c7c2cb 100644 |
--- a/src/gpu/GrClipStackClip.cpp |
+++ b/src/gpu/GrClipStackClip.cpp |
@@ -41,6 +41,27 @@ bool GrClipStackClip::quickContains(const SkRRect& rrect) const { |
SkIntToScalar(fOrigin.fY))); |
} |
+bool GrClipStackClip::isRRect(const SkRect& origRTBounds, SkRRect* rr, bool* aa) const { |
+ if (!fStack) { |
+ return false; |
+ } |
+ const SkRect* rtBounds = &origRTBounds; |
+ SkRect tempRTBounds; |
+ bool origin = fOrigin.fX || fOrigin.fY; |
+ if (origin) { |
+ tempRTBounds = origRTBounds; |
+ tempRTBounds.offset(SkIntToScalar(fOrigin.fX), SkIntToScalar(fOrigin.fY)); |
+ rtBounds = &tempRTBounds; |
+ } |
+ if (fStack->isRRect(*rtBounds, rr, aa)) { |
+ if (origin) { |
+ rr->offset(-SkIntToScalar(fOrigin.fX), -SkIntToScalar(fOrigin.fY)); |
+ } |
+ return true; |
+ } |
+ return false; |
+} |
+ |
void GrClipStackClip::getConservativeBounds(int width, int height, SkIRect* devResult, |
bool* isIntersectionOfRects) const { |
if (!fStack) { |