Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(234)

Side by Side Diff: cc/raster/raster_source_unittest.cc

Issue 2877483003: Implements core logic for Pixel Canvas (Closed)
Patch Set: Adds RasterSource Unittest Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698