forked from jaildesigner-jailgames/jaildoctors_dilemma
67 lines
2.2 KiB
C++
67 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include <SDL3/SDL.h>
|
|
|
|
#include <string> // Para string
|
|
#include <vector> // Para vector
|
|
struct Color; // lines 11-11
|
|
|
|
class Texture {
|
|
private:
|
|
// Objetos y punteros
|
|
SDL_Renderer* renderer_; // Renderizador donde dibujar la textura
|
|
SDL_Texture* texture_ = nullptr; // La textura
|
|
|
|
// Variables
|
|
std::string path_; // Ruta de la imagen de la textura
|
|
float width_ = 0.0F; // Ancho de la imagen
|
|
float height_ = 0.0F; // Alto de la imagen
|
|
std::vector<std::vector<Uint32>> palettes_; // Vector con las diferentes paletas
|
|
|
|
// Libera la memoria de la textura
|
|
void unloadTexture();
|
|
|
|
public:
|
|
// Constructor
|
|
explicit Texture(SDL_Renderer* renderer, const std::string& path = std::string());
|
|
|
|
// Destructor
|
|
~Texture();
|
|
|
|
// Carga una imagen desde un fichero
|
|
bool loadFromFile(const std::string& path);
|
|
|
|
// Crea una textura en blanco
|
|
auto createBlank(int width, int height, SDL_PixelFormat format = SDL_PIXELFORMAT_RGBA8888, SDL_TextureAccess access = SDL_TEXTUREACCESS_STREAMING) -> bool;
|
|
|
|
// Establece el color para la modulacion
|
|
void setColor(Uint8 red, Uint8 green, Uint8 blue);
|
|
void setColor(Color color);
|
|
|
|
// Establece el blending
|
|
void setBlendMode(SDL_BlendMode blending);
|
|
|
|
// Establece el alpha para la modulación
|
|
void setAlpha(Uint8 alpha);
|
|
|
|
// Renderiza la textura en un punto específico
|
|
void render(float x, float y, SDL_FRect* clip = nullptr, float zoom_w = 1, float zoom_h = 1, double angle = 0.0, SDL_FPoint* center = nullptr, SDL_FlipMode flip = SDL_FLIP_NONE);
|
|
|
|
// Establece la textura como objetivo de renderizado
|
|
void setAsRenderTarget(SDL_Renderer* renderer);
|
|
|
|
// Obtiene el ancho de la imagen
|
|
int getWidth() const { return width_; }
|
|
|
|
// Obtiene el alto de la imagen
|
|
int getHeight() const { return height_; }
|
|
|
|
// Recarga la textura
|
|
bool reLoad();
|
|
|
|
// Obtiene la textura
|
|
SDL_Texture* getSDLTexture();
|
|
|
|
// Obtiene el renderizador
|
|
SDL_Renderer* getRenderer();
|
|
}; |