Home | History | Annotate | Download | only in effects
      1 /*
      2  * Copyright 2017 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 GrSimpleTextureEffect.fp; do not modify.
     10  **************************************************************************************************/
     11 #ifndef GrSimpleTextureEffect_DEFINED
     12 #define GrSimpleTextureEffect_DEFINED
     13 #include "SkTypes.h"
     14 #include "GrFragmentProcessor.h"
     15 #include "GrCoordTransform.h"
     16 class GrSimpleTextureEffect : public GrFragmentProcessor {
     17 public:
     18     const SkMatrix44& matrix() const { return fMatrix; }
     19 
     20     static std::unique_ptr<GrFragmentProcessor> Make(sk_sp<GrTextureProxy> proxy,
     21                                                      const SkMatrix& matrix) {
     22         return std::unique_ptr<GrFragmentProcessor>(
     23                 new GrSimpleTextureEffect(std::move(proxy), matrix,
     24                                           GrSamplerState(GrSamplerState::WrapMode::kClamp,
     25                                                          GrSamplerState::Filter::kNearest)));
     26     }
     27 
     28     /* clamp mode */
     29     static std::unique_ptr<GrFragmentProcessor> Make(sk_sp<GrTextureProxy> proxy,
     30                                                      const SkMatrix& matrix,
     31                                                      GrSamplerState::Filter filter) {
     32         return std::unique_ptr<GrFragmentProcessor>(new GrSimpleTextureEffect(
     33                 std::move(proxy), matrix,
     34                 GrSamplerState(GrSamplerState::WrapMode::kClamp, filter)));
     35     }
     36 
     37     static std::unique_ptr<GrFragmentProcessor> Make(sk_sp<GrTextureProxy> proxy,
     38                                                      const SkMatrix& matrix,
     39                                                      const GrSamplerState& p) {
     40         return std::unique_ptr<GrFragmentProcessor>(
     41                 new GrSimpleTextureEffect(std::move(proxy), matrix, p));
     42     }
     43     GrSimpleTextureEffect(const GrSimpleTextureEffect& src);
     44     std::unique_ptr<GrFragmentProcessor> clone() const override;
     45     const char* name() const override { return "SimpleTextureEffect"; }
     46 
     47 private:
     48     GrSimpleTextureEffect(sk_sp<GrTextureProxy> image, SkMatrix44 matrix,
     49                           GrSamplerState samplerParams)
     50             : INHERITED(kGrSimpleTextureEffect_ClassID,
     51                         (OptimizationFlags)ModulateForSamplerOptFlags(
     52                                 image->config(),
     53                                 samplerParams.wrapModeX() ==
     54                                                 GrSamplerState::WrapMode::kClampToBorder ||
     55                                         samplerParams.wrapModeY() ==
     56                                                 GrSamplerState::WrapMode::kClampToBorder))
     57             , fImage(std::move(image), samplerParams)
     58             , fMatrix(matrix)
     59             , fImageCoordTransform(matrix, fImage.proxy()) {
     60         this->setTextureSamplerCnt(1);
     61         this->addCoordTransform(&fImageCoordTransform);
     62     }
     63     GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
     64     void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
     65     bool onIsEqual(const GrFragmentProcessor&) const override;
     66     const TextureSampler& onTextureSampler(int) const override;
     67     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
     68     TextureSampler fImage;
     69     SkMatrix44 fMatrix;
     70     GrCoordTransform fImageCoordTransform;
     71     typedef GrFragmentProcessor INHERITED;
     72 };
     73 #endif
     74