C Library Reference
Distribution
The following items are included into the Imago C shared library:
imago.h– C header fileshared/<System>/<Subsystem>/imago_c.{dll,so,dylib}– dynamic library appropriate for your platform (supported Windows, Linux and Mac OS X, 32-bit and 64-bit)dist/shared/msvcr100.dll,dist/shared/msvcp100.dll– CRT dependencies (only in Windows distribution)
Interface
The function headers from imago.h:
/* All functions return 0 on error, and a nonzero value on success */ /* Imago library acts as a state machine. * You can use multiple Imago instances simultaneously, using the * 'session ID-s' (see below). It is obligatory to allocate at least one * instance to get Imago library work properly. */ /* Get the version of Imago.*/ CEXPORT const char *imagoGetVersion(); /* Get the last error message. * This can be called if some other function returned zero value. */ CEXPORT const char *imagoGetLastError(); /* Allocate an instance. All instances are independent, that is, * they have separate images, configurations settings, resulting * molfiles, and error messages. * Using Imago library without allocation an instance will cause an error. */ CEXPORT qword imagoAllocSessionId(); /* Set the ID of the instance you are working with from current thread. */ CEXPORT void imagoSetSessionId( qword id ); /* Release a previously allocated instance. */ CEXPORT void imagoReleaseSessionId( qword id ); /* Set one of predefined configuration sets. * The given name should be selected from imagoGetConfigsList() results * Empty string as parameter means config auto-detection. */ CEXPORT int imagoSetConfig( const char *name ); /* Get the list of available predefined configuration sets separated by comma. */ CEXPORT const char* imagoGetConfigsList(); /* Choose the filter to process image before call imagoFilterImage() * name can be "prefilter_binarized", "prefilter_basic", or something else. * For the exact information see the filters_list.cpp file. * By default, filter from current config will be used. */ CEXPORT int imagoSetFilter( const char *name ); /* Image loading functions. */ CEXPORT int imagoLoadImageFromBuffer( const char *buf, const int buf_size ); CEXPORT int imagoLoadImageFromFile( const char *FileName ); /* PNG image saving function. */ CEXPORT int imagoSaveImageToFile( const char *FileName ); /* Load raw grayscale image - byte array of length width*height. */ CEXPORT int imagoLoadGreyscaleRawImage( const char *buf, const int width, const int height ); /* Enable or disable global log printing */ /* Modes are: 0 - disabled, 1 - enable log to file, 2 - enable log to virtual fs*/ /* WARNING: affects all threads/IDS */ CEXPORT int imagoSetLogging( int mode ); /* Attach some arbitrary data to the current Imago instance. */ CEXPORT int imagoSetSessionSpecificData( void *data ); CEXPORT int imagoGetSessionSpecificData( void **data ); /* Main recognition routine. Image must be loaded & filtered previously. Returns count of recognition warnings in warningsCountDataOut value (if specified) */ CEXPORT int imagoRecognize( int *warningsCountDataOut /* = NULL */); /* Molfile (.mol) output functions. */ CEXPORT int imagoSaveMolToBuffer( char **buf, int *buf_size ); CEXPORT int imagoSaveMolToFile( const char *fileName ); /* Process image filtering. */ CEXPORT int imagoFilterImage(); /* Returns filtered image ink percentage (0.0 .. 1.0) */ CEXPORT int imagoGetInkPercentage( double *result ); /* returns filtered image dimensions */ CEXPORT int imagoGetPrefilteredImageSize( int *width, int *height ); /* returns filtered image data */ CEXPORT int imagoGetPrefilteredImage( unsigned char **data, int *width, int *height ); /* returns count of files contained in log vfs. */ CEXPORT int imagoGetLogCount( int *count ); /* returns it's file name, length and content */ CEXPORT int imagoGetLogRecord( int it, char **filename, int *lengths, char **data ); /* clears all current vfs log content */ CEXPORT int imagoClearLog();
The correct API functions calling order is:
imagoAllocSessionId()
imagoSetSessionId(id)
imagoLoadImageFromFile() / imagoLoadImageFromBuffer / imagoLoadGreyscaleRawImage
imagoSetFilter() [optional]
imagoFilterImage()
imagoSetConfig() [optional]
imagoRecognize()
imagoSaveMolToFile() / imagoSaveMolToBuffer()
imagoReleaseSessionId(id)