Added a re-initialize method

This commit is contained in:
Leonetienne 2022-03-05 19:51:57 +01:00
parent 1fdd062e4d
commit f146826ff9
2 changed files with 27 additions and 0 deletions

View File

@ -11,7 +11,28 @@ namespace Leonetienne::BmpPP {
size { size }, size { size },
colormode { colormode } colormode { colormode }
{ {
ReInitialize(size, colormode);
return;
}
void BMP::ReInitialize(const Eule::Vector2i &size) {
// Carry over new attributes
this->size = size;
// Re-initialize the pixelbuffer
pixelBuffer.clear();
pixelBuffer.resize(size.x * size.y * GetNumColorChannels());
return;
}
void BMP::ReInitialize(const Eule::Vector2i &size, const Colormode &colormode) {
// Carry over new attributes
this->size = size;
this->colormode = colormode;
// Re-initialize the pixelbuffer
pixelBuffer.clear(); pixelBuffer.clear();
pixelBuffer.resize(size.x * size.y * GetNumColorChannels()); pixelBuffer.resize(size.x * size.y * GetNumColorChannels());

View File

@ -24,6 +24,12 @@ namespace Leonetienne::BmpPP {
//! Will set the color of a pixel at a given position //! Will set the color of a pixel at a given position
void SetPixel(const Eule::Vector2i& position, const std::uint8_t r, const std::uint8_t g, const std::uint8_t b, const std::uint8_t a = 0xFF); void SetPixel(const Eule::Vector2i& position, const std::uint8_t r, const std::uint8_t g, const std::uint8_t b, const std::uint8_t a = 0xFF);
//! Will basically reconstruct this image, to fit a new resolution
void ReInitialize(const Eule::Vector2i& size);
//! Will basically reconstruct this image, to fit a new resolution and new format
void ReInitialize(const Eule::Vector2i& size, const Colormode& colormode);
//! Will return a pointer to the raw pixel data //! Will return a pointer to the raw pixel data
std::uint8_t* data(); std::uint8_t* data();