blob: da1fafd3945efcb0bc7c9731143bcdefabb45361 [file] [log] [blame]
reed@google.com37f3ae02011-11-28 16:06:04 +00001
2/*
3 * Copyright 2011 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 "SkCanvas.h"
11
reed@google.com7c202932011-12-14 18:48:05 +000012static void test_isDrawingToLayer(skiatest::Reporter* reporter) {
13 SkBitmap bm;
14 bm.setConfig(SkBitmap::kARGB_8888_Config, 256, 256);
15 bm.allocPixels();
16
17 SkCanvas canvas(bm);
18
19 REPORTER_ASSERT(reporter, !canvas.isDrawingToLayer());
20 canvas.save();
21 REPORTER_ASSERT(reporter, !canvas.isDrawingToLayer());
22
23 const SkRect* bounds = NULL; // null means include entire bounds
24 const SkPaint* paint = NULL;
25
26 canvas.saveLayer(bounds, paint);
27 REPORTER_ASSERT(reporter, canvas.isDrawingToLayer());
28 canvas.restore();
29 REPORTER_ASSERT(reporter, !canvas.isDrawingToLayer());
30
31 canvas.saveLayer(bounds, paint);
32 canvas.saveLayer(bounds, paint);
33 REPORTER_ASSERT(reporter, canvas.isDrawingToLayer());
34 canvas.restore();
35 REPORTER_ASSERT(reporter, canvas.isDrawingToLayer());
36 canvas.restore();
37 // now layer count should be 0
38 REPORTER_ASSERT(reporter, !canvas.isDrawingToLayer());
39}
reed@google.com37f3ae02011-11-28 16:06:04 +000040
41static void TestCanvas(skiatest::Reporter* reporter) {
42 SkBitmap bm;
43 bm.setConfig(SkBitmap::kARGB_8888_Config, 256, 256);
44 bm.allocPixels();
45
46 SkCanvas canvas(bm);
47 int n;
48
49 REPORTER_ASSERT(reporter, 1 == canvas.getSaveCount());
50 n = canvas.save();
51 REPORTER_ASSERT(reporter, 1 == n);
52 REPORTER_ASSERT(reporter, 2 == canvas.getSaveCount());
53 canvas.save();
54 canvas.save();
55 REPORTER_ASSERT(reporter, 4 == canvas.getSaveCount());
56 canvas.restoreToCount(2);
57 REPORTER_ASSERT(reporter, 2 == canvas.getSaveCount());
58
59 // should this pin to 1, or be a no-op, or crash?
60 canvas.restoreToCount(0);
61 REPORTER_ASSERT(reporter, 1 == canvas.getSaveCount());
reed@google.com7c202932011-12-14 18:48:05 +000062
63 test_isDrawingToLayer(reporter);
reed@google.com37f3ae02011-11-28 16:06:04 +000064}
65
66#include "TestClassDef.h"
67DEFINE_TESTCLASS("Canvas", TestCanvasClass, TestCanvas)