| 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 #include "GrBezierEffect.h" | 8 #include "GrBezierEffect.h" |
| 9 | 9 |
| 10 #include "gl/GrGLProcessor.h" | 10 #include "gl/GrGLProcessor.h" |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 void GrConicEffect::getGLProcessorKey(const GrBatchTracker& bt, | 132 void GrConicEffect::getGLProcessorKey(const GrBatchTracker& bt, |
| 133 const GrGLCaps& caps, | 133 const GrGLCaps& caps, |
| 134 GrProcessorKeyBuilder* b) const { | 134 GrProcessorKeyBuilder* b) const { |
| 135 GrGLConicEffect::GenKey(*this, bt, caps, b); | 135 GrGLConicEffect::GenKey(*this, bt, caps, b); |
| 136 } | 136 } |
| 137 | 137 |
| 138 GrGLGeometryProcessor* GrConicEffect::createGLInstance(const GrBatchTracker& bt)
const { | 138 GrGLGeometryProcessor* GrConicEffect::createGLInstance(const GrBatchTracker& bt)
const { |
| 139 return SkNEW_ARGS(GrGLConicEffect, (*this, bt)); | 139 return SkNEW_ARGS(GrGLConicEffect, (*this, bt)); |
| 140 } | 140 } |
| 141 | 141 |
| 142 GrConicEffect::GrConicEffect(GrPrimitiveEdgeType edgeType) | 142 GrConicEffect::GrConicEffect(GrColor color, uint8_t coverage, GrPrimitiveEdgeTyp
e edgeType) |
| 143 : fEdgeType(edgeType) { | 143 : INHERITED(color, coverage), fEdgeType(edgeType) { |
| 144 this->initClassID<GrConicEffect>(); | 144 this->initClassID<GrConicEffect>(); |
| 145 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert
exAttribType)); | 145 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert
exAttribType)); |
| 146 fInConicCoeffs = &this->addVertexAttrib(GrAttribute("inConicCoeffs", | 146 fInConicCoeffs = &this->addVertexAttrib(GrAttribute("inConicCoeffs", |
| 147 kVec4f_GrVertexAttribTyp
e)); | 147 kVec4f_GrVertexAttribTyp
e)); |
| 148 } | 148 } |
| 149 | 149 |
| 150 bool GrConicEffect::onIsEqual(const GrGeometryProcessor& other) const { | 150 bool GrConicEffect::onIsEqual(const GrGeometryProcessor& other) const { |
| 151 const GrConicEffect& ce = other.cast<GrConicEffect>(); | 151 const GrConicEffect& ce = other.cast<GrConicEffect>(); |
| 152 return (ce.fEdgeType == fEdgeType); | 152 return (ce.fEdgeType == fEdgeType); |
| 153 } | 153 } |
| 154 | 154 |
| 155 ////////////////////////////////////////////////////////////////////////////// | 155 ////////////////////////////////////////////////////////////////////////////// |
| 156 | 156 |
| 157 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrConicEffect); | 157 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrConicEffect); |
| 158 | 158 |
| 159 GrGeometryProcessor* GrConicEffect::TestCreate(SkRandom* random, | 159 GrGeometryProcessor* GrConicEffect::TestCreate(SkRandom* random, |
| 160 GrContext*, | 160 GrContext*, |
| 161 const GrDrawTargetCaps& caps, | 161 const GrDrawTargetCaps& caps, |
| 162 GrTexture*[]) { | 162 GrTexture*[]) { |
| 163 GrGeometryProcessor* gp; | 163 GrGeometryProcessor* gp; |
| 164 do { | 164 do { |
| 165 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( | 165 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( |
| 166 random->nextULessThan(kGrPro
cessorEdgeTypeCnt)); | 166 random->nextULessThan(kGrPro
cessorEdgeTypeCnt)); |
| 167 gp = GrConicEffect::Create(edgeType, caps); | 167 gp = GrConicEffect::Create(GrRandomColor(random), edgeType, caps); |
| 168 } while (NULL == gp); | 168 } while (NULL == gp); |
| 169 return gp; | 169 return gp; |
| 170 } | 170 } |
| 171 | 171 |
| 172 ////////////////////////////////////////////////////////////////////////////// | 172 ////////////////////////////////////////////////////////////////////////////// |
| 173 // Quad | 173 // Quad |
| 174 ////////////////////////////////////////////////////////////////////////////// | 174 ////////////////////////////////////////////////////////////////////////////// |
| 175 | 175 |
| 176 class GrGLQuadEffect : public GrGLGeometryProcessor { | 176 class GrGLQuadEffect : public GrGLGeometryProcessor { |
| 177 public: | 177 public: |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 void GrQuadEffect::getGLProcessorKey(const GrBatchTracker& bt, | 279 void GrQuadEffect::getGLProcessorKey(const GrBatchTracker& bt, |
| 280 const GrGLCaps& caps, | 280 const GrGLCaps& caps, |
| 281 GrProcessorKeyBuilder* b) const { | 281 GrProcessorKeyBuilder* b) const { |
| 282 GrGLQuadEffect::GenKey(*this, bt, caps, b); | 282 GrGLQuadEffect::GenKey(*this, bt, caps, b); |
| 283 } | 283 } |
| 284 | 284 |
| 285 GrGLGeometryProcessor* GrQuadEffect::createGLInstance(const GrBatchTracker& bt)
const { | 285 GrGLGeometryProcessor* GrQuadEffect::createGLInstance(const GrBatchTracker& bt)
const { |
| 286 return SkNEW_ARGS(GrGLQuadEffect, (*this, bt)); | 286 return SkNEW_ARGS(GrGLQuadEffect, (*this, bt)); |
| 287 } | 287 } |
| 288 | 288 |
| 289 GrQuadEffect::GrQuadEffect(GrPrimitiveEdgeType edgeType) | 289 GrQuadEffect::GrQuadEffect(GrColor color, uint8_t coverage, GrPrimitiveEdgeType
edgeType) |
| 290 : fEdgeType(edgeType) { | 290 : INHERITED(color, coverage), fEdgeType(edgeType) { |
| 291 this->initClassID<GrQuadEffect>(); | 291 this->initClassID<GrQuadEffect>(); |
| 292 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert
exAttribType)); | 292 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert
exAttribType)); |
| 293 fInHairQuadEdge = &this->addVertexAttrib(GrAttribute("inHairQuadEdge", | 293 fInHairQuadEdge = &this->addVertexAttrib(GrAttribute("inHairQuadEdge", |
| 294 kVec4f_GrVertexAttribTyp
e)); | 294 kVec4f_GrVertexAttribTyp
e)); |
| 295 } | 295 } |
| 296 | 296 |
| 297 bool GrQuadEffect::onIsEqual(const GrGeometryProcessor& other) const { | 297 bool GrQuadEffect::onIsEqual(const GrGeometryProcessor& other) const { |
| 298 const GrQuadEffect& ce = other.cast<GrQuadEffect>(); | 298 const GrQuadEffect& ce = other.cast<GrQuadEffect>(); |
| 299 return (ce.fEdgeType == fEdgeType); | 299 return (ce.fEdgeType == fEdgeType); |
| 300 } | 300 } |
| 301 | 301 |
| 302 ////////////////////////////////////////////////////////////////////////////// | 302 ////////////////////////////////////////////////////////////////////////////// |
| 303 | 303 |
| 304 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrQuadEffect); | 304 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrQuadEffect); |
| 305 | 305 |
| 306 GrGeometryProcessor* GrQuadEffect::TestCreate(SkRandom* random, | 306 GrGeometryProcessor* GrQuadEffect::TestCreate(SkRandom* random, |
| 307 GrContext*, | 307 GrContext*, |
| 308 const GrDrawTargetCaps& caps, | 308 const GrDrawTargetCaps& caps, |
| 309 GrTexture*[]) { | 309 GrTexture*[]) { |
| 310 GrGeometryProcessor* gp; | 310 GrGeometryProcessor* gp; |
| 311 do { | 311 do { |
| 312 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( | 312 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( |
| 313 random->nextULessThan(kGrProcessorEdgeTypeCnt)); | 313 random->nextULessThan(kGrProcessorEdgeTypeCnt)); |
| 314 gp = GrQuadEffect::Create(edgeType, caps); | 314 gp = GrQuadEffect::Create(GrRandomColor(random), edgeType, caps); |
| 315 } while (NULL == gp); | 315 } while (NULL == gp); |
| 316 return gp; | 316 return gp; |
| 317 } | 317 } |
| 318 | 318 |
| 319 ////////////////////////////////////////////////////////////////////////////// | 319 ////////////////////////////////////////////////////////////////////////////// |
| 320 // Cubic | 320 // Cubic |
| 321 ////////////////////////////////////////////////////////////////////////////// | 321 ////////////////////////////////////////////////////////////////////////////// |
| 322 | 322 |
| 323 class GrGLCubicEffect : public GrGLGeometryProcessor { | 323 class GrGLCubicEffect : public GrGLGeometryProcessor { |
| 324 public: | 324 public: |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 void GrCubicEffect::getGLProcessorKey(const GrBatchTracker& bt, | 467 void GrCubicEffect::getGLProcessorKey(const GrBatchTracker& bt, |
| 468 const GrGLCaps& caps, | 468 const GrGLCaps& caps, |
| 469 GrProcessorKeyBuilder* b) const { | 469 GrProcessorKeyBuilder* b) const { |
| 470 GrGLCubicEffect::GenKey(*this, bt, caps, b); | 470 GrGLCubicEffect::GenKey(*this, bt, caps, b); |
| 471 } | 471 } |
| 472 | 472 |
| 473 GrGLGeometryProcessor* GrCubicEffect::createGLInstance(const GrBatchTracker& bt)
const { | 473 GrGLGeometryProcessor* GrCubicEffect::createGLInstance(const GrBatchTracker& bt)
const { |
| 474 return SkNEW_ARGS(GrGLCubicEffect, (*this, bt)); | 474 return SkNEW_ARGS(GrGLCubicEffect, (*this, bt)); |
| 475 } | 475 } |
| 476 | 476 |
| 477 GrCubicEffect::GrCubicEffect(GrPrimitiveEdgeType edgeType) | 477 GrCubicEffect::GrCubicEffect(GrColor color, GrPrimitiveEdgeType edgeType) |
| 478 : fEdgeType(edgeType) { | 478 : INHERITED(color), fEdgeType(edgeType) { |
| 479 this->initClassID<GrCubicEffect>(); | 479 this->initClassID<GrCubicEffect>(); |
| 480 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert
exAttribType)); | 480 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert
exAttribType)); |
| 481 fInCubicCoeffs = &this->addVertexAttrib(GrAttribute("inCubicCoeffs", | 481 fInCubicCoeffs = &this->addVertexAttrib(GrAttribute("inCubicCoeffs", |
| 482 kVec4f_GrVertexAttribTyp
e)); | 482 kVec4f_GrVertexAttribTyp
e)); |
| 483 } | 483 } |
| 484 | 484 |
| 485 bool GrCubicEffect::onIsEqual(const GrGeometryProcessor& other) const { | 485 bool GrCubicEffect::onIsEqual(const GrGeometryProcessor& other) const { |
| 486 const GrCubicEffect& ce = other.cast<GrCubicEffect>(); | 486 const GrCubicEffect& ce = other.cast<GrCubicEffect>(); |
| 487 return (ce.fEdgeType == fEdgeType); | 487 return (ce.fEdgeType == fEdgeType); |
| 488 } | 488 } |
| 489 | 489 |
| 490 ////////////////////////////////////////////////////////////////////////////// | 490 ////////////////////////////////////////////////////////////////////////////// |
| 491 | 491 |
| 492 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrCubicEffect); | 492 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrCubicEffect); |
| 493 | 493 |
| 494 GrGeometryProcessor* GrCubicEffect::TestCreate(SkRandom* random, | 494 GrGeometryProcessor* GrCubicEffect::TestCreate(SkRandom* random, |
| 495 GrContext*, | 495 GrContext*, |
| 496 const GrDrawTargetCaps& caps, | 496 const GrDrawTargetCaps& caps, |
| 497 GrTexture*[]) { | 497 GrTexture*[]) { |
| 498 GrGeometryProcessor* gp; | 498 GrGeometryProcessor* gp; |
| 499 do { | 499 do { |
| 500 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( | 500 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( |
| 501 random->nextULessThan(kGrPro
cessorEdgeTypeCnt)); | 501 random->nextULessThan(kGrPro
cessorEdgeTypeCnt)); |
| 502 gp = GrCubicEffect::Create(edgeType, caps); | 502 gp = GrCubicEffect::Create(GrRandomColor(random), edgeType, caps); |
| 503 } while (NULL == gp); | 503 } while (NULL == gp); |
| 504 return gp; | 504 return gp; |
| 505 } | 505 } |
| 506 | 506 |
| OLD | NEW |