00001
00002
00003
00004
00009 #ifndef IMPROV_PLUGIN_H
00010 #define IMPROV_PLUGIN_H
00011
00012 #ifdef HAVE_CONFIG_H
00013 #include <config.h>
00014 #endif
00015
00016 #include "FW/labImage.h"
00017
00018 #define WHITE 255
00019 #define BLACK 0
00020
00021 #ifndef MAX
00022
00025 #define MAX(a,b) (a>b?a:b)
00026 #endif
00027
00028 #ifndef MIN
00029
00032 #define MIN(a,b) ((a)>=(b)?(b):(a))
00033 #endif
00034
00035 #ifndef _BYTE
00036 #define _BYTE
00037 typedef unsigned char BYTE;
00038 #endif
00039
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043
00048 typedef enum {
00049 TEXT,
00050 INT,
00051 FLOAT,
00052 NORESULT
00053 } pluginResultType;
00054
00058 typedef enum {
00059 WRONGFORMAT,
00060 TOOLARGE,
00061 NOERROR
00062 } pluginReturnType;
00063
00067 typedef struct {
00069 short x;
00071 short y;
00072 } Point;
00073
00077 typedef struct {
00079 short x1, y1;
00081 short x2, y2;
00082 } Window;
00083
00085 typedef void* IP_Handle;
00086
00092 typedef struct {
00094 const char* Category;
00096 const char* Operation;
00098 int Index;
00100 int InputCount;
00102 unsigned long ParamCount;
00104 char** ParamNames;
00108 pluginResultType resultType;
00112 size_t resultSize;
00116 pluginReturnType (*process)(IP_Handle instance, Picture **in, Picture *out, float *params, void *result);
00117
00118 } IP_Op;
00119
00125 typedef struct {
00127 unsigned long UniqueId;
00129 const char* Name;
00131 const char* Maker;
00133 const char* Copyright;
00135 const char* Comment;
00137 unsigned long OpCount;
00139 IP_Op* Ops;
00140
00141 } IP_Descriptor;
00142
00147 IP_Handle IP_init(void);
00149 const IP_Descriptor* IP_Descriptor_get(unsigned long Index);
00151 typedef const IP_Descriptor* (*IP_Descriptor_Function)(unsigned long Index);
00152
00153 #ifdef __cplusplus
00154 }
00155 #endif
00156
00157 #endif // #ifndef IMPROV_PLUGIN_H
00158