diff options
author | 2016-02-10 12:52:21 -0800 | |
---|---|---|
committer | 2016-02-10 12:52:21 -0800 | |
commit | e55750e3fe12cbae30eebb10ecb6fcf89ffbea9b (patch) | |
tree | 4a58c24cc410624b7970f10c6a0309e62a252a5d /src/gpu/text/GrAtlasTextContext.cpp | |
parent | bd3dae8a970d6f4dea85729c124eeb4e89d4ab8a (diff) |
Start whittling down GrTextContext
TBR=
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1684733005
Review URL: https://codereview.chromium.org/1684733005
Diffstat (limited to 'src/gpu/text/GrAtlasTextContext.cpp')
-rw-r--r-- | src/gpu/text/GrAtlasTextContext.cpp | 66 |
1 files changed, 41 insertions, 25 deletions
diff --git a/src/gpu/text/GrAtlasTextContext.cpp b/src/gpu/text/GrAtlasTextContext.cpp index 9e30476248..5e346452bd 100644 --- a/src/gpu/text/GrAtlasTextContext.cpp +++ b/src/gpu/text/GrAtlasTextContext.cpp @@ -42,7 +42,6 @@ GrAtlasTextContext::GrAtlasTextContext(GrContext* context, const SkSurfaceProps& static_assert(GrAtlasTextBlob::kGrayTextVASize >= GrAtlasTextBlob::kColorTextVASize && GrAtlasTextBlob::kGrayTextVASize >= GrAtlasTextBlob::kLCDTextVASize, "vertex_attribute_changed"); - fCurrStrike = nullptr; fCache = context->getTextBlobCache(); } @@ -314,33 +313,50 @@ GrAtlasTextContext::createDrawPosTextBlob(const GrPaint& paint, const SkPaint& s return blob; } -void GrAtlasTextContext::onDrawText(GrDrawContext* dc, - const GrClip& clip, - const GrPaint& paint, const SkPaint& skPaint, - const SkMatrix& viewMatrix, - const char text[], size_t byteLength, - SkScalar x, SkScalar y, const SkIRect& regionClipBounds) { - SkAutoTUnref<GrAtlasTextBlob> blob( - this->createDrawTextBlob(paint, skPaint, viewMatrix, text, byteLength, x, y)); - blob->flushThrowaway(fContext, dc, fSurfaceProps, fDistanceAdjustTable, skPaint, paint, - clip, regionClipBounds); +void GrAtlasTextContext::drawText(GrDrawContext* dc, + const GrClip& clip, + const GrPaint& paint, const SkPaint& skPaint, + const SkMatrix& viewMatrix, + const char text[], size_t byteLength, + SkScalar x, SkScalar y, const SkIRect& regionClipBounds) { + if (fContext->abandoned()) { + return; + } else if (this->canDraw(skPaint, viewMatrix)) { + SkAutoTUnref<GrAtlasTextBlob> blob( + this->createDrawTextBlob(paint, skPaint, viewMatrix, text, byteLength, x, y)); + blob->flushThrowaway(fContext, dc, fSurfaceProps, fDistanceAdjustTable, skPaint, paint, + clip, regionClipBounds); + return; + } + + // fall back to drawing as a path + GrTextUtils::DrawTextAsPath(fContext, dc, clip, skPaint, viewMatrix, text, byteLength, x, y, + regionClipBounds); } -void GrAtlasTextContext::onDrawPosText(GrDrawContext* dc, - const GrClip& clip, - const GrPaint& paint, const SkPaint& skPaint, - const SkMatrix& viewMatrix, - const char text[], size_t byteLength, - const SkScalar pos[], int scalarsPerPosition, - const SkPoint& offset, const SkIRect& regionClipBounds) { - SkAutoTUnref<GrAtlasTextBlob> blob( - this->createDrawPosTextBlob(paint, skPaint, viewMatrix, - text, byteLength, - pos, scalarsPerPosition, - offset)); +void GrAtlasTextContext::drawPosText(GrDrawContext* dc, + const GrClip& clip, + const GrPaint& paint, const SkPaint& skPaint, + const SkMatrix& viewMatrix, + const char text[], size_t byteLength, + const SkScalar pos[], int scalarsPerPosition, + const SkPoint& offset, const SkIRect& regionClipBounds) { + if (fContext->abandoned()) { + return; + } else if (this->canDraw(skPaint, viewMatrix)) { + SkAutoTUnref<GrAtlasTextBlob> blob( + this->createDrawPosTextBlob(paint, skPaint, viewMatrix, + text, byteLength, + pos, scalarsPerPosition, + offset)); + blob->flushThrowaway(fContext, dc, fSurfaceProps, fDistanceAdjustTable, skPaint, paint, + clip, regionClipBounds); + return; + } - blob->flushThrowaway(fContext, dc, fSurfaceProps, fDistanceAdjustTable, skPaint, paint, clip, - regionClipBounds); + // fall back to drawing as a path + GrTextUtils::DrawPosTextAsPath(fContext, dc, fSurfaceProps, clip, skPaint, viewMatrix, text, + byteLength, pos, scalarsPerPosition, offset, regionClipBounds); } /////////////////////////////////////////////////////////////////////////////////////////////////// |