He posat punteros dobles i tampoc va res

This commit is contained in:
2025-03-05 12:31:54 +01:00
parent 33038e8509
commit d41b0cb31c
11 changed files with 151 additions and 144 deletions

View File

@@ -60,16 +60,16 @@ struct SurfaceData
class Surface
{
private:
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<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
public:
// Constructor
Surface(std::shared_ptr<SurfaceData> surface_data_dest = nullptr, int w = 0, int h = 0);
Surface(std::shared_ptr<SurfaceData> surface_data_dest, const std::string &file_path);
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);
// Destructor
~Surface() = default;
@@ -120,14 +120,15 @@ public:
// Setters
void setTransparentColor(int color) { transparent_color_ = color; }
void setSurfaceDataDest(std::shared_ptr<SurfaceData> surface_data_dest) { surface_data_dest_ = surface_data_dest; }
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); }
void setPalette(const std::array<Uint32, 256> &palette) { palette_ = palette; }
void setSurface(std::shared_ptr<SurfaceData> surface) { surface_data_ = surface; }
// Método para redirigir surface_data_ al surface_data_ de otro objeto
// 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 surface_data_ al valor original
// Método para restaurar
void restoreOriginalSurfaceData();
};