diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index f70db64..9f3fccc 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -1366,6 +1366,7 @@ int hg_scanner::set_color_change(void) } bool hg_scanner::jsn_reorganize() { + string str; int len = setting_jsn_.at(SANE_STD_OPT_NAME_PAPER).at("range").size(); int max_papers[] = { PAPER_MAX_SIZE, PAPER_MAX_SIZE_CLIP, PAPER_TRIGEMINY }; @@ -1382,15 +1383,18 @@ bool hg_scanner::jsn_reorganize() } } } - + if (!firmware_sup_wait_paper_ && pid_ == 0x239) { erase_option(SANE_STD_OPT_NAME_WAIT_TO_SCAN); + erase_option(SANE_STD_OPT_NAME_WAIT_SCAN_EXIT); } if (!firmware_sup_pick_strength_ && pid_ == 0x239) { erase_option(SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH); + erase_option(SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE); erase_option(SANE_STD_OPT_NAME_FEED_STRENGTH); + } if (!firmware_sup_color_fill_ && (pid_ == 0x239 || pid_ == 0x439)) { @@ -1410,7 +1414,7 @@ bool hg_scanner::jsn_reorganize() erase_option(SANE_STD_OPT_NAME_ANTI_PERMEATE_LEVEL); } erase_option(SANE_STD_OPT_NAME_RID_GRID); //全系移除 除网纹 - + return true; } int hg_scanner::hgpaper_to_devspaper(Paper_Map papermap[], int len, int& paper, bool* exact, TwSS* type) @@ -2832,6 +2836,66 @@ void hg_scanner::change_setting_language(bool init) change_string_2_lang_id(v.c_str(), "desc"); setting_jsn_.at(v.c_str()).at("type").get_to(val); + string depend; + string depend_temp; + bool is_depend = false; + + if (setting_jsn_.at(v.c_str()).contains("depend_or")) + { + int depend_size = setting_jsn_.at(v.c_str()).at("depend_or").size(); + int y = 0; + while (y < depend_size) + { + setting_jsn_.at(v.c_str()).at("depend_or").at(y).get_to(depend); + for (size_t k = 0; k < erase_depend_.size(); k++) + { + if (depend.find(erase_depend_[k]) != string::npos) + { + setting_jsn_.at(v.c_str()).at("depend_or").erase(y); + depend_temp = depend; + y--; + break; + } + else if (!depend_temp.empty() && !(depend[0] <= 'z' && depend[0] >= 'a')) + { + setting_jsn_.at(v.c_str()).at("depend_or").erase(y); + y--; + break; + } + } + depend_size = setting_jsn_.at(v.c_str()).at("depend_or").size(); + y++; + } + } + else if (setting_jsn_.at(v.c_str()).contains("depend_and")) + { + int depend_size = setting_jsn_.at(v.c_str()).at("depend_and").size(); + int y = 0; + while (y < depend_size) + { + setting_jsn_.at(v.c_str()).at("depend_and").at(y).get_to(depend); + for (size_t k = 0; k < erase_depend_.size(); k++) + { + if (depend.find(erase_depend_[k]) != string::npos) + { + setting_jsn_.at(v.c_str()).at("depend_and").erase(y); + depend_temp = depend; + y--; + break; + } + else if (!depend_temp.empty() && !(depend[0] <= 'z' && depend[0] >= 'a')) + { + setting_jsn_.at(v.c_str()).at("depend_and").erase(y); + y--; + break; + } + } + depend_size = setting_jsn_.at(v.c_str()).at("depend_and").size(); + y++; + } + } + + //if (v.compare(from_default_language(SANE_STD_OPT_NAME_TIME_TO_SLEEP)) == 0) //{ // int val = 0; @@ -2936,6 +3000,7 @@ void hg_scanner::change_setting_language(bool init) } void hg_scanner::erase_option(const char* name) { + erase_depend_.push_back(name); setting_jsn_.erase(name); std::vector::iterator it = std::find(jsn_children_.begin(), jsn_children_.end(), name); diff --git a/hgdriver/hgdev/hg_scanner.h b/hgdriver/hgdev/hg_scanner.h index 5468705..d40380d 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -293,6 +293,7 @@ protected: bool cb_mem_; bool test_1_paper_; // 是否为单张扫描模式 std::vector jsn_children_; + std::vector erase_depend_; //需要删除父依赖项 json setting_jsn_; IMGPRCFIXPARAM image_prc_param_;