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 "src/shaders/gradients/Sk4fGradientBase.h" |
12 | #include "src/shaders/gradients/SkLinearGradient.h" |
13 | |
14 | class SkLinearGradient:: |
15 | LinearGradient4fContext final : public GradientShaderBase4fContext { |
16 | public: |
17 | LinearGradient4fContext(const SkLinearGradient&, const ContextRec&); |
18 | |
19 | void shadeSpan(int x, int y, SkPMColor dst[], int count) override; |
20 | |
21 | private: |
22 | using INHERITED = GradientShaderBase4fContext; |
23 | |
24 | template<ApplyPremul, SkTileMode> |
25 | class LinearIntervalProcessor; |
26 | |
27 | template <ApplyPremul premul> |
28 | void shadePremulSpan(int x, int y, SkPMColor dst[], int count, |
29 | float bias0, float bias1) const; |
30 | |
31 | template <ApplyPremul premul, SkTileMode tileMode> |
32 | void shadeSpanInternal(int x, int y, SkPMColor dst[], int count, |
33 | float bias0, float bias1) const; |
34 | |
35 | const Sk4fGradientInterval* findInterval(SkScalar fx) const; |
36 | |
37 | mutable const Sk4fGradientInterval* fCachedInterval; |
38 | }; |
39 | |
40 | #endif // Sk4fLinearGradient_DEFINED |
41 | |