| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 "GrTessellatingPathRenderer.h" | 8 #include "GrTessellatingPathRenderer.h" |
| 9 | 9 |
| 10 #include "GrBatchFlushState.h" | 10 #include "GrBatchFlushState.h" |
| (...skipping 1379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1390 static GrDrawBatch* Create(const GrColor& color, | 1390 static GrDrawBatch* Create(const GrColor& color, |
| 1391 const SkPath& path, | 1391 const SkPath& path, |
| 1392 const GrStrokeInfo& stroke, | 1392 const GrStrokeInfo& stroke, |
| 1393 const SkMatrix& viewMatrix, | 1393 const SkMatrix& viewMatrix, |
| 1394 SkRect clipBounds) { | 1394 SkRect clipBounds) { |
| 1395 return new TessellatingPathBatch(color, path, stroke, viewMatrix, clipBo
unds); | 1395 return new TessellatingPathBatch(color, path, stroke, viewMatrix, clipBo
unds); |
| 1396 } | 1396 } |
| 1397 | 1397 |
| 1398 const char* name() const override { return "TessellatingPathBatch"; } | 1398 const char* name() const override { return "TessellatingPathBatch"; } |
| 1399 | 1399 |
| 1400 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { | 1400 void computePipelineOptimizations(GrInitInvariantOutput* color, |
| 1401 out->setKnownFourComponents(fColor); | 1401 GrInitInvariantOutput* coverage, |
| 1402 } | 1402 GrBatchToXPOverrides* overrides) const ove
rride { |
| 1403 | 1403 color->setKnownFourComponents(fColor); |
| 1404 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { | 1404 coverage->setUnknownSingleComponent(); |
| 1405 out->setUnknownSingleComponent(); | 1405 overrides->fUsePLSDstRead = false; |
| 1406 } | 1406 } |
| 1407 | 1407 |
| 1408 private: | 1408 private: |
| 1409 void initBatchTracker(const GrPipelineOptimizations& opt) override { | 1409 void initBatchTracker(const GrXPOverridesForBatch& overrides) override { |
| 1410 // Handle any color overrides | 1410 // Handle any color overrides |
| 1411 if (!opt.readsColor()) { | 1411 if (!overrides.readsColor()) { |
| 1412 fColor = GrColor_ILLEGAL; | 1412 fColor = GrColor_ILLEGAL; |
| 1413 } | 1413 } |
| 1414 opt.getOverrideColorIfSet(&fColor); | 1414 overrides.getOverrideColorIfSet(&fColor); |
| 1415 fPipelineInfo = opt; | 1415 fPipelineInfo = overrides; |
| 1416 } | 1416 } |
| 1417 | 1417 |
| 1418 int tessellate(GrUniqueKey* key, | 1418 int tessellate(GrUniqueKey* key, |
| 1419 GrResourceProvider* resourceProvider, | 1419 GrResourceProvider* resourceProvider, |
| 1420 SkAutoTUnref<GrVertexBuffer>& vertexBuffer, | 1420 SkAutoTUnref<GrVertexBuffer>& vertexBuffer, |
| 1421 bool canMapVB) { | 1421 bool canMapVB) { |
| 1422 SkPath path; | 1422 SkPath path; |
| 1423 GrStrokeInfo stroke(fStroke); | 1423 GrStrokeInfo stroke(fStroke); |
| 1424 if (stroke.isDashed()) { | 1424 if (stroke.isDashed()) { |
| 1425 if (!stroke.applyDashToPath(&path, &stroke, fPath)) { | 1425 if (!stroke.applyDashToPath(&path, &stroke, fPath)) { |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1614 fBounds.outset(radius, radius); | 1614 fBounds.outset(radius, radius); |
| 1615 } | 1615 } |
| 1616 viewMatrix.mapRect(&fBounds); | 1616 viewMatrix.mapRect(&fBounds); |
| 1617 } | 1617 } |
| 1618 | 1618 |
| 1619 GrColor fColor; | 1619 GrColor fColor; |
| 1620 SkPath fPath; | 1620 SkPath fPath; |
| 1621 GrStrokeInfo fStroke; | 1621 GrStrokeInfo fStroke; |
| 1622 SkMatrix fViewMatrix; | 1622 SkMatrix fViewMatrix; |
| 1623 SkRect fClipBounds; // in source space | 1623 SkRect fClipBounds; // in source space |
| 1624 GrPipelineOptimizations fPipelineInfo; | 1624 GrXPOverridesForBatch fPipelineInfo; |
| 1625 | 1625 |
| 1626 typedef GrVertexBatch INHERITED; | 1626 typedef GrVertexBatch INHERITED; |
| 1627 }; | 1627 }; |
| 1628 | 1628 |
| 1629 bool GrTessellatingPathRenderer::onDrawPath(const DrawPathArgs& args) { | 1629 bool GrTessellatingPathRenderer::onDrawPath(const DrawPathArgs& args) { |
| 1630 SkASSERT(!args.fAntiAlias); | 1630 SkASSERT(!args.fAntiAlias); |
| 1631 const GrRenderTarget* rt = args.fPipelineBuilder->getRenderTarget(); | 1631 const GrRenderTarget* rt = args.fPipelineBuilder->getRenderTarget(); |
| 1632 if (nullptr == rt) { | 1632 if (nullptr == rt) { |
| 1633 return false; | 1633 return false; |
| 1634 } | 1634 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1662 bool result = viewMatrix.invert(&vmi); | 1662 bool result = viewMatrix.invert(&vmi); |
| 1663 if (!result) { | 1663 if (!result) { |
| 1664 SkFAIL("Cannot invert matrix\n"); | 1664 SkFAIL("Cannot invert matrix\n"); |
| 1665 } | 1665 } |
| 1666 vmi.mapRect(&clipBounds); | 1666 vmi.mapRect(&clipBounds); |
| 1667 GrStrokeInfo strokeInfo = GrTest::TestStrokeInfo(random); | 1667 GrStrokeInfo strokeInfo = GrTest::TestStrokeInfo(random); |
| 1668 return TessellatingPathBatch::Create(color, path, strokeInfo, viewMatrix, cl
ipBounds); | 1668 return TessellatingPathBatch::Create(color, path, strokeInfo, viewMatrix, cl
ipBounds); |
| 1669 } | 1669 } |
| 1670 | 1670 |
| 1671 #endif | 1671 #endif |
| OLD | NEW |