/*
 * Copyright 2018 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkTextUtils_DEFINED
#define SkTextUtils_DEFINED

#include "SkCanvas.h"
#include "SkFont.h"
#include "SkPaint.h"
#include "SkString.h"

class SkPath;

class SkTextUtils {
public:
    enum Align {
        kLeft_Align,
        kCenter_Align,
        kRight_Align,
    };

    static void Draw(SkCanvas*, const void* text, size_t size, SkTextEncoding,
                     SkScalar x, SkScalar y, const SkFont&, const SkPaint&, Align = kLeft_Align);

    static void DrawString(SkCanvas* canvas, const char text[], SkScalar x, SkScalar y,
                           const SkFont& font, const SkPaint& paint, Align align = kLeft_Align) {
        Draw(canvas, text, strlen(text), kUTF8_SkTextEncoding, x, y, font, paint, align);
    }

    static void GetPath(const void* text, size_t length, SkTextEncoding, SkScalar x, SkScalar y,
                        const SkFont&, SkPath*);
};

#endif
