• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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