| Index: skia/ext/analysis_canvas_unittest.cc
|
| diff --git a/skia/ext/analysis_canvas_unittest.cc b/skia/ext/analysis_canvas_unittest.cc
|
| index 73750325c8bfac490d822dcbfe8fb128458c5eb1..f64722a5dec95354aeb3255396d9f3bb9c6db86c 100644
|
| --- a/skia/ext/analysis_canvas_unittest.cc
|
| +++ b/skia/ext/analysis_canvas_unittest.cc
|
| @@ -3,6 +3,7 @@
|
| // found in the LICENSE file.
|
|
|
| #include "base/compiler_specific.h"
|
| +#include "base/macros.h"
|
| #include "skia/ext/analysis_canvas.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "third_party/skia/include/core/SkPicture.h"
|
| @@ -388,4 +389,67 @@ TEST(AnalysisCanvasTest, ClipComplexRegion) {
|
| EXPECT_FALSE(canvas.GetColorIfSolid(&outputColor));
|
| }
|
|
|
| +TEST(AnalysisCanvasTest, ClipRRectCoversCanvas) {
|
| +
|
| + SkVector radii[4] = {
|
| + SkVector::Make(10.0, 15.0),
|
| + SkVector::Make(20.0, 25.0),
|
| + SkVector::Make(30.0, 35.0),
|
| + SkVector::Make(40.0, 45.0),
|
| + };
|
| +
|
| + int rr_size = 600;
|
| + int canvas_size = 255;
|
| +
|
| + struct {
|
| + SkVector offset;
|
| + bool expected;
|
| + } cases [] = {
|
| + // Not within bounding box of |rr|.
|
| + { SkVector::Make(100.0, 100.0), false },
|
| +
|
| + // Intersects UL corner.
|
| + { SkVector::Make(0.0, 0.0), false },
|
| +
|
| + // Between UL and UR.
|
| + { SkVector::Make(-50.0, 0), true },
|
| +
|
| + // Intersects UR corner.
|
| + { SkVector::Make(canvas_size - rr_size, 0), false },
|
| +
|
| + // Between UR and LR.
|
| + { SkVector::Make(canvas_size - rr_size, -50.0), true },
|
| +
|
| + // Intersects LR corner.
|
| + { SkVector::Make(canvas_size - rr_size, canvas_size - rr_size), false },
|
| +
|
| + // Between LL and LR
|
| + { SkVector::Make(-50, canvas_size - rr_size), true },
|
| +
|
| + // Intersects LL corner
|
| + { SkVector::Make(0, canvas_size - rr_size), false },
|
| +
|
| + // Between UL and LL
|
| + { SkVector::Make(0, -50), true },
|
| +
|
| + // In center
|
| + { SkVector::Make(-100, -100), true},
|
| + };
|
| +
|
| + SkColor outputColor;
|
| +
|
| + for (size_t i = 0; i < arraysize(cases); ++i) {
|
| + skia::AnalysisCanvas canvas(canvas_size, canvas_size);
|
| +
|
| + SkRect bounding_rect = SkRect::MakeXYWH(
|
| + cases[i].offset.x(), cases[i].offset.y(), rr_size, rr_size);
|
| +
|
| + SkRRect rr;
|
| + rr.setRectRadii(bounding_rect, radii);
|
| +
|
| + canvas.clipRRect(rr);
|
| + EXPECT_EQ(cases[i].expected, canvas.GetColorIfSolid(&outputColor)) << i;
|
| + }
|
| +}
|
| +
|
| } // namespace skia
|
|
|