blob: 14ae1f4aa8cb91e8efc1f88d01bffe4316ad9833 [file] [log] [blame]
junov@chromium.org1f9767c2012-02-07 16:27:57 +00001
2/*
3 * Copyright 2012 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8#include "Test.h"
9#include "SkBitmap.h"
10#include "SkDeferredCanvas.h"
11
12
13static const int gWidth = 2;
14static const int gHeight = 2;
15
16static void create(SkBitmap* bm, SkBitmap::Config config, SkColor color) {
17 bm->setConfig(config, gWidth, gHeight);
18 bm->allocPixels();
19 bm->eraseColor(color);
20}
21
22static void TestDeferredCanvasBitmapAccess(skiatest::Reporter* reporter) {
23 SkBitmap store;
24
25 create(&store, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF);
26 SkDevice device(store);
27 SkDeferredCanvas canvas(&device);
28
29 canvas.clear(0x00000000);
30
31 SkAutoLockPixels alp(store);
32 REPORTER_ASSERT(reporter, store.getColor(0,0) == 0xFFFFFFFF); //verify that clear was deferred
33 SkBitmap accessed = canvas.getDevice()->accessBitmap(false);
34 REPORTER_ASSERT(reporter, store.getColor(0,0) == 0x00000000); //verify that clear was executed
35 REPORTER_ASSERT(reporter, accessed.pixelRef() == store.pixelRef());
36}
37
38static void TestDeferredCanvasFlush(skiatest::Reporter* reporter) {
39 SkBitmap store;
40
41 create(&store, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF);
42 SkDevice device(store);
43 SkDeferredCanvas canvas(&device);
44
45 canvas.clear(0x00000000);
46
47 SkAutoLockPixels alp(store);
48 REPORTER_ASSERT(reporter, store.getColor(0,0) == 0xFFFFFFFF); //verify that clear was deferred
49 canvas.flush();
50 REPORTER_ASSERT(reporter, store.getColor(0,0) == 0x00000000); //verify that clear was executed
51}
52
53static void TestDeferredCanvas(skiatest::Reporter* reporter) {
54 TestDeferredCanvasBitmapAccess(reporter);
55 TestDeferredCanvasFlush(reporter);
56}
57
58#include "TestClassDef.h"
59DEFINE_TESTCLASS("DeferredCanvas", TestDeferredCanvasClass, TestDeferredCanvas)