| 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 |
| 11 #include "GrBatch.h" | 11 #include "GrBatch.h" |
| 12 #include "GrBatchTarget.h" | 12 #include "GrBatchTarget.h" |
| 13 #include "GrBufferAllocPool.h" | 13 #include "GrBufferAllocPool.h" |
| 14 #include "GrContext.h" | 14 #include "GrContext.h" |
| 15 #include "GrDrawTargetCaps.h" | 15 #include "GrDrawTargetCaps.h" |
| 16 #include "GrGeometryProcessor.h" | 16 #include "GrGeometryProcessor.h" |
| 17 #include "GrInvariantOutput.h" | 17 #include "GrInvariantOutput.h" |
| 18 #include "GrPathUtils.h" | 18 #include "GrPathUtils.h" |
| 19 #include "GrProcessor.h" | 19 #include "GrProcessor.h" |
| 20 #include "GrPipelineBuilder.h" | 20 #include "GrPipelineBuilder.h" |
| 21 #include "GrStrokeInfo.h" |
| 21 #include "SkGeometry.h" | 22 #include "SkGeometry.h" |
| 22 #include "SkString.h" | 23 #include "SkString.h" |
| 23 #include "SkStrokeRec.h" | 24 #include "SkStrokeRec.h" |
| 24 #include "SkTraceEvent.h" | 25 #include "SkTraceEvent.h" |
| 25 #include "gl/GrGLProcessor.h" | 26 #include "gl/GrGLProcessor.h" |
| 26 #include "gl/GrGLSL.h" | 27 #include "gl/GrGLSL.h" |
| 27 #include "gl/GrGLGeometryProcessor.h" | 28 #include "gl/GrGLGeometryProcessor.h" |
| 28 #include "gl/builders/GrGLProgramBuilder.h" | 29 #include "gl/builders/GrGLProgramBuilder.h" |
| 29 | 30 |
| 30 GrAAConvexPathRenderer::GrAAConvexPathRenderer() { | 31 GrAAConvexPathRenderer::GrAAConvexPathRenderer() { |
| (...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 675 QuadEdgeEffect::Create(GrRandomColor(random), | 676 QuadEdgeEffect::Create(GrRandomColor(random), |
| 676 GrProcessorUnitTest::TestMatrix(random)) : NUL
L; | 677 GrProcessorUnitTest::TestMatrix(random)) : NUL
L; |
| 677 } | 678 } |
| 678 | 679 |
| 679 /////////////////////////////////////////////////////////////////////////////// | 680 /////////////////////////////////////////////////////////////////////////////// |
| 680 | 681 |
| 681 bool GrAAConvexPathRenderer::canDrawPath(const GrDrawTarget* target, | 682 bool GrAAConvexPathRenderer::canDrawPath(const GrDrawTarget* target, |
| 682 const GrPipelineBuilder*, | 683 const GrPipelineBuilder*, |
| 683 const SkMatrix& viewMatrix, | 684 const SkMatrix& viewMatrix, |
| 684 const SkPath& path, | 685 const SkPath& path, |
| 685 const SkStrokeRec& stroke, | 686 const GrStrokeInfo& stroke, |
| 686 bool antiAlias) const { | 687 bool antiAlias) const { |
| 687 return (target->caps()->shaderDerivativeSupport() && antiAlias && | 688 return (target->caps()->shaderDerivativeSupport() && antiAlias && |
| 688 stroke.isFillStyle() && !path.isInverseFillType() && path.isConvex()
); | 689 stroke.getStrokeRec().isFillStyle() && !path.isInverseFillType() &&
path.isConvex()); |
| 689 } | 690 } |
| 690 | 691 |
| 691 class AAConvexPathBatch : public GrBatch { | 692 class AAConvexPathBatch : public GrBatch { |
| 692 public: | 693 public: |
| 693 struct Geometry { | 694 struct Geometry { |
| 694 GrColor fColor; | 695 GrColor fColor; |
| 695 SkMatrix fViewMatrix; | 696 SkMatrix fViewMatrix; |
| 696 SkPath fPath; | 697 SkPath fPath; |
| 697 }; | 698 }; |
| 698 | 699 |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 862 | 863 |
| 863 BatchTracker fBatch; | 864 BatchTracker fBatch; |
| 864 SkSTArray<1, Geometry, true> fGeoData; | 865 SkSTArray<1, Geometry, true> fGeoData; |
| 865 }; | 866 }; |
| 866 | 867 |
| 867 bool GrAAConvexPathRenderer::onDrawPath(GrDrawTarget* target, | 868 bool GrAAConvexPathRenderer::onDrawPath(GrDrawTarget* target, |
| 868 GrPipelineBuilder* pipelineBuilder, | 869 GrPipelineBuilder* pipelineBuilder, |
| 869 GrColor color, | 870 GrColor color, |
| 870 const SkMatrix& vm, | 871 const SkMatrix& vm, |
| 871 const SkPath& path, | 872 const SkPath& path, |
| 872 const SkStrokeRec&, | 873 const GrStrokeInfo&, |
| 873 bool antiAlias) { | 874 bool antiAlias) { |
| 874 if (path.isEmpty()) { | 875 if (path.isEmpty()) { |
| 875 return true; | 876 return true; |
| 876 } | 877 } |
| 877 | 878 |
| 878 // We outset our vertices one pixel and add one more pixel for precision. | 879 // We outset our vertices one pixel and add one more pixel for precision. |
| 879 // TODO create tighter bounds when we start reordering. | 880 // TODO create tighter bounds when we start reordering. |
| 880 SkRect devRect = path.getBounds(); | 881 SkRect devRect = path.getBounds(); |
| 881 vm.mapRect(&devRect); | 882 vm.mapRect(&devRect); |
| 882 devRect.outset(2, 2); | 883 devRect.outset(2, 2); |
| 883 | 884 |
| 884 AAConvexPathBatch::Geometry geometry; | 885 AAConvexPathBatch::Geometry geometry; |
| 885 geometry.fColor = color; | 886 geometry.fColor = color; |
| 886 geometry.fViewMatrix = vm; | 887 geometry.fViewMatrix = vm; |
| 887 geometry.fPath = path; | 888 geometry.fPath = path; |
| 888 | 889 |
| 889 SkAutoTUnref<GrBatch> batch(AAConvexPathBatch::Create(geometry)); | 890 SkAutoTUnref<GrBatch> batch(AAConvexPathBatch::Create(geometry)); |
| 890 target->drawBatch(pipelineBuilder, batch, &devRect); | 891 target->drawBatch(pipelineBuilder, batch, &devRect); |
| 891 | 892 |
| 892 return true; | 893 return true; |
| 893 | 894 |
| 894 } | 895 } |
| OLD | NEW |