twain3.0/huagao/Device/PublicFunc.h

479 lines
16 KiB
C
Raw Normal View History

#ifndef PUBLICFUNC_H_
#define PUBLICFUNC_H_
#include "stdafx.h"
#include <string>
#include <direct.h>
#include <io.h>
#include <Windows.h>
#include <fstream>
#define BYTES_PERLINE_ALIGN4(width, bpp) (((((int)(width)*(bpp))+31)/32)*4)
#define BYTES_PERLINE(width, bpp) ((((int)(width)*(bpp))+7)/8)
2021-04-13 09:30:05 +00:00
using byte = unsigned char;
using std::string;
/************************************
**ɨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
*************************************/
const std::string CONFIG = "Config";
//<!<21><><EFBFBD><EFBFBD>ѡ<EFBFBD>
const std::string PIXTYPE = "iPixType";
2021-04-13 09:30:05 +00:00
const std::string AUTOMATICCOLOR = "bAutoMaticColorDetece";
const std::string AUTOMATICCOLORTYPR = "iAutoMaticColorDeteceType";
#ifdef UV
const std::string ENUVMODEL = "bUVmodel";
#endif
const std::string PAPARSIZE = "iPaparSize";
const std::string ENSIZECHECK = "iEnSizeCheck";
2022-05-24 12:05:47 +00:00
const std::string ENFIXEDPAPER = "bEnFixedPaper";
const std::string PAPERALIGN = "iPaperAlign";
const std::string RESOLUTION = "iResolution";
const std::string DUPLEX = "iDuplex";
const std::string DISCARBLANK = "bDiscardBlank";
const std::string DISCARBLANKVINCE = "bDiscardBlankVince";
const std::string DISCARBLANK_VALUE = "discardblank_percent";
const std::string DB_AREANUM = "iAreaNum";
const std::string DB_DEVNMAX = "iDevnMax";
const std::string FLOD = "bFlod";
const std::string AUTOCROP = "bAuotCrop";
2022-05-24 12:05:47 +00:00
const std::string HIGH_IMAGE_QUALITY = "bHighimagequality";
const std::string SWITCHFRONTBACK = "bSwitchFrontBack";
2021-12-16 08:21:35 +00:00
const std::string SPLIT = "bSplit";
const std::string COLORCAST = "bColorCast";
//<!<21><><EFBFBD>ȶԱȶ<D4B1>ѡ<EFBFBD>
const std::string AUTOCONTRAST = "bAutoContrast";
const std::string BRIGHTNESS = "iBrightness";
const std::string CONTRAST = "iContrast";
const std::string GAMMA_ = "dGamma";
//<!ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD>
const std::string CROPMODEL = "bcropmodel";
const std::string FILTERTYPE = "iFilter";
const std::string ENHANCECOLOR = "iEnhance";
const std::string SHARPENTYPE = "iSharpen";
const std::string FILLBLACK = "bFillBlcak";
const std::string AUTODESCREW = "bAutoDescrew";
const std::string MULTIOUTPUT = "iMultiOutPut";
2022-05-24 12:05:47 +00:00
const std::string EN_MULTIOUT = "bMultiOut";
const std::string MULTIOUTTYPE = "iMultiOut";
const std::string OUTHOLE = "bOutHole";
const std::string OUTHOLERATIO = "iOutHoleRatio";
2022-09-20 01:08:11 +00:00
const std::string OUTHOLERATIOUP = "iOutHoleRatioup";
const std::string OUTHOLERATIODOWN = "iOutHoleRatiodown";
const std::string OUTHOLERATIOLEFT = "iOutHoleRatioleft";
const std::string OUTHOLERATIORIGHT = "iOutHoleRatioright";
const std::string EN_OUTHOLERATIOUP = "bOutHoleRatioup";
const std::string EN_OUTHOLERATIODOWN = "bOutHoleRatiodown";
const std::string EN_OUTHOLERATIOLEFT = "bOutHoleRatioleft";
const std::string EN_OUTHOLERATIORIGHT = "bOutHoleRatioright";
const std::string DETACHNOISE = "detachnoise";
const std::string DETACHNOISEVALUE = "detachnoisevalue";
const std::string FADEBACK = "bfadeback";
const std::string FADEBACKRANGE = "fadebackvalue";
const std::string HSVCORRECT = "bHsvCorrect";
//<!<21><>ֽѡ<D6BD>
const std::string ULTRADETECT = "bUltrasonicDetect";
const std::string BINDINGDETECT = "bBindingDetect";
2021-12-16 08:21:35 +00:00
const std::string AUTOPAPER = "bautopaper";
const std::string AUTOPAPERTIMEOUT = "iautopapertimeout";
const std::string SCANCOUNT = "ScanCount";
const std::string DOCORIENTATION = "bOrientation";
const std::string AUTO_TEXT = "bAutoText";
const std::string BACKROTATE180 = "iBackRotate180";
const std::string DOGEAR_DETECTION = "dogeardetection";
2021-11-20 03:09:04 +00:00
const std::string DOGEAR_DISTANCE = "idogeardistance";
const std::string SCREWDETECT = "bScrewDetect";
const std::string SCREWLEVEL = "iScrewLevel";
const std::string ITEMCAPTION = "Caption";
const std::string SAVEPATH = "SavePath";
const std::string ISCONVEX = "isConvex";
const std::string INDENT = "Indent";
const std::string AUTOCROP_THRESHOLD = "AutoCrop_Threshold";
const std::string NOISE = "Noise";
const std::string LOWPOWERMODE = "ilowpowermode";
const std::string ANSWERSHEETFILTER = "iAnswersheetFilter";
2021-11-20 03:09:04 +00:00
//twain <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õȲ<C3B5><C8B2><EFBFBD>
const std::string ROLLERMSGDATE = "RollerMsgDate";
const std::string PRINTFCAPABILITY = "PrintfCapability";
const std::string CONFIG_DOUBLEFEEDDETECTION = "Config_DoubleFeedDetection";
2021-07-11 08:19:57 +00:00
#pragma pack(push)
#pragma pack(4)
/******************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
*******************/
typedef struct tagCONFIGPARAMS
{
/*<2A><><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EEBFA8><EFBFBD><EFBFBD>*/
int Pixtype;
int PaperSize;
bool EnSizeCheck;
bool EnAutoCrop;
#ifdef UV
bool EnUVModel;
#endif
int Resolution;
int Duplex;
bool EnDiscardBlank;
bool EnDiscardBlankVince;
int DBlank_AreaNum;
int DBlank_DevnMax;
bool EnFlod;
bool EnSwitchFrontBack;
byte LowPowerMode;
/*<2A><><EFBFBD>ȶԱȶ<D4B1>ѡ<EFBFBD><EFBFBD><EEBFA8><EFBFBD><EFBFBD>*/
float Brightness;
bool EnAutoContrast;
float Contrast;
float Gamma;
/*ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EEBFA8><EFBFBD><EFBFBD>*/
int Filter;
int Sharpen;
bool EnFillBlack;
bool EnAutoDescrew;
bool EnOutHole;
int OutHoleRatio;
bool EnMultiOutPutR;
bool EnHsvCorrect;
bool EnHsvFilterDetechNoise;
/*<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;
}CONFIGPARAMS, * PCONFIGPARAMS;
typedef struct tagCONFIGINFO
{
std::string Caption;
std::string SavePath;
}CONFIGINFO, * PCONFIGINFO;
typedef struct tagFillHole
{
2021-09-03 06:12:28 +00:00
uint8_t is_fillhole;
int fillholeratio;
}FillHole;
typedef struct tagDetachNoise
{
byte is_detachnoise;
int detachnoise;
}DetachNoise;
enum LowPowerMode :unsigned int {
Min_None = 0,
Min_5,
Min_10,
Min_20,
Min_30,
Min_60,
Min_120,
Min_240
};
typedef struct tagHARDWAREPARAMS
{
byte capturepixtype;
byte en_doublefeed;
byte en_stapledetect;
byte en_skrewdetect;
byte skrewdetectlevel;
2021-12-16 08:21:35 +00:00
byte is_autopaper;
LowPowerMode lowpowermode;
#ifdef UV
byte en_uv;
#endif
}HardwareCaps;
2021-09-03 06:12:28 +00:00
typedef struct tagSkew_Detection {
uint8_t enable;
int level;
}SkewDetection;
typedef struct Scan_Rect {
int width;
int height;
int x;
int y;
}ScanRect;
2021-09-03 06:12:28 +00:00
enum PaperAlign :unsigned char {
Rot0 = 0,
Rot270 = 3,
AutoTextOrientation = 5
};
typedef enum Enchace_Color :short {
2020-09-21 01:25:46 +00:00
Enhance_None=0,
Enhance_Red,
Enhance_Green,
Enhance_Blue
}EnchaceColor;
typedef enum SharpenBlur :short {
Sharpen_None,
Sharpen_Normal,
Sharpen_More,
Sharpen_Blur,
Sharpen_Blur_More
}SharpenBlur;
struct GScanCap
{
2022-05-24 12:05:47 +00:00
uint8_t papertype; /**< the current paper source ADF or Flatbed*/
PaperAlign paperAlign;
bool en_fixedpaper; /**< <20><><EFBFBD>Ϲ̶<CFB9><CCB6><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>*/
uint8_t en_sizecheck; /**< <20>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD>*/
float imageRotateDegree;
uint8_t is_duplex; /**< True to use duplex false for simplex, ignored if flatbed*/
uint8_t en_fold; /**<<3C><><EFBFBD><EFBFBD>*/
int pixtype; /**< type of pixels to transfer image as */
int automaticcolor; /**<<3C><>ɫ<EFBFBD>Ԅ<EFBFBD><D484>R<EFBFBD>e*/
int automaticcolortype; /**<<3C><>ɫ<EFBFBD>Ԅ<EFBFBD><D484>R<EFBFBD>e<EFBFBD><65><EFBFBD>Dz<EFBFBD>ɫ<EFBFBD>ς<EFBFBD><CF82><EFBFBD><EFBFBD><EFBFBD>*/
//ScanRect scanrect;
float resolution_dst; /**< horizontal resolution */
float resolution_native;
float gamma; /**< Gamma */
float contrast; /**< Contrast */
float brightness; /**< Brightness */
float threshold; /**< Threshold */
bool fadeback; /**< <20><><EFBFBD><EFBFBD>ɫ*/
int fadeback_range; /**< <20><><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>Χ*/
uint8_t is_autocontrast; /**< <20>Զ<EFBFBD><D4B6>Աȶ<D4B1>*/
uint8_t is_autocrop; /**< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>*/
bool normalCrop; /**<<3C><>ͳģʽ<C4A3>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>*/
bool is_split; /**< ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
bool is_high_imagequality; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t is_autodiscradblank_normal; /**< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>հ<EFBFBD>ҳͨ<D2B3><CDA8>*/
int discardblank_percent; /**<<3C><><EFBFBD><EFBFBD><EFBFBD>հ<EFBFBD>ҳ<EFBFBD><D2B3>ֵ*/
uint8_t is_autodiscradblank_vince; /**<2A>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>հ<EFBFBD>ҳ<EFBFBD><D2B3>Ʊ*/
uint8_t is_switchfrontback; /**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t autodescrew; /**< <20>Զ<EFBFBD><D4B6><EFBFBD>ƫ*/
uint8_t multi_output_red; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
bool en_multi_output; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
int8_t multioutput;
uint8_t hsvcorrect; /**<<3C><><EFBFBD><EFBFBD><E2BFA8><EFBFBD><EFBFBD>*/
uint8_t filter; /**< <20><>ɫ*/
2021-07-11 08:19:57 +00:00
uint8_t sharpen;
2022-05-24 12:05:47 +00:00
uint8_t enhance_color; /**< <20><>ɫ<EFBFBD><C9AB>ǿ*/
uint8_t fillbackground; /**< <20><><EFBFBD>ڿ<EFBFBD>*/
bool is_convex; /**< <20><><EFBFBD>ڿ<EFBFBD>ģʽ<C4A3><CABD>trueΪ͹<CEAA><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䣬falseΪ<65><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䣬Ĭ<E4A3AC><C4AC>true*/
int noise; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD>noise<73><65><EFBFBD>ȵı<C8B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƹ<EFBFBD><C6B8>ţ<EFBFBD>Ĭ<EFBFBD><C4AC>40*/
int indent; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD>ߺڵ<DFBA><DAB5><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>indent<6E><74><EFBFBD>أ<EFBFBD>Ĭ<EFBFBD><C4AC>5*/
int AutoCrop_threshold; /**< <20>Զ<EFBFBD><D4B6>ü<EFBFBD><C3BC><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ȡֵ<C8A1><D6B5>Χ(0, 255)<29><>Ĭ<EFBFBD><C4AC>40*/
unsigned short scannum; /**< ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t is_backrotate180; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת180*/
uint8_t is_dogeardetection; /**<<3C>۽Ǽ<DBBD><C7BC><EFBFBD>*/
uint32_t dogeardistance; /**<<3C>۽Ǽ<DBBD><C7BC>Χ*/
HardwareCaps hardwarecaps; /**< Ӳ<><D3B2>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
FillHole fillhole;
DetachNoise detachnoise; /**< <20>ڰ׽<DAB0><D7BD><EFBFBD>*/
uint8_t is_autotext; /**< <20>Զ<EFBFBD><D4B6>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>*/
2022-09-20 01:08:11 +00:00
int fillholeratio_up;
int fillholeratio_down;
int fillholeratio_left;
int fillholeratio_right;
bool en_fillholeratio_up;
bool en_fillholeratio_down;
bool en_fillholeratio_left;
bool en_fillholeratio_right;
int autopaper_timeout;
int hsvFilter;
bool is_colorcast; /**< ɫƫʹ<C6AB><CAB9>*/
2022-05-24 12:05:47 +00:00
std::string Caption;
std::string SavePath;
};
2021-09-03 06:12:28 +00:00
typedef struct tagCrop_Rect
{
int enable;
int x; /*****<2A>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>*/
int y; /*****<2A>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>*/
int width; /*****<2A>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*******/
int height; /*****<2A>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>*******/
}CropRect;
typedef enum tagMulti_Output {
Unused = -1,
All,
ColorGray,
ColorBw,
GrayBw
}MultiOutput;
2021-07-11 08:19:57 +00:00
struct GScanCap_3399
{
uint8_t papertype; /**< the current paper source ADF or Flatbed*/
PaperAlign paperAlign;
uint8_t en_sizecheck; /**< <20>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD>*/
float imageRotateDegree;
uint8_t is_duplex; /**< True to use duplex false for simplex, ignored if flatbed*/
uint8_t en_fold; /**<<3C><><EFBFBD><EFBFBD>*/
int pixtype; /**< type of pixels to transfer image as */
int automaticcolor; /**<<3C><>ɫ<EFBFBD>Ԅ<EFBFBD><D484>R<EFBFBD>e*/
int automaticcolortype; /**<<3C><>ɫ<EFBFBD>Ԅ<EFBFBD><D484>R<EFBFBD>e<EFBFBD><65><EFBFBD>Dz<EFBFBD>ɫ<EFBFBD>ς<EFBFBD><CF82><EFBFBD><EFBFBD><EFBFBD>*/
//ScanRect scanrect;
float resolution_dst; /**< horizontal resolution */
float resolution_native;
float gamma; /**< Gamma */
float contrast; /**< Contrast */
float brightness; /**< Brightness */
float threshold; /**< Threshold */
uint8_t is_autocontrast; /**< <20>Զ<EFBFBD><D4B6>Աȶ<D4B1>*/
uint8_t is_autocrop; /**< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t is_autodiscradblank_normal; /**< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>հ<EFBFBD>ҳͨ<D2B3><CDA8>*/
int discardblank_percent; /**<<3C><><EFBFBD><EFBFBD><EFBFBD>հ<EFBFBD>ҳ<EFBFBD><D2B3>ֵ*/
uint8_t is_autodiscradblank_vince;/**<2A>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>հ<EFBFBD>ҳ<EFBFBD><D2B3>Ʊ*/
uint8_t is_switchfrontback; /**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t autodescrew; /**< <20>Զ<EFBFBD><D4B6><EFBFBD>ƫ*/
uint8_t multi_output_red; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t hsvcorrect; /**<<3C><><EFBFBD><EFBFBD><E2BFA8><EFBFBD><EFBFBD>*/
uint8_t filter; /**< <20><>ɫ*/
uint8_t sharpen;
uint8_t enhance_color; /**< <20><>ɫ<EFBFBD><C9AB>ǿ*/
uint8_t fillbackground; /**< <20><><EFBFBD>ڿ<EFBFBD>*/
bool is_convex; /**< <20><><EFBFBD>ڿ<EFBFBD>ģʽ<C4A3><CABD>trueΪ͹<CEAA><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䣬falseΪ<65><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䣬Ĭ<E4A3AC><C4AC>true*/
int noise; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD>noise<73><65><EFBFBD>ȵı<C8B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƹ<EFBFBD><C6B8>ţ<EFBFBD>Ĭ<EFBFBD><C4AC>40*/
int indent; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD>ߺڵ<DFBA><DAB5><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>indent<6E><74><EFBFBD>أ<EFBFBD>Ĭ<EFBFBD><C4AC>5*/
int AutoCrop_threshold; /**< <20>Զ<EFBFBD><D4B6>ü<EFBFBD><C3BC><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ȡֵ<C8A1><D6B5>Χ(0, 255)<29><>Ĭ<EFBFBD><C4AC>40*/
unsigned short scannum; /**< ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t is_backrotate180; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת180*/
uint8_t is_dogeardetection; /**<<3C>۽Ǽ<DBBD><C7BC><EFBFBD>*/
2021-09-03 06:12:28 +00:00
HardwareCaps hardwarecaps; /**< Ӳ<><D3B2>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
2021-07-11 08:19:57 +00:00
FillHole fillhole;
DetachNoise detachnoise; /**< <20>ڰ׽<DAB0><D7BD><EFBFBD>*/
2021-09-03 06:12:28 +00:00
uint8_t is_autotext; /**< <20>Զ<EFBFBD><D4B6>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>*/
bool isfillcolor; /**< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>>*/
int refuseInflow; /**< <20><>ֹ<EFBFBD><D6B9>͸>*/
int colorCorrection; /**< ɫ<><C9AB>У<EFBFBD><D0A3>>*/
int removeMorr; /**< ȥ<><C8A5>Ħ<EFBFBD><C4A6><EFBFBD><EFBFBD>>*/
int errorExtention; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ>*/
int textureRemove; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>*/
int splitImage; /**< ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>*/
2021-09-03 06:12:28 +00:00
CropRect cropRect; /**< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>*/
MultiOutput multiOutput; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>*/
bool normalCrop; /**< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>>*/
2021-11-20 03:09:04 +00:00
uint32_t dogeardistabce; /**< <20>۽Ǽ<DBBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6>㵽ʵ<E3B5BD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><C2BE><EFBFBD>>*/
bool fadeback; /**< <20><><EFBFBD><EFBFBD>ɫ>*/
int fadebackrange; /**< <20><><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>Χ>*/
bool isuploadexceptionimage; /**< <20>Ƿ<EFBFBD><C7B7>ϴ<EFBFBD>˫<EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣ͼ<ECB3A3><CDBC>>*/
2022-09-20 01:08:11 +00:00
int fillholeratio_up; /**< <20><><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD>Χ>*/
int fillholeratio_down;
int fillholeratio_left;
int fillholeratio_right;
std::uint8_t fold_concatmode; /**< ƴ<><C6B4>ģʽ>*/
int HsvFilterType; /**< <20><><EFBFBD><EFBFBD><E2BFA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݶ<EFBFBD>0 Ϊ<>رգ<D8B1><31><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ>*/
bool is_colorcast; /**< ɫƫУ<C6AB><D0A3>>*/
uint32_t reserve[1024]; /**< Ԥ<><D4A4>4096<39>ֽ<EFBFBD><D6BD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD>չ>*/
2021-07-11 08:19:57 +00:00
};
typedef struct Paper_Status {
Paper_Status(unsigned int paper, unsigned int orentate) :Paper(paper), Orentate(orentate) {}
Paper_Status():Paper(0), Orentate(0){}
unsigned int Paper;
unsigned int Orentate;
friend bool operator<(const struct Paper_Status& a, const struct Paper_Status& b) {
if (a.Paper < b.Paper ||
(a.Paper == b.Paper && a.Orentate < b.Orentate)) {
return true;
}
return false;
}
}PaperStatus;
enum G400_PaperSize {
G400_A3 = 0,
G400_A4,
G400_A4R,
G400_A5,
G400_A5R,
G400_A6,
G400_A6R,
G400_B4,
G400_B5,
G400_B5R,
G400_B6,
G400_B6R,
G400_DOUBLELETTER,
G400_LEGAL,
G400_LETTER,
G400_LETTERR,
G400_LONGLETTER=17,
};
enum G400_DPI {
G400_D300 = 0,
G400_D200,
G400_D600
};
2021-07-11 08:19:57 +00:00
#pragma pack(pop)
#define CAPTION_LEN 256
#define TWAIN_IMAGE_FILE_LIST_NAME TEXT(".dat")
#ifndef malloc_my
#define malloc_my malloc
#endif
//ȡ<>õ<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) ;
BOOL isFolderExist(char* folder);
BOOL isFileExist(std::string folder);
int32_t createDirectory(char* directoryPath);
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);
void writelog(std::string msg);
std::string TCHAR2STRING(TCHAR* STR);
float GetContrast(int level);
char* GBKToUTF8(const char* chGBK);
int GetMappingBrightnessValue(float in);
int GetMappingContrastValue(float in);
int GetContrastLevel(float contrast);
CString GetHidedlgPath();
string getOSInfo();
string getManufactureID();
string getCpuType();
string getMemoryInfo();
void GetDiskInfo(DWORD& dwNum, CString chDriveInfo[]);
static VOID XdPrint(_TCHAR* format, ...) {
va_list args;
va_start(args, format);
_TCHAR buf[256];
_vstprintf(buf, format, args);
OutputDebugString(buf);
va_end(args);
}
#endif