www.pudn.com > VOBSUB.rar > ocrdll.h


#include  
 
#define SETOFIMG void 
#define IMG void 
 
enum {OM_TEXT, OM_RICHTEXT}; 
 
enum {OT_TEXT, OT_PROP, OT_ITAL, OT_UNDS, OT_SIZE=5, OT_HILT, OT_ENDL, OT_ENDZ, OT_BITM}; 
 
typedef void (*OCRErrorHandler)(void); // parameters unknown 
typedef void (*OCROutputHandler)(int event, int param); 
typedef int (*OCRProgressHandler)(int percent); 
typedef void (*OCRWarningHandler)(void); // parameters unknown 
 
typedef	int (*AddDIBProc)(SETOFIMG * set, HGLOBAL hDib); 
typedef	int (*AddImageProc)(SETOFIMG * set, IMG * image); 
typedef	SETOFIMG * (*CreateMultipleImgProc)(); 
typedef	void (*DelImageProc)(SETOFIMG * set, int index); 
typedef	int (*DeskewImgProc)(IMG * img); 
typedef	IMG * (*DIBToIMGProc)(HGLOBAL hDib); 
typedef	int (*EraseBlackBordersImgProc)(IMG * img); 
typedef	IMG * (*ExtractImgAreaProc)(IMG * img, int x, int y, int w, int h); 
typedef	void (*FreeImgProc)(IMG * img); 
typedef	void (*FreeMultipleImgProc)(SETOFIMG * set); 
typedef	IMG * (*GetImageProc)(const SETOFIMG * set, int index); 
typedef	unsigned char * (*GetImgBitmapProc)(const IMG * img); 
typedef	LPBITMAPINFO (*GetImgBitmapInfoProc)(const IMG * img); 
typedef	int (*GetImgBitmapSizeProc)(const IMG * img); 
typedef	void (*GetImgResProc)(const IMG * img, int * pw, int * ph); 
typedef	void (*GetImgSizeProc)(const IMG * img, int * pw, int * ph); 
typedef	int (*GetNbImagesProc)(const SETOFIMG * set); 
typedef	IMG * (*HalfSizeImgProc)(IMG * img); 
typedef	int (*InsertImageProc)(SETOFIMG * set, int index, IMG * image); 
typedef	int (*InvertImgProc)(IMG * img); 
typedef	IMG * (*LoadImgProc)(const char * filename); 
typedef	SETOFIMG * (*LoadMultipleImgProc)(const char * filename); 
typedef	int (*OCRProc)(const IMG * img, int noisy); 
typedef	int (*OCROnAreaProc)(const IMG * img, int noisy); 
typedef	int (*OCROnArea2Proc)(const IMG * img, int noisy, int startprogress, int endprogress); 
typedef	OCRErrorHandler (*OCRSetErrorHandlerProc)(OCRErrorHandler handler); 
typedef	OCROutputHandler (*OCRSetOutputHandlerProc)(OCROutputHandler handler); 
typedef	OCRProgressHandler (*OCRSetProgressHandlerProc)(OCRProgressHandler handler); 
typedef	OCRWarningHandler (*OCRSetWarningHandlerProc)(OCRWarningHandler handler); 
typedef	int (*ReplaceImageProc)(SETOFIMG * set, int index, IMG * image); 
typedef	IMG * (*ResizeImgProc)(IMG * img, int nw, int nh); 
typedef	int (*RotateImgProc)(IMG * img, int angle); 
typedef	int (*SaveImgProc)(const char * filename, const IMG * img); 
typedef	void (*SaveMultipleImgProc)(const char * filename, SETOFIMG * set); 
typedef	int (*ScanAndAddImageProc)(SETOFIMG * set); 
typedef	void (*ScanAutoBrightProc)(int automode); 
typedef	int (*ScanAvailableProc)(void); 
typedef	void (*ScanBrightnessProc)(int brightness); 
typedef	void (*ScanEndProc)(void); 
typedef	IMG * (*ScanImgProc)(void); 
typedef	int (*ScanInitProc)(HWND hWnd); 
typedef	void (*ScanResolutionProc)(int resolution); 
typedef	void (*ScanSelectProc)(HWND hWnd); 
typedef	void (*ScanShowUIProc)(int mode); 
typedef	void (*ScanThresholdProc)(int threshold); 
typedef	void (*SetLanguageProc)(int language, const char* dictDir); 
typedef	void (*SetOutputModeProc)(int mode); 
typedef	void (*SetOutputWindowProc)(HWND hWnd); 
typedef	IMG * (*ShrinkImgProc)(IMG * img, int nw, int nh); 
 
struct IOcrDll 
{ 
	int (*AddDIB)(SETOFIMG * set, HGLOBAL hDib); 
	int (*AddImage)(SETOFIMG * set, IMG * image); 
	SETOFIMG * (*CreateMultipleImg)(); 
	void (*DelImage)(SETOFIMG * set, int index); 
	int (*DeskewImg)(IMG * img); 
	IMG * (*DIBToIMG)(HGLOBAL hDib); 
	int (*EraseBlackBordersImg)(IMG * img); 
	IMG * (*ExtractImgArea)(IMG * img, int x, int y, int w, int h); 
	void (*FreeImg)(IMG * img); 
	void (*FreeMultipleImg)(SETOFIMG * set); 
	IMG * (*GetImage)(const SETOFIMG * set, int index); 
	unsigned char * (*GetImgBitmap)(const IMG * img); 
	LPBITMAPINFO (*GetImgBitmapInfo)(const IMG * img); 
	int (*GetImgBitmapSize)(const IMG * img); 
	void (*GetImgRes)(const IMG * img, int * pw, int * ph); 
	void (*GetImgSize)(const IMG * img, int * pw, int * ph); 
	int (*GetNbImages)(const SETOFIMG * set); 
	IMG * (*HalfSizeImg)(IMG * img); 
	int (*InsertImage)(SETOFIMG * set, int index, IMG * image); 
	int (*InvertImg)(IMG * img); 
	IMG * (*LoadImg)(const char * filename); 
	SETOFIMG * (*LoadMultipleImg)(const char * filename); 
	int (*OCR)(const IMG * img, int noisy); 
	int (*OCROnArea)(const IMG * img, int noisy); 
	int (*OCROnArea2)(const IMG * img, int noisy, int startprogress, int endprogress); 
	OCRErrorHandler (*OCRSetErrorHandler)(OCRErrorHandler handler); 
	OCROutputHandler (*OCRSetOutputHandler)(OCROutputHandler handler); 
	OCRProgressHandler (*OCRSetProgressHandler)(OCRProgressHandler handler); 
	OCRWarningHandler (*OCRSetWarningHandler)(OCRWarningHandler handler); 
	int (*ReplaceImage)(SETOFIMG * set, int index, IMG * image); 
	IMG * (*ResizeImg)(IMG * img, int nw, int nh); 
	int (*RotateImg)(IMG * img, int angle); 
	int (*SaveImg)(const char * filename, const IMG * img); 
	void (*SaveMultipleImg)(const char * filename, SETOFIMG * set); 
	int (*ScanAndAddImage)(SETOFIMG * set); 
	void (*ScanAutoBright)(int automode); 
	int (*ScanAvailable)(void); 
	void (*ScanBrightness)(int brightness); 
	void (*ScanEnd)(void); 
	IMG * (*ScanImg)(void); 
	int (*ScanInit)(HWND hWnd); 
	void (*ScanResolution)(int resolution); 
	void (*ScanSelect)(HWND hWnd); 
	void (*ScanShowUI)(int mode); 
	void (*ScanThreshold)(int threshold); 
	void (*SetLanguage)(int language, const char* dictDir); 
	void (*SetOutputMode)(int mode); 
	void (*SetOutputWindow)(HWND hWnd); 
	IMG * (*ShrinkImg)(IMG * img, int nw, int nh); 
}; 
 
class COcrDll : public IOcrDll 
{ 
	HMODULE m_hOcrDll; 
 
public: 
	COcrDll() : m_hOcrDll(NULL) {Init();} 
	~COcrDll() {DeInit();} 
 
	bool IsValid() {return(!!m_hOcrDll);} 
 
	bool Init(); 
	void DeInit(); 
};