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

Side by Side Diff: skia/ext/pixel_ref_utils_unittest.cc

Issue 111143005: cc: Gather and lock/unlock SkDiscardablePixelRefs instead of skia::LazyPixelRefs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: s/lazy/discardable/ to fix cc_unittests Created 6 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « skia/ext/pixel_ref_utils.cc ('k') | skia/skia_chrome.gypi » ('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 "base/compiler_specific.h" 5 #include "base/compiler_specific.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "cc/test/geometry_test_utils.h" 7 #include "cc/test/geometry_test_utils.h"
8 #include "skia/ext/lazy_pixel_ref.h" 8 #include "skia/ext/pixel_ref_utils.h"
9 #include "skia/ext/lazy_pixel_ref_utils.h"
10 #include "skia/ext/refptr.h" 9 #include "skia/ext/refptr.h"
11 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
12 #include "third_party/skia/include/core/SkBitmap.h" 11 #include "third_party/skia/include/core/SkBitmap.h"
13 #include "third_party/skia/include/core/SkCanvas.h" 12 #include "third_party/skia/include/core/SkCanvas.h"
14 #include "third_party/skia/include/core/SkFlattenableBuffers.h" 13 #include "third_party/skia/include/core/SkFlattenableBuffers.h"
14 #include "third_party/skia/include/core/SkPixelRef.h"
15 #include "third_party/skia/include/core/SkPoint.h" 15 #include "third_party/skia/include/core/SkPoint.h"
16 #include "third_party/skia/include/core/SkShader.h" 16 #include "third_party/skia/include/core/SkShader.h"
17 #include "third_party/skia/src/core/SkOrderedReadBuffer.h" 17 #include "third_party/skia/src/core/SkOrderedReadBuffer.h"
18 #include "ui/gfx/rect.h" 18 #include "ui/gfx/rect.h"
19 #include "ui/gfx/skia_util.h" 19 #include "ui/gfx/skia_util.h"
20 20
21 namespace skia { 21 namespace skia {
22 22
23 namespace { 23 namespace {
24 24
25 void CreateBitmap(gfx::Size size, const char* uri, SkBitmap* bitmap); 25 void CreateBitmap(gfx::Size size, const char* uri, SkBitmap* bitmap);
26 26
27 class TestLazyPixelRef : public skia::LazyPixelRef { 27 class TestPixelRef : public SkPixelRef {
28 public: 28 public:
29 TestLazyPixelRef(const SkImageInfo& info); 29 TestPixelRef(const SkImageInfo& info);
30 virtual ~TestLazyPixelRef(); 30 virtual ~TestPixelRef();
31 31
32 virtual SkFlattenable::Factory getFactory() const OVERRIDE; 32 virtual SkFlattenable::Factory getFactory() const OVERRIDE;
33 virtual void* onLockPixels(SkColorTable** color_table) OVERRIDE; 33 virtual void* onLockPixels(SkColorTable** color_table) OVERRIDE;
34 virtual void onUnlockPixels() OVERRIDE {} 34 virtual void onUnlockPixels() OVERRIDE {}
35 virtual bool PrepareToDecode(const PrepareParams& params) OVERRIDE;
36 virtual bool MaybeDecoded() OVERRIDE;
37 virtual SkPixelRef* deepCopy(SkBitmap::Config config, const SkIRect* subset) 35 virtual SkPixelRef* deepCopy(SkBitmap::Config config, const SkIRect* subset)
38 OVERRIDE; 36 OVERRIDE;
39 virtual void Decode() OVERRIDE {}
40 37
41 private: 38 private:
42 scoped_ptr<char[]> pixels_; 39 scoped_ptr<char[]> pixels_;
43 }; 40 };
44 41
45 class TestLazyShader : public SkShader { 42 class TestDiscardableShader : public SkShader {
46 public: 43 public:
47 TestLazyShader() { CreateBitmap(gfx::Size(50, 50), "lazy", &bitmap_); } 44 TestDiscardableShader() {
45 CreateBitmap(gfx::Size(50, 50), "discardable", &bitmap_);
46 }
48 47
49 TestLazyShader(SkFlattenableReadBuffer& flattenable_buffer) { 48 TestDiscardableShader(SkFlattenableReadBuffer& flattenable_buffer) {
50 SkOrderedReadBuffer& buffer = 49 SkOrderedReadBuffer& buffer =
51 static_cast<SkOrderedReadBuffer&>(flattenable_buffer); 50 static_cast<SkOrderedReadBuffer&>(flattenable_buffer);
52 SkReader32* reader = buffer.getReader32(); 51 SkReader32* reader = buffer.getReader32();
53 52
54 reader->skip(-4); 53 reader->skip(-4);
55 uint32_t toSkip = reader->readU32(); 54 uint32_t toSkip = reader->readU32();
56 reader->skip(toSkip); 55 reader->skip(toSkip);
57 56
58 CreateBitmap(gfx::Size(50, 50), "lazy", &bitmap_); 57 CreateBitmap(gfx::Size(50, 50), "discardable", &bitmap_);
59 } 58 }
60 59
61 virtual SkShader::BitmapType asABitmap(SkBitmap* bitmap, 60 virtual SkShader::BitmapType asABitmap(SkBitmap* bitmap,
62 SkMatrix* matrix, 61 SkMatrix* matrix,
63 TileMode xy[2]) const OVERRIDE { 62 TileMode xy[2]) const OVERRIDE {
64 if (bitmap) 63 if (bitmap)
65 *bitmap = bitmap_; 64 *bitmap = bitmap_;
66 return SkShader::kDefault_BitmapType; 65 return SkShader::kDefault_BitmapType;
67 } 66 }
68 67
69 // Pure virtual implementaiton. 68 // Pure virtual implementaiton.
70 virtual void shadeSpan(int x, int y, SkPMColor[], int count) OVERRIDE {} 69 virtual void shadeSpan(int x, int y, SkPMColor[], int count) OVERRIDE {}
71 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(TestLazyShader); 70 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(TestDiscardableShader);
72 71
73 private: 72 private:
74 SkBitmap bitmap_; 73 SkBitmap bitmap_;
75 }; 74 };
76 75
77 TestLazyPixelRef::TestLazyPixelRef(const SkImageInfo& info) 76 TestPixelRef::TestPixelRef(const SkImageInfo& info)
78 : skia::LazyPixelRef(info), 77 : SkPixelRef(info),
79 pixels_(new char[4 * info.fWidth * info.fHeight]) {} 78 pixels_(new char[4 * info.fWidth * info.fHeight]) {}
80 79
81 TestLazyPixelRef::~TestLazyPixelRef() {} 80 TestPixelRef::~TestPixelRef() {}
82 81
83 SkFlattenable::Factory TestLazyPixelRef::getFactory() const { return NULL; } 82 SkFlattenable::Factory TestPixelRef::getFactory() const { return NULL; }
84 83
85 void* TestLazyPixelRef::onLockPixels(SkColorTable** color_table) { 84 void* TestPixelRef::onLockPixels(SkColorTable** color_table) {
86 return pixels_.get(); 85 return pixels_.get();
87 } 86 }
88 87
89 bool TestLazyPixelRef::PrepareToDecode(const PrepareParams& params) { 88 SkPixelRef* TestPixelRef::deepCopy(SkBitmap::Config config,
90 return true; 89 const SkIRect* subset) {
91 }
92
93 bool TestLazyPixelRef::MaybeDecoded() {
94 return true;
95 }
96
97 SkPixelRef* TestLazyPixelRef::deepCopy(SkBitmap::Config config,
98 const SkIRect* subset) {
99 this->ref(); 90 this->ref();
100 return this; 91 return this;
101 } 92 }
102 93
103 void CreateBitmap(gfx::Size size, const char* uri, SkBitmap* bitmap) { 94 void CreateBitmap(gfx::Size size, const char* uri, SkBitmap* bitmap) {
104 const SkImageInfo info = { 95 const SkImageInfo info = {
105 size.width(), size.height(), kPMColor_SkColorType, kPremul_SkAlphaType 96 size.width(), size.height(), kPMColor_SkColorType, kPremul_SkAlphaType
106 }; 97 };
107 98 skia::RefPtr<TestPixelRef> pixel_ref =
108 skia::RefPtr<TestLazyPixelRef> lazy_pixel_ref = 99 skia::AdoptRef(new TestPixelRef(info));
109 skia::AdoptRef(new TestLazyPixelRef(info)); 100 pixel_ref->setURI(uri);
110 lazy_pixel_ref->setURI(uri);
111 101
112 bitmap->setConfig(info); 102 bitmap->setConfig(info);
113 bitmap->setPixelRef(lazy_pixel_ref.get()); 103 bitmap->setPixelRef(pixel_ref.get());
114 } 104 }
115 105
116 SkCanvas* StartRecording(SkPicture* picture, gfx::Rect layer_rect) { 106 SkCanvas* StartRecording(SkPicture* picture, gfx::Rect layer_rect) {
117 SkCanvas* canvas = picture->beginRecording( 107 SkCanvas* canvas = picture->beginRecording(
118 layer_rect.width(), 108 layer_rect.width(),
119 layer_rect.height(), 109 layer_rect.height(),
120 SkPicture::kUsePathBoundsForClip_RecordingFlag | 110 SkPicture::kUsePathBoundsForClip_RecordingFlag |
121 SkPicture::kOptimizeForClippedPlayback_RecordingFlag); 111 SkPicture::kOptimizeForClippedPlayback_RecordingFlag);
122 112
123 canvas->save(); 113 canvas->save();
124 canvas->translate(-layer_rect.x(), -layer_rect.y()); 114 canvas->translate(-layer_rect.x(), -layer_rect.y());
125 canvas->clipRect(SkRect::MakeXYWH( 115 canvas->clipRect(SkRect::MakeXYWH(
126 layer_rect.x(), layer_rect.y(), layer_rect.width(), layer_rect.height())); 116 layer_rect.x(), layer_rect.y(), layer_rect.width(), layer_rect.height()));
127 117
128 return canvas; 118 return canvas;
129 } 119 }
130 120
131 void StopRecording(SkPicture* picture, SkCanvas* canvas) { 121 void StopRecording(SkPicture* picture, SkCanvas* canvas) {
132 canvas->restore(); 122 canvas->restore();
133 picture->endRecording(); 123 picture->endRecording();
134 } 124 }
135 125
136 } // namespace 126 } // namespace
137 127
138 TEST(LazyPixelRefUtilsTest, DrawPaint) { 128 TEST(PixelRefUtilsTest, DrawPaint) {
139 gfx::Rect layer_rect(0, 0, 256, 256); 129 gfx::Rect layer_rect(0, 0, 256, 256);
140 130
141 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 131 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
142 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 132 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
143 133
144 TestLazyShader first_shader; 134 TestDiscardableShader first_shader;
145 SkPaint first_paint; 135 SkPaint first_paint;
146 first_paint.setShader(&first_shader); 136 first_paint.setShader(&first_shader);
147 137
148 TestLazyShader second_shader; 138 TestDiscardableShader second_shader;
149 SkPaint second_paint; 139 SkPaint second_paint;
150 second_paint.setShader(&second_shader); 140 second_paint.setShader(&second_shader);
151 141
152 TestLazyShader third_shader; 142 TestDiscardableShader third_shader;
153 SkPaint third_paint; 143 SkPaint third_paint;
154 third_paint.setShader(&third_shader); 144 third_paint.setShader(&third_shader);
155 145
156 canvas->drawPaint(first_paint); 146 canvas->drawPaint(first_paint);
157 canvas->clipRect(SkRect::MakeXYWH(34, 45, 56, 67)); 147 canvas->clipRect(SkRect::MakeXYWH(34, 45, 56, 67));
158 canvas->drawPaint(second_paint); 148 canvas->drawPaint(second_paint);
159 // Total clip is now (34, 45, 56, 55) 149 // Total clip is now (34, 45, 56, 55)
160 canvas->clipRect(SkRect::MakeWH(100, 100)); 150 canvas->clipRect(SkRect::MakeWH(100, 100));
161 canvas->drawPaint(third_paint); 151 canvas->drawPaint(third_paint);
162 152
163 StopRecording(picture.get(), canvas); 153 StopRecording(picture.get(), canvas);
164 154
165 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 155 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
166 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 156 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
167 157
168 EXPECT_EQ(3u, pixel_refs.size()); 158 EXPECT_EQ(3u, pixel_refs.size());
169 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 256, 256), 159 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 256, 256),
170 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 160 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
171 EXPECT_FLOAT_RECT_EQ(gfx::RectF(34, 45, 56, 67), 161 EXPECT_FLOAT_RECT_EQ(gfx::RectF(34, 45, 56, 67),
172 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 162 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
173 EXPECT_FLOAT_RECT_EQ(gfx::RectF(34, 45, 56, 55), 163 EXPECT_FLOAT_RECT_EQ(gfx::RectF(34, 45, 56, 55),
174 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 164 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
175 } 165 }
176 166
177 TEST(LazyPixelRefUtilsTest, DrawPoints) { 167 TEST(PixelRefUtilsTest, DrawPoints) {
178 gfx::Rect layer_rect(0, 0, 256, 256); 168 gfx::Rect layer_rect(0, 0, 256, 256);
179 169
180 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 170 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
181 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 171 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
182 172
183 TestLazyShader first_shader; 173 TestDiscardableShader first_shader;
184 SkPaint first_paint; 174 SkPaint first_paint;
185 first_paint.setShader(&first_shader); 175 first_paint.setShader(&first_shader);
186 176
187 TestLazyShader second_shader; 177 TestDiscardableShader second_shader;
188 SkPaint second_paint; 178 SkPaint second_paint;
189 second_paint.setShader(&second_shader); 179 second_paint.setShader(&second_shader);
190 180
191 TestLazyShader third_shader; 181 TestDiscardableShader third_shader;
192 SkPaint third_paint; 182 SkPaint third_paint;
193 third_paint.setShader(&third_shader); 183 third_paint.setShader(&third_shader);
194 184
195 SkPoint points[3]; 185 SkPoint points[3];
196 points[0].set(10, 10); 186 points[0].set(10, 10);
197 points[1].set(100, 20); 187 points[1].set(100, 20);
198 points[2].set(50, 100); 188 points[2].set(50, 100);
199 // (10, 10, 90, 90). 189 // (10, 10, 90, 90).
200 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, first_paint); 190 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, first_paint);
201 191
202 canvas->save(); 192 canvas->save();
203 193
204 canvas->clipRect(SkRect::MakeWH(50, 50)); 194 canvas->clipRect(SkRect::MakeWH(50, 50));
205 // (10, 10, 40, 40). 195 // (10, 10, 40, 40).
206 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, second_paint); 196 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, second_paint);
207 197
208 canvas->restore(); 198 canvas->restore();
209 199
210 points[0].set(50, 55); 200 points[0].set(50, 55);
211 points[1].set(50, 55); 201 points[1].set(50, 55);
212 points[2].set(200, 200); 202 points[2].set(200, 200);
213 // (50, 55, 150, 145). 203 // (50, 55, 150, 145).
214 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, third_paint); 204 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, third_paint);
215 205
216 StopRecording(picture.get(), canvas); 206 StopRecording(picture.get(), canvas);
217 207
218 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 208 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
219 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 209 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
220 210
221 EXPECT_EQ(3u, pixel_refs.size()); 211 EXPECT_EQ(3u, pixel_refs.size());
222 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 90, 90), 212 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 90, 90),
223 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 213 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
224 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 40, 40), 214 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 40, 40),
225 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 215 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
226 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 55, 150, 145), 216 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 55, 150, 145),
227 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 217 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
228 } 218 }
229 219
230 TEST(LazyPixelRefUtilsTest, DrawRect) { 220 TEST(PixelRefUtilsTest, DrawRect) {
231 gfx::Rect layer_rect(0, 0, 256, 256); 221 gfx::Rect layer_rect(0, 0, 256, 256);
232 222
233 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 223 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
234 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 224 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
235 225
236 TestLazyShader first_shader; 226 TestDiscardableShader first_shader;
237 SkPaint first_paint; 227 SkPaint first_paint;
238 first_paint.setShader(&first_shader); 228 first_paint.setShader(&first_shader);
239 229
240 TestLazyShader second_shader; 230 TestDiscardableShader second_shader;
241 SkPaint second_paint; 231 SkPaint second_paint;
242 second_paint.setShader(&second_shader); 232 second_paint.setShader(&second_shader);
243 233
244 TestLazyShader third_shader; 234 TestDiscardableShader third_shader;
245 SkPaint third_paint; 235 SkPaint third_paint;
246 third_paint.setShader(&third_shader); 236 third_paint.setShader(&third_shader);
247 237
248 // (10, 20, 30, 40). 238 // (10, 20, 30, 40).
249 canvas->drawRect(SkRect::MakeXYWH(10, 20, 30, 40), first_paint); 239 canvas->drawRect(SkRect::MakeXYWH(10, 20, 30, 40), first_paint);
250 240
251 canvas->save(); 241 canvas->save();
252 242
253 canvas->translate(5, 17); 243 canvas->translate(5, 17);
254 // (5, 50, 25, 35) 244 // (5, 50, 25, 35)
255 canvas->drawRect(SkRect::MakeXYWH(0, 33, 25, 35), second_paint); 245 canvas->drawRect(SkRect::MakeXYWH(0, 33, 25, 35), second_paint);
256 246
257 canvas->restore(); 247 canvas->restore();
258 248
259 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50)); 249 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50));
260 canvas->translate(20, 20); 250 canvas->translate(20, 20);
261 // (50, 50, 50, 50) 251 // (50, 50, 50, 50)
262 canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), third_paint); 252 canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), third_paint);
263 253
264 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 254 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
265 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 255 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
266 256
267 EXPECT_EQ(3u, pixel_refs.size()); 257 EXPECT_EQ(3u, pixel_refs.size());
268 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 20, 30, 40), 258 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 20, 30, 40),
269 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 259 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
270 EXPECT_FLOAT_RECT_EQ(gfx::RectF(5, 50, 25, 35), 260 EXPECT_FLOAT_RECT_EQ(gfx::RectF(5, 50, 25, 35),
271 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 261 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
272 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50), 262 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50),
273 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 263 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
274 } 264 }
275 265
276 TEST(LazyPixelRefUtilsTest, DrawRRect) { 266 TEST(PixelRefUtilsTest, DrawRRect) {
277 gfx::Rect layer_rect(0, 0, 256, 256); 267 gfx::Rect layer_rect(0, 0, 256, 256);
278 268
279 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 269 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
280 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 270 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
281 271
282 TestLazyShader first_shader; 272 TestDiscardableShader first_shader;
283 SkPaint first_paint; 273 SkPaint first_paint;
284 first_paint.setShader(&first_shader); 274 first_paint.setShader(&first_shader);
285 275
286 TestLazyShader second_shader; 276 TestDiscardableShader second_shader;
287 SkPaint second_paint; 277 SkPaint second_paint;
288 second_paint.setShader(&second_shader); 278 second_paint.setShader(&second_shader);
289 279
290 TestLazyShader third_shader; 280 TestDiscardableShader third_shader;
291 SkPaint third_paint; 281 SkPaint third_paint;
292 third_paint.setShader(&third_shader); 282 third_paint.setShader(&third_shader);
293 283
294 SkRRect rrect; 284 SkRRect rrect;
295 rrect.setRect(SkRect::MakeXYWH(10, 20, 30, 40)); 285 rrect.setRect(SkRect::MakeXYWH(10, 20, 30, 40));
296 286
297 // (10, 20, 30, 40). 287 // (10, 20, 30, 40).
298 canvas->drawRRect(rrect, first_paint); 288 canvas->drawRRect(rrect, first_paint);
299 289
300 canvas->save(); 290 canvas->save();
301 291
302 canvas->translate(5, 17); 292 canvas->translate(5, 17);
303 rrect.setRect(SkRect::MakeXYWH(0, 33, 25, 35)); 293 rrect.setRect(SkRect::MakeXYWH(0, 33, 25, 35));
304 // (5, 50, 25, 35) 294 // (5, 50, 25, 35)
305 canvas->drawRRect(rrect, second_paint); 295 canvas->drawRRect(rrect, second_paint);
306 296
307 canvas->restore(); 297 canvas->restore();
308 298
309 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50)); 299 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50));
310 canvas->translate(20, 20); 300 canvas->translate(20, 20);
311 rrect.setRect(SkRect::MakeXYWH(0, 0, 100, 100)); 301 rrect.setRect(SkRect::MakeXYWH(0, 0, 100, 100));
312 // (50, 50, 50, 50) 302 // (50, 50, 50, 50)
313 canvas->drawRRect(rrect, third_paint); 303 canvas->drawRRect(rrect, third_paint);
314 304
315 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 305 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
316 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 306 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
317 307
318 EXPECT_EQ(3u, pixel_refs.size()); 308 EXPECT_EQ(3u, pixel_refs.size());
319 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 20, 30, 40), 309 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 20, 30, 40),
320 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 310 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
321 EXPECT_FLOAT_RECT_EQ(gfx::RectF(5, 50, 25, 35), 311 EXPECT_FLOAT_RECT_EQ(gfx::RectF(5, 50, 25, 35),
322 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 312 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
323 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50), 313 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50),
324 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 314 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
325 } 315 }
326 316
327 TEST(LazyPixelRefUtilsTest, DrawOval) { 317 TEST(PixelRefUtilsTest, DrawOval) {
328 gfx::Rect layer_rect(0, 0, 256, 256); 318 gfx::Rect layer_rect(0, 0, 256, 256);
329 319
330 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 320 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
331 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 321 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
332 322
333 TestLazyShader first_shader; 323 TestDiscardableShader first_shader;
334 SkPaint first_paint; 324 SkPaint first_paint;
335 first_paint.setShader(&first_shader); 325 first_paint.setShader(&first_shader);
336 326
337 TestLazyShader second_shader; 327 TestDiscardableShader second_shader;
338 SkPaint second_paint; 328 SkPaint second_paint;
339 second_paint.setShader(&second_shader); 329 second_paint.setShader(&second_shader);
340 330
341 TestLazyShader third_shader; 331 TestDiscardableShader third_shader;
342 SkPaint third_paint; 332 SkPaint third_paint;
343 third_paint.setShader(&third_shader); 333 third_paint.setShader(&third_shader);
344 334
345 canvas->save(); 335 canvas->save();
346 336
347 canvas->scale(2, 0.5); 337 canvas->scale(2, 0.5);
348 // (20, 10, 60, 20). 338 // (20, 10, 60, 20).
349 canvas->drawOval(SkRect::MakeXYWH(10, 20, 30, 40), first_paint); 339 canvas->drawOval(SkRect::MakeXYWH(10, 20, 30, 40), first_paint);
350 340
351 canvas->restore(); 341 canvas->restore();
352 canvas->save(); 342 canvas->save();
353 343
354 canvas->translate(1, 2); 344 canvas->translate(1, 2);
355 // (1, 35, 25, 35) 345 // (1, 35, 25, 35)
356 canvas->drawRect(SkRect::MakeXYWH(0, 33, 25, 35), second_paint); 346 canvas->drawRect(SkRect::MakeXYWH(0, 33, 25, 35), second_paint);
357 347
358 canvas->restore(); 348 canvas->restore();
359 349
360 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50)); 350 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50));
361 canvas->translate(20, 20); 351 canvas->translate(20, 20);
362 // (50, 50, 50, 50) 352 // (50, 50, 50, 50)
363 canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), third_paint); 353 canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), third_paint);
364 354
365 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 355 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
366 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 356 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
367 357
368 EXPECT_EQ(3u, pixel_refs.size()); 358 EXPECT_EQ(3u, pixel_refs.size());
369 EXPECT_FLOAT_RECT_EQ(gfx::RectF(20, 10, 60, 20), 359 EXPECT_FLOAT_RECT_EQ(gfx::RectF(20, 10, 60, 20),
370 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 360 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
371 EXPECT_FLOAT_RECT_EQ(gfx::RectF(1, 35, 25, 35), 361 EXPECT_FLOAT_RECT_EQ(gfx::RectF(1, 35, 25, 35),
372 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 362 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
373 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50), 363 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50),
374 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 364 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
375 } 365 }
376 366
377 TEST(LazyPixelRefUtilsTest, DrawPath) { 367 TEST(PixelRefUtilsTest, DrawPath) {
378 gfx::Rect layer_rect(0, 0, 256, 256); 368 gfx::Rect layer_rect(0, 0, 256, 256);
379 369
380 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 370 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
381 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 371 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
382 372
383 TestLazyShader first_shader; 373 TestDiscardableShader first_shader;
384 SkPaint first_paint; 374 SkPaint first_paint;
385 first_paint.setShader(&first_shader); 375 first_paint.setShader(&first_shader);
386 376
387 TestLazyShader second_shader; 377 TestDiscardableShader second_shader;
388 SkPaint second_paint; 378 SkPaint second_paint;
389 second_paint.setShader(&second_shader); 379 second_paint.setShader(&second_shader);
390 380
391 SkPath path; 381 SkPath path;
392 path.moveTo(12, 13); 382 path.moveTo(12, 13);
393 path.lineTo(50, 50); 383 path.lineTo(50, 50);
394 path.lineTo(22, 101); 384 path.lineTo(22, 101);
395 385
396 // (12, 13, 38, 88). 386 // (12, 13, 38, 88).
397 canvas->drawPath(path, first_paint); 387 canvas->drawPath(path, first_paint);
398 388
399 canvas->save(); 389 canvas->save();
400 canvas->clipRect(SkRect::MakeWH(50, 50)); 390 canvas->clipRect(SkRect::MakeWH(50, 50));
401 391
402 // (12, 13, 38, 37). 392 // (12, 13, 38, 37).
403 canvas->drawPath(path, second_paint); 393 canvas->drawPath(path, second_paint);
404 394
405 canvas->restore(); 395 canvas->restore();
406 396
407 StopRecording(picture.get(), canvas); 397 StopRecording(picture.get(), canvas);
408 398
409 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 399 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
410 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 400 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
411 401
412 EXPECT_EQ(2u, pixel_refs.size()); 402 EXPECT_EQ(2u, pixel_refs.size());
413 EXPECT_FLOAT_RECT_EQ(gfx::RectF(12, 13, 38, 88), 403 EXPECT_FLOAT_RECT_EQ(gfx::RectF(12, 13, 38, 88),
414 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 404 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
415 EXPECT_FLOAT_RECT_EQ(gfx::RectF(12, 13, 38, 37), 405 EXPECT_FLOAT_RECT_EQ(gfx::RectF(12, 13, 38, 37),
416 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 406 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
417 } 407 }
418 408
419 TEST(LazyPixelRefUtilsTest, DrawBitmap) { 409 TEST(PixelRefUtilsTest, DrawBitmap) {
420 gfx::Rect layer_rect(0, 0, 256, 256); 410 gfx::Rect layer_rect(0, 0, 256, 256);
421 411
422 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 412 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
423 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 413 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
424 414
425 SkBitmap first; 415 SkBitmap first;
426 CreateBitmap(gfx::Size(50, 50), "lazy", &first); 416 CreateBitmap(gfx::Size(50, 50), "discardable", &first);
427 SkBitmap second; 417 SkBitmap second;
428 CreateBitmap(gfx::Size(50, 50), "lazy", &second); 418 CreateBitmap(gfx::Size(50, 50), "discardable", &second);
429 SkBitmap third; 419 SkBitmap third;
430 CreateBitmap(gfx::Size(50, 50), "lazy", &third); 420 CreateBitmap(gfx::Size(50, 50), "discardable", &third);
431 SkBitmap fourth; 421 SkBitmap fourth;
432 CreateBitmap(gfx::Size(50, 1), "lazy", &fourth); 422 CreateBitmap(gfx::Size(50, 1), "discardable", &fourth);
433 SkBitmap fifth; 423 SkBitmap fifth;
434 CreateBitmap(gfx::Size(10, 10), "lazy", &fifth); 424 CreateBitmap(gfx::Size(10, 10), "discardable", &fifth);
435 425
436 canvas->save(); 426 canvas->save();
437 427
438 // At (0, 0). 428 // At (0, 0).
439 canvas->drawBitmap(first, 0, 0); 429 canvas->drawBitmap(first, 0, 0);
440 canvas->translate(25, 0); 430 canvas->translate(25, 0);
441 // At (25, 0). 431 // At (25, 0).
442 canvas->drawBitmap(second, 0, 0); 432 canvas->drawBitmap(second, 0, 0);
443 canvas->translate(0, 50); 433 canvas->translate(0, 50);
444 // At (50, 50). 434 // At (50, 50).
445 canvas->drawBitmap(third, 25, 0); 435 canvas->drawBitmap(third, 25, 0);
446 436
447 canvas->restore(); 437 canvas->restore();
448 canvas->save(); 438 canvas->save();
449 439
450 canvas->translate(1, 0); 440 canvas->translate(1, 0);
451 canvas->rotate(90); 441 canvas->rotate(90);
452 // At (1, 0), rotated 90 degrees 442 // At (1, 0), rotated 90 degrees
453 canvas->drawBitmap(fourth, 0, 0); 443 canvas->drawBitmap(fourth, 0, 0);
454 444
455 canvas->restore(); 445 canvas->restore();
456 446
457 canvas->scale(5, 6); 447 canvas->scale(5, 6);
458 // At (0, 0), scaled by 5 and 6 448 // At (0, 0), scaled by 5 and 6
459 canvas->drawBitmap(fifth, 0, 0); 449 canvas->drawBitmap(fifth, 0, 0);
460 450
461 StopRecording(picture.get(), canvas); 451 StopRecording(picture.get(), canvas);
462 452
463 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 453 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
464 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 454 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
465 455
466 EXPECT_EQ(5u, pixel_refs.size()); 456 EXPECT_EQ(5u, pixel_refs.size());
467 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50), 457 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50),
468 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 458 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
469 EXPECT_FLOAT_RECT_EQ(gfx::RectF(25, 0, 50, 50), 459 EXPECT_FLOAT_RECT_EQ(gfx::RectF(25, 0, 50, 50),
470 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 460 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
471 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50), 461 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50),
472 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 462 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
473 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 1, 50), 463 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 1, 50),
474 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect)); 464 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect));
475 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 60), 465 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 60),
476 gfx::SkRectToRectF(pixel_refs[4].pixel_ref_rect)); 466 gfx::SkRectToRectF(pixel_refs[4].pixel_ref_rect));
477 467
478 } 468 }
479 469
480 TEST(LazyPixelRefUtilsTest, DrawBitmapRect) { 470 TEST(PixelRefUtilsTest, DrawBitmapRect) {
481 gfx::Rect layer_rect(0, 0, 256, 256); 471 gfx::Rect layer_rect(0, 0, 256, 256);
482 472
483 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 473 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
484 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 474 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
485 475
486 SkBitmap first; 476 SkBitmap first;
487 CreateBitmap(gfx::Size(50, 50), "lazy", &first); 477 CreateBitmap(gfx::Size(50, 50), "discardable", &first);
488 SkBitmap second; 478 SkBitmap second;
489 CreateBitmap(gfx::Size(50, 50), "lazy", &second); 479 CreateBitmap(gfx::Size(50, 50), "discardable", &second);
490 SkBitmap third; 480 SkBitmap third;
491 CreateBitmap(gfx::Size(50, 50), "lazy", &third); 481 CreateBitmap(gfx::Size(50, 50), "discardable", &third);
492 482
493 TestLazyShader first_shader; 483 TestDiscardableShader first_shader;
494 SkPaint first_paint; 484 SkPaint first_paint;
495 first_paint.setShader(&first_shader); 485 first_paint.setShader(&first_shader);
496 486
497 SkPaint non_lazy_paint; 487 SkPaint non_discardable_paint;
498 488
499 canvas->save(); 489 canvas->save();
500 490
501 // (0, 0, 100, 100). 491 // (0, 0, 100, 100).
502 canvas->drawBitmapRect(first, SkRect::MakeWH(100, 100), &non_lazy_paint); 492 canvas->drawBitmapRect(
493 first, SkRect::MakeWH(100, 100), &non_discardable_paint);
503 canvas->translate(25, 0); 494 canvas->translate(25, 0);
504 // (75, 50, 10, 10). 495 // (75, 50, 10, 10).
505 canvas->drawBitmapRect( 496 canvas->drawBitmapRect(
506 second, SkRect::MakeXYWH(50, 50, 10, 10), &non_lazy_paint); 497 second, SkRect::MakeXYWH(50, 50, 10, 10), &non_discardable_paint);
507 canvas->translate(5, 50); 498 canvas->translate(5, 50);
508 // (0, 30, 100, 100). One from bitmap, one from paint. 499 // (0, 30, 100, 100). One from bitmap, one from paint.
509 canvas->drawBitmapRect( 500 canvas->drawBitmapRect(
510 third, SkRect::MakeXYWH(-30, -20, 100, 100), &first_paint); 501 third, SkRect::MakeXYWH(-30, -20, 100, 100), &first_paint);
511 502
512 canvas->restore(); 503 canvas->restore();
513 504
514 StopRecording(picture.get(), canvas); 505 StopRecording(picture.get(), canvas);
515 506
516 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 507 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
517 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 508 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
518 509
519 EXPECT_EQ(4u, pixel_refs.size()); 510 EXPECT_EQ(4u, pixel_refs.size());
520 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), 511 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100),
521 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 512 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
522 EXPECT_FLOAT_RECT_EQ(gfx::RectF(75, 50, 10, 10), 513 EXPECT_FLOAT_RECT_EQ(gfx::RectF(75, 50, 10, 10),
523 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 514 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
524 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 30, 100, 100), 515 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 30, 100, 100),
525 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 516 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
526 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 30, 100, 100), 517 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 30, 100, 100),
527 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect)); 518 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect));
528 } 519 }
529 520
530 TEST(LazyPixelRefUtilsTest, DrawSprite) { 521 TEST(PixelRefUtilsTest, DrawSprite) {
531 gfx::Rect layer_rect(0, 0, 256, 256); 522 gfx::Rect layer_rect(0, 0, 256, 256);
532 523
533 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 524 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
534 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 525 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
535 526
536 SkBitmap first; 527 SkBitmap first;
537 CreateBitmap(gfx::Size(50, 50), "lazy", &first); 528 CreateBitmap(gfx::Size(50, 50), "discardable", &first);
538 SkBitmap second; 529 SkBitmap second;
539 CreateBitmap(gfx::Size(50, 50), "lazy", &second); 530 CreateBitmap(gfx::Size(50, 50), "discardable", &second);
540 SkBitmap third; 531 SkBitmap third;
541 CreateBitmap(gfx::Size(50, 50), "lazy", &third); 532 CreateBitmap(gfx::Size(50, 50), "discardable", &third);
542 SkBitmap fourth; 533 SkBitmap fourth;
543 CreateBitmap(gfx::Size(50, 50), "lazy", &fourth); 534 CreateBitmap(gfx::Size(50, 50), "discardable", &fourth);
544 SkBitmap fifth; 535 SkBitmap fifth;
545 CreateBitmap(gfx::Size(50, 50), "lazy", &fifth); 536 CreateBitmap(gfx::Size(50, 50), "discardable", &fifth);
546 537
547 canvas->save(); 538 canvas->save();
548 539
549 // Sprites aren't affected by the current matrix. 540 // Sprites aren't affected by the current matrix.
550 541
551 // (0, 0, 50, 50). 542 // (0, 0, 50, 50).
552 canvas->drawSprite(first, 0, 0); 543 canvas->drawSprite(first, 0, 0);
553 canvas->translate(25, 0); 544 canvas->translate(25, 0);
554 // (10, 0, 50, 50). 545 // (10, 0, 50, 50).
555 canvas->drawSprite(second, 10, 0); 546 canvas->drawSprite(second, 10, 0);
556 canvas->translate(0, 50); 547 canvas->translate(0, 50);
557 // (25, 0, 50, 50). 548 // (25, 0, 50, 50).
558 canvas->drawSprite(third, 25, 0); 549 canvas->drawSprite(third, 25, 0);
559 550
560 canvas->restore(); 551 canvas->restore();
561 canvas->save(); 552 canvas->save();
562 553
563 canvas->rotate(90); 554 canvas->rotate(90);
564 // (0, 0, 50, 50). 555 // (0, 0, 50, 50).
565 canvas->drawSprite(fourth, 0, 0); 556 canvas->drawSprite(fourth, 0, 0);
566 557
567 canvas->restore(); 558 canvas->restore();
568 559
569 TestLazyShader first_shader; 560 TestDiscardableShader first_shader;
570 SkPaint first_paint; 561 SkPaint first_paint;
571 first_paint.setShader(&first_shader); 562 first_paint.setShader(&first_shader);
572 563
573 canvas->scale(5, 6); 564 canvas->scale(5, 6);
574 // (100, 100, 50, 50). 565 // (100, 100, 50, 50).
575 canvas->drawSprite(fifth, 100, 100, &first_paint); 566 canvas->drawSprite(fifth, 100, 100, &first_paint);
576 567
577 StopRecording(picture.get(), canvas); 568 StopRecording(picture.get(), canvas);
578 569
579 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 570 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
580 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 571 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
581 572
582 EXPECT_EQ(6u, pixel_refs.size()); 573 EXPECT_EQ(6u, pixel_refs.size());
583 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50), 574 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50),
584 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 575 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
585 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 0, 50, 50), 576 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 0, 50, 50),
586 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 577 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
587 EXPECT_FLOAT_RECT_EQ(gfx::RectF(25, 0, 50, 50), 578 EXPECT_FLOAT_RECT_EQ(gfx::RectF(25, 0, 50, 50),
588 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 579 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
589 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50), 580 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50),
590 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect)); 581 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect));
591 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100, 100, 50, 50), 582 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100, 100, 50, 50),
592 gfx::SkRectToRectF(pixel_refs[4].pixel_ref_rect)); 583 gfx::SkRectToRectF(pixel_refs[4].pixel_ref_rect));
593 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100, 100, 50, 50), 584 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100, 100, 50, 50),
594 gfx::SkRectToRectF(pixel_refs[5].pixel_ref_rect)); 585 gfx::SkRectToRectF(pixel_refs[5].pixel_ref_rect));
595 } 586 }
596 587
597 TEST(LazyPixelRefUtilsTest, DrawText) { 588 TEST(PixelRefUtilsTest, DrawText) {
598 gfx::Rect layer_rect(0, 0, 256, 256); 589 gfx::Rect layer_rect(0, 0, 256, 256);
599 590
600 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 591 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
601 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 592 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
602 593
603 TestLazyShader first_shader; 594 TestDiscardableShader first_shader;
604 SkPaint first_paint; 595 SkPaint first_paint;
605 first_paint.setShader(&first_shader); 596 first_paint.setShader(&first_shader);
606 597
607 SkPoint points[4]; 598 SkPoint points[4];
608 points[0].set(10, 50); 599 points[0].set(10, 50);
609 points[1].set(20, 50); 600 points[1].set(20, 50);
610 points[2].set(30, 50); 601 points[2].set(30, 50);
611 points[3].set(40, 50); 602 points[3].set(40, 50);
612 603
613 SkPath path; 604 SkPath path;
614 path.moveTo(10, 50); 605 path.moveTo(10, 50);
615 path.lineTo(20, 50); 606 path.lineTo(20, 50);
616 path.lineTo(30, 50); 607 path.lineTo(30, 50);
617 path.lineTo(40, 50); 608 path.lineTo(40, 50);
618 path.lineTo(50, 50); 609 path.lineTo(50, 50);
619 610
620 canvas->drawText("text", 4, 50, 50, first_paint); 611 canvas->drawText("text", 4, 50, 50, first_paint);
621 canvas->drawPosText("text", 4, points, first_paint); 612 canvas->drawPosText("text", 4, points, first_paint);
622 canvas->drawTextOnPath("text", 4, path, NULL, first_paint); 613 canvas->drawTextOnPath("text", 4, path, NULL, first_paint);
623 614
624 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 615 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
625 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 616 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
626 617
627 EXPECT_EQ(3u, pixel_refs.size()); 618 EXPECT_EQ(3u, pixel_refs.size());
628 } 619 }
629 620
630 TEST(LazyPixelRefUtilsTest, DrawVertices) { 621 TEST(PixelRefUtilsTest, DrawVertices) {
631 gfx::Rect layer_rect(0, 0, 256, 256); 622 gfx::Rect layer_rect(0, 0, 256, 256);
632 623
633 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 624 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
634 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 625 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
635 626
636 TestLazyShader first_shader; 627 TestDiscardableShader first_shader;
637 SkPaint first_paint; 628 SkPaint first_paint;
638 first_paint.setShader(&first_shader); 629 first_paint.setShader(&first_shader);
639 630
640 TestLazyShader second_shader; 631 TestDiscardableShader second_shader;
641 SkPaint second_paint; 632 SkPaint second_paint;
642 second_paint.setShader(&second_shader); 633 second_paint.setShader(&second_shader);
643 634
644 TestLazyShader third_shader; 635 TestDiscardableShader third_shader;
645 SkPaint third_paint; 636 SkPaint third_paint;
646 third_paint.setShader(&third_shader); 637 third_paint.setShader(&third_shader);
647 638
648 SkPoint points[3]; 639 SkPoint points[3];
649 SkColor colors[3]; 640 SkColor colors[3];
650 uint16_t indecies[3] = {0, 1, 2}; 641 uint16_t indecies[3] = {0, 1, 2};
651 points[0].set(10, 10); 642 points[0].set(10, 10);
652 points[1].set(100, 20); 643 points[1].set(100, 20);
653 points[2].set(50, 100); 644 points[2].set(50, 100);
654 // (10, 10, 90, 90). 645 // (10, 10, 90, 90).
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 points, 678 points,
688 points, 679 points,
689 colors, 680 colors,
690 NULL, 681 NULL,
691 indecies, 682 indecies,
692 3, 683 3,
693 third_paint); 684 third_paint);
694 685
695 StopRecording(picture.get(), canvas); 686 StopRecording(picture.get(), canvas);
696 687
697 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 688 std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
698 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 689 skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
699 690
700 EXPECT_EQ(3u, pixel_refs.size()); 691 EXPECT_EQ(3u, pixel_refs.size());
701 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 90, 90), 692 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 90, 90),
702 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 693 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
703 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 40, 40), 694 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 40, 40),
704 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 695 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
705 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 55, 150, 145), 696 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 55, 150, 145),
706 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 697 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
707 } 698 }
708 699
709 } // namespace skia 700 } // namespace skia
OLDNEW
« no previous file with comments | « skia/ext/pixel_ref_utils.cc ('k') | skia/skia_chrome.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698