class EE::Graphics::TextLayout

#include <textlayout.hpp>

class TextLayout {
public:
    // typedefs

    typedef std::shared_ptr<const TextLayout> Cache;

    // fields

    std::vector<ShapedTextParagraph> paragraphs;
    Sizef size;
    TextDirection direction { TextDirection::Unspecified };
    bool hasMixedDirection: 1 { false };

    // methods

    bool isRTL() const;
    std::vector<Float> getLinesWidth() const;

    static Cache layout(
        const String& string,
        Font* font,
        const Uint32& fontSize,
        const Uint32& style,
        const Uint32& tabWidth = 4,
        const Float& outlineThickness = 0.f,
        std::optional<Float> tabOffset = {},
        Uint32 textDrawHints = 0,
        TextDirection baseDirection = TextDirection::LeftToRight,
        LineWrapMode lineWrapMode = LineWrapMode::NoWrap,
        Uint32 wrapWidth = 0,
        bool keepIndentation = false,
        Float initialXOffset = 0
    );

    static Cache layout(
        const String::View& string,
        Font* font,
        const Uint32& fontSize,
        const Uint32& style,
        const Uint32& tabWidth = 4,
        const Float& outlineThickness = 0.f,
        std::optional<Float> tabOffset = {},
        Uint32 textDrawHints = 0,
        TextDirection baseDirection = TextDirection::LeftToRight,
        LineWrapMode lineWrapMode = LineWrapMode::NoWrap,
        Uint32 wrapWidth = 0,
        bool keepIndentation = false,
        Float initialXOffset = 0
    );
};