#ifndef __HGTWAIN_H__ #define __HGTWAIN_H__ #include "../base/HGDef.h" #include "../base/HGBaseErr.h" #include "HGTwainErr.h" #include "../base/HGImage.h" HG_DECLARE_HANDLE(HGTwainDSM); HG_DECLARE_HANDLE(HGTwainDS); /* 能力 */ #define HGTWAIN_DSCAP_DUPLEX 1L #define HGTWAIN_DSCAP_DUPLEXENABLED 2L #define HGTWAIN_DSCAP_XFERCOUNT 3L /* 未知事件, 可能是该库未进行处理的事件 */ #define HGTWAIN_DSEVENT_UNKNOWN 0L #define HGTWAIN_DSEVENT_XFERREADY 1L #define HGTWAIN_DSEVENT_CLOSEDSREQ 2L #define HGTWAIN_DSEVENT_CLOSEDSOK 3L /* twain事件回调 * 参数: * 1) ds: in, DS句柄 * 2) event: in, 事件, 参见HGTWAIN_DSEVENT_* * 3) param: in, 回调参数 * 说明: * 1) 如果event为HGTWAIN_EVENT_XFERREADY, TWAIN状态从5变为6 * 2) 如果event为HGTWAIN_EVENT_CLOSEDSREQ, 表示需要关闭该DS */ typedef void (HGAPI *HGTwain_DSEventCallback)(HGTwainDS ds, HGUInt event, HGPointer param); /* 加载DSM * 参数: * 1) dsm: out, DSM句柄 * 说明: * 1) 执行此函数后,TWAIN状态从1变为2 */ HGEXPORT HGResult HGAPI HGTwain_LoadDSM(HGTwainDSM *dsm); /* 卸载DSM * 参数: * 1) dsm: in, DSM句柄 * 说明: * 1) 执行此函数后,TWAIN状态从2变为1 */ HGEXPORT HGResult HGAPI HGTwain_UnloadDSM(HGTwainDSM dsm); /* 打开DSM * 参数: * 1) dsm: in, DSM句柄 * 说明: * 1) 执行此函数后,TWAIN状态从2变为3 * 2) 调用该函数的线程需要有消息循环 */ HGEXPORT HGResult HGAPI HGTwain_OpenDSM(HGTwainDSM dsm); /* 关闭DSM * 参数: * 1) dsm: in, DSM句柄 * 说明: * 1) 执行此函数后,TWAIN状态从3变为2 */ HGEXPORT HGResult HGAPI HGTwain_CloseDSM(HGTwainDSM dsm); /* 获取DS列表 * 参数: * 1) dsm: in, DSM句柄 * 2) ds: out, DS句柄列表 * 3) size: in, out, DS句柄列表大小/返回的DS句柄数量 * 说明: * 1) 该函数需要TWAIN状态为3 * 2) size既作为输入, 也作为输出 */ HGEXPORT HGResult HGAPI HGTwain_GetDSList(HGTwainDSM dsm, HGTwainDS *ds, HGUInt *size); /* 获取默认的DS * 参数: * 1) dsm: in, DSM句柄 * 2) ds: out, DS句柄 * 说明: * 1) 该函数需要TWAIN状态为3 */ HGEXPORT HGResult HGAPI HGTwain_GetDefaultDS(HGTwainDSM dsm, HGTwainDS* ds); /* 弹出DS选择框,并返回选择的DS * 参数: * 1) dsm: in, DSM句柄 * 2) ds: out, DS句柄 * 说明: * 1) 该函数需要TWAIN状态为3 */ HGEXPORT HGResult HGAPI HGTwain_SelectDS(HGTwainDSM dsm, HGTwainDS* ds); /* 获取DS名称 * 参数: * 1) ds: in, DS句柄 * 2) name: out, DS名字数据区地址 * 3) maxLen: in, DS名字数据区长度 * 说明: * 1) 该函数需要TWAIN状态为3 * 2) size既作为输入, 也作为输出, 返回的size包括空字符 */ HGEXPORT HGResult HGAPI HGTwain_GetDSName(HGTwainDS ds, HGChar *name, HGUInt maxLen); /* 打开DS * 参数: * 1) ds: in, DS句柄 * 说明: * 1) 执行此函数后,TWAIN状态从3变为4 */ HGEXPORT HGResult HGAPI HGTwain_OpenDS(HGTwainDS ds); /* 关闭DS * 参数: * 1) ds: in, DS句柄 * 说明: * 1) 执行此函数后,TWAIN状态从4变为3 */ HGEXPORT HGResult HGAPI HGTwain_CloseDS(HGTwainDS ds); /* 设置DS的能力 * 参数: * 1) ds: in, DS句柄 * 2) cap: in, 能力 * 3) value: in, 值 * 说明: * 1) 该函数需要TWAIN状态为4 */ HGEXPORT HGResult HGAPI HGTwain_SetCapability(HGTwainDS ds, HGUInt cap, HGInt value); /* 获取DS的能力 * 参数: * 1) ds: in, DS句柄 * 2) cap: in, 能力 * 3) value: out, 值 * 说明: * 1) 该函数需要TWAIN状态为4-7 */ HGEXPORT HGResult HGAPI HGTwain_GetCapability(HGTwainDS ds, HGUInt cap, HGInt* value); /* 启动DS, 仅仅用作参数设置 * 参数: * 1) ds: in, DS句柄 * 2) showUI: in, 是否显示UI * 3) parent: in, 父窗口句柄 * 4) func: in, 回调函数 * 5) param: in, 回调参数 * 说明: * 1) 执行此函数后,TWAIN状态从4变为5 */ HGEXPORT HGResult HGAPI HGTwain_EnableDSUIOnly(HGTwainDS ds, HGBool showUI, HWND parent, HGTwain_DSEventCallback func, HGPointer param); /* 启动DS * 参数: * 1) ds: in, DS句柄 * 2) showUI: in, 是否显示UI * 3) parent: in, 父窗口句柄 * 4) func: in, 回调函数 * 5) param: in, 回调参数 * 说明: * 1) 执行此函数后,TWAIN状态从4变为5 */ HGEXPORT HGResult HGAPI HGTwain_EnableDS(HGTwainDS ds, HGBool showUI, HWND parent, HGTwain_DSEventCallback func, HGPointer param); /* 停止DS * 参数: * 1) ds: in, DS句柄 * 说明: * 1) 执行此函数后,TWAIN状态从5变为4 */ HGEXPORT HGResult HGAPI HGTwain_DisableDS(HGTwainDS ds); /* 本地传输图像 * 参数: * 1) ds: in, DS句柄 * 2) type: in, 图像类型 * 3) origin: in, 图像数据排列方式 * 4) image: out, 获取的图像 * 说明: * 1) 该函数需要在状态6调用 * 2) 执行此函数时,TWAIN状态从6变为7 * 3) 生成的image需要调用HGBase_DestroyImage销毁 */ HGEXPORT HGResult HGAPI HGTwain_ImageNativeXfer(HGTwainDS ds, HGUInt type, HGUInt origin, HGImage *image); /* 停止本次传输 * 参数: * 1) ds: in, DS句柄 * 2) count: out, 还剩下的未传输的图像数量 * 说明: * 1) 执行此函数后,TWAIN状态变为6 * 2) 当count为0时, 可以关闭DS */ HGEXPORT HGResult HGAPI HGTwain_EndXfer(HGTwainDS ds, HGUInt* count); /* 停止所有传输 * 参数: * 1) ds: in, DS句柄 * 说明: * 1) 执行此函数后,TWAIN状态变为5 * 2) 可以关闭DS */ HGEXPORT HGResult HGAPI HGTwain_Reset(HGTwainDS ds); #endif /* __HGTWAIN_H__ */