OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/raster/raster_source.h" | 5 #include "cc/raster/raster_source.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 EXPECT_TRUE(is_solid_color); | 90 EXPECT_TRUE(is_solid_color); |
91 EXPECT_EQ(solid_color, color); | 91 EXPECT_EQ(solid_color, color); |
92 | 92 |
93 color = SK_ColorTRANSPARENT; | 93 color = SK_ColorTRANSPARENT; |
94 is_solid_color = | 94 is_solid_color = |
95 raster->PerformSolidColorAnalysis(gfx::Rect(350, 350, 100, 100), &color); | 95 raster->PerformSolidColorAnalysis(gfx::Rect(350, 350, 100, 100), &color); |
96 EXPECT_TRUE(is_solid_color); | 96 EXPECT_TRUE(is_solid_color); |
97 EXPECT_EQ(solid_color, color); | 97 EXPECT_EQ(solid_color, color); |
98 } | 98 } |
99 | 99 |
| 100 TEST(RasterSourceTest, AnalyzeIsSolidScaled) { |
| 101 gfx::Size layer_bounds(400, 400); |
| 102 const std::vector<float> recording_scales = {1.25f, 1.33f, 1.5f, 1.6f, |
| 103 1.66f, 2.f, 2.25f, 2.5f}; |
| 104 for (float recording_scale : recording_scales) { |
| 105 std::unique_ptr<FakeRecordingSource> recording_source = |
| 106 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds); |
| 107 recording_source->SetRecordingScaleFactor(recording_scale); |
| 108 |
| 109 PaintFlags solid_flags; |
| 110 SkColor solid_color = SkColorSetARGB(255, 12, 23, 34); |
| 111 solid_flags.setColor(solid_color); |
| 112 |
| 113 SkColor non_solid_color = SkColorSetARGB(128, 45, 56, 67); |
| 114 SkColor color = SK_ColorTRANSPARENT; |
| 115 PaintFlags non_solid_flags; |
| 116 bool is_solid_color = false; |
| 117 non_solid_flags.setColor(non_solid_color); |
| 118 |
| 119 recording_source->add_draw_rect_with_flags( |
| 120 gfx::ScaleToEnclosingRect(gfx::Rect(layer_bounds), recording_scale), |
| 121 solid_flags); |
| 122 recording_source->Rerecord(); |
| 123 |
| 124 scoped_refptr<RasterSource> raster = |
| 125 RasterSource::CreateFromRecordingSource(recording_source.get(), false); |
| 126 |
| 127 // Ensure everything is solid. |
| 128 for (int y = 0; y <= 300; y += 100) { |
| 129 for (int x = 0; x <= 300; x += 100) { |
| 130 gfx::Rect rect(x, y, 100, 100); |
| 131 is_solid_color = raster->PerformSolidColorAnalysis(rect, &color); |
| 132 EXPECT_TRUE(is_solid_color) |
| 133 << rect.ToString() << " recording_scale: " << recording_scale; |
| 134 EXPECT_EQ(solid_color, color) |
| 135 << rect.ToString() << " recording_scale: " << recording_scale; |
| 136 } |
| 137 } |
| 138 |
| 139 // Add one non-solid pixel and recreate the raster source. |
| 140 recording_source->add_draw_rect_with_flags( |
| 141 gfx::Rect(std::round(50 * recording_scale), |
| 142 std::round(50 * recording_scale), 1, 1), |
| 143 non_solid_flags); |
| 144 recording_source->Rerecord(); |
| 145 raster = |
| 146 RasterSource::CreateFromRecordingSource(recording_source.get(), false); |
| 147 |
| 148 color = SK_ColorTRANSPARENT; |
| 149 is_solid_color = |
| 150 raster->PerformSolidColorAnalysis(gfx::Rect(0, 0, 100, 100), &color); |
| 151 EXPECT_FALSE(is_solid_color) << " recording_scale: " << recording_scale; |
| 152 |
| 153 color = SK_ColorTRANSPARENT; |
| 154 is_solid_color = |
| 155 raster->PerformSolidColorAnalysis(gfx::Rect(0, 0, 51, 51), &color); |
| 156 EXPECT_FALSE(is_solid_color) << " recording_scale: " << recording_scale; |
| 157 |
| 158 color = SK_ColorTRANSPARENT; |
| 159 is_solid_color = |
| 160 raster->PerformSolidColorAnalysis(gfx::Rect(51, 0, 100, 100), &color); |
| 161 EXPECT_TRUE(is_solid_color) << " recording_scale: " << recording_scale; |
| 162 EXPECT_EQ(solid_color, color) << " recording_scale: " << recording_scale; |
| 163 |
| 164 // Boundaries should be clipped. |
| 165 color = SK_ColorTRANSPARENT; |
| 166 is_solid_color = |
| 167 raster->PerformSolidColorAnalysis(gfx::Rect(350, 0, 100, 100), &color); |
| 168 EXPECT_TRUE(is_solid_color) << " recording_scale: " << recording_scale; |
| 169 EXPECT_EQ(solid_color, color) << " recording_scale: " << recording_scale; |
| 170 |
| 171 color = SK_ColorTRANSPARENT; |
| 172 is_solid_color = |
| 173 raster->PerformSolidColorAnalysis(gfx::Rect(0, 350, 100, 100), &color); |
| 174 EXPECT_TRUE(is_solid_color) << " recording_scale: " << recording_scale; |
| 175 EXPECT_EQ(solid_color, color) << " recording_scale: " << recording_scale; |
| 176 |
| 177 color = SK_ColorTRANSPARENT; |
| 178 is_solid_color = raster->PerformSolidColorAnalysis( |
| 179 gfx::Rect(350, 350, 100, 100), &color); |
| 180 EXPECT_TRUE(is_solid_color) << " recording_scale: " << recording_scale; |
| 181 EXPECT_EQ(solid_color, color) << " recording_scale: " << recording_scale; |
| 182 } |
| 183 } |
| 184 |
100 TEST(RasterSourceTest, PixelRefIteratorDiscardableRefsOneTile) { | 185 TEST(RasterSourceTest, PixelRefIteratorDiscardableRefsOneTile) { |
101 gfx::Size layer_bounds(512, 512); | 186 gfx::Size layer_bounds(512, 512); |
102 | 187 |
103 std::unique_ptr<FakeRecordingSource> recording_source = | 188 std::unique_ptr<FakeRecordingSource> recording_source = |
104 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds); | 189 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds); |
105 | 190 |
106 sk_sp<SkImage> discardable_image[2][2]; | 191 sk_sp<SkImage> discardable_image[2][2]; |
107 discardable_image[0][0] = CreateDiscardableImage(gfx::Size(32, 32)); | 192 discardable_image[0][0] = CreateDiscardableImage(gfx::Size(32, 32)); |
108 discardable_image[0][1] = CreateDiscardableImage(gfx::Size(32, 32)); | 193 discardable_image[0][1] = CreateDiscardableImage(gfx::Size(32, 32)); |
109 discardable_image[1][1] = CreateDiscardableImage(gfx::Size(32, 32)); | 194 discardable_image[1][1] = CreateDiscardableImage(gfx::Size(32, 32)); |
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
530 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 24)); | 615 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 24)); |
531 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(49, 24)); | 616 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(49, 24)); |
532 for (int x = 0; x < 49; ++x) | 617 for (int x = 0; x < 49; ++x) |
533 EXPECT_EQ(SK_ColorRED, bitmap.getColor(x, 12)); | 618 EXPECT_EQ(SK_ColorRED, bitmap.getColor(x, 12)); |
534 for (int y = 0; y < 24; ++y) | 619 for (int y = 0; y < 24; ++y) |
535 EXPECT_EQ(SK_ColorRED, bitmap.getColor(24, y)); | 620 EXPECT_EQ(SK_ColorRED, bitmap.getColor(24, y)); |
536 } | 621 } |
537 | 622 |
538 } // namespace | 623 } // namespace |
539 } // namespace cc | 624 } // namespace cc |
OLD | NEW |