180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2012 Google Inc. 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru #ifndef SkTwoPointRadialGradient_DEFINED 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru #define SkTwoPointRadialGradient_DEFINED 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru #include "SkGradientShaderPriv.h" 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkTwoPointRadialGradient : public SkGradientShaderBase { 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkTwoPointRadialGradient(const SkPoint& start, SkScalar startRadius, 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru const SkPoint& end, SkScalar endRadius, 18779bf8a99dc7f03e5c43b26d4b85d7920ce89aeeDerek Sollenberger const Descriptor&); 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual BitmapType asABitmap(SkBitmap* bitmap, 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkMatrix* matrix, 2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru TileMode* xy) const SK_OVERRIDE; 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual GradientType asAGradient(GradientInfo* info) const SK_OVERRIDE; 24d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger virtual GrEffectRef* asNewEffect(GrContext* context, const SkPaint&) const SK_OVERRIDE; 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void shadeSpan(int x, int y, SkPMColor* dstCParam, 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru int count) SK_OVERRIDE; 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual bool setContext(const SkBitmap& device, 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru const SkPaint& paint, 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru const SkMatrix& matrix) SK_OVERRIDE; 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar getCenterX1() const { return fDiff.length(); } 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar getStartRadius() const { return fStartRadius; } 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar getDiffRadius() const { return fDiffRadius; } 3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 36d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger SK_DEVELOPER_TO_STRING() 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTwoPointRadialGradient) 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected: 4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkTwoPointRadialGradient(SkFlattenableReadBuffer& buffer); 4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE; 4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru typedef SkGradientShaderBase INHERITED; 4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru const SkPoint fCenter1; 4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru const SkPoint fCenter2; 4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru const SkScalar fRadius1; 4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru const SkScalar fRadius2; 4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkPoint fDiff; 5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fStartRadius, fDiffRadius, fSr2D2, fA, fOneOverTwoA; 5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru void init(); 5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif 56