| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 "GrAAHairLinePathRenderer.h" | 8 #include "GrAAHairLinePathRenderer.h" |
| 9 | 9 |
| 10 #include "GrContext.h" | 10 #include "GrContext.h" |
| (...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 812 add_quads(&quads[3*i], qSubdivs[i], toDevice, toSrc, &verts, devBounds); | 812 add_quads(&quads[3*i], qSubdivs[i], toDevice, toSrc, &verts, devBounds); |
| 813 } | 813 } |
| 814 | 814 |
| 815 // Start Conics | 815 // Start Conics |
| 816 for (int i = 0; i < conicCnt; ++i) { | 816 for (int i = 0; i < conicCnt; ++i) { |
| 817 add_conics(&conics[3*i], cWeights[i], toDevice, toSrc, &verts, devBounds
); | 817 add_conics(&conics[3*i], cWeights[i], toDevice, toSrc, &verts, devBounds
); |
| 818 } | 818 } |
| 819 return true; | 819 return true; |
| 820 } | 820 } |
| 821 | 821 |
| 822 bool GrAAHairLinePathRenderer::canDrawPath(const SkPath& path, | 822 bool GrAAHairLinePathRenderer::canDrawPath(const SkStrokeRec& stroke, |
| 823 const SkStrokeRec& stroke, | |
| 824 const GrDrawTarget* target, | 823 const GrDrawTarget* target, |
| 825 bool antiAlias) const { | 824 bool antiAlias) const { |
| 826 if (!stroke.isHairlineStyle() || !antiAlias) { | 825 if (!stroke.isHairlineStyle() || !antiAlias) { |
| 827 return false; | 826 return false; |
| 828 } | 827 } |
| 829 | 828 |
| 830 if (SkPath::kLine_SegmentMask == path.getSegmentMasks() || | 829 if (SkPath::kLine_SegmentMask == fPath.getSegmentMasks() || |
| 831 target->caps()->shaderDerivativeSupport()) { | 830 target->caps()->shaderDerivativeSupport()) { |
| 832 return true; | 831 return true; |
| 833 } | 832 } |
| 834 return false; | 833 return false; |
| 835 } | 834 } |
| 836 | 835 |
| 837 template <class VertexType> | 836 template <class VertexType> |
| 838 bool check_bounds(GrDrawState* drawState, const SkRect& devBounds, void* vertice
s, int vCount) | 837 bool check_bounds(GrDrawState* drawState, const SkRect& devBounds, void* vertice
s, int vCount) |
| 839 { | 838 { |
| 840 SkRect tolDevBounds = devBounds; | 839 SkRect tolDevBounds = devBounds; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 864 actualBounds.growToInclude(pos.fX, pos.fY); | 863 actualBounds.growToInclude(pos.fX, pos.fY); |
| 865 } | 864 } |
| 866 } | 865 } |
| 867 if (!first) { | 866 if (!first) { |
| 868 return tolDevBounds.contains(actualBounds); | 867 return tolDevBounds.contains(actualBounds); |
| 869 } | 868 } |
| 870 | 869 |
| 871 return true; | 870 return true; |
| 872 } | 871 } |
| 873 | 872 |
| 874 bool GrAAHairLinePathRenderer::onDrawPath(const SkPath& path, | 873 bool GrAAHairLinePathRenderer::onDrawPath(const SkStrokeRec&, |
| 875 const SkStrokeRec&, | |
| 876 GrDrawTarget* target, | 874 GrDrawTarget* target, |
| 877 bool antiAlias) { | 875 bool antiAlias) { |
| 878 | 876 |
| 879 GrDrawState* drawState = target->drawState(); | 877 GrDrawState* drawState = target->drawState(); |
| 880 | 878 |
| 881 SkIRect devClipBounds; | 879 SkIRect devClipBounds; |
| 882 target->getClip()->getConservativeBounds(drawState->getRenderTarget(), &devC
lipBounds); | 880 target->getClip()->getConservativeBounds(drawState->getRenderTarget(), &devC
lipBounds); |
| 883 | 881 |
| 884 int lineCnt; | 882 int lineCnt; |
| 885 int quadCnt; | 883 int quadCnt; |
| 886 int conicCnt; | 884 int conicCnt; |
| 887 PREALLOC_PTARRAY(128) lines; | 885 PREALLOC_PTARRAY(128) lines; |
| 888 PREALLOC_PTARRAY(128) quads; | 886 PREALLOC_PTARRAY(128) quads; |
| 889 PREALLOC_PTARRAY(128) conics; | 887 PREALLOC_PTARRAY(128) conics; |
| 890 IntArray qSubdivs; | 888 IntArray qSubdivs; |
| 891 FloatArray cWeights; | 889 FloatArray cWeights; |
| 892 quadCnt = generate_lines_and_quads(path, drawState->getViewMatrix(), devClip
Bounds, | 890 quadCnt = generate_lines_and_quads(fPath, drawState->getViewMatrix(), devCli
pBounds, |
| 893 &lines, &quads, &conics, &qSubdivs, &cWei
ghts); | 891 &lines, &quads, &conics, &qSubdivs, &cWei
ghts); |
| 894 lineCnt = lines.count() / 2; | 892 lineCnt = lines.count() / 2; |
| 895 conicCnt = conics.count() / 3; | 893 conicCnt = conics.count() / 3; |
| 896 | 894 |
| 897 // do lines first | 895 // do lines first |
| 898 if (lineCnt) { | 896 if (lineCnt) { |
| 899 GrDrawTarget::AutoReleaseGeometry arg; | 897 GrDrawTarget::AutoReleaseGeometry arg; |
| 900 SkRect devBounds; | 898 SkRect devBounds; |
| 901 | 899 |
| 902 if (!this->createLineGeom(path, | 900 if (!this->createLineGeom(fPath, |
| 903 target, | 901 target, |
| 904 lines, | 902 lines, |
| 905 lineCnt, | 903 lineCnt, |
| 906 &arg, | 904 &arg, |
| 907 &devBounds)) { | 905 &devBounds)) { |
| 908 return false; | 906 return false; |
| 909 } | 907 } |
| 910 | 908 |
| 911 GrDrawTarget::AutoStateRestore asr; | 909 GrDrawTarget::AutoStateRestore asr; |
| 912 | 910 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 938 lines += n; | 936 lines += n; |
| 939 } | 937 } |
| 940 } | 938 } |
| 941 } | 939 } |
| 942 | 940 |
| 943 // then quadratics/conics | 941 // then quadratics/conics |
| 944 if (quadCnt || conicCnt) { | 942 if (quadCnt || conicCnt) { |
| 945 GrDrawTarget::AutoReleaseGeometry arg; | 943 GrDrawTarget::AutoReleaseGeometry arg; |
| 946 SkRect devBounds; | 944 SkRect devBounds; |
| 947 | 945 |
| 948 if (!this->createBezierGeom(path, | 946 if (!this->createBezierGeom(fPath, |
| 949 target, | 947 target, |
| 950 quads, | 948 quads, |
| 951 quadCnt, | 949 quadCnt, |
| 952 conics, | 950 conics, |
| 953 conicCnt, | 951 conicCnt, |
| 954 qSubdivs, | 952 qSubdivs, |
| 955 cWeights, | 953 cWeights, |
| 956 &arg, | 954 &arg, |
| 957 &devBounds)) { | 955 &devBounds)) { |
| 958 return false; | 956 return false; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1012 &devBounds); | 1010 &devBounds); |
| 1013 conics += n; | 1011 conics += n; |
| 1014 } | 1012 } |
| 1015 } | 1013 } |
| 1016 } | 1014 } |
| 1017 | 1015 |
| 1018 target->resetIndexSource(); | 1016 target->resetIndexSource(); |
| 1019 | 1017 |
| 1020 return true; | 1018 return true; |
| 1021 } | 1019 } |
| OLD | NEW |