Imposible canviar la rendererSurface

This commit is contained in:
2025-03-05 18:51:36 +01:00
parent d41b0cb31c
commit 70a50f5117
16 changed files with 199 additions and 257 deletions

View File

@@ -60,16 +60,15 @@ struct SurfaceData
class Surface
{
private:
std::shared_ptr<std::shared_ptr<SurfaceData>> surface_data_dest_; // Puntero a la SurfaceData remota donde copiar la información
std::shared_ptr<SurfaceData> surface_data_; // SurfaceData propia
std::shared_ptr<SurfaceData> original_surface_data_; // SurfaceData original para restauración
std::array<Uint32, 256> palette_; // Paleta para volcar la SurfaceData a una Textura
int transparent_color_; // Indice de la paleta que se omite en la copia de datos
std::shared_ptr<Surface> surface_dest_; // Surface remota donde dibujar la surface_data_
std::shared_ptr<SurfaceData> surface_data_; // Datos a dibujar
std::array<Uint32, 256> palette_; // Paleta para volcar la SurfaceData a una Textura
int transparent_color_; // Indice de la paleta que se omite en la copia de datos
public:
// Constructor
Surface(std::shared_ptr<std::shared_ptr<SurfaceData>> surface_dest, int w, int h);
Surface(std::shared_ptr<std::shared_ptr<SurfaceData>> surface_dest, const std::string &file_path);
Surface(std::shared_ptr<Surface> surface_dest, int w, int h);
Surface(std::shared_ptr<Surface> surface_dest, const std::string &file_path);
// Destructor
~Surface() = default;
@@ -101,34 +100,33 @@ public:
bool fadePalette();
// Pone un pixel en la SurfaceData
void putPixel(std::shared_ptr<SurfaceData> surface_data, int x, int y, Uint8 color);
void putPixel(int x, int y, Uint8 color);
// Obtiene el color de un pixel de la superficie de origen
// Obtiene el color de un pixel de la surface_data
Uint8 getPixel(int x, int y);
// Dibuja un rectangulo
void fillRect(std::shared_ptr<SurfaceData> surface_data, SDL_Rect *rect, Uint8 color);
void fillRect(SDL_Rect *rect, Uint8 color);
// Dibuja una linea
void drawLine(std::shared_ptr<SurfaceData> surface_data, int x1, int y1, int x2, int y2, Uint8 color);
void drawLine(int x1, int y1, int x2, int y2, Uint8 color);
// Getters
// Métodos para gestionar surface_dest_
std::shared_ptr<Surface> getSurfaceDest() const { return surface_dest_; }
void setSurfaceDest(std::shared_ptr<Surface> new_surface_dest) { surface_dest_ = new_surface_dest; }
// Metodos para gestionar surface_data_
std::shared_ptr<SurfaceData> getSurfaceData() const { return surface_data_; }
int getTransparentColor() const { return transparent_color_; }
void setSurfaceData(std::shared_ptr<SurfaceData> new_data) { surface_data_ = new_data; }
// Obtien ancho y alto
int getWidth() const { return surface_data_->width; }
int getHeight() const { return surface_data_->height; }
// Setters
// Color transparente
int getTransparentColor() const { return transparent_color_; }
void setTransparentColor(int color) { transparent_color_ = color; }
void setSurfaceDataDest(std::shared_ptr<std::shared_ptr<SurfaceData>> surface_data_dest) { surface_data_dest_ = surface_data_dest; }
void setSurfaceDataDestRaw(std::shared_ptr<SurfaceData> surface_data_dest) { surface_data_dest_ = std::make_shared<std::shared_ptr<SurfaceData>>(surface_data_dest); }
// Paleta
void setPalette(const std::array<Uint32, 256> &palette) { palette_ = palette; }
void setSurface(std::shared_ptr<SurfaceData> surface) { surface_data_ = surface; }
// Permite que una Surface apunte al SurfaceData de otra Surface
void redirectSurfaceDataTo(const std::shared_ptr<SurfaceData> &newSurfaceData);
void redirectSurfaceDataTo(const std::shared_ptr<Surface> &otherSurface);
// Método para restaurar
void restoreOriginalSurfaceData();
};