MCPcopy Create free account
hub / github.com/DentonW/DevIL / ILAPIENTRY ilPushAttrib

Function ILAPIENTRY ilPushAttrib

DevIL/src-IL/src/il_states.cpp:766–863  ·  view source on GitHub ↗

Pushes the states indicated by Bits onto the state stack

Source from the content-addressed store, hash-verified

764
765//! Pushes the states indicated by Bits onto the state stack
766void ILAPIENTRY ilPushAttrib(ILuint Bits)
767{
768 // Should we check here to see if ilCurrentPos is negative?
769
770 if (ilCurrentPos >= IL_ATTRIB_STACK_MAX - 1) {
771 ilCurrentPos = IL_ATTRIB_STACK_MAX - 1;
772 ilSetError(IL_STACK_OVERFLOW);
773 return;
774 }
775
776 ilCurrentPos++;
777
778 // memcpy(&ilStates[ilCurrentPos], &ilStates[ilCurrentPos - 1], sizeof(IL_STATES));
779
780 ilDefaultStates();
781
782 if (Bits & IL_ORIGIN_BIT) {
783 ilStates[ilCurrentPos].ilOriginMode = ilStates[ilCurrentPos-1].ilOriginMode;
784 ilStates[ilCurrentPos].ilOriginSet = ilStates[ilCurrentPos-1].ilOriginSet;
785 }
786 if (Bits & IL_FORMAT_BIT) {
787 ilStates[ilCurrentPos].ilFormatMode = ilStates[ilCurrentPos-1].ilFormatMode;
788 ilStates[ilCurrentPos].ilFormatSet = ilStates[ilCurrentPos-1].ilFormatSet;
789 }
790 if (Bits & IL_TYPE_BIT) {
791 ilStates[ilCurrentPos].ilTypeMode = ilStates[ilCurrentPos-1].ilTypeMode;
792 ilStates[ilCurrentPos].ilTypeSet = ilStates[ilCurrentPos-1].ilTypeSet;
793 }
794 if (Bits & IL_FILE_BIT) {
795 ilStates[ilCurrentPos].ilOverWriteFiles = ilStates[ilCurrentPos-1].ilOverWriteFiles;
796 }
797 if (Bits & IL_PAL_BIT) {
798 ilStates[ilCurrentPos].ilAutoConvPal = ilStates[ilCurrentPos-1].ilAutoConvPal;
799 }
800 if (Bits & IL_LOADFAIL_BIT) {
801 ilStates[ilCurrentPos].ilDefaultOnFail = ilStates[ilCurrentPos-1].ilDefaultOnFail;
802 }
803 if (Bits & IL_COMPRESS_BIT) {
804 ilStates[ilCurrentPos].ilCompression = ilStates[ilCurrentPos-1].ilCompression;
805 }
806 if (Bits & IL_FORMAT_SPECIFIC_BIT) {
807 ilStates[ilCurrentPos].ilTgaCreateStamp = ilStates[ilCurrentPos-1].ilTgaCreateStamp;
808 ilStates[ilCurrentPos].ilJpgQuality = ilStates[ilCurrentPos-1].ilJpgQuality;
809 ilStates[ilCurrentPos].ilPngInterlace = ilStates[ilCurrentPos-1].ilPngInterlace;
810 ilStates[ilCurrentPos].ilTgaRle = ilStates[ilCurrentPos-1].ilTgaRle;
811 ilStates[ilCurrentPos].ilBmpRle = ilStates[ilCurrentPos-1].ilBmpRle;
812 ilStates[ilCurrentPos].ilSgiRle = ilStates[ilCurrentPos-1].ilSgiRle;
813 ilStates[ilCurrentPos].ilJpgFormat = ilStates[ilCurrentPos-1].ilJpgFormat;
814 ilStates[ilCurrentPos].ilDxtcFormat = ilStates[ilCurrentPos-1].ilDxtcFormat;
815 ilStates[ilCurrentPos].ilPcdPicNum = ilStates[ilCurrentPos-1].ilPcdPicNum;
816
817 ilStates[ilCurrentPos].ilPngAlphaIndex = ilStates[ilCurrentPos-1].ilPngAlphaIndex;
818
819 // Strings
820 if (ilStates[ilCurrentPos].ilTgaId)
821 ifree(ilStates[ilCurrentPos].ilTgaId);
822 if (ilStates[ilCurrentPos].ilTgaAuthName)
823 ifree(ilStates[ilCurrentPos].ilTgaAuthName);

Callers

nothing calls this directly

Calls 3

ilSetErrorFunction · 0.85
ilDefaultStatesFunction · 0.85
strdupFunction · 0.85

Tested by

no test coverage detected