/* # ______ ____ ___ # | \/ ____| |___| # | | | \ | | #----------------------------------------------------------------------- # Copyright 2020, tyra - https://github.com/h4570/tyra # Licenced under Apache License 2.0 # Sandro Sobczyński */ #pragma once #include "loaders/texture/base/texture_loader.hpp" #include "renderer/core/texture/models/texture.hpp" #ifdef INTELLISENSE typedef void* png_structp; typedef void* png_bytep; typedef void* png_infop; typedef void* png_colorp; #else #include #endif namespace Tyra { class PngLoader : public TextureLoader { public: PngLoader(); ~PngLoader(); TextureBuilderData* load(const char* fullpath); private: void handle32bpp(TextureBuilderData* result, png_structp pngPtr, png_infop infoPtr, png_bytep* rowPointers); void handle24bpp(TextureBuilderData* result, png_structp pngPtr, png_infop infoPtr, png_bytep* rowPointers); void handlePalletized(TextureBuilderData* result, png_structp pngPtr, png_infop infoPtr, png_bytep* rowPointers, const int& bitDepth); void handle8bppPalletized(TextureBuilderData* result, png_structp pngPtr, png_infop infoPtr, png_bytep* rowPointers, png_colorp palette, png_bytep trans, const int& numPallete, const int& numTrans); void handle4bppPalletized(TextureBuilderData* result, png_structp pngPtr, png_infop infoPtr, png_bytep* rowPointers, png_colorp palette, png_bytep trans, const int& numPallete, const int& numTrans); }; } // namespace Tyra