pngloader.h File Reference

Go to the documentation of this file. Source: include/ffw/media/pngloader.h

/* This file is part of FineFramework project */
#ifndef FFW_MEDIA_PNG_LOADER
#define FFW_MEDIA_PNG_LOADER
#include "imageloader.h"

#ifndef DOXYGEN_SHOULD_SKIP_THIS
#ifndef PNG_H
typedef void* png_structp;
typedef void* png_infop;
#endif
#endif

namespace ffw {
    class FFW_API PngLoader: public ImageReader {
    public:
        PngLoader(const std::string& path);
        PngLoader(const PngLoader& other) = delete;
        PngLoader(PngLoader&& other);
        void swap(PngLoader& other);
        PngLoader& operator = (const PngLoader& other) = delete;
        PngLoader& operator = (PngLoader&& other);
        virtual ~PngLoader();

        size_t readRow(void* dest) override;
        void close() override;

    private:
        void open(const std::string& path);

        png_structp pngPtr;
        png_infop infoPtr;
        FILE* input;
        std::string errorStr;
    };
}

inline void swap(ffw::PngLoader& first, ffw::PngLoader& second){
    first.swap(second);
}

#endif