| /* |
| * Copyright 2015 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "SkCanvas.h" |
| #include "SkDrawFilter.h" |
| #include "SkSurface.h" |
| #include "Test.h" |
| |
| #ifdef SK_SUPPORT_LEGACY_DRAWFILTER |
| |
| namespace { |
| class TestFilter : public SkDrawFilter { |
| public: |
| bool filter(SkPaint* p, Type) override { |
| return true; |
| } |
| }; |
| } |
| |
| /** |
| * canvas.setDrawFilter is defined to be local to the save/restore block, such that if you |
| * do the following: save / modify-drawfilter / restore, the current drawfilter should be what |
| * it was before the save. |
| */ |
| static void test_saverestore(skiatest::Reporter* reporter) { |
| auto surface(SkSurface::MakeRasterN32Premul(10, 10)); |
| SkCanvas* canvas = surface->getCanvas(); |
| |
| sk_sp<TestFilter> df(new TestFilter); |
| |
| REPORTER_ASSERT(reporter, nullptr == canvas->getDrawFilter()); |
| |
| canvas->save(); |
| canvas->setDrawFilter(df.get()); |
| REPORTER_ASSERT(reporter, nullptr != canvas->getDrawFilter()); |
| canvas->restore(); |
| |
| REPORTER_ASSERT(reporter, nullptr == canvas->getDrawFilter()); |
| } |
| |
| DEF_TEST(DrawFilter, reporter) { |
| test_saverestore(reporter); |
| } |
| |
| #endif |