aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/sk_tool_utils.cpp
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2016-08-04 12:35:46 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-08-04 12:35:46 -0700
commit401c1968a1727b7dd1543f7e5536ca544fc6d752 (patch)
tree6c3149fdb57b5b9b4a59e2162117e50519433264 /tools/sk_tool_utils.cpp
parent1ba1d372c2727db56021d0687825320b12d10d4e (diff)
Add new GM for occluded blurmask filter draws
This splits out just the GM portion of https://codereview.chromium.org/2201993003/ (Add GM to test out blurmaskfilter occluders) which included some API changes GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2214033002 Review-Url: https://codereview.chromium.org/2214033002
Diffstat (limited to 'tools/sk_tool_utils.cpp')
-rw-r--r--tools/sk_tool_utils.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/tools/sk_tool_utils.cpp b/tools/sk_tool_utils.cpp
index 38880f8204..0978058238 100644
--- a/tools/sk_tool_utils.cpp
+++ b/tools/sk_tool_utils.cpp
@@ -513,4 +513,36 @@ SkRect compute_central_occluder(const SkRRect& rr) {
return SkRect::MakeLTRB(newL, newT, newR, newB);
}
+// The widest inset rect
+SkRect compute_widest_occluder(const SkRRect& rr) {
+ const SkRect& r = rr.getBounds();
+
+ const SkVector& ul = rr.radii(SkRRect::kUpperLeft_Corner);
+ const SkVector& ur = rr.radii(SkRRect::kUpperRight_Corner);
+ const SkVector& lr = rr.radii(SkRRect::kLowerRight_Corner);
+ const SkVector& ll = rr.radii(SkRRect::kLowerLeft_Corner);
+
+ SkScalar maxT = SkTMax(ul.fY, ur.fY);
+ SkScalar maxB = SkTMax(ll.fY, lr.fY);
+
+ return SkRect::MakeLTRB(r.fLeft, r.fTop + maxT, r.fRight, r.fBottom - maxB);
+
+}
+
+// The tallest inset rect
+SkRect compute_tallest_occluder(const SkRRect& rr) {
+ const SkRect& r = rr.getBounds();
+
+ const SkVector& ul = rr.radii(SkRRect::kUpperLeft_Corner);
+ const SkVector& ur = rr.radii(SkRRect::kUpperRight_Corner);
+ const SkVector& lr = rr.radii(SkRRect::kLowerRight_Corner);
+ const SkVector& ll = rr.radii(SkRRect::kLowerLeft_Corner);
+
+ SkScalar maxL = SkTMax(ul.fX, ll.fX);
+ SkScalar maxR = SkTMax(ur.fX, lr.fX);
+
+ return SkRect::MakeLTRB(r.fLeft + maxL, r.fTop, r.fRight - maxR, r.fBottom);
+}
+
+
} // namespace sk_tool_utils