Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Side by Side Diff: src/gpu/GrDefaultPathRenderer.cpp

Issue 1128113008: Make GrStrokeInfo inherit from SkStrokeRec (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Address review comments Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrPathRenderer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 } 165 }
166 return false; 166 return false;
167 #endif 167 #endif
168 } 168 }
169 169
170 GrPathRenderer::StencilSupport 170 GrPathRenderer::StencilSupport
171 GrDefaultPathRenderer::onGetStencilSupport(const GrDrawTarget*, 171 GrDefaultPathRenderer::onGetStencilSupport(const GrDrawTarget*,
172 const GrPipelineBuilder*, 172 const GrPipelineBuilder*,
173 const SkPath& path, 173 const SkPath& path,
174 const GrStrokeInfo& stroke) const { 174 const GrStrokeInfo& stroke) const {
175 if (single_pass_path(path, stroke.getStrokeRec())) { 175 if (single_pass_path(path, stroke)) {
176 return GrPathRenderer::kNoRestriction_StencilSupport; 176 return GrPathRenderer::kNoRestriction_StencilSupport;
177 } else { 177 } else {
178 return GrPathRenderer::kStencilOnly_StencilSupport; 178 return GrPathRenderer::kStencilOnly_StencilSupport;
179 } 179 }
180 } 180 }
181 181
182 static inline void append_countour_edge_indices(bool hairLine, 182 static inline void append_countour_edge_indices(bool hairLine,
183 uint16_t fanCenterIdx, 183 uint16_t fanCenterIdx,
184 uint16_t edgeV0Idx, 184 uint16_t edgeV0Idx,
185 uint16_t** indices) { 185 uint16_t** indices) {
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 const SkPath& path, 540 const SkPath& path,
541 const GrStrokeInfo& origStroke, 541 const GrStrokeInfo& origStroke,
542 bool stencilOnly) { 542 bool stencilOnly) {
543 SkTCopyOnFirstWrite<GrStrokeInfo> stroke(origStroke); 543 SkTCopyOnFirstWrite<GrStrokeInfo> stroke(origStroke);
544 544
545 SkScalar hairlineCoverage; 545 SkScalar hairlineCoverage;
546 uint8_t newCoverage = 0xff; 546 uint8_t newCoverage = 0xff;
547 if (IsStrokeHairlineOrEquivalent(*stroke, viewMatrix, &hairlineCoverage)) { 547 if (IsStrokeHairlineOrEquivalent(*stroke, viewMatrix, &hairlineCoverage)) {
548 newCoverage = SkScalarRoundToInt(hairlineCoverage * 0xff); 548 newCoverage = SkScalarRoundToInt(hairlineCoverage * 0xff);
549 549
550 if (!stroke->getStrokeRec().isHairlineStyle()) { 550 if (!stroke->isHairlineStyle()) {
551 stroke.writable()->getStrokeRecPtr()->setHairlineStyle(); 551 stroke.writable()->setHairlineStyle();
552 } 552 }
553 } 553 }
554 554
555 const bool isHairline = stroke->getStrokeRec().isHairlineStyle(); 555 const bool isHairline = stroke->isHairlineStyle();
556 556
557 // Save the current xp on the draw state so we can reset it if needed 557 // Save the current xp on the draw state so we can reset it if needed
558 SkAutoTUnref<const GrXPFactory> backupXPFactory(SkRef(pipelineBuilder->getXP Factory())); 558 SkAutoTUnref<const GrXPFactory> backupXPFactory(SkRef(pipelineBuilder->getXP Factory()));
559 // face culling doesn't make sense here 559 // face culling doesn't make sense here
560 SkASSERT(GrPipelineBuilder::kBoth_DrawFace == pipelineBuilder->getDrawFace() ); 560 SkASSERT(GrPipelineBuilder::kBoth_DrawFace == pipelineBuilder->getDrawFace() );
561 561
562 int passCount = 0; 562 int passCount = 0;
563 const GrStencilSettings* passes[3]; 563 const GrStencilSettings* passes[3];
564 GrPipelineBuilder::DrawFace drawFace[3]; 564 GrPipelineBuilder::DrawFace drawFace[3];
565 bool reverse = false; 565 bool reverse = false;
566 bool lastPassIsBounds; 566 bool lastPassIsBounds;
567 567
568 if (isHairline) { 568 if (isHairline) {
569 passCount = 1; 569 passCount = 1;
570 if (stencilOnly) { 570 if (stencilOnly) {
571 passes[0] = &gDirectToStencil; 571 passes[0] = &gDirectToStencil;
572 } else { 572 } else {
573 passes[0] = NULL; 573 passes[0] = NULL;
574 } 574 }
575 lastPassIsBounds = false; 575 lastPassIsBounds = false;
576 drawFace[0] = GrPipelineBuilder::kBoth_DrawFace; 576 drawFace[0] = GrPipelineBuilder::kBoth_DrawFace;
577 } else { 577 } else {
578 if (single_pass_path(path, stroke->getStrokeRec())) { 578 if (single_pass_path(path, *stroke)) {
579 passCount = 1; 579 passCount = 1;
580 if (stencilOnly) { 580 if (stencilOnly) {
581 passes[0] = &gDirectToStencil; 581 passes[0] = &gDirectToStencil;
582 } else { 582 } else {
583 passes[0] = NULL; 583 passes[0] = NULL;
584 } 584 }
585 drawFace[0] = GrPipelineBuilder::kBoth_DrawFace; 585 drawFace[0] = GrPipelineBuilder::kBoth_DrawFace;
586 lastPassIsBounds = false; 586 lastPassIsBounds = false;
587 } else { 587 } else {
588 switch (path.getFillType()) { 588 switch (path.getFillType()) {
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 geometry.fColor = color; 766 geometry.fColor = color;
767 geometry.fPath = path; 767 geometry.fPath = path;
768 geometry.fTolerance = srcSpaceTol; 768 geometry.fTolerance = srcSpaceTol;
769 769
770 viewMatrix.mapRect(&bounds); 770 viewMatrix.mapRect(&bounds);
771 uint8_t coverage = GrRandomCoverage(random); 771 uint8_t coverage = GrRandomCoverage(random);
772 return DefaultPathBatch::Create(geometry, coverage, viewMatrix, true, bounds ); 772 return DefaultPathBatch::Create(geometry, coverage, viewMatrix, true, bounds );
773 } 773 }
774 774
775 #endif 775 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrPathRenderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698