00001 #include "stdafx.h"
00002 #include "palettefile.h"
00003 #include <string.h>
00004
00005 PaletteFile::PaletteFile(FILESTRUCT* data)
00006 {
00007 if(data == NULL)
00008 {
00009 m_nStatus = BL_ERROR;
00010 return;
00011 }
00012
00013 m_nStatus = BL_OK;
00014
00015
00016 strncpy(m_FileHeader.name, data->fileheader.name, 12);
00017 m_FileHeader.size = data->fileheader.size;
00018
00019 uint32 nMemOffset = 0;
00020 memcpy(&m_Palette.palette, &data->data[nMemOffset], 768);
00021 nMemOffset += (sizeof(char) * 768);
00022
00023 memcpy(&m_Palette.numpalookups, &data->data[nMemOffset], 2);
00024 nMemOffset += (sizeof(char) * 2);
00025
00026 m_Palette.palookup = new uint8[m_Palette.numpalookups][256];
00027 memcpy(&m_Palette.palookup[0], &data->data[nMemOffset], (m_Palette.numpalookups * 256));
00028 nMemOffset += (sizeof(char) * (m_Palette.numpalookups * 256));
00029
00030 memcpy(&m_Palette.transluc[0], &data->data[nMemOffset], 65536);
00031 nMemOffset += (sizeof(char) * 65536);
00032
00033 }
00034
00035
00036 PaletteFile::PaletteFile(const char* sFilename)
00037 {
00038 m_nStatus = BL_OK;
00039
00040 FILE *fp = fopen(sFilename, "rb");
00041 if(fp != NULL)
00042 {
00043
00044
00045 fread(&m_Palette.palette, sizeof(char), 768, fp);
00046
00047
00048
00049 fread(&m_Palette.numpalookups, sizeof(char), 2, fp);
00050
00051 m_Palette.palookup = new uint8[m_Palette.numpalookups][256];
00052
00053
00054 fread(&m_Palette.palookup[0], sizeof(char), (m_Palette.numpalookups*256), fp);
00055
00056
00057
00058
00059 fread(&m_Palette.transluc[0], sizeof(char), 65536, fp);
00060
00061 fclose(fp);
00062 }
00063 else
00064 {
00065 m_nStatus = BL_ERROR;
00066 }
00067 }
00068
00069 PaletteFile::PaletteFile()
00070 {
00071 m_nStatus = BL_OK;
00072 }
00073
00074 PaletteFile::~PaletteFile()
00075 {
00076
00077 if(m_Palette.palookup)
00078 {
00079 delete[] m_Palette.palookup;
00080 }
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096 }
00097