增加自定义区域及gamma属性

This commit is contained in:
gb 2022-05-06 13:36:37 +08:00
parent 2d77f9e44d
commit 4a81f1bbc0
4 changed files with 235 additions and 154 deletions

View File

@ -1,6 +1,6 @@
{
"device_type": "G100",
"option_count": 47,
"option_count": 53,
"1": {
"category": "base",
"name": "cfg-1",
@ -35,7 +35,7 @@
"type": "string",
"cur": "24位彩色",
"default": "24位彩色",
"size": 24,
"size": 32,
"range": ["24位彩色", "256级灰度", "黑白", "颜色自动识别"]
},
"5": {
@ -46,7 +46,7 @@
"type": "string",
"cur": "不除色",
"default": "不除色",
"size": 20,
"size": 24,
"range": ["不除色", "除红色", "除绿色", "除蓝色", "红色增强", "绿色增强", "蓝色增强"],
"depend_or": ["4==256级灰度", "4==黑白"]
},
@ -132,12 +132,82 @@
"type": "string",
"cur": "匹配原始尺寸",
"default": "匹配原始尺寸",
"size": 44,
"size": 48,
"range": ["A3", "8开", "A4", "A4横向", "16开", "16开横向", "A5", "A5横向", "A6", "A6横向", "B4", "B5", "B5横向", "B6", "B6横向", "Letter", "Letter横向", "Double Letter", "LEGAL", "匹配原始尺寸", "最大扫描尺寸自动裁切", "最大扫描尺寸", "三联试卷"]
},
"13": {
"category": "base",
"name": "cfg-13",
"title": "自定义扫描区域",
"desc": "自定义扫描区域",
"type": "bool",
"cur": false,
"default": false,
"size": 4
},
"14": {
"category": "base",
"name": "tl-x",
"title": "扫描区域左侧mm",
"desc": "自定义扫描区域左上角x坐标",
"type": "float",
"cur": 0.000000,
"default": 0.000000,
"size": 4,
"range": {
"min": 0.000000,
"max": 210.000000
},
"depend_and": ["13==true"]
},
"15": {
"category": "base",
"name": "br-x",
"title": "扫描区域右侧mm",
"desc": "自定义扫描区域右下角x坐标",
"type": "float",
"cur": 210.000000,
"default": 210.000000,
"size": 4,
"range": {
"min": 0.000000,
"max": 210.000000
},
"depend_and": ["13==true"]
},
"16": {
"category": "base",
"name": "tl-y",
"title": "扫描区域上侧mm",
"desc": "自定义扫描区域左上角y坐标",
"type": "float",
"cur": 0.000000,
"default": 0.000000,
"size": 4,
"range": {
"min": 0.000000,
"max": 297.000000
},
"depend_and": ["13==true"]
},
"17": {
"category": "base",
"name": "br-y",
"title": "扫描区域下侧mm",
"desc": "自定义扫描区域右下角y坐标",
"type": "float",
"cur": 297.000000,
"default": 297.000000,
"size": 4,
"range": {
"min": 0.000000,
"max": 297.000000
},
"depend_and": ["13==true"]
},
"18": {
"category": "base",
"name": "cfg-18",
"title": "扫描页面",
"desc": "设置页面扫描方式",
"type": "string",
@ -146,9 +216,9 @@
"size": 40,
"range": ["单面", "双面", "跳过空白页(通用)", "跳过空白页(发票纸)", "对折"]
},
"14": {
"19": {
"category": "base",
"name": "cfg-14",
"name": "cfg-19",
"title": " 跳过空白页灵敏度",
"desc": "灵敏度越高,则越容易跳过",
"type": "int",
@ -159,11 +229,11 @@
"min": 1,
"max": 100
},
"depend_or": ["13==跳过空白页(通用)", "13==跳过空白页(发票纸)"]
"depend_or": ["18==跳过空白页(通用)", "18==跳过空白页(发票纸)"]
},
"15": {
"20": {
"category": "base",
"name": "cfg-15",
"name": "cfg-20",
"title": "分辨率",
"desc": "扫描仪分辨率",
"type": "int",
@ -175,42 +245,42 @@
"max": 300
}
},
"16": {
"21": {
"category": "base",
"name": "cfg-16",
"name": "cfg-21",
"title": "交换正反面",
"desc": "交换正反面",
"type": "bool",
"cur": false,
"default": false,
"size": 4,
"depend_and": ["13!=单面"]
"depend_and": ["18!=单面"]
},
"17": {
"22": {
"category": "base",
"name": "cfg-17",
"name": "cfg-22",
"title": "图像拆分",
"desc": "自动拆分图像",
"type": "bool",
"cur": false,
"default": false,
"size": 4,
"depend_or": ["13!=对折"]
"depend_or": ["18!=对折"]
},
"18": {
"23": {
"category": "base",
"name": "cfg-18",
"name": "cfg-23",
"title": "自动纠偏",
"desc": "自动纠偏",
"type": "bool",
"cur": true,
"default": true,
"size": 4,
"depend_or": ["13!=对折"]
"depend_or": ["18!=对折"]
},
"19": {
"24": {
"category": "base",
"name": "cfg-19",
"name": "cfg-24",
"title": "穿孔移除",
"desc": "移除纸张中的穿孔",
"type": "bool",
@ -218,9 +288,9 @@
"default": false,
"size": 4
},
"20": {
"25": {
"category": "base",
"name": "cfg-20",
"name": "cfg-25",
"title": " 穿孔搜索范围占幅面比例",
"desc": "穿孔搜索范围占幅面比例",
"type": "float",
@ -231,18 +301,28 @@
"min": 0.010000,
"max": 0.500000
},
"depend_or": ["19==true"]
"depend_or": ["24==true"]
},
"21": {
"26": {
"category": "base",
"name": "grp-2",
"title": "亮度",
"type": "group"
},
"22": {
"27": {
"category": "base",
"name": "cfg-22",
"title": "亮度",
"name": "cfg-27",
"title": "启用色调曲线",
"desc": "通过色调曲线来设置图像伽玛值",
"type": "bool",
"cur": false,
"default": false,
"size": 4
},
"28": {
"category": "base",
"name": "cfg-28",
"title": "亮度值",
"desc": "调整图片亮度",
"type": "int",
"cur": 128,
@ -251,11 +331,12 @@
"range": {
"min": 1,
"max": 255
}
},
"depend_and": ["27==false"]
},
"23": {
"29": {
"category": "base",
"name": "cfg-23",
"name": "cfg-29",
"title": "对比度",
"desc": "调整图片对比度",
"type": "int",
@ -265,12 +346,13 @@
"range": {
"min": 1,
"max": 7
}
},
"depend_and": ["27==false"]
},
"24": {
"30": {
"category": "base",
"name": "cfg-24",
"title": "伽玛",
"name": "cfg-30",
"title": "伽玛",
"desc": "调整图片伽玛值",
"type": "float",
"cur": 1.000000,
@ -279,28 +361,29 @@
"range": {
"min": 0.010000,
"max": 5.000000
}
},
"depend_and": ["27==false"]
},
"25": {
"31": {
"category": "base",
"name": "grp-3",
"title": "图像处理",
"type": "group"
},
"26": {
"32": {
"category": "base",
"name": "cfg-26",
"name": "cfg-32",
"title": "锐化与模糊",
"desc": "锐化与模糊",
"type": "string",
"cur": "无",
"default": "无",
"size": 20,
"size": 24,
"range": ["无", "锐化", "进一步锐化", "模糊", "进一步模糊"]
},
"27": {
"33": {
"category": "base",
"name": "cfg-27",
"name": "cfg-33",
"title": "消除黑框",
"desc": "消除黑框",
"type": "bool",
@ -308,20 +391,20 @@
"default": true,
"size": 4
},
"28": {
"34": {
"category": "base",
"name": "cfg-28",
"name": "cfg-34",
"title": "深色样张",
"desc": "深色样张",
"type": "bool",
"cur": false,
"default": false,
"size": 4,
"depend_and": ["13!=对折", "27!=true", "12!=匹配原始尺寸", "12!=最大扫描尺寸", "12!=最大扫描尺寸自动裁切", "18!=true"]
"depend_and": ["18!=对折", "33!=true", "12!=匹配原始尺寸", "12!=最大扫描尺寸", "12!=最大扫描尺寸自动裁切", "23!=true"]
},
"29": {
"35": {
"category": "advanced",
"name": "cfg-29",
"name": "cfg-35",
"title": "阈值",
"desc": "阈值",
"type": "int",
@ -332,11 +415,11 @@
"min": 30,
"max": 50
},
"depend_or": ["27==true", "12==匹配原始尺寸", "12==最大扫描尺寸", "12==最大扫描尺寸自动裁切", "18==true"]
"depend_or": ["33==true", "12==匹配原始尺寸", "12==最大扫描尺寸", "12==最大扫描尺寸自动裁切", "23==true"]
},
"30": {
"36": {
"category": "advanced",
"name": "cfg-30",
"name": "cfg-36",
"title": "背景抗噪等级",
"desc": "背景抗噪等级",
"type": "int",
@ -347,11 +430,11 @@
"min": 1,
"max": 20
},
"depend_or": ["27==true", "12==匹配原始尺寸", "12==最大扫描尺寸", "12==最大扫描尺寸自动裁切", "18==true"]
"depend_or": ["33==true", "12==匹配原始尺寸", "12==最大扫描尺寸", "12==最大扫描尺寸自动裁切", "23==true"]
},
"31": {
"37": {
"category": "advanced",
"name": "cfg-31",
"name": "cfg-37",
"title": "边缘缩进",
"desc": "边缘缩进",
"type": "int",
@ -362,11 +445,11 @@
"min": 5,
"max": 30
},
"depend_or": ["27==true", "12==匹配原始尺寸", "12==最大扫描尺寸自动裁切", "18==true", "12==最大扫描尺寸"]
"depend_or": ["33==true", "12==匹配原始尺寸", "12==最大扫描尺寸自动裁切", "23==true", "12==最大扫描尺寸"]
},
"32": {
"38": {
"category": "advanced",
"name": "cfg-32",
"name": "cfg-38",
"title": "背景填充方式",
"desc": "背景填充方式",
"type": "string",
@ -374,11 +457,11 @@
"default": "凸多边形",
"size": 40,
"range": ["凸多边形", "凹多边形"],
"depend_or": ["27==true"]
"depend_or": ["33==true"]
},
"33": {
"39": {
"category": "base",
"name": "cfg-33",
"name": "cfg-39",
"title": "防止渗透",
"desc": "",
"type": "bool",
@ -386,21 +469,21 @@
"default": false,
"size": 4
},
"34": {
"40": {
"category": "base",
"name": "cfg-34",
"name": "cfg-40",
"title": " 防止渗透等级",
"desc": "",
"type": "string",
"cur": "较弱",
"default": "较弱",
"size": 12,
"size": 16,
"range": ["较弱", "弱", "一般", "强", "较强"],
"depend_or": ["33==true"]
"depend_or": ["39==true"]
},
"35": {
"41": {
"category": "base",
"name": "cfg-35",
"name": "cfg-41",
"title": "去除摩尔纹",
"desc": "",
"type": "bool",
@ -408,9 +491,9 @@
"default": false,
"size": 4
},
"36": {
"42": {
"category": "base",
"name": "cfg-36",
"name": "cfg-42",
"title": "错误扩散",
"desc": "",
"type": "bool",
@ -418,9 +501,9 @@
"default": false,
"size": 4
},
"37": {
"43": {
"category": "base",
"name": "cfg-37",
"name": "cfg-43",
"title": "除网纹",
"desc": "",
"type": "bool",
@ -428,81 +511,17 @@
"default": false,
"size": 4
},
"38": {
"44": {
"category": "base",
"name": "grp-4",
"title": "送纸方式设置",
"type": "group"
},
"39": {
"category": "base",
"name": "cfg-39",
"title": "超声波检测",
"desc": "超声波检测送纸状态",
"type": "bool",
"cur": true,
"default": true,
"size": 4
},
"40": {
"category": "base",
"name": "cfg-40",
"title": "装订检测",
"desc": "检测纸张上是否有钉书钉",
"type": "bool",
"cur": false,
"default": false,
"size": 4
},
"41": {
"category": "base",
"name": "cfg-41",
"title": "扫描张数",
"desc": "扫描纸张数量",
"type": "string",
"cur": "连续扫描",
"default": "连续扫描",
"size": 24,
"range": ["连续扫描", "扫描指定张数"]
},
"42": {
"category": "base",
"name": "cfg-42",
"title": " 扫描数量",
"desc": "扫描指定数量",
"type": "int",
"cur": 1,
"default": 1,
"size": 4,
"depend_or": ["41==扫描指定张数"]
},
"43": {
"category": "base",
"name": "cfg-43",
"title": "文稿方向",
"desc": "文稿方向",
"type": "string",
"cur": "0°",
"default": "0°",
"size": 40,
"range": ["0°", "90°", "180°", "-90°", "自动文本方向识别°"]
},
"44": {
"category": "base",
"name": "cfg-44",
"title": "背面旋转180°",
"desc": "背面扫描的图像旋转180°",
"type": "bool",
"cur": false,
"default": false,
"size": 4,
"depend_and": ["13!=单面", "13!=对折", "43!=自动文本方向识别°"]
},
"45": {
"category": "base",
"name": "cfg-45",
"title": "歪斜检测",
"desc": "纸张歪斜检测",
"title": "超声波检测",
"desc": "超声波检测送纸状态",
"type": "bool",
"cur": true,
"default": true,
@ -511,6 +530,70 @@
"46": {
"category": "base",
"name": "cfg-46",
"title": "装订检测",
"desc": "检测纸张上是否有钉书钉",
"type": "bool",
"cur": false,
"default": false,
"size": 4
},
"47": {
"category": "base",
"name": "cfg-47",
"title": "扫描张数",
"desc": "扫描纸张数量",
"type": "string",
"cur": "连续扫描",
"default": "连续扫描",
"size": 32,
"range": ["连续扫描", "扫描指定张数"]
},
"48": {
"category": "base",
"name": "cfg-48",
"title": " 扫描数量",
"desc": "扫描指定数量",
"type": "int",
"cur": 1,
"default": 1,
"size": 4,
"depend_or": ["47==扫描指定张数"]
},
"49": {
"category": "base",
"name": "cfg-49",
"title": "文稿方向",
"desc": "文稿方向",
"type": "string",
"cur": "0°",
"default": "0°",
"size": 40,
"range": ["0°", "90°", "180°", "-90°", "自动文本方向识别°"]
},
"50": {
"category": "base",
"name": "cfg-50",
"title": "背面旋转180°",
"desc": "背面扫描的图像旋转180°",
"type": "bool",
"cur": false,
"default": false,
"size": 4,
"depend_and": ["18!=单面", "18!=对折", "49!=自动文本方向识别°"]
},
"51": {
"category": "base",
"name": "cfg-51",
"title": "歪斜检测",
"desc": "纸张歪斜检测",
"type": "bool",
"cur": true,
"default": true,
"size": 4
},
"52": {
"category": "base",
"name": "cfg-52",
"title": " 歪斜检测复杂度",
"desc": "纸张歪斜检测复杂度",
"type": "int",
@ -521,6 +604,6 @@
"min": 1,
"max": 5
},
"depend_or": ["45==true"]
"depend_or": ["51==true"]
}
}

View File

@ -44,13 +44,13 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>$(SolutionDir)..\sdk\Include\;$(IncludePath)</IncludePath>
<IncludePath>$(SolutionDir)..\sdk\Include\;$(SolutionDir)..\..\..\sdk\Include\;$(IncludePath)</IncludePath>
<LibraryPath>$(SolutionDir)..\sdk\lib\;$(LibraryPath)</LibraryPath>
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(SolutionDir)..\sdk\Include\;$(IncludePath)</IncludePath>
<IncludePath>$(SolutionDir)..\sdk\Include\;$(SolutionDir)..\..\..\sdk\Include\;$(IncludePath)</IncludePath>
<LibraryPath>$(SolutionDir)..\sdk\lib\;$(LibraryPath)</LibraryPath>
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
</PropertyGroup>

View File

@ -17,6 +17,7 @@
#include <utility/known_file.h>
#include <coding/coding.h>
#include <file/file_util.h>
#include <sane/sane_ex.h>
#define TREE_ITEM_PRODUCT MAKELONG(MAKEWORD('P', 'R'), MAKEWORD('D', 'T'))
#define TREE_ITEM_GROUP MAKELONG(MAKEWORD('G', 'R'), MAKEWORD('U', 'P'))
@ -27,15 +28,6 @@
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sane data types:
typedef unsigned char SANE_Byte;
typedef int SANE_Word;
typedef SANE_Word SANE_Bool;
typedef SANE_Word SANE_Int;
typedef char SANE_Char;
typedef SANE_Char *SANE_String;
typedef const SANE_Char *SANE_String_Const;
typedef void *SANE_Handle;
typedef SANE_Word SANE_Fixed;
namespace coding
@ -6240,19 +6232,23 @@ void ChgjsonDlg::set_control_status(const HGITEM& item)
void* ChgjsonDlg::create_json(int item, std::vector<DEFH>* def_h)
{
known_file_util::IJsonW* jsn = known_file_util::create_jsonW();
wchar_t buf[128] = { 0 };
wchar_t buf[128] = { 0 };
int prefer_size = 0;
jsn->set_value(L"category", hg_items_[item].advanced ? L"advanced" : L"base");
if(hg_items_[item].title == L"\u4F3D\u739B")
jsn->set_value(L"name", L"gamma");
if (hg_items_[item].title == L"\u81EA\u5B9A\u4E49\u4F3D\u739B")
{
jsn->set_value(L"name", coding::a2u(KNOWN_OPT_NAME_CUSTOM_GAMMA).c_str());
prefer_size = 3 * 256 * sizeof(SANE_Int);
}
else if (hg_items_[item].title == L"\u626B\u63CF\u533A\u57DF\u5DE6\u4FA7\uFF08mm\uFF09")
jsn->set_value(L"name", L"tl-x");
jsn->set_value(L"name", coding::a2u(KNOWN_OPT_NAME_CUSTOM_AREA_LEFT).c_str());
else if (hg_items_[item].title == L"\u626B\u63CF\u533A\u57DF\u4E0A\u4FA7\uFF08mm\uFF09")
jsn->set_value(L"name", L"tl-y");
jsn->set_value(L"name", coding::a2u(KNOWN_OPT_NAME_CUSTOM_AREA_TOP).c_str());
else if (hg_items_[item].title == L"\u626B\u63CF\u533A\u57DF\u53F3\u4FA7\uFF08mm\uFF09")
jsn->set_value(L"name", L"br-x");
jsn->set_value(L"name", coding::a2u(KNOWN_OPT_NAME_CUSTOM_AREA_RIGHT).c_str());
else if (hg_items_[item].title == L"\u626B\u63CF\u533A\u57DF\u4E0B\u4FA7\uFF08mm\uFF09")
jsn->set_value(L"name", L"br-y");
jsn->set_value(L"name", coding::a2u(KNOWN_OPT_NAME_CUSTOM_AREA_BOTTOM).c_str());
else
{
swprintf_s(buf, _countof(buf) - 1, L"cfg-%d", hg_items_[item].index);
@ -6358,6 +6354,8 @@ void* ChgjsonDlg::create_json(int item, std::vector<DEFH>* def_h)
jsn->set_value(L"depend_and", d);
d->release();
}
if(prefer_size)
jsn->set_value(L"size", prefer_size);
return jsn;
}

Binary file not shown.