MCPcopy Create free account
hub / github.com/DentonW/DevIL / iLoadWalInternal

Function iLoadWalInternal

DevIL/src-IL/src/il_wal.cpp:76–165  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

74
75
76ILboolean iLoadWalInternal()
77{
78 WALHEAD Header;
79 ILimage *Mipmaps[3], *CurImage;
80 ILuint i, NewW, NewH;
81
82 if (iCurImage == NULL) {
83 ilSetError(IL_ILLEGAL_OPERATION);
84 return IL_FALSE;
85 }
86 CurImage = iCurImage;
87
88
89 // Read header
90 iread(&Header.FileName, 1, 32);
91 Header.Width = GetLittleUInt();
92 Header.Height = GetLittleUInt();
93
94 for (i = 0; i < 4; i++)
95 Header.Offsets[i] = GetLittleUInt();
96
97 iread(Header.AnimName, 1, 32);
98 Header.Flags = GetLittleUInt();
99 Header.Contents = GetLittleUInt();
100 Header.Value = GetLittleUInt();
101
102 if (!ilTexImage(Header.Width, Header.Height, 1, 1, IL_COLOUR_INDEX, IL_UNSIGNED_BYTE, NULL))
103 return IL_FALSE;
104
105 for (i = 0; i < 3; i++) {
106 Mipmaps[i] = (ILimage*)icalloc(sizeof(ILimage), 1);
107 if (Mipmaps[i] == NULL)
108 goto cleanup_error;
109 Mipmaps[i]->Pal.Palette = (ILubyte*)ialloc(768);
110 if (Mipmaps[i]->Pal.Palette == NULL)
111 goto cleanup_error;
112 memcpy(Mipmaps[i]->Pal.Palette, ilDefaultQ2Pal, 768);
113 Mipmaps[i]->Pal.PalType = IL_PAL_RGB24;
114 }
115
116 NewW = Header.Width;
117 NewH = Header.Height;
118 for (i = 0; i < 3; i++) {
119 NewW /= 2;
120 NewH /= 2;
121 iCurImage = Mipmaps[i];
122 if (!ilTexImage(NewW, NewH, 1, 1, IL_COLOUR_INDEX, IL_UNSIGNED_BYTE, NULL))
123 goto cleanup_error;
124 // Don't set until now so ilTexImage won't get rid of the palette.
125 Mipmaps[i]->Pal.PalSize = 768;
126 Mipmaps[i]->Origin = IL_ORIGIN_UPPER_LEFT;
127 }
128
129 iCurImage = CurImage;
130 ilCloseImage(iCurImage->Mipmaps);
131 iCurImage->Mipmaps = Mipmaps[0];
132 Mipmaps[0]->Mipmaps = Mipmaps[1];
133 Mipmaps[1]->Mipmaps = Mipmaps[2];

Callers 2

ilLoadWalFFunction · 0.85
ilLoadWalLFunction · 0.85

Calls 4

ilSetErrorFunction · 0.85
GetLittleUIntFunction · 0.85
ilCloseImageFunction · 0.85
ilFixImageFunction · 0.85

Tested by

no test coverage detected