blob: e5919f4dbde4b6eeff9923c0314ea860d8c41543 [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
16class SkTextUtils {
17public:
Mike Reed3a42ec02018-10-30 12:53:21 -040018 enum Align {
19 kLeft_Align,
20 kCenter_Align,
21 kRight_Align,
22 };
23
Mike Reeddc5863c2018-12-23 23:19:14 -050024 static void Draw(SkCanvas*, const void* text, size_t size, SkTextEncoding,
25 SkScalar x, SkScalar y, const SkFont&, const SkPaint&, Align = kLeft_Align);
Mike Reed331ccfd2018-10-25 12:36:06 -040026
27 static void DrawString(SkCanvas* canvas, const char text[], SkScalar x, SkScalar y,
Mike Reeddc5863c2018-12-23 23:19:14 -050028 const SkFont& font, const SkPaint& paint, Align align = kLeft_Align) {
29 SkASSERT(paint.getTextEncoding() == kUTF8_SkTextEncoding);
30 Draw(canvas, text, strlen(text), kUTF8_SkTextEncoding, x, y, font, paint, align);
Mike Reed331ccfd2018-10-25 12:36:06 -040031 }
Mike Reeddc5863c2018-12-23 23:19:14 -050032
33#if 1
34 static void DrawString(SkCanvas* canvas, const char text[], SkScalar x, SkScalar y,
35 const SkPaint& paint, Align align = kLeft_Align) {
36 SkASSERT(paint.getTextEncoding() == kUTF8_SkTextEncoding);
37 Draw(canvas, text, strlen(text), kUTF8_SkTextEncoding, x, y,
38 SkFont::LEGACY_ExtractFromPaint(paint), paint, align);
39 }
40
41 static void DrawText(SkCanvas* canvas, const void* text, size_t size, SkScalar x, SkScalar y,
42 const SkPaint& paint, Align align = kLeft_Align) {
43 Draw(canvas, text, size, paint.getTextEncoding(), x, y,
44 SkFont::LEGACY_ExtractFromPaint(paint), paint, align);
45 }
46
Mike Reed331ccfd2018-10-25 12:36:06 -040047 static void DrawString(SkCanvas* canvas, const SkString& str, SkScalar x, SkScalar y,
Mike Reed3a42ec02018-10-30 12:53:21 -040048 const SkPaint& paint, Align align = kLeft_Align) {
Mike Reed331ccfd2018-10-25 12:36:06 -040049 DrawText(canvas, str.c_str(), str.size(), x, y, paint, align);
50 }
Mike Reeddc5863c2018-12-23 23:19:14 -050051#endif
Mike Reed331ccfd2018-10-25 12:36:06 -040052};
53
54#endif