| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef GrBezierEffect_DEFINED | 8 #ifndef GrBezierEffect_DEFINED |
| 9 #define GrBezierEffect_DEFINED | 9 #define GrBezierEffect_DEFINED |
| 10 | 10 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 */ | 56 */ |
| 57 class GrGLConicEffect; | 57 class GrGLConicEffect; |
| 58 | 58 |
| 59 class GrConicEffect : public GrGeometryProcessor { | 59 class GrConicEffect : public GrGeometryProcessor { |
| 60 public: | 60 public: |
| 61 static GrGeometryProcessor* Create(GrColor color, | 61 static GrGeometryProcessor* Create(GrColor color, |
| 62 const SkMatrix& viewMatrix, | 62 const SkMatrix& viewMatrix, |
| 63 const GrPrimitiveEdgeType edgeType, | 63 const GrPrimitiveEdgeType edgeType, |
| 64 const GrDrawTargetCaps& caps, | 64 const GrDrawTargetCaps& caps, |
| 65 const SkMatrix& localMatrix, | 65 const SkMatrix& localMatrix, |
| 66 bool usesLocalCoords, |
| 66 uint8_t coverage = 0xff) { | 67 uint8_t coverage = 0xff) { |
| 67 switch (edgeType) { | 68 switch (edgeType) { |
| 68 case kFillAA_GrProcessorEdgeType: | 69 case kFillAA_GrProcessorEdgeType: |
| 69 if (!caps.shaderCaps()->shaderDerivativeSupport()) { | 70 if (!caps.shaderCaps()->shaderDerivativeSupport()) { |
| 70 return NULL; | 71 return NULL; |
| 71 } | 72 } |
| 72 return SkNEW_ARGS(GrConicEffect, (color, viewMatrix, coverage, | 73 return SkNEW_ARGS(GrConicEffect, (color, viewMatrix, coverage, |
| 73 kFillAA_GrProcessorEdgeType, | 74 kFillAA_GrProcessorEdgeType, |
| 74 localMatrix)); | 75 localMatrix, usesLocalCoords))
; |
| 75 case kHairlineAA_GrProcessorEdgeType: | 76 case kHairlineAA_GrProcessorEdgeType: |
| 76 if (!caps.shaderCaps()->shaderDerivativeSupport()) { | 77 if (!caps.shaderCaps()->shaderDerivativeSupport()) { |
| 77 return NULL; | 78 return NULL; |
| 78 } | 79 } |
| 79 return SkNEW_ARGS(GrConicEffect, (color, viewMatrix, coverage, | 80 return SkNEW_ARGS(GrConicEffect, (color, viewMatrix, coverage, |
| 80 kHairlineAA_GrProcessorEdgeTyp
e, | 81 kHairlineAA_GrProcessorEdgeTyp
e, |
| 81 localMatrix)); | 82 localMatrix, usesLocalCoords))
; |
| 82 case kFillBW_GrProcessorEdgeType: | 83 case kFillBW_GrProcessorEdgeType: |
| 83 return SkNEW_ARGS(GrConicEffect, (color, viewMatrix, coverage, | 84 return SkNEW_ARGS(GrConicEffect, (color, viewMatrix, coverage, |
| 84 kFillBW_GrProcessorEdgeType, | 85 kFillBW_GrProcessorEdgeType, |
| 85 localMatrix)); | 86 localMatrix, usesLocalCoords))
; |
| 86 default: | 87 default: |
| 87 return NULL; | 88 return NULL; |
| 88 } | 89 } |
| 89 } | 90 } |
| 90 | 91 |
| 91 virtual ~GrConicEffect(); | 92 virtual ~GrConicEffect(); |
| 92 | 93 |
| 93 const char* name() const override { return "Conic"; } | 94 const char* name() const override { return "Conic"; } |
| 94 | 95 |
| 95 inline const Attribute* inPosition() const { return fInPosition; } | 96 inline const Attribute* inPosition() const { return fInPosition; } |
| 96 inline const Attribute* inConicCoeffs() const { return fInConicCoeffs; } | 97 inline const Attribute* inConicCoeffs() const { return fInConicCoeffs; } |
| 97 inline bool isAntiAliased() const { return GrProcessorEdgeTypeIsAA(fEdgeType
); } | 98 inline bool isAntiAliased() const { return GrProcessorEdgeTypeIsAA(fEdgeType
); } |
| 98 inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType);
} | 99 inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType);
} |
| 99 inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } | 100 inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } |
| 100 GrColor color() const { return fColor; } | 101 GrColor color() const { return fColor; } |
| 102 bool colorIgnored() const { return GrColor_ILLEGAL == fColor; } |
| 101 const SkMatrix& viewMatrix() const { return fViewMatrix; } | 103 const SkMatrix& viewMatrix() const { return fViewMatrix; } |
| 102 const SkMatrix& localMatrix() const { return fLocalMatrix; } | 104 const SkMatrix& localMatrix() const { return fLocalMatrix; } |
| 105 bool usesLocalCoords() const { return fUsesLocalCoords; } |
| 106 uint8_t coverageScale() const { return fCoverageScale; } |
| 103 | 107 |
| 104 virtual void getGLProcessorKey(const GrBatchTracker& bt, | 108 virtual void getGLProcessorKey(const GrBatchTracker& bt, |
| 105 const GrGLSLCaps& caps, | 109 const GrGLSLCaps& caps, |
| 106 GrProcessorKeyBuilder* b) const override; | 110 GrProcessorKeyBuilder* b) const override; |
| 107 | 111 |
| 108 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, | 112 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, |
| 109 const GrGLSLCaps&) const ov
erride; | 113 const GrGLSLCaps&) const ov
erride; |
| 110 | 114 |
| 111 void initBatchTracker(GrBatchTracker*, const GrPipelineInfo&) const override
; | |
| 112 | |
| 113 private: | 115 private: |
| 114 GrConicEffect(GrColor, const SkMatrix& viewMatrix, uint8_t coverage, GrPrimi
tiveEdgeType, | 116 GrConicEffect(GrColor, const SkMatrix& viewMatrix, uint8_t coverage, GrPrimi
tiveEdgeType, |
| 115 const SkMatrix& localMatrix); | 117 const SkMatrix& localMatrix, bool usesLocalCoords); |
| 116 | 118 |
| 117 GrColor fColor; | 119 GrColor fColor; |
| 118 SkMatrix fViewMatrix; | 120 SkMatrix fViewMatrix; |
| 119 SkMatrix fLocalMatrix; | 121 SkMatrix fLocalMatrix; |
| 122 bool fUsesLocalCoords; |
| 120 uint8_t fCoverageScale; | 123 uint8_t fCoverageScale; |
| 121 GrPrimitiveEdgeType fEdgeType; | 124 GrPrimitiveEdgeType fEdgeType; |
| 122 const Attribute* fInPosition; | 125 const Attribute* fInPosition; |
| 123 const Attribute* fInConicCoeffs; | 126 const Attribute* fInConicCoeffs; |
| 124 | 127 |
| 125 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; | 128 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; |
| 126 | 129 |
| 127 typedef GrGeometryProcessor INHERITED; | 130 typedef GrGeometryProcessor INHERITED; |
| 128 }; | 131 }; |
| 129 | 132 |
| 130 /////////////////////////////////////////////////////////////////////////////// | 133 /////////////////////////////////////////////////////////////////////////////// |
| 131 /** | 134 /** |
| 132 * The output of this effect is a hairline edge for quadratics. | 135 * The output of this effect is a hairline edge for quadratics. |
| 133 * Quadratic specified by 0=u^2-v canonical coords. u and v are the first | 136 * Quadratic specified by 0=u^2-v canonical coords. u and v are the first |
| 134 * two components of the vertex attribute. At the three control points that defi
ne | 137 * two components of the vertex attribute. At the three control points that defi
ne |
| 135 * the Quadratic, u, v have the values {0,0}, {1/2, 0}, and {1, 1} respectively. | 138 * the Quadratic, u, v have the values {0,0}, {1/2, 0}, and {1, 1} respectively. |
| 136 * Coverage for AA is min(0, 1-distance). 3rd & 4th cimponent unused. | 139 * Coverage for AA is min(0, 1-distance). 3rd & 4th cimponent unused. |
| 137 * Requires shader derivative instruction support. | 140 * Requires shader derivative instruction support. |
| 138 */ | 141 */ |
| 139 class GrGLQuadEffect; | 142 class GrGLQuadEffect; |
| 140 | 143 |
| 141 class GrQuadEffect : public GrGeometryProcessor { | 144 class GrQuadEffect : public GrGeometryProcessor { |
| 142 public: | 145 public: |
| 143 static GrGeometryProcessor* Create(GrColor color, | 146 static GrGeometryProcessor* Create(GrColor color, |
| 144 const SkMatrix& viewMatrix, | 147 const SkMatrix& viewMatrix, |
| 145 const GrPrimitiveEdgeType edgeType, | 148 const GrPrimitiveEdgeType edgeType, |
| 146 const GrDrawTargetCaps& caps, | 149 const GrDrawTargetCaps& caps, |
| 147 const SkMatrix& localMatrix, | 150 const SkMatrix& localMatrix, |
| 151 bool usesLocalCoords, |
| 148 uint8_t coverage = 0xff) { | 152 uint8_t coverage = 0xff) { |
| 149 switch (edgeType) { | 153 switch (edgeType) { |
| 150 case kFillAA_GrProcessorEdgeType: | 154 case kFillAA_GrProcessorEdgeType: |
| 151 if (!caps.shaderCaps()->shaderDerivativeSupport()) { | 155 if (!caps.shaderCaps()->shaderDerivativeSupport()) { |
| 152 return NULL; | 156 return NULL; |
| 153 } | 157 } |
| 154 return SkNEW_ARGS(GrQuadEffect, (color, viewMatrix, coverage, | 158 return SkNEW_ARGS(GrQuadEffect, (color, viewMatrix, coverage, |
| 155 kFillAA_GrProcessorEdgeType, | 159 kFillAA_GrProcessorEdgeType, |
| 156 localMatrix)); | 160 localMatrix, usesLocalCoords)); |
| 157 case kHairlineAA_GrProcessorEdgeType: | 161 case kHairlineAA_GrProcessorEdgeType: |
| 158 if (!caps.shaderCaps()->shaderDerivativeSupport()) { | 162 if (!caps.shaderCaps()->shaderDerivativeSupport()) { |
| 159 return NULL; | 163 return NULL; |
| 160 } | 164 } |
| 161 return SkNEW_ARGS(GrQuadEffect, (color, viewMatrix, coverage, | 165 return SkNEW_ARGS(GrQuadEffect, (color, viewMatrix, coverage, |
| 162 kHairlineAA_GrProcessorEdgeType
, | 166 kHairlineAA_GrProcessorEdgeType
, |
| 163 localMatrix)); | 167 localMatrix, usesLocalCoords)); |
| 164 case kFillBW_GrProcessorEdgeType: | 168 case kFillBW_GrProcessorEdgeType: |
| 165 return SkNEW_ARGS(GrQuadEffect, (color, viewMatrix, coverage, | 169 return SkNEW_ARGS(GrQuadEffect, (color, viewMatrix, coverage, |
| 166 kFillBW_GrProcessorEdgeType, | 170 kFillBW_GrProcessorEdgeType, |
| 167 localMatrix)); | 171 localMatrix, usesLocalCoords)); |
| 168 default: | 172 default: |
| 169 return NULL; | 173 return NULL; |
| 170 } | 174 } |
| 171 } | 175 } |
| 172 | 176 |
| 173 virtual ~GrQuadEffect(); | 177 virtual ~GrQuadEffect(); |
| 174 | 178 |
| 175 const char* name() const override { return "Quad"; } | 179 const char* name() const override { return "Quad"; } |
| 176 | 180 |
| 177 inline const Attribute* inPosition() const { return fInPosition; } | 181 inline const Attribute* inPosition() const { return fInPosition; } |
| 178 inline const Attribute* inHairQuadEdge() const { return fInHairQuadEdge; } | 182 inline const Attribute* inHairQuadEdge() const { return fInHairQuadEdge; } |
| 179 inline bool isAntiAliased() const { return GrProcessorEdgeTypeIsAA(fEdgeType
); } | 183 inline bool isAntiAliased() const { return GrProcessorEdgeTypeIsAA(fEdgeType
); } |
| 180 inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType);
} | 184 inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType);
} |
| 181 inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } | 185 inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } |
| 182 GrColor color() const { return fColor; } | 186 GrColor color() const { return fColor; } |
| 187 bool colorIgnored() const { return GrColor_ILLEGAL == fColor; } |
| 183 const SkMatrix& viewMatrix() const { return fViewMatrix; } | 188 const SkMatrix& viewMatrix() const { return fViewMatrix; } |
| 184 const SkMatrix& localMatrix() const { return fLocalMatrix; } | 189 const SkMatrix& localMatrix() const { return fLocalMatrix; } |
| 190 bool usesLocalCoords() const { return fUsesLocalCoords; } |
| 191 uint8_t coverageScale() const { return fCoverageScale; } |
| 185 | 192 |
| 186 virtual void getGLProcessorKey(const GrBatchTracker& bt, | 193 virtual void getGLProcessorKey(const GrBatchTracker& bt, |
| 187 const GrGLSLCaps& caps, | 194 const GrGLSLCaps& caps, |
| 188 GrProcessorKeyBuilder* b) const override; | 195 GrProcessorKeyBuilder* b) const override; |
| 189 | 196 |
| 190 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, | 197 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, |
| 191 const GrGLSLCaps&) const ov
erride; | 198 const GrGLSLCaps&) const ov
erride; |
| 192 | 199 |
| 193 void initBatchTracker(GrBatchTracker*, const GrPipelineInfo&) const override
; | |
| 194 | |
| 195 private: | 200 private: |
| 196 GrQuadEffect(GrColor, const SkMatrix& viewMatrix, uint8_t coverage, GrPrimit
iveEdgeType, | 201 GrQuadEffect(GrColor, const SkMatrix& viewMatrix, uint8_t coverage, GrPrimit
iveEdgeType, |
| 197 const SkMatrix& localMatrix); | 202 const SkMatrix& localMatrix, bool usesLocalCoords); |
| 198 | 203 |
| 199 GrColor fColor; | 204 GrColor fColor; |
| 200 SkMatrix fViewMatrix; | 205 SkMatrix fViewMatrix; |
| 201 SkMatrix fLocalMatrix; | 206 SkMatrix fLocalMatrix; |
| 207 bool fUsesLocalCoords; |
| 202 uint8_t fCoverageScale; | 208 uint8_t fCoverageScale; |
| 203 GrPrimitiveEdgeType fEdgeType; | 209 GrPrimitiveEdgeType fEdgeType; |
| 204 const Attribute* fInPosition; | 210 const Attribute* fInPosition; |
| 205 const Attribute* fInHairQuadEdge; | 211 const Attribute* fInHairQuadEdge; |
| 206 | 212 |
| 207 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; | 213 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; |
| 208 | 214 |
| 209 typedef GrGeometryProcessor INHERITED; | 215 typedef GrGeometryProcessor INHERITED; |
| 210 }; | 216 }; |
| 211 | 217 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 virtual ~GrCubicEffect(); | 257 virtual ~GrCubicEffect(); |
| 252 | 258 |
| 253 const char* name() const override { return "Cubic"; } | 259 const char* name() const override { return "Cubic"; } |
| 254 | 260 |
| 255 inline const Attribute* inPosition() const { return fInPosition; } | 261 inline const Attribute* inPosition() const { return fInPosition; } |
| 256 inline const Attribute* inCubicCoeffs() const { return fInCubicCoeffs; } | 262 inline const Attribute* inCubicCoeffs() const { return fInCubicCoeffs; } |
| 257 inline bool isAntiAliased() const { return GrProcessorEdgeTypeIsAA(fEdgeType
); } | 263 inline bool isAntiAliased() const { return GrProcessorEdgeTypeIsAA(fEdgeType
); } |
| 258 inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType);
} | 264 inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType);
} |
| 259 inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } | 265 inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } |
| 260 GrColor color() const { return fColor; } | 266 GrColor color() const { return fColor; } |
| 267 bool colorIgnored() const { return GrColor_ILLEGAL == fColor; } |
| 261 const SkMatrix& viewMatrix() const { return fViewMatrix; } | 268 const SkMatrix& viewMatrix() const { return fViewMatrix; } |
| 262 | 269 |
| 263 virtual void getGLProcessorKey(const GrBatchTracker& bt, | 270 virtual void getGLProcessorKey(const GrBatchTracker& bt, |
| 264 const GrGLSLCaps& caps, | 271 const GrGLSLCaps& caps, |
| 265 GrProcessorKeyBuilder* b) const override; | 272 GrProcessorKeyBuilder* b) const override; |
| 266 | 273 |
| 267 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, | 274 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, |
| 268 const GrGLSLCaps&) const ov
erride; | 275 const GrGLSLCaps&) const ov
erride; |
| 269 | 276 |
| 270 void initBatchTracker(GrBatchTracker*, const GrPipelineInfo&) const override
; | |
| 271 | |
| 272 private: | 277 private: |
| 273 GrCubicEffect(GrColor, const SkMatrix& viewMatrix, GrPrimitiveEdgeType); | 278 GrCubicEffect(GrColor, const SkMatrix& viewMatrix, GrPrimitiveEdgeType); |
| 274 | 279 |
| 275 GrColor fColor; | 280 GrColor fColor; |
| 276 SkMatrix fViewMatrix; | 281 SkMatrix fViewMatrix; |
| 277 GrPrimitiveEdgeType fEdgeType; | 282 GrPrimitiveEdgeType fEdgeType; |
| 278 const Attribute* fInPosition; | 283 const Attribute* fInPosition; |
| 279 const Attribute* fInCubicCoeffs; | 284 const Attribute* fInCubicCoeffs; |
| 280 | 285 |
| 281 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; | 286 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; |
| 282 | 287 |
| 283 typedef GrGeometryProcessor INHERITED; | 288 typedef GrGeometryProcessor INHERITED; |
| 284 }; | 289 }; |
| 285 | 290 |
| 286 #endif | 291 #endif |
| OLD | NEW |