#ifndef WOLFRAMIMAGELIBRARY_H
#define WOLFRAMIMAGELIBRARY_H
#include "WolframLibrary.h"
#if !(defined(MATHEMATICA_KERNEL) || defined(MATHEMATICA_RUNTIME))
typedef signed char raw_t_bit;
typedef unsigned char raw_t_ubit8;
typedef unsigned short raw_t_ubit16;
typedef float raw_t_real32;
typedef double raw_t_real64;
#endif
#ifdef __cplusplus
extern "C" {
#endif
enum MImage_Data_Type {
MImage_Type_Undef = -1,
MImage_Type_Bit,
MImage_Type_Bit8,
MImage_Type_Bit16,
MImage_Type_Real32,
MImage_Type_Real
};
typedef enum MImage_Data_Type imagedata_t;
enum MImage_CS_Type {
MImage_CS_Undef = -1,
MImage_CS_Gray,
MImage_CS_RGB,
MImage_CS_HSB,
MImage_CS_CMYK,
MImage_CS_XYZ,
MImage_CS_LUV,
MImage_CS_LAB,
MImage_CS_LCH,
MImage_CS_Automatic
};
typedef enum MImage_CS_Type colorspace_t;
typedef struct st_WolframImageLibrary_Functions
{
int (*MImage_new2D)(mint , mint , mint , imagedata_t , colorspace_t , mbool , MImage * );
int (*MImage_new3D)(mint , mint , mint , mint , imagedata_t , colorspace_t , mbool , MImage * );
int (*MImage_clone)(MImage, MImage *);
void (*MImage_free)(MImage);
void (*MImage_disown)(MImage);
void (*MImage_disownAll)(MImage);
mint (*MImage_shareCount)(MImage);
imagedata_t (*MImage_getDataType)(MImage);
mint (*MImage_getRowCount)(MImage);
mint (*MImage_getColumnCount)(MImage);
mint (*MImage_getSliceCount)(MImage);
mint (*MImage_getRank)(MImage);
mint (*MImage_getChannels)(MImage);
mbool (*MImage_alphaChannelQ)(MImage);
mbool (*MImage_interleavedQ)(MImage);
colorspace_t (*MImage_getColorSpace)(MImage);
mint (*MImage_getFlattenedLength)(MImage);
int (*MImage_getBit)(MImage , mint * , mint , raw_t_bit * );
int (*MImage_getByte)(MImage , mint * , mint , raw_t_ubit8 * );
int (*MImage_getBit16)(MImage , mint * , mint , raw_t_ubit16 * );
int (*MImage_getReal32)(MImage , mint * , mint , raw_t_real32 * );
int (*MImage_getReal)(MImage , mint * , mint , raw_t_real64 * );
int (*MImage_setBit)(MImage , mint * , mint , raw_t_bit );
int (*MImage_setByte)(MImage , mint * , mint , raw_t_ubit8 );
int (*MImage_setBit16)(MImage , mint * , mint , raw_t_ubit16 );
int (*MImage_setReal32)(MImage , mint * , mint , raw_t_real32 );
int (*MImage_setReal)(MImage , mint * , mint , raw_t_real64 );
void *(*MImage_getRawData)(MImage);
raw_t_bit* (*MImage_getBitData)(MImage);
raw_t_ubit8* (*MImage_getByteData)(MImage);
raw_t_ubit16* (*MImage_getBit16Data)(MImage);
raw_t_real32* (*MImage_getReal32Data)(MImage);
raw_t_real64* (*MImage_getRealData)(MImage);
MImage (*MImage_convertType)(MImage, imagedata_t , mbool );
} *WolframImageLibrary_Functions;
#ifdef __cplusplus
}
#endif
#endif