OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright 2013 Google Inc. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license that can be | |
5 * found in the LICENSE file. | |
6 */ | |
7 | |
8 #ifndef GrEllipseEdgeEffect_DEFINED | |
9 #define GrEllipseEdgeEffect_DEFINED | |
10 | |
11 #include "GrEffect.h" | |
12 | |
13 class GrGLEllipseEdgeEffect; | |
14 | |
15 /** | |
16 * The output of this effect is a modulation of the input color and coverage for
an axis-aligned | |
17 * ellipse, specified as center_x, center_y, x_radius, x_radius/y_radius in wind
ow space (y-down). | |
18 */ | |
19 | |
20 class GrEllipseEdgeEffect : public GrEffect { | |
21 public: | |
22 static GrEffectRef* Create(bool stroke) { | |
23 // we go through this so we only have one copy of each effect (stroked/f
illed) | |
24 static SkAutoTUnref<GrEffectRef> gEllipseStrokeEdgeEffectRef( | |
25 CreateEffectRef(AutoEffectUnref(SkNEW_ARGS(GrEllipseEdge
Effect, (true))))); | |
26 static SkAutoTUnref<GrEffectRef> gEllipseFillEdgeEffectRef( | |
27 CreateEffectRef(AutoEffectUnref(SkNEW_ARGS(GrEllipseEdge
Effect, (false))))); | |
28 | |
29 if (stroke) { | |
30 gEllipseStrokeEdgeEffectRef.get()->ref(); | |
31 return gEllipseStrokeEdgeEffectRef; | |
32 } else { | |
33 gEllipseFillEdgeEffectRef.get()->ref(); | |
34 return gEllipseFillEdgeEffectRef; | |
35 } | |
36 } | |
37 | |
38 virtual ~GrEllipseEdgeEffect() {} | |
39 | |
40 static const char* Name() { return "EllipseEdge"; } | |
41 | |
42 virtual void getConstantColorComponents(GrColor* color, uint32_t* validFlags
) const SK_OVERRIDE; | |
43 | |
44 typedef GrGLEllipseEdgeEffect GLEffect; | |
45 | |
46 virtual const GrBackendEffectFactory& getFactory() const SK_OVERRIDE; | |
47 | |
48 inline bool isStroked() const { return fStroke; } | |
49 | |
50 private: | |
51 GrEllipseEdgeEffect(bool stroke); | |
52 | |
53 virtual bool onIsEqual(const GrEffect& other) const SK_OVERRIDE { | |
54 const GrEllipseEdgeEffect& eee = CastEffect<GrEllipseEdgeEffect>(other); | |
55 return eee.fStroke == fStroke; | |
56 } | |
57 | |
58 bool fStroke; | |
59 | |
60 GR_DECLARE_EFFECT_TEST; | |
61 | |
62 typedef GrEffect INHERITED; | |
63 }; | |
64 | |
65 #endif | |
OLD | NEW |