OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 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 "GrAAHairLinePathRenderer.h" | 9 #include "GrAAHairLinePathRenderer.h" |
10 | 10 |
(...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
809 // the edge effects share this stage with glyph rendering | 809 // the edge effects share this stage with glyph rendering |
810 // (kGlyphMaskStage in GrTextContext) && SW path rendering | 810 // (kGlyphMaskStage in GrTextContext) && SW path rendering |
811 // (kPathMaskStage in GrSWMaskHelper) | 811 // (kPathMaskStage in GrSWMaskHelper) |
812 kEdgeEffectStage = GrPaint::kTotalStages, | 812 kEdgeEffectStage = GrPaint::kTotalStages, |
813 }; | 813 }; |
814 static const int kEdgeAttrIndex = 1; | 814 static const int kEdgeAttrIndex = 1; |
815 | 815 |
816 GrEffectRef* hairLineEffect = HairLineEdgeEffect::Create(); | 816 GrEffectRef* hairLineEffect = HairLineEdgeEffect::Create(); |
817 GrEffectRef* hairQuadEffect = HairQuadEdgeEffect::Create(); | 817 GrEffectRef* hairQuadEffect = HairQuadEdgeEffect::Create(); |
818 | 818 |
| 819 SkRect devBounds; |
| 820 GetPathDevBounds(path, drawState->getRenderTarget(), adcd.getOriginalMatrix(
), &devBounds); |
| 821 |
819 target->setIndexSourceToBuffer(fLinesIndexBuffer); | 822 target->setIndexSourceToBuffer(fLinesIndexBuffer); |
820 int lines = 0; | 823 int lines = 0; |
821 int nBufLines = fLinesIndexBuffer->maxQuads(); | 824 int nBufLines = fLinesIndexBuffer->maxQuads(); |
822 drawState->setEffect(kEdgeEffectStage, hairLineEffect, kEdgeAttrIndex)->unre
f(); | 825 drawState->setEffect(kEdgeEffectStage, hairLineEffect, kEdgeAttrIndex)->unre
f(); |
823 while (lines < lineCnt) { | 826 while (lines < lineCnt) { |
824 int n = GrMin(lineCnt - lines, nBufLines); | 827 int n = GrMin(lineCnt - lines, nBufLines); |
825 target->drawIndexed(kTriangles_GrPrimitiveType, | 828 target->drawIndexed(kTriangles_GrPrimitiveType, |
826 kVertsPerLineSeg*lines, // startV | 829 kVertsPerLineSeg*lines, // startV |
827 0, // startI | 830 0, // startI |
828 kVertsPerLineSeg*n, // vCount | 831 kVertsPerLineSeg*n, // vCount |
829 kIdxsPerLineSeg*n); // iCount | 832 kIdxsPerLineSeg*n, |
| 833 &devBounds); // iCount |
830 lines += n; | 834 lines += n; |
831 } | 835 } |
832 | 836 |
833 target->setIndexSourceToBuffer(fQuadsIndexBuffer); | 837 target->setIndexSourceToBuffer(fQuadsIndexBuffer); |
834 int quads = 0; | 838 int quads = 0; |
835 drawState->setEffect(kEdgeEffectStage, hairQuadEffect, kEdgeAttrIndex)->unre
f(); | 839 drawState->setEffect(kEdgeEffectStage, hairQuadEffect, kEdgeAttrIndex)->unre
f(); |
836 while (quads < quadCnt) { | 840 while (quads < quadCnt) { |
837 int n = GrMin(quadCnt - quads, kNumQuadsInIdxBuffer); | 841 int n = GrMin(quadCnt - quads, kNumQuadsInIdxBuffer); |
838 target->drawIndexed(kTriangles_GrPrimitiveType, | 842 target->drawIndexed(kTriangles_GrPrimitiveType, |
839 4 * lineCnt + kVertsPerQuad*quads, // startV | 843 4 * lineCnt + kVertsPerQuad*quads, // startV |
840 0, // startI | 844 0, // startI |
841 kVertsPerQuad*n, // vCount | 845 kVertsPerQuad*n, // vCount |
842 kIdxsPerQuad*n); // iCount | 846 kIdxsPerQuad*n, // iCount |
| 847 &devBounds); |
843 quads += n; | 848 quads += n; |
844 } | 849 } |
845 target->resetIndexSource(); | 850 target->resetIndexSource(); |
846 | 851 |
847 return true; | 852 return true; |
848 } | 853 } |
OLD | NEW |