SkArithmeticMode_gpu.h revision 16a04b84147867b62f92969ac8f4f4a9ab009aea
1/* 2 * Copyright 2015 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 SkArithmeticMode_gpu_DEFINED 9#define SkArithmeticMode_gpu_DEFINED 10 11#if SK_SUPPORT_GPU 12 13#include "GrCoordTransform.h" 14#include "GrFragmentProcessor.h" 15#include "GrTextureAccess.h" 16 17class GrInvariantOutput; 18class GrTexture; 19 20/////////////////////////////////////////////////////////////////////////////// 21// Fragment Processor 22/////////////////////////////////////////////////////////////////////////////// 23 24class GrGLArtithmeticFP; 25 26class GrArithmeticFP : public GrFragmentProcessor { 27public: 28 static GrFragmentProcessor* Create(float k1, float k2, float k3, float k4, bool enforcePMColor, 29 GrTexture* background) { 30 return SkNEW_ARGS(GrArithmeticFP, (k1, k2, k3, k4, enforcePMColor, background)); 31 } 32 33 ~GrArithmeticFP() SK_OVERRIDE {}; 34 35 const char* name() const SK_OVERRIDE { return "Arithmetic"; } 36 37 void getGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuilder* b) const SK_OVERRIDE; 38 39 GrGLFragmentProcessor* createGLInstance() const SK_OVERRIDE; 40 41 GrTexture* backgroundTexture() const { return fBackgroundAccess.getTexture(); } 42 43 float k1() const { return fK1; } 44 float k2() const { return fK2; } 45 float k3() const { return fK3; } 46 float k4() const { return fK4; } 47 bool enforcePMColor() const { return fEnforcePMColor; } 48 49private: 50 bool onIsEqual(const GrFragmentProcessor&) const SK_OVERRIDE; 51 52 void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVERRIDE; 53 54 GrArithmeticFP(float k1, float k2, float k3, float k4, bool enforcePMColor, 55 GrTexture* background); 56 57 float fK1, fK2, fK3, fK4; 58 bool fEnforcePMColor; 59 GrCoordTransform fBackgroundTransform; 60 GrTextureAccess fBackgroundAccess; 61 62 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; 63 typedef GrFragmentProcessor INHERITED; 64}; 65 66#endif 67#endif 68