HGScannerLib: 将配置字符串改为整型

This commit is contained in:
luoliangyi 2022-08-23 18:49:35 +08:00
parent f3a625e170
commit 61748ca5c3
6 changed files with 632 additions and 487 deletions

View File

@ -42,7 +42,6 @@
<ItemGroup>
<ClInclude Include="..\..\..\sdk\scannerlib\HGLibDeviceImpl.hpp" />
<ClInclude Include="..\..\..\sdk\scannerlib\HGScannerLib.h" />
<ClInclude Include="..\..\..\sdk\scannerlib\HGScannerLibOption.h" />
<ClInclude Include="..\..\..\utility\HGString.h" />
</ItemGroup>
<ItemGroup>

View File

@ -4,6 +4,153 @@
#include "base/HGImage.h"
#include "HGString.h"
const char* GROUP_NAME[] = {
NULL,
"基本设置",
"亮度",
"图像处理",
"送纸方式设置"
};
const char* OPTION_NAME[] = {
NULL,
OPTION_TITLE_DLSC,
OPTION_TITLE_DLSCLX,
OPTION_TITLE_YSMS,
OPTION_TITLE_HBTXYZ,
OPTION_TITLE_HDHHBTX_CS,
OPTION_TITLE_24WCSTX_DLSCCH,
OPTION_TITLE_24WCSTX_DTKCH,
OPTION_TITLE_BJYC,
OPTION_TITLE_BJSCFDFW,
OPTION_TITLE_RHYMH,
OPTION_TITLE_QCMW,
OPTION_TITLE_CWW,
OPTION_TITLE_CWKS,
OPTION_TITLE_HBTXZDYH,
OPTION_TITLE_ZDYHCC,
OPTION_TITLE_ZZCC,
OPTION_TITLE_ZDYSMQY,
OPTION_TITLE_SMQYZCmm,
OPTION_TITLE_SMQYYCmm,
OPTION_TITLE_SMQYSCmm,
OPTION_TITLE_SMQYXCmm,
OPTION_TITLE_CCJC,
OPTION_TITLE_SMYM,
OPTION_TITLE_TGKBYLMD,
OPTION_TITLE_FZQD,
OPTION_TITLE_XMSJ,
OPTION_TITLE_FBL,
OPTION_TITLE_HZ,
OPTION_TITLE_JHZFM,
OPTION_TITLE_TXCF,
OPTION_TITLE_ZDJP,
OPTION_TITLE_QYSDQX,
OPTION_TITLE_LDZ,
OPTION_TITLE_DBD,
OPTION_TITLE_GMZ,
OPTION_TITLE_ZPMS,
OPTION_TITLE_XCHK,
OPTION_TITLE_SSYZ,
OPTION_TITLE_YZ,
OPTION_TITLE_BJKZDJ,
OPTION_TITLE_BYSJ,
OPTION_TITLE_BJTCFS,
OPTION_TITLE_FZST,
OPTION_TITLE_FZSTDJ,
OPTION_TITLE_CKYC,
OPTION_TITLE_CKSSFWZFMBL,
OPTION_TITLE_SCTC,
OPTION_TITLE_CSBJC,
OPTION_TITLE_SZTPCL,
OPTION_TITLE_ZDJC,
OPTION_TITLE_SMZS,
OPTION_TITLE_SMSL,
OPTION_TITLE_WGFX,
OPTION_TITLE_BMXZ180,
OPTION_TITLE_ZJJC,
OPTION_TITLE_ZJDX,
OPTION_TITLE_WXJC,
OPTION_TITLE_WXRRD,
OPTION_TITLE_ZDCZQD,
OPTION_TITLE_CZYZ,
OPTION_TITLE_DZSM
};
const char* OPTION_ENUMVALUE[] = {
NULL,
OPTION_VALUE_DLSCLX_W,
OPTION_VALUE_DLSCLX_CS_HD_HB,
OPTION_VALUE_DLSCLX_CS_HD,
OPTION_VALUE_DLSCLX_CS_HB,
OPTION_VALUE_DLSCLX_HD_HB,
OPTION_VALUE_YSMS_24WCS,
OPTION_VALUE_YSMS_256JHD,
OPTION_VALUE_YSMS_HB,
OPTION_VALUE_YSMS_YSZDSB,
OPTION_VALUE_HDHHBTX_CS_BCS,
OPTION_VALUE_HDHHBTX_CS_CHS,
OPTION_VALUE_HDHHBTX_CS_CLS,
OPTION_VALUE_HDHHBTX_CS_CHULANSE,
OPTION_VALUE_HDHHBTX_CS_HSZQ,
OPTION_VALUE_HDHHBTX_CS_LSZQ,
OPTION_VALUE_HDHHBTX_CS_LANSEZENGQIANG,
OPTION_VALUE_RHYMH_W,
OPTION_VALUE_RHYMH_RH,
OPTION_VALUE_RHYMH_JYBRH,
OPTION_VALUE_RHYMH_MH,
OPTION_VALUE_RHYMH_JYBMH,
OPTION_VALUE_ZZCC_A3,
OPTION_VALUE_ZZCC_8K,
OPTION_VALUE_ZZCC_A4,
OPTION_VALUE_ZZCC_A4HX,
OPTION_VALUE_ZZCC_16K,
OPTION_VALUE_ZZCC_16KHX,
OPTION_VALUE_ZZCC_A5,
OPTION_VALUE_ZZCC_A5HX,
OPTION_VALUE_ZZCC_A6,
OPTION_VALUE_ZZCC_A6HX,
OPTION_VALUE_ZZCC_B4,
OPTION_VALUE_ZZCC_B5,
OPTION_VALUE_ZZCC_B5HX,
OPTION_VALUE_ZZCC_B6,
OPTION_VALUE_ZZCC_B6HX,
OPTION_VALUE_ZZCC_Letter,
OPTION_VALUE_ZZCC_LetterHX,
OPTION_VALUE_ZZCC_DoubleLetter,
OPTION_VALUE_ZZCC_LEGAL,
OPTION_VALUE_ZZCC_PPYSCC,
OPTION_VALUE_ZZCC_ZDSMCCZDCQ,
OPTION_VALUE_ZZCC_ZDSMCC,
OPTION_VALUE_ZZCC_SLSJ,
OPTION_VALUE_SMYM_DM,
OPTION_VALUE_SMYM_SM,
OPTION_VALUE_SMYM_TGKBYTY,
OPTION_VALUE_SMYM_TGKBYFPZ,
OPTION_VALUE_SMYM_DZ,
OPTION_VALUE_HZ_W,
OPTION_VALUE_HZ_SDYX,
OPTION_VALUE_HZ_HZYX,
OPTION_VALUE_BJTCFS_TDBX,
OPTION_VALUE_BJTCFS_ADBX,
OPTION_VALUE_FZSTDJ_R,
OPTION_VALUE_FZSTDJ_JR,
OPTION_VALUE_FZSTDJ_YB,
OPTION_VALUE_FZSTDJ_JQ,
OPTION_VALUE_FZSTDJ_Q,
OPTION_VALUE_SZTPCL_DQTXBTZSM,
OPTION_VALUE_SZTPCL_DQTXBJXSM,
OPTION_VALUE_SZTPCL_SCTXBTZSM,
OPTION_VALUE_SZTPCL_SCTXBJXSM,
OPTION_VALUE_SMZS_LXSM,
OPTION_VALUE_SMZS_SMZDZS,
OPTION_VALUE_WGFX_0,
OPTION_VALUE_WGFX_90,
OPTION_VALUE_WGFX_180,
OPTION_VALUE_WGFX__90,
OPTION_VALUE_WGFX_ZDWBFXSB
};
struct DeviceParam
{
DeviceParam()
@ -205,10 +352,14 @@ HGBool HGLibDeviceImpl::Close()
return HGTRUE;
}
HGBool HGLibDeviceImpl::SetParam(const HGChar* option, const HGVoid* data)
HGBool HGLibDeviceImpl::SetParam(HGUInt option, const HGVoid* data)
{
assert(NULL != m_devHandle);
if (NULL == option || NULL == data)
if (NULL == data)
return HGFALSE;
const char *optionName = GetOptionName(option);
if (NULL == optionName)
return HGFALSE;
HGBool ret = HGFALSE;
@ -220,17 +371,20 @@ HGBool HGLibDeviceImpl::SetParam(const HGChar* option, const HGVoid* data)
if (NULL == desp)
continue;
const char* name = desp->name;
const char* name = desp->title;
while (' ' == *name)
++name;
if (0 == strcmp(option, name))
if (0 == strcmp(optionName, name))
{
if (SANE_TYPE_STRING == desp->type)
{
SANE_Char* value = (SANE_Char*)(HGChar*)data;
if (SANE_STATUS_GOOD == sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, value, NULL))
ret = HGTRUE;
SANE_Char* value = (SANE_Char*)GetOptionEnumValue(*(HGUInt*)data);
if (NULL != value)
{
if (SANE_STATUS_GOOD == sane_control_option(m_devHandle, i, SANE_ACTION_SET_VALUE, value, NULL))
ret = HGTRUE;
}
}
else if (SANE_TYPE_INT == desp->type)
{
@ -258,7 +412,7 @@ HGBool HGLibDeviceImpl::SetParam(const HGChar* option, const HGVoid* data)
return ret;
}
HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
HGLibDeviceParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
{
assert(NULL != m_devHandle);
if (NULL == count)
@ -274,7 +428,7 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
if (NULL == desp)
continue;
const char* name = desp->name;
const char* name = desp->title;
while (' ' == *name)
++name;
@ -291,12 +445,12 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
DeviceParam devParam;
devParam.option = name;
devParam.valueType = HGLIB_DEVPARAM_TYPE_STRING;
devParam.valueType = HGLIB_OPTION_VALUETYPE_ENUM;
devParam.stringValue = value;
assert(SANE_CONSTRAINT_STRING_LIST == desp->constraint_type);
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_STRINGLIST;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_ENUMLIST;
const SANE_String_Const* p = desp->constraint.string_list;
while (NULL != *p)
{
@ -314,12 +468,12 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
DeviceParam devParam;
devParam.option = name;
devParam.valueType = HGLIB_DEVPARAM_TYPE_INT;
devParam.valueType = HGLIB_OPTION_VALUETYPE_INT;
devParam.intValue = (int)value;
if (SANE_CONSTRAINT_WORD_LIST == desp->constraint_type)
{
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_INTLIST;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_INTLIST;
const SANE_Word* p = desp->constraint.word_list;
for (SANE_Int i = 0; i < p[0]; ++i)
{
@ -328,7 +482,7 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
}
else if (SANE_CONSTRAINT_RANGE == desp->constraint_type)
{
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_INTRANGE;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_INTRANGE;
devParam.intValueMin = desp->constraint.range->min;
devParam.intValueMax = desp->constraint.range->max;
}
@ -343,12 +497,12 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
DeviceParam devParam;
devParam.option = name;
devParam.valueType = HGLIB_DEVPARAM_TYPE_DOUBLE;
devParam.valueType = HGLIB_OPTION_VALUETYPE_DOUBLE;
devParam.doubleValue = SANE_UNFIX(value);
if (SANE_CONSTRAINT_WORD_LIST == desp->constraint_type)
{
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_DOUBLELIST;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_DOUBLELIST;
const SANE_Word* p = desp->constraint.word_list;
for (SANE_Int i = 0; i < p[0]; ++i)
{
@ -357,7 +511,7 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
}
else if (SANE_CONSTRAINT_RANGE == desp->constraint_type)
{
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_DOUBLERANGE;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_DOUBLERANGE;
devParam.doubleValueMin = SANE_UNFIX(desp->constraint.range->min);
devParam.doubleValueMax = SANE_UNFIX(desp->constraint.range->max);
}
@ -372,10 +526,10 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
DeviceParam devParam;
devParam.option = name;
devParam.valueType = HGLIB_DEVPARAM_TYPE_BOOL;
devParam.valueType = HGLIB_OPTION_VALUETYPE_BOOL;
devParam.boolValue = (bool)value;
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_NULL;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_NULL;
assert(!devParams.empty());
devParams[devParams.size() - 1].devParams.push_back(devParam);
@ -383,44 +537,34 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
}
*count = (HGUInt)devParams.size();
HGLibDeviceGetParamGroup* paramGroup = (HGLibDeviceGetParamGroup*)malloc((*count) * sizeof(HGLibDeviceGetParamGroup));
HGLibDeviceParamGroup* paramGroup = (HGLibDeviceParamGroup*)malloc((*count) * sizeof(HGLibDeviceParamGroup));
if (NULL != paramGroup)
{
for (int i = 0; i < (int)devParams.size(); ++i)
{
paramGroup[i].groupName = (HGChar *)malloc(devParams[i].groupName.size() + 1);
if (NULL != paramGroup[i].groupName)
strcpy(paramGroup[i].groupName, devParams[i].groupName.c_str());
paramGroup[i].group = GetGroupName(devParams[i].groupName.c_str());
paramGroup[i].paramCount = (HGUInt)devParams[i].devParams.size();
paramGroup[i].param = (HGLibDeviceGetParam*)malloc(paramGroup[i].paramCount * sizeof(HGLibDeviceGetParam));
paramGroup[i].param = (HGLibDeviceParam*)malloc(paramGroup[i].paramCount * sizeof(HGLibDeviceParam));
if (NULL != paramGroup[i].param)
{
for (int j = 0; j < (int)devParams[i].devParams.size(); ++j)
{
HGLibDeviceGetParam& dest = paramGroup[i].param[j];
HGLibDeviceParam& dest = paramGroup[i].param[j];
DeviceParam& src = devParams[i].devParams[j];
dest.option = (HGChar *)malloc(src.option.size() + 1);
if (NULL != dest.option)
strcpy(dest.option, src.option.c_str());
dest.option = GetOptionName(src.option.c_str());
dest.type = src.valueType;
if (HGLIB_DEVPARAM_TYPE_INT == dest.type)
if (HGLIB_OPTION_VALUETYPE_INT == dest.type)
dest.intValue = src.intValue;
else if (HGLIB_DEVPARAM_TYPE_DOUBLE == dest.type)
else if (HGLIB_OPTION_VALUETYPE_DOUBLE == dest.type)
dest.doubleValue = src.doubleValue;
else if (HGLIB_DEVPARAM_TYPE_BOOL == dest.type)
else if (HGLIB_OPTION_VALUETYPE_BOOL == dest.type)
dest.boolValue = (HGBool)src.boolValue;
else if (HGLIB_DEVPARAM_TYPE_STRING == dest.type)
{
dest.stringValue = (HGChar *)malloc(src.stringValue.size() + 1);
if (NULL != dest.stringValue)
strcpy(dest.stringValue, src.stringValue.c_str());
}
else if (HGLIB_OPTION_VALUETYPE_ENUM == dest.type)
dest.enumValue = GetOptionEnumValue(src.stringValue.c_str());
dest.rangeType = src.rangeType;
if (HGLIB_DEVPARAM_RANGETYPE_INTLIST == dest.rangeType)
if (HGLIB_OPTION_VALUERANGETYPE_INTLIST == dest.rangeType)
{
dest.intValueList.count = (HGUInt)src.intValueList.size();
dest.intValueList.value = (HGInt *)malloc(dest.intValueList.count * sizeof(HGInt));
@ -432,7 +576,7 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
}
}
}
else if (HGLIB_DEVPARAM_RANGETYPE_DOUBLELIST == dest.rangeType)
else if (HGLIB_OPTION_VALUERANGETYPE_DOUBLELIST == dest.rangeType)
{
dest.doubleValueList.count = (HGUInt)src.doubleValueList.size();
dest.doubleValueList.value = (HGDouble*)malloc(dest.doubleValueList.count * sizeof(HGDouble));
@ -444,27 +588,25 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
}
}
}
else if (HGLIB_DEVPARAM_RANGETYPE_INTRANGE == dest.rangeType)
else if (HGLIB_OPTION_VALUERANGETYPE_INTRANGE == dest.rangeType)
{
dest.intValueRange.minValue = src.intValueMin;
dest.intValueRange.maxValue = src.intValueMax;
}
else if (HGLIB_DEVPARAM_RANGETYPE_DOUBLERANGE == dest.rangeType)
else if (HGLIB_OPTION_VALUERANGETYPE_DOUBLERANGE == dest.rangeType)
{
dest.doubleValueRange.minValue = src.doubleValueMin;
dest.doubleValueRange.maxValue = src.doubleValueMax;
}
else if (HGLIB_DEVPARAM_RANGETYPE_STRINGLIST == dest.rangeType)
else if (HGLIB_OPTION_VALUERANGETYPE_ENUMLIST == dest.rangeType)
{
dest.stringValueList.count = (HGUInt)src.stringValueList.size();
dest.stringValueList.value = (HGChar **)malloc(dest.stringValueList.count * sizeof(HGChar *));
if (NULL != dest.stringValueList.value)
dest.enumValueList.count = (HGUInt)src.stringValueList.size();
dest.enumValueList.value = (HGUInt*)malloc(dest.enumValueList.count * sizeof(HGUInt));
if (NULL != dest.enumValueList.value)
{
for (int k = 0; k < (int)src.stringValueList.size(); ++k)
{
dest.stringValueList.value[k] = (HGChar *)malloc(src.stringValueList[k].size() + 1);
if (NULL != dest.stringValueList.value[k])
strcpy(dest.stringValueList.value[k], src.stringValueList[k].c_str());
dest.enumValueList.value[k] = GetOptionEnumValue(src.stringValueList[k].c_str());
}
}
}
@ -476,13 +618,14 @@ HGLibDeviceGetParamGroup* HGLibDeviceImpl::GetParamGroupList(HGUInt* count)
return paramGroup;
}
HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
HGLibDeviceParam* HGLibDeviceImpl::GetParam(HGUInt option)
{
assert(NULL != m_devHandle);
if (NULL == option)
const char* optionName = GetOptionName(option);
if (NULL == optionName)
return NULL;
HGLibDeviceGetParam* param = NULL;
HGLibDeviceParam* param = NULL;
SANE_Int num_dev_options = 0;
sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, NULL);
for (int i = 1; i < num_dev_options; ++i)
@ -491,11 +634,11 @@ HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
if (NULL == desp)
continue;
const char* name = desp->name;
const char* name = desp->title;
while (' ' == *name)
++name;
if (0 == strcmp(option, name))
if (0 == strcmp(optionName, name))
{
DeviceParam devParam;
devParam.option = name;
@ -505,12 +648,12 @@ HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
char value[256] = { 0 };
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, value, NULL);
devParam.valueType = HGLIB_DEVPARAM_TYPE_STRING;
devParam.valueType = HGLIB_OPTION_VALUETYPE_ENUM;
devParam.stringValue = value;
assert(SANE_CONSTRAINT_STRING_LIST == desp->constraint_type);
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_STRINGLIST;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_ENUMLIST;
const SANE_String_Const* p = desp->constraint.string_list;
while (NULL != *p)
{
@ -523,12 +666,12 @@ HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
SANE_Int value = 0;
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
devParam.valueType = HGLIB_DEVPARAM_TYPE_INT;
devParam.valueType = HGLIB_OPTION_VALUETYPE_INT;
devParam.intValue = (int)value;
if (SANE_CONSTRAINT_WORD_LIST == desp->constraint_type)
{
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_INTLIST;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_INTLIST;
const SANE_Word* p = desp->constraint.word_list;
for (SANE_Int i = 0; i < p[0]; ++i)
{
@ -537,7 +680,7 @@ HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
}
else if (SANE_CONSTRAINT_RANGE == desp->constraint_type)
{
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_INTRANGE;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_INTRANGE;
devParam.intValueMin = desp->constraint.range->min;
devParam.intValueMax = desp->constraint.range->max;
}
@ -547,12 +690,12 @@ HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
SANE_Word value = 0;
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
devParam.valueType = HGLIB_DEVPARAM_TYPE_DOUBLE;
devParam.valueType = HGLIB_OPTION_VALUETYPE_DOUBLE;
devParam.doubleValue = SANE_UNFIX(value);
if (SANE_CONSTRAINT_WORD_LIST == desp->constraint_type)
{
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_DOUBLELIST;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_DOUBLELIST;
const SANE_Word* p = desp->constraint.word_list;
for (SANE_Int i = 0; i < p[0]; ++i)
{
@ -561,7 +704,7 @@ HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
}
else if (SANE_CONSTRAINT_RANGE == desp->constraint_type)
{
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_DOUBLERANGE;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_DOUBLERANGE;
devParam.doubleValueMin = SANE_UNFIX(desp->constraint.range->min);
devParam.doubleValueMax = SANE_UNFIX(desp->constraint.range->max);
}
@ -571,35 +714,28 @@ HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
SANE_Bool value = 0;
sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, NULL);
devParam.valueType = HGLIB_DEVPARAM_TYPE_BOOL;
devParam.valueType = HGLIB_OPTION_VALUETYPE_BOOL;
devParam.boolValue = (bool)value;
devParam.rangeType = HGLIB_DEVPARAM_RANGETYPE_NULL;
devParam.rangeType = HGLIB_OPTION_VALUERANGETYPE_NULL;
}
assert(0 != devParam.valueType);
param = (HGLibDeviceGetParam*)malloc(sizeof(HGLibDeviceGetParam));
param = (HGLibDeviceParam*)malloc(sizeof(HGLibDeviceParam));
if (NULL != param)
{
param->option = (HGChar*)malloc(devParam.option.size() + 1);
if (NULL != param->option)
strcpy(param->option, devParam.option.c_str());
param->option = GetOptionName(devParam.option.c_str());
param->type = devParam.valueType;
if (HGLIB_DEVPARAM_TYPE_INT == param->type)
if (HGLIB_OPTION_VALUETYPE_INT == param->type)
param->intValue = devParam.intValue;
else if (HGLIB_DEVPARAM_TYPE_DOUBLE == param->type)
else if (HGLIB_OPTION_VALUETYPE_DOUBLE == param->type)
param->doubleValue = devParam.doubleValue;
else if (HGLIB_DEVPARAM_TYPE_BOOL == param->type)
else if (HGLIB_OPTION_VALUETYPE_BOOL == param->type)
param->boolValue = (HGBool)devParam.boolValue;
else if (HGLIB_DEVPARAM_TYPE_STRING == param->type)
{
param->stringValue = (HGChar*)malloc(devParam.stringValue.size() + 1);
if (NULL != param->stringValue)
strcpy(param->stringValue, devParam.stringValue.c_str());
}
else if (HGLIB_OPTION_VALUETYPE_ENUM == param->type)
param->enumValue = GetOptionEnumValue(devParam.stringValue.c_str());
param->rangeType = devParam.rangeType;
if (HGLIB_DEVPARAM_RANGETYPE_INTLIST == param->rangeType)
if (HGLIB_OPTION_VALUERANGETYPE_INTLIST == param->rangeType)
{
param->intValueList.count = (HGUInt)devParam.intValueList.size();
param->intValueList.value = (HGInt*)malloc(param->intValueList.count * sizeof(HGInt));
@ -611,7 +747,7 @@ HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
}
}
}
else if (HGLIB_DEVPARAM_RANGETYPE_DOUBLELIST == param->rangeType)
else if (HGLIB_OPTION_VALUERANGETYPE_DOUBLELIST == param->rangeType)
{
param->doubleValueList.count = (HGUInt)devParam.doubleValueList.size();
param->doubleValueList.value = (HGDouble*)malloc(param->doubleValueList.count * sizeof(HGDouble));
@ -623,27 +759,25 @@ HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
}
}
}
else if (HGLIB_DEVPARAM_RANGETYPE_INTRANGE == param->rangeType)
else if (HGLIB_OPTION_VALUERANGETYPE_INTRANGE == param->rangeType)
{
param->intValueRange.minValue = devParam.intValueMin;
param->intValueRange.maxValue = devParam.intValueMax;
}
else if (HGLIB_DEVPARAM_RANGETYPE_DOUBLERANGE == param->rangeType)
else if (HGLIB_OPTION_VALUERANGETYPE_DOUBLERANGE == param->rangeType)
{
param->doubleValueRange.minValue = devParam.doubleValueMin;
param->doubleValueRange.maxValue = devParam.doubleValueMax;
}
else if (HGLIB_DEVPARAM_RANGETYPE_STRINGLIST == param->rangeType)
else if (HGLIB_OPTION_VALUERANGETYPE_ENUMLIST == param->rangeType)
{
param->stringValueList.count = (HGUInt)devParam.stringValueList.size();
param->stringValueList.value = (HGChar**)malloc(param->stringValueList.count * sizeof(HGChar*));
if (NULL != param->stringValueList.value)
param->enumValueList.count = (HGUInt)devParam.stringValueList.size();
param->enumValueList.value = (HGUInt*)malloc(param->enumValueList.count * sizeof(HGUInt));
if (NULL != param->enumValueList.value)
{
for (int k = 0; k < (int)devParam.stringValueList.size(); ++k)
{
param->stringValueList.value[k] = (HGChar*)malloc(devParam.stringValueList[k].size() + 1);
if (NULL != param->stringValueList.value[k])
strcpy(param->stringValueList.value[k], devParam.stringValueList[k].c_str());
param->enumValueList.value[k] = GetOptionEnumValue(devParam.stringValueList[k].c_str());
}
}
}
@ -656,7 +790,7 @@ HGLibDeviceGetParam* HGLibDeviceImpl::GetParam(const HGChar* option)
return param;
}
HGBool HGLibDeviceImpl::ReleaseParamGroupList(HGLibDeviceGetParamGroup* paramGroup, HGUInt count)
HGBool HGLibDeviceImpl::ReleaseParamGroupList(HGLibDeviceParamGroup* paramGroup, HGUInt count)
{
if (NULL == paramGroup || 0 == count)
{
@ -667,23 +801,14 @@ HGBool HGLibDeviceImpl::ReleaseParamGroupList(HGLibDeviceGetParamGroup* paramGro
{
for (HGUInt j = 0; j < paramGroup[i].paramCount; ++j)
{
free(paramGroup[i].param[j].option);
if (HGLIB_DEVPARAM_TYPE_STRING == paramGroup[i].param[j].type)
free(paramGroup[i].param[j].stringValue);
if (HGLIB_DEVPARAM_RANGETYPE_INTLIST == paramGroup[i].param[j].rangeType)
if (HGLIB_OPTION_VALUERANGETYPE_INTLIST == paramGroup[i].param[j].rangeType)
free(paramGroup[i].param[j].intValueList.value);
else if (HGLIB_DEVPARAM_RANGETYPE_DOUBLELIST == paramGroup[i].param[j].rangeType)
else if (HGLIB_OPTION_VALUERANGETYPE_DOUBLELIST == paramGroup[i].param[j].rangeType)
free(paramGroup[i].param[j].doubleValueList.value);
else if (HGLIB_DEVPARAM_RANGETYPE_STRINGLIST == paramGroup[i].param[j].rangeType)
{
for (HGUInt k = 0; k < paramGroup[i].param[j].stringValueList.count; ++k)
free(paramGroup[i].param[j].stringValueList.value[k]);
free(paramGroup[i].param[j].stringValueList.value);
}
else if (HGLIB_OPTION_VALUERANGETYPE_ENUMLIST == paramGroup[i].param[j].rangeType)
free(paramGroup[i].param[j].enumValueList.value);
}
free(paramGroup[i].groupName);
free(paramGroup[i].param);
}
@ -691,27 +816,19 @@ HGBool HGLibDeviceImpl::ReleaseParamGroupList(HGLibDeviceGetParamGroup* paramGro
return HGTRUE;
}
HGBool HGLibDeviceImpl::ReleaseParam(HGLibDeviceGetParam* param)
HGBool HGLibDeviceImpl::ReleaseParam(HGLibDeviceParam* param)
{
if (NULL == param)
{
return HGFALSE;
}
free(param->option);
if (HGLIB_DEVPARAM_TYPE_STRING == param->type)
free(param->stringValue);
if (HGLIB_DEVPARAM_RANGETYPE_INTLIST == param->rangeType)
if (HGLIB_OPTION_VALUERANGETYPE_INTLIST == param->rangeType)
free(param->intValueList.value);
else if (HGLIB_DEVPARAM_RANGETYPE_DOUBLELIST == param->rangeType)
else if (HGLIB_OPTION_VALUERANGETYPE_DOUBLELIST == param->rangeType)
free(param->doubleValueList.value);
else if (HGLIB_DEVPARAM_RANGETYPE_STRINGLIST == param->rangeType)
{
for (HGUInt k = 0; k < param->stringValueList.count; ++k)
free(param->stringValueList.value[k]);
free(param->stringValueList.value);
}
else if (HGLIB_OPTION_VALUERANGETYPE_ENUMLIST == param->rangeType)
free(param->enumValueList.value);
free(param);
return HGTRUE;
@ -800,6 +917,81 @@ HGBool HGLibDeviceImpl::StopScan()
return HGTRUE;
}
const char* HGLibDeviceImpl::GetGroupName(HGUInt group)
{
if (group > HGLIB_GROUP_NAME_PAPERFEEDING)
return NULL;
return GROUP_NAME[group];
}
HGUInt HGLibDeviceImpl::GetGroupName(const char* group)
{
if (NULL == group)
return 0;
HGUInt ret = 0;
for (int i = 1; i < sizeof(GROUP_NAME) / sizeof(const char*); ++i)
{
if (0 == strcmp(group, GROUP_NAME[i]))
{
ret = i;
break;
}
}
return ret;
}
const char* HGLibDeviceImpl::GetOptionName(HGUInt option)
{
if (option > HGLIB_OPTION_NAME_DZSM)
return NULL;
return OPTION_NAME[option];
}
HGUInt HGLibDeviceImpl::GetOptionName(const char* option)
{
if (NULL == option)
return 0;
HGUInt ret = 0;
for (int i = 1; i < sizeof(OPTION_NAME) / sizeof(const char*); ++i)
{
if (0 == strcmp(option, OPTION_NAME[i]))
{
ret = i;
break;
}
}
return ret;
}
const char* HGLibDeviceImpl::GetOptionEnumValue(HGUInt enumValue)
{
if (enumValue > HGLIB_OPTION_ENUMVALUE_WGFX_ZDWBFXSB)
return NULL;
return OPTION_ENUMVALUE[enumValue];
}
HGUInt HGLibDeviceImpl::GetOptionEnumValue(const char* enumValue)
{
if (NULL == enumValue)
return 0;
HGUInt ret = 0;
for (int i = 1; i < sizeof(OPTION_ENUMVALUE) / sizeof(const char*); ++i)
{
if (0 == strcmp(enumValue, OPTION_ENUMVALUE[i]))
{
ret = i;
break;
}
}
return ret;
}
int HGLibDeviceImpl::sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param)
{
switch (code)

View File

@ -23,17 +23,23 @@ public:
static HGLibDeviceImpl* Open(const HGChar* deviceName);
HGBool Close();
HGBool SetParam(const HGChar* option, const HGVoid* data);
HGLibDeviceGetParamGroup* GetParamGroupList(HGUInt* count);
HGLibDeviceGetParam* GetParam(const HGChar* option);
static HGBool ReleaseParamGroupList(HGLibDeviceGetParamGroup* paramGroup, HGUInt count);
static HGBool ReleaseParam(HGLibDeviceGetParam* param);
HGBool SetParam(HGUInt option, const HGVoid* data);
HGLibDeviceParamGroup* GetParamGroupList(HGUInt* count);
HGLibDeviceParam* GetParam(HGUInt option);
static HGBool ReleaseParamGroupList(HGLibDeviceParamGroup* paramGroup, HGUInt count);
static HGBool ReleaseParam(HGLibDeviceParam* param);
HGBool ResetParam();
HGBool StartScan(HGLibDeviceScanEventFunc eventFunc, HGPointer eventParam,
HGLibDeviceScanImageFunc imageFunc, HGPointer imageParam);
HGBool StopScan();
private:
static const char* GetGroupName(HGUInt group);
static HGUInt GetGroupName(const char* group);
static const char* GetOptionName(HGUInt option);
static HGUInt GetOptionName(const char* option);
static const char* GetOptionEnumValue(HGUInt enumValue);
static HGUInt GetOptionEnumValue(const char* enumValue);
static int sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param);
private:

View File

@ -129,7 +129,7 @@ HGBool HGAPI HGLib_CloseDevice(HGLibDevice device)
return deviceImpl->Close();
}
HGBool HGAPI HGLib_SetDeviceParam(HGLibDevice device, const HGChar* option, const HGVoid* data)
HGBool HGAPI HGLib_SetDeviceParam(HGLibDevice device, HGUInt option, const HGVoid* data)
{
if (NULL == device)
{
@ -140,7 +140,7 @@ HGBool HGAPI HGLib_SetDeviceParam(HGLibDevice device, const HGChar* option, cons
return deviceImpl->SetParam(option, data);
}
HGLibDeviceGetParamGroup* HGAPI HGLib_GetDeviceParamGroupList(HGLibDevice device, HGUInt* count)
HGLibDeviceParamGroup* HGAPI HGLib_GetDeviceParamGroupList(HGLibDevice device, HGUInt* count)
{
if (NULL == device)
{
@ -151,7 +151,7 @@ HGLibDeviceGetParamGroup* HGAPI HGLib_GetDeviceParamGroupList(HGLibDevice device
return deviceImpl->GetParamGroupList(count);
}
HGLibDeviceGetParam* HGAPI HGLib_GetDeviceParam(HGLibDevice device, const HGChar* option)
HGLibDeviceParam* HGAPI HGLib_GetDeviceParam(HGLibDevice device, HGUInt option)
{
if (NULL == device)
{
@ -162,12 +162,12 @@ HGLibDeviceGetParam* HGAPI HGLib_GetDeviceParam(HGLibDevice device, const HGChar
return deviceImpl->GetParam(option);
}
HGBool HGAPI HGLib_ReleaseDeviceParamGroupList(HGLibDeviceGetParamGroup* paramGroup, HGUInt count)
HGBool HGAPI HGLib_ReleaseDeviceParamGroupList(HGLibDeviceParamGroup* paramGroup, HGUInt count)
{
return HGLibDeviceImpl::ReleaseParamGroupList(paramGroup, count);
}
HGBool HGAPI HGLib_ReleaseDeviceParam(HGLibDeviceGetParam* param)
HGBool HGAPI HGLib_ReleaseDeviceParam(HGLibDeviceParam* param)
{
return HGLibDeviceImpl::ReleaseParam(param);
}

View File

@ -2,7 +2,6 @@
#define __HGSCANNERLIB_H__
#include "HGDef.h"
#include "HGScannerLibOption.h"
HG_DECLARE_HANDLE(HGLibImage);
HG_DECLARE_HANDLE(HGLibDevice);
@ -18,23 +17,299 @@ HG_DECLARE_HANDLE(HGLibDevice);
#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_DEVSCAN_EVENT_BEGIN 1L
#define HGLIB_DEVSCAN_EVENT_END 2L
#define HGLIB_DEVSCAN_EVENT_INFO 3L
/* 设备参数类型 */
#define HGLIB_DEVPARAM_TYPE_INT 1L
#define HGLIB_DEVPARAM_TYPE_STRING 2L
#define HGLIB_DEVPARAM_TYPE_DOUBLE 3L
#define HGLIB_DEVPARAM_TYPE_BOOL 4L
/* 组名 */
// 基本设置
#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_DEVPARAM_RANGETYPE_NULL 0L
#define HGLIB_DEVPARAM_RANGETYPE_INTLIST 1L
#define HGLIB_DEVPARAM_RANGETYPE_STRINGLIST 2L
#define HGLIB_DEVPARAM_RANGETYPE_DOUBLELIST 3L
#define HGLIB_DEVPARAM_RANGETYPE_INTRANGE 4L
#define HGLIB_DEVPARAM_RANGETYPE_DOUBLERANGE 5L
/* 配置名 */
// "多流输出"
#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_CKYC 45L
// #"穿孔搜索范围占幅面比例"
#define HGLIB_OPTION_NAME_CKSSFWZFMBL 46L
// "色彩填充"
#define HGLIB_OPTION_NAME_SCTC 47L
// "超声波检测"
#define HGLIB_OPTION_NAME_CSBJC 48L
// "双张图片处理"
#define HGLIB_OPTION_NAME_SZTPCL 49L
// "装订检测"
#define HGLIB_OPTION_NAME_ZDJC 50L
// "扫描张数"
#define HGLIB_OPTION_NAME_SMZS 51L
// "扫描数量"
#define HGLIB_OPTION_NAME_SMSL 52L
// "文稿方向"
#define HGLIB_OPTION_NAME_WGFX 53L
// "背面旋转180°"
#define HGLIB_OPTION_NAME_BMXZ180 54L
// "折角检测"
#define HGLIB_OPTION_NAME_ZJJC 55L
// "折角大小"
#define HGLIB_OPTION_NAME_ZJDX 56L
// "歪斜检测"
#define HGLIB_OPTION_NAME_WXJC 57L
// "歪斜容忍度"
#define HGLIB_OPTION_NAME_WXRRD 58L
// 自动搓纸强度
#define HGLIB_OPTION_NAME_ZDCZQD 59L
// 搓纸阈值
#define HGLIB_OPTION_NAME_CZYZ 60L
// 待纸扫描
#define HGLIB_OPTION_NAME_DZSM 61L
/* 配置枚举值 */
// "无"
#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
{
@ -53,9 +328,9 @@ typedef struct
typedef struct
{
HGChar** value;
HGUInt* value;
HGUInt count;
}HGLibDeviceStringValueList;
}HGLibDeviceEnumValueList;
typedef struct
{
@ -77,34 +352,34 @@ typedef struct
typedef struct
{
HGChar* option; /* 参数名 */
HGUInt option; /* 配置名, 参见HGLIB_OPTION_NAME_* */
HGUInt type; /* 参数类型, 参见HGLIB_DEVPARAM_TYPE_* */
HGUInt type; /* 值类型, 参见HGLIB_OPTION_VALUETYPE_* */
union
{
HGInt intValue;
HGChar* stringValue;
HGUInt enumValue;
HGDouble doubleValue;
HGBool boolValue;
};
HGUInt rangeType; /* 取值类型, 参见HGLIB_DEVPARAM_RANGETYPE_* */
HGUInt rangeType; /* 值范围类型, 参见HGLIB_OPTION_VALUERANGETYPE_* */
union
{
HGLibDeviceIntValueList intValueList;
HGLibDeviceStringValueList stringValueList;
HGLibDeviceEnumValueList enumValueList;
HGLibDeviceDoubleValueList doubleValueList;
HGLibDeviceIntValueRange intValueRange;
HGLibDeviceDoubleValueRange doubleValueRange;
};
}HGLibDeviceGetParam;
}HGLibDeviceParam;
typedef struct
{
HGChar* groupName;
HGLibDeviceGetParam* param;
HGUInt group; /* 组名, 参见HGLIB_GROUP_NAME_* */
HGLibDeviceParam* param;
HGUInt paramCount;
}HGLibDeviceGetParamGroup;
}HGLibDeviceParamGroup;
/* 设备热拔插回调
* event: HGLIB_DEVHOTPLUG_EVENT_*
@ -157,15 +432,15 @@ HGEXPORT HGLibDevice HGAPI HGLib_OpenDevice(const HGChar *deviceName);
HGEXPORT HGBool HGAPI HGLib_CloseDevice(HGLibDevice device);
/* 设置设备参数 */
HGEXPORT HGBool HGAPI HGLib_SetDeviceParam(HGLibDevice device, const HGChar *option, const HGVoid *data);
HGEXPORT HGBool HGAPI HGLib_SetDeviceParam(HGLibDevice device, HGUInt option, const HGVoid *data);
/* 获取设备参数 */
HGEXPORT HGLibDeviceGetParamGroup* HGAPI HGLib_GetDeviceParamGroupList(HGLibDevice device, HGUInt *count);
HGEXPORT HGLibDeviceGetParam* HGAPI HGLib_GetDeviceParam(HGLibDevice device, const HGChar* option);
HGEXPORT HGLibDeviceParamGroup* HGAPI HGLib_GetDeviceParamGroupList(HGLibDevice device, HGUInt *count);
HGEXPORT HGLibDeviceParam* HGAPI HGLib_GetDeviceParam(HGLibDevice device, HGUInt option);
/* 销毁设备参数 */
HGEXPORT HGBool HGAPI HGLib_ReleaseDeviceParamGroupList(HGLibDeviceGetParamGroup* paramGroup, HGUInt count);
HGEXPORT HGBool HGAPI HGLib_ReleaseDeviceParam(HGLibDeviceGetParam* param);
HGEXPORT HGBool HGAPI HGLib_ReleaseDeviceParamGroupList(HGLibDeviceParamGroup* paramGroup, HGUInt count);
HGEXPORT HGBool HGAPI HGLib_ReleaseDeviceParam(HGLibDeviceParam* param);
/* 重置设备参数 */
HGEXPORT HGBool HGAPI HGLib_ResetDeviceParam(HGLibDevice device);

View File

@ -1,327 +0,0 @@
#ifndef __HGSCANNERLIBOPTION_H__
#define __HGSCANNERLIBOPTION_H__
// "多流输出"
#define HGLIB_OPTION_NAME_DLSC "is-multiout"
// "多流输出类型"
#define HGLIB_OPTION_NAME_DLSCLX "multiout-type"
// "无"
#define HGLIB_OPTION_VALUE_DLSCLX_W "\346\227\240"
// "彩色+灰度+黑白"
#define HGLIB_OPTION_VALUE_DLSCLX_CS_HD_HB "\345\275\251\350\211\262+\347\201\260\345\272\246+\351\273\221\347\231\275"
// "彩色+灰度"
#define HGLIB_OPTION_VALUE_DLSCLX_CS_HD "\345\275\251\350\211\262+\347\201\260\345\272\246"
// "彩色+黑白"
#define HGLIB_OPTION_VALUE_DLSCLX_CS_HB "\345\275\251\350\211\262+\351\273\221\347\231\275"
// "灰度+黑白"
#define HGLIB_OPTION_VALUE_DLSCLX_HD_HB "\347\201\260\345\272\246+\351\273\221\347\231\275"
// "颜色模式"
#define HGLIB_OPTION_NAME_YSMS "mode"
// "24位彩色"
#define HGLIB_OPTION_VALUE_YSMS_24WCS "24\344\275\215\345\275\251\350\211\262"
// "256级灰度"
#define HGLIB_OPTION_VALUE_YSMS_256JHD "256\347\272\247\347\201\260\345\272\246"
// "黑白"
#define HGLIB_OPTION_VALUE_YSMS_HB "\351\273\221\347\231\275"
// "颜色自动识别"
#define HGLIB_OPTION_VALUE_YSMS_YSZDSB "\351\242\234\350\211\262\350\207\252\345\212\250\350\257\206\345\210\253"
// "黑白图像阈值"
#define HGLIB_OPTION_NAME_HBTXYZ "binary-threshold"
// "灰度或黑白图像 - 除色"
#define HGLIB_OPTION_NAME_HDHHBTX_CS "filter"
// "不除色"
#define HGLIB_OPTION_VALUE_HDHHBTX_CS_BCS "\344\270\215\351\231\244\350\211\262"
// "除红色"
#define HGLIB_OPTION_VALUE_HDHHBTX_CS_CHS "\351\231\244\347\272\242\350\211\262"
// "除绿色"
#define HGLIB_OPTION_VALUE_HDHHBTX_CS_CLS "\351\231\244\347\273\277\350\211\262"
// "除蓝色"
#define HGLIB_OPTION_VALUE_HDHHBTX_CS_CHULANSE "\351\231\244\350\223\235\350\211\262"
// "红色增强"
#define HGLIB_OPTION_VALUE_HDHHBTX_CS_HSZQ "\347\272\242\350\211\262\345\242\236\345\274\272"
// "绿色增强"
#define HGLIB_OPTION_VALUE_HDHHBTX_CS_LSZQ "\347\273\277\350\211\262\345\242\236\345\274\272"
// "蓝色增强"
#define HGLIB_OPTION_VALUE_HDHHBTX_CS_LANSEZENGQIANG "\350\223\235\350\211\262\345\242\236\345\274\272"
// "24位彩色图像 - 多流输出除红"
#define HGLIB_OPTION_NAME_24WCSTX_DLSCCH "is-rid-multiout-red"
// "24位彩色图像 - 答题卡除红"
#define HGLIB_OPTION_NAME_24WCSTX_DTKCH "is-rid-answer-sheet-red"
// "背景移除"
#define HGLIB_OPTION_NAME_BJYC "is-erase-bkg"
// "背景色彩浮动范围"
#define HGLIB_OPTION_NAME_BJSCFDFW "bkg-color-range"
// "锐化与模糊"
#define HGLIB_OPTION_NAME_RHYMH "sharpen"
// "无"
#define HGLIB_OPTION_VALUE_RHYMH_W "\346\227\240"
// "锐化"
#define HGLIB_OPTION_VALUE_RHYMH_RH "\351\224\220\345\214\226"
// "进一步锐化"
#define HGLIB_OPTION_VALUE_RHYMH_JYBRH "\350\277\233\344\270\200\346\255\245\351\224\220\345\214\226"
// "模糊"
#define HGLIB_OPTION_VALUE_RHYMH_MH "\346\250\241\347\263\212"
// "进一步模糊"
#define HGLIB_OPTION_VALUE_RHYMH_JYBMH "\350\277\233\344\270\200\346\255\245\346\250\241\347\263\212"
// "去除摩尔纹"
#define HGLIB_OPTION_NAME_QCMW "is-rid-morr"
// "除网纹"
#define HGLIB_OPTION_NAME_CWW "is-rid-grid"
// "错误扩散"
#define HGLIB_OPTION_NAME_CWKS "is-err-extension"
// "黑白图像噪点优化"
#define HGLIB_OPTION_NAME_HBTXZDYH "is-noise-optimize"
// "噪点优化尺寸"
#define HGLIB_OPTION_NAME_ZDYHCC "noise-size"
// "纸张尺寸"
#define HGLIB_OPTION_NAME_ZZCC "paper"
// "A3"
#define HGLIB_OPTION_VALUE_ZZCC_A3 "A3"
// "8开"
#define HGLIB_OPTION_VALUE_ZZCC_8K "8\345\274\200"
// "A4"
#define HGLIB_OPTION_VALUE_ZZCC_A4 "A4"
// "A4横向"
#define HGLIB_OPTION_VALUE_ZZCC_A4HX "A4\346\250\252\345\220\221"
// "16开"
#define HGLIB_OPTION_VALUE_ZZCC_16K "16\345\274\200"
// "16开横向"
#define HGLIB_OPTION_VALUE_ZZCC_16KHX "16\345\274\200\346\250\252\345\220\221"
// "A5"
#define HGLIB_OPTION_VALUE_ZZCC_A5 "A5"
// "A5横向"
#define HGLIB_OPTION_VALUE_ZZCC_A5HX "A5\346\250\252\345\220\221"
// "A6"
#define HGLIB_OPTION_VALUE_ZZCC_A6 "A6"
// "A6横向"
#define HGLIB_OPTION_VALUE_ZZCC_A6HX "A6\346\250\252\345\220\221"
// "B4"
#define HGLIB_OPTION_VALUE_ZZCC_B4 "B4"
// "B5"
#define HGLIB_OPTION_VALUE_ZZCC_B5 "B5"
// "B5横向"
#define HGLIB_OPTION_VALUE_ZZCC_B5HX "B5\346\250\252\345\220\221"
// "B6"
#define HGLIB_OPTION_VALUE_ZZCC_B6 "B6"
// "B6横向"
#define HGLIB_OPTION_VALUE_ZZCC_B6HX "B6\346\250\252\345\220\221"
// "Letter"
#define HGLIB_OPTION_VALUE_ZZCC_Letter "Letter"
// "Letter横向"
#define HGLIB_OPTION_VALUE_ZZCC_LetterHX "Letter\346\250\252\345\220\221"
// "Double Letter"
#define HGLIB_OPTION_VALUE_ZZCC_DoubleLetter "Double Letter"
// "LEGAL"
#define HGLIB_OPTION_VALUE_ZZCC_LEGAL "LEGAL"
// "匹配原始尺寸"
#define HGLIB_OPTION_VALUE_ZZCC_PPYSCC "\345\214\271\351\205\215\345\216\237\345\247\213\345\260\272\345\257\270"
// "最大扫描尺寸自动裁切"
#define HGLIB_OPTION_VALUE_ZZCC_ZDSMCCZDCQ "\346\234\200\345\244\247\346\211\253\346\217\217\345\260\272\345\257\270\350\207\252\345\212\250\350\243\201\345\210\207"
// "最大扫描尺寸"
#define HGLIB_OPTION_VALUE_ZZCC_ZDSMCC "\346\234\200\345\244\247\346\211\253\346\217\217\345\260\272\345\257\270"
// "三联试卷"
#define HGLIB_OPTION_VALUE_ZZCC_SLSJ "\344\270\211\350\201\224\350\257\225\345\215\267"
// "自定义扫描区域"
#define HGLIB_OPTION_NAME_ZDYSMQY "is-custom-area"
// "扫描区域左侧mm"
#define HGLIB_OPTION_NAME_SMQYZCmm "tl-x"
// "扫描区域右侧mm"
#define HGLIB_OPTION_NAME_SMQYYCmm "br-x"
// "扫描区域上侧mm"
#define HGLIB_OPTION_NAME_SMQYSCmm "tl-y"
// "扫描区域下侧mm"
#define HGLIB_OPTION_NAME_SMQYXCmm "br-y"
// "尺寸检测"
#define HGLIB_OPTION_NAME_CCJC "is-size-check"
// "扫描页面"
#define HGLIB_OPTION_NAME_SMYM "page"
// "单面"
#define HGLIB_OPTION_VALUE_SMYM_DM "\345\215\225\351\235\242"
// "双面"
#define HGLIB_OPTION_VALUE_SMYM_SM "\345\217\214\351\235\242"
// "跳过空白页(通用)"
#define HGLIB_OPTION_VALUE_SMYM_TGKBYTY "\350\267\263\350\277\207\347\251\272\347\231\275\351\241\265\357\274\210\351\200\232\347\224\250\357\274\211"
// "跳过空白页(发票纸)"
#define HGLIB_OPTION_VALUE_SMYM_TGKBYFPZ "\350\267\263\350\277\207\347\251\272\347\231\275\351\241\265\357\274\210\345\217\221\347\245\250\347\272\270\357\274\211"
// "对折"
#define HGLIB_OPTION_VALUE_SMYM_DZ "\345\257\271\346\212\230"
// "跳过空白页灵敏度"
#define HGLIB_OPTION_NAME_TGKBYLMD "blank-sensitivity"
// "分纸强度"
#define HGLIB_OPTION_NAME_FZQD "feed-strength"
// "休眠时间"
#define HGLIB_OPTION_NAME_XMSJ "time-to-sleep"
// "分辨率"
#define HGLIB_OPTION_NAME_FBL "resolution"
// "画质"
#define HGLIB_OPTION_NAME_HZ "image-quality"
// "无"
#define HGLIB_OPTION_VALUE_HZ_W "\346\227\240"
// "速度优先"
#define HGLIB_OPTION_VALUE_HZ_SDYX "\351\200\237\345\272\246\344\274\230\345\205\210"
// "画质优先"
#define HGLIB_OPTION_VALUE_HZ_HZYX "\347\224\273\350\264\250\344\274\230\345\205\210"
// "交换正反面"
#define HGLIB_OPTION_NAME_JHZFM "is-exchange"
// "图像拆分"
#define HGLIB_OPTION_NAME_TXCF "is-split"
// "自动纠偏"
#define HGLIB_OPTION_NAME_ZDJP "is-anti-skew"
// "启用色调曲线"
#define HGLIB_OPTION_NAME_QYSDQX "is-custom-gamma"
// "亮度值"
#define HGLIB_OPTION_NAME_LDZ "brightness"
// "对比度"
#define HGLIB_OPTION_NAME_DBD "contrast"
// "伽马值"
#define HGLIB_OPTION_NAME_GMZ "gamma"
// "照片模式"
#define HGLIB_OPTION_NAME_ZPMS "is-photo-mode"
// "消除黑框"
#define HGLIB_OPTION_NAME_XCHK "is-erase-balck-frame"
// "深色样张"
#define HGLIB_OPTION_NAME_SSYZ "is-dark-sample"
// "阈值"
#define HGLIB_OPTION_NAME_YZ "threshold"
// "背景抗噪等级"
#define HGLIB_OPTION_NAME_BJKZDJ "anti-noise-level"
// "边缘缩进"
#define HGLIB_OPTION_NAME_BYSJ "margin"
// "背景填充方式"
#define HGLIB_OPTION_NAME_BJTCFS "bkg-fill-mode"
// "凸多边形"
#define HGLIB_OPTION_VALUE_BJTCFS_TDBX "\345\207\270\345\244\232\350\276\271\345\275\242"
// "凹多边形"
#define HGLIB_OPTION_VALUE_BJTCFS_ADBX "\345\207\271\345\244\232\350\276\271\345\275\242"
// "防止渗透"
#define HGLIB_OPTION_NAME_FZST "is-anti-permeate"
// "防止渗透等级"
#define HGLIB_OPTION_NAME_FZSTDJ "permeate-level"
// "弱"
#define HGLIB_OPTION_VALUE_FZSTDJ_R "\345\274\261"
// "较弱"
#define HGLIB_OPTION_VALUE_FZSTDJ_JR "\350\276\203\345\274\261"
// "一般"
#define HGLIB_OPTION_VALUE_FZSTDJ_YB "\344\270\200\350\210\254"
// "较强"
#define HGLIB_OPTION_VALUE_FZSTDJ_JQ "\350\276\203\345\274\272"
// "强"
#define HGLIB_OPTION_VALUE_FZSTDJ_Q "\345\274\272"
// "穿孔移除"
#define HGLIB_OPTION_NAME_CKYC "is-rid-hole"
// #"穿孔搜索范围占幅面比例"
#define HGLIB_OPTION_NAME_CKSSFWZFMBL "search-hole-range"
// "色彩填充"
#define HGLIB_OPTION_NAME_SCTC "is-fill-color"
// "超声波检测"
#define HGLIB_OPTION_NAME_CSBJC "is-ultrosonic"
// "双张图片处理"
#define HGLIB_OPTION_NAME_SZTPCL "double-feed"
// "丢弃图像并停止扫描"
#define HGLIB_OPTION_VALUE_SZTPCL_DQTXBTZSM "\344\270\242\345\274\203\345\233\276\345\203\217\345\271\266\345\201\234\346\255\242\346\211\253\346\217\217"
// "丢弃图像并继续扫描"
#define HGLIB_OPTION_VALUE_SZTPCL_DQTXBJXSM "\344\270\242\345\274\203\345\233\276\345\203\217\345\271\266\347\273\247\347\273\255\346\211\253\346\217\217"
// "上传图像并停止扫描"
#define HGLIB_OPTION_VALUE_SZTPCL_SCTXBTZSM "\344\270\212\344\274\240\345\233\276\345\203\217\345\271\266\345\201\234\346\255\242\346\211\253\346\217\217"
// "上传图像并继续扫描"
#define HGLIB_OPTION_VALUE_SZTPCL_SCTXBJXSM "\344\270\212\344\274\240\345\233\276\345\203\217\345\271\266\347\273\247\347\273\255\346\211\253\346\217\217"
// "装订检测"
#define HGLIB_OPTION_NAME_ZDJC "is-staple"
// "扫描张数"
#define HGLIB_OPTION_NAME_SMZS "scan-mode"
// "连续扫描"
#define HGLIB_OPTION_VALUE_SMZS_LXSM "\350\277\236\347\273\255\346\211\253\346\217\217"
// "扫描指定张数"
#define HGLIB_OPTION_VALUE_SMZS_SMZDZS "\346\211\253\346\217\217\346\214\207\345\256\232\345\274\240\346\225\260"
// "扫描数量"
#define HGLIB_OPTION_NAME_SMSL "scan-count"
// "文稿方向"
#define HGLIB_OPTION_NAME_WGFX "direction"
// "0°"
#define HGLIB_OPTION_VALUE_WGFX_0 "0\302\260"
// "90°"
#define HGLIB_OPTION_VALUE_WGFX_90 "90\302\260"
// "180°"
#define HGLIB_OPTION_VALUE_WGFX_180 "180\302\260"
// "-90°"
#define HGLIB_OPTION_VALUE_WGFX__90 "-90\302\260"
// "自动文本方向识别°"
#define HGLIB_OPTION_VALUE_WGFX_ZDWBFXSB "\350\207\252\345\212\250\346\226\207\346\234\254\346\226\271\345\220\221\350\257\206\345\210\253\302\260"
// "背面旋转180°"
#define HGLIB_OPTION_NAME_BMXZ180 "is-rotate-bkg-180"
// "折角检测"
#define HGLIB_OPTION_NAME_ZJJC "is-check-dog-ear"
// "折角大小"
#define HGLIB_OPTION_NAME_ZJDX "dog-ear-size"
// "歪斜检测"
#define HGLIB_OPTION_NAME_WXJC "is-check-askew"
// "歪斜容忍度"
#define HGLIB_OPTION_NAME_WXRRD "askew-range"
// 自动搓纸强度
#define HGLIB_OPTION_NAME_ZDCZQD "is-auto-strength"
// 搓纸阈值
#define HGLIB_OPTION_NAME_CZYZ "feed-strength-value"
// 待纸扫描
#define HGLIB_OPTION_NAME_DZSM "is-wait-scan"
#endif /* __HGSCANNERLIBOPTION_H__ */