diff options
author | robertphillips <robertphillips@google.com> | 2016-08-04 12:35:46 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-08-04 12:35:46 -0700 |
commit | 401c1968a1727b7dd1543f7e5536ca544fc6d752 (patch) | |
tree | 6c3149fdb57b5b9b4a59e2162117e50519433264 /tools/sk_tool_utils.cpp | |
parent | 1ba1d372c2727db56021d0687825320b12d10d4e (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.cpp | 32 |
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 |