diff --git a/docs/G400 - lsc.txt b/docs/G400 - lsc.txt
index 004ae84..5889edc 100644
--- a/docs/G400 - lsc.txt
+++ b/docs/G400 - lsc.txt
@@ -628,7 +628,6 @@
"cur": false,
"default": false,
"size": 4,
- "depend_and": ["26!=单面", "26!=对折", "53!=
- \方向识别°"]
+ "depend_and": ["26!=单面", "26!=对折"]
}
}
\ No newline at end of file
diff --git a/docs/扫描仪配置属性.doc b/docs/扫描仪配置属性.doc
index 68c539b..ff19fef 100644
Binary files a/docs/扫描仪配置属性.doc and b/docs/扫描仪配置属性.doc differ
diff --git a/tools/apps/hgjson/hgjson.rc b/tools/apps/hgjson/hgjson.rc
index a6317ee..54124a2 100644
Binary files a/tools/apps/hgjson/hgjson.rc and b/tools/apps/hgjson/hgjson.rc differ
diff --git a/tools/apps/hgjson/hgjson.vcxproj b/tools/apps/hgjson/hgjson.vcxproj
index 01a95d0..ecc4c3f 100644
--- a/tools/apps/hgjson/hgjson.vcxproj
+++ b/tools/apps/hgjson/hgjson.vcxproj
@@ -61,6 +61,7 @@
Disabled
WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)
true
+ 4996
Windows
@@ -86,6 +87,7 @@
true
WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)
true
+ 4996
Windows
@@ -108,6 +110,7 @@
+
@@ -116,6 +119,10 @@
+
+ NotUsing
+ NotUsing
+
diff --git a/tools/apps/hgjson/hgjson.vcxproj.filters b/tools/apps/hgjson/hgjson.vcxproj.filters
index 04e1f9d..6df8dc7 100644
--- a/tools/apps/hgjson/hgjson.vcxproj.filters
+++ b/tools/apps/hgjson/hgjson.vcxproj.filters
@@ -36,6 +36,9 @@
Header Files
+
+ Header Files
+
@@ -50,6 +53,9 @@
Source Files
+
+ Source Files
+
diff --git a/tools/apps/hgjson/hgjsonDlg.cpp b/tools/apps/hgjson/hgjsonDlg.cpp
index 3e3dbc4..def7ff6 100644
--- a/tools/apps/hgjson/hgjsonDlg.cpp
+++ b/tools/apps/hgjson/hgjsonDlg.cpp
@@ -18,6 +18,8 @@
#include
#include
#include
+#include
+#include "../../../../code_device/hgdriver/hgdev/scanner_setting.h"
#define TREE_ITEM_PRODUCT MAKELONG(MAKEWORD('P', 'R'), MAKEWORD('D', 'T'))
#define TREE_ITEM_GROUP MAKELONG(MAKEWORD('G', 'R'), MAKEWORD('U', 'P'))
@@ -5743,11 +5745,95 @@ namespace hz_2_py
}
}
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// name & title map ...
+struct
+{
+ const char* name;
+ const char* title;
+}g_opts[] = { {SANE_STD_OPT_NAME_RESTORE , OPTION_TITLE_HFMRSZ}
+ , {SANE_STD_OPT_NAME_HELP , OPTION_TITLE_BZ}
+ , {SANE_STD_OPT_NAME_IS_MULTI_OUT , OPTION_TITLE_DLSC}
+ , {SANE_STD_OPT_NAME_MULTI_OUT_TYPE , OPTION_TITLE_DLSCLX}
+ , {SANE_STD_OPT_NAME_COLOR_MODE , OPTION_TITLE_YSMS}
+ , {SANE_STD_OPT_NAME_BINARY_THRESHOLD , OPTION_TITLE_HBTXYZ}
+ , {SANE_STD_OPT_NAME_FILTER , OPTION_TITLE_HDHHBTX_CS}
+ , {SANE_STD_OPT_NAME_RID_MULTIOUT_RED , OPTION_TITLE_24WCSTX_DLSCCH}
+ , {SANE_STD_OPT_NAME_RID_ANSWER_SHEET_RED , OPTION_TITLE_24WCSTX_DTKCH}
+ , {SANE_STD_OPT_NAME_ERASE_BACKGROUND , OPTION_TITLE_BJYC}
+ , {SANE_STD_OPT_NAME_BKG_COLOR_RANGE , OPTION_TITLE_BJSCFDFW}
+ , {SANE_STD_OPT_NAME_SHARPEN , OPTION_TITLE_RHYMH}
+ , {SANE_STD_OPT_NAME_RID_MORR , OPTION_TITLE_QCMW}
+ , {SANE_STD_OPT_NAME_RID_GRID , OPTION_TITLE_CWW}
+ , {SANE_STD_OPT_NAME_ERROR_EXTENSION , OPTION_TITLE_CWKS}
+ , {SANE_STD_OPT_NAME_NOISE_OPTIMIZE , OPTION_TITLE_HBTXZDYH}
+ , {SANE_STD_OPT_NAME_NOISE_SIZE , OPTION_TITLE_ZDYHCC}
+ , {SANE_STD_OPT_NAME_PAPER , OPTION_TITLE_ZZCC}
+ , {SANE_STD_OPT_NAME_CUSTOM_AREA , OPTION_TITLE_ZDYSMQY}
+ , {SANE_STD_OPT_NAME_CUSTOM_AREA_LEFT , OPTION_TITLE_SMQYZCmm}
+ , {SANE_STD_OPT_NAME_CUSTOM_AREA_RIGHT , OPTION_TITLE_SMQYYCmm}
+ , {SANE_STD_OPT_NAME_CUSTOM_AREA_TOP , OPTION_TITLE_SMQYSCmm}
+ , {SANE_STD_OPT_NAME_CUSTOM_AREA_BOTTOM , OPTION_TITLE_SMQYXCmm}
+ , {SANE_STD_OPT_NAME_SIZE_CHECK , OPTION_TITLE_CCJC}
+ , {SANE_STD_OPT_NAME_PAGE , OPTION_TITLE_SMYM}
+ , {SANE_STD_OPT_NAME_DISCARD_BLANK_SENS , OPTION_TITLE_TGKBYLMD}
+ , {SANE_STD_OPT_NAME_RESOLUTION , OPTION_TITLE_FBL}
+ , {SANE_STD_OPT_NAME_TIME_TO_SLEEP , OPTION_TITLE_XMSJ}
+ , {SANE_STD_OPT_NAME_IMAGE_QUALITY , OPTION_TITLE_HZ}
+ , {SANE_STD_OPT_NAME_EXCHANGE ,OPTION_TITLE_JHZFM}
+ , {SANE_STD_OPT_NAME_SPLIT ,OPTION_TITLE_TXCF }
+ , {SANE_STD_OPT_NAME_ANTI_SKEW , OPTION_TITLE_ZDJP}
+ , {SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA , OPTION_TITLE_QYSDQX}
+ , {SANE_STD_OPT_NAME_GAMMA , OPTION_TITLE_JMZ}
+ , {SANE_STD_OPT_NAME_BRIGHTNESS , OPTION_TITLE_LDZ}
+ , {SANE_STD_OPT_NAME_CONTRAST , OPTION_TITLE_DBD}
+ , {SANE_STD_OPT_NAME_IS_PHOTO_MODE , OPTION_TITLE_ZPMS}
+ , {SANE_STD_OPT_NAME_ERASE_BLACK_FRAME , OPTION_TITLE_XCHK}
+ , {SANE_STD_OPT_NAME_DARK_SAMPLE , OPTION_TITLE_SSYZ}
+ , {SANE_STD_OPT_NAME_THRESHOLD , OPTION_TITLE_YZ}
+ , {SANE_STD_OPT_NAME_ANTI_NOISE_LEVEL , OPTION_TITLE_BJKZDJ}
+ , {SANE_STD_OPT_NAME_MARGIN , OPTION_TITLE_BYSJ}
+ , {SANE_STD_OPT_NAME_FILL_BKG_MODE , OPTION_TITLE_BJTCFS}
+ , {SANE_STD_OPT_NAME_IS_ANTI_PERMEATE , OPTION_TITLE_FZST}
+ , {SANE_STD_OPT_NAME_ANTI_PERMEATE_LEVEL , OPTION_TITLE_FZSTDJ}
+ , {SANE_STD_OPT_NAME_RID_HOLE , OPTION_TITLE_CKYC}
+ , {SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE , OPTION_TITLE_CKSSFWZFMBL}
+ , {SANE_STD_OPT_NAME_IS_FILL_COLOR , OPTION_TITLE_SCTC}
+ , {SANE_STD_OPT_NAME_IS_ULTROSONIC_CHECK , OPTION_TITLE_CSBJC}
+ , {SANE_STD_OPT_NAME_DOUBLE_FEED_HANDLE , OPTION_TITLE_SZTPCL}
+ , {SANE_STD_OPT_NAME_IS_CHECK_STAPLE , OPTION_TITLE_ZDJC}
+ , {SANE_STD_OPT_NAME_SCAN_MODE , OPTION_TITLE_SMZS}
+ , {SANE_STD_OPT_NAME_SCAN_COUNT , OPTION_TITLE_SMSL}
+ , {SANE_STD_OPT_NAME_TEXT_DIRECTION , OPTION_TITLE_WGFX}
+ , {SANE_STD_OPT_NAME_IS_ROTATE_BKG_180 , OPTION_TITLE_BMXZ180}
+ , {SANE_STD_OPT_NAME_IS_CHECK_DOG_EAR , OPTION_TITLE_ZJJC}
+ , {SANE_STD_OPT_NAME_DOG_EAR_SIZE , OPTION_TITLE_ZJDX}
+ , {SANE_STD_OPT_NAME_IS_CHECK_ASKEW , OPTION_TITLE_WXJC}
+ , {SANE_STD_OPT_NAME_ASKEW_RANGE , OPTION_TITLE_WXRRD}
+ , {SANE_STD_OPT_NAME_FEED_STRENGTH , OPTION_TITLE_FZQD}
+ , {SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH , OPTION_TITLE_ZDCZQD}
+ , {SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE , OPTION_TITLE_CZYZ}
+ , {SANE_STD_OPT_NAME_WAIT_TO_SCAN , OPTION_TITLE_DZSM}
+};
+
+static IMPLEMENT_OPTION_STRING_COMPARE(compare_title);
+static const char* title_to_name(const char* title)
+{
+ for (size_t i = 0; i < _countof(g_opts); ++i)
+ {
+ if (compare_title(g_opts[i].title, title))
+ return g_opts[i].name;
+ }
+
+ return NULL;
+}
+
+
+
+
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ChgjsonDlg dialog
-
-
ChgjsonDlg::ChgjsonDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(ChgjsonDlg::IDD, pParent)
, show_tree_tooltips_(true)
@@ -5803,6 +5889,7 @@ BEGIN_MESSAGE_MAP(ChgjsonDlg, CDialogEx)
ON_COMMAND(ID_TREE_TOOLTIPS, &ChgjsonDlg::OnTreeTooltips)
ON_COMMAND(ID_LISTMENU_TOOLTIPS, &ChgjsonDlg::OnListmenuTooltips)
ON_COMMAND(ID_TREE_EXPORTCHAR, &ChgjsonDlg::OnTreeExportCharConstants)
+ ON_BN_CLICKED(IDC_TO_FILE, &ChgjsonDlg::OnBnClickedToFile)
END_MESSAGE_MAP()
@@ -6251,30 +6338,11 @@ void* ChgjsonDlg::create_json(int item, std::vector* def_h)
known_file_util::IJsonW* jsn = known_file_util::create_jsonW();
wchar_t buf[128] = { 0 };
int prefer_size = 0;
+ const char* opt_name = title_to_name(coding::u2utf8(hg_items_[item].title.c_str()).c_str());
jsn->set_value(L"category", hg_items_[item].advanced ? L"advanced" : L"base");
- if (hg_items_[item].title == L"\u5206\u8FA8\u7387")
- jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_RESOLUTION).c_str());
- else if (hg_items_[item].title == L"\u4EAE\u5EA6\u503C")
- jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_BRIGHTNESS).c_str());
- else if (hg_items_[item].title == L"\u5BF9\u6BD4\u5EA6")
- jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_CONTRAST).c_str());
- else if (hg_items_[item].title == L"\u626B\u63CF\u533A\u57DF\u5DE6\u4FA7\uFF08mm\uFF09")
- jsn->set_value(L"name", coding::a2u(SANE_STD_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", coding::a2u(SANE_STD_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", coding::a2u(SANE_STD_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", coding::a2u(SANE_STD_OPT_NAME_CUSTOM_AREA_BOTTOM).c_str());
- else if (hg_items_[item].title == L"ɫģʽ")
- jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_COLOR_MODE).c_str());
- else if (hg_items_[item].title == L"ֽųߴ")
- jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_PAPER).c_str());
- else if (hg_items_[item].title == L"ɨҳ")
- jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_PAGE_TYPE).c_str());
- else if (hg_items_[item].title == L"")
- jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_ULTRASONIC_CHECK).c_str());
+ if (opt_name)
+ jsn->set_value(L"name", coding::utf82u(opt_name).c_str());
else
{
swprintf_s(buf, _countof(buf) - 1, L"cfg-%d", hg_items_[item].index);
@@ -6386,7 +6454,7 @@ void* ChgjsonDlg::create_json(int item, std::vector* def_h)
return jsn;
}
-std::string ChgjsonDlg::to_json_text(bool for_const)
+std::string ChgjsonDlg::to_json_text(bool for_const, std::wstring* dev)
{
known_file_util::IJsonW* jsn = known_file_util::create_jsonW(), * item = NULL;
HTREEITEM root = tree_.GetRootItem(), child = NULL;
@@ -6406,6 +6474,8 @@ std::string ChgjsonDlg::to_json_text(bool for_const)
file = path;
}
+ if (dev)
+ *dev = val;
jsn->set_value(L"device_type", val.c_str());
jsn->set_value(L"option_count", (int)hg_items_.size()); // occupy position
root = tree_.GetChildItem(root);
@@ -7720,3 +7790,20 @@ void ChgjsonDlg::OnTreeExportCharConstants()
else
MessageBox(TEXT("const string has set to clipboard already"));
}
+
+
+void ChgjsonDlg::OnBnClickedToFile()
+{
+ // TODO: ڴӿؼ֪ͨ
+ std::wstring name(L"");
+ std::string txt(to_json_text(false, &name)), ansi("");
+ wchar_t path[MAX_PATH] = { 0 };
+
+ GetModuleFileNameW(NULL, path, _countof(path) - 1);
+ wcsrchr(path, L'\\')[1] = 0;
+ name.insert(0, path);
+ name += L".hsc";
+ ansi = coding::u2a(name.c_str());
+ if (save_scanner_setting(ansi.c_str(), txt) == 0)
+ file_util::display_file_in_explorer(name.c_str());
+}
diff --git a/tools/apps/hgjson/hgjsonDlg.h b/tools/apps/hgjson/hgjsonDlg.h
index dba58bc..0467d85 100644
--- a/tools/apps/hgjson/hgjsonDlg.h
+++ b/tools/apps/hgjson/hgjsonDlg.h
@@ -114,7 +114,7 @@ protected:
void set_control_status(const HGITEM& item);
void* create_json(int item, std::vector *def_h = NULL);
- std::string to_json_text(bool for_const = false);
+ std::string to_json_text(bool for_const = false, std::wstring *dev = NULL);
void add_item(void* jsn_root, void* jsn_obj, HTREEITEM parent);
bool load_from_json_text(const wchar_t* txt);
bool load_from_file(const wchar_t* path_file);
@@ -161,6 +161,7 @@ public:
afx_msg void OnTreeTooltips();
afx_msg void OnListmenuTooltips();
afx_msg void OnTreeExportCharConstants();
+ afx_msg void OnBnClickedToFile();
};
diff --git a/tools/apps/hgjson/resource.h b/tools/apps/hgjson/resource.h
index f4550a9..b4c744a 100644
Binary files a/tools/apps/hgjson/resource.h and b/tools/apps/hgjson/resource.h differ
diff --git a/tools/solution/Release/hgjson.exe b/tools/solution/Release/hgjson.exe
index f793870..4f2e35a 100644
Binary files a/tools/solution/Release/hgjson.exe and b/tools/solution/Release/hgjson.exe differ