00001
00025 #ifndef OCRCLASS_H
00026 #define OCRCLASS_H
00027
00028 #include <time.h>
00029 #ifdef __MSW32__
00030 #include <windows.h>
00031 #endif
00032 #include "host.h"
00033
00034
00035 #define MAX_FONT_NAME 34
00036 #define MAX_OCR_NAME 32
00037 #define MAX_OCR_VERSION 17
00038
00039
00040 #define MIN_IMAGE_SIZE 64
00041 #define IMAGE_ROUNDING 32
00042
00043 #if defined(__SLOW_TIMES__)
00044
00045 #define STARTUP_TIMEOUT 100
00046 #define SHUTDOWN_TIMEOUT 50
00047 #define SENDIM_TIMEOUT 50
00048 #define RELEASE_TIMEOUT 50
00049 #define READIM_TIMEOUT 100
00050 #define READTEXT_TIMEOUT 50
00051 #define PROGRESS_TIMEOUT 30
00052 #define BADTIMES_TIMEOUT 7
00053 #else
00054
00055 #define STARTUP_TIMEOUT 10
00056 #define SHUTDOWN_TIMEOUT 6
00057 #define SENDIM_TIMEOUT 5
00058 #define RELEASE_TIMEOUT 5
00059 #define READIM_TIMEOUT 10
00060 #define READTEXT_TIMEOUT 5
00061 #define PROGRESS_TIMEOUT 3
00062 #define BADTIMES_TIMEOUT 7
00063 #endif
00064
00065
00066 #define LANGE_NONE 0x0400
00067 #define LANGE_ALBANIAN 0x041c
00068 #define LANGE_BRITISH 0x0809
00069 #define LANGE_BULGARIAN 0x0402
00070 #define LANGE_CROATIAN 0x041a
00071 #define LANGE_CZECH 0x0405
00072 #define LANGE_DANISH 0x0406
00073 #define LANGE_DUTCH 0x0413
00074 #define LANGE_FINNISH 0x040b
00075 #define LANGE_FRENCH 0x040c
00076 #define LANGE_GERMAN 0x0407
00077 #define LANGE_GREEK 0x0408
00078 #define LANGE_HUNGARIAN 0x040e
00079 #define LANGE_ITALIAN 0x0410
00080 #define LANGE_JAPANESE 0x0411
00081 #define LANGE_KOREAN 0x0412
00082 #define LANGE_NORWEGIAN 0x0414
00083 #define LANGE_POLISH 0x0415
00084 #define LANGE_PORTUGESE 0x0416
00085 #define LANGE_ROMANIAN 0x0418
00086 #define LANGE_RUSSIAN 0x0419
00087 #define LANGE_SCHINESE 0x0804
00088 #define LANGE_SLOVAK 0x041b
00089 #define LANGE_SPANISH 0x040a
00090 #define LANGE_SWEDISH 0x041d
00091 #define LANGE_TCHINESE 0x0404
00092 #define LANGE_TURKISH 0x041f
00093 #define LANGE_USENGLISH 0x0409
00094
00095
00096 #define FFAM_NONE 0
00097 #define FFAM_ROMAN 1
00098 #define FFAM_SWISS 2
00099 #define FFAM_MODERN 3
00100
00101
00102 #define CHSET_ANSI 0
00103 #define CHSET_SHIFT_JIS 128
00104 #define CHSET_KOREAN 129
00105 #define CHSET_SCHINESE 134
00106 #define CHSET_BIG5 136
00107 #define CHSET_CYRILLIC 204
00108 #define CHSET_EEUROPE 238
00109
00110
00111 #define PITCH_DEF 0
00112 #define PITCH_FIXED 1
00113 #define PITCH_VAR 2
00114
00115
00116
00117 #define EUC_BOLD 1
00118 #define EUC_ITALIC 2
00119 #define EUC_UNDERLINE 4
00120 #define EUC_SUBSCRIPT 8
00121 #define EUC_SUPERSCRIPT 16
00122
00127 enum OCR_CHAR_DIRECTION
00128 {
00129 OCR_CDIR_RIGHT_LEFT,
00130 OCR_CDIR_LEFT_RIGHT,
00131 OCR_CDIR_TOP_BOTTOM,
00132 OCR_CDIR_BOTTOM_TOP
00133 };
00134
00139 enum OCR_LINE_DIRECTION
00140 {
00141 OCR_LDIR_DOWN_RIGHT,
00142
00143 OCR_LDIR_UP_LEFT
00144 };
00145
00150 enum OCR_NEWLINE_TYPE
00151 {
00152 OCR_NL_NONE,
00153 OCR_NL_NEWLINE,
00154 OCR_NL_NEWPARA
00155 };
00156
00157
00158 #define OCR_API_NO_MEM (-2)
00159 #define OCR_API_BAD_CHAR (-3)
00160 #define OCR_API_BAD_STATE (-4)
00161
00166 enum OCR_ERR_CODE
00167 {
00168 OCR_ERR_NONE,
00169 OCR_ERR_CLEAN_EXIT,
00170 OCR_ERR_NO_MEM,
00171 OCR_ERR_FILE_READ,
00172 OCR_ERR_TMP_WRITE,
00173 OCR_ERR_TMP_READ,
00174 OCR_ERR_BAD_DLL,
00175 OCR_ERR_BAD_EXE,
00176 OCR_ERR_BAD_LOAD,
00177 OCR_ERR_BAD_LANG,
00178 OCR_ERR_BAD_STATE,
00179 OCR_ERR_INTERNAL1,
00180 OCR_ERR_INTERNAL2,
00181 OCR_ERR_INTERNAL3,
00182 OCR_ERR_INTERNAL4,
00183 OCR_ERR_INTERNAL5,
00184 OCR_ERR_INTERNAL6,
00185 OCR_ERR_INTERNAL7,
00186 OCR_ERR_INTERNAL8,
00187 OCR_ERR_TIMEOUT
00188 };
00189
00198 typedef struct
00199 {
00200 UINT16 language;
00201 UINT8 font_family;
00202 UINT8 char_set;
00203 UINT8 pitch;
00204 INT8 name[MAX_FONT_NAME + 1];
00205 } EFONT_DESC;
00206
00216 typedef struct
00217 {
00218 INT32 protocol;
00219 UINT32 font_count;
00220 UINT16 language;
00221 UINT16 name[MAX_OCR_NAME + 1];
00222
00223 UINT16 version[MAX_OCR_VERSION + 1];
00224 EFONT_DESC fonts[1];
00225 } EOCR_DESC;
00226
00238 typedef struct
00239 {
00240 INT16 x_size;
00241 INT16 y_size;
00242 INT16 strip_size;
00243 INT16 resolution;
00244 UINT8 data[8];
00245 } ESTRIP_DESC;
00246
00276 typedef struct
00277 {
00278 UINT16 char_code;
00279 INT16 left;
00280 INT16 right;
00281 INT16 top;
00282 INT16 bottom;
00283 INT16 font_index;
00284 UINT8 confidence;
00285 UINT8 point_size;
00286 INT8 blanks;
00287 UINT8 formatting;
00288 } EANYCODE_CHAR;
00289
00290 typedef bool (*CANCEL_FUNC)(void* cancel_this, int words);
00310 typedef struct
00311 {
00312 INT16 count;
00313 INT16 progress;
00314 INT8 more_to_come;
00315 INT8 ocr_alive;
00316 INT8 err_code;
00317 CANCEL_FUNC cancel;
00318 void* cancel_this;
00319 clock_t end_time;
00320 EANYCODE_CHAR text[1];
00321 } ETEXT_DESC;
00322
00323 #ifdef __MSW32__
00324
00329 typedef struct
00330 {
00331 HANDLE shm_hand;
00332 HANDLE mutex;
00333 HANDLE ocr_sem;
00334 HANDLE hp_sem;
00335 void *shm_mem;
00336 INT32 shm_size;
00337 } ESHM_INFO;
00338 #elif defined (__MAC__)
00339
00344 typedef struct
00345 {
00346 Boolean mutex;
00347 Boolean ocr_sem;
00348 Boolean hp_sem;
00349 void *shm_mem;
00350 INT32 shm_size;
00351 INT16 language;
00352
00353
00354 ProcessSerialNumber IPEProcess;
00355 ProcessSerialNumber OCRProcess;
00356 } ESHM_INFO;
00357 #elif defined (__UNIX__)
00358
00367 typedef struct
00368 {
00369 void *shm_mem;
00370 INT32 shm_size;
00371 } ESHM_INFO;
00372 #endif
00373 #endif