Chromium Code Reviews| Index: src/effects/gradients/SkTwoPointConicalGradient_Gpu.h |
| diff --git a/src/effects/gradients/SkTwoPointConicalGradient_Gpu.h b/src/effects/gradients/SkTwoPointConicalGradient_Gpu.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4a97178aa5ea93d6352027a9990790bdd8b13244 |
| --- /dev/null |
| +++ b/src/effects/gradients/SkTwoPointConicalGradient_Gpu.h |
| @@ -0,0 +1,71 @@ |
| +/* |
| + * Copyright 2014 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#ifndef Gr2PntConicalGradientEffect_DEFINED |
| +#define Gr2PntConicalGradientEffect_DEFINED |
| + |
| +#include "SkGradientShaderPriv.h" |
| + |
| +class GrEffectRef; |
| +class SkTwoPointConicalGradient; |
| +class GrGL2PntConicalGradientEffect; |
| + |
| +class Gr2PntConicalGradientEffect : public GrGradientEffect { |
|
bsalomon
2014/04/02 21:12:04
How about 2Point or 2Pt? Just for consistency with
egdaniel
2014/04/03 14:36:56
done
On 2014/04/02 21:12:04, bsalomon wrote:
|
| +public: |
| + |
| + static GrEffectRef* Create(GrContext* ctx, |
| + const SkTwoPointConicalGradient& shader, |
| + const SkMatrix& matrix, |
| + SkShader::TileMode tm) { |
| + AutoEffectUnref effect(SkNEW_ARGS(Gr2PntConicalGradientEffect, (ctx, shader, matrix, tm))); |
| + return CreateEffectRef(effect); |
| + } |
| + |
| + virtual ~Gr2PntConicalGradientEffect() { } |
| + |
| + static const char* Name() { return "Two-Point Conical Gradient"; } |
| + virtual const GrBackendEffectFactory& getFactory() const SK_OVERRIDE; |
| + |
| + // The radial gradient parameters can collapse to a linear (instead of quadratic) equation. |
| + bool isDegenerate() const { return SkScalarAbs(fDiffRadius) == SkScalarAbs(fCenterX1); } |
| + SkScalar center() const { return fCenterX1; } |
| + SkScalar diffRadius() const { return fDiffRadius; } |
| + SkScalar radius() const { return fRadius0; } |
| + |
| + typedef GrGL2PntConicalGradientEffect GLEffect; |
| + |
| +private: |
| + virtual bool onIsEqual(const GrEffect& sBase) const SK_OVERRIDE { |
| + const Gr2PntConicalGradientEffect& s = CastEffect<Gr2PntConicalGradientEffect>(sBase); |
| + return (INHERITED::onIsEqual(sBase) && |
| + this->fCenterX1 == s.fCenterX1 && |
| + this->fRadius0 == s.fRadius0 && |
| + this->fDiffRadius == s.fDiffRadius); |
| + } |
| + |
| + Gr2PntConicalGradientEffect(GrContext* ctx, |
| + const SkTwoPointConicalGradient& shader, |
| + const SkMatrix& matrix, |
| + SkShader::TileMode tm); |
| + |
| + GR_DECLARE_EFFECT_TEST; |
| + |
| + // @{ |
| + // Cache of values - these can change arbitrarily, EXCEPT |
| + // we shouldn't change between degenerate and non-degenerate?! |
| + |
| + GrCoordTransform fBTransform; |
| + SkScalar fCenterX1; |
| + SkScalar fRadius0; |
| + SkScalar fDiffRadius; |
| + |
| + // @} |
| + |
| + typedef GrGradientEffect INHERITED; |
| +}; |
| + |
| +#endif |