| Index: src/effects/gradients/Sk4fGradientBase.h
|
| diff --git a/src/effects/gradients/Sk4fGradientBase.h b/src/effects/gradients/Sk4fGradientBase.h
|
| index 1fece72b520fd327c3607bb24218cd4b3178aaec..f745f8fc0bce6eb1f49c6eefdea53f55fe3369d8 100644
|
| --- a/src/effects/gradients/Sk4fGradientBase.h
|
| +++ b/src/effects/gradients/Sk4fGradientBase.h
|
| @@ -24,6 +24,9 @@ public:
|
|
|
| uint32_t getFlags() const override { return fFlags; }
|
|
|
| + void shadeSpan(int x, int y, SkPMColor dst[], int count) override;
|
| + void shadeSpan4f(int x, int y, SkPM4f dst[], int count) override;
|
| +
|
| protected:
|
| struct Interval {
|
| Interval(SkPMColor c0, SkScalar p0,
|
| @@ -32,14 +35,15 @@ protected:
|
|
|
| bool isZeroRamp() const { return fZeroRamp; }
|
|
|
| - // true when fx is in [p0,p1)
|
| - bool contains(SkScalar fx) const;
|
| -
|
| SkPM4f fC0, fDc;
|
| SkScalar fP0, fP1;
|
| bool fZeroRamp;
|
| };
|
|
|
| + virtual void mapTs(int x, int y, SkScalar ts[], int count) const = 0;
|
| +
|
| + void buildIntervals(const SkGradientShaderBase&, const ContextRec&, bool reverse);
|
| +
|
| SkSTArray<8, Interval, true> fIntervals;
|
| SkMatrix fDstToPos;
|
| SkMatrix::MapXYProc fDstToPosProc;
|
| @@ -50,6 +54,18 @@ protected:
|
|
|
| private:
|
| using INHERITED = SkShader::Context;
|
| +
|
| + void addMirrorIntervals(const SkGradientShaderBase&,
|
| + const Sk4f& componentScale, bool reverse);
|
| +
|
| + template<typename DstType, SkShader::TileMode tileMode>
|
| + class TSampler;
|
| +
|
| + template <typename DstType, bool do_premul>
|
| + void shadePremulSpan(int x, int y, DstType[], int count) const;
|
| +
|
| + template <typename DstType, bool do_premul, SkShader::TileMode tileMode>
|
| + void shadeSpanInternal(int x, int y, DstType[], int count) const;
|
| };
|
|
|
| #endif // Sk4fGradientBase_DEFINED
|
|
|