28TEST(DisplayListRegion, NonOverlappingRectangles1) {
29 std::vector<SkIRect> rects_in;
30 for (
int i = 0; i < 10; ++i) {
32 rects_in.push_back(rect);
35 auto rects = region.getRects();
36 std::vector<SkIRect> expected{
37 {0, 0, 50, 50}, {50, 50, 100, 100}, {100, 100, 150, 150},
38 {150, 150, 200, 200}, {200, 200, 250, 250}, {250, 250, 300, 300},
39 {300, 300, 350, 350}, {350, 350, 400, 400}, {400, 400, 450, 450},
42 EXPECT_EQ(rects, expected);
109TEST(DisplayListRegion, OverlappingRectangles) {
110 std::vector<SkIRect> rects_in;
111 for (
int i = 0; i < 10; ++i) {
113 rects_in.push_back(rect);
116 auto rects = region.getRects();
117 std::vector<SkIRect> expected{
118 {0, 0, 50, 10}, {0, 10, 60, 20}, {0, 20, 70, 30},
119 {0, 30, 80, 40}, {0, 40, 90, 50}, {10, 50, 100, 60},
120 {20, 60, 110, 70}, {30, 70, 120, 80}, {40, 80, 130, 90},
121 {50, 90, 140, 100}, {60, 100, 140, 110}, {70, 110, 140, 120},
122 {80, 120, 140, 130}, {90, 130, 140, 140},
125 EXPECT_EQ(rects, expected);
128TEST(DisplayListRegion, Deband) {
135 auto rects_with_deband = region.getRects(
true);
136 std::vector<SkIRect> expected{
141 EXPECT_EQ(rects_with_deband, expected);
143 auto rects_without_deband = region.getRects(
false);
144 std::vector<SkIRect> expected_without_deband{
151 EXPECT_EQ(rects_without_deband, expected_without_deband);
154TEST(DisplayListRegion, Intersects1) {
163 EXPECT_FALSE(region1.intersects(region2));
164 EXPECT_FALSE(region2.intersects(region1));
174 EXPECT_FALSE(region1.intersects(
308TEST(DisplayListRegion, UnionEmpty) {
310 DlRegion region1(std::vector<SkIRect>{});
311 DlRegion region2(std::vector<SkIRect>{});
315 auto rects = u.getRects();
319 DlRegion region1(std::vector<SkIRect>{});
325 auto rects = u.getRects();
326 std::vector<SkIRect> expected{
334 DlRegion region2(std::vector<SkIRect>{});
337 auto rects = u.getRects();
338 std::vector<SkIRect> expected{
361TEST(DisplayListRegion, TestAgainstSkRegion) {
365 std::vector<Settings> all_settings{{100}, {400}, {800}};
367 std::vector<size_t> iterations{1, 10, 100, 1000};
369 for (
const auto& settings : all_settings) {
370 for (
const auto iterations_1 : iterations) {
371 for (
const auto iterations_2 : iterations) {
372 std::random_device
d;
373 std::seed_seq seed{::testing::UnitTest::GetInstance()->random_seed()};
374 std::mt19937 rng(seed);
379 std::uniform_int_distribution
pos(0, 4000);
380 std::uniform_int_distribution
size(1, settings.max_size);
382 std::vector<SkIRect> rects_in1;
383 std::vector<SkIRect> rects_in2;
385 for (
size_t i = 0; i < iterations_1; ++i) {
388 rects_in1.push_back(rect);
391 for (
size_t i = 0; i < iterations_2; ++i) {
394 rects_in2.push_back(rect);
398 sk_region1.
setRects(rects_in1.data(), rects_in1.size());
402 sk_region2.
setRects(rects_in2.data(), rects_in2.size());
405 auto intersects_1 = region1.
intersects(region2);
406 auto intersects_2 = region2.
intersects(region1);
407 auto sk_intesects = sk_region1.
intersects(sk_region2);
408 EXPECT_EQ(intersects_1, intersects_2);
409 EXPECT_EQ(intersects_1, sk_intesects);
412 auto rects = region2.
getRects(
true);
413 for (
const auto& r : rects) {
424 SkRegion sk_intersection(sk_region1);
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE auto & d