Converts the palette to the DestFormat format.
| 585 | |
| 586 | // Converts the palette to the DestFormat format. |
| 587 | ILAPI ILpal* ILAPIENTRY iConvertPal(ILpal *Pal, ILenum DestFormat) |
| 588 | { |
| 589 | ILpal *NewPal = NULL; |
| 590 | ILuint i, j, NewPalSize; |
| 591 | |
| 592 | // Checks to see if the current image is valid and has a palette |
| 593 | if (Pal == NULL || Pal->PalSize == 0 || Pal->Palette == NULL || Pal->PalType == IL_PAL_NONE) { |
| 594 | ilSetError(IL_ILLEGAL_OPERATION); |
| 595 | return NULL; |
| 596 | } |
| 597 | |
| 598 | /*if (Pal->PalType == DestFormat) { |
| 599 | return NULL; |
| 600 | }*/ |
| 601 | |
| 602 | NewPal = (ILpal*)ialloc(sizeof(ILpal)); |
| 603 | if (NewPal == NULL) { |
| 604 | return NULL; |
| 605 | } |
| 606 | NewPal->PalSize = Pal->PalSize; |
| 607 | NewPal->PalType = Pal->PalType; |
| 608 | |
| 609 | switch (DestFormat) |
| 610 | { |
| 611 | case IL_PAL_RGB24: |
| 612 | case IL_PAL_BGR24: |
| 613 | switch (Pal->PalType) |
| 614 | { |
| 615 | case IL_PAL_RGB24: |
| 616 | NewPal->Palette = (ILubyte*)ialloc(Pal->PalSize); |
| 617 | if (NewPal->Palette == NULL) |
| 618 | goto alloc_error; |
| 619 | if (DestFormat == IL_PAL_BGR24) { |
| 620 | j = ilGetBppPal(Pal->PalType); |
| 621 | for (i = 0; i < Pal->PalSize; i += j) { |
| 622 | NewPal->Palette[i] = Pal->Palette[i+2]; |
| 623 | NewPal->Palette[i+1] = Pal->Palette[i+1]; |
| 624 | NewPal->Palette[i+2] = Pal->Palette[i]; |
| 625 | } |
| 626 | } |
| 627 | else { |
| 628 | memcpy(NewPal->Palette, Pal->Palette, Pal->PalSize); |
| 629 | } |
| 630 | NewPal->PalType = DestFormat; |
| 631 | break; |
| 632 | |
| 633 | case IL_PAL_BGR24: |
| 634 | NewPal->Palette = (ILubyte*)ialloc(Pal->PalSize); |
| 635 | if (NewPal->Palette == NULL) |
| 636 | goto alloc_error; |
| 637 | if (DestFormat == IL_PAL_RGB24) { |
| 638 | j = ilGetBppPal(Pal->PalType); |
| 639 | for (i = 0; i < Pal->PalSize; i += j) { |
| 640 | NewPal->Palette[i] = Pal->Palette[i+2]; |
| 641 | NewPal->Palette[i+1] = Pal->Palette[i+1]; |
| 642 | NewPal->Palette[i+2] = Pal->Palette[i]; |
| 643 | } |
| 644 | } |
nothing calls this directly
no test coverage detected