#ifndef PNGREADER_H #define PNGREADER_H #include #include "utils/Color.h" class PNGReader final { const char* path; int width; int height; int channels; int bitDepth; int rowBytes; FILE* file; png_structp read; png_infop info; ColorChannel** rowPointers; public: PNGReader(const char* path); ~PNGReader(); PNGReader(const PNGReader& other) = delete; PNGReader(PNGReader&& other) = delete; PNGReader& operator=(const PNGReader& other) = delete; PNGReader& operator=(PNGReader&& other) = delete; int getWidth() const; int getHeight() const; int getChannels() const; int getBufferSize() const; bool hasError() const; template bool readData(Color* buffer) { if(channels != N) { return true; } return readData(reinterpret_cast (buffer)); } private: bool readData(ColorChannel* buffer); bool checkSignature(); }; #endif