| 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 solid_flags); | 46 solid_flags); |
| 47 recording_source->Rerecord(); | 47 recording_source->Rerecord(); |
| 48 | 48 |
| 49 scoped_refptr<RasterSource> raster = | 49 scoped_refptr<RasterSource> raster = |
| 50 RasterSource::CreateFromRecordingSource(recording_source.get(), false); | 50 RasterSource::CreateFromRecordingSource(recording_source.get(), false); |
| 51 | 51 |
| 52 // Ensure everything is solid. | 52 // Ensure everything is solid. |
| 53 for (int y = 0; y <= 300; y += 100) { | 53 for (int y = 0; y <= 300; y += 100) { |
| 54 for (int x = 0; x <= 300; x += 100) { | 54 for (int x = 0; x <= 300; x += 100) { |
| 55 gfx::Rect rect(x, y, 100, 100); | 55 gfx::Rect rect(x, y, 100, 100); |
| 56 is_solid_color = raster->PerformSolidColorAnalysis(rect, 1.f, &color); | 56 is_solid_color = raster->PerformSolidColorAnalysis( |
| 57 rect, gfx::AxisTransform2d(1.f, gfx::Vector2dF()), &color); |
| 57 EXPECT_TRUE(is_solid_color) << rect.ToString(); | 58 EXPECT_TRUE(is_solid_color) << rect.ToString(); |
| 58 EXPECT_EQ(solid_color, color) << rect.ToString(); | 59 EXPECT_EQ(solid_color, color) << rect.ToString(); |
| 59 } | 60 } |
| 60 } | 61 } |
| 61 | 62 |
| 62 // Add one non-solid pixel and recreate the raster source. | 63 // Add one non-solid pixel and recreate the raster source. |
| 63 recording_source->add_draw_rect_with_flags(gfx::Rect(50, 50, 1, 1), | 64 recording_source->add_draw_rect_with_flags(gfx::Rect(50, 50, 1, 1), |
| 64 non_solid_flags); | 65 non_solid_flags); |
| 65 recording_source->Rerecord(); | 66 recording_source->Rerecord(); |
| 66 raster = | 67 raster = |
| 67 RasterSource::CreateFromRecordingSource(recording_source.get(), false); | 68 RasterSource::CreateFromRecordingSource(recording_source.get(), false); |
| 68 | 69 |
| 69 color = SK_ColorTRANSPARENT; | 70 color = SK_ColorTRANSPARENT; |
| 70 is_solid_color = | 71 is_solid_color = raster->PerformSolidColorAnalysis( |
| 71 raster->PerformSolidColorAnalysis(gfx::Rect(0, 0, 100, 100), 1.f, &color); | 72 gfx::Rect(0, 0, 100, 100), gfx::AxisTransform2d(1.f, gfx::Vector2dF()), |
| 73 &color); |
| 72 EXPECT_FALSE(is_solid_color); | 74 EXPECT_FALSE(is_solid_color); |
| 73 | 75 |
| 74 color = SK_ColorTRANSPARENT; | 76 color = SK_ColorTRANSPARENT; |
| 75 is_solid_color = raster->PerformSolidColorAnalysis( | 77 is_solid_color = raster->PerformSolidColorAnalysis( |
| 76 gfx::Rect(100, 0, 100, 100), 1.f, &color); | 78 gfx::Rect(100, 0, 100, 100), gfx::AxisTransform2d(1.f, gfx::Vector2dF()), |
| 79 &color); |
| 77 EXPECT_TRUE(is_solid_color); | 80 EXPECT_TRUE(is_solid_color); |
| 78 EXPECT_EQ(solid_color, color); | 81 EXPECT_EQ(solid_color, color); |
| 79 | 82 |
| 80 // Boundaries should be clipped. | 83 // Boundaries should be clipped. |
| 81 color = SK_ColorTRANSPARENT; | 84 color = SK_ColorTRANSPARENT; |
| 82 is_solid_color = raster->PerformSolidColorAnalysis( | 85 is_solid_color = raster->PerformSolidColorAnalysis( |
| 83 gfx::Rect(350, 0, 100, 100), 1.f, &color); | 86 gfx::Rect(350, 0, 100, 100), gfx::AxisTransform2d(1.f, gfx::Vector2dF()), |
| 87 &color); |
| 84 EXPECT_TRUE(is_solid_color); | 88 EXPECT_TRUE(is_solid_color); |
| 85 EXPECT_EQ(solid_color, color); | 89 EXPECT_EQ(solid_color, color); |
| 86 | 90 |
| 87 color = SK_ColorTRANSPARENT; | 91 color = SK_ColorTRANSPARENT; |
| 88 is_solid_color = raster->PerformSolidColorAnalysis( | 92 is_solid_color = raster->PerformSolidColorAnalysis( |
| 89 gfx::Rect(0, 350, 100, 100), 1.f, &color); | 93 gfx::Rect(0, 350, 100, 100), gfx::AxisTransform2d(1.f, gfx::Vector2dF()), |
| 94 &color); |
| 90 EXPECT_TRUE(is_solid_color); | 95 EXPECT_TRUE(is_solid_color); |
| 91 EXPECT_EQ(solid_color, color); | 96 EXPECT_EQ(solid_color, color); |
| 92 | 97 |
| 93 color = SK_ColorTRANSPARENT; | 98 color = SK_ColorTRANSPARENT; |
| 94 is_solid_color = raster->PerformSolidColorAnalysis( | 99 is_solid_color = raster->PerformSolidColorAnalysis( |
| 95 gfx::Rect(350, 350, 100, 100), 1.f, &color); | 100 gfx::Rect(350, 350, 100, 100), |
| 101 gfx::AxisTransform2d(1.f, gfx::Vector2dF()), &color); |
| 96 EXPECT_TRUE(is_solid_color); | 102 EXPECT_TRUE(is_solid_color); |
| 97 EXPECT_EQ(solid_color, color); | 103 EXPECT_EQ(solid_color, color); |
| 98 } | 104 } |
| 99 | 105 |
| 100 TEST(RasterSourceTest, AnalyzeIsSolidScaled) { | 106 TEST(RasterSourceTest, AnalyzeIsSolidScaled) { |
| 101 gfx::Size layer_bounds(400, 400); | 107 gfx::Size layer_bounds(400, 400); |
| 102 | 108 |
| 103 std::unique_ptr<FakeRecordingSource> recording_source = | 109 std::unique_ptr<FakeRecordingSource> recording_source = |
| 104 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds); | 110 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds); |
| 105 | 111 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 117 solid_flags); | 123 solid_flags); |
| 118 recording_source->Rerecord(); | 124 recording_source->Rerecord(); |
| 119 | 125 |
| 120 scoped_refptr<RasterSource> raster = | 126 scoped_refptr<RasterSource> raster = |
| 121 RasterSource::CreateFromRecordingSource(recording_source.get(), false); | 127 RasterSource::CreateFromRecordingSource(recording_source.get(), false); |
| 122 | 128 |
| 123 // Ensure everything is solid. | 129 // Ensure everything is solid. |
| 124 for (int y = 0; y <= 30; y += 10) { | 130 for (int y = 0; y <= 30; y += 10) { |
| 125 for (int x = 0; x <= 30; x += 10) { | 131 for (int x = 0; x <= 30; x += 10) { |
| 126 gfx::Rect rect(x, y, 10, 10); | 132 gfx::Rect rect(x, y, 10, 10); |
| 127 is_solid_color = raster->PerformSolidColorAnalysis(rect, 0.1f, &color); | 133 is_solid_color = raster->PerformSolidColorAnalysis( |
| 134 rect, gfx::AxisTransform2d(0.1f, gfx::Vector2dF()), &color); |
| 128 EXPECT_TRUE(is_solid_color) << rect.ToString(); | 135 EXPECT_TRUE(is_solid_color) << rect.ToString(); |
| 129 EXPECT_EQ(color, solid_color) << rect.ToString(); | 136 EXPECT_EQ(color, solid_color) << rect.ToString(); |
| 130 } | 137 } |
| 131 } | 138 } |
| 132 | 139 |
| 133 // Add one non-solid pixel and recreate the raster source. | 140 // Add one non-solid pixel and recreate the raster source. |
| 134 recording_source->add_draw_rect_with_flags(gfx::Rect(50, 50, 1, 1), | 141 recording_source->add_draw_rect_with_flags(gfx::Rect(50, 50, 1, 1), |
| 135 non_solid_flags); | 142 non_solid_flags); |
| 136 recording_source->Rerecord(); | 143 recording_source->Rerecord(); |
| 137 raster = | 144 raster = |
| 138 RasterSource::CreateFromRecordingSource(recording_source.get(), false); | 145 RasterSource::CreateFromRecordingSource(recording_source.get(), false); |
| 139 | 146 |
| 140 color = SK_ColorTRANSPARENT; | 147 color = SK_ColorTRANSPARENT; |
| 141 is_solid_color = | 148 is_solid_color = raster->PerformSolidColorAnalysis( |
| 142 raster->PerformSolidColorAnalysis(gfx::Rect(0, 0, 10, 10), 0.1f, &color); | 149 gfx::Rect(0, 0, 10, 10), gfx::AxisTransform2d(0.1f, gfx::Vector2dF()), |
| 150 &color); |
| 143 EXPECT_FALSE(is_solid_color); | 151 EXPECT_FALSE(is_solid_color); |
| 144 | 152 |
| 145 color = SK_ColorTRANSPARENT; | 153 color = SK_ColorTRANSPARENT; |
| 146 is_solid_color = | 154 is_solid_color = raster->PerformSolidColorAnalysis( |
| 147 raster->PerformSolidColorAnalysis(gfx::Rect(10, 0, 10, 10), 0.1f, &color); | 155 gfx::Rect(10, 0, 10, 10), gfx::AxisTransform2d(0.1f, gfx::Vector2dF()), |
| 156 &color); |
| 148 EXPECT_TRUE(is_solid_color); | 157 EXPECT_TRUE(is_solid_color); |
| 149 EXPECT_EQ(color, solid_color); | 158 EXPECT_EQ(color, solid_color); |
| 150 | 159 |
| 151 // Boundaries should be clipped. | 160 // Boundaries should be clipped. |
| 152 color = SK_ColorTRANSPARENT; | 161 color = SK_ColorTRANSPARENT; |
| 153 is_solid_color = | 162 is_solid_color = raster->PerformSolidColorAnalysis( |
| 154 raster->PerformSolidColorAnalysis(gfx::Rect(35, 0, 10, 10), 0.1f, &color); | 163 gfx::Rect(35, 0, 10, 10), gfx::AxisTransform2d(0.1f, gfx::Vector2dF()), |
| 164 &color); |
| 155 EXPECT_TRUE(is_solid_color); | 165 EXPECT_TRUE(is_solid_color); |
| 156 EXPECT_EQ(color, solid_color); | 166 EXPECT_EQ(color, solid_color); |
| 157 | 167 |
| 158 color = SK_ColorTRANSPARENT; | 168 color = SK_ColorTRANSPARENT; |
| 159 is_solid_color = | 169 is_solid_color = raster->PerformSolidColorAnalysis( |
| 160 raster->PerformSolidColorAnalysis(gfx::Rect(0, 35, 10, 10), 0.1f, &color); | 170 gfx::Rect(0, 35, 10, 10), gfx::AxisTransform2d(0.1f, gfx::Vector2dF()), |
| 171 &color); |
| 161 EXPECT_TRUE(is_solid_color); | 172 EXPECT_TRUE(is_solid_color); |
| 162 EXPECT_EQ(color, solid_color); | 173 EXPECT_EQ(color, solid_color); |
| 163 | 174 |
| 164 color = SK_ColorTRANSPARENT; | 175 color = SK_ColorTRANSPARENT; |
| 165 is_solid_color = raster->PerformSolidColorAnalysis(gfx::Rect(35, 35, 10, 10), | 176 is_solid_color = raster->PerformSolidColorAnalysis( |
| 166 0.1f, &color); | 177 gfx::Rect(35, 35, 10, 10), gfx::AxisTransform2d(0.1f, gfx::Vector2dF()), |
| 178 &color); |
| 167 EXPECT_TRUE(is_solid_color); | 179 EXPECT_TRUE(is_solid_color); |
| 168 EXPECT_EQ(color, solid_color); | 180 EXPECT_EQ(color, solid_color); |
| 169 } | 181 } |
| 170 | 182 |
| 171 TEST(RasterSourceTest, AnalyzeIsSolidEmpty) { | 183 TEST(RasterSourceTest, AnalyzeIsSolidEmpty) { |
| 172 gfx::Size layer_bounds(400, 400); | 184 gfx::Size layer_bounds(400, 400); |
| 173 | 185 |
| 174 std::unique_ptr<FakeRecordingSource> recording_source = | 186 std::unique_ptr<FakeRecordingSource> recording_source = |
| 175 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds); | 187 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds); |
| 176 recording_source->Rerecord(); | 188 recording_source->Rerecord(); |
| 177 | 189 |
| 178 scoped_refptr<RasterSource> raster = | 190 scoped_refptr<RasterSource> raster = |
| 179 RasterSource::CreateFromRecordingSource(recording_source.get(), false); | 191 RasterSource::CreateFromRecordingSource(recording_source.get(), false); |
| 180 | 192 |
| 181 SkColor color = SK_ColorTRANSPARENT; | 193 SkColor color = SK_ColorTRANSPARENT; |
| 182 bool is_solid_color = | 194 bool is_solid_color = raster->PerformSolidColorAnalysis( |
| 183 raster->PerformSolidColorAnalysis(gfx::Rect(0, 0, 400, 400), 1.f, &color); | 195 gfx::Rect(0, 0, 400, 400), gfx::AxisTransform2d(0.1f, gfx::Vector2dF()), |
| 196 &color); |
| 184 | 197 |
| 185 EXPECT_TRUE(is_solid_color); | 198 EXPECT_TRUE(is_solid_color); |
| 186 EXPECT_EQ(color, SkColorSetARGB(0, 0, 0, 0)); | 199 EXPECT_EQ(color, SkColorSetARGB(0, 0, 0, 0)); |
| 187 } | 200 } |
| 188 | 201 |
| 189 TEST(RasterSourceTest, PixelRefIteratorDiscardableRefsOneTile) { | 202 TEST(RasterSourceTest, PixelRefIteratorDiscardableRefsOneTile) { |
| 190 gfx::Size layer_bounds(512, 512); | 203 gfx::Size layer_bounds(512, 512); |
| 191 | 204 |
| 192 std::unique_ptr<FakeRecordingSource> recording_source = | 205 std::unique_ptr<FakeRecordingSource> recording_source = |
| 193 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds); | 206 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds); |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 619 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 24)); | 632 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 24)); |
| 620 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(49, 24)); | 633 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(49, 24)); |
| 621 for (int x = 0; x < 49; ++x) | 634 for (int x = 0; x < 49; ++x) |
| 622 EXPECT_EQ(SK_ColorRED, bitmap.getColor(x, 12)); | 635 EXPECT_EQ(SK_ColorRED, bitmap.getColor(x, 12)); |
| 623 for (int y = 0; y < 24; ++y) | 636 for (int y = 0; y < 24; ++y) |
| 624 EXPECT_EQ(SK_ColorRED, bitmap.getColor(24, y)); | 637 EXPECT_EQ(SK_ColorRED, bitmap.getColor(24, y)); |
| 625 } | 638 } |
| 626 | 639 |
| 627 } // namespace | 640 } // namespace |
| 628 } // namespace cc | 641 } // namespace cc |
| OLD | NEW |