Home | History | Annotate | Download | only in effects
      1 /*
      2  * Copyright 2018 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 /**************************************************************************************************
      9  *** This file was autogenerated from GrConstColorProcessor.fp; do not modify.
     10  **************************************************************************************************/
     11 #ifndef GrConstColorProcessor_DEFINED
     12 #define GrConstColorProcessor_DEFINED
     13 #include "SkTypes.h"
     14 #if SK_SUPPORT_GPU
     15 #include "GrFragmentProcessor.h"
     16 #include "GrCoordTransform.h"
     17 class GrConstColorProcessor : public GrFragmentProcessor {
     18 public:
     19     enum class InputMode { kIgnore = 0, kLast = 2, kModulateA = 2, kModulateRGBA = 1 };
     20 
     21     static const int kInputModeCnt = (int)InputMode::kLast + 1;
     22 
     23     static OptimizationFlags OptFlags(GrColor4f color, InputMode mode) {
     24         OptimizationFlags flags = kConstantOutputForConstantInput_OptimizationFlag;
     25         if (mode != InputMode::kIgnore) {
     26             flags |= kCompatibleWithCoverageAsAlpha_OptimizationFlag;
     27         }
     28         if (color.isOpaque()) {
     29             flags |= kPreservesOpaqueInput_OptimizationFlag;
     30         }
     31         return flags;
     32     }
     33 
     34     GrColor4f constantOutputForConstantInput(GrColor4f input) const override {
     35         switch (fMode) {
     36             case InputMode::kIgnore:
     37                 return fColor;
     38             case InputMode::kModulateA:
     39                 return fColor.mulByScalar(input.fRGBA[3]);
     40             case InputMode::kModulateRGBA:
     41                 return fColor.modulate(input);
     42         }
     43         SK_ABORT("Unexpected mode");
     44         return GrColor4f::TransparentBlack();
     45     }
     46     GrColor4f color() const { return fColor; }
     47     InputMode mode() const { return fMode; }
     48     static std::unique_ptr<GrFragmentProcessor> Make(GrColor4f color, InputMode mode) {
     49         return std::unique_ptr<GrFragmentProcessor>(new GrConstColorProcessor(color, mode));
     50     }
     51     GrConstColorProcessor(const GrConstColorProcessor& src);
     52     std::unique_ptr<GrFragmentProcessor> clone() const override;
     53     const char* name() const override { return "ConstColorProcessor"; }
     54 
     55 private:
     56     GrConstColorProcessor(GrColor4f color, InputMode mode)
     57             : INHERITED(kGrConstColorProcessor_ClassID, (OptimizationFlags)OptFlags(color, mode))
     58             , fColor(color)
     59             , fMode(mode) {}
     60     GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
     61     void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
     62     bool onIsEqual(const GrFragmentProcessor&) const override;
     63     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
     64     GrColor4f fColor;
     65     InputMode fMode;
     66     typedef GrFragmentProcessor INHERITED;
     67 };
     68 #endif
     69 #endif
     70