1 /* 2 * Copyright 2016 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 SkColorFilterShader_DEFINED 9 #define SkColorFilterShader_DEFINED 10 11 #include "SkColorFilter.h" 12 #include "SkShaderBase.h" 13 14 class SkArenaAlloc; 15 16 class SkColorFilterShader : public SkShaderBase { 17 public: 18 SkColorFilterShader(sk_sp<SkShader> shader, sk_sp<SkColorFilter> filter); 19 20 #if SK_SUPPORT_GPU 21 sk_sp<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override; 22 #endif 23 24 SK_TO_STRING_OVERRIDE() 25 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorFilterShader) 26 27 protected: 28 void flatten(SkWriteBuffer&) const override; 29 sk_sp<SkShader> onMakeColorSpace(SkColorSpaceXformer* xformer) const override; 30 bool onAppendStages(SkRasterPipeline*, SkColorSpace* dstCS, SkArenaAlloc*, 31 const SkMatrix&, const SkPaint&, const SkMatrix* localM) const override; 32 bool onIsRasterPipelineOnly() const override { return true; } 33 34 private: 35 sk_sp<SkShader> fShader; 36 sk_sp<SkColorFilter> fFilter; 37 38 typedef SkShaderBase INHERITED; 39 }; 40 41 #endif 42