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 "GrDefaultPathRenderer.h" | 8 #include "GrDefaultPathRenderer.h" |
9 | 9 |
10 #include "GrBatch.h" | 10 #include "GrBatch.h" |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 fBatch.fColorIgnored = init.fColorIgnored; | 247 fBatch.fColorIgnored = init.fColorIgnored; |
248 fBatch.fColor = fGeoData[0].fColor; | 248 fBatch.fColor = fGeoData[0].fColor; |
249 fBatch.fUsesLocalCoords = init.fUsesLocalCoords; | 249 fBatch.fUsesLocalCoords = init.fUsesLocalCoords; |
250 fBatch.fCoverageIgnored = init.fCoverageIgnored; | 250 fBatch.fCoverageIgnored = init.fCoverageIgnored; |
251 } | 251 } |
252 | 252 |
253 void generateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline
) override { | 253 void generateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline
) override { |
254 SkAutoTUnref<const GrGeometryProcessor> gp( | 254 SkAutoTUnref<const GrGeometryProcessor> gp( |
255 GrDefaultGeoProcFactory::Create(GrDefaultGeoProcFactory::kPositi
on_GPType, | 255 GrDefaultGeoProcFactory::Create(GrDefaultGeoProcFactory::kPositi
on_GPType, |
256 this->color(), | 256 this->color(), |
257 this->usesLocalCoords(), | |
258 this->coverageIgnored(), | |
259 this->viewMatrix(), | 257 this->viewMatrix(), |
260 SkMatrix::I(), | 258 SkMatrix::I(), |
261 this->coverage())); | 259 this->coverage())); |
262 | 260 |
263 size_t vertexStride = gp->getVertexStride(); | 261 size_t vertexStride = gp->getVertexStride(); |
264 SkASSERT(vertexStride == sizeof(SkPoint)); | 262 SkASSERT(vertexStride == sizeof(SkPoint)); |
265 | 263 |
266 batchTarget->initDraw(gp, pipeline); | 264 batchTarget->initDraw(gp, pipeline); |
267 | 265 |
| 266 // TODO this is hacky, but the only way we have to initialize the GP is
to use the |
| 267 // GrPipelineInfo struct so we can generate the correct shader. Once we
have GrBatch |
| 268 // everywhere we can remove this nastiness |
| 269 GrPipelineInfo init; |
| 270 init.fColorIgnored = fBatch.fColorIgnored; |
| 271 init.fOverrideColor = GrColor_ILLEGAL; |
| 272 init.fCoverageIgnored = fBatch.fCoverageIgnored; |
| 273 init.fUsesLocalCoords = this->usesLocalCoords(); |
| 274 gp->initBatchTracker(batchTarget->currentBatchTracker(), init); |
| 275 |
268 int instanceCount = fGeoData.count(); | 276 int instanceCount = fGeoData.count(); |
269 | 277 |
270 // compute number of vertices | 278 // compute number of vertices |
271 int maxVertices = 0; | 279 int maxVertices = 0; |
272 | 280 |
273 // We will use index buffers if we have multiple paths or one path with
multiple contours | 281 // We will use index buffers if we have multiple paths or one path with
multiple contours |
274 bool isIndexed = instanceCount > 1; | 282 bool isIndexed = instanceCount > 1; |
275 for (int i = 0; i < instanceCount; i++) { | 283 for (int i = 0; i < instanceCount; i++) { |
276 Geometry& args = fGeoData[i]; | 284 Geometry& args = fGeoData[i]; |
277 | 285 |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 | 511 |
504 } | 512 } |
505 return true; | 513 return true; |
506 } | 514 } |
507 | 515 |
508 GrColor color() const { return fBatch.fColor; } | 516 GrColor color() const { return fBatch.fColor; } |
509 uint8_t coverage() const { return fBatch.fCoverage; } | 517 uint8_t coverage() const { return fBatch.fCoverage; } |
510 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } | 518 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } |
511 const SkMatrix& viewMatrix() const { return fBatch.fViewMatrix; } | 519 const SkMatrix& viewMatrix() const { return fBatch.fViewMatrix; } |
512 bool isHairline() const { return fBatch.fIsHairline; } | 520 bool isHairline() const { return fBatch.fIsHairline; } |
513 bool coverageIgnored() const { return fBatch.fCoverageIgnored; } | |
514 | 521 |
515 struct BatchTracker { | 522 struct BatchTracker { |
516 GrColor fColor; | 523 GrColor fColor; |
517 uint8_t fCoverage; | 524 uint8_t fCoverage; |
518 SkMatrix fViewMatrix; | 525 SkMatrix fViewMatrix; |
519 bool fUsesLocalCoords; | 526 bool fUsesLocalCoords; |
520 bool fColorIgnored; | 527 bool fColorIgnored; |
521 bool fCoverageIgnored; | 528 bool fCoverageIgnored; |
522 bool fIsHairline; | 529 bool fIsHairline; |
523 }; | 530 }; |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 geometry.fColor = color; | 766 geometry.fColor = color; |
760 geometry.fPath = path; | 767 geometry.fPath = path; |
761 geometry.fTolerance = srcSpaceTol; | 768 geometry.fTolerance = srcSpaceTol; |
762 | 769 |
763 viewMatrix.mapRect(&bounds); | 770 viewMatrix.mapRect(&bounds); |
764 uint8_t coverage = GrRandomCoverage(random); | 771 uint8_t coverage = GrRandomCoverage(random); |
765 return DefaultPathBatch::Create(geometry, coverage, viewMatrix, true, bounds
); | 772 return DefaultPathBatch::Create(geometry, coverage, viewMatrix, true, bounds
); |
766 } | 773 } |
767 | 774 |
768 #endif | 775 #endif |
OLD | NEW |