Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(573)

Side by Side Diff: src/effects/gradients/SkTwoPointConicalGradient.h

Issue 227623004: Add flipped gradient branch to two point conical gradient (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Another ignore Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #ifndef SkTwoPointConicalGradient_DEFINED 9 #ifndef SkTwoPointConicalGradient_DEFINED
10 #define SkTwoPointConicalGradient_DEFINED 10 #define SkTwoPointConicalGradient_DEFINED
11 11
12 #include "SkGradientShaderPriv.h" 12 #include "SkGradientShaderPriv.h"
13 13
14 struct TwoPtRadial { 14 struct TwoPtRadial {
15 enum { 15 enum {
16 kDontDrawT = 0x80000000 16 kDontDrawT = 0x80000000
17 }; 17 };
18 18
19 float fCenterX, fCenterY; 19 float fCenterX, fCenterY;
20 float fDCenterX, fDCenterY; 20 float fDCenterX, fDCenterY;
21 float fRadius; 21 float fRadius;
22 float fDRadius; 22 float fDRadius;
23 float fA; 23 float fA;
24 float fRadius2; 24 float fRadius2;
25 float fRDR; 25 float fRDR;
26 bool fFlipped;
26 27
27 void init(const SkPoint& center0, SkScalar rad0, 28 void init(const SkPoint& center0, SkScalar rad0,
28 const SkPoint& center1, SkScalar rad1); 29 const SkPoint& center1, SkScalar rad1,
30 bool flipped);
29 31
30 // used by setup and nextT 32 // used by setup and nextT
31 float fRelX, fRelY, fIncX, fIncY; 33 float fRelX, fRelY, fIncX, fIncY;
32 float fB, fDB; 34 float fB, fDB;
33 35
34 void setup(SkScalar fx, SkScalar fy, SkScalar dfx, SkScalar dfy); 36 void setup(SkScalar fx, SkScalar fy, SkScalar dfx, SkScalar dfy);
35 SkFixed nextT(); 37 SkFixed nextT();
36 38
37 static bool DontDrawT(SkFixed t) { 39 static bool DontDrawT(SkFixed t) {
38 return kDontDrawT == (uint32_t)t; 40 return kDontDrawT == (uint32_t)t;
39 } 41 }
40 }; 42 };
41 43
42 44
43 class SkTwoPointConicalGradient : public SkGradientShaderBase { 45 class SkTwoPointConicalGradient : public SkGradientShaderBase {
44 TwoPtRadial fRec; 46 TwoPtRadial fRec;
45 void init(); 47 void init();
46 48
47 public: 49 public:
48 SkTwoPointConicalGradient(const SkPoint& start, SkScalar startRadius, 50 SkTwoPointConicalGradient(const SkPoint& start, SkScalar startRadius,
49 const SkPoint& end, SkScalar endRadius, 51 const SkPoint& end, SkScalar endRadius,
50 const Descriptor&); 52 bool flippedGrad, const Descriptor&);
51 53
52 virtual void shadeSpan(int x, int y, SkPMColor* dstCParam, 54 virtual void shadeSpan(int x, int y, SkPMColor* dstCParam,
53 int count) SK_OVERRIDE; 55 int count) SK_OVERRIDE;
54 virtual bool setContext(const SkBitmap& device, 56 virtual bool setContext(const SkBitmap& device,
55 const SkPaint& paint, 57 const SkPaint& paint,
56 const SkMatrix& matrix) SK_OVERRIDE; 58 const SkMatrix& matrix) SK_OVERRIDE;
57 59
58 virtual BitmapType asABitmap(SkBitmap* bitmap, 60 virtual BitmapType asABitmap(SkBitmap* bitmap,
59 SkMatrix* matrix, 61 SkMatrix* matrix,
60 TileMode* xy) const; 62 TileMode* xy) const;
61 virtual SkShader::GradientType asAGradient(GradientInfo* info) const SK_OVE RRIDE; 63 virtual SkShader::GradientType asAGradient(GradientInfo* info) const SK_OVE RRIDE;
62 virtual GrEffectRef* asNewEffect(GrContext* context, const SkPaint& paint) c onst SK_OVERRIDE; 64 virtual GrEffectRef* asNewEffect(GrContext* context, const SkPaint& paint) c onst SK_OVERRIDE;
63 virtual bool isOpaque() const SK_OVERRIDE; 65 virtual bool isOpaque() const SK_OVERRIDE;
64 66
65 SkScalar getCenterX1() const { return SkPoint::Distance(fCenter1, fCenter2); } 67 SkScalar getCenterX1() const { return SkPoint::Distance(fCenter1, fCenter2); }
66 SkScalar getStartRadius() const { return fRadius1; } 68 SkScalar getStartRadius() const { return fRadius1; }
67 SkScalar getDiffRadius() const { return fRadius2 - fRadius1; } 69 SkScalar getDiffRadius() const { return fRadius2 - fRadius1; }
68 const SkPoint& getStartCenter() const { return fCenter1; } 70 const SkPoint& getStartCenter() const { return fCenter1; }
69 const SkPoint& getEndCenter() const { return fCenter2; } 71 const SkPoint& getEndCenter() const { return fCenter2; }
70 SkScalar getEndRadius() const { return fRadius2; } 72 SkScalar getEndRadius() const { return fRadius2; }
73 bool isFlippedGrad() const { return fFlippedGrad; }
71 74
72 SK_TO_STRING_OVERRIDE() 75 SK_TO_STRING_OVERRIDE()
73 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTwoPointConicalGradien t) 76 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTwoPointConicalGradien t)
74 77
75 protected: 78 protected:
76 SkTwoPointConicalGradient(SkReadBuffer& buffer); 79 SkTwoPointConicalGradient(SkReadBuffer& buffer);
77 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE; 80 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
78 81
79 private: 82 private:
83 SkPoint fCenter1;
84 SkPoint fCenter2;
85 SkScalar fRadius1;
86 SkScalar fRadius2;
87 bool fFlippedGrad;
88
80 typedef SkGradientShaderBase INHERITED; 89 typedef SkGradientShaderBase INHERITED;
81 const SkPoint fCenter1;
82 const SkPoint fCenter2;
83 const SkScalar fRadius1;
84 const SkScalar fRadius2;
85 }; 90 };
86 91
87 #endif 92 #endif
OLDNEW
« no previous file with comments | « src/effects/gradients/SkGradientShaderPriv.h ('k') | src/effects/gradients/SkTwoPointConicalGradient.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698