blob: 63d8adf85af92765ace2872b1da97832cb2db97e [file] [log] [blame]
Mike Reed331ccfd2018-10-25 12:36:06 -04001/*
2 * Copyright 2018 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 SkTextUtils_DEFINED
9#define SkTextUtils_DEFINED
10
11#include "SkCanvas.h"
Mike Reed331ccfd2018-10-25 12:36:06 -040012#include "SkFont.h"
Mike Reeddc5863c2018-12-23 23:19:14 -050013#include "SkPaint.h"
Mike Reed331ccfd2018-10-25 12:36:06 -040014#include "SkString.h"
15
Mike Reedf78b7ea2018-12-25 22:06:17 -050016class SkPath;
17
Mike Reed331ccfd2018-10-25 12:36:06 -040018class SkTextUtils {
19public:
Mike Reed3a42ec02018-10-30 12:53:21 -040020 enum Align {
21 kLeft_Align,
22 kCenter_Align,
23 kRight_Align,
24 };
25
Mike Reeddc5863c2018-12-23 23:19:14 -050026 static void Draw(SkCanvas*, const void* text, size_t size, SkTextEncoding,
27 SkScalar x, SkScalar y, const SkFont&, const SkPaint&, Align = kLeft_Align);
Mike Reed331ccfd2018-10-25 12:36:06 -040028
29 static void DrawString(SkCanvas* canvas, const char text[], SkScalar x, SkScalar y,
Mike Reeddc5863c2018-12-23 23:19:14 -050030 const SkFont& font, const SkPaint& paint, Align align = kLeft_Align) {
31 SkASSERT(paint.getTextEncoding() == kUTF8_SkTextEncoding);
32 Draw(canvas, text, strlen(text), kUTF8_SkTextEncoding, x, y, font, paint, align);
Mike Reed331ccfd2018-10-25 12:36:06 -040033 }
Mike Reeddc5863c2018-12-23 23:19:14 -050034
35#if 1
36 static void DrawString(SkCanvas* canvas, const char text[], SkScalar x, SkScalar y,
37 const SkPaint& paint, Align align = kLeft_Align) {
38 SkASSERT(paint.getTextEncoding() == kUTF8_SkTextEncoding);
39 Draw(canvas, text, strlen(text), kUTF8_SkTextEncoding, x, y,
40 SkFont::LEGACY_ExtractFromPaint(paint), paint, align);
41 }
42
43 static void DrawText(SkCanvas* canvas, const void* text, size_t size, SkScalar x, SkScalar y,
44 const SkPaint& paint, Align align = kLeft_Align) {
45 Draw(canvas, text, size, paint.getTextEncoding(), x, y,
46 SkFont::LEGACY_ExtractFromPaint(paint), paint, align);
47 }
48
Mike Reed331ccfd2018-10-25 12:36:06 -040049 static void DrawString(SkCanvas* canvas, const SkString& str, SkScalar x, SkScalar y,
Mike Reed3a42ec02018-10-30 12:53:21 -040050 const SkPaint& paint, Align align = kLeft_Align) {
Mike Reed331ccfd2018-10-25 12:36:06 -040051 DrawText(canvas, str.c_str(), str.size(), x, y, paint, align);
52 }
Mike Reeddc5863c2018-12-23 23:19:14 -050053#endif
Mike Reedf78b7ea2018-12-25 22:06:17 -050054
55 static void GetPath(const void* text, size_t length, SkTextEncoding, SkScalar x, SkScalar y,
56 const SkFont&, SkPath*);
Mike Reed331ccfd2018-10-25 12:36:06 -040057};
58
59#endif