blob: ff8fae0316964cef939346c704a0d7ded3c0966f [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"
Ben Wagnerd90cd3b2018-05-22 10:48:08 -040010#include "SkRefCnt.h"
reed51985e32015-04-11 08:04:56 -070011#include "SkSurface.h"
12#include "Test.h"
Ben Wagnerd90cd3b2018-05-22 10:48:08 -040013class SkPaint;
reed51985e32015-04-11 08:04:56 -070014
benjaminwagner1c2729c2016-01-22 09:45:14 -080015#ifdef SK_SUPPORT_LEGACY_DRAWFILTER
16
reedffab15f2015-04-11 19:29:31 -070017namespace {
reed51985e32015-04-11 08:04:56 -070018class TestFilter : public SkDrawFilter {
19public:
20 bool filter(SkPaint* p, Type) override {
21 return true;
22 }
23};
reedffab15f2015-04-11 19:29:31 -070024}
reed51985e32015-04-11 08:04:56 -070025
26/**
27 * canvas.setDrawFilter is defined to be local to the save/restore block, such that if you
28 * do the following: save / modify-drawfilter / restore, the current drawfilter should be what
29 * it was before the save.
30 */
31static void test_saverestore(skiatest::Reporter* reporter) {
reede8f30622016-03-23 18:59:25 -070032 auto surface(SkSurface::MakeRasterN32Premul(10, 10));
reed51985e32015-04-11 08:04:56 -070033 SkCanvas* canvas = surface->getCanvas();
34
Hal Canary342b7ac2016-11-04 11:49:42 -040035 sk_sp<TestFilter> df(new TestFilter);
reed51985e32015-04-11 08:04:56 -070036
halcanary96fcdcc2015-08-27 07:41:13 -070037 REPORTER_ASSERT(reporter, nullptr == canvas->getDrawFilter());
reed51985e32015-04-11 08:04:56 -070038
39 canvas->save();
Hal Canary342b7ac2016-11-04 11:49:42 -040040 canvas->setDrawFilter(df.get());
halcanary96fcdcc2015-08-27 07:41:13 -070041 REPORTER_ASSERT(reporter, nullptr != canvas->getDrawFilter());
reed51985e32015-04-11 08:04:56 -070042 canvas->restore();
43
halcanary96fcdcc2015-08-27 07:41:13 -070044 REPORTER_ASSERT(reporter, nullptr == canvas->getDrawFilter());
reed51985e32015-04-11 08:04:56 -070045}
46
47DEF_TEST(DrawFilter, reporter) {
48 test_saverestore(reporter);
49}
benjaminwagner1c2729c2016-01-22 09:45:14 -080050
51#endif