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
This commit is contained in:
parent
d1bd2082c5
commit
ecbc15d46c
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user