| 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 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 GrPrimitiveEdgeType edgeType, const SkMatrix& local
Matrix) | 193 GrPrimitiveEdgeType edgeType, const SkMatrix& local
Matrix) |
| 194 : INHERITED(color, viewMatrix, localMatrix) | 194 : INHERITED(color, viewMatrix, localMatrix) |
| 195 , fCoverageScale(coverage) | 195 , fCoverageScale(coverage) |
| 196 , fEdgeType(edgeType) { | 196 , fEdgeType(edgeType) { |
| 197 this->initClassID<GrConicEffect>(); | 197 this->initClassID<GrConicEffect>(); |
| 198 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertex
AttribType)); | 198 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertex
AttribType)); |
| 199 fInConicCoeffs = &this->addVertexAttrib(Attribute("inConicCoeffs", | 199 fInConicCoeffs = &this->addVertexAttrib(Attribute("inConicCoeffs", |
| 200 kVec4f_GrVertexAttribTyp
e)); | 200 kVec4f_GrVertexAttribTyp
e)); |
| 201 } | 201 } |
| 202 | 202 |
| 203 bool GrConicEffect::onIsEqual(const GrGeometryProcessor& other) const { | |
| 204 const GrConicEffect& ce = other.cast<GrConicEffect>(); | |
| 205 return (ce.fEdgeType == fEdgeType); | |
| 206 } | |
| 207 | |
| 208 void GrConicEffect::initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& i
nit) const { | 203 void GrConicEffect::initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& i
nit) const { |
| 209 ConicBatchTracker* local = bt->cast<ConicBatchTracker>(); | 204 ConicBatchTracker* local = bt->cast<ConicBatchTracker>(); |
| 210 local->fInputColorType = GetColorInputType(&local->fColor, this->color(), in
it, false); | 205 local->fInputColorType = GetColorInputType(&local->fColor, this->color(), in
it, false); |
| 211 local->fCoverageScale = fCoverageScale; | 206 local->fCoverageScale = fCoverageScale; |
| 212 local->fUsesLocalCoords = init.fUsesLocalCoords; | 207 local->fUsesLocalCoords = init.fUsesLocalCoords; |
| 213 } | 208 } |
| 214 | 209 |
| 215 bool GrConicEffect::onCanMakeEqual(const GrBatchTracker& m, | |
| 216 const GrGeometryProcessor& that, | |
| 217 const GrBatchTracker& t) const { | |
| 218 const ConicBatchTracker& mine = m.cast<ConicBatchTracker>(); | |
| 219 const ConicBatchTracker& theirs = t.cast<ConicBatchTracker>(); | |
| 220 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords, | |
| 221 that, theirs.fUsesLocalCoords) && | |
| 222 CanCombineOutput(mine.fInputColorType, mine.fColor, | |
| 223 theirs.fInputColorType, theirs.fColor) && | |
| 224 mine.fCoverageScale == theirs.fCoverageScale; | |
| 225 } | |
| 226 | |
| 227 ////////////////////////////////////////////////////////////////////////////// | 210 ////////////////////////////////////////////////////////////////////////////// |
| 228 | 211 |
| 229 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrConicEffect); | 212 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrConicEffect); |
| 230 | 213 |
| 231 GrGeometryProcessor* GrConicEffect::TestCreate(SkRandom* random, | 214 GrGeometryProcessor* GrConicEffect::TestCreate(SkRandom* random, |
| 232 GrContext*, | 215 GrContext*, |
| 233 const GrDrawTargetCaps& caps, | 216 const GrDrawTargetCaps& caps, |
| 234 GrTexture*[]) { | 217 GrTexture*[]) { |
| 235 GrGeometryProcessor* gp; | 218 GrGeometryProcessor* gp; |
| 236 do { | 219 do { |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 GrPrimitiveEdgeType edgeType, const SkMatrix& localMa
trix) | 397 GrPrimitiveEdgeType edgeType, const SkMatrix& localMa
trix) |
| 415 : INHERITED(color, viewMatrix, localMatrix) | 398 : INHERITED(color, viewMatrix, localMatrix) |
| 416 , fCoverageScale(coverage) | 399 , fCoverageScale(coverage) |
| 417 , fEdgeType(edgeType) { | 400 , fEdgeType(edgeType) { |
| 418 this->initClassID<GrQuadEffect>(); | 401 this->initClassID<GrQuadEffect>(); |
| 419 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertex
AttribType)); | 402 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertex
AttribType)); |
| 420 fInHairQuadEdge = &this->addVertexAttrib(Attribute("inHairQuadEdge", | 403 fInHairQuadEdge = &this->addVertexAttrib(Attribute("inHairQuadEdge", |
| 421 kVec4f_GrVertexAttribTyp
e)); | 404 kVec4f_GrVertexAttribTyp
e)); |
| 422 } | 405 } |
| 423 | 406 |
| 424 bool GrQuadEffect::onIsEqual(const GrGeometryProcessor& other) const { | |
| 425 const GrQuadEffect& ce = other.cast<GrQuadEffect>(); | |
| 426 return (ce.fEdgeType == fEdgeType); | |
| 427 } | |
| 428 | |
| 429 void GrQuadEffect::initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& in
it) const { | 407 void GrQuadEffect::initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& in
it) const { |
| 430 QuadBatchTracker* local = bt->cast<QuadBatchTracker>(); | 408 QuadBatchTracker* local = bt->cast<QuadBatchTracker>(); |
| 431 local->fInputColorType = GetColorInputType(&local->fColor, this->color(), in
it, false); | 409 local->fInputColorType = GetColorInputType(&local->fColor, this->color(), in
it, false); |
| 432 local->fCoverageScale = fCoverageScale; | 410 local->fCoverageScale = fCoverageScale; |
| 433 local->fUsesLocalCoords = init.fUsesLocalCoords; | 411 local->fUsesLocalCoords = init.fUsesLocalCoords; |
| 434 } | 412 } |
| 435 | 413 |
| 436 bool GrQuadEffect::onCanMakeEqual(const GrBatchTracker& m, | |
| 437 const GrGeometryProcessor& that, | |
| 438 const GrBatchTracker& t) const { | |
| 439 const QuadBatchTracker& mine = m.cast<QuadBatchTracker>(); | |
| 440 const QuadBatchTracker& theirs = t.cast<QuadBatchTracker>(); | |
| 441 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords, | |
| 442 that, theirs.fUsesLocalCoords) && | |
| 443 CanCombineOutput(mine.fInputColorType, mine.fColor, | |
| 444 theirs.fInputColorType, theirs.fColor) && | |
| 445 mine.fCoverageScale == theirs.fCoverageScale; | |
| 446 } | |
| 447 | |
| 448 ////////////////////////////////////////////////////////////////////////////// | 414 ////////////////////////////////////////////////////////////////////////////// |
| 449 | 415 |
| 450 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrQuadEffect); | 416 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrQuadEffect); |
| 451 | 417 |
| 452 GrGeometryProcessor* GrQuadEffect::TestCreate(SkRandom* random, | 418 GrGeometryProcessor* GrQuadEffect::TestCreate(SkRandom* random, |
| 453 GrContext*, | 419 GrContext*, |
| 454 const GrDrawTargetCaps& caps, | 420 const GrDrawTargetCaps& caps, |
| 455 GrTexture*[]) { | 421 GrTexture*[]) { |
| 456 GrGeometryProcessor* gp; | 422 GrGeometryProcessor* gp; |
| 457 do { | 423 do { |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 | 622 |
| 657 GrCubicEffect::GrCubicEffect(GrColor color, const SkMatrix& viewMatrix, | 623 GrCubicEffect::GrCubicEffect(GrColor color, const SkMatrix& viewMatrix, |
| 658 GrPrimitiveEdgeType edgeType) | 624 GrPrimitiveEdgeType edgeType) |
| 659 : INHERITED(color, viewMatrix), fEdgeType(edgeType) { | 625 : INHERITED(color, viewMatrix), fEdgeType(edgeType) { |
| 660 this->initClassID<GrCubicEffect>(); | 626 this->initClassID<GrCubicEffect>(); |
| 661 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertex
AttribType)); | 627 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertex
AttribType)); |
| 662 fInCubicCoeffs = &this->addVertexAttrib(Attribute("inCubicCoeffs", | 628 fInCubicCoeffs = &this->addVertexAttrib(Attribute("inCubicCoeffs", |
| 663 kVec4f_GrVertexAttribTyp
e)); | 629 kVec4f_GrVertexAttribTyp
e)); |
| 664 } | 630 } |
| 665 | 631 |
| 666 bool GrCubicEffect::onIsEqual(const GrGeometryProcessor& other) const { | |
| 667 const GrCubicEffect& ce = other.cast<GrCubicEffect>(); | |
| 668 return (ce.fEdgeType == fEdgeType); | |
| 669 } | |
| 670 | |
| 671 void GrCubicEffect::initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& i
nit) const { | 632 void GrCubicEffect::initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& i
nit) const { |
| 672 CubicBatchTracker* local = bt->cast<CubicBatchTracker>(); | 633 CubicBatchTracker* local = bt->cast<CubicBatchTracker>(); |
| 673 local->fInputColorType = GetColorInputType(&local->fColor, this->color(), in
it, false); | 634 local->fInputColorType = GetColorInputType(&local->fColor, this->color(), in
it, false); |
| 674 local->fUsesLocalCoords = init.fUsesLocalCoords; | 635 local->fUsesLocalCoords = init.fUsesLocalCoords; |
| 675 } | 636 } |
| 676 | 637 |
| 677 bool GrCubicEffect::onCanMakeEqual(const GrBatchTracker& m, | |
| 678 const GrGeometryProcessor& that, | |
| 679 const GrBatchTracker& t) const { | |
| 680 const CubicBatchTracker& mine = m.cast<CubicBatchTracker>(); | |
| 681 const CubicBatchTracker& theirs = t.cast<CubicBatchTracker>(); | |
| 682 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords, | |
| 683 that, theirs.fUsesLocalCoords) && | |
| 684 CanCombineOutput(mine.fInputColorType, mine.fColor, | |
| 685 theirs.fInputColorType, theirs.fColor); | |
| 686 } | |
| 687 | |
| 688 ////////////////////////////////////////////////////////////////////////////// | 638 ////////////////////////////////////////////////////////////////////////////// |
| 689 | 639 |
| 690 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrCubicEffect); | 640 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrCubicEffect); |
| 691 | 641 |
| 692 GrGeometryProcessor* GrCubicEffect::TestCreate(SkRandom* random, | 642 GrGeometryProcessor* GrCubicEffect::TestCreate(SkRandom* random, |
| 693 GrContext*, | 643 GrContext*, |
| 694 const GrDrawTargetCaps& caps, | 644 const GrDrawTargetCaps& caps, |
| 695 GrTexture*[]) { | 645 GrTexture*[]) { |
| 696 GrGeometryProcessor* gp; | 646 GrGeometryProcessor* gp; |
| 697 do { | 647 do { |
| 698 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( | 648 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( |
| 699 random->nextULessThan(kGrPro
cessorEdgeTypeCnt)); | 649 random->nextULessThan(kGrPro
cessorEdgeTypeCnt)); |
| 700 gp = GrCubicEffect::Create(GrRandomColor(random), | 650 gp = GrCubicEffect::Create(GrRandomColor(random), |
| 701 GrTest::TestMatrix(random), edgeType, caps); | 651 GrTest::TestMatrix(random), edgeType, caps); |
| 702 } while (NULL == gp); | 652 } while (NULL == gp); |
| 703 return gp; | 653 return gp; |
| 704 } | 654 } |
| 705 | 655 |
| OLD | NEW |