texproc/image.hpp
2025-01-19 19:50:30 +01:00

41 lines
714 B
C++

#pragma once
#include <cstdlib>
#include <memory>
#include <string>
struct ColorRGB {
uint8_t r;
uint8_t g;
uint8_t b;
};
struct ColorRGBA {
ColorRGB rgb;
uint8_t a;
};
class Image {
size_t m_width;
size_t m_height;
std::unique_ptr<ColorRGBA[]> m_data;
public:
Image(const std::string& path);
Image(size_t width, size_t height);
size_t GetWidth() const { return m_width; }
size_t GetHeight() const { return m_height; }
ColorRGBA& At(size_t x, size_t y) {
return m_data[y * m_width + x];
}
const ColorRGBA& At(size_t x, size_t y) const {
return m_data[y * m_width + x];
}
void Save(const std::string& path) const;
};