#pragma once #include #include #include 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 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; };