1 /* 2 * Copyright 2013 The Android Open Source Project 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 SkXfermodeImageFilter_DEFINED 9 #define SkXfermodeImageFilter_DEFINED 10 11 #include "SkArithmeticImageFilter.h" 12 #include "SkBlendMode.h" 13 #include "SkImageFilter.h" 14 15 /** 16 * This filter takes a SkBlendMode, and uses it to composite the foreground over the background. 17 * If foreground or background is NULL, the input bitmap (src) is used instead. 18 */ 19 class SK_API SkXfermodeImageFilter { 20 public: 21 static sk_sp<SkImageFilter> Make(SkBlendMode, sk_sp<SkImageFilter> background, 22 sk_sp<SkImageFilter> foreground, 23 const SkImageFilter::CropRect* cropRect); Make(SkBlendMode mode,sk_sp<SkImageFilter> background)24 static sk_sp<SkImageFilter> Make(SkBlendMode mode, sk_sp<SkImageFilter> background) { 25 return Make(mode, std::move(background), nullptr, nullptr); 26 } 27 28 // Arithmetic image filtering used to be implemented using SkXfermode. Some clients still rely 29 // on these factories existing in this class. MakeArithmetic(float k1,float k2,float k3,float k4,bool enforcePMColor,sk_sp<SkImageFilter> background,sk_sp<SkImageFilter> foreground,const SkImageFilter::CropRect * cropRect)30 static sk_sp<SkImageFilter> MakeArithmetic(float k1, float k2, float k3, float k4, 31 bool enforcePMColor, sk_sp<SkImageFilter> background, 32 sk_sp<SkImageFilter> foreground, 33 const SkImageFilter::CropRect* cropRect) { 34 return SkArithmeticImageFilter::Make(k1, k2, k3, k4, enforcePMColor, std::move(background), 35 std::move(foreground), cropRect); 36 } MakeArithmetic(float k1,float k2,float k3,float k4,bool enforcePMColor,sk_sp<SkImageFilter> background)37 static sk_sp<SkImageFilter> MakeArithmetic(float k1, float k2, float k3, float k4, 38 bool enforcePMColor, 39 sk_sp<SkImageFilter> background) { 40 return SkArithmeticImageFilter::Make(k1, k2, k3, k4, enforcePMColor, std::move(background)); 41 } 42 43 SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP(); 44 45 private: 46 SkXfermodeImageFilter(); // can't instantiate 47 }; 48 49 #endif 50