Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Unified Diff: src/gpu/GrTextUtils.cpp

Issue 1521453002: Move all text stuff to its own folder (Closed) Base URL: https://skia.googlesource.com/skia.git@cleanuptext11textutils2
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrTextUtils.h ('k') | src/gpu/SkGpuDevice.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
- }
-}
« no previous file with comments | « src/gpu/GrTextUtils.h ('k') | src/gpu/SkGpuDevice.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698