16c432337818ff15e553c957d466a67e54684f97brileya@google.com 26c432337818ff15e553c957d466a67e54684f97brileya@google.com/* 36c432337818ff15e553c957d466a67e54684f97brileya@google.com * Copyright 2012 Google Inc. 46c432337818ff15e553c957d466a67e54684f97brileya@google.com * 56c432337818ff15e553c957d466a67e54684f97brileya@google.com * Use of this source code is governed by a BSD-style license that can be 66c432337818ff15e553c957d466a67e54684f97brileya@google.com * found in the LICENSE file. 76c432337818ff15e553c957d466a67e54684f97brileya@google.com */ 86c432337818ff15e553c957d466a67e54684f97brileya@google.com 96c432337818ff15e553c957d466a67e54684f97brileya@google.com #ifndef SkTwoPointRadialGradient_DEFINED 106c432337818ff15e553c957d466a67e54684f97brileya@google.com #define SkTwoPointRadialGradient_DEFINED 116c432337818ff15e553c957d466a67e54684f97brileya@google.com 126c432337818ff15e553c957d466a67e54684f97brileya@google.com #include "SkGradientShaderPriv.h" 136c432337818ff15e553c957d466a67e54684f97brileya@google.com 146c432337818ff15e553c957d466a67e54684f97brileya@google.comclass SkTwoPointRadialGradient : public SkGradientShaderBase { 156c432337818ff15e553c957d466a67e54684f97brileya@google.compublic: 166c432337818ff15e553c957d466a67e54684f97brileya@google.com SkTwoPointRadialGradient(const SkPoint& start, SkScalar startRadius, 176c432337818ff15e553c957d466a67e54684f97brileya@google.com const SkPoint& end, SkScalar endRadius, 1852d6fb7020e41328b86785a5ea12d42f44f36b8creed@google.com const Descriptor&); 196c432337818ff15e553c957d466a67e54684f97brileya@google.com 206c432337818ff15e553c957d466a67e54684f97brileya@google.com virtual BitmapType asABitmap(SkBitmap* bitmap, 216c432337818ff15e553c957d466a67e54684f97brileya@google.com SkMatrix* matrix, 226c432337818ff15e553c957d466a67e54684f97brileya@google.com TileMode* xy) const SK_OVERRIDE; 236c432337818ff15e553c957d466a67e54684f97brileya@google.com virtual GradientType asAGradient(GradientInfo* info) const SK_OVERRIDE; 2438b58f31a3070ea9254d55894a59528270ac67ddbsalomon@google.com virtual GrEffectRef* asNewEffect(GrContext* context, const SkPaint&) const SK_OVERRIDE; 256c432337818ff15e553c957d466a67e54684f97brileya@google.com 266c432337818ff15e553c957d466a67e54684f97brileya@google.com virtual void shadeSpan(int x, int y, SkPMColor* dstCParam, 276c432337818ff15e553c957d466a67e54684f97brileya@google.com int count) SK_OVERRIDE; 286c432337818ff15e553c957d466a67e54684f97brileya@google.com virtual bool setContext(const SkBitmap& device, 296c432337818ff15e553c957d466a67e54684f97brileya@google.com const SkPaint& paint, 306c432337818ff15e553c957d466a67e54684f97brileya@google.com const SkMatrix& matrix) SK_OVERRIDE; 316c432337818ff15e553c957d466a67e54684f97brileya@google.com 3224a508e688b595f3381afc9a0e9d069e483fa360rileya@google.com SkScalar getCenterX1() const { return fDiff.length(); } 3324a508e688b595f3381afc9a0e9d069e483fa360rileya@google.com SkScalar getStartRadius() const { return fStartRadius; } 3424a508e688b595f3381afc9a0e9d069e483fa360rileya@google.com SkScalar getDiffRadius() const { return fDiffRadius; } 3524a508e688b595f3381afc9a0e9d069e483fa360rileya@google.com 36bc0c7b3fc892adc21eeac2d56b02a525ee811fdbrobertphillips@google.com SK_DEVELOPER_TO_STRING() 376c432337818ff15e553c957d466a67e54684f97brileya@google.com SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTwoPointRadialGradient) 386c432337818ff15e553c957d466a67e54684f97brileya@google.com 396c432337818ff15e553c957d466a67e54684f97brileya@google.comprotected: 406c432337818ff15e553c957d466a67e54684f97brileya@google.com SkTwoPointRadialGradient(SkFlattenableReadBuffer& buffer); 416c432337818ff15e553c957d466a67e54684f97brileya@google.com virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE; 426c432337818ff15e553c957d466a67e54684f97brileya@google.com 436c432337818ff15e553c957d466a67e54684f97brileya@google.comprivate: 446c432337818ff15e553c957d466a67e54684f97brileya@google.com typedef SkGradientShaderBase INHERITED; 456c432337818ff15e553c957d466a67e54684f97brileya@google.com const SkPoint fCenter1; 466c432337818ff15e553c957d466a67e54684f97brileya@google.com const SkPoint fCenter2; 476c432337818ff15e553c957d466a67e54684f97brileya@google.com const SkScalar fRadius1; 486c432337818ff15e553c957d466a67e54684f97brileya@google.com const SkScalar fRadius2; 496c432337818ff15e553c957d466a67e54684f97brileya@google.com SkPoint fDiff; 506c432337818ff15e553c957d466a67e54684f97brileya@google.com SkScalar fStartRadius, fDiffRadius, fSr2D2, fA, fOneOverTwoA; 516c432337818ff15e553c957d466a67e54684f97brileya@google.com 526c432337818ff15e553c957d466a67e54684f97brileya@google.com void init(); 536c432337818ff15e553c957d466a67e54684f97brileya@google.com}; 546c432337818ff15e553c957d466a67e54684f97brileya@google.com 556c432337818ff15e553c957d466a67e54684f97brileya@google.com#endif 56