blob: 613cdd401a33a00d74aaf7ba1a3205e52dddb078 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
#include "ilbm_ext.hpp"
IFF_IMPLEMENT_DYNCREATE("ILBM","TRAN",IlbmTranChunk)
IFF_IMPLEMENT_DYNCREATE("ILBM","ALPH",IlbmAlphChunk)
IFF_IMPLEMENT_DYNCREATE("MIPM","CONT",MipmContChunk)
IFF_IMPLEMENT_DYNCREATE("ILBM","S3TC",IlbmS3tcChunk)
IFF_IMPLEMENT_DYNCREATE("MIPM","FLAG",MipmFlagChunk)
namespace IFF
{
void IlbmTranChunk::Serialize(Archive * pArchv)
{
pArchv->Transfer(eTransType);
pArchv->Transfer(xPos);
pArchv->Transfer(yPos);
pArchv->Transfer(rgb);
}
void IlbmAlphChunk::Serialize(Archive * pArchv)
{
pArchv->Transfer(width);
pArchv->Transfer(height);
pArchv->Transfer(nBitPlanes);
pArchv->Transfer(eCompression);
IlbmBodyChunk::Serialize(pArchv);
}
bool IlbmAlphChunk::GetHeaderInfo() const
{
IlbmBodyChunk::nWidth = width;
IlbmBodyChunk::eCompression = eCompression;
IlbmBodyChunk::nBitPlanes = nBitPlanes;
return true;
}
void MipmContChunk::Serialize(Archive * pArchv)
{
pArchv->Transfer(nMipMaps);
pArchv->Transfer(eFilter);
}
void MipmFlagChunk::Serialize(Archive * pArchv)
{
pArchv->Transfer(flags);
}
IlbmS3tcChunk::IlbmS3tcChunk()
{
m_idCk = "S3TC";
pData = NULL;
dataSize = 0;
}
IlbmS3tcChunk::~IlbmS3tcChunk()
{
if(pData) delete [] pData;
pData = NULL;
}
void IlbmS3tcChunk::Serialize(Archive * pArchv)
{
pArchv->Transfer(flags);
pArchv->Transfer(fourCC);
pArchv->Transfer(redWeight);
pArchv->Transfer(blueWeight);
pArchv->Transfer(greenWeight);
pArchv->Transfer(width);
pArchv->Transfer(height);
pArchv->Transfer(dataSize);
if (pArchv->m_bIsLoading)
{
if(pData) delete [] pData;
pData = new UBYTE[dataSize];
}
UBYTE *pDataPos = pData;
for(unsigned i=0;i<dataSize;i++)
{
pArchv->Transfer(*pDataPos++);
}
}
}
|