blob: 27c9659e4347ba9b9571c0160e320cfc4b1ef26f [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
benjaminwagner1c2729c2016-01-22 09:45:14 -080013#ifdef SK_SUPPORT_LEGACY_DRAWFILTER
14
reedffab15f2015-04-11 19:29:31 -070015namespace {
reed51985e32015-04-11 08:04:56 -070016class TestFilter : public SkDrawFilter {
17public:
18 bool filter(SkPaint* p, Type) override {
19 return true;
20 }
21};
reedffab15f2015-04-11 19:29:31 -070022}
reed51985e32015-04-11 08:04:56 -070023
24/**
25 * canvas.setDrawFilter is defined to be local to the save/restore block, such that if you
26 * do the following: save / modify-drawfilter / restore, the current drawfilter should be what
27 * it was before the save.
28 */
29static void test_saverestore(skiatest::Reporter* reporter) {
reede8f30622016-03-23 18:59:25 -070030 auto surface(SkSurface::MakeRasterN32Premul(10, 10));
reed51985e32015-04-11 08:04:56 -070031 SkCanvas* canvas = surface->getCanvas();
32
Hal Canary342b7ac2016-11-04 11:49:42 -040033 sk_sp<TestFilter> df(new TestFilter);
reed51985e32015-04-11 08:04:56 -070034
halcanary96fcdcc2015-08-27 07:41:13 -070035 REPORTER_ASSERT(reporter, nullptr == canvas->getDrawFilter());
reed51985e32015-04-11 08:04:56 -070036
37 canvas->save();
Hal Canary342b7ac2016-11-04 11:49:42 -040038 canvas->setDrawFilter(df.get());
halcanary96fcdcc2015-08-27 07:41:13 -070039 REPORTER_ASSERT(reporter, nullptr != canvas->getDrawFilter());
reed51985e32015-04-11 08:04:56 -070040 canvas->restore();
41
halcanary96fcdcc2015-08-27 07:41:13 -070042 REPORTER_ASSERT(reporter, nullptr == canvas->getDrawFilter());
reed51985e32015-04-11 08:04:56 -070043}
44
45DEF_TEST(DrawFilter, reporter) {
46 test_saverestore(reporter);
47}
benjaminwagner1c2729c2016-01-22 09:45:14 -080048
49#endif