| Index: src/gpu/text/GrStencilAndCoverTextContext.cpp
|
| diff --git a/src/gpu/text/GrStencilAndCoverTextContext.cpp b/src/gpu/text/GrStencilAndCoverTextContext.cpp
|
| index 632bdcdaf195b4affb6c7a5a0e95461386d05132..381aa302824c0897c2cd9764113ae1ab99e53044 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<GrDrawBatch> 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);
|
|
|