среда, 26 августа 2009 г.

Интересняшки про Devil(Часть 1)

Вот встала необходимость изучать очень интересную библиотеку Devil (бывший OpenIL)
Туда сюда и вот одна интересняшка, стояла задача определить тип загруженного графического файла, ну по рылся, ну почухал репу. Думаю можно конечно при помощи взятия расширения файла определить тип файла, но не надежно это. Пошел рыть документацию по Devil рыл, рыл не чего не нарыл, думаю не фига себе лажа... Да и в русской части нета полная тишина по этому вопросу. Ох, да не может быть, что не придумали ни чего интересного эти разработчики. Решил порыться в исходника Devil'а и нашел вот каткие вот замечательные функции.
ILenum ilTypeFromExt(const ILstring FileName)
Вот как раз первая для любителей не изобретать велосипед и определяет тип графики по расширению.
ILenum ilDetermineType(const ILstring FileName)
А вот эта функция проверяет как раз более деталь то, что там находится и какого типа будет изображение.
А функции возвращают тип ILenum, который содержит ну очень много типов, вот маленький списочек часто используется:
IL_PNG – тип PNG
IL_BMP – тип BMP такой любимый мелкомягкими в свое время.
IL_TGA – тип TGA
В общем можно продолжать, ну это уже есть в документации.
А вот маленький кодик для как это счастье юзать:
ILenum ImgType = ilDetermineType(FileName.c_str());
if((ImgType == IL_PNG) || (ImgType = IL_BMP)){
if(iluFlipImage() == IL_FALSE)
throw TBaseException(FormatWStr(L"TDevGLTextureLoader:Mask -> can't flip image \"%s\"" , FileName.c_str()))
Вот и удачи всем.