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

Side by Side Diff: Source/web/tests/GraphicsContextTest.cpp

Issue 204353005: Remove use of SkBitmap::Config (deprecated) from Source/web/tests/. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 9 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 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN Y 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN Y
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN Y 16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN Y
17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O N 19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O N
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */ 23 */
24 24
25 #include "config.h" 25 #include "config.h"
26 26
27 #include "platform/graphics/GraphicsContext.h" 27 #include "platform/graphics/GraphicsContext.h"
28 28
29 #include "SkCanvas.h"
30 #include "platform/graphics/BitmapImage.h" 29 #include "platform/graphics/BitmapImage.h"
31 #include "platform/graphics/DisplayList.h" 30 #include "platform/graphics/DisplayList.h"
32 #include "platform/graphics/ImageBuffer.h" 31 #include "platform/graphics/ImageBuffer.h"
33 #include "platform/graphics/skia/NativeImageSkia.h" 32 #include "platform/graphics/skia/NativeImageSkia.h"
34 #include "third_party/skia/include/core/SkBitmapDevice.h" 33 #include "third_party/skia/include/core/SkBitmap.h"
34 #include "third_party/skia/include/core/SkCanvas.h"
35 #include <gtest/gtest.h> 35 #include <gtest/gtest.h>
36 36
37 using namespace WebCore; 37 using namespace WebCore;
38 38
39 namespace { 39 namespace {
40 40
41 #define EXPECT_EQ_RECT(a, b) \ 41 #define EXPECT_EQ_RECT(a, b) \
42 EXPECT_EQ(a.x(), b.x()); \ 42 EXPECT_EQ(a.x(), b.x()); \
43 EXPECT_EQ(a.y(), b.y()); \ 43 EXPECT_EQ(a.y(), b.y()); \
44 EXPECT_EQ(a.width(), b.width()); \ 44 EXPECT_EQ(a.width(), b.width()); \
(...skipping 16 matching lines...) Expand all
61 for (int x = 0; x < bitmap.width(); ++x) { \ 61 for (int x = 0; x < bitmap.width(); ++x) { \
62 int alpha = *bitmap.getAddr32(x, y) >> 24; \ 62 int alpha = *bitmap.getAddr32(x, y) >> 24; \
63 bool opaque = opaqueRect.contains(x, y); \ 63 bool opaque = opaqueRect.contains(x, y); \
64 EXPECT_EQ(opaque, alpha == 255); \ 64 EXPECT_EQ(opaque, alpha == 255); \
65 } \ 65 } \
66 } 66 }
67 67
68 TEST(GraphicsContextTest, trackOpaqueTest) 68 TEST(GraphicsContextTest, trackOpaqueTest)
69 { 69 {
70 SkBitmap bitmap; 70 SkBitmap bitmap;
71 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 71 ASSERT_TRUE(bitmap.allocN32Pixels(400, 400));
72 bitmap.allocPixels();
73 bitmap.eraseColor(0); 72 bitmap.eraseColor(0);
74 SkCanvas canvas(bitmap); 73 SkCanvas canvas(bitmap);
75 74
76 GraphicsContext context(&canvas); 75 GraphicsContext context(&canvas);
77 context.setTrackOpaqueRegion(true); 76 context.setTrackOpaqueRegion(true);
78 77
79 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 78 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
80 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 79 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
81 80
82 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver); 81 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 119 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
121 120
122 context.fillRect(FloatRect(10, 10, 390, 50), opaque, CompositeSourceOver); 121 context.fillRect(FloatRect(10, 10, 390, 50), opaque, CompositeSourceOver);
123 EXPECT_EQ_RECT(IntRect(30, 10, 290, 310), context.opaqueRegion().asRect()); 122 EXPECT_EQ_RECT(IntRect(30, 10, 290, 310), context.opaqueRegion().asRect());
124 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 123 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
125 } 124 }
126 125
127 TEST(GraphicsContextTest, trackOpaqueClipTest) 126 TEST(GraphicsContextTest, trackOpaqueClipTest)
128 { 127 {
129 SkBitmap bitmap; 128 SkBitmap bitmap;
130 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 129 ASSERT_TRUE(bitmap.allocN32Pixels(400, 400));
131 bitmap.allocPixels();
132 SkCanvas canvas(bitmap); 130 SkCanvas canvas(bitmap);
133 131
134 GraphicsContext context(&canvas); 132 GraphicsContext context(&canvas);
135 context.setTrackOpaqueRegion(true); 133 context.setTrackOpaqueRegion(true);
136 134
137 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 135 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
138 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 136 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
139 137
140 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver); 138 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
141 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 139 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 context.clipOut(IntRect(30, 30, 10, 10)); 213 context.clipOut(IntRect(30, 30, 10, 10));
216 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver); 214 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
217 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 215 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
218 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 216 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
219 context.restore(); 217 context.restore();
220 } 218 }
221 219
222 TEST(GraphicsContextTest, trackImageMask) 220 TEST(GraphicsContextTest, trackImageMask)
223 { 221 {
224 SkBitmap bitmap; 222 SkBitmap bitmap;
225 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 223 ASSERT_TRUE(bitmap.allocN32Pixels(400, 400));
226 bitmap.allocPixels();
227 bitmap.eraseColor(0); 224 bitmap.eraseColor(0);
228 SkCanvas canvas(bitmap); 225 SkCanvas canvas(bitmap);
229 226
230 GraphicsContext context(&canvas); 227 GraphicsContext context(&canvas);
231 context.setTrackOpaqueRegion(true); 228 context.setTrackOpaqueRegion(true);
232 229
233 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 230 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
234 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 231 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
235 232
236 // Image masks are done by drawing a bitmap into a transparency layer that u ses DstIn to mask 233 // Image masks are done by drawing a bitmap into a transparency layer that u ses DstIn to mask
(...skipping 16 matching lines...) Expand all
253 context.endLayer(); 250 context.endLayer();
254 context.endLayer(); 251 context.endLayer();
255 252
256 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 253 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
257 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 254 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
258 } 255 }
259 256
260 TEST(GraphicsContextTest, trackImageMaskWithOpaqueRect) 257 TEST(GraphicsContextTest, trackImageMaskWithOpaqueRect)
261 { 258 {
262 SkBitmap bitmap; 259 SkBitmap bitmap;
263 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 260 ASSERT_TRUE(bitmap.allocN32Pixels(400, 400));
264 bitmap.allocPixels();
265 bitmap.eraseColor(0); 261 bitmap.eraseColor(0);
266 SkCanvas canvas(bitmap); 262 SkCanvas canvas(bitmap);
267 263
268 GraphicsContext context(&canvas); 264 GraphicsContext context(&canvas);
269 context.setTrackOpaqueRegion(true); 265 context.setTrackOpaqueRegion(true);
270 266
271 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 267 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
272 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 268 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
273 269
274 // Image masks are done by drawing a bitmap into a transparency layer that u ses DstIn to mask 270 // Image masks are done by drawing a bitmap into a transparency layer that u ses DstIn to mask
(...skipping 19 matching lines...) Expand all
294 context.endLayer(); 290 context.endLayer();
295 context.endLayer(); 291 context.endLayer();
296 292
297 EXPECT_EQ_RECT(IntRect(12, 12, 3, 3), context.opaqueRegion().asRect()); 293 EXPECT_EQ_RECT(IntRect(12, 12, 3, 3), context.opaqueRegion().asRect());
298 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 294 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
299 } 295 }
300 296
301 TEST(GraphicsContextTest, trackOpaqueJoinTest) 297 TEST(GraphicsContextTest, trackOpaqueJoinTest)
302 { 298 {
303 SkBitmap bitmap; 299 SkBitmap bitmap;
304 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 300 ASSERT_TRUE(bitmap.allocN32Pixels(400, 400));
305 bitmap.allocPixels();
306 SkCanvas canvas(bitmap); 301 SkCanvas canvas(bitmap);
307 302
308 GraphicsContext context(&canvas); 303 GraphicsContext context(&canvas);
309 context.setTrackOpaqueRegion(true); 304 context.setTrackOpaqueRegion(true);
310 305
311 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 306 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
312 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 307 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
313 308
314 context.fillRect(FloatRect(20, 20, 10, 10), opaque, CompositeSourceOver); 309 context.fillRect(FloatRect(20, 20, 10, 10), opaque, CompositeSourceOver);
315 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect()); 310 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 347
353 // Does join 348 // Does join
354 context.fillRect(FloatRect(10, 10, 30, 10), opaque, CompositeSourceOver); 349 context.fillRect(FloatRect(10, 10, 30, 10), opaque, CompositeSourceOver);
355 EXPECT_EQ_RECT(IntRect(10, 10, 30, 30), context.opaqueRegion().asRect()); 350 EXPECT_EQ_RECT(IntRect(10, 10, 30, 30), context.opaqueRegion().asRect());
356 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 351 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
357 } 352 }
358 353
359 TEST(GraphicsContextTest, trackOpaqueLineTest) 354 TEST(GraphicsContextTest, trackOpaqueLineTest)
360 { 355 {
361 SkBitmap bitmap; 356 SkBitmap bitmap;
362 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 357 ASSERT_TRUE(bitmap.allocN32Pixels(200, 200));
363 bitmap.allocPixels();
364 bitmap.eraseColor(0); 358 bitmap.eraseColor(0);
365 SkCanvas canvas(bitmap); 359 SkCanvas canvas(bitmap);
366 360
367 GraphicsContext context(&canvas); 361 GraphicsContext context(&canvas);
368 context.setTrackOpaqueRegion(true); 362 context.setTrackOpaqueRegion(true);
369 363
370 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 364 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
371 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 365 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
372 366
373 context.setShouldAntialias(false); 367 context.setShouldAntialias(false);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 context.setStrokeColor(alpha); 441 context.setStrokeColor(alpha);
448 context.drawLine(IntPoint(0, 11), IntPoint(100, 11)); 442 context.drawLine(IntPoint(0, 11), IntPoint(100, 11));
449 context.restore(); 443 context.restore();
450 EXPECT_EQ_RECT(IntRect(10, 14, 90, 86), context.opaqueRegion().asRect()); 444 EXPECT_EQ_RECT(IntRect(10, 14, 90, 86), context.opaqueRegion().asRect());
451 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 445 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
452 } 446 }
453 447
454 TEST(GraphicsContextTest, trackOpaquePathTest) 448 TEST(GraphicsContextTest, trackOpaquePathTest)
455 { 449 {
456 SkBitmap bitmap; 450 SkBitmap bitmap;
457 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 451 ASSERT_TRUE(bitmap.allocN32Pixels(200, 200));
458 bitmap.allocPixels();
459 SkCanvas canvas(bitmap); 452 SkCanvas canvas(bitmap);
460 453
461 GraphicsContext context(&canvas); 454 GraphicsContext context(&canvas);
462 context.setTrackOpaqueRegion(true); 455 context.setTrackOpaqueRegion(true);
463 456
464 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 457 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
465 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 458 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
466 459
467 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver); 460 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
468 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 461 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 path.addLineTo(FloatPoint(100, 10)); 499 path.addLineTo(FloatPoint(100, 10));
507 context.fillPath(path); 500 context.fillPath(path);
508 EXPECT_EQ_RECT(IntRect(10, 14, 90, 86), context.opaqueRegion().asRect()); 501 EXPECT_EQ_RECT(IntRect(10, 14, 90, 86), context.opaqueRegion().asRect());
509 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 502 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
510 path.clear(); 503 path.clear();
511 } 504 }
512 505
513 TEST(GraphicsContextTest, trackOpaqueImageTest) 506 TEST(GraphicsContextTest, trackOpaqueImageTest)
514 { 507 {
515 SkBitmap bitmap; 508 SkBitmap bitmap;
516 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 509 ASSERT_TRUE(bitmap.allocN32Pixels(200, 200));
517 bitmap.allocPixels();
518 SkCanvas canvas(bitmap); 510 SkCanvas canvas(bitmap);
519 511
520 GraphicsContext context(&canvas); 512 GraphicsContext context(&canvas);
521 context.setTrackOpaqueRegion(true); 513 context.setTrackOpaqueRegion(true);
522 514
523 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 515 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
524 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 516 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
525 517
526 SkBitmap opaqueBitmap; 518 SkBitmap opaqueBitmap;
527 opaqueBitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10, 0, kOpaque_SkAlp haType); 519 ASSERT_TRUE(opaqueBitmap.allocN32Pixels(10, 10, true /* opaque */));
528 opaqueBitmap.allocPixels();
529 520
530 for (int y = 0; y < opaqueBitmap.height(); ++y) 521 for (int y = 0; y < opaqueBitmap.height(); ++y)
531 for (int x = 0; x < opaqueBitmap.width(); ++x) 522 for (int x = 0; x < opaqueBitmap.width(); ++x)
532 *opaqueBitmap.getAddr32(x, y) = 0xFFFFFFFF; 523 *opaqueBitmap.getAddr32(x, y) = 0xFFFFFFFF;
533 RefPtr<BitmapImage> opaqueImage = BitmapImage::create(NativeImageSkia::creat e(opaqueBitmap)); 524 RefPtr<BitmapImage> opaqueImage = BitmapImage::create(NativeImageSkia::creat e(opaqueBitmap));
534 EXPECT_TRUE(opaqueImage->currentFrameKnownToBeOpaque()); 525 EXPECT_TRUE(opaqueImage->currentFrameKnownToBeOpaque());
535 526
536 SkBitmap alphaBitmap; 527 SkBitmap alphaBitmap;
537 alphaBitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10, 0, kPremul_SkAlph aType); 528 ASSERT_TRUE(alphaBitmap.allocN32Pixels(10, 10));
538 alphaBitmap.allocPixels();
539 529
540 for (int y = 0; y < alphaBitmap.height(); ++y) 530 for (int y = 0; y < alphaBitmap.height(); ++y)
541 for (int x = 0; x < alphaBitmap.width(); ++x) 531 for (int x = 0; x < alphaBitmap.width(); ++x)
542 *alphaBitmap.getAddr32(x, y) = 0x00000000; 532 *alphaBitmap.getAddr32(x, y) = 0x00000000;
543 RefPtr<BitmapImage> alphaImage = BitmapImage::create(NativeImageSkia::create (alphaBitmap)); 533 RefPtr<BitmapImage> alphaImage = BitmapImage::create(NativeImageSkia::create (alphaBitmap));
544 EXPECT_FALSE(alphaImage->currentFrameKnownToBeOpaque()); 534 EXPECT_FALSE(alphaImage->currentFrameKnownToBeOpaque());
545 535
546 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver); 536 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver);
547 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 537 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
548 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 538 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 context.setAlphaAsFloat(0.5); 581 context.setAlphaAsFloat(0.5);
592 context.drawImage(opaqueImage.get(), IntPoint(15, 25), CompositeSourceIn); 582 context.drawImage(opaqueImage.get(), IntPoint(15, 25), CompositeSourceIn);
593 context.restore(); 583 context.restore();
594 EXPECT_EQ_RECT(IntRect(25, 10, 75, 90), context.opaqueRegion().asRect()); 584 EXPECT_EQ_RECT(IntRect(25, 10, 75, 90), context.opaqueRegion().asRect());
595 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 585 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
596 } 586 }
597 587
598 TEST(GraphicsContextTest, trackOpaqueOvalTest) 588 TEST(GraphicsContextTest, trackOpaqueOvalTest)
599 { 589 {
600 SkBitmap bitmap; 590 SkBitmap bitmap;
601 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 591 ASSERT_TRUE(bitmap.allocN32Pixels(200, 200));
602 bitmap.allocPixels();
603 bitmap.eraseColor(0); 592 bitmap.eraseColor(0);
604 SkCanvas canvas(bitmap); 593 SkCanvas canvas(bitmap);
605 594
606 GraphicsContext context(&canvas); 595 GraphicsContext context(&canvas);
607 context.setTrackOpaqueRegion(true); 596 context.setTrackOpaqueRegion(true);
608 597
609 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 598 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
610 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 599 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
611 600
612 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 601 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
(...skipping 30 matching lines...) Expand all
643 632
644 context.setFillColor(alpha); 633 context.setFillColor(alpha);
645 context.drawEllipse(IntRect(20, 10, 30, 50)); 634 context.drawEllipse(IntRect(20, 10, 30, 50));
646 EXPECT_EQ_RECT(IntRect(51, 41, 49, 59), context.opaqueRegion().asRect()); 635 EXPECT_EQ_RECT(IntRect(51, 41, 49, 59), context.opaqueRegion().asRect());
647 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 636 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
648 } 637 }
649 638
650 TEST(GraphicsContextTest, trackOpaqueRoundedRectTest) 639 TEST(GraphicsContextTest, trackOpaqueRoundedRectTest)
651 { 640 {
652 SkBitmap bitmap; 641 SkBitmap bitmap;
653 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 642 ASSERT_TRUE(bitmap.allocN32Pixels(200, 200));
654 bitmap.allocPixels();
655 bitmap.eraseColor(0);
656 SkCanvas canvas(bitmap); 643 SkCanvas canvas(bitmap);
657 644
658 GraphicsContext context(&canvas); 645 GraphicsContext context(&canvas);
659 context.setTrackOpaqueRegion(true); 646 context.setTrackOpaqueRegion(true);
660 647
661 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 648 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
662 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 649 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
663 IntSize radii(10, 10); 650 IntSize radii(10, 10);
664 651
665 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 652 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
(...skipping 24 matching lines...) Expand all
690 677
691 context.fillRoundedRect(IntRect(30, 0, 70, 50), radii, radii, radii, radii, opaque); 678 context.fillRoundedRect(IntRect(30, 0, 70, 50), radii, radii, radii, radii, opaque);
692 EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), context.opaqueRegion().asRect()); 679 EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), context.opaqueRegion().asRect());
693 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 680 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
694 } 681 }
695 682
696 TEST(GraphicsContextTest, trackOpaqueTextTest) 683 TEST(GraphicsContextTest, trackOpaqueTextTest)
697 { 684 {
698 int width = 200, height = 200; 685 int width = 200, height = 200;
699 SkBitmap bitmap; 686 SkBitmap bitmap;
700 bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height); 687 ASSERT_TRUE(bitmap.allocN32Pixels(width, height));
701 bitmap.allocPixels();
702 bitmap.eraseColor(0); 688 bitmap.eraseColor(0);
703 SkCanvas canvas(bitmap); 689 SkCanvas canvas(bitmap);
704 SkRect textRect = SkRect::MakeWH(width, height); 690 SkRect textRect = SkRect::MakeWH(width, height);
705 691
706 GraphicsContext context(&canvas); 692 GraphicsContext context(&canvas);
707 context.setTrackOpaqueRegion(true); 693 context.setTrackOpaqueRegion(true);
708 694
709 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 695 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
710 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 696 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
711 697
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 741 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
756 742
757 context.drawTextOnPath("A", 1, path, textRect, 0, alphaPaint); 743 context.drawTextOnPath("A", 1, path, textRect, 0, alphaPaint);
758 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 744 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
759 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 745 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
760 } 746 }
761 747
762 TEST(GraphicsContextTest, trackOpaqueWritePixelsTest) 748 TEST(GraphicsContextTest, trackOpaqueWritePixelsTest)
763 { 749 {
764 SkBitmap bitmap; 750 SkBitmap bitmap;
765 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 751 ASSERT_TRUE(bitmap.allocN32Pixels(200, 200));
766 bitmap.allocPixels();
767 bitmap.eraseColor(0); 752 bitmap.eraseColor(0);
768 SkCanvas canvas(bitmap); 753 SkCanvas canvas(bitmap);
769 754
770 GraphicsContext context(&canvas); 755 GraphicsContext context(&canvas);
771 context.setTrackOpaqueRegion(true); 756 context.setTrackOpaqueRegion(true);
772 757
773 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 758 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
774 759
775 SkBitmap opaqueBitmap; 760 SkBitmap opaqueBitmap;
776 opaqueBitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10, 0, kOpaque_SkAlp haType); 761 ASSERT_TRUE(opaqueBitmap.allocN32Pixels(10, 10, true /* opaque */));
777 opaqueBitmap.allocPixels();
778 for (int y = 0; y < opaqueBitmap.height(); ++y) 762 for (int y = 0; y < opaqueBitmap.height(); ++y)
779 for (int x = 0; x < opaqueBitmap.width(); ++x) 763 for (int x = 0; x < opaqueBitmap.width(); ++x)
780 *opaqueBitmap.getAddr32(x, y) = 0xFFFFFFFF; 764 *opaqueBitmap.getAddr32(x, y) = 0xFFFFFFFF;
781 765
782 SkBitmap alphaBitmap; 766 SkBitmap alphaBitmap;
783 alphaBitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10, 0, kPremul_SkAlph aType); 767 ASSERT_TRUE(alphaBitmap.allocN32Pixels(10, 10));
784 alphaBitmap.allocPixels();
785 for (int y = 0; y < alphaBitmap.height(); ++y) 768 for (int y = 0; y < alphaBitmap.height(); ++y)
786 for (int x = 0; x < alphaBitmap.width(); ++x) 769 for (int x = 0; x < alphaBitmap.width(); ++x)
787 *alphaBitmap.getAddr32(x, y) = 0x00000000; 770 *alphaBitmap.getAddr32(x, y) = 0x00000000;
788 771
789 SkPaint paint; 772 SkPaint paint;
790 paint.setXfermodeMode(SkXfermode::kSrc_Mode); 773 paint.setXfermodeMode(SkXfermode::kSrc_Mode);
791 774
792 context.writePixels(opaqueBitmap, 50, 50); 775 context.writePixels(opaqueBitmap, 50, 50);
793 EXPECT_EQ_RECT(IntRect(50, 50, 10, 10), context.opaqueRegion().asRect()); 776 EXPECT_EQ_RECT(IntRect(50, 50, 10, 10), context.opaqueRegion().asRect());
794 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 777 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
(...skipping 15 matching lines...) Expand all
810 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 793 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
811 794
812 context.writePixels(alphaBitmap, 1, 10); 795 context.writePixels(alphaBitmap, 1, 10);
813 EXPECT_EQ_RECT(IntRect(11, 11, 89, 89), context.opaqueRegion().asRect()); 796 EXPECT_EQ_RECT(IntRect(11, 11, 89, 89), context.opaqueRegion().asRect());
814 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 797 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
815 } 798 }
816 799
817 TEST(GraphicsContextTest, trackOpaqueDrawBitmapTest) 800 TEST(GraphicsContextTest, trackOpaqueDrawBitmapTest)
818 { 801 {
819 SkBitmap bitmap; 802 SkBitmap bitmap;
820 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 803 ASSERT_TRUE(bitmap.allocN32Pixels(200, 200));
821 bitmap.allocPixels();
822 bitmap.eraseColor(0); 804 bitmap.eraseColor(0);
823 SkCanvas canvas(bitmap); 805 SkCanvas canvas(bitmap);
824 806
825 GraphicsContext context(&canvas); 807 GraphicsContext context(&canvas);
826 context.setTrackOpaqueRegion(true); 808 context.setTrackOpaqueRegion(true);
827 809
828 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 810 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
829 811
830 SkBitmap opaqueBitmap; 812 SkBitmap opaqueBitmap;
831 opaqueBitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10, 0, kOpaque_SkAlp haType); 813 ASSERT_TRUE(opaqueBitmap.allocN32Pixels(10, 10, true /* opaque */));
832 opaqueBitmap.allocPixels();
833 for (int y = 0; y < opaqueBitmap.height(); ++y) 814 for (int y = 0; y < opaqueBitmap.height(); ++y)
834 for (int x = 0; x < opaqueBitmap.width(); ++x) 815 for (int x = 0; x < opaqueBitmap.width(); ++x)
835 *opaqueBitmap.getAddr32(x, y) = 0xFFFFFFFF; 816 *opaqueBitmap.getAddr32(x, y) = 0xFFFFFFFF;
836 817
837 SkBitmap alphaBitmap; 818 SkBitmap alphaBitmap;
838 alphaBitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10, 0, kPremul_SkAlph aType); 819 ASSERT_TRUE(alphaBitmap.allocN32Pixels(10, 10));
839 alphaBitmap.allocPixels();
840 for (int y = 0; y < alphaBitmap.height(); ++y) 820 for (int y = 0; y < alphaBitmap.height(); ++y)
841 for (int x = 0; x < alphaBitmap.width(); ++x) 821 for (int x = 0; x < alphaBitmap.width(); ++x)
842 *alphaBitmap.getAddr32(x, y) = 0x00000000; 822 *alphaBitmap.getAddr32(x, y) = 0x00000000;
843 823
844 SkPaint paint; 824 SkPaint paint;
845 paint.setXfermodeMode(SkXfermode::kSrc_Mode); 825 paint.setXfermodeMode(SkXfermode::kSrc_Mode);
846 826
847 context.drawBitmap(opaqueBitmap, 10, 10, &paint); 827 context.drawBitmap(opaqueBitmap, 10, 10, &paint);
848 EXPECT_EQ_RECT(IntRect(10, 10, 10, 10), context.opaqueRegion().asRect()); 828 EXPECT_EQ_RECT(IntRect(10, 10, 10, 10), context.opaqueRegion().asRect());
849 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 829 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
(...skipping 15 matching lines...) Expand all
865 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 845 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
866 846
867 context.drawBitmap(alphaBitmap, 1, 10, &paint); 847 context.drawBitmap(alphaBitmap, 1, 10, &paint);
868 EXPECT_EQ_RECT(IntRect(11, 11, 89, 89), context.opaqueRegion().asRect()); 848 EXPECT_EQ_RECT(IntRect(11, 11, 89, 89), context.opaqueRegion().asRect());
869 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 849 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
870 } 850 }
871 851
872 TEST(GraphicsContextTest, trackOpaqueDrawBitmapRectTest) 852 TEST(GraphicsContextTest, trackOpaqueDrawBitmapRectTest)
873 { 853 {
874 SkBitmap bitmap; 854 SkBitmap bitmap;
875 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 855 ASSERT_TRUE(bitmap.allocN32Pixels(200, 200));
876 bitmap.allocPixels();
877 bitmap.eraseColor(0); 856 bitmap.eraseColor(0);
878 SkCanvas canvas(bitmap); 857 SkCanvas canvas(bitmap);
879 858
880 GraphicsContext context(&canvas); 859 GraphicsContext context(&canvas);
881 context.setTrackOpaqueRegion(true); 860 context.setTrackOpaqueRegion(true);
882 861
883 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 862 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
884 863
885 SkBitmap opaqueBitmap; 864 SkBitmap opaqueBitmap;
886 opaqueBitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10, 0, kOpaque_SkAlp haType); 865 ASSERT_TRUE(opaqueBitmap.allocN32Pixels(10, 10, true /* opaque */));
887 opaqueBitmap.allocPixels();
888 for (int y = 0; y < opaqueBitmap.height(); ++y) 866 for (int y = 0; y < opaqueBitmap.height(); ++y)
889 for (int x = 0; x < opaqueBitmap.width(); ++x) 867 for (int x = 0; x < opaqueBitmap.width(); ++x)
890 *opaqueBitmap.getAddr32(x, y) = 0xFFFFFFFF; 868 *opaqueBitmap.getAddr32(x, y) = 0xFFFFFFFF;
891 869
892 SkBitmap alphaBitmap; 870 SkBitmap alphaBitmap;
893 alphaBitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10, 0, kPremul_SkAlph aType); 871 ASSERT_TRUE(alphaBitmap.allocN32Pixels(10, 10));
894 alphaBitmap.allocPixels();
895 for (int y = 0; y < alphaBitmap.height(); ++y) 872 for (int y = 0; y < alphaBitmap.height(); ++y)
896 for (int x = 0; x < alphaBitmap.width(); ++x) 873 for (int x = 0; x < alphaBitmap.width(); ++x)
897 *alphaBitmap.getAddr32(x, y) = 0x00000000; 874 *alphaBitmap.getAddr32(x, y) = 0x00000000;
898 875
899 SkPaint paint; 876 SkPaint paint;
900 paint.setXfermodeMode(SkXfermode::kSrc_Mode); 877 paint.setXfermodeMode(SkXfermode::kSrc_Mode);
901 878
902 context.drawBitmapRect(opaqueBitmap, 0, SkRect::MakeXYWH(10, 10, 90, 90), &p aint); 879 context.drawBitmapRect(opaqueBitmap, 0, SkRect::MakeXYWH(10, 10, 90, 90), &p aint);
903 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); 880 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
904 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 881 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
(...skipping 11 matching lines...) Expand all
916 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 893 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
917 894
918 context.drawBitmapRect(alphaBitmap, 0, SkRect::MakeXYWH(0, 10, 11, 10), &pai nt); 895 context.drawBitmapRect(alphaBitmap, 0, SkRect::MakeXYWH(0, 10, 11, 10), &pai nt);
919 EXPECT_EQ_RECT(IntRect(11, 11, 89, 89), context.opaqueRegion().asRect()); 896 EXPECT_EQ_RECT(IntRect(11, 11, 89, 89), context.opaqueRegion().asRect());
920 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 897 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
921 } 898 }
922 899
923 TEST(GraphicsContextTest, contextTransparencyLayerTest) 900 TEST(GraphicsContextTest, contextTransparencyLayerTest)
924 { 901 {
925 SkBitmap bitmap; 902 SkBitmap bitmap;
926 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 903 ASSERT_TRUE(bitmap.allocN32Pixels(400, 400));
927 bitmap.allocPixels();
928 bitmap.eraseColor(0); 904 bitmap.eraseColor(0);
929 SkCanvas canvas(bitmap); 905 SkCanvas canvas(bitmap);
930 906
931 GraphicsContext context(&canvas); 907 GraphicsContext context(&canvas);
932 context.setTrackOpaqueRegion(true); 908 context.setTrackOpaqueRegion(true);
933 909
934 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 910 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
935 context.fillRect(FloatRect(20, 20, 10, 10), opaque, CompositeSourceOver); 911 context.fillRect(FloatRect(20, 20, 10, 10), opaque, CompositeSourceOver);
936 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect()); 912 EXPECT_EQ_RECT(IntRect(20, 20, 10, 10), context.opaqueRegion().asRect());
937 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 913 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
(...skipping 13 matching lines...) Expand all
951 927
952 context.beginTransparencyLayer(0.5); 928 context.beginTransparencyLayer(0.5);
953 context.fillRect(FloatRect(20, 20, 10, 10), opaque, CompositeSourceOver); 929 context.fillRect(FloatRect(20, 20, 10, 10), opaque, CompositeSourceOver);
954 context.endLayer(); 930 context.endLayer();
955 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 931 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
956 } 932 }
957 933
958 TEST(GraphicsContextTest, UnboundedDrawsAreClipped) 934 TEST(GraphicsContextTest, UnboundedDrawsAreClipped)
959 { 935 {
960 SkBitmap bitmap; 936 SkBitmap bitmap;
961 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 937 ASSERT_TRUE(bitmap.allocN32Pixels(400, 400));
962 bitmap.allocPixels();
963 bitmap.eraseColor(0); 938 bitmap.eraseColor(0);
964 SkCanvas canvas(bitmap); 939 SkCanvas canvas(bitmap);
965 940
966 GraphicsContext context(&canvas); 941 GraphicsContext context(&canvas);
967 context.setTrackOpaqueRegion(true); 942 context.setTrackOpaqueRegion(true);
968 943
969 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 944 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
970 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 945 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
971 946
972 Path path; 947 Path path;
(...skipping 24 matching lines...) Expand all
997 path.addLineTo(FloatPoint(40, 40)); 972 path.addLineTo(FloatPoint(40, 40));
998 context.strokePath(path); 973 context.strokePath(path);
999 974
1000 EXPECT_EQ_RECT(IntRect(20, 10, 30, 40), context.opaqueRegion().asRect()); 975 EXPECT_EQ_RECT(IntRect(20, 10, 30, 40), context.opaqueRegion().asRect());
1001 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); 976 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
1002 } 977 }
1003 978
1004 TEST(GraphicsContextTest, PreserveOpaqueOnlyMattersForFirstLayer) 979 TEST(GraphicsContextTest, PreserveOpaqueOnlyMattersForFirstLayer)
1005 { 980 {
1006 SkBitmap bitmap; 981 SkBitmap bitmap;
1007 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 982 ASSERT_TRUE(bitmap.allocN32Pixels(400, 400));
1008 bitmap.allocPixels();
1009 bitmap.eraseColor(0); 983 bitmap.eraseColor(0);
1010 SkCanvas canvas(bitmap); 984 SkCanvas canvas(bitmap);
1011 985
1012 GraphicsContext context(&canvas); 986 GraphicsContext context(&canvas);
1013 context.setTrackOpaqueRegion(true); 987 context.setTrackOpaqueRegion(true);
1014 988
1015 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); 989 Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
1016 Color alpha(0.0f, 0.0f, 0.0f, 0.0f); 990 Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
1017 991
1018 Path path; 992 Path path;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1080 context.endLayer(); 1054 context.endLayer();
1081 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect()); 1055 EXPECT_EQ_RECT(IntRect(), context.opaqueRegion().asRect());
1082 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect()); 1056 EXPECT_PIXELS_MATCH_EXACT(bitmap, context.opaqueRegion().asRect());
1083 } 1057 }
1084 1058
1085 #define DISPATCH(c1, c2, op, params) do { c1.op(params); c2.op(params); } while (0); 1059 #define DISPATCH(c1, c2, op, params) do { c1.op(params); c2.op(params); } while (0);
1086 1060
1087 TEST(GraphicsContextTest, RecordingTotalMatrix) 1061 TEST(GraphicsContextTest, RecordingTotalMatrix)
1088 { 1062 {
1089 SkBitmap bitmap; 1063 SkBitmap bitmap;
1090 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 400, 400); 1064 ASSERT_TRUE(bitmap.allocN32Pixels(400, 400));
1091 bitmap.allocPixels();
1092 bitmap.eraseColor(0); 1065 bitmap.eraseColor(0);
1093 SkCanvas canvas(bitmap); 1066 SkCanvas canvas(bitmap);
1094 GraphicsContext context(&canvas); 1067 GraphicsContext context(&canvas);
1095 1068
1096 SkBitmapDevice controlDevice(SkBitmap::kNo_Config, 400, 400); 1069 SkCanvas controlCanvas(400, 400);
1097 SkCanvas controlCanvas(&controlDevice);
1098 GraphicsContext controlContext(&controlCanvas); 1070 GraphicsContext controlContext(&controlCanvas);
1099 1071
1100 EXPECT_EQ(context.getCTM(), controlContext.getCTM()); 1072 EXPECT_EQ(context.getCTM(), controlContext.getCTM());
1101 DISPATCH(context, controlContext, scale, FloatSize(2, 2)); 1073 DISPATCH(context, controlContext, scale, FloatSize(2, 2));
1102 EXPECT_EQ(context.getCTM(), controlContext.getCTM()); 1074 EXPECT_EQ(context.getCTM(), controlContext.getCTM());
1103 1075
1104 controlContext.save(); 1076 controlContext.save();
1105 context.beginRecording(FloatRect(0, 0, 200, 200)); 1077 context.beginRecording(FloatRect(0, 0, 200, 200));
1106 DISPATCH(context, controlContext, translate, FloatSize(10, 10)); 1078 DISPATCH(context, controlContext, translate, FloatSize(10, 10));
1107 EXPECT_EQ(context.getCTM(), controlContext.getCTM()); 1079 EXPECT_EQ(context.getCTM(), controlContext.getCTM());
1108 1080
1109 controlContext.save(); 1081 controlContext.save();
1110 context.beginRecording(FloatRect(10, 10, 100, 100)); 1082 context.beginRecording(FloatRect(10, 10, 100, 100));
1111 DISPATCH(context, controlContext, rotate, 45); 1083 DISPATCH(context, controlContext, rotate, 45);
1112 EXPECT_EQ(context.getCTM(), controlContext.getCTM()); 1084 EXPECT_EQ(context.getCTM(), controlContext.getCTM());
1113 1085
1114 controlContext.restore(); 1086 controlContext.restore();
1115 context.endRecording(); 1087 context.endRecording();
1116 EXPECT_EQ(context.getCTM(), controlContext.getCTM()); 1088 EXPECT_EQ(context.getCTM(), controlContext.getCTM());
1117 1089
1118 controlContext.restore(); 1090 controlContext.restore();
1119 context.endRecording(); 1091 context.endRecording();
1120 EXPECT_EQ(context.getCTM(), controlContext.getCTM()); 1092 EXPECT_EQ(context.getCTM(), controlContext.getCTM());
1121 } 1093 }
1122 1094
1123 } // namespace 1095 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698