twain2/hugaotwainds/PublicFunc.h

321 lines
7.8 KiB
C
Raw Permalink Normal View History

2020-03-11 02:53:30 +00:00
#ifndef PUBLICFUNC_H_
#define PUBLICFUNC_H_
#include "stdafx.h"
#include <string>
//#include "UI_INI.h"
//#include "DirectshowCaptureVideo.h"
//#include "DirectshowCaptureVideoUvc.h"
using namespace std;
/************************************
**ɨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
*************************************/
#define PIXTYPE "iPixType"
#define PAPARSIZE "iPaparSize"
#define AUTOCROP "bAuotCrop"
#define RESOLUTION "iResolution"
#define DUPLEX "iDuplex"
#define DISCARBLANK "bDiscardBlank"
#define DISCARBLANKVINCE "bDiscardBlankVince"
#define FLOD "bFlod"
#define BRIGHTNESS "iBrightness"
#define AUTOCONTRAST "bAutoContrast"
#define CONTRAST "iContrast"
#define GAMMA "dGamma"
#define FILTERTYPE "iFilter"
#define FILLBLACK "bFillBlcak"
#define AUTODESCREW "bAutoDescrew"
#define ULTRADETECT "bUltrasonicDetect"
#define BINDINGDETECT "bBindingDetect"
#define SCANCOUNT "ScanCount"
#define DOCORIENTATION "bOrientation"
#define BACKROTATE180 "iBackRotate180"
#define SCREWDETECT "bScrewDetect"
#define SCREWLEVEL "iScrewLevel"
#define ITEMCAPTION "Caption"
#define SAVEPATH "SavePath"
#define MULTIOUTPUT "iMultiOutPut"
#define OUTHOLE "bOutHole"
#define OUTHOLERATIO "iOutHoleRatio"
/******************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
*******************/
struct tagCONFIGPARAMS
{
/*<2A><><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EEBFA8><EFBFBD><EFBFBD>*/
INT Pixtype;
INT PaperSize;
BOOL EnAutoCrop;
INT Resolution;
INT Duplex;
BOOL EnDiscardBlank;
BOOL EnDiscardBlankVince;
BOOL EnFlod;
/*<2A><><EFBFBD>ȶԱȶ<D4B1>ѡ<EFBFBD><EFBFBD><EEBFA8><EFBFBD><EFBFBD>*/
INT Brightness;
BOOL EnAutoContrast;
INT Contrast;
INT Gamma;
/*ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EEBFA8><EFBFBD><EFBFBD>*/
INT Filter;
BOOL EnFillBlack;
BOOL EnAutoDescrew;
//BOOL EnMulti
BOOL EnOutHole;
INT OutHoleRatio;
BOOL EnMultiOutPutR;
/*<2A><>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EEBFA8><EFBFBD><EFBFBD>*/
BOOL EnUltrasonicDetect;
BOOL EnBindingDetect;
INT ScanCount;
INT Orentation;
BOOL EnBackRotate180;
BOOL EnScrewDetect;
INT ScrewDetectLevel;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ*/
std::string Caption;
std::string SavePath;
};
typedef tagCONFIGPARAMS CONFIGPARAMS,*PCONFIGPARAMS;
struct tagCONFIGINFO
{
std::string Caption;
std::string SavePath;
};
typedef struct tagCONFIGINFO CONFIGINFO,*PCONFIGINFO;
struct tagOutHole
{
BOOL EnOutHole;
INT OutHoleRatio;
};
typedef tagOutHole OutHole,*pOutHole;
typedef struct tag_USBCB {
UINT32 u32_CMD;
UINT32 u32_Data;
UINT32 u32_Count;
}USBCB, *PUSBCB;
//u32_CMD
enum tagUsbKeyWords :UINT32
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NO_COMMAND = 0,
//<2F><>ȡdsp ״̬
GET_DSP_STATUS = 1,
//ȡͼ
GET_IMAGE = 2,
//<2F><><EFBFBD><EFBFBD>DSP<53><50>פ<EFBFBD><D7A4><EFBFBD><EFBFBD>ͼ
POP_IMAGE = 3,
//<2F><>ʼɨ<CABC><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
START_COMMAND = 4,
//ֹͣɨ<D6B9><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
STOP = 5,
//<2F><>ȡɨ<C8A1><C9A8><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>ģʽ
GET_SCAN_MODE = 6,
//<2F><>ȡ<EFBFBD>̼<EFBFBD><CCBC><EFBFBD><E6B1BE>
GET_FW_VERSION = 7,
//<2F><><EFBFBD><EFBFBD>PC<50>˵<EFBFBD>״̬
SEND_STATUS_PC = 8,
//<2F>·<EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
CONFIGURED_DATA = 9,
//<2F>·<EFBFBD><C2B7>̼<EFBFBD><CCBC><EFBFBD>Ϣ
SEND_FW = 10,
//<2F><>ȡɨ<C8A1><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GET_CONFIG_DATA = 11,
//<2F><>ȡɨ<C8A1><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GET_SCANN_NUM = 12,
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>״̬
GET_PAPERFEEDER_STATUS = 13,
//DSP<53><50>ʼ<EFBFBD><CABC>
INIT_HARDWARE_SYS = 14,
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>״̬
GET_PAPER_STATUS = 0x0d,
//<2F>·<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷȣ<D2B6>LED R<>ع<EFBFBD>ʱ<EFBFBD>
SEND_COMPONENTS_GR = 15,
//<2F>·<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>LED G/B<>ع<EFBFBD>ʱ<EFBFBD>
SEND_COMPONENTS_GB = 16,
//<2F>·<EFBFBD>ɨ<EFBFBD><C9A8>ģʽ
SEND_SCAN_MODE = 17,
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
START_FLAT = 18,
//ֹͣƽ<D6B9><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
STOP_FLAT = 19,
//<2F>·<EFBFBD>200dpi<70><69>ɫƽ<C9AB><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SEND_200_COLOR_FLAT_DATA = 20,
//<2F>·<EFBFBD>300dpi<70><69>ɫƽ<C9AB><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SEND_300_COLOR_FLAT_DATA = 21,
//<2F><>ȡ200dpi<70><69>ɫƽ<C9AB><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GET_200_COLOR_FLAT_DATA = 22,
//<2F><>ȡ300dpi<70><69>ɫƽ<C9AB><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GET_300_COLOR_FLAT_DATA = 23,
//<2F>·<EFBFBD>200dpi<70>Ҷ<EFBFBD>ƽ<EFBFBD><C6BD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SEND_200_GRAY_FLAT_DATA = 24,
//<2F>·<EFBFBD>300dpi<70>Ҷ<EFBFBD>ƽ<EFBFBD><C6BD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SEND_300_GRAY_FLAT_DATA = 25,
//<2F><>ȡ200DPI<50>Ҷ<EFBFBD>ƽ<EFBFBD><C6BD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GET_200_GRAY_FLAT_DATA = 26,
//<2F><>ȡ300DPI<50>Ҷ<EFBFBD>ƽ<EFBFBD><C6BD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GET_300_GRAY_FLAT_DATA = 27,
//<2F>·<EFBFBD><C2B7><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
SEND_SERIAL = 28,
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
GET_SERIAL = 29
};
typedef enum tagUsbKeyWords UsbKeyWords, *PUsbKeyWords;
//u32_Data
enum tagUsbSupported
{
//ֹͣɨ<D6B9><C9A8>
SCAN_STOP = -2,
//<2F>
HAVE_ERROR = -1,
//<2F><><EFBFBD><EFBFBD>״̬
NORMAL = 0,
//<2F><><EFBFBD><EFBFBD>
OPEN_COVER = 1,
// <20><>ֽ
NO_FEED = 2,
// <20><>ֽʧ<D6BD><CAA7>
FEED_IN_ERROR = 4,
// <20><>ֽ
PAPER_JAM = 8,
// <20><><EFBFBD>⵽˫<E2B5BD><CBAB>
DETECT_DOUBLE_FEED = 16,
// <20><><EFBFBD><EFBFBD><E2B5BD><EFBFBD>
DETECT_STAPLE = 32,
// ֽ<><D6BD><EFBFBD><EFBFBD>б
PAPER_SKEW = 64,
// <20>Զ<EFBFBD>ģʽ
AUTO_SCAN_MODE = 65,
// <20>ֶ<EFBFBD>ģʽ
MANAUL_SCAN_MODE = 66,
// <20><><EFBFBD><EFBFBD>ģʽ
COUNT_MODE = 67,
// Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HARDWARE_ERROR = 68,
// FPGA<47><41><EFBFBD><EFBFBD>
FPGA_ERROR = 68,
// <20><>ʼ
START_SCAN = 69,
//ֹͣ
STOP_SCAN = 70,
//<2F><>ͼ
HAVE_IMAGE = 71,
// <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UPDATE_SCAN_PARAMETER = 72,
// PC<50><43>æ<EFBFBD><C3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PC_SCAN_BUSY_or_ERROR = 73
};
typedef enum tagUsbSupported UsbSupported, *PUsbSupported;
#define CAPTION_LEN 256
#define TWAIN_IMAGE_FILE_LIST_NAME TEXT(".dat")
#ifndef malloc_my
#define malloc_my malloc
#endif
typedef struct tagTWAIN_IMAGE_FILE_LIST
{
INT n_item;//
TCHAR sz_path[MAX_PATH];
DWORD dw_color_bit;
DWORD dw_width;
DWORD dw_height;
DWORD dw_dpi;
DWORD dw_image_size;
BOOL b_del_flg;//<2F>ļ<EFBFBD>ʱ<EFBFBD>Ƿ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ɾ<EFBFBD><C9BE>һ<EFBFBD><D2BB>
}TWAIN_IMAGE_FILE_LIST,FAR*PTWAIN_IMAGE_FILE_LIST;
typedef struct tagTWAIN_IMAGE_DATA_INFO
{
BOOL b_lock_flg;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>
//BOOL b_flg;
TCHAR sz_path_dir[MAX_PATH];//<2F>ļ<EFBFBD>Ŀ¼
//IMAGE_BMP_INFO st_bmp_info;//ͼ<><CDBC><EFBFBD><EFBFBD>Ϣ
PTWAIN_IMAGE_FILE_LIST p_wifl;
INT n_wifl_count;//<2F>ڴ<EFBFBD><DAB4><EFBFBD>С
INT n_wifl_cur_count;//<2F><>ǰʹ<C7B0><CAB9><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
INT n_wifl_cur_pos;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>λ<EFBFBD><CEBB>
}TWAIN_IMAGE_DATA_INFO, FAR*PTWAIN_IMAGE_DATA_INFO;
DWORD ReadTwianImageData(TCHAR *p_file_path);
BOOL WriteTwianImageData(TCHAR *p_file_path, PBYTE p_data, DWORD dw_size);
BOOL MallocTwainFileListMem();
VOID FreeTwainFileListMem();
//ȡ<><C8A1><EFBFBD>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰĿ¼<C4BF><C2BC> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ַ<EFBFBD><D6B7><EFBFBD>
TCHAR* GetUserCustomFilePath(HWND hWin, LPSTR lpFilePath, TCHAR *lp_head_text = NULL);
//ȡ<>õ<EFBFBD>ǰģ<C7B0><C4A3><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>, <20><><EFBFBD><EFBFBD><><C4A3>ʵ<EFBFBD>оٲ<D0BE>, <20>ļ<EFBFBD>·<EFBFBD><C2B7>, <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
TCHAR* GetCurExeFilePath(HINSTANCE hInstance, TCHAR* lpPath, DWORD dwSize);
//ȡ<><C8A1>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڵ<EFBFBD>·<EFBFBD><C2B7>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCHAR* GetExistFileDir(TCHAR* p_file_path);
//<2F>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><><C8A1><EFBFBD>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
DWORD CALLBACK BrowserCallbackProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) ;
std::string UtfToString(std::string strValue);
std::string StringToUtf(std::string strValue);
//<2F><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>, <20><><EFBFBD><EFBFBD> <20>ļ<EFBFBD>·<EFBFBD><C2B7>, = <20><>,<2C><><EFBFBD><EFBFBD>p_file_path<74><68>Ѱ<EFBFBD><D1B0><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
BOOL CheckAndCreateFileDir(TCHAR* p_file_path, BOOL flg);
BOOL CheckDiskFreeBitM(HWND hWin, TCHAR *p_disk_name, DWORD dw_min_bit_m);
HBITMAP SetButtonStaticBkBmp(HINSTANCE hInst, HWND hWin, UINT id, UINT iamge_id);
DWORD MyMessageBox(TCHAR *p_str, TCHAR *p_str2, DWORD dw_id);
extern TWAIN_IMAGE_DATA_INFO g_st_twain_bmp_info;
//extern CDirectshowCaptureVideo g_dc_video;
extern BOOL g_b_show_ui_flg;
//extern WATER_PRO g_st_water_pro;
extern BOOL g_add_water_flg;
extern DWORD g_dw_white_bright_count;
//extern CDirectshowCaptureVideoUvc g_dc_uvc_video;
extern BOOL g_b_use_uvc_dev ;
extern BOOL g_b_brigth_show_flg;
extern HWND g_hwnd_dlg;
//extern CSysMutex g_sys_mutex;
typedef enum tagSYS_MUTEX_TYPE
{
SYSMUTEX_APP_RUN_TYPE,// ok
SYSMUTEX_TWAIN_RUN_TYPE,
SYSMUTEX_APP_SCANNER_RUN_TYPE,
SYSMUTEX_TWAIN_SCANNER_RUN_TYPE
}SYS_MUTEX_TYPE, FAR* PSYS_MUTEX_TYPE;
BOOL g_InitSysMutexRun();
BOOL g_InitSysMutexScanRun(DWORD dwPid, DWORD dwUid);
BOOL g_CloseSysMutexRun();
BOOL g_CloseOneSysMutexRun();
BOOL g_CreateSysMutex();
BOOL g_CheckSysMutex();
float GetContrast(int level);
VOID XdPrint(_TCHAR* format, ...);
extern BOOL g_not_user_sineng_dev;
extern RGBQUAD g_default_map[256];
BOOL ReadDefaultMap();
#endif