134 lines
5.2 KiB
C++
134 lines
5.2 KiB
C++
// ==========================================================
|
|
// 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) {
|
|
int m_id;
|
|
void *m_instance;
|
|
Plugin *m_plugin;
|
|
PluginNode *m_next;
|
|
BOOL m_enabled;
|
|
|
|
const char *m_format;
|
|
const char *m_description;
|
|
const char *m_extension;
|
|
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);
|
|
|
|
#endif //!PLUGIN_H
|