Loads an .plt palette file.
| 492 | |
| 493 | //! Loads an .plt palette file. |
| 494 | ILboolean ilLoadPltPal(ILconst_string FileName) |
| 495 | { |
| 496 | ILHANDLE PltFile; |
| 497 | |
| 498 | if (!iCheckExtension(FileName, IL_TEXT("plt"))) { |
| 499 | ilSetError(IL_INVALID_EXTENSION); |
| 500 | return IL_FALSE; |
| 501 | } |
| 502 | |
| 503 | if (iCurImage == NULL) { |
| 504 | ilSetError(IL_ILLEGAL_OPERATION); |
| 505 | return IL_FALSE; |
| 506 | } |
| 507 | |
| 508 | PltFile = iopenr(FileName); |
| 509 | if (PltFile == NULL) { |
| 510 | ilSetError(IL_COULD_NOT_OPEN_FILE); |
| 511 | return IL_FALSE; |
| 512 | } |
| 513 | |
| 514 | if (iCurImage->Pal.Palette && iCurImage->Pal.PalSize > 0 && iCurImage->Pal.PalType != IL_PAL_NONE) { |
| 515 | ifree(iCurImage->Pal.Palette); |
| 516 | iCurImage->Pal.Palette = NULL; |
| 517 | } |
| 518 | |
| 519 | iCurImage->Pal.PalSize = GetLittleUInt(); |
| 520 | if (iCurImage->Pal.PalSize == 0) { |
| 521 | ilSetError(IL_INVALID_FILE_HEADER); |
| 522 | return IL_FALSE; |
| 523 | } |
| 524 | iCurImage->Pal.PalType = IL_PAL_RGB24; |
| 525 | iCurImage->Pal.Palette = (ILubyte*)ialloc(iCurImage->Pal.PalSize); |
| 526 | if (!iCurImage->Pal.Palette) { |
| 527 | icloser(PltFile); |
| 528 | return IL_FALSE; |
| 529 | } |
| 530 | |
| 531 | if (iread(iCurImage->Pal.Palette, iCurImage->Pal.PalSize, 1) != 1) { |
| 532 | ifree(iCurImage->Pal.Palette); |
| 533 | iCurImage->Pal.Palette = NULL; |
| 534 | icloser(PltFile); |
| 535 | return IL_FALSE; |
| 536 | } |
| 537 | |
| 538 | icloser(PltFile); |
| 539 | |
| 540 | return IL_TRUE; |
| 541 | } |
| 542 | |
| 543 | |
| 544 | // Assumes that Dest has nothing in it. |
no test coverage detected