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

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

Issue 2877483003: Implements core logic for Pixel Canvas (Closed)
Patch Set: Resolving comments and sync with ToT Created 3 years, 4 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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 EXPECT_TRUE(is_solid_color); 88 EXPECT_TRUE(is_solid_color);
89 EXPECT_EQ(solid_color, color); 89 EXPECT_EQ(solid_color, color);
90 90
91 color = SK_ColorTRANSPARENT; 91 color = SK_ColorTRANSPARENT;
92 is_solid_color = 92 is_solid_color =
93 raster->PerformSolidColorAnalysis(gfx::Rect(350, 350, 100, 100), &color); 93 raster->PerformSolidColorAnalysis(gfx::Rect(350, 350, 100, 100), &color);
94 EXPECT_TRUE(is_solid_color); 94 EXPECT_TRUE(is_solid_color);
95 EXPECT_EQ(solid_color, color); 95 EXPECT_EQ(solid_color, color);
96 } 96 }
97 97
98 TEST(RasterSourceTest, AnalyzeIsSolidScaled) {
99 gfx::Size layer_bounds(400, 400);
100 const std::vector<float> recording_scales = {1.25f, 1.33f, 1.5f, 1.6f,
101 1.66f, 2.f, 2.25f, 2.5f};
102 for (float recording_scale : recording_scales) {
103 std::unique_ptr<FakeRecordingSource> recording_source =
104 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds);
105 recording_source->SetRecordingScaleFactor(recording_scale);
106
107 PaintFlags solid_flags;
108 SkColor solid_color = SkColorSetARGB(255, 12, 23, 34);
109 solid_flags.setColor(solid_color);
110
111 SkColor non_solid_color = SkColorSetARGB(128, 45, 56, 67);
112 SkColor color = SK_ColorTRANSPARENT;
113 PaintFlags non_solid_flags;
114 bool is_solid_color = false;
115 non_solid_flags.setColor(non_solid_color);
116
117 recording_source->add_draw_rect_with_flags(
118 gfx::ScaleToEnclosingRect(gfx::Rect(layer_bounds), recording_scale),
119 solid_flags);
120 recording_source->Rerecord();
121
122 scoped_refptr<RasterSource> raster = recording_source->CreateRasterSource();
123
124 // Ensure everything is solid.
125 for (int y = 0; y <= 300; y += 100) {
126 for (int x = 0; x <= 300; x += 100) {
127 gfx::Rect rect(x, y, 100, 100);
128 is_solid_color = raster->PerformSolidColorAnalysis(rect, &color);
129 EXPECT_TRUE(is_solid_color)
130 << rect.ToString() << " recording_scale: " << recording_scale;
131 EXPECT_EQ(solid_color, color)
132 << rect.ToString() << " recording_scale: " << recording_scale;
133 }
134 }
135
136 // Add one non-solid pixel and recreate the raster source.
137 recording_source->add_draw_rect_with_flags(
138 gfx::Rect(std::round(50 * recording_scale),
139 std::round(50 * recording_scale), 1, 1),
140 non_solid_flags);
141 recording_source->Rerecord();
142 raster = recording_source->CreateRasterSource();
143
144 color = SK_ColorTRANSPARENT;
145 is_solid_color =
146 raster->PerformSolidColorAnalysis(gfx::Rect(0, 0, 100, 100), &color);
147 EXPECT_FALSE(is_solid_color) << " recording_scale: " << recording_scale;
148
149 color = SK_ColorTRANSPARENT;
150 is_solid_color =
151 raster->PerformSolidColorAnalysis(gfx::Rect(0, 0, 51, 51), &color);
152 EXPECT_FALSE(is_solid_color) << " recording_scale: " << recording_scale;
153
154 color = SK_ColorTRANSPARENT;
155 is_solid_color =
156 raster->PerformSolidColorAnalysis(gfx::Rect(51, 0, 100, 100), &color);
157 EXPECT_TRUE(is_solid_color) << " recording_scale: " << recording_scale;
158 EXPECT_EQ(solid_color, color) << " recording_scale: " << recording_scale;
159
160 // Boundaries should be clipped.
161 color = SK_ColorTRANSPARENT;
162 is_solid_color =
163 raster->PerformSolidColorAnalysis(gfx::Rect(350, 0, 100, 100), &color);
164 EXPECT_TRUE(is_solid_color) << " recording_scale: " << recording_scale;
165 EXPECT_EQ(solid_color, color) << " recording_scale: " << recording_scale;
166
167 color = SK_ColorTRANSPARENT;
168 is_solid_color =
169 raster->PerformSolidColorAnalysis(gfx::Rect(0, 350, 100, 100), &color);
170 EXPECT_TRUE(is_solid_color) << " recording_scale: " << recording_scale;
171 EXPECT_EQ(solid_color, color) << " recording_scale: " << recording_scale;
172
173 color = SK_ColorTRANSPARENT;
174 is_solid_color = raster->PerformSolidColorAnalysis(
175 gfx::Rect(350, 350, 100, 100), &color);
176 EXPECT_TRUE(is_solid_color) << " recording_scale: " << recording_scale;
177 EXPECT_EQ(solid_color, color) << " recording_scale: " << recording_scale;
178 }
179 }
180
98 TEST(RasterSourceTest, PixelRefIteratorDiscardableRefsOneTile) { 181 TEST(RasterSourceTest, PixelRefIteratorDiscardableRefsOneTile) {
99 gfx::Size layer_bounds(512, 512); 182 gfx::Size layer_bounds(512, 512);
100 183
101 std::unique_ptr<FakeRecordingSource> recording_source = 184 std::unique_ptr<FakeRecordingSource> recording_source =
102 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds); 185 FakeRecordingSource::CreateFilledRecordingSource(layer_bounds);
103 186
104 sk_sp<SkImage> discardable_image[2][2]; 187 sk_sp<SkImage> discardable_image[2][2];
105 discardable_image[0][0] = CreateDiscardableImage(gfx::Size(32, 32)); 188 discardable_image[0][0] = CreateDiscardableImage(gfx::Size(32, 32));
106 discardable_image[0][1] = CreateDiscardableImage(gfx::Size(32, 32)); 189 discardable_image[0][1] = CreateDiscardableImage(gfx::Size(32, 32));
107 discardable_image[1][1] = CreateDiscardableImage(gfx::Size(32, 32)); 190 discardable_image[1][1] = CreateDiscardableImage(gfx::Size(32, 32));
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 24)); 602 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 24));
520 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(49, 24)); 603 EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(49, 24));
521 for (int x = 0; x < 49; ++x) 604 for (int x = 0; x < 49; ++x)
522 EXPECT_EQ(SK_ColorRED, bitmap.getColor(x, 12)); 605 EXPECT_EQ(SK_ColorRED, bitmap.getColor(x, 12));
523 for (int y = 0; y < 24; ++y) 606 for (int y = 0; y < 24; ++y)
524 EXPECT_EQ(SK_ColorRED, bitmap.getColor(24, y)); 607 EXPECT_EQ(SK_ColorRED, bitmap.getColor(24, y));
525 } 608 }
526 609
527 } // namespace 610 } // namespace
528 } // namespace cc 611 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698