Alien-FreeImage
view release on metacpan or search on metacpan
src/Source/FreeImage/Plugin.cpp view on Meta::CPAN
return (FREE_IMAGE_FORMAT)i;
} else {
// make a copy of the extension list and split it
char *copy = (char *)malloc(strlen(FreeImage_GetFIFExtensionList((FREE_IMAGE_FORMAT)i)) + 1);
memset(copy, 0, strlen(FreeImage_GetFIFExtensionList((FREE_IMAGE_FORMAT)i)) + 1);
memcpy(copy, FreeImage_GetFIFExtensionList((FREE_IMAGE_FORMAT)i), strlen(FreeImage_GetFIFExtensionList((FREE_IMAGE_FORMAT)i)));
// get the first token
char *token = strtok(copy, ",");
while (token != NULL) {
if (FreeImage_stricmp(token, extension) == 0) {
free(copy);
return (FREE_IMAGE_FORMAT)i;
}
token = strtok(NULL, ",");
}
// free the copy of the extension list
free(copy);
}
}
}
}
return FIF_UNKNOWN;
}
FREE_IMAGE_FORMAT DLL_CALLCONV
FreeImage_GetFIFFromFilenameU(const wchar_t *filename) {
#ifdef _WIN32
if (filename == NULL) return FIF_UNKNOWN;
// get the proper extension if we received a filename
wchar_t *place = wcsrchr((wchar_t *)filename, '.');
if (place == NULL) return FIF_UNKNOWN;
// convert to single character - no national chars in extensions
char *extension = (char *)malloc(wcslen(place)+1);
unsigned int i=0;
for(; i < wcslen(place); i++) // convert 16-bit to 8-bit
extension[i] = (char)(place[i] & 0x00FF);
// set terminating 0
extension[i]=0;
FREE_IMAGE_FORMAT fRet = FreeImage_GetFIFFromFilename(extension);
free(extension);
return fRet;
#else
return FIF_UNKNOWN;
#endif // _WIN32
}
BOOL DLL_CALLCONV
FreeImage_Validate(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle) {
if (s_plugins != NULL) {
BOOL validated = FALSE;
PluginNode *node = s_plugins->FindNodeFromFIF(fif);
if (node) {
long tell = io->tell_proc(handle);
validated = (node != NULL) ? (node->m_enabled) ? (node->m_plugin->validate_proc != NULL) ? node->m_plugin->validate_proc(io, handle) : FALSE : FALSE : FALSE;
io->seek_proc(handle, tell, SEEK_SET);
}
return validated;
}
return FALSE;
}
( run in 0.378 second using v1.01-cache-2.11-cpan-d7f47b0818f )