paradiso/src/lib/bitmap.hpp

36 lines
No EOL
868 B
C++

#ifndef PARADISO_BITMAP_HPP
#define PARADISO_BITMAP_HPP
#include "geometry.hpp"
#include "globals.hpp"
#include "rgba.hpp"
#include <type_traits>
#include <vector>
namespace paradiso {
struct Bitmap final {
constexpr static Bitmap create(Size size) noexcept {
return {.size = size, .data = std::vector<RGBA>{size.area()}};
}
constexpr auto fill(const RGBA& color) noexcept {
std::fill(data.begin(), data.end(), color);
return *this;
}
constexpr RGBA& pixel(std::integral auto x, std::integral auto y) {
return data[y * size.width + x];
}
constexpr const RGBA& pixel(std::integral auto x,
std::integral auto y) const {
return data[y * size.width + x];
}
Size size{.width = 0, .height = 0};
std::vector<RGBA> data{};
};
} // namespace paradiso
#endif