1 /* 2 * Copyright 2013 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 #ifndef SkComposeImageFilter_DEFINED 9 #define SkComposeImageFilter_DEFINED 10 11 #include "SkImageFilter.h" 12 13 class SK_API SkComposeImageFilter : public SkImageFilter { 14 public: 15 static sk_sp<SkImageFilter> Make(sk_sp<SkImageFilter> outer, sk_sp<SkImageFilter> inner); 16 17 SkRect computeFastBounds(const SkRect& src) const override; 18 19 SK_TO_STRING_OVERRIDE() SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeImageFilter)20 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeImageFilter) 21 22 protected: 23 explicit SkComposeImageFilter(sk_sp<SkImageFilter> inputs[2]) : INHERITED(inputs, 2, nullptr) { 24 SkASSERT(inputs[0].get()); 25 SkASSERT(inputs[1].get()); 26 } 27 sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&, 28 SkIPoint* offset) const override; 29 SkIRect onFilterBounds(const SkIRect&, const SkMatrix&, MapDirection) const override; onCanHandleComplexCTM()30 bool onCanHandleComplexCTM() const override { return true; } 31 32 private: 33 typedef SkImageFilter INHERITED; 34 }; 35 36 #endif 37