OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 #include "GrAAConvexPathRenderer.h" | 9 #include "GrAAConvexPathRenderer.h" |
10 | 10 |
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 GrGeometryProcessor* QuadEdgeEffect::TestCreate(GrProcessorTestData* d) { | 671 GrGeometryProcessor* QuadEdgeEffect::TestCreate(GrProcessorTestData* d) { |
672 // Doesn't work without derivative instructions. | 672 // Doesn't work without derivative instructions. |
673 return d->fCaps->shaderCaps()->shaderDerivativeSupport() ? | 673 return d->fCaps->shaderCaps()->shaderDerivativeSupport() ? |
674 QuadEdgeEffect::Create(GrRandomColor(d->fRandom), | 674 QuadEdgeEffect::Create(GrRandomColor(d->fRandom), |
675 GrTest::TestMatrix(d->fRandom), | 675 GrTest::TestMatrix(d->fRandom), |
676 d->fRandom->nextBool()) : NULL; | 676 d->fRandom->nextBool()) : NULL; |
677 } | 677 } |
678 | 678 |
679 /////////////////////////////////////////////////////////////////////////////// | 679 /////////////////////////////////////////////////////////////////////////////// |
680 | 680 |
681 bool GrAAConvexPathRenderer::canDrawPath(const GrDrawTarget* target, | 681 bool GrAAConvexPathRenderer::onCanDrawPath(const CanDrawPathArgs& args) const { |
682 const GrPipelineBuilder*, | 682 return (args.fTarget->caps()->shaderCaps()->shaderDerivativeSupport() && arg
s.fAntiAlias && |
683 const SkMatrix& viewMatrix, | 683 args.fStroke->isFillStyle() && !args.fPath->isInverseFillType() && |
684 const SkPath& path, | 684 args.fPath->isConvex()); |
685 const GrStrokeInfo& stroke, | |
686 bool antiAlias) const { | |
687 return (target->caps()->shaderCaps()->shaderDerivativeSupport() && antiAlias
&& | |
688 stroke.isFillStyle() && !path.isInverseFillType() && path.isConvex()
); | |
689 } | 685 } |
690 | 686 |
691 // extract the result vertices and indices from the GrAAConvexTessellator | 687 // extract the result vertices and indices from the GrAAConvexTessellator |
692 static void extract_verts(const GrAAConvexTessellator& tess, | 688 static void extract_verts(const GrAAConvexTessellator& tess, |
693 void* vertices, | 689 void* vertices, |
694 size_t vertexStride, | 690 size_t vertexStride, |
695 GrColor color, | 691 GrColor color, |
696 uint16_t* idxs, | 692 uint16_t* idxs, |
697 bool tweakAlphaForCoverage) { | 693 bool tweakAlphaForCoverage) { |
698 intptr_t verts = reinterpret_cast<intptr_t>(vertices); | 694 intptr_t verts = reinterpret_cast<intptr_t>(vertices); |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
981 bool fColorIgnored; | 977 bool fColorIgnored; |
982 bool fCoverageIgnored; | 978 bool fCoverageIgnored; |
983 bool fLinesOnly; | 979 bool fLinesOnly; |
984 bool fCanTweakAlphaForCoverage; | 980 bool fCanTweakAlphaForCoverage; |
985 }; | 981 }; |
986 | 982 |
987 BatchTracker fBatch; | 983 BatchTracker fBatch; |
988 SkSTArray<1, Geometry, true> fGeoData; | 984 SkSTArray<1, Geometry, true> fGeoData; |
989 }; | 985 }; |
990 | 986 |
991 bool GrAAConvexPathRenderer::onDrawPath(GrDrawTarget* target, | 987 bool GrAAConvexPathRenderer::onDrawPath(const DrawPathArgs& args) { |
992 GrPipelineBuilder* pipelineBuilder, | 988 if (args.fPath->isEmpty()) { |
993 GrColor color, | |
994 const SkMatrix& vm, | |
995 const SkPath& path, | |
996 const GrStrokeInfo&, | |
997 bool antiAlias) { | |
998 if (path.isEmpty()) { | |
999 return true; | 989 return true; |
1000 } | 990 } |
1001 | 991 |
1002 AAConvexPathBatch::Geometry geometry; | 992 AAConvexPathBatch::Geometry geometry; |
1003 geometry.fColor = color; | 993 geometry.fColor = args.fColor; |
1004 geometry.fViewMatrix = vm; | 994 geometry.fViewMatrix = *args.fViewMatrix; |
1005 geometry.fPath = path; | 995 geometry.fPath = *args.fPath; |
1006 | 996 |
1007 SkAutoTUnref<GrBatch> batch(AAConvexPathBatch::Create(geometry)); | 997 SkAutoTUnref<GrBatch> batch(AAConvexPathBatch::Create(geometry)); |
1008 target->drawBatch(*pipelineBuilder, batch); | 998 args.fTarget->drawBatch(*args.fPipelineBuilder, batch); |
1009 | 999 |
1010 return true; | 1000 return true; |
1011 | 1001 |
1012 } | 1002 } |
1013 | 1003 |
1014 ////////////////////////////////////////////////////////////////////////////////
/////////////////// | 1004 ////////////////////////////////////////////////////////////////////////////////
/////////////////// |
1015 | 1005 |
1016 #ifdef GR_TEST_UTILS | 1006 #ifdef GR_TEST_UTILS |
1017 | 1007 |
1018 BATCH_TEST_DEFINE(AAConvexPathBatch) { | 1008 BATCH_TEST_DEFINE(AAConvexPathBatch) { |
1019 AAConvexPathBatch::Geometry geometry; | 1009 AAConvexPathBatch::Geometry geometry; |
1020 geometry.fColor = GrRandomColor(random); | 1010 geometry.fColor = GrRandomColor(random); |
1021 geometry.fViewMatrix = GrTest::TestMatrixInvertible(random); | 1011 geometry.fViewMatrix = GrTest::TestMatrixInvertible(random); |
1022 geometry.fPath = GrTest::TestPathConvex(random); | 1012 geometry.fPath = GrTest::TestPathConvex(random); |
1023 | 1013 |
1024 return AAConvexPathBatch::Create(geometry); | 1014 return AAConvexPathBatch::Create(geometry); |
1025 } | 1015 } |
1026 | 1016 |
1027 #endif | 1017 #endif |
OLD | NEW |