blob: 6381a3c8fa158e00982f5688f655facca0bd8bce [file] [log] [blame]
reed51985e32015-04-11 08:04:56 -07001/*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "SkCanvas.h"
9#include "SkDrawFilter.h"
10#include "SkSurface.h"
11#include "Test.h"
12
reedffab15f2015-04-11 19:29:31 -070013namespace {
reed51985e32015-04-11 08:04:56 -070014class TestFilter : public SkDrawFilter {
15public:
16 bool filter(SkPaint* p, Type) override {
17 return true;
18 }
19};
reedffab15f2015-04-11 19:29:31 -070020}
reed51985e32015-04-11 08:04:56 -070021
22/**
23 * canvas.setDrawFilter is defined to be local to the save/restore block, such that if you
24 * do the following: save / modify-drawfilter / restore, the current drawfilter should be what
25 * it was before the save.
26 */
27static void test_saverestore(skiatest::Reporter* reporter) {
28 SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(10, 10));
29 SkCanvas* canvas = surface->getCanvas();
30
halcanary385fe4d2015-08-26 13:07:48 -070031 SkAutoTUnref<TestFilter> df(new TestFilter);
reed51985e32015-04-11 08:04:56 -070032
halcanary96fcdcc2015-08-27 07:41:13 -070033 REPORTER_ASSERT(reporter, nullptr == canvas->getDrawFilter());
reed51985e32015-04-11 08:04:56 -070034
35 canvas->save();
36 canvas->setDrawFilter(df);
halcanary96fcdcc2015-08-27 07:41:13 -070037 REPORTER_ASSERT(reporter, nullptr != canvas->getDrawFilter());
reed51985e32015-04-11 08:04:56 -070038 canvas->restore();
39
halcanary96fcdcc2015-08-27 07:41:13 -070040 REPORTER_ASSERT(reporter, nullptr == canvas->getDrawFilter());
reed51985e32015-04-11 08:04:56 -070041}
42
43DEF_TEST(DrawFilter, reporter) {
44 test_saverestore(reporter);
45}