usbloadergx/source/ImageOperations/TplImage.h
dimok321 973d8b2005 *Fixed compile error
*Converted every 4 spaces to a tab to make the source consistent on those
2011-07-25 22:28:22 +00:00

99 lines
2.3 KiB
C++

/***************************************************************************
* 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 <gccore.h>
#include <gd.h>
#include <vector>
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<const TPL_Texture *> Texture;
std::vector<const TPL_Texture_Header *> TextureHeader;
std::vector<const u8 *> TplTextureBuffer;
};
#endif