Files
panopainter/src/image.h

41 lines
1023 B
C++

#pragma once
class Image
{
public:
std::unique_ptr<uint8_t[]> m_data;
int width = 0;
int height = 0;
int comp = 4;
bool load(std::string filename);
bool load_file(std::string filename);
const uint8_t* data() const { return m_data.get(); }
int size() const { return width * height * comp; }
bool save(const std::string& path);
void create(int w, int h)
{
width = w;
height = h;
comp = 4;
m_data = std::make_unique<uint8_t[]>(size());
}
void copy_from(const uint8_t* data)
{
std::copy(data, data + size(), m_data.get());
}
void destroy()
{
width = 0;
height = 0;
comp = 0;
m_data.reset();
}
void flip();
// convert to grayscale and set opaque
void gayscale_alpha();
void create() { m_data = std::make_unique<uint8_t[]>(size()); }
Image resize(int w, int h) const;
Image resize_power2() const;
Image resize_squared(const glm::u8vec4& bg) const;
};