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

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

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

Powered by Google App Engine
This is Rietveld 408576698