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 Sk4fLinearGradient_DEFINED 9 #define Sk4fLinearGradient_DEFINED 10 11 #include "Sk4fGradientBase.h" 12 #include "SkLinearGradient.h" 13 14 class SkLinearGradient:: 15 LinearGradient4fContext : public GradientShaderBase4fContext { 16 public: 17 LinearGradient4fContext(const SkLinearGradient&, const ContextRec&); 18 19 void shadeSpan(int x, int y, SkPMColor dst[], int count) override; 20 void shadeSpan4f(int x, int y, SkPM4f dst[], int count) override; 21 22 private: 23 using INHERITED = GradientShaderBase4fContext; 24 25 template<typename DstType, TileMode> 26 class LinearIntervalProcessor; 27 28 template <typename DstType, bool premul> 29 void shadePremulSpan(int x, int y, DstType[], int count) const; 30 31 template <typename DstType, bool premul, SkShader::TileMode tileMode> 32 void shadePremulTileSpan(int x, int y, DstType[], int count) const; 33 34 template <typename DstType, bool premul, SkShader::TileMode tileMode> 35 void shadeSpanInternal(int x, int y, DstType[], int count) const; 36 }; 37 38 #endif // Sk4fLinearGradient_DEFINED 39