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