class EE::Graphics::Text

Overview

#include <text.hpp>

class Text {
public:
    // enums

    enum Style;

    // structs

    struct VertexCoords;

    // construction

    Text();
    Text(const String& string, Font* font, unsigned int characterSize = PixelDensity::dpToPx(12));
    Text(Font* font, unsigned int characterSize = PixelDensity::dpToPx(12));

    // methods

    static std::string styleFlagToString(const Uint32& flags);
    static Uint32 stringToStyleFlag(const std::string& str);
    static Float getTextWidth(Font* font, const Uint32& fontSize, const String& string, const Uint32& style, const Uint32& tabWidth = 4, const Float& outlineThickness = 0.f);
    static Float getTextWidth(Font* font, const Uint32& fontSize, const String::View& string, const Uint32& style, const Uint32& tabWidth = 4, const Float& outlineThickness = 0.f);
    static Float getTextWidth(const String& string, const FontStyleConfig& config, const Uint32& tabWidth = 4);
    static Float getTextWidth(const String::View& string, const FontStyleConfig& config, const Uint32& tabWidth = 4);

    static Sizef draw(
        const String& string,
        const Vector2f& pos,
        Font* font,
        Float fontSize,
        const Color& fontColor,
        Uint32 style = 0,
        Float outlineThickness = 0.f,
        const Color& outlineColor = Color::Black,
        const Color& shadowColor = Color::Black,
        const Vector2f& shadowOffset = { 1, 1 },
        const Uint32& tabWidth = 4
    );

    static Sizef draw(const String& string, const Vector2f& pos, const FontStyleConfig& config, const Uint32& tabWidth = 4);

    static Sizef draw(
        const String::View& string,
        const Vector2f& pos,
        Font* font,
        Float fontSize,
        const Color& fontColor,
        Uint32 style = 0,
        Float outlineThickness = 0.f,
        const Color& outlineColor = Color::Black,
        const Color& shadowColor = Color::Black,
        const Vector2f& shadowOffset = { 1, 1 },
        const Uint32& tabWidth = 4
    );

    static Sizef draw(const String::View& string, const Vector2f& pos, const FontStyleConfig& config, const Uint32& tabWidth = 4);

    static void drawUnderline(
        const Vector2f& pos,
        Float width,
        Font* font,
        Float fontSize,
        const Color& fontColor,
        const Uint32& style,
        Float outlineThickness,
        const Color& outlineColor,
        const Color& shadowColor,
        const Vector2f& shadowOffset
    );

    static Int32 findCharacterFromPos(
        const Vector2i& pos,
        bool returnNearest,
        Font* font,
        const Uint32& fontSize,
        const String& string,
        const Uint32& style,
        const Uint32& tabWidth = 4,
        const Float& outlineThickness = 0.f
    );

    static Vector2f findCharacterPos(
        std::size_t index,
        Font* font,
        const Uint32& fontSize,
        const String& string,
        const Uint32& style,
        const Uint32& tabWidth = 4,
        const Float& outlineThickness = 0.f,
        bool allowNewLine = true
    );

    static std::size_t findLastCharPosWithinLength(
        Font* font,
        const Uint32& fontSize,
        const String& string,
        Float maxWidth,
        const Uint32& style,
        const Uint32& tabWidth = 4,
        const Float& outlineThickness = 0.f
    );

    static std::size_t findLastCharPosWithinLength(
        Font* font,
        const Uint32& fontSize,
        const String::View& string,
        Float maxWidth,
        const Uint32& style,
        const Uint32& tabWidth = 4,
        const Float& outlineThickness = 0.f
    );

    static std::size_t findLastCharPosWithinLength(const String& string, Float maxWidth, const FontStyleConfig& config, const Uint32& tabWidth = 4);
    static std::size_t findLastCharPosWithinLength(const String::View& string, Float maxWidth, const FontStyleConfig& config, const Uint32& tabWidth = 4);

    static bool wrapText(
        Font* font,
        const Uint32& fontSize,
        String& string,
        const Float& maxWidth,
        const Uint32& style,
        const Uint32& tabWidth = 4,
        const Float& outlineThickness = 0.f
    );

    static bool wrapText(String& string, const Float& maxWidth, const FontStyleConfig& config, const Uint32& tabWidth = 4);
    static Text* New();
    static Text* New(const String& string, Font* font, unsigned int characterSize = PixelDensity::dpToPx(12));
    static Text* New(Font* font, unsigned int characterSize = PixelDensity::dpToPx(12));
    void create(Graphics::Font* font, const String& text = "", Color FontColor = Color(255, 255, 255, 255), Color FontShadowColor = Color(0, 0, 0, 255), Uint32 characterSize = PixelDensity::dpToPx(12));
    bool setString(const String::View& string);
    bool setString(const String& string);
    bool setString(String&& string);
    void setFont(Font* font);
    void setFontSize(unsigned int size);
    void setStyle(Uint32 style);
    void setColor(const Color& color);
    void setFillColor(const Color& color);
    void setFillColor(const Color& color, Uint32 from, Uint32 to);
    void setOutlineColor(const Color& color);
    void setOutlineThickness(Float thickness);
    void transformText(const TextTransform::Value& transform);
    String& getString();
    Font* getFont() const;
    unsigned int getCharacterSize() const;
    const Uint32& getFontHeight() const;
    Uint32 getStyle() const;
    void setAlpha(const Uint8& alpha);
    const Color& getFillColor() const;
    const Color& getColor() const;
    const Color& getOutlineColor() const;
    Float getOutlineThickness() const;
    Vector2f findCharacterPos(std::size_t index) const;
    Rectf getLocalBounds();
    Float getTextWidth();
    Float getTextHeight();
    Float getLineSpacing();

    void draw(
        const Float& X,
        const Float& Y,
        const Vector2f& scale = Vector2f::One,
        const Float& rotation = 0,
        BlendMode effect = BlendMode::Alpha(),
        const OriginPoint& rotationCenter = OriginPoint::OriginCenter,
        const OriginPoint& scaleCenter = OriginPoint::OriginCenter
    );

    const Color& getShadowColor() const;
    void setShadowColor(const Color& color);
    const std::vector<Float>& getLinesWidth();
    void setAlign(const Uint32& align);
    const Uint32& getAlign() const;
    Uint32 getNumLines();
    void setStyleConfig(const FontStyleConfig& styleConfig);
    Int32 findCharacterFromPos(const Vector2i& pos, bool returnNearest = true) const;
    void findWordFromCharacterIndex(Int32 characterIndex, Int32& initCur, Int32& endCur) const;
    void wrapText(const Uint32& maxWidth);
    void invalidateColors();
    void invalidate();
    void setTabWidth(const Uint32& tabWidth);
    const Uint32& getTabWidth() const;
    Color getBackgroundColor() const;
    void setBackgroundColor(const Color& backgroundColor);
    bool getDisableCacheWidth() const;
    void setDisableCacheWidth(bool newDisableCacheWidth);
    const Vector2f& getShadowOffset() const;
    void setShadowOffset(const Vector2f& shadowOffset);
    bool hasSameFontStyleConfig(const FontStyleConfig& styleConfig);
};

Detailed Documentation

Methods

void create(Graphics::Font* font, const String& text = "", Color FontColor = Color(255, 255, 255, 255), Color FontShadowColor = Color(0, 0, 0, 255), Uint32 characterSize = PixelDensity::dpToPx(12))

Create a text from a font

void setAlpha(const Uint8& alpha)

See also:

Set the alpha of each individual character. This doesn’t break any custom color per-character setted.

Rectf getLocalBounds()

Returns:

The current text local bounds.

Float getTextWidth()

Returns:

The cached text width

Float getTextHeight()

Returns:

The cached text height

Float getLineSpacing()

Returns:

The line espacing

void draw(
    const Float& X,
    const Float& Y,
    const Vector2f& scale = Vector2f::One,
    const Float& rotation = 0,
    BlendMode effect = BlendMode::Alpha(),
    const OriginPoint& rotationCenter = OriginPoint::OriginCenter,
    const OriginPoint& scaleCenter = OriginPoint::OriginCenter
)

Draw the cached text on screen

const Color& getShadowColor() const

Returns:

The Shadow Font Color

void setShadowColor(const Color& color)

Set the shadow color of the string rendered

const std::vector<Float>& getLinesWidth()

Returns:

Every cached text line width

void setAlign(const Uint32& align)

Set the text draw align

const Uint32& getAlign() const

Returns:

The text align

Uint32 getNumLines()

Returns:

The number of lines that the cached text contains

Int32 findCharacterFromPos(const Vector2i& pos, bool returnNearest = true) const

Finds the closest cursor position to the point position

void findWordFromCharacterIndex(Int32 characterIndex, Int32& initCur, Int32& endCur) const

Simulates a selection request and return the initial and end cursor position when the selection worked. Otherwise both parameters will be -1.

void wrapText(const Uint32& maxWidth)

Shrink the String to a max width

Parameters:

MaxWidth

The maximum possible width

void invalidateColors()

Invalidates the color cache

void invalidate()

Invalidates the text cache

void setTabWidth(const Uint32& tabWidth)

Sets the tab character width.

const Uint32& getTabWidth() const

Returns:

The tab character width

Color getBackgroundColor() const

Returns:

The text background color

void setBackgroundColor(const Color& backgroundColor)

Sets text background color.

bool getDisableCacheWidth() const

Returns:

True if the text width cache is disabled.

void setDisableCacheWidth(bool newDisableCacheWidth)

The text width is cached every time the geometry of the text is updated. It’s possible to disable this to improve performance in very specific scenarios.