code_app/sdk/scannerlib/HGScannerLib.h

630 lines
19 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __HGSCANNERLIB_H__
#define __HGSCANNERLIB_H__
#include "HGDef.h"
HG_DECLARE_HANDLE(HGLibImage);
HG_DECLARE_HANDLE(HGLibDevice);
/* 1位黑白图 */
#define HGLIB_IMGTYPE_BINARY 1L
/* 8位灰度图 */
#define HGLIB_IMGTYPE_GRAY 2L
/* 24位真彩色B8G8R8格式 */
#define HGLIB_IMGTYPE_BGR 3L
/* 24位真彩色R8G8B8格式 */
#define HGLIB_IMGTYPE_RGB 4L
/* 32位真彩色带Alpha通道B8G8R8A8格式 */
#define HGLIB_IMGTYPE_BGRA 5L
/* 32位真彩色带Alpha通道R8G8B8A8格式 */
#define HGLIB_IMGTYPE_RGBA 6L
/* 图像数据保存方式 */
#define HGLIB_IMGORIGIN_TOP 1L
#define HGLIB_IMGORIGIN_BOTTOM 2L
/* TIFF压缩方式 */
#define HGLIB_TIFFCOMPRESSION_NONE 1L
#define HGLIB_TIFFCOMPRESSION_CCITTFAX4 2L
#define HGLIB_TIFFCOMPRESSION_LZW 3L
#define HGLIB_TIFFCOMPRESSION_JPEG 4L
/* 设备操作码 */
#define HGLIB_DEV_OPERATECODE_GOOD 0L
#define HGLIB_DEV_OPERATECODE_UNSUPPORTED 1L
#define HGLIB_DEV_OPERATECODE_CANCELLED 2L
#define HGLIB_DEV_OPERATECODE_BUSY 3L
#define HGLIB_DEV_OPERATECODE_INVAL 4L
#define HGLIB_DEV_OPERATECODE_EOF 5L
#define HGLIB_DEV_OPERATECODE_JAMMED 6L
#define HGLIB_DEV_OPERATECODE_NO_DOCS 7L
#define HGLIB_DEV_OPERATECODE_COVER_OPEN 8L
#define HGLIB_DEV_OPERATECODE_IO_ERROR 9L
#define HGLIB_DEV_OPERATECODE_NO_MEM 10L
#define HGLIB_DEV_OPERATECODE_ACCESS_DENIED 11L
/* 设备热拔插事件 */
#define HGLIB_DEVHOTPLUG_EVENT_ARRIVE 1L
#define HGLIB_DEVHOTPLUG_EVENT_REMOVE 2L
/* 设备扫描事件 */
#define HGLIB_DEVSCAN_EVENT_BEGIN 1L
#define HGLIB_DEVSCAN_EVENT_END 2L
#define HGLIB_DEVSCAN_EVENT_INFO 3L
/* 组名 */
// 基本设置
#define HGLIB_GROUP_NAME_BASESETTING 1L
// 亮度
#define HGLIB_GROUP_NAME_BRIGHTNESS 2L
// 图像处理
#define HGLIB_GROUP_NAME_IMAGEPROCESS 3L
// 送纸方式设置
#define HGLIB_GROUP_NAME_PAPERFEEDING 4L
/* 配置名 */
#define HGLIB_OPTION_NAME_UNKNOWN 0L
// "多流输出"
#define HGLIB_OPTION_NAME_DLSC 1L
// "多流输出类型"
#define HGLIB_OPTION_NAME_DLSCLX 2L
// "颜色模式"
#define HGLIB_OPTION_NAME_YSMS 3L
// "黑白图像阈值"
#define HGLIB_OPTION_NAME_HBTXYZ 4L
// "灰度或黑白图像 - 除色"
#define HGLIB_OPTION_NAME_HDHHBTX_CS 5L
// "24位彩色图像 - 多流输出除红"
#define HGLIB_OPTION_NAME_24WCSTX_DLSCCH 6L
// "24位彩色图像 - 答题卡除红"
#define HGLIB_OPTION_NAME_24WCSTX_DTKCH 7L
// "背景移除"
#define HGLIB_OPTION_NAME_BJYC 8L
// "背景色彩浮动范围"
#define HGLIB_OPTION_NAME_BJSCFDFW 9L
// "锐化与模糊"
#define HGLIB_OPTION_NAME_RHYMH 10L
// "去除摩尔纹"
#define HGLIB_OPTION_NAME_QCMW 11L
// "除网纹"
#define HGLIB_OPTION_NAME_CWW 12L
// "错误扩散"
#define HGLIB_OPTION_NAME_CWKS 13L
// "黑白图像噪点优化"
#define HGLIB_OPTION_NAME_HBTXZDYH 14L
// "噪点优化尺寸"
#define HGLIB_OPTION_NAME_ZDYHCC 15L
// "纸张尺寸"
#define HGLIB_OPTION_NAME_ZZCC 16L
// "自定义扫描区域"
#define HGLIB_OPTION_NAME_ZDYSMQY 17L
// "扫描区域左侧mm"
#define HGLIB_OPTION_NAME_SMQYZCmm 18L
// "扫描区域右侧mm"
#define HGLIB_OPTION_NAME_SMQYYCmm 19L
// "扫描区域上侧mm"
#define HGLIB_OPTION_NAME_SMQYSCmm 20L
// "扫描区域下侧mm"
#define HGLIB_OPTION_NAME_SMQYXCmm 21L
// "尺寸检测"
#define HGLIB_OPTION_NAME_CCJC 22L
// "扫描页面"
#define HGLIB_OPTION_NAME_SMYM 23L
// "跳过空白页灵敏度"
#define HGLIB_OPTION_NAME_TGKBYLMD 24L
// "分纸强度"
#define HGLIB_OPTION_NAME_FZQD 25L
// "休眠时间"
#define HGLIB_OPTION_NAME_XMSJ 26L
// "分辨率"
#define HGLIB_OPTION_NAME_FBL 27L
// "画质"
#define HGLIB_OPTION_NAME_HZ 28L
// "交换正反面"
#define HGLIB_OPTION_NAME_JHZFM 29L
// "图像拆分"
#define HGLIB_OPTION_NAME_TXCF 30L
// "自动纠偏"
#define HGLIB_OPTION_NAME_ZDJP 31L
// "启用色调曲线"
#define HGLIB_OPTION_NAME_QYSDQX 32L
// "亮度值"
#define HGLIB_OPTION_NAME_LDZ 33L
// "对比度"
#define HGLIB_OPTION_NAME_DBD 34L
// "伽马值"
#define HGLIB_OPTION_NAME_GMZ 35L
// "照片模式"
#define HGLIB_OPTION_NAME_ZPMS 36L
// "消除黑框"
#define HGLIB_OPTION_NAME_XCHK 37L
// "深色样张"
#define HGLIB_OPTION_NAME_SSYZ 38L
// "阈值"
#define HGLIB_OPTION_NAME_YZ 39L
// "背景抗噪等级"
#define HGLIB_OPTION_NAME_BJKZDJ 40L
// "边缘缩进"
#define HGLIB_OPTION_NAME_BYSJ 41L
// "背景填充方式"
#define HGLIB_OPTION_NAME_BJTCFS 42L
// "防止渗透"
#define HGLIB_OPTION_NAME_FZST 43L
// "防止渗透等级"
#define HGLIB_OPTION_NAME_FZSTDJ 44L
// "穿孔移除—左侧"
#define HGLIB_OPTION_NAME_CKYCZC 45L
// #"左侧穿孔搜索范围占幅面比例"
#define HGLIB_OPTION_NAME_ZCCKSSFWZFMBL 46L
// "穿孔移除—右侧"
#define HGLIB_OPTION_NAME_CKYCYC 47L
// #"右侧穿孔搜索范围占幅面比例"
#define HGLIB_OPTION_NAME_YCCKSSFWZFMBL 48L
// "穿孔移除—上侧"
#define HGLIB_OPTION_NAME_CKYCSC 49L
// #"上侧穿孔搜索范围占幅面比例"
#define HGLIB_OPTION_NAME_SCCKSSFWZFMBL 50L
// "穿孔移除—下侧"
#define HGLIB_OPTION_NAME_CKYCXC 51L
// #"下侧穿孔搜索范围占幅面比例"
#define HGLIB_OPTION_NAME_XCCKSSFWZFMBL 52L
// "色彩填充"
#define HGLIB_OPTION_NAME_SCTC 53L
// "超声波检测"
#define HGLIB_OPTION_NAME_CSBJC 54L
// "双张图片处理"
#define HGLIB_OPTION_NAME_SZTPCL 55L
// "装订检测"
#define HGLIB_OPTION_NAME_ZDJC 56L
// "扫描张数"
#define HGLIB_OPTION_NAME_SMZS 57L
// "扫描数量"
#define HGLIB_OPTION_NAME_SMSL 58L
// "文稿方向"
#define HGLIB_OPTION_NAME_WGFX 59L
// "背面旋转180°"
#define HGLIB_OPTION_NAME_BMXZ180 60L
// "折角检测"
#define HGLIB_OPTION_NAME_ZJJC 61L
// "折角大小"
#define HGLIB_OPTION_NAME_ZJDX 62L
// "歪斜检测"
#define HGLIB_OPTION_NAME_WXJC 63L
// "歪斜容忍度"
#define HGLIB_OPTION_NAME_WXRRD 64L
// 自动分纸强度
#define HGLIB_OPTION_NAME_ZDCZQD 65L
// 进纸失败率
#define HGLIB_OPTION_NAME_CZYZ 66L
// 待纸扫描
#define HGLIB_OPTION_NAME_DZSM 67L
// 黑白图像反色输出正常颜色为0 - 黑色1 - 白色)
#define HGLIB_OPTION_NAME_HBTXFSSC 68L
// 对折模式
#define HGLIB_OPTION_NAME_DZMS 69L
// 色偏校正
#define HGLIB_OPTION_NAME_SPJZ 70L
// 待纸扫描退出时间
#define HGLIB_OPTION_NAME_DZSMTCSJ 71L
// 跳过空白页
#define HGLIB_OPTION_NAME_TGKBY 72L
// 镜头脏污检测
#define HGLIB_OPTION_NAME_JTZWJC 73L
// 穿孔移除
#define HGLIB_OPTION_NAME_CKYC 74L
// 穿孔搜索范围占幅面比例
#define HGLIB_OPTION_NAME_CKSSFWZFMBL 75L
/* 配置枚举值 */
// "无"
#define HGLIB_OPTION_ENUMVALUE_DLSCLX_W 1L
// "彩色+灰度+黑白"
#define HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HD_HB 2L
// "彩色+灰度"
#define HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HD 3L
// "彩色+黑白"
#define HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HB 4L
// "灰度+黑白"
#define HGLIB_OPTION_ENUMVALUE_DLSCLX_HD_HB 5L
// "24位彩色"
#define HGLIB_OPTION_ENUMVALUE_YSMS_24WCS 6L
// "256级灰度"
#define HGLIB_OPTION_ENUMVALUE_YSMS_256JHD 7L
// "黑白"
#define HGLIB_OPTION_ENUMVALUE_YSMS_HB 8L
// "颜色自动识别"
#define HGLIB_OPTION_ENUMVALUE_YSMS_YSZDSB 9L
// "不除色"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_BCS 10L
// "除红色"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_CHS 11L
// "除绿色"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_CLS 12L
// "除蓝色"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_CHULANSE 13L
// "红色增强"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_HSZQ 14L
// "绿色增强"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_LSZQ 15L
// "蓝色增强"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_LANSEZENGQIANG 16L
// "无"
#define HGLIB_OPTION_ENUMVALUE_RHYMH_W 17L
// "锐化"
#define HGLIB_OPTION_ENUMVALUE_RHYMH_RH 18L
// "进一步锐化"
#define HGLIB_OPTION_ENUMVALUE_RHYMH_JYBRH 19L
// "模糊"
#define HGLIB_OPTION_ENUMVALUE_RHYMH_MH 20L
// "进一步模糊"
#define HGLIB_OPTION_ENUMVALUE_RHYMH_JYBMH 21L
// "A3"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A3 22L
// "8开"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_8K 23L
// "A4"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A4 24L
// "A4横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A4HX 25L
// "16开"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_16K 26L
// "16开横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_16KHX 27L
// "A5"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A5 28L
// "A5横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A5HX 29L
// "A6"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A6 30L
// "A6横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A6HX 31L
// "B4"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_B4 32L
// "B5"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_B5 33L
// "B5横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_B5HX 34L
// "B6"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_B6 35L
// "B6横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_B6HX 36L
// "Letter"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_Letter 37L
// "Letter横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_LetterHX 38L
// "Double Letter"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_DoubleLetter 39L
// "LEGAL"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_LEGAL 40L
// "匹配原始尺寸"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_PPYSCC 41L
// "最大扫描尺寸自动裁切"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_ZDSMCCZDCQ 42L
// "最大扫描尺寸"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_ZDSMCC 43L
// "三联试卷"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_SLSJ 44L
// "单面"
#define HGLIB_OPTION_ENUMVALUE_SMYM_DM 45L
// "双面"
#define HGLIB_OPTION_ENUMVALUE_SMYM_SM 46L
// "跳过空白页(通用)"
#define HGLIB_OPTION_ENUMVALUE_SMYM_TGKBYTY 47L
// "跳过空白页(发票纸)"
#define HGLIB_OPTION_ENUMVALUE_SMYM_TGKBYFPZ 48L
// "对折"
#define HGLIB_OPTION_ENUMVALUE_SMYM_DZ 49L
// "无"
#define HGLIB_OPTION_ENUMVALUE_HZ_W 50L
// "速度优先"
#define HGLIB_OPTION_ENUMVALUE_HZ_SDYX 51L
// "画质优先"
#define HGLIB_OPTION_ENUMVALUE_HZ_HZYX 52L
// "凸多边形"
#define HGLIB_OPTION_ENUMVALUE_BJTCFS_TDBX 53L
// "凹多边形"
#define HGLIB_OPTION_ENUMVALUE_BJTCFS_ADBX 54L
// "弱"
#define HGLIB_OPTION_ENUMVALUE_FZSTDJ_R 55L
// "较弱"
#define HGLIB_OPTION_ENUMVALUE_FZSTDJ_JR 56L
// "一般"
#define HGLIB_OPTION_ENUMVALUE_FZSTDJ_YB 57L
// "较强"
#define HGLIB_OPTION_ENUMVALUE_FZSTDJ_JQ 58L
// "强"
#define HGLIB_OPTION_ENUMVALUE_FZSTDJ_Q 59L
// "丢弃图像并停止扫描"
#define HGLIB_OPTION_ENUMVALUE_SZTPCL_DQTXBTZSM 60L
// "丢弃图像并继续扫描"
#define HGLIB_OPTION_ENUMVALUE_SZTPCL_DQTXBJXSM 61L
// "上传图像并停止扫描"
#define HGLIB_OPTION_ENUMVALUE_SZTPCL_SCTXBTZSM 62L
// "上传图像并继续扫描"
#define HGLIB_OPTION_ENUMVALUE_SZTPCL_SCTXBJXSM 63L
// "连续扫描"
#define HGLIB_OPTION_ENUMVALUE_SMZS_LXSM 64L
// "扫描指定张数"
#define HGLIB_OPTION_ENUMVALUE_SMZS_SMZDZS 65L
// "0°"
#define HGLIB_OPTION_ENUMVALUE_WGFX_0 66L
// "90°"
#define HGLIB_OPTION_ENUMVALUE_WGFX_90 67L
// "180°"
#define HGLIB_OPTION_ENUMVALUE_WGFX_180 68L
// "-90°"
#define HGLIB_OPTION_ENUMVALUE_WGFX__90 69L
// "自动文本方向识别°"
#define HGLIB_OPTION_ENUMVALUE_WGFX_ZDWBFXSB 70L
// "分纸强度-弱"
#define HGLIB_OPTION_ENUMVALUE_FZQD_R 71L
// "分纸强度-一般"
#define HGLIB_OPTION_ENUMVALUE_FZQD_YB 72L
// "分纸强度-强"
#define HGLIB_OPTION_ENUMVALUE_FZQD_Q 73L
// "不休眠"
#define HGLIB_OPTION_ENUMVALUE_XMSJ_BXM 74L
// "五分钟"
#define HGLIB_OPTION_ENUMVALUE_XMSJ_WFZ 75L
// "十分钟"
#define HGLIB_OPTION_ENUMVALUE_XMSJ_SFZ 76L
// "半小时"
#define HGLIB_OPTION_ENUMVALUE_XMSJ_BXS 77L
// "一小时"
#define HGLIB_OPTION_ENUMVALUE_XMSJ_YXS 78L
// "两小时"
#define HGLIB_OPTION_ENUMVALUE_XMSJ_LXS 79L
// "四小时"
#define HGLIB_OPTION_ENUMVALUE_XMSJ_SXS 80L
// 左右对折
#define HGLIB_OPTION_ENUMVALUE_ZYDZ 81L
// 上下对折
#define HGLIB_OPTION_ENUMVALUE_SXDZ 82L
// 自动对折
#define HGLIB_OPTION_ENUMVALUE_ZDDZ 83L
// 待纸扫描退出时间15s
#define HGLIB_OPTION_ENUMVALUE_DZSMTCSJ_15S 84L
// 待纸扫描退出时间30s
#define HGLIB_OPTION_ENUMVALUE_DZSMTCSJ_30S 85L
// 待纸扫描退出时间60s
#define HGLIB_OPTION_ENUMVALUE_DZSMTCSJ_60S 86L
// 待纸扫描退出时间2min
#define HGLIB_OPTION_ENUMVALUE_DZSMTCSJ_2MIN 87L
// 待纸扫描退出时间4min
#define HGLIB_OPTION_ENUMVALUE_DZSMTCSJ_4MIN 88L
// 待纸扫描退出时间8min
#define HGLIB_OPTION_ENUMVALUE_DZSMTCSJ_8MIN 89L
// 跳过空白页-基于文件大小
#define HGLIB_OPTION_ENUMVALUE_SMYM_TGKBYJYWJDX 90L
// 上传图像并校验
#define HGLIB_OPTION_ENUMVALUE_SZTPCL_SCTXBJY 91L
/* 配置值类型 */
#define HGLIB_OPTION_VALUETYPE_INT 1L
#define HGLIB_OPTION_VALUETYPE_ENUM 2L
#define HGLIB_OPTION_VALUETYPE_DOUBLE 3L
#define HGLIB_OPTION_VALUETYPE_BOOL 4L
/* 配置值范围类型 */
#define HGLIB_OPTION_VALUERANGETYPE_NULL 0L
#define HGLIB_OPTION_VALUERANGETYPE_INTLIST 1L
#define HGLIB_OPTION_VALUERANGETYPE_ENUMLIST 2L
#define HGLIB_OPTION_VALUERANGETYPE_DOUBLELIST 3L
#define HGLIB_OPTION_VALUERANGETYPE_INTRANGE 4L
#define HGLIB_OPTION_VALUERANGETYPE_DOUBLERANGE 5L
#pragma pack(push)
#pragma pack(4)
typedef struct
{
HGUInt size; /* 结构体大小必须初始化为sizeof(HGLibSaveImageParam) */
HGUInt jpegQuality; /* jpeg下有效, 0-100 */
HGUInt tiffCompression; /* tiff下有效, HGLIB_TIFFCOMPRESSION_* */
HGUInt tiffJpegQuality; /* tiff且HGLIB_TIFFCOMPRESSION_JPEG下有效, 0-100 */
HGBool ocr; /* 是否OCRpdf和ofd格式有效 */
}HGLibSaveImageParam;
/* 图像信息 */
typedef struct
{
HGUInt width; /* 宽(像素),列数 */
HGUInt height; /* 高(像素),行数 */
HGUInt type; /* 类型参见HGLIB_IMGTYPE_* */
HGUInt widthStep; /* 每行的字节数 */
HGUInt origin; /* 数据排列方式参见HGLIB_IMGORIGIN_* */
}HGLibImageInfo;
typedef struct
{
HGInt* value;
HGUInt count;
}HGLibDeviceIntValueList;
typedef struct
{
HGUInt* value;
HGUInt count;
}HGLibDeviceEnumValueList;
typedef struct
{
HGDouble* value;
HGUInt count;
}HGLibDeviceDoubleValueList;
typedef struct
{
HGInt minValue;
HGInt maxValue;
}HGLibDeviceIntValueRange;
typedef struct
{
HGDouble minValue;
HGDouble maxValue;
}HGLibDeviceDoubleValueRange;
typedef struct
{
HGUInt option; /* 配置名, 参见HGLIB_OPTION_NAME_* */
HGUInt type; /* 值类型, 参见HGLIB_OPTION_VALUETYPE_* */
union
{
HGInt intValue;
HGUInt enumValue;
HGDouble doubleValue;
HGBool boolValue;
};
HGUInt rangeType; /* 值范围类型, 参见HGLIB_OPTION_VALUERANGETYPE_* */
union
{
HGLibDeviceIntValueList intValueList;
HGLibDeviceEnumValueList enumValueList;
HGLibDeviceDoubleValueList doubleValueList;
HGLibDeviceIntValueRange intValueRange;
HGLibDeviceDoubleValueRange doubleValueRange;
};
}HGLibDeviceParam;
typedef struct
{
HGUInt group; /* 组名, 参见HGLIB_GROUP_NAME_* */
HGLibDeviceParam* param;
HGUInt paramCount;
}HGLibDeviceParamGroup;
#pragma pack(pop)
/* 设备热拔插回调
* event: HGLIB_DEVHOTPLUG_EVENT_*
* deviceName: 设备名
* param: 回调参数
*/
typedef void (HGAPI *HGLibDeviceHotPlugEventFunc)(HGUInt event, const HGChar *deviceName, HGPointer param);
/* 设备扫描事件回调
* device: 设备句柄
* event: HGLIB_DEVSCAN_EVENT_*
* err: 是否是错误信息, HGLIB_DEVSCAN_EVENT_INFO下有效
* info: 扫描信息, HGLIB_DEVSCAN_EVENT_INFO下有效
* param: 回调参数
*/
typedef void (HGAPI *HGLibDeviceScanEventFunc)(HGLibDevice device, HGUInt event, HGBool err, const HGChar *info, HGPointer param);
/* 设备扫描图像回调
* device: 设备句柄
* image: 图像句柄, 不要调用HGLib_ReleaseImage释放, 回调执行后会自动释放
* param: 回调参数
*/
typedef void (HGAPI *HGLibDeviceScanImageFunc)(HGLibDevice device, HGLibImage image, HGPointer param);
/* 内存拷贝 */
HGEXPORT HGBool HGAPI HGLib_MemoryCopy(HGVoid *dest, const HGVoid *src, HGUInt size);
/* 加载图像 */
HGEXPORT HGLibImage HGAPI HGLib_LoadImage(const HGChar *filePath);
/* 克隆图像 */
HGEXPORT HGLibImage HGAPI HGLib_CloneImage(HGLibImage image, HGUInt type, HGUInt origin);
/* 获取图像数据 */
HGEXPORT HGByte* HGAPI HGLib_GetImageData(HGLibImage image);
/* 获取图像信息 */
HGEXPORT HGBool HGAPI HGLib_GetImageInfo(HGLibImage image, HGLibImageInfo* imageInfo);
/* 获取图像DPI */
HGEXPORT HGBool HGAPI HGLib_GetImageDpi(HGLibImage image, HGUInt *xDpi, HGUInt *yDpi);
/* 保存图像 */
HGEXPORT HGBool HGAPI HGLib_SaveImage(HGLibImage image, const HGChar* savePath, const HGLibSaveImageParam* saveParam);
/* 释放图像 */
HGEXPORT HGBool HGAPI HGLib_ReleaseImage(HGLibImage image);
/* 获取OCR文本 */
HGEXPORT HGChar* HGAPI HGLib_GetOcrText(HGLibImage image);
/* 销毁OCR文本 */
HGEXPORT HGBool HGAPI HGLib_ReleaseOcrText(HGChar* ocrText);
/* 初始化扫描仪 */
HGEXPORT HGBool HGAPI HGLib_InitDevice(HGLibDeviceHotPlugEventFunc func, HGPointer param);
/* 反初始化扫描仪 */
HGEXPORT HGBool HGAPI HGLib_DeinitDevice();
/* 获取扫描仪名称列表 */
HGEXPORT HGChar** HGAPI HGLib_GetDeviceNameList();
/* 销毁扫描仪名称列表 */
HGEXPORT HGBool HGAPI HGLib_ReleaseDeviceNameList(HGChar** deviceName);
/* 打开设备 */
HGEXPORT HGLibDevice HGAPI HGLib_OpenDevice(const HGChar *deviceName);
/* 关闭设备 */
HGEXPORT HGBool HGAPI HGLib_CloseDevice(HGLibDevice device);
/* 获取设备型号 */
HGEXPORT HGBool HGAPI HGLib_GetDeviceType(HGLibDevice device, HGChar *type, HGUInt maxLen);
/* 获取设备序列号 */
HGEXPORT HGBool HGAPI HGLib_GetDeviceSN(HGLibDevice device, HGChar *sn, HGUInt maxLen);
/* 获取设备固件版本号*/
HGEXPORT HGBool HGAPI HGLib_GetDeviceFWVersion(HGLibDevice device, HGChar* fwVersion, HGUInt maxLen);
/* 获取设备滚轴计数 */
HGEXPORT HGInt HGAPI HGLib_GetDeviceRollerCount(HGLibDevice device);
/* 获取设备历史扫描张数 */
HGEXPORT HGInt HGAPI HGLib_GetDeviceTotalCount(HGLibDevice device);
/* 清除滚轴计数 */
HGEXPORT HGBool HGAPI HGLib_ClearDeviceRollerCount(HGLibDevice device);
/* 设置设备参数 */
HGEXPORT HGBool HGAPI HGLib_SetDeviceParam(HGLibDevice device, HGUInt option, const HGVoid *data);
/* 获取设备参数 */
HGEXPORT HGLibDeviceParamGroup* HGAPI HGLib_GetDeviceParamGroupList(HGLibDevice device, HGUInt *count);
HGEXPORT HGLibDeviceParam* HGAPI HGLib_GetDeviceParam(HGLibDevice device, HGUInt option);
/* 销毁设备参数 */
HGEXPORT HGBool HGAPI HGLib_ReleaseDeviceParamGroupList(HGLibDeviceParamGroup* paramGroup, HGUInt count);
HGEXPORT HGBool HGAPI HGLib_ReleaseDeviceParam(HGLibDeviceParam* param);
/* 重置设备参数 */
HGEXPORT HGBool HGAPI HGLib_ResetDeviceParam(HGLibDevice device);
/* 设备是否有纸 */
HGEXPORT HGBool HGAPI HGLib_DeviceIsPaperOn(HGLibDevice device);
/* 获取设备状态, -1表示异常0表示无纸1表示有纸 */
HGEXPORT HGInt HGAPI HGLib_GetDeviceStatus(HGLibDevice device);
/* 重启设备 */
HGEXPORT HGBool HGAPI HGLib_DeviceRestart(HGLibDevice device);
/* 关闭设备 */
HGEXPORT HGBool HGAPI HGLib_DeviceShutDown(HGLibDevice device);
/* 开始扫描 */
HGEXPORT HGBool HGAPI HGLib_StartDeviceScan(HGLibDevice device, HGLibDeviceScanEventFunc eventFunc, HGPointer eventParam,
HGLibDeviceScanImageFunc imageFunc, HGPointer imageParam);
/* 停止扫描 */
HGEXPORT HGBool HGAPI HGLib_StopDeviceScan(HGLibDevice device);
/* 停止扫描-异步 */
HGEXPORT HGBool HGAPI HGLib_StopDeviceScanAsyn(HGLibDevice device);
/* 获取设备操作码(在调用设备操作函数以后) */
HGEXPORT HGInt HGAPI HGLib_GetDeviceOperateCode(HGLibDevice device);
#endif /* __HGSCANNERLIB_H__ */