class axl::gui::TextPainter

#include <axl_gui_TextPainter.h>

class TextPainter
{
public:
    // fields

    Canvas* m_canvas;
    Point m_point;
    int m_top;
    int m_bottom;
    uint_t m_hexEncodingFlags;
    utf32_t m_unprintableChar;

    // construction

    TextPainter();
    TextPainter(Canvas* canvas);

    // methods

    Point
    getPoint();

    int
    drawSpace(
        size_t length,
        uint_t color
        );

    int
    drawSpace(size_t length);

    int
    drawSpace_p(
        int width,
        uint_t color
        );

    int
    drawSpace_p(int width);

    int
    drawText(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const sl::StringRef& text
        );

    int
    drawText(
        const TextAttr& attr,
        const sl::StringRef& text
        );

    int
    drawText(const sl::StringRef& text);

    int
    drawText_utf8(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const sl::StringRef_utf8& text
        );

    int
    drawText_utf8(
        const TextAttr& attr,
        const sl::StringRef_utf8& text
        );

    int
    drawText_utf8(const sl::StringRef_utf8& text);

    int
    drawText_utf32(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const sl::StringRef_utf32& text
        );

    int
    drawText_utf32(
        const TextAttr& attr,
        const sl::StringRef_utf32& text
        );

    int
    drawText_utf32(const sl::StringRef_utf32& text);

    int
    drawHyperText(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const TextAttrAnchorArray* attrArray,
        const sl::StringRef& text
        );

    int
    drawHyperText(
        const TextAttr& attr,
        const TextAttrAnchorArray* attrArray,
        const sl::StringRef& text
        );

    int
    drawHyperText(
        const TextAttrAnchorArray* attrArray,
        const sl::StringRef& text
        );

    int
    drawHyperText_utf8(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const TextAttrAnchorArray* attrArray,
        const sl::StringRef_utf8& text
        );

    int
    drawHyperText_utf8(
        const TextAttr& attr,
        const TextAttrAnchorArray* attrArray,
        const sl::StringRef_utf8& text
        );

    int
    drawHyperText_utf8(
        const TextAttrAnchorArray* attrArray,
        const sl::StringRef_utf8& text
        );

    int
    drawHyperText_utf32(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const TextAttrAnchorArray* attrArray,
        const sl::StringRef_utf32& text
        );

    int
    drawHyperText_utf32(
        const TextAttr& attr,
        const TextAttrAnchorArray* attrArray,
        const sl::StringRef_utf32& text
        );

    int
    drawHyperText_utf32(
        const TextAttrAnchorArray* attrArray,
        const sl::StringRef_utf32& text
        );

    int
    drawSelHyperText(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        const sl::StringRef& text
        );

    int
    drawSelHyperText(
        const TextAttr& attr,
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        const sl::StringRef& text
        );

    int
    drawSelHyperText(
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        const sl::StringRef& text
        );

    int
    drawSelHyperText_utf8(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        const sl::StringRef_utf8& text
        );

    int
    drawSelHyperText_utf8(
        const TextAttr& attr,
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        const sl::StringRef_utf8& text
        );

    int
    drawSelHyperText_utf8(
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        const sl::StringRef_utf8& text
        );

    int
    drawSelHyperText_utf32(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        const sl::StringRef_utf32& text
        );

    int
    drawSelHyperText_utf32(
        const TextAttr& attr,
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        const sl::StringRef_utf32& text
        );

    int
    drawSelHyperText_utf32(
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        const sl::StringRef_utf32& text
        );

    int
    drawBinHex(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        size_t halfBitOffset,
        const void* p,
        size_t size,
        uint_t flags = 0
        );

    int
    drawBinHex(
        const TextAttr& attr,
        size_t halfBitOffset,
        const void* p,
        size_t size,
        uint_t flags = 0
        );

    int
    drawBinHex(
        size_t halfBitOffset,
        const void* p,
        size_t size,
        uint_t flags = 0
        );

    int
    drawHyperBinHex(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const TextAttrAnchorArray* attrArray,
        size_t halfBitOffset,
        const void* p,
        size_t size,
        uint_t flags = 0
        );

    int
    drawHyperBinHex(
        const TextAttr& attr,
        const TextAttrAnchorArray* attrArray,
        size_t halfBitOffset,
        const void* p,
        size_t size,
        uint_t flags = 0
        );

    int
    drawHyperBinHex(
        const TextAttrAnchorArray* attrArray,
        size_t halfBitOffset,
        const void* p,
        size_t size,
        uint_t flags = 0
        );

    int
    drawSelHyperBinHex(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        size_t halfBitOffset,
        const void* p,
        size_t size,
        uint_t flags = 0
        );

    int
    drawSelHyperBinHex(
        const TextAttr& attr,
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        size_t halfBitOffset,
        const void* p,
        size_t size,
        uint_t flags = 0
        );

    int
    drawSelHyperBinHex(
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        size_t halfBitOffset,
        const void* p,
        size_t size,
        uint_t flags = 0
        );

    int
    drawBinText(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize
        );

    int
    drawBinText(
        const TextAttr& attr,
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize
        );

    int
    drawBinText(
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize
        );

    int
    drawHyperBinText(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const TextAttrAnchorArray* attrArray,
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize
        );

    int
    drawHyperBinText(
        const TextAttr& attr,
        const TextAttrAnchorArray* attrArray,
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize
        );

    int
    drawHyperBinText(
        const TextAttrAnchorArray* attrArray,
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize
        );

    int
    drawSelHyperBinText(
        uint_t textColor,
        uint_t backColor,
        uint_t fontFlags,
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize
        );

    int
    drawSelHyperBinText(
        const TextAttr& attr,
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize
        );

    int
    drawSelHyperBinText(
        const TextAttrAnchorArray* attrArray,
        const TextAttr& selAttr,
        size_t selStart,
        size_t selEnd,
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize
        );

    static
    size_t
    buildBinTextString(
        sl::Array<utf32_t>* binTextBuffer,
        sl::String* stringBuffer,
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize,
        utf32_t unprintableChar = '.'
        );

    static
    sl::String
    buildBinTextString(
        enc::CharCodec* codec,
        const void* p,
        size_t dataSize,
        size_t bufferSize,
        utf32_t unprintableChar = '.'
        );
};