1 /* 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 13 #ifdef SK_SUPPORT_LEGACY_DRAWFILTER 14 15 namespace { 16 class TestFilter : public SkDrawFilter { 17 public: 18 bool filter(SkPaint* p, Type) override { 19 return true; 20 } 21 }; 22 } 23 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 */ 29 static void test_saverestore(skiatest::Reporter* reporter) { 30 auto surface(SkSurface::MakeRasterN32Premul(10, 10)); 31 SkCanvas* canvas = surface->getCanvas(); 32 33 sk_sp<TestFilter> df(new TestFilter); 34 35 REPORTER_ASSERT(reporter, nullptr == canvas->getDrawFilter()); 36 37 canvas->save(); 38 canvas->setDrawFilter(df.get()); 39 REPORTER_ASSERT(reporter, nullptr != canvas->getDrawFilter()); 40 canvas->restore(); 41 42 REPORTER_ASSERT(reporter, nullptr == canvas->getDrawFilter()); 43 } 44 45 DEF_TEST(DrawFilter, reporter) { 46 test_saverestore(reporter); 47 } 48 49 #endif 50