/* * CDefFile.h, part of VCMI engine * * Authors: listed in file AUTHORS in main folder * * License: GNU General Public License v2.0 or later * Full text of license available in license.txt file, in main folder * */ #pragma once #include "../../lib/vcmi_endian.h" #include "../../lib/filesystem/ResourcePath.h" class IImageLoader; struct SDL_Color; /// Class for def loading /// After loading will store general info (palette and frame offsets) and pointer to file itself class CDefFile { private: PACKED_STRUCT_BEGIN struct SSpriteDef { ui32 size; ui32 format; /// format in which pixel data is stored ui32 fullWidth; /// full width and height of frame, including borders ui32 fullHeight; ui32 width; /// width and height of pixel data, borders excluded ui32 height; si32 leftMargin; si32 topMargin; } PACKED_STRUCT_END; //offset[group][frame] - offset of frame data in file std::map > offset; std::unique_ptr data; std::unique_ptr palette; public: CDefFile(const AnimationPath & Name); ~CDefFile(); //load frame as SDL_Surface void loadFrame(size_t frame, size_t group, IImageLoader &loader) const; const std::map getEntries() const; };