ILuint iGetActiveNum(ILenum Type) { ILimage *BaseImage; ILuint Num = 0; if (iCurImage == NULL) { ilSetError(IL_ILLEGAL_OPERATION); return 0; } BaseImage = iGetBaseImage(); if (BaseImage == iCurImage) return 0; switch (Type) { case IL_ACTIVE_IMAGE: BaseImage = BaseImage->Next; break; case IL_ACTIVE_MIPMAP: BaseImage = BaseImage->Mipmaps; break; case IL_ACTIVE_LAYER: BaseImage = BaseImage->Layers; break; } do { if (BaseImage == NULL) return 0; Num++; if (BaseImage == iCurImage) return Num; } while ((BaseImage = BaseImage->Next)); //ilSetError(IL_ILLEGAL_OPERATION); return 0; }
//! Internal function to figure out where we are in an image chain. //@TODO: This may get much more complex with mipmaps under faces, etc. ILAPI ILuint iGetActiveNum(ILenum Type) { ILimage *BaseImage; ILuint Num = 0; if (iCurImage == NULL) { il2SetError(IL_ILLEGAL_OPERATION); return 0; } BaseImage = iGetBaseImage(); if (BaseImage == iCurImage) return 0; switch (Type) { case IL_ACTIVE_IMAGE: BaseImage = BaseImage->Next; do { if (BaseImage == NULL) return 0; Num++; if (BaseImage == iCurImage) return Num; } while ((BaseImage = BaseImage->Next)); break; case IL_ACTIVE_MIPMAP: BaseImage = BaseImage->Mipmaps; do { if (BaseImage == NULL) return 0; Num++; if (BaseImage == iCurImage) return Num; } while ((BaseImage = BaseImage->Mipmaps)); break; /*case IL_ACTIVE_LAYER: BaseImage = BaseImage->Layers; do { if (BaseImage == NULL) return 0; Num++; if (BaseImage == iCurImage) return Num; } while ((BaseImage = BaseImage->Layers)); break;*/ case IL_ACTIVE_FACE: BaseImage = BaseImage->Faces; do { if (BaseImage == NULL) return 0; Num++; if (BaseImage == iCurImage) return Num; } while ((BaseImage = BaseImage->Faces)); break; } //@TODO: Any error needed here? return 0; }