| 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 676 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 687 | 687 |
| 688 GrEffectRef* HairLineEdgeEffect::TestCreate(SkMWCRandom* random, | 688 GrEffectRef* HairLineEdgeEffect::TestCreate(SkMWCRandom* random, |
| 689 GrContext*, | 689 GrContext*, |
| 690 const GrDrawTargetCaps& caps, | 690 const GrDrawTargetCaps& caps, |
| 691 GrTexture*[]) { | 691 GrTexture*[]) { |
| 692 return HairLineEdgeEffect::Create(); | 692 return HairLineEdgeEffect::Create(); |
| 693 } | 693 } |
| 694 | 694 |
| 695 /////////////////////////////////////////////////////////////////////////////// | 695 /////////////////////////////////////////////////////////////////////////////// |
| 696 | 696 |
| 697 namespace { |
| 698 |
| 699 // position + edge |
| 700 extern const GrVertexAttrib gHairlineAttribs[] = { |
| 701 {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBind
ing}, |
| 702 {kVec4f_GrVertexAttribType, sizeof(GrPoint), kEffect_GrVertexAttribBindin
g} |
| 703 }; |
| 704 |
| 705 }; |
| 706 |
| 697 bool GrAAHairLinePathRenderer::createGeom( | 707 bool GrAAHairLinePathRenderer::createGeom( |
| 698 const SkPath& path, | 708 const SkPath& path, |
| 699 GrDrawTarget* target, | 709 GrDrawTarget* target, |
| 700 int* lineCnt, | 710 int* lineCnt, |
| 701 int* quadCnt, | 711 int* quadCnt, |
| 702 GrDrawTarget::AutoReleaseGeometry* arg) { | 712 GrDrawTarget::AutoReleaseGeometry* arg) { |
| 703 GrDrawState* drawState = target->drawState(); | 713 GrDrawState* drawState = target->drawState(); |
| 704 int rtHeight = drawState->getRenderTarget()->height(); | 714 int rtHeight = drawState->getRenderTarget()->height(); |
| 705 | 715 |
| 706 GrIRect devClipBounds; | 716 GrIRect devClipBounds; |
| 707 target->getClip()->getConservativeBounds(drawState->getRenderTarget(), | 717 target->getClip()->getConservativeBounds(drawState->getRenderTarget(), |
| 708 &devClipBounds); | 718 &devClipBounds); |
| 709 | 719 |
| 710 // position + edge | |
| 711 static const GrVertexAttrib kAttribs[] = { | |
| 712 {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttrib
Binding}, | |
| 713 {kVec4f_GrVertexAttribType, sizeof(GrPoint), kEffect_GrVertexAttribBi
nding} | |
| 714 }; | |
| 715 SkMatrix viewM = drawState->getViewMatrix(); | 720 SkMatrix viewM = drawState->getViewMatrix(); |
| 716 | 721 |
| 717 PREALLOC_PTARRAY(128) lines; | 722 PREALLOC_PTARRAY(128) lines; |
| 718 PREALLOC_PTARRAY(128) quads; | 723 PREALLOC_PTARRAY(128) quads; |
| 719 IntArray qSubdivs; | 724 IntArray qSubdivs; |
| 720 *quadCnt = generate_lines_and_quads(path, viewM, devClipBounds, | 725 *quadCnt = generate_lines_and_quads(path, viewM, devClipBounds, |
| 721 &lines, &quads, &qSubdivs); | 726 &lines, &quads, &qSubdivs); |
| 722 | 727 |
| 723 *lineCnt = lines.count() / 2; | 728 *lineCnt = lines.count() / 2; |
| 724 int vertCnt = kVertsPerLineSeg * *lineCnt + kVertsPerQuad * *quadCnt; | 729 int vertCnt = kVertsPerLineSeg * *lineCnt + kVertsPerQuad * *quadCnt; |
| 725 | 730 |
| 726 target->drawState()->setVertexAttribs(kAttribs, SK_ARRAY_COUNT(kAttribs)); | 731 target->drawState()->setVertexAttribs<gHairlineAttribs>(SK_ARRAY_COUNT(gHair
lineAttribs)); |
| 727 GrAssert(sizeof(Vertex) == target->getDrawState().getVertexSize()); | 732 GrAssert(sizeof(Vertex) == target->getDrawState().getVertexSize()); |
| 728 | 733 |
| 729 if (!arg->set(target, vertCnt, 0)) { | 734 if (!arg->set(target, vertCnt, 0)) { |
| 730 return false; | 735 return false; |
| 731 } | 736 } |
| 732 | 737 |
| 733 Vertex* verts = reinterpret_cast<Vertex*>(arg->vertices()); | 738 Vertex* verts = reinterpret_cast<Vertex*>(arg->vertices()); |
| 734 | 739 |
| 735 const SkMatrix* toDevice = NULL; | 740 const SkMatrix* toDevice = NULL; |
| 736 const SkMatrix* toSrc = NULL; | 741 const SkMatrix* toSrc = NULL; |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 839 4 * lineCnt + kVertsPerQuad*quads, // startV | 844 4 * lineCnt + kVertsPerQuad*quads, // startV |
| 840 0, // startI | 845 0, // startI |
| 841 kVertsPerQuad*n, // vCount | 846 kVertsPerQuad*n, // vCount |
| 842 kIdxsPerQuad*n); // iCount | 847 kIdxsPerQuad*n); // iCount |
| 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 |