Index: src/gpu/GrStencilAndCoverTextContext.cpp |
diff --git a/src/gpu/GrStencilAndCoverTextContext.cpp b/src/gpu/GrStencilAndCoverTextContext.cpp |
index 78c3a2a8df53356d683b6cfc1a91c8c030da8bdb..047cd07978df6934edff09cbfde04def57faa400 100644 |
--- a/src/gpu/GrStencilAndCoverTextContext.cpp |
+++ b/src/gpu/GrStencilAndCoverTextContext.cpp |
@@ -22,20 +22,18 @@ |
#include "SkTextFormatParams.h" |
GrStencilAndCoverTextContext::GrStencilAndCoverTextContext(GrContext* context, |
- GrDrawContext* drawContext, |
const SkSurfaceProps& surfaceProps) |
- : GrTextContext(context, drawContext, surfaceProps) |
+ : GrTextContext(context, surfaceProps) |
, fStroke(SkStrokeRec::kFill_InitStyle) |
, fQueuedGlyphCount(0) |
, fFallbackGlyphsIdx(kGlyphBufferSize) { |
} |
GrStencilAndCoverTextContext* |
-GrStencilAndCoverTextContext::Create(GrContext* context, GrDrawContext* drawContext, |
- const SkSurfaceProps& surfaceProps) { |
- GrStencilAndCoverTextContext* textContext = |
- new GrStencilAndCoverTextContext(context, drawContext, surfaceProps); |
- textContext->fFallbackTextContext = GrAtlasTextContext::Create(context, drawContext, surfaceProps); |
+GrStencilAndCoverTextContext::Create(GrContext* context, const SkSurfaceProps& surfaceProps) { |
+ GrStencilAndCoverTextContext* textContext = |
+ new GrStencilAndCoverTextContext(context, surfaceProps); |
+ textContext->fFallbackTextContext = GrAtlasTextContext::Create(context, surfaceProps); |
return textContext; |
} |
@@ -73,7 +71,7 @@ bool GrStencilAndCoverTextContext::canDraw(const GrRenderTarget* rt, |
return rec.getFormat() != SkMask::kARGB32_Format; |
} |
-void GrStencilAndCoverTextContext::onDrawText(GrRenderTarget* rt, |
+void GrStencilAndCoverTextContext::onDrawText(GrDrawContext* dc, GrRenderTarget* rt, |
const GrClip& clip, |
const GrPaint& paint, |
const SkPaint& skPaint, |
@@ -156,17 +154,17 @@ void GrStencilAndCoverTextContext::onDrawText(GrRenderTarget* rt, |
const SkGlyph& glyph = glyphCacheProc(fGlyphCache, &text, 0, 0); |
fx += SkFixedMul(autokern.adjust(glyph), fixedSizeRatio); |
if (glyph.fWidth) { |
- this->appendGlyph(glyph, SkPoint::Make(SkFixedToScalar(fx), SkFixedToScalar(fy))); |
+ this->appendGlyph(dc, glyph, SkPoint::Make(SkFixedToScalar(fx), SkFixedToScalar(fy))); |
} |
fx += SkFixedMul(glyph.fAdvanceX, fixedSizeRatio); |
fy += SkFixedMul(glyph.fAdvanceY, fixedSizeRatio); |
} |
- this->finish(); |
+ this->finish(dc); |
} |
-void GrStencilAndCoverTextContext::onDrawPosText(GrRenderTarget* rt, |
+void GrStencilAndCoverTextContext::onDrawPosText(GrDrawContext* dc, GrRenderTarget* rt, |
const GrClip& clip, |
const GrPaint& paint, |
const SkPaint& skPaint, |
@@ -210,12 +208,12 @@ void GrStencilAndCoverTextContext::onDrawPosText(GrRenderTarget* rt, |
SkPoint loc; |
alignProc(tmsLoc, glyph, &loc); |
- this->appendGlyph(glyph, loc); |
+ this->appendGlyph(dc, glyph, loc); |
} |
pos += scalarsPerPosition; |
} |
- this->finish(); |
+ this->finish(dc); |
} |
static GrPathRange* get_gr_glyphs(GrContext* ctx, |
@@ -400,10 +398,12 @@ bool GrStencilAndCoverTextContext::mapToFallbackContext(SkMatrix* inverse) { |
return true; |
} |
-inline void GrStencilAndCoverTextContext::appendGlyph(const SkGlyph& glyph, const SkPoint& pos) { |
+inline void GrStencilAndCoverTextContext::appendGlyph(GrDrawContext* dc, |
+ const SkGlyph& glyph, |
+ const SkPoint& pos) { |
if (fQueuedGlyphCount >= fFallbackGlyphsIdx) { |
SkASSERT(fQueuedGlyphCount == fFallbackGlyphsIdx); |
- this->flush(); |
+ this->flush(dc); |
} |
// Stick the glyphs we can't draw at the end of the buffer, growing backwards. |
@@ -421,7 +421,7 @@ static const SkScalar* get_xy_scalar_array(const SkPoint* pointArray) { |
return &pointArray[0].fX; |
} |
-void GrStencilAndCoverTextContext::flush() { |
+void GrStencilAndCoverTextContext::flush(GrDrawContext* dc) { |
if (fQueuedGlyphCount > 0) { |
SkAutoTUnref<GrPathProcessor> pp(GrPathProcessor::Create(fPaint.getColor(), |
fViewMatrix, |
@@ -446,11 +446,11 @@ void GrStencilAndCoverTextContext::flush() { |
SkASSERT(0 == fQueuedGlyphCount); |
SkASSERT(kGlyphBufferSize == fFallbackGlyphsIdx); |
- fDrawContext->drawPaths(&pipelineBuilder, pp, fGlyphs, |
- fGlyphIndices, GrPathRange::kU16_PathIndexType, |
- get_xy_scalar_array(fGlyphPositions), |
- GrPathRendering::kTranslate_PathTransformType, |
- fQueuedGlyphCount, GrPathRendering::kWinding_FillType); |
+ dc->drawPaths(&pipelineBuilder, pp, fGlyphs, |
+ fGlyphIndices, GrPathRange::kU16_PathIndexType, |
+ get_xy_scalar_array(fGlyphPositions), |
+ GrPathRendering::kTranslate_PathTransformType, |
+ fQueuedGlyphCount, GrPathRendering::kWinding_FillType); |
fQueuedGlyphCount = 0; |
} |
@@ -472,7 +472,7 @@ void GrStencilAndCoverTextContext::flush() { |
inverse.mapPoints(&fGlyphPositions[fFallbackGlyphsIdx], fallbackGlyphCount); |
} |
- fFallbackTextContext->drawPosText(fRenderTarget, fClip, paintFallback, skPaintFallback, |
+ fFallbackTextContext->drawPosText(dc, fRenderTarget, fClip, paintFallback, skPaintFallback, |
fViewMatrix, (char*)&fGlyphIndices[fFallbackGlyphsIdx], |
2 * fallbackGlyphCount, |
get_xy_scalar_array(&fGlyphPositions[fFallbackGlyphsIdx]), |
@@ -482,8 +482,8 @@ void GrStencilAndCoverTextContext::flush() { |
} |
} |
-void GrStencilAndCoverTextContext::finish() { |
- this->flush(); |
+void GrStencilAndCoverTextContext::finish(GrDrawContext* dc) { |
+ this->flush(dc); |
fGlyphs->unref(); |
fGlyphs = nullptr; |