#pragma once #include // for SDL_Renderer #include // for Uint8 #include // for string #include "utils.h" class Sprite; // lines 6-6 class Texture; // lines 7-7 #define TXT_COLOR 1 #define TXT_SHADOW 2 #define TXT_CENTER 4 #define TXT_STROKE 8 struct offset_t { int x; int y; int w; }; struct textFile_t { int boxWidth; // Anchura de la caja de cada caracter en el png int boxHeight; // Altura de la caja de cada caracter en el png offset_t offset[128]; // Vector con las posiciones y ancho de cada letra }; // Llena una estructuta textFile_t desde un fichero textFile_t LoadTextFile(std::string file, bool verbose = false); // Clase texto. Pinta texto en pantalla a partir de un bitmap class Text { private: // Objetos y punteros Sprite *sprite; // Objeto con los graficos para el texto Texture *texture; // Textura con los bitmaps del texto // Variables int boxWidth; // Anchura de la caja de cada caracter en el png int boxHeight; // Altura de la caja de cada caracter en el png bool fixedWidth; // Indica si el texto se ha de escribir con longitud fija en todas las letras offset_t offset[128]; // Vector con las posiciones y ancho de cada letra public: // Constructor Text(std::string bitmapFile, std::string textFile, SDL_Renderer *renderer); Text(std::string textFile, Texture *texture, SDL_Renderer *renderer); Text(textFile_t *textFile, Texture *texture, SDL_Renderer *renderer); // Destructor ~Text(); // Escribe el texto en pantalla void write(int x, int y, std::string text, int kerning = 1, int lenght = -1); // Escribe el texto con colores void writeColored(int x, int y, std::string text, color_t color, int kerning = 1, 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 = 1, int lenght = -1); // Escribe el texto centrado en un punto x void writeCentered(int x, int y, std::string text, int kerning = 1, int lenght = -1); // Escribe texto con extras void writeDX(Uint8 flags, int x, int y, std::string text, int kerning = 1, 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 int lenght(std::string text, int kerning = 1); // Devuelve el valor de la variable int getCharacterSize(); // Recarga la textura void reLoadTexture(); // Establece si se usa un tamaƱo fijo de letra void setFixedWidth(bool value); // Carga una paleta de colores para el texto void addPalette(std::string path); // Establece una paleta de colores para el texto void setPalette(int index); };