Alien-FreeImage
view release on metacpan or search on metacpan
src/Source/FreeImage/Plugin.cpp view on Meta::CPAN
return (*i).second;
}
}
}
return NULL;
}
PluginNode *
PluginList::FindNodeFromFIF(int node_id) {
map<int, PluginNode *>::iterator i = m_plugin_map.find(node_id);
if (i != m_plugin_map.end()) {
return (*i).second;
}
return NULL;
}
int
PluginList::Size() const {
return (int)m_plugin_map.size();
}
BOOL
PluginList::IsEmpty() const {
return m_plugin_map.empty();
}
PluginList::~PluginList() {
for (map<int, PluginNode *>::iterator i = m_plugin_map.begin(); i != m_plugin_map.end(); ++i) {
#ifdef _WIN32
if ((*i).second->m_instance != NULL) {
FreeLibrary((HINSTANCE)(*i).second->m_instance);
}
#endif
delete (*i).second->m_plugin;
delete ((*i).second);
}
}
// =====================================================================
// Retrieve a pointer to the plugin list container
// =====================================================================
PluginList * DLL_CALLCONV
FreeImage_GetPluginList() {
return s_plugins;
}
// =====================================================================
// Plugin System Initialization
// =====================================================================
void DLL_CALLCONV
FreeImage_Initialise(BOOL load_local_plugins_only) {
if (s_plugin_reference_count++ == 0) {
/*
Note: initialize all singletons here
in order to avoid race conditions with multi-threading
*/
// initialise the TagLib singleton
TagLib& s = TagLib::instance();
// internal plugin initialization
s_plugins = new(std::nothrow) PluginList;
if (s_plugins) {
/* NOTE :
The order used to initialize internal plugins below MUST BE the same order
as the one used to define the FREE_IMAGE_FORMAT enum.
*/
s_plugins->AddNode(InitBMP);
s_plugins->AddNode(InitICO);
s_plugins->AddNode(InitJPEG);
s_plugins->AddNode(InitJNG);
s_plugins->AddNode(InitKOALA);
s_plugins->AddNode(InitIFF);
s_plugins->AddNode(InitMNG);
s_plugins->AddNode(InitPNM, NULL, "PBM", "Portable Bitmap (ASCII)", "pbm", "^P1");
s_plugins->AddNode(InitPNM, NULL, "PBMRAW", "Portable Bitmap (RAW)", "pbm", "^P4");
s_plugins->AddNode(InitPCD);
s_plugins->AddNode(InitPCX);
s_plugins->AddNode(InitPNM, NULL, "PGM", "Portable Greymap (ASCII)", "pgm", "^P2");
s_plugins->AddNode(InitPNM, NULL, "PGMRAW", "Portable Greymap (RAW)", "pgm", "^P5");
s_plugins->AddNode(InitPNG);
s_plugins->AddNode(InitPNM, NULL, "PPM", "Portable Pixelmap (ASCII)", "ppm", "^P3");
s_plugins->AddNode(InitPNM, NULL, "PPMRAW", "Portable Pixelmap (RAW)", "ppm", "^P6");
s_plugins->AddNode(InitRAS);
s_plugins->AddNode(InitTARGA);
s_plugins->AddNode(InitTIFF);
s_plugins->AddNode(InitWBMP);
s_plugins->AddNode(InitPSD);
s_plugins->AddNode(InitCUT);
s_plugins->AddNode(InitXBM);
s_plugins->AddNode(InitXPM);
s_plugins->AddNode(InitDDS);
s_plugins->AddNode(InitGIF);
s_plugins->AddNode(InitHDR);
s_plugins->AddNode(InitG3);
s_plugins->AddNode(InitSGI);
s_plugins->AddNode(InitEXR);
s_plugins->AddNode(InitJ2K);
s_plugins->AddNode(InitJP2);
s_plugins->AddNode(InitPFM);
s_plugins->AddNode(InitPICT);
s_plugins->AddNode(InitRAW);
s_plugins->AddNode(InitWEBP);
#if !(defined(_MSC_VER) && (_MSC_VER <= 1310))
s_plugins->AddNode(InitJXR);
#endif // unsupported by MS Visual Studio 2003 !!!
// external plugin initialization
#ifdef _WIN32
if (!load_local_plugins_only) {
int count = 0;
char buffer[MAX_PATH + 200];
( run in 1.179 second using v1.01-cache-2.11-cpan-5a3173703d6 )