summaryrefslogtreecommitdiff
path: root/gfx/image.cpp
blob: 41c59a2e45a4d01b8662ce5a558e2b1ff0260f60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "image.h"
#include <cstddef>
#include <stb/stb_image.h>
#include <stdexcept>

Image::Image(const char * fileName, int flags) : width {}, height {}, numComponents {}
{
	stbi_set_flip_vertically_on_load(1);
	unsigned char * bytes = stbi_load(fileName, &width, &height, &numComponents, flags);

	if (!bytes) {
		throw std::runtime_error {std::string {"Unable to load image: "} + fileName};
	}

	data = {bytes, static_cast<size_t>(width * height * numComponents)};
}

Image::~Image()
{
	stbi_image_free(data.data());
}