la classe Texture ja suporta carregar gifs i paletes

This commit is contained in:
2024-07-25 08:31:43 +02:00
parent 0d72427ab4
commit 073dd2a904
5 changed files with 181 additions and 205 deletions

View File

@@ -7,17 +7,46 @@
#ifndef TEXTURE_H
#define TEXTURE_H
// Definiciones de tipos
struct surface_s
{
Uint8 *data;
Uint16 w, h;
};
typedef struct surface_s *Surface;
class Texture
{
private:
// Objetos y punteros
SDL_Texture *texture; // La textura
SDL_Renderer *renderer; // Renderizador donde dibujar la textura
Surface surface; // Surface para usar imagenes en formato gif con paleta
// Variables
int width; // Ancho de la imagen
int height; // Alto de la imagen
std::string path; // Ruta de la imagen de la textura
int width; // Ancho de la imagen
int height; // Alto de la imagen
std::string path; // Ruta de la imagen de la textura
Uint32 paleta[256]; // Paleta para la surface
// Crea una nueva surface
Surface newSurface(int w, int h);
// Elimina una surface
void deleteSurface(Surface surface);
// Crea una surface desde un fichero .gif
Surface loadSurface(const char *filename);
// Vuelca la surface en la textura
void flipSurface();
// Establece un color de la paleta
void setPal(int index, Uint32 color);
// Carga una paleta desde un fichero
void loadPal(const char *filename);
public:
// Constructor
@@ -30,7 +59,7 @@ public:
bool loadFromFile(std::string path, SDL_Renderer *renderer, bool verbose = false);
// Crea una textura en blanco
bool createBlank(SDL_Renderer *renderer, int width, int height, SDL_TextureAccess = SDL_TEXTUREACCESS_STREAMING);
bool createBlank(SDL_Renderer *renderer, int width, int height, SDL_PixelFormatEnum format = SDL_PIXELFORMAT_RGBA8888, SDL_TextureAccess = SDL_TEXTUREACCESS_STREAMING);
// Libera la memoria de la textura
void unload();