| Index: tools/sk_tool_utils.cpp
|
| diff --git a/tools/sk_tool_utils.cpp b/tools/sk_tool_utils.cpp
|
| index 38880f820433175da57c9ac5df2b911f2d7f0b29..0978058238a5890cf18061bf7141968c0c131c65 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
|
|
|