#pragma once #include "sprite.h" #include "utils.h" #ifndef TEXT_H #define TEXT_H #define TXT_COLOR 1 #define TXT_SHADOW 2 #define TXT_CENTER 4 // Clase texto. Pinta texto en pantalla a partir de un bitmap class Text { private: Sprite *mSprite; // Objeto con los graficos para el texto struct Offset { int x; int y; Uint8 w; }; Offset mOffset[255]; // Vector con las posiciones y ancho de cada letra Uint8 mType; // Indica si el texto es de anchura fija o variable Uint8 mSize; // Altura del texto public: // Constructor Text(LTexture *texture, SDL_Renderer *renderer); // Destructor ~Text(); // Inicializador void init(Uint8 type, Uint8 size); // Escribe el texto en pantalla void write(int x, int y, std::string text, int kerning = 0, int lenght = -1); // Escribe el texto con colores void writeColored(int x, int y, std::string text, color_t color, int kerning = 0, int lenght = -1); // Escribe el texto con sombra void writeShadowed(int x, int y, std::string text, color_t color, Uint8 shadowDistance = 1, int kerning = 0, int lenght = -1); // Escribe el texto centrado en un punto x y con kerning void writeCentered(int x, int y, std::string text, int kerning = 0, int lenght = -1); // Escribe texto con extras void writeDX(Uint8 flags, int x, int y, std::string text, int kerning = 0, color_t textColor = {255, 255, 255}, Uint8 shadowDistance = 1, color_t shadowColor = {0, 0, 0}, int lenght = -1); // Obtiene la longitud en pixels de una cadena Uint16 lenght(std::string text, int kerning); // Obtiene el valor de la variable Uint8 getType(); // Establece el valor de la variable void setType(Uint8 type); // Obtiene el valor de la variable Uint8 getSize(); // Establece el valor de la variable void setSize(Uint8 size); }; #endif