Surface usa std::vector en lloc de shared_ptr<Uint8[]>

This commit is contained in:
2026-05-17 20:05:25 +02:00
parent 6b6d5f1f6d
commit 28fc8456e0
2 changed files with 3 additions and 9 deletions
+1 -7
View File
@@ -4,7 +4,6 @@
#include <SDL3/SDL.h> // Para SDL_LogError, SDL_LogCategory, Uint8, SDL_...
#include <cstdint> // Para uint32_t
#include <cstring> // Para memcpy
#include <fstream> // Para basic_ifstream, basic_istream, basic_ios
#include <iostream> // Para std::cout
#include <sstream> // Para basic_istringstream
@@ -259,12 +258,7 @@ auto Texture::loadSurface(const std::string& file_path) -> std::shared_ptr<Surfa
return nullptr;
}
// Si el constructor de Surface espera un std::shared_ptr<Uint8[]>:
size_t pixel_count = raw_pixels.size();
auto pixels = std::shared_ptr<Uint8[]>(new Uint8[pixel_count], std::default_delete<Uint8[]>()); // NOLINT(modernize-avoid-c-arrays)
std::memcpy(pixels.get(), raw_pixels.data(), pixel_count);
auto surface = std::make_shared<Surface>(w, h, pixels);
auto surface = std::make_shared<Surface>(w, h, std::move(raw_pixels));
// Actualizar las dimensiones
width_ = w;
+2 -2
View File
@@ -16,11 +16,11 @@ using Palette = std::array<Uint32, 256>;
// Definición de Surface para imágenes con paleta
struct Surface {
std::shared_ptr<Uint8[]> data; // NOLINT(modernize-avoid-c-arrays)
std::vector<Uint8> data;
Uint16 w, h;
// Constructor
Surface(Uint16 width, Uint16 height, std::shared_ptr<Uint8[]> pixels) // NOLINT(modernize-avoid-c-arrays)
Surface(Uint16 width, Uint16 height, std::vector<Uint8> pixels)
: data(std::move(pixels)),
w(width),
h(height) {}