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
|
int CHL_Sprite::loadSprite ( char *path )
{
FILE *stream;
if ( ( stream = fopen ( path, "rb" ) ) == NULL )
{
fprintf ( stderr, "Konnte Daten nicht laden.\n" );
return 1;
}
mainData->header = new struct hed_key;
fread ( mainData->header, sizeof(struct hed_key), 1, stream );
mainData->palette = new struct pal_key;
mainData->palette->data = NULL;
fread ( &mainData->palette->colors, sizeof(mainData->palette->colors), 1, stream );
mainData->palette->data = new struct rgb_key[mainData->palette->colors];
for ( int i = 0; i <= ( mainData->palette->colors - 1 ); i++ )
{
fread ( &mainData->palette->data[i], sizeof(struct rgb_key), 1, stream );
};
mainData->frames = new struct frm_key[mainData->header->frames];
for ( i = 0; i <= ( mainData->header->frames - 1 ); i++ )
{
fread ( &mainData->frames[i].frameType, sizeof(int32_t), 1, stream );
if ( mainData->frames[i].frameType == SINGLEFRAME )
{
mainData->frames[i].numIntervall = NULL;
mainData->frames[i].intervall = NULL;
fread ( &mainData->frames[i].frameOriginX, sizeof(int32_t), 1, stream );
fread ( &mainData->frames[i].frameOriginY, sizeof(int32_t), 1, stream );
fread ( &mainData->frames[i].frameWidth, sizeof(int32_t), 1, stream );
fread ( &mainData->frames[i].frameHeight, sizeof(int32_t), 1, stream );
mainData->frames[i].data = new uint8_t[(mainData->frames[i].frameWidth * mainData->frames[i].frameHeight)];
for ( int c = 0; c <= (mainData->frames[i].frameWidth * mainData->frames[i].frameHeight - 1); c++ )
{
fread ( &mainData->frames[i].data[c], sizeof(uint8_t), 1, stream );
}
};
if ( mainData->frames[i].frameType == GROUPFRAME )
{
fprintf ( stderr, "Oho ! Ein Groupframesprite ... leider noch nicht implementiert.\n" );
};
};
fclose ( stream );
printf ( "Konnte Daten erfolgreich laden.\n" );
return 0;
};
|