diff -r 000000000000 -r 6474c204b198 gfx/skia/trunk/src/effects/gradients/SkTwoPointRadialGradient.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/skia/trunk/src/effects/gradients/SkTwoPointRadialGradient.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,55 @@ + +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + #ifndef SkTwoPointRadialGradient_DEFINED + #define SkTwoPointRadialGradient_DEFINED + + #include "SkGradientShaderPriv.h" + +class SkTwoPointRadialGradient : public SkGradientShaderBase { +public: + SkTwoPointRadialGradient(const SkPoint& start, SkScalar startRadius, + const SkPoint& end, SkScalar endRadius, + const Descriptor&); + + virtual BitmapType asABitmap(SkBitmap* bitmap, + SkMatrix* matrix, + TileMode* xy) const SK_OVERRIDE; + virtual GradientType asAGradient(GradientInfo* info) const SK_OVERRIDE; + virtual GrEffectRef* asNewEffect(GrContext* context, const SkPaint&) const SK_OVERRIDE; + + virtual void shadeSpan(int x, int y, SkPMColor* dstCParam, + int count) SK_OVERRIDE; + virtual bool setContext(const SkBitmap& device, + const SkPaint& paint, + const SkMatrix& matrix) SK_OVERRIDE; + + SkScalar getCenterX1() const { return fDiff.length(); } + SkScalar getStartRadius() const { return fStartRadius; } + SkScalar getDiffRadius() const { return fDiffRadius; } + + SK_TO_STRING_OVERRIDE() + SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTwoPointRadialGradient) + +protected: + SkTwoPointRadialGradient(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE; + +private: + typedef SkGradientShaderBase INHERITED; + const SkPoint fCenter1; + const SkPoint fCenter2; + const SkScalar fRadius1; + const SkScalar fRadius2; + SkPoint fDiff; + SkScalar fStartRadius, fDiffRadius, fSr2D2, fA, fOneOverTwoA; + + void init(); +}; + +#endif