mirror of
https://github.com/love2d/megasource.git
synced 2026-08-16 00:02:15 +02:00
Add DevIL 1.7.8.
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
#ifdef _DEBUG
|
||||
#define IL_DEBUG
|
||||
#endif//_DEBUG
|
||||
|
||||
#include <IL/il.h>
|
||||
#include <windows.h>
|
||||
#include <direct.h>
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
TCHAR *ImageExtArray[] =
|
||||
{
|
||||
L"jpe", L"jpg", L"jpeg",
|
||||
L"bmp",
|
||||
L"ico",
|
||||
L"pbm", L"pgm", L"pnm", L"ppm",
|
||||
L"png",
|
||||
L"bw", L"rgb", L"rgba", L"sgi",
|
||||
L"tga", L"tif", L"tiff",
|
||||
L"pcx",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
void ParseDirs(const string &_Dir, char **ExtList, char *ConvExt, bool Recurse);
|
||||
bool IsDir(WIN32_FIND_DATA *_Data);
|
||||
char *GetExtension(const char *FileName);
|
||||
bool CheckExtension(char *Arg, char *Ext);
|
||||
|
||||
|
||||
TCHAR *Ext;
|
||||
string NewExt;
|
||||
int i, j;
|
||||
|
||||
|
||||
//void BatchConv(TCHAR *Directory, TCHAR *ExtList, TCHAR *ConvExt, bool Recurse)
|
||||
//{
|
||||
// ILuint Id, OrigId;
|
||||
// ilGenImages(1, &Id);
|
||||
// OrigId = ilGetInteger(IL_CUR_IMAGE);
|
||||
// ilBindImage(Id);
|
||||
// if (ExtList == NULL)
|
||||
// ParseDirs(string(Directory), ImageExtArray, ConvExt, Recurse);
|
||||
// else {
|
||||
// /*char **List = ConvertExtList(ExtList);
|
||||
// ParseDirs(string(Directory), ConvertExtList(ExtList), ConvExt, Recurse);
|
||||
// DestroyExtList(List);*/
|
||||
// }
|
||||
// ilDeleteImages(1, &Id);
|
||||
// ilBindImage(OrigId);
|
||||
// return;
|
||||
//}
|
||||
//
|
||||
//
|
||||
//void ParseDirs(const string &_Dir, TCHAR **ExtList, TCHAR *ConvExt, bool Recurse)
|
||||
//{
|
||||
// HANDLE Search;
|
||||
// WIN32_FIND_DATA FindData;
|
||||
//
|
||||
// _chdir(_Dir.c_str());
|
||||
// Search = FindFirstFile("*.*", &FindData);
|
||||
//
|
||||
// do {
|
||||
// if (!strcmp(FindData.cFileName, ".") || !strcmp(FindData.cFileName, ".."))
|
||||
// continue;
|
||||
// if (IsDir(&FindData) && Recurse) {
|
||||
// _chdir(FindData.cFileName);
|
||||
// string NewDir = _Dir + string("\\");
|
||||
// NewDir += FindData.cFileName;
|
||||
// ParseDirs(NewDir, ExtList, ConvExt, Recurse);
|
||||
// _chdir("..");
|
||||
// }
|
||||
// Ext = GetExtension(FindData.cFileName);
|
||||
// if (Ext == NULL)
|
||||
// continue;
|
||||
// if (!_stricmp(Ext, ConvExt)) // Already has that extension.
|
||||
// continue;
|
||||
// for (j = 0; ExtList[j] != NULL; j++) {
|
||||
// if (CheckExtension(FindData.cFileName, ExtList[j])) {
|
||||
// string NewName;
|
||||
// for (i = 0; i < Ext - FindData.cFileName; i++) {
|
||||
// NewName += FindData.cFileName[i];
|
||||
// }
|
||||
// NewName += ConvExt;
|
||||
// if (!ilLoadImage(FindData.cFileName))
|
||||
// break;
|
||||
// ilSaveImage((TCHAR*)NewName.c_str());
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// } while (FindNextFile(Search, &FindData));
|
||||
//
|
||||
// FindClose(Search);
|
||||
// return;
|
||||
//}
|
||||
//
|
||||
//
|
||||
//// Is the file actually a directory?
|
||||
//bool IsDir(WIN32_FIND_DATA *_Data)
|
||||
//{
|
||||
// if (_Data->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
// return true;
|
||||
// return false;
|
||||
//}
|
||||
|
||||
|
||||
TCHAR *GetExtension(const TCHAR *FileName)
|
||||
{
|
||||
bool PeriodFound = false;
|
||||
TCHAR *Ext = (TCHAR*)FileName;
|
||||
long i, Len = (long)wcslen(FileName);
|
||||
|
||||
if (FileName == NULL || !Len) // if not a good filename/extension, exit early
|
||||
return NULL;
|
||||
|
||||
Ext += Len; // start at the end
|
||||
|
||||
for (i = Len; i >= 0; i--) {
|
||||
if (*Ext == '.') { // try to find a period
|
||||
PeriodFound = true;
|
||||
break;
|
||||
}
|
||||
Ext--;
|
||||
}
|
||||
|
||||
if (!PeriodFound) // if no period, no extension
|
||||
return NULL;
|
||||
|
||||
return Ext+1;
|
||||
}
|
||||
|
||||
|
||||
// Simple function to test if a filename has a given extension, disregarding case
|
||||
bool CheckExtension(TCHAR *Arg, TCHAR *Ext)
|
||||
{
|
||||
bool PeriodFound = false;
|
||||
TCHAR *Argu = Arg; // pointer to arg so we don't destroy arg
|
||||
unsigned int i;
|
||||
|
||||
if (Arg == NULL || Ext == NULL || !wcslen(Arg) || !wcslen(Ext)) // if not a good filename/extension, exit early
|
||||
return false;
|
||||
|
||||
Argu += wcslen(Arg); // start at the end
|
||||
|
||||
|
||||
for (i = (int)wcslen(Arg); i >= 0; i--) {
|
||||
if (*Argu == '.') { // try to find a period
|
||||
PeriodFound = true;
|
||||
break;
|
||||
}
|
||||
Argu--;
|
||||
}
|
||||
|
||||
if (!PeriodFound) // if no period, no extension
|
||||
return false;
|
||||
|
||||
if (!_wcsicmp(Argu+1, Ext)) // extension and ext match?
|
||||
return true;
|
||||
|
||||
return false; // if all else fails, return IL_FALSE
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user