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 final : public GradientShaderBase4fContext { 16 public: 17 LinearGradient4fContext(const SkLinearGradient&, const ContextRec&); 18 19 void shadeSpan4f(int x, int y, SkPM4f dst[], int count) override; 20 21 private: 22 using INHERITED = GradientShaderBase4fContext; 23 24 template<ApplyPremul, TileMode> 25 class LinearIntervalProcessor; 26 27 template <ApplyPremul premul> 28 void shadePremulSpan(int x, int y, SkPM4f[], int count) const; 29 30 template <ApplyPremul premul, SkShader::TileMode tileMode> 31 void shadeSpanInternal(int x, int y, SkPM4f[], int count) const; 32 33 const Sk4fGradientInterval* findInterval(SkScalar fx) const; 34 35 mutable const Sk4fGradientInterval* fCachedInterval; 36 }; 37 38 #endif // Sk4fLinearGradient_DEFINED 39