#pragma once #include "WallpaperEngine/Data/Assets/Texture.h" #include #include #include "WallpaperEngine/Data/JSON.h" #include "WallpaperEngine/Data/Model/Types.h" #include "WallpaperEngine/Data/Utils/BinaryReader.h" namespace WallpaperEngine::Data::Parsers { using JSON = WallpaperEngine::Data::JSON::JSON; using namespace WallpaperEngine::Data::Utils; using namespace WallpaperEngine::Data::Assets; using namespace WallpaperEngine::Data::Model; class TextureParser { public: static TextureUniquePtr parse (const BinaryReader& file); static TextureUniquePtr parse ( const BinaryReader& file, const std::string& filename, std::function metadataLoader ); static MipmapSharedPtr parseMipmap (const BinaryReader& file, const Texture& header); static FrameSharedPtr parseFrame (const BinaryReader& file); static FrameSharedPtr parseFrameV1 (const BinaryReader& file); static TextureMap parseTextureMap (const JSON& it); private: static void parseTextureHeader (Texture& header, const BinaryReader& file); static void parseContainer (Texture& header, const BinaryReader& file); static void parseAnimations (Texture& header, const BinaryReader& file); static void parseSpritesheetMetadata ( Texture& header, const std::string& filename, std::function metadataLoader ); static TextureFormat parseTextureFormat (uint32_t value); static uint32_t parseTextureFlags (uint32_t value); static FIF parseFIF (uint32_t value); }; }