diff --git a/build/windows/HGScannerLib/HGScannerLib.vcxproj b/build/windows/HGScannerLib/HGScannerLib.vcxproj index 5b2aae68..52d2c923 100644 --- a/build/windows/HGScannerLib/HGScannerLib.vcxproj +++ b/build/windows/HGScannerLib/HGScannerLib.vcxproj @@ -42,7 +42,6 @@ - diff --git a/sdk/scannerlib/HGLibDeviceImpl.cpp b/sdk/scannerlib/HGLibDeviceImpl.cpp index 4ab07ca1..7e46d930 100644 --- a/sdk/scannerlib/HGLibDeviceImpl.cpp +++ b/sdk/scannerlib/HGLibDeviceImpl.cpp @@ -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) diff --git a/sdk/scannerlib/HGLibDeviceImpl.hpp b/sdk/scannerlib/HGLibDeviceImpl.hpp index 4ab268ff..f39b7adc 100644 --- a/sdk/scannerlib/HGLibDeviceImpl.hpp +++ b/sdk/scannerlib/HGLibDeviceImpl.hpp @@ -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: diff --git a/sdk/scannerlib/HGScannerLib.cpp b/sdk/scannerlib/HGScannerLib.cpp index 6b07b1de..9f11d091 100644 --- a/sdk/scannerlib/HGScannerLib.cpp +++ b/sdk/scannerlib/HGScannerLib.cpp @@ -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); } diff --git a/sdk/scannerlib/HGScannerLib.h b/sdk/scannerlib/HGScannerLib.h index ef6eddce..68c75574 100644 --- a/sdk/scannerlib/HGScannerLib.h +++ b/sdk/scannerlib/HGScannerLib.h @@ -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); diff --git a/sdk/scannerlib/HGScannerLibOption.h b/sdk/scannerlib/HGScannerLibOption.h deleted file mode 100644 index c5303356..00000000 --- a/sdk/scannerlib/HGScannerLibOption.h +++ /dev/null @@ -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__ */ \ No newline at end of file