Index: src/gpu/effects/GrEdgeEffect.h |
=================================================================== |
--- src/gpu/effects/GrEdgeEffect.h (revision 8491) |
+++ src/gpu/effects/GrEdgeEffect.h (working copy) |
@@ -1,85 +0,0 @@ |
-/* |
- * Copyright 2013 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#ifndef GrEdgeEffect_DEFINED |
-#define GrEdgeEffect_DEFINED |
- |
-#include "GrEffect.h" |
- |
-class GrGLEdgeEffect; |
- |
-/** |
- * The output of this effect is one of three different edge types: hairlines, quads, |
- * and hairline quads. |
- */ |
- |
-class GrEdgeEffect : public GrEffect { |
-public: |
- enum EdgeType { |
- /* 1-pixel wide line |
- 2D implicit device coord line eq (a*x + b*y +c = 0). 4th component unused. */ |
- kHairLine_EdgeType = 0, |
- /* Quadratic specified by 0=u^2-v canonical coords. u and v are the first |
- two components of the vertex attribute. Coverage is based on signed |
- distance with negative being inside, positive outside. The edge is specified in |
- window space (y-down). If either the third or fourth component of the interpolated |
- vertex coord is > 0 then the pixel is considered outside the edge. This is used to |
- attempt to trim to a portion of the infinite quad. Requires shader derivative |
- instruction support. */ |
- kQuad_EdgeType, |
- /* Similar to above but for hairline quadratics. Uses unsigned distance. |
- Coverage is min(0, 1-distance). 3rd & 4th component unused. Requires |
- shader derivative instruction support. */ |
- kHairQuad_EdgeType, |
- |
- kLast_EdgeType = kHairQuad_EdgeType |
- }; |
- static const int kEdgeTypeCount = kLast_EdgeType + 1; |
- |
- static GrEffectRef* Create(EdgeType type) { |
- // we go through this so we only have one copy of each effect |
- static GrEffectRef* gEdgeEffectRef[kEdgeTypeCount] = { |
- CreateEffectRef(AutoEffectUnref(SkNEW_ARGS(GrEdgeEffect, (kHairLine_EdgeType)))), |
- CreateEffectRef(AutoEffectUnref(SkNEW_ARGS(GrEdgeEffect, (kQuad_EdgeType)))), |
- CreateEffectRef(AutoEffectUnref(SkNEW_ARGS(GrEdgeEffect, (kHairQuad_EdgeType)))), |
- }; |
- static SkAutoTUnref<GrEffectRef> gUnref0(gEdgeEffectRef[0]); |
- static SkAutoTUnref<GrEffectRef> gUnref1(gEdgeEffectRef[1]); |
- static SkAutoTUnref<GrEffectRef> gUnref2(gEdgeEffectRef[2]); |
- |
- gEdgeEffectRef[type]->ref(); |
- return gEdgeEffectRef[type]; |
- } |
- |
- virtual ~GrEdgeEffect() {} |
- |
- static const char* Name() { return "Edge"; } |
- |
- virtual void getConstantColorComponents(GrColor* color, uint32_t* validFlags) const SK_OVERRIDE; |
- |
- typedef GrGLEdgeEffect GLEffect; |
- |
- virtual const GrBackendEffectFactory& getFactory() const SK_OVERRIDE; |
- |
- EdgeType edgeType() const { return fEdgeType; } |
- |
-private: |
- GrEdgeEffect(EdgeType edgeType); |
- |
- virtual bool onIsEqual(const GrEffect& other) const SK_OVERRIDE { |
- const GrEdgeEffect& qee = CastEffect<GrEdgeEffect>(other); |
- return qee.fEdgeType == fEdgeType; |
- } |
- |
- EdgeType fEdgeType; |
- |
- GR_DECLARE_EFFECT_TEST; |
- |
- typedef GrEffect INHERITED; |
-}; |
- |
-#endif |