Home | History | Annotate | Download | only in shaders
      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