diff options
Diffstat (limited to 'src/gpu/text/GrAtlasTextBlob.cpp')
-rw-r--r-- | src/gpu/text/GrAtlasTextBlob.cpp | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/src/gpu/text/GrAtlasTextBlob.cpp b/src/gpu/text/GrAtlasTextBlob.cpp index 835105b4d2..10b1c81639 100644 --- a/src/gpu/text/GrAtlasTextBlob.cpp +++ b/src/gpu/text/GrAtlasTextBlob.cpp @@ -257,26 +257,22 @@ bool GrAtlasTextBlob::mustRegenerate(const GrTextUtils::Paint& paint, return false; } -inline std::unique_ptr<GrDrawOp> GrAtlasTextBlob::makeOp( +inline std::unique_ptr<GrLegacyMeshDrawOp> GrAtlasTextBlob::makeOp( const Run::SubRunInfo& info, int glyphCount, int run, int subRun, const SkMatrix& viewMatrix, SkScalar x, SkScalar y, const GrTextUtils::Paint& paint, const SkSurfaceProps& props, const GrDistanceFieldAdjustTable* distanceAdjustTable, - GrAtlasGlyphCache* cache, GrRenderTargetContext* renderTargetContext) { + bool useGammaCorrectDistanceTable, GrAtlasGlyphCache* cache) { GrMaskFormat format = info.maskFormat(); - GrPaint grPaint; - if (!paint.toGrPaint(info.maskFormat(), renderTargetContext, viewMatrix, &grPaint)) { - return nullptr; - } std::unique_ptr<GrAtlasTextOp> op; if (info.drawAsDistanceFields()) { + SkColor luminanceColor = paint.luminanceColor(); bool useBGR = SkPixelGeometryIsBGR(props.pixelGeometry()); - op = GrAtlasTextOp::MakeDistanceField( - std::move(grPaint), glyphCount, cache, distanceAdjustTable, - renderTargetContext->isGammaCorrect(), paint.luminanceColor(), info.hasUseLCDText(), - useBGR, info.isAntiAliased()); + op = GrAtlasTextOp::MakeDistanceField(glyphCount, cache, distanceAdjustTable, + useGammaCorrectDistanceTable, luminanceColor, + info.hasUseLCDText(), useBGR, info.isAntiAliased()); } else { - op = GrAtlasTextOp::MakeBitmap(std::move(grPaint), format, glyphCount, cache); + op = GrAtlasTextOp::MakeBitmap(format, glyphCount, cache); } GrAtlasTextOp::Geometry& geometry = op->geometry(); geometry.fViewMatrix = viewMatrix; @@ -288,6 +284,7 @@ inline std::unique_ptr<GrDrawOp> GrAtlasTextBlob::makeOp( geometry.fX = x; geometry.fY = y; op->init(); + return std::move(op); } @@ -307,11 +304,13 @@ inline void GrAtlasTextBlob::flushRun(GrRenderTargetContext* rtc, const GrClip& if (0 == glyphCount) { continue; } - auto op = this->makeOp(info, glyphCount, run, subRun, viewMatrix, x, y, std::move(paint), - props, distanceAdjustTable, cache, rtc); - if (op) { - rtc->addDrawOp(clip, std::move(op)); - } + + std::unique_ptr<GrLegacyMeshDrawOp> op( + this->makeOp(info, glyphCount, run, subRun, viewMatrix, x, y, paint, props, + distanceAdjustTable, rtc->isGammaCorrect(), cache)); + GrPipelineBuilder pipelineBuilder(std::move(grPaint), GrAAType::kNone); + + rtc->addLegacyMeshDrawOp(std::move(pipelineBuilder), clip, std::move(op)); } } @@ -426,14 +425,13 @@ void GrAtlasTextBlob::flushThrowaway(GrContext* context, GrRenderTargetContext* this->flushBigGlyphs(context, rtc, clip, paint, viewMatrix, x, y, clipBounds); } -std::unique_ptr<GrDrawOp> GrAtlasTextBlob::test_makeOp( +std::unique_ptr<GrLegacyMeshDrawOp> GrAtlasTextBlob::test_makeOp( int glyphCount, int run, int subRun, const SkMatrix& viewMatrix, SkScalar x, SkScalar y, const GrTextUtils::Paint& paint, const SkSurfaceProps& props, - const GrDistanceFieldAdjustTable* distanceAdjustTable, GrAtlasGlyphCache* cache, - GrRenderTargetContext* rtc) { + const GrDistanceFieldAdjustTable* distanceAdjustTable, GrAtlasGlyphCache* cache) { const GrAtlasTextBlob::Run::SubRunInfo& info = fRuns[run].fSubRunInfo[subRun]; return this->makeOp(info, glyphCount, run, subRun, viewMatrix, x, y, paint, props, - distanceAdjustTable, cache, rtc); + distanceAdjustTable, false, cache); } void GrAtlasTextBlob::AssertEqual(const GrAtlasTextBlob& l, const GrAtlasTextBlob& r) { |