OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2015 Google Inc. | 3 * Copyright 2015 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 "GrAARectRenderer.h" | 9 #include "GrAARectRenderer.h" |
10 #include "GrAtlasTextContext.h" | 10 #include "GrAtlasTextContext.h" |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 init.getOverrideColorIfSet(&fGeoData[0].fColor); | 281 init.getOverrideColorIfSet(&fGeoData[0].fColor); |
282 | 282 |
283 // setup batch properties | 283 // setup batch properties |
284 fBatch.fColorIgnored = !init.readsColor(); | 284 fBatch.fColorIgnored = !init.readsColor(); |
285 fBatch.fColor = fGeoData[0].fColor; | 285 fBatch.fColor = fGeoData[0].fColor; |
286 fBatch.fUsesLocalCoords = init.readsLocalCoords(); | 286 fBatch.fUsesLocalCoords = init.readsLocalCoords(); |
287 fBatch.fCoverageIgnored = !init.readsCoverage(); | 287 fBatch.fCoverageIgnored = !init.readsCoverage(); |
288 } | 288 } |
289 | 289 |
290 void generateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline
) override { | 290 void generateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline
) override { |
291 SkAutoTUnref<const GrGeometryProcessor> gp( | 291 SkAutoTUnref<const GrGeometryProcessor> gp; |
292 GrDefaultGeoProcFactory::Create(GrDefaultGeoProcFactory::kPositi
on_GPType, | 292 { |
293 this->color(), | 293 using namespace GrDefaultGeoProcFactory; |
294 this->usesLocalCoords(), | 294 Color color(this->color()); |
295 this->coverageIgnored(), | 295 Coverage coverage(this->coverageIgnored() ? Coverage::kSolid_Type : |
296 this->viewMatrix(), | 296 Coverage::kNone_Type); |
297 SkMatrix::I())); | 297 LocalCoords localCoords(this->usesLocalCoords() ? LocalCoords::kUseP
osition_Type : |
| 298 LocalCoords::kUnus
ed_Type); |
| 299 gp.reset(GrDefaultGeoProcFactory::Create(color, coverage, localCoord
s, |
| 300 this->viewMatrix())); |
| 301 } |
298 | 302 |
299 batchTarget->initDraw(gp, pipeline); | 303 batchTarget->initDraw(gp, pipeline); |
300 | 304 |
301 size_t vertexStride = gp->getVertexStride(); | 305 size_t vertexStride = gp->getVertexStride(); |
302 | 306 |
303 SkASSERT(vertexStride == sizeof(GrDefaultGeoProcFactory::PositionAttr)); | 307 SkASSERT(vertexStride == sizeof(GrDefaultGeoProcFactory::PositionAttr)); |
304 | 308 |
305 Geometry& args = fGeoData[0]; | 309 Geometry& args = fGeoData[0]; |
306 | 310 |
307 int vertexCount = kVertsPerHairlineRect; | 311 int vertexCount = kVertsPerHairlineRect; |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 localMatrix); | 557 localMatrix); |
554 } | 558 } |
555 | 559 |
556 static const GrGeometryProcessor* set_vertex_attributes(bool hasLocalCoords, | 560 static const GrGeometryProcessor* set_vertex_attributes(bool hasLocalCoords, |
557 bool hasColors, | 561 bool hasColors, |
558 int* colorOffset, | 562 int* colorOffset, |
559 int* texOffset, | 563 int* texOffset, |
560 GrColor color, | 564 GrColor color, |
561 const SkMatrix& viewMatr
ix, | 565 const SkMatrix& viewMatr
ix, |
562 bool coverageIgnored) { | 566 bool coverageIgnored) { |
| 567 using namespace GrDefaultGeoProcFactory; |
563 *texOffset = -1; | 568 *texOffset = -1; |
564 *colorOffset = -1; | 569 *colorOffset = -1; |
565 uint32_t flags = GrDefaultGeoProcFactory::kPosition_GPType; | 570 Color gpColor(color); |
| 571 if (hasColors) { |
| 572 gpColor.fType = Color::kAttribute_Type; |
| 573 } |
| 574 |
| 575 Coverage coverage(coverageIgnored ? Coverage::kNone_Type : Coverage::kSolid_
Type); |
| 576 LocalCoords localCoords(hasLocalCoords ? LocalCoords::kHasExplicit_Type : |
| 577 LocalCoords::kUsePosition_Type); |
566 if (hasLocalCoords && hasColors) { | 578 if (hasLocalCoords && hasColors) { |
567 *colorOffset = sizeof(SkPoint); | 579 *colorOffset = sizeof(SkPoint); |
568 *texOffset = sizeof(SkPoint) + sizeof(GrColor); | 580 *texOffset = sizeof(SkPoint) + sizeof(GrColor); |
569 flags |= GrDefaultGeoProcFactory::kColor_GPType | | |
570 GrDefaultGeoProcFactory::kLocalCoord_GPType; | |
571 } else if (hasLocalCoords) { | 581 } else if (hasLocalCoords) { |
572 *texOffset = sizeof(SkPoint); | 582 *texOffset = sizeof(SkPoint); |
573 flags |= GrDefaultGeoProcFactory::kLocalCoord_GPType; | |
574 } else if (hasColors) { | 583 } else if (hasColors) { |
575 *colorOffset = sizeof(SkPoint); | 584 *colorOffset = sizeof(SkPoint); |
576 flags |= GrDefaultGeoProcFactory::kColor_GPType; | |
577 } | 585 } |
578 return GrDefaultGeoProcFactory::Create(flags, color, hasLocalCoords, coverag
eIgnored, | 586 return GrDefaultGeoProcFactory::Create(gpColor, coverage, localCoords, viewM
atrix); |
579 viewMatrix, SkMatrix::I()); | |
580 } | 587 } |
581 | 588 |
582 class DrawVerticesBatch : public GrBatch { | 589 class DrawVerticesBatch : public GrBatch { |
583 public: | 590 public: |
584 struct Geometry { | 591 struct Geometry { |
585 GrColor fColor; | 592 GrColor fColor; |
586 SkTDArray<SkPoint> fPositions; | 593 SkTDArray<SkPoint> fPositions; |
587 SkTDArray<uint16_t> fIndices; | 594 SkTDArray<uint16_t> fIndices; |
588 SkTDArray<GrColor> fColors; | 595 SkTDArray<GrColor> fColors; |
589 SkTDArray<SkPoint> fLocalCoords; | 596 SkTDArray<SkPoint> fLocalCoords; |
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1327 return DrawVerticesBatch::Create(geometry, type, viewMatrix, | 1334 return DrawVerticesBatch::Create(geometry, type, viewMatrix, |
1328 positions.begin(), vertexCount, | 1335 positions.begin(), vertexCount, |
1329 indices.begin(), hasIndices ? vertexCount :
0, | 1336 indices.begin(), hasIndices ? vertexCount :
0, |
1330 colors.begin(), | 1337 colors.begin(), |
1331 texCoords.begin(), | 1338 texCoords.begin(), |
1332 bounds); | 1339 bounds); |
1333 } | 1340 } |
1334 | 1341 |
1335 #endif | 1342 #endif |
1336 | 1343 |
OLD | NEW |