#ifndef PNGREADER_H
#define PNGREADER_H

#include <png.h>

#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;

    bool readData(ColorChannel* buffer);

private:
    bool checkSignature();
};

#endif