#ifndef IMAGE_HH #define IMAGE_HH #include "size.hh" #include #include #include class Image { public: enum class Format : uint8_t { RGBA_8888, ARGB_8888, BGRA_8888, ABGR_8888, }; [[nodiscard]] Size const& size() const { return size_; } [[nodiscard]] uint32_t width() const { return size_.width; } [[nodiscard]] uint32_t height() const { return size_.height; } [[nodiscard]] Format format() const { return format_; } [[nodiscard]] size_t scanline() const { return scanline_; } [[nodiscard]] uint8_t const* data() const { return pixels_.get(); } Image(Format format, Size size, size_t scanline, std::unique_ptr pixels); private: Image(Image const&) = delete; Image& operator=(Image const&) = delete; Format const format_; Size const size_; size_t const scanline_; std::unique_ptr pixels_; }; #endif // IMAGE_HH