blob: 8f673afbed6c699524794ea169c7aeb60b823c3e [file] [log] [blame]
joshualitt0a42e682015-12-10 13:20:58 -08001/*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef GrTextUtils_DEFINED
9#define GrTextUtils_DEFINED
10
joshualitt29677982015-12-11 06:08:59 -080011#include "GrColor.h"
joshualitt0a42e682015-12-10 13:20:58 -080012#include "SkScalar.h"
13
joshualitt29677982015-12-11 06:08:59 -080014class GrAtlasTextBlob;
15class GrBatchFontCache;
16class GrBatchTextStrike;
joshualitt0a42e682015-12-10 13:20:58 -080017class GrClip;
18class GrContext;
19class GrDrawContext;
joshualitt29677982015-12-11 06:08:59 -080020class GrFontScaler;
21class SkGlyph;
joshualitt0a42e682015-12-10 13:20:58 -080022class SkMatrix;
23struct SkIRect;
24class SkPaint;
25struct SkPoint;
joshualitt29677982015-12-11 06:08:59 -080026class SkGlyphCache;
joshualitt0a42e682015-12-10 13:20:58 -080027class SkSurfaceProps;
28
29/*
30 * A class to house a bunch of common text utilities. This class should *ONLY* have static
31 * functions. It is not a namespace only because we wish to friend SkPaint
32 *
33 */
34class GrTextUtils {
35public:
joshualitt29677982015-12-11 06:08:59 -080036 // Functions for appending BMP text to GrAtlasTextBlob
37 static void DrawBmpText(GrAtlasTextBlob*, int runIndex,
38 GrBatchFontCache*, SkGlyphCache*, const SkPaint&,
39 GrColor, const SkMatrix& viewMatrix,
40 const char text[], size_t byteLength,
41 SkScalar x, SkScalar y);
joshualitt0a42e682015-12-10 13:20:58 -080042
joshualitt29677982015-12-11 06:08:59 -080043 static void DrawBmpPosText(GrAtlasTextBlob*, int runIndex,
44 GrBatchFontCache*, SkGlyphCache*, const SkPaint&,
45 GrColor, const SkMatrix& viewMatrix,
46 const char text[], size_t byteLength,
47 const SkScalar pos[], int scalarsPerPosition,
48 const SkPoint& offset);
joshualitt0a42e682015-12-10 13:20:58 -080049
joshualitt29677982015-12-11 06:08:59 -080050 // Functions for drawing text as paths
51 static void DrawTextAsPath(GrContext*, GrDrawContext*, const GrClip& clip,
52 const SkPaint& origPaint, const SkMatrix& viewMatrix,
53 const char text[], size_t byteLength, SkScalar x, SkScalar y,
54 const SkIRect& clipBounds);
55
56 static void DrawPosTextAsPath(GrContext* context,
57 GrDrawContext* dc,
58 const SkSurfaceProps& props,
59 const GrClip& clip,
60 const SkPaint& origPaint, const SkMatrix& viewMatrix,
61 const char text[], size_t byteLength,
62 const SkScalar pos[], int scalarsPerPosition,
63 const SkPoint& offset, const SkIRect& clipBounds);
64private:
65 static void BmpAppendGlyph(GrAtlasTextBlob*, int runIndex, GrBatchFontCache*,
66 GrBatchTextStrike**, const SkGlyph&, int left, int top,
67 GrColor color, GrFontScaler*);
joshualitt0a42e682015-12-10 13:20:58 -080068};
69
70#endif