/src/FreeImage/Source/Plugin.h
https://bitbucket.org/cabalistic/ogredeps/ · C++ Header · 142 lines · 72 code · 22 blank · 48 comment · 0 complexity · e05eb02a18c171912e9ffad1e1e61d0a MD5 · raw file
- // ==========================================================
- // FreeImage Plugin Interface
- //
- // Design and implementation by
- // - Floris van den Berg (flvdberg@wxs.nl)
- // - Rui Lopes (ruiglopes@yahoo.com)
- //
- // This file is part of FreeImage 3
- //
- // COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
- // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
- // THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
- // OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
- // CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
- // THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
- // SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
- // PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
- // THIS DISCLAIMER.
- //
- // Use at your own risk!
- // ==========================================================
- #ifdef _MSC_VER
- #pragma warning (disable : 4786) // identifier was truncated to 'number' characters
- #endif
- #ifndef PLUGIN_H
- #define PLUGIN_H
- #include "FreeImage.h"
- #include "Utilities.h"
- // ==========================================================
- struct Plugin;
- // =====================================================================
- // Plugin Node
- // =====================================================================
- FI_STRUCT (PluginNode) {
- /** FREE_IMAGE_FORMAT attached to this plugin */
- int m_id;
- /** Handle to a user plugin DLL (NULL for standard plugins) */
- void *m_instance;
- /** The actual plugin, holding the function pointers */
- Plugin *m_plugin;
- /** Enable/Disable switch */
- BOOL m_enabled;
- /** Unique format string for the plugin */
- const char *m_format;
- /** Description string for the plugin */
- const char *m_description;
- /** Comma separated list of file extensions indicating what files this plugin can open */
- const char *m_extension;
- /** optional regular expression to help software identifying a bitmap type */
- const char *m_regexpr;
- };
- // =====================================================================
- // Internal Plugin List
- // =====================================================================
- class PluginList {
- public :
- PluginList();
- ~PluginList();
- FREE_IMAGE_FORMAT AddNode(FI_InitProc proc, void *instance = NULL, const char *format = 0, const char *description = 0, const char *extension = 0, const char *regexpr = 0);
- PluginNode *FindNodeFromFormat(const char *format);
- PluginNode *FindNodeFromMime(const char *mime);
- PluginNode *FindNodeFromFIF(int node_id);
- int Size() const;
- BOOL IsEmpty() const;
- private :
- std::map<int, PluginNode *> m_plugin_map;
- int m_node_count;
- };
- // ==========================================================
- // Plugin Initialisation Callback
- // ==========================================================
- void DLL_CALLCONV FreeImage_OutputMessage(int fif, const char *message, ...);
- // =====================================================================
- // Reimplementation of stricmp (it is not supported on some systems)
- // =====================================================================
- int FreeImage_stricmp(const char *s1, const char *s2);
- // ==========================================================
- // Internal functions
- // ==========================================================
- extern "C" {
- BOOL DLL_CALLCONV FreeImage_Validate(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle);
- void * DLL_CALLCONV FreeImage_Open(PluginNode *node, FreeImageIO *io, fi_handle handle, BOOL open_for_reading);
- void DLL_CALLCONV FreeImage_Close(PluginNode *node, FreeImageIO *io, fi_handle handle, void *data); // plugin.cpp
- PluginList * DLL_CALLCONV FreeImage_GetPluginList(); // plugin.cpp
- }
- // ==========================================================
- // Internal plugins
- // ==========================================================
- void DLL_CALLCONV InitBMP(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitCUT(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitICO(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitIFF(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitJPEG(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitKOALA(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitLBM(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitMNG(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitPCD(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitPCX(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitPNG(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitPNM(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitPSD(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitRAS(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitTARGA(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitTIFF(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitWBMP(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitXBM(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitXPM(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitDDS(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitGIF(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitHDR(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitG3(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitSGI(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitEXR(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitJ2K(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitJP2(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitPFM(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitPICT(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitRAW(Plugin *plugin, int format_id);
- void DLL_CALLCONV InitJNG(Plugin *plugin, int format_id);
- #endif //!PLUGIN_H