#pragma once
#include <whiteout/common_types.h>
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <vector>
namespace whiteout::textures::mipmap {
struct MipImage {
std::vector<f32> pixels;
u32 width = 0;
u32 height = 0;
u32 channels = 0;
MipImage() = default;
MipImage(u32 width, u32 height, u32 channels)
: pixels(static_cast<size_t>(width) * height * channels, 0.0f), width(width),
height(height), channels(channels) {}
f32* pixel(u32 x, u32 y) {
return pixels.data() + (static_cast<size_t>(y) * width + x) * channels;
}
const f32* pixel(u32 x, u32 y) const {
return pixels.data() + (static_cast<size_t>(y) * width + x) * channels;
}
size_t pixelCount() const {
return static_cast<size_t>(width) * height;
}
};
}