diff --git a/kylin/ctsso/DEBIAN/control b/kylin/ctsso/DEBIAN/control new file mode 100644 index 0000000..c79d2d9 --- /dev/null +++ b/kylin/ctsso/DEBIAN/control @@ -0,0 +1,12 @@ +package: cumtennscansdk +Version: 4.3001.2022.05251 +Architecture: amd64 +Section: utils +Priority: optional +Maintainer: pengming +Installed-Size: 35948 +Replaces: cumtennscan +Conflicts: +Description:cumtennscan scanner app and sane-driver. + no extended description. + diff --git a/kylin/ctsso/DEBIAN/postinst b/kylin/ctsso/DEBIAN/postinst new file mode 100644 index 0000000..475479e --- /dev/null +++ b/kylin/ctsso/DEBIAN/postinst @@ -0,0 +1,5 @@ +#!/bin/bash + +udevadm control --reload-rules +udevadm trigger +ldconfig diff --git a/kylin/ctsso/etc/ld.so.conf.d/ctsconf.conf b/kylin/ctsso/etc/ld.so.conf.d/ctsconf.conf new file mode 100644 index 0000000..4994971 --- /dev/null +++ b/kylin/ctsso/etc/ld.so.conf.d/ctsconf.conf @@ -0,0 +1 @@ +/opt/apps/scanner-driver-cumtenn/lib diff --git a/kylin/ctsso/etc/udev/rules.d/60-ctssane.rules b/kylin/ctsso/etc/udev/rules.d/60-ctssane.rules new file mode 100644 index 0000000..85de008 --- /dev/null +++ b/kylin/ctsso/etc/udev/rules.d/60-ctssane.rules @@ -0,0 +1,45 @@ +# Load firmware for this printer. + +#ACTION!="add", GOTO="mud_rules_end" + +#HuaGao --->G100~G400 +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0100", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0200", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0300", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0400", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0139", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0239", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0339", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0439", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0402", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0303", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0302", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" + +#Lanxum --->G100~G400 +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8620", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8730", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8420", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8520", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8200", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8629", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8739", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8429", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8529", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" + + + +#Hanvon --->G100~G400 +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7000", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7039", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="1000", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="8000", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="9000", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="1002", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7002", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7039", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" + +#cts --->G100~G400 +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6006", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6005", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" + +LABEL="mud_rules_end" diff --git a/kylin/ctsso/opt/cumtennscansdk/README b/kylin/ctsso/opt/cumtennscansdk/README new file mode 100644 index 0000000..39a2a76 --- /dev/null +++ b/kylin/ctsso/opt/cumtennscansdk/README @@ -0,0 +1,6 @@ + 1. demo 文件夹中所使用的的编译规则以及python demo暂均基于amd架构国产系统使用,若想在arm架构下使用,python请更换相关动态库或调整cmakelist文件; + 注: + demo中均在银河麒麟以及UOS系统下测试过,同时银河麒麟下使用python3.5,UOS下使用python版本为python 3.7,请悉知 + + + diff --git a/kylin/ctsso/opt/cumtennscansdk/demo/C++/CMakeLists.txt b/kylin/ctsso/opt/cumtennscansdk/demo/C++/CMakeLists.txt new file mode 100644 index 0000000..ab1d6b9 --- /dev/null +++ b/kylin/ctsso/opt/cumtennscansdk/demo/C++/CMakeLists.txt @@ -0,0 +1,14 @@ +project(testdemo) +add_compile_options(-std=c++11) +FILE(GLOB SRC "*.cpp" "*.h" "*.c") +include_directories(${PROJECT_SOURCE_DIR}/../../include) + +add_executable(${PROJECT_NAME} ${SRC}) + +#for ARM +link_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../lib/) + + +target_link_libraries(${PROJECT_NAME} HGBase hgdriver HGImgFmt HGImgProc HGScannerLib mupdf pdf sane-hgsane) + +set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../../bin) diff --git a/kylin/ctsso/opt/cumtennscansdk/demo/C++/main.cpp b/kylin/ctsso/opt/cumtennscansdk/demo/C++/main.cpp new file mode 100644 index 0000000..2fa238c --- /dev/null +++ b/kylin/ctsso/opt/cumtennscansdk/demo/C++/main.cpp @@ -0,0 +1,176 @@ +#include +#include +#include +#include +#include "HGScannerLib.h" +#include +#define DELEAY_MS(x) std::this_thread::sleep_for(std::chrono::milliseconds((x))) +using namespace std; + +//有图事件回调 +static void DeviceScanImageFunc(HGLibDevice device, HGLibImage image, HGPointer param) +{ + static int indeximg = 0; + string savepath = std::to_string(++indeximg) + ".jpg"; + cout << "save image : " << savepath << endl; + auto ret = HGLib_SaveImage(image, savepath.c_str(), 0); + cout << "save image : " << savepath << (ret ? " success" : " failed") << endl; +} + +//设备热拔插事件回调 +static void DeviceHotPlugEvent(HGUInt event, const HGChar *deviceName, HGPointer param) +{ + cout << "Devices : " << deviceName << " DeviceHotPlugEvent : " << (event == HGLIB_DEVHOTPLUG_EVENT_ARRIVE ? "HGLIB_DEVHOTPLUG_EVENT_ARRIVE " : "HGLIB_DEVHOTPLUG_EVENT_LEFT") << endl; +} + +//扫描状态事件回调 +static void DeviceScanEvent(HGLibDevice device, HGUInt event, HGBool err, const HGChar *info, HGPointer param) +{ + switch (event) + { + case HGLIB_DEVSCAN_EVENT_BEGIN: + cout << "DeviceScanEvent Start Scan" << endl; + break; + case HGLIB_DEVSCAN_EVENT_END: + cout << "DeviceScanEvent Scan stopped" << endl; + break; + case HGLIB_DEVSCAN_EVENT_INFO: + cout << "DeviceScanEvent info : " << info << endl; + break; + default: + cout << "Unkownun DeviceScanEvent " << event << endl; + break; + } +} + +int main(unsigned char argc, unsigned char *argv[]) +{ + std::cout << "*********Enter Scanner SDK Demo *********" << std::endl; + HGLib_InitDevice(DeviceHotPlugEvent, 0); //初始化调用模块 + DELEAY_MS(5000); + + HGChar **devNameList = HGLib_GetDeviceNameList(); //获取已连接的设备列表,已字符数组的形式返回 + if (devNameList) + { + HGLibDevice dev = HGLib_OpenDevice(devNameList[0]); //此示例代码中调用设备列表中第一个设备 + if (dev) + { + + HGUInt grpCount = 0; + HGLibDeviceParamGroup *groups = HGLib_GetDeviceParamGroupList(dev, &grpCount); + if (groups) + { + //获取sdk支持的功能项及配置项内容 + for (size_t i = 0; i < grpCount; i++) + { + cout << "group: " << groups[i].group << endl; + for (size_t j = 0; j < groups[i].paramCount; j++) + { + cout << " option: " << groups[i].param[j].option + << " type: " << groups[i].param[j].type << endl; + switch (groups[i].param[j].rangeType) + { + case HGLIB_OPTION_VALUERANGETYPE_INTLIST: + for (size_t k = 0; k < groups[i].param[j].intValueList.count; k++) + { + cout<<"support value["< 不进行多流输出类型 +Ret = HGLib_SetDeviceParam(Device, 1, byref(DevParam)) #见HGLib_SetDeviceParam 头文件接口说明 1 -> HGLIB_OPTION_NAME_DLSC 多流输出 + + +#扫描事件回调 +def HGLibDeviceScanEventFunc(device: c_void_p, event: c_uint, err: c_int, info: c_char_p, param: c_void_p): + s_info=info + global bStop + print("event code",event," event info:",s_info) + if event == 2:#HGLIB_DEVSCAN_EVENT_END 扫描停止 + bStop=True + print("bStop true") + elif event == 1: + bStop=False + print("bStop false") + return +imgindex=0 +#扫描图像事件回调 +def HGLibDeviceScanImageFunc(device: c_void_p, image: c_void_p, param: c_void_p): + global imgindex + ImageParam = HGLibSaveImageParam() + ImageParam.size = 20 + ImageParam.jpegQuality = 100 + ImageParam.tiffCompression = 0 + ImageParam.tiffJpegQuality = 0 + ImageParam.ocr = 0 + print("image call back!!") + imgindex+=1 + t_index=imgindex + imgname=str(t_index) + '_scanned.jpg' + print(imgname) + b_imagename=imgname.encode('utf-8') + pchar=c_char_p(b_imagename) + Ret = HGLib_SaveImage(image, pchar, pointer(ImageParam)) + return + +#注册扫描相关事件并启动扫描 +FuncType1 = CFUNCTYPE(None, c_void_p, c_uint, c_int, c_char_p, c_void_p) +cb1 = FuncType1(HGLibDeviceScanEventFunc) +FuncType2 = CFUNCTYPE(None, c_void_p, c_void_p, c_void_p) +cb2 = FuncType2(HGLibDeviceScanImageFunc) +HGLib_StartDeviceScan = Objdll.HGLib_StartDeviceScan +HGLib_StartDeviceScan.argtypes = [c_void_p, FuncType1, c_void_p, FuncType2, c_void_p] +HGLib_StartDeviceScan.restyped = ctypes.c_int +print("start scan") +Ret = HGLib_StartDeviceScan(Device, cb1, 0, cb2, 0) + +#模拟扫描持续应等待扫描事件回调返回扫描停止才结束本次扫描流程 +while(not bStop): + time.sleep(1) + print("scanning...") + + +print("scan done!!!") + +#关闭当前打开的设备 +HGLib_CloseDevice=Objdll.HGLib_CloseDevice +HGLib_CloseDevice.argtypes = [c_void_p] +HGLib_CloseDevice.restype = ctypes.c_int +HGLib_CloseDevice(Device) +print("Close Devices") + +#释放设备列表资源 +HGLib_ReleaseDeviceNameList=Objdll.HGLib_ReleaseDeviceNameList +HGLib_ReleaseDeviceNameList.argtypes=[POINTER(ctypes.c_char_p)] +HGLib_ReleaseDeviceNameList.restype = ctypes.c_int +HGLib_ReleaseDeviceNameList(DeviceNameList) +print("ReleaseDeviceNameList done") + +print("exit test") + + diff --git a/kylin/ctsso/opt/cumtennscansdk/doc/新版SDK接口说明V2.1.1.pdf b/kylin/ctsso/opt/cumtennscansdk/doc/新版SDK接口说明V2.1.1.pdf new file mode 100644 index 0000000..11e9afa Binary files /dev/null and b/kylin/ctsso/opt/cumtennscansdk/doc/新版SDK接口说明V2.1.1.pdf differ diff --git a/kylin/ctsso/opt/cumtennscansdk/include/HGDef.h b/kylin/ctsso/opt/cumtennscansdk/include/HGDef.h new file mode 100644 index 0000000..75b0962 --- /dev/null +++ b/kylin/ctsso/opt/cumtennscansdk/include/HGDef.h @@ -0,0 +1,141 @@ +#ifndef __HGDEF_H__ +#define __HGDEF_H__ + +/**************************************************************************** + * Platform Dependent Definitions and Typedefs * + ****************************************************************************/ + + /* Microsoft C/C++ Compiler */ +#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) || defined (_WINDOWS) + + #define HG_CMP_MSC + #if defined(_WIN64) || defined(WIN64) + #define HG_64BIT + #elif defined(_WIN32) || defined(WIN32) + #define HG_32BIT + #endif + +/* Apple Compiler (which is GNU now) */ +#elif defined(__APPLE__) + + #define HG_CMP_XCODE + #define HG_64BIT + +/* GNU C/C++ Compiler */ +#elif defined(__GNUC__) + + #define HG_CMP_GNU + #if defined(__alpha__) || defined(__ia64__) || defined(__ppc64__) || defined(__s390x__) || defined(__x86_64__) + #define HG_64BIT + #else + #define HG_32BIT + #endif + +/* Unrecognized */ +#else + + #error Unrecognized compiler + +#endif + +#if defined(HG_CMP_MSC) + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif +#endif + +/* type defines */ +typedef void HGVoid; +typedef char HGChar; +typedef unsigned char HGByte; +typedef short HGShort; +typedef unsigned short HGUShort; +typedef int HGInt; +typedef unsigned int HGUInt; +typedef long long HGLonglong; +typedef unsigned long long HGULonglong; +typedef void* HGPointer; +typedef HGInt HGBool; +typedef float HGFloat; +typedef double HGDouble; +#ifdef HG_64BIT + typedef HGLonglong HGSize; + typedef HGULonglong HGUSize; +#else + typedef HGInt HGSize; + typedef HGUInt HGUSize; +#endif + +typedef HGUInt HGColor; + +#define HG_MAKECOLOR(r, g, b, a) (HGColor)(((HGUInt)a << 24) | ((HGUInt)b << 16) | ((HGUInt)g << 8) | (HGUInt)r) +#define HG_GETCOLOR_R(color) (HGUInt)((HGColor)color & 0xFF) +#define HG_GETCOLOR_G(color) (HGUInt)(((HGColor)color >> 8) & 0xFF) +#define HG_GETCOLOR_B(color) (HGUInt)(((HGColor)color >> 16) & 0xFF) +#define HG_GETCOLOR_A(color) (HGUInt)(((HGColor)color >> 24) & 0xFF) + +/* error code */ +typedef HGUInt HGResult; + +#define HGTRUE 1 +#define HGFALSE 0 + +#ifndef HGMAX + #define HGMAX(a,b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef HGMIN + #define HGMIN(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +#if defined(HG_CMP_MSC) + #ifdef __cplusplus + #define HGEXPORT extern "C" + #else + #define HGEXPORT + #endif /* __cplusplus */ + #define HGAPI __stdcall + #define HGAPIV __cdecl +#else + #ifdef __cplusplus + #define HGEXPORT extern "C" __attribute ((visibility("default"))) + #else + #define HGEXPORT __attribute ((visibility("default"))) + #endif /* __cplusplus */ + #define HGAPI + #define HGAPIV +#endif + +#define HG_DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name + +typedef struct +{ + HGInt left; + HGInt top; + HGInt right; + HGInt bottom; +}HGRect; + +typedef struct +{ + HGFloat left; + HGFloat top; + HGFloat right; + HGFloat bottom; +}HGRectF; + +typedef struct +{ + HGInt x; + HGInt y; +}HGPoint; + +typedef struct +{ + HGFloat x; + HGFloat y; +}HGPointF; + +#endif /* __HGDEF_H__ */ diff --git a/kylin/ctsso/opt/cumtennscansdk/include/HGScannerLib.h b/kylin/ctsso/opt/cumtennscansdk/include/HGScannerLib.h new file mode 100644 index 0000000..8f91b71 --- /dev/null +++ b/kylin/ctsso/opt/cumtennscansdk/include/HGScannerLib.h @@ -0,0 +1,473 @@ +#ifndef __HGSCANNERLIB_H__ +#define __HGSCANNERLIB_H__ + +#include "HGDef.h" + +HG_DECLARE_HANDLE(HGLibImage); +HG_DECLARE_HANDLE(HGLibDevice); + +/* TIFFѹʽ */ +#define HGLIB_TIFFCOMPRESSION_NONE 1L +#define HGLIB_TIFFCOMPRESSION_CCITTFAX4 2L +#define HGLIB_TIFFCOMPRESSION_LZW 3L +#define HGLIB_TIFFCOMPRESSION_JPEG 4L + +/* 豸Ȱβ¼ */ +#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_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_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 + +typedef struct +{ + HGUInt size; /* ṹСʼΪsizeof(HGLibSaveImageParam) */ + HGUInt jpegQuality; /* jpegЧ, 0-100 */ + HGUInt tiffCompression; /* tiffЧ, HGLIB_TIFFCOMPRESSION_* */ + HGUInt tiffJpegQuality; /* tiffHGLIB_TIFFCOMPRESSION_JPEGЧ, 0-100 */ + HGBool ocr; /* ǷOCRpdfofdʽЧ */ +}HGLibSaveImageParam; + +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; + +/* 豸Ȱβص +* event: HGLIB_DEVHOTPLUG_EVENT_* +* deviceName: 豸 +* param: ص +*/ +typedef void (*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 (*HGLibDeviceScanEventFunc)(HGLibDevice device, HGUInt event, HGBool err, const HGChar *info, HGPointer param); + +/* 豸ɨͼص +* device: 豸 +* image: ͼ, ҪHGLib_ReleaseImageͷ, صִкԶͷ +* param: ص +*/ +typedef void (*HGLibDeviceScanImageFunc)(HGLibDevice device, HGLibImage image, HGPointer param); + +/* ͼ */ +HGEXPORT HGLibImage HGAPI HGLib_LoadImage(const HGChar *filePath); + +/* ͼ */ +HGEXPORT HGBool HGAPI HGLib_SaveImage(HGLibImage image, const HGChar* savePath, const HGLibSaveImageParam* saveParam); + +/* ͷͼ */ +HGEXPORT HGBool HGAPI HGLib_ReleaseImage(HGLibImage image); + +/* ʼɨ */ +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_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); + +/* ʼɨ */ +HGEXPORT HGBool HGAPI HGLib_StartDeviceScan(HGLibDevice device, HGLibDeviceScanEventFunc eventFunc, HGPointer eventParam, + HGLibDeviceScanImageFunc imageFunc, HGPointer imageParam); + +/* ֹͣɨ */ +HGEXPORT HGBool HGAPI HGLib_StopDeviceScan(HGLibDevice device); + +#endif /* __HGSCANNERLIB_H__ */ \ No newline at end of file diff --git a/kylin/ctsso/opt/cumtennscansdk/lib/redeme.txt b/kylin/ctsso/opt/cumtennscansdk/lib/redeme.txt new file mode 100644 index 0000000..e69de29