/*************************************************************************** * Copyright (C) 2010 * Dimok * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any * damages arising from the use of this software. * * Permission is granted to anyone to use this software for any * purpose, including commercial applications, and to alter it and * redistribute it freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you * must not claim that you wrote the original software. If you use * this software in a product, an acknowledgment in the product * documentation would be appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and * must not be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source * distribution. * * TplImage.h * * for WiiXplorer 2010 ***************************************************************************/ #ifndef TPL_IMAGE_H_ #define TPL_IMAGE_H_ #include #include #include typedef struct { u32 magic; u32 num_textures; u32 head_size; } TPL_Header; typedef struct { u32 text_header_offset; u32 text_palette_offset; } TPL_Texture; typedef struct { u16 height; u16 width; u32 format; u32 offset; u32 wrap_s; u32 wrap_t; u32 min; u32 mag; f32 lod_bias; u8 edge_lod; u8 min_lod; u8 max_lod; u8 unpacked; } TPL_Texture_Header; typedef struct { u16 num_items; u8 unpacked; u8 pad; u32 format; u32 offset; } TPL_Palette_Header; class TplImage { public: TplImage(const char * filepath); TplImage(const u8 * imgBuffer, u32 imgSize); ~TplImage(); bool LoadImage(const u8 * imgBuffer, u32 imgSize); int GetWidth(int Texture); int GetHeight(int Texture); u32 GetFormat(int Texture); const u8 * GetTextureBuffer(int Texture); int GetTextureSize(int Texture); gdImagePtr ConvertToGD(int Texture); private: bool ParseTplFile(); u8 * TPLBuffer; u32 TPLSize; const TPL_Header * TPLHeader; std::vector Texture; std::vector TextureHeader; std::vector TplTextureBuffer; }; #endif