From ecbc15d46c32a0edd28c3ae16e64fa19e50e6362 Mon Sep 17 00:00:00 2001 From: robertphillips Date: Tue, 19 Jul 2016 14:04:39 -0700 Subject: Minor cleanup of GrStencilAndCoverTextContext Split out of https://codereview.chromium.org/2163483002/ (Use SkFont in GrStencilAndCoverTextContext) GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2165673002 Review-Url: https://codereview.chromium.org/2165673002 --- src/gpu/text/GrStencilAndCoverTextContext.cpp | 27 ++++++++++++++------------- src/gpu/text/GrStencilAndCoverTextContext.h | 4 +++- 2 files changed, 17 insertions(+), 14 deletions(-) (limited to 'src/gpu') diff --git a/src/gpu/text/GrStencilAndCoverTextContext.cpp b/src/gpu/text/GrStencilAndCoverTextContext.cpp index 632bdcdaf1..381aa30282 100644 --- a/src/gpu/text/GrStencilAndCoverTextContext.cpp +++ b/src/gpu/text/GrStencilAndCoverTextContext.cpp @@ -83,7 +83,7 @@ void GrStencilAndCoverTextContext::drawText(GrContext* context, GrDrawContext* d if (skPaint.getTextSize() > 0) { TextRun run(skPaint); run.setText(text, byteLength, x, y); - run.draw(context, dc, paint, clip, paint.getColor(), viewMatrix, props, 0, 0, + run.draw(context, dc, paint, clip, viewMatrix, props, 0, 0, clipBounds, fFallbackTextContext, skPaint); } return; @@ -117,7 +117,7 @@ void GrStencilAndCoverTextContext::drawPosText(GrContext* context, GrDrawContext if (skPaint.getTextSize() > 0) { TextRun run(skPaint); run.setPosText(text, byteLength, pos, scalarsPerPosition, offset); - run.draw(context, dc, paint, clip, paint.getColor(), viewMatrix, props, 0, 0, + run.draw(context, dc, paint, clip, viewMatrix, props, 0, 0, clipBounds, fFallbackTextContext, skPaint); } return; @@ -226,7 +226,9 @@ void GrStencilAndCoverTextContext::drawTextBlob(GrContext* context, GrDrawContex TextBlob::Iter iter(blob); for (TextRun* run = iter.get(); run; run = iter.next()) { - run->draw(context, dc, paint, clip, paint.getColor(), viewMatrix, props, x, y, + // The run's "font" overrides the anti-aliasing of the passed in paint! + paint.setAntiAlias(run->isAntiAlias()); + run->draw(context, dc, paint, clip, viewMatrix, props, x, y, clipBounds, fFallbackTextContext, skPaint); run->releaseGlyphCache(); } @@ -362,12 +364,12 @@ private: //////////////////////////////////////////////////////////////////////////////////////////////////// GrStencilAndCoverTextContext::TextRun::TextRun(const SkPaint& fontAndStroke) - : fStyle(fontAndStroke), - fFont(fontAndStroke), - fTotalGlyphCount(0), - fFallbackGlyphCount(0), - fDetachedGlyphCache(nullptr), - fLastDrawnGlyphsID(SK_InvalidUniqueID) { + : fStyle(fontAndStroke) + , fFont(fontAndStroke) + , fTotalGlyphCount(0) + , fFallbackGlyphCount(0) + , fDetachedGlyphCache(nullptr) + , fLastDrawnGlyphsID(SK_InvalidUniqueID) { SkASSERT(fFont.getTextSize() > 0); SkASSERT(!fStyle.hasNonDashPathEffect()); // Arbitrary path effects not supported. SkASSERT(!fStyle.isSimpleHairline()); // Hairlines are not supported. @@ -599,7 +601,6 @@ void GrStencilAndCoverTextContext::TextRun::draw(GrContext* ctx, GrDrawContext* drawContext, const GrPaint& grPaint, const GrClip& clip, - GrColor color, const SkMatrix& viewMatrix, const SkSurfaceProps& props, SkScalar x, SkScalar y, @@ -607,7 +608,7 @@ void GrStencilAndCoverTextContext::TextRun::draw(GrContext* ctx, GrAtlasTextContext* fallbackTextContext, const SkPaint& originalSkPaint) const { SkASSERT(fInstanceData); - SkASSERT(drawContext->isStencilBufferMultisampled() || !fFont.isAntiAlias()); + SkASSERT(drawContext->isStencilBufferMultisampled() || !grPaint.isAntiAlias()); if (fInstanceData->count()) { static constexpr GrUserStencilSettings kCoverPass( @@ -636,12 +637,12 @@ void GrStencilAndCoverTextContext::TextRun::draw(GrContext* ctx, SkAutoTUnref batch( GrDrawPathRangeBatch::Create(viewMatrix, fTextRatio, fTextInverseRatio * x, - fTextInverseRatio * y, color, + fTextInverseRatio * y, grPaint.getColor(), GrPathRendering::kWinding_FillType, glyphs, fInstanceData, bounds)); GrPipelineBuilder pipelineBuilder(grPaint); - pipelineBuilder.setState(GrPipelineBuilder::kHWAntialias_Flag, fFont.isAntiAlias()); + pipelineBuilder.setState(GrPipelineBuilder::kHWAntialias_Flag, grPaint.isAntiAlias()); pipelineBuilder.setUserStencil(&kCoverPass); drawContext->drawBatch(pipelineBuilder, clip, batch); diff --git a/src/gpu/text/GrStencilAndCoverTextContext.h b/src/gpu/text/GrStencilAndCoverTextContext.h index d81cb7a00e..9b29719cb7 100644 --- a/src/gpu/text/GrStencilAndCoverTextContext.h +++ b/src/gpu/text/GrStencilAndCoverTextContext.h @@ -78,7 +78,7 @@ private: void setPosText(const char text[], size_t byteLength, const SkScalar pos[], int scalarsPerPosition, const SkPoint& offset); - void draw(GrContext*, GrDrawContext*, const GrPaint&, const GrClip&, GrColor, + void draw(GrContext*, GrDrawContext*, const GrPaint&, const GrClip&, const SkMatrix&, const SkSurfaceProps&, SkScalar x, SkScalar y, const SkIRect& clipBounds, GrAtlasTextContext* fallbackTextContext, const SkPaint& originalSkPaint) const; @@ -87,6 +87,8 @@ private: size_t computeSizeInCache() const; + bool isAntiAlias() const { return fFont.isAntiAlias(); } + private: typedef GrDrawPathRangeBatch::InstanceData InstanceData; -- cgit v1.2.3