From f953c730af2b90db99f709258c5d5e50fdcaadf7 Mon Sep 17 00:00:00 2001 From: BossCode45 Date: Fri, 27 Jun 2025 14:54:46 +1200 Subject: Initial commit Bringing a lot of stuff over from my maze-reader project in an attempt to split the image reading code off into a library. --- src/image.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/image.h (limited to 'src/image.h') diff --git a/src/image.h b/src/image.h new file mode 100644 index 0000000..f4071ea --- /dev/null +++ b/src/image.h @@ -0,0 +1,51 @@ +#pragma once + +#include +#include + +template +struct Pixel +{ + T r, g, b, a; +}; + + +class Image +{ +protected: + uint8_t* imageData; + uint8_t colorValues; + uint8_t bpp; +public: + Image() = default; + ~Image(); + + uint32_t width = 0; + uint32_t height = 0; + uint8_t bitDepth; + uint8_t colorType; + uint8_t compressionMethod; + uint8_t filterMethod; + uint8_t interlaceMethod; + + template + Pixel getPixel(unsigned int x, unsigned int y); +}; + + +template +Pixel Image::getPixel(unsigned int x, unsigned int y) +{ + Pixel pixel; + + pixel.r = (T)imageData[y * width * colorValues * bitDepth/8 + x * colorValues * bitDepth/8]; + pixel.g = (T)imageData[y * width * colorValues * bitDepth/8 + x * colorValues * bitDepth/8 + 1]; + pixel.b = (T)imageData[y * width * colorValues * bitDepth/8 + x * colorValues * bitDepth/8 + 2]; + + if(colorValues == 4) + pixel.a = imageData[y * width * colorValues * bitDepth/8 + x * colorValues * bitDepth/8 + 3]; + else + pixel.a = 0; + + return pixel; +} -- cgit v1.2.3