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 | 9 |
10 #include "GrPathRendererChain.h" | 10 #include "GrPathRendererChain.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 } else if (kStencilAndColor_DrawType == drawType || | 54 } else if (kStencilAndColor_DrawType == drawType || |
55 kStencilAndColorAntiAlias_DrawType == drawType) { | 55 kStencilAndColorAntiAlias_DrawType == drawType) { |
56 minStencilSupport = GrPathRenderer::kNoRestriction_StencilSupport; | 56 minStencilSupport = GrPathRenderer::kNoRestriction_StencilSupport; |
57 } else { | 57 } else { |
58 minStencilSupport = GrPathRenderer::kNoSupport_StencilSupport; | 58 minStencilSupport = GrPathRenderer::kNoSupport_StencilSupport; |
59 } | 59 } |
60 | 60 |
61 | 61 |
62 for (int i = 0; i < fChain.count(); ++i) { | 62 for (int i = 0; i < fChain.count(); ++i) { |
63 GrPathRenderer::CanDrawPathArgs args; | 63 GrPathRenderer::CanDrawPathArgs args; |
64 args.fTarget = target; | 64 args.fShaderCaps = target->caps()->shaderCaps(); |
65 args.fPipelineBuilder = pipelineBuilder; | 65 args.fPipelineBuilder = pipelineBuilder; |
66 args.fViewMatrix = &viewMatrix; | 66 args.fViewMatrix = &viewMatrix; |
67 args.fPath = &path; | 67 args.fPath = &path; |
68 args.fStroke = &stroke; | 68 args.fStroke = &stroke; |
69 args.fAntiAlias = antiAlias; | 69 args.fAntiAlias = antiAlias; |
70 if (fChain[i]->canDrawPath(args)) { | 70 if (fChain[i]->canDrawPath(args)) { |
71 if (GrPathRenderer::kNoSupport_StencilSupport != minStencilSupport)
{ | 71 if (GrPathRenderer::kNoSupport_StencilSupport != minStencilSupport)
{ |
72 GrPathRenderer::StencilSupport support = | 72 GrPathRenderer::StencilSupport support = |
73 fChain[i]->getStencilSupport(target, pipelineBuilder, path,
stroke); | 73 fChain[i]->getStencilSupp
ort(path, stroke); |
74 if (support < minStencilSupport) { | 74 if (support < minStencilSupport) { |
75 continue; | 75 continue; |
76 } else if (stencilSupport) { | 76 } else if (stencilSupport) { |
77 *stencilSupport = support; | 77 *stencilSupport = support; |
78 } | 78 } |
79 } | 79 } |
80 return fChain[i]; | 80 return fChain[i]; |
81 } | 81 } |
82 } | 82 } |
83 return NULL; | 83 return NULL; |
84 } | 84 } |
85 | 85 |
86 void GrPathRendererChain::init() { | 86 void GrPathRendererChain::init() { |
87 SkASSERT(!fInit); | 87 SkASSERT(!fInit); |
88 const GrCaps* caps = fOwner->caps(); | 88 const GrCaps* caps = fOwner->caps(); |
89 bool twoSided = caps->twoSidedStencilSupport(); | 89 bool twoSided = caps->twoSidedStencilSupport(); |
90 bool wrapOp = caps->stencilWrapOpsSupport(); | 90 bool wrapOp = caps->stencilWrapOpsSupport(); |
91 GrPathRenderer::AddPathRenderers(fOwner, this); | 91 GrPathRenderer::AddPathRenderers(fOwner, this); |
92 this->addPathRenderer(SkNEW_ARGS(GrDefaultPathRenderer, | 92 this->addPathRenderer(SkNEW_ARGS(GrDefaultPathRenderer, |
93 (twoSided, wrapOp)))->unref(); | 93 (twoSided, wrapOp)))->unref(); |
94 fInit = true; | 94 fInit = true; |
95 } | 95 } |
OLD | NEW |