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

Function ilLoadColPal

DevIL/src-IL/src/il_pal.cpp:368–445  ·  view source on GitHub ↗

Loads a .col palette file

Source from the content-addressed store, hash-verified

366
367//! Loads a .col palette file
368ILboolean ilLoadColPal(ILconst_string FileName)
369{
370 ILuint RealFileSize, FileSize;
371 ILushort Version;
372 ILHANDLE ColFile;
373
374 if (!iCheckExtension(FileName, IL_TEXT("col"))) {
375 ilSetError(IL_INVALID_EXTENSION);
376 return IL_FALSE;
377 }
378
379 if (iCurImage == NULL) {
380 ilSetError(IL_ILLEGAL_OPERATION);
381 return IL_FALSE;
382 }
383
384 ColFile = iopenr(FileName);
385 if (ColFile == NULL) {
386 ilSetError(IL_COULD_NOT_OPEN_FILE);
387 return IL_FALSE;
388 }
389
390 if (iCurImage->Pal.Palette && iCurImage->Pal.PalSize > 0 && iCurImage->Pal.PalType != IL_PAL_NONE) {
391 ifree(iCurImage->Pal.Palette);
392 iCurImage->Pal.Palette = NULL;
393 }
394
395 iseek(0, IL_SEEK_END);
396 RealFileSize = ftell((FILE*)ColFile);
397 iseek(0, IL_SEEK_SET);
398
399 if (RealFileSize > 768) { // has a header
400 fread(&FileSize, 4, 1, (FILE*)ColFile);
401 if ((FileSize - 8) % 3 != 0) { // check to make sure an even multiple of 3!
402 icloser(ColFile);
403 ilSetError(IL_ILLEGAL_FILE_VALUE);
404 return IL_FALSE;
405 }
406 if (iread(&Version, 2, 1) != 1) {
407 icloser(ColFile);
408 return IL_FALSE;
409 }
410 if (Version != 0xB123) {
411 icloser(ColFile);
412 ilSetError(IL_ILLEGAL_FILE_VALUE);
413 return IL_FALSE;
414 }
415 if (iread(&Version, 2, 1) != 1) {
416 icloser(ColFile);
417 return IL_FALSE;
418 }
419 if (Version != 0) {
420 icloser(ColFile);
421 ilSetError(IL_ILLEGAL_FILE_VALUE);
422 return IL_FALSE;
423 }
424 }
425

Callers 1

ILAPIENTRY ilLoadPalFunction · 0.85

Calls 2

iCheckExtensionFunction · 0.85
ilSetErrorFunction · 0.85

Tested by

no test coverage detected