| Index: src/gpu/GrTextUtils.cpp
|
| diff --git a/src/gpu/GrTextUtils.cpp b/src/gpu/GrTextUtils.cpp
|
| deleted file mode 100644
|
| index 293ea4d891edac7888625522a1563b663bb9e675..0000000000000000000000000000000000000000
|
| --- a/src/gpu/GrTextUtils.cpp
|
| +++ /dev/null
|
| @@ -1,200 +0,0 @@
|
| -/*
|
| - * Copyright 2015 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#include "GrTextUtils.h"
|
| -
|
| -#include "GrAtlasTextBlob.h"
|
| -#include "GrBatchFontCache.h"
|
| -#include "GrBlurUtils.h"
|
| -#include "GrContext.h"
|
| -#include "GrDrawContext.h"
|
| -#include "GrTextContext.h"
|
| -#include "SkDrawProcs.h"
|
| -#include "SkFindAndPlaceGlyph.h"
|
| -#include "SkGlyphCache.h"
|
| -#include "SkPaint.h"
|
| -#include "SkRect.h"
|
| -#include "SkTextMapStateProc.h"
|
| -#include "SkTextToPathIter.h"
|
| -
|
| -void GrTextUtils::DrawBmpText(GrAtlasTextBlob* blob, int runIndex,
|
| - GrBatchFontCache* fontCache,
|
| - SkGlyphCache* cache, const SkPaint& skPaint,
|
| - GrColor color,
|
| - const SkMatrix& viewMatrix,
|
| - const char text[], size_t byteLength,
|
| - SkScalar x, SkScalar y) {
|
| - SkASSERT(byteLength == 0 || text != nullptr);
|
| -
|
| - // nothing to draw
|
| - if (text == nullptr || byteLength == 0) {
|
| - return;
|
| - }
|
| -
|
| - GrBatchTextStrike* currStrike = nullptr;
|
| -
|
| - // Get GrFontScaler from cache
|
| - GrFontScaler* fontScaler = GrTextContext::GetGrFontScaler(cache);
|
| -
|
| - SkFindAndPlaceGlyph::ProcessText(
|
| - skPaint.getTextEncoding(), text, byteLength,
|
| - {x, y}, viewMatrix, skPaint.getTextAlign(),
|
| - cache,
|
| - [&](const SkGlyph& glyph, SkPoint position, SkPoint rounding) {
|
| - position += rounding;
|
| - BmpAppendGlyph(
|
| - blob, runIndex, fontCache, &currStrike, glyph,
|
| - SkScalarFloorToInt(position.fX), SkScalarFloorToInt(position.fY),
|
| - color, fontScaler);
|
| - }
|
| - );
|
| -}
|
| -
|
| -void GrTextUtils::DrawBmpPosText(GrAtlasTextBlob* blob, int runIndex,
|
| - GrBatchFontCache* fontCache,
|
| - SkGlyphCache* cache, const SkPaint& skPaint,
|
| - GrColor color,
|
| - const SkMatrix& viewMatrix,
|
| - const char text[], size_t byteLength,
|
| - const SkScalar pos[], int scalarsPerPosition,
|
| - const SkPoint& offset) {
|
| - SkASSERT(byteLength == 0 || text != nullptr);
|
| - SkASSERT(1 == scalarsPerPosition || 2 == scalarsPerPosition);
|
| -
|
| - // nothing to draw
|
| - if (text == nullptr || byteLength == 0) {
|
| - return;
|
| - }
|
| -
|
| - GrBatchTextStrike* currStrike = nullptr;
|
| -
|
| - // Get GrFontScaler from cache
|
| - GrFontScaler* fontScaler = GrTextContext::GetGrFontScaler(cache);
|
| -
|
| - SkFindAndPlaceGlyph::ProcessPosText(
|
| - skPaint.getTextEncoding(), text, byteLength,
|
| - offset, viewMatrix, pos, scalarsPerPosition,
|
| - skPaint.getTextAlign(), cache,
|
| - [&](const SkGlyph& glyph, SkPoint position, SkPoint rounding) {
|
| - position += rounding;
|
| - BmpAppendGlyph(
|
| - blob, runIndex, fontCache, &currStrike, glyph,
|
| - SkScalarFloorToInt(position.fX), SkScalarFloorToInt(position.fY),
|
| - color, fontScaler);
|
| - }
|
| - );
|
| -}
|
| -
|
| -void GrTextUtils::BmpAppendGlyph(GrAtlasTextBlob* blob, int runIndex,
|
| - GrBatchFontCache* fontCache,
|
| - GrBatchTextStrike** strike, const SkGlyph& skGlyph,
|
| - int vx, int vy, GrColor color, GrFontScaler* scaler) {
|
| - if (!*strike) {
|
| - *strike = fontCache->getStrike(scaler);
|
| - }
|
| -
|
| - GrGlyph::PackedID id = GrGlyph::Pack(skGlyph.getGlyphID(),
|
| - skGlyph.getSubXFixed(),
|
| - skGlyph.getSubYFixed(),
|
| - GrGlyph::kCoverage_MaskStyle);
|
| - GrGlyph* glyph = (*strike)->getGlyph(skGlyph, id, scaler);
|
| - if (!glyph) {
|
| - return;
|
| - }
|
| -
|
| - int x = vx + glyph->fBounds.fLeft;
|
| - int y = vy + glyph->fBounds.fTop;
|
| -
|
| - // keep them as ints until we've done the clip-test
|
| - int width = glyph->fBounds.width();
|
| - int height = glyph->fBounds.height();
|
| -
|
| - SkRect r;
|
| - r.fLeft = SkIntToScalar(x);
|
| - r.fTop = SkIntToScalar(y);
|
| - r.fRight = r.fLeft + SkIntToScalar(width);
|
| - r.fBottom = r.fTop + SkIntToScalar(height);
|
| -
|
| - blob->appendGlyph(runIndex, r, color, *strike, glyph, scaler, skGlyph,
|
| - SkIntToScalar(vx), SkIntToScalar(vy), 1.0f, false);
|
| -}
|
| -
|
| -void GrTextUtils::DrawTextAsPath(GrContext* context, GrDrawContext* dc,
|
| - const GrClip& clip,
|
| - const SkPaint& skPaint, const SkMatrix& viewMatrix,
|
| - const char text[], size_t byteLength, SkScalar x, SkScalar y,
|
| - const SkIRect& clipBounds) {
|
| - SkTextToPathIter iter(text, byteLength, skPaint, true);
|
| -
|
| - SkMatrix matrix;
|
| - matrix.setScale(iter.getPathScale(), iter.getPathScale());
|
| - matrix.postTranslate(x, y);
|
| -
|
| - const SkPath* iterPath;
|
| - SkScalar xpos, prevXPos = 0;
|
| -
|
| - while (iter.next(&iterPath, &xpos)) {
|
| - matrix.postTranslate(xpos - prevXPos, 0);
|
| - if (iterPath) {
|
| - const SkPaint& pnt = iter.getPaint();
|
| - GrBlurUtils::drawPathWithMaskFilter(context, dc, clip, *iterPath,
|
| - pnt, viewMatrix, &matrix, clipBounds, false);
|
| - }
|
| - prevXPos = xpos;
|
| - }
|
| -}
|
| -
|
| -void GrTextUtils::DrawPosTextAsPath(GrContext* context,
|
| - GrDrawContext* dc,
|
| - const SkSurfaceProps& props,
|
| - const GrClip& clip,
|
| - const SkPaint& origPaint, const SkMatrix& viewMatrix,
|
| - const char text[], size_t byteLength,
|
| - const SkScalar pos[], int scalarsPerPosition,
|
| - const SkPoint& offset, const SkIRect& clipBounds) {
|
| - // setup our std paint, in hopes of getting hits in the cache
|
| - SkPaint paint(origPaint);
|
| - SkScalar matrixScale = paint.setupForAsPaths();
|
| -
|
| - SkMatrix matrix;
|
| - matrix.setScale(matrixScale, matrixScale);
|
| -
|
| - // Temporarily jam in kFill, so we only ever ask for the raw outline from the cache.
|
| - paint.setStyle(SkPaint::kFill_Style);
|
| - paint.setPathEffect(nullptr);
|
| -
|
| - SkDrawCacheProc glyphCacheProc = paint.getDrawCacheProc();
|
| - SkAutoGlyphCache autoCache(paint, &props, nullptr);
|
| - SkGlyphCache* cache = autoCache.getCache();
|
| -
|
| - const char* stop = text + byteLength;
|
| - SkTextAlignProc alignProc(paint.getTextAlign());
|
| - SkTextMapStateProc tmsProc(SkMatrix::I(), offset, scalarsPerPosition);
|
| -
|
| - // Now restore the original settings, so we "draw" with whatever style/stroking.
|
| - paint.setStyle(origPaint.getStyle());
|
| - paint.setPathEffect(origPaint.getPathEffect());
|
| -
|
| - while (text < stop) {
|
| - const SkGlyph& glyph = glyphCacheProc(cache, &text, 0, 0);
|
| - if (glyph.fWidth) {
|
| - const SkPath* path = cache->findPath(glyph);
|
| - if (path) {
|
| - SkPoint tmsLoc;
|
| - tmsProc(pos, &tmsLoc);
|
| - SkPoint loc;
|
| - alignProc(tmsLoc, glyph, &loc);
|
| -
|
| - matrix[SkMatrix::kMTransX] = loc.fX;
|
| - matrix[SkMatrix::kMTransY] = loc.fY;
|
| - GrBlurUtils::drawPathWithMaskFilter(context, dc, clip, *path, paint,
|
| - viewMatrix, &matrix, clipBounds, false);
|
| - }
|
| - }
|
| - pos += scalarsPerPosition;
|
| - }
|
| -}
|
|
|