📄 runutils.cpp
字号:
else if(split_line[0] == "PD_NUM_MATCHES") { int value = atoi(split_line[1].c_str()); if(value < 1) { string error_msg = "PD_NUM_MATCHES: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } parse_dialog_num_matches = value; } else if(split_line[0] == "IGNORE_EDGES_TOP") { int value = atoi(split_line[1].c_str()); if(value < 0) { string error_msg = "IGNORE_EDGES_TOP: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } scan_ignore_edges_top = value; } else if(split_line[0] == "IGNORE_EDGES_BOTTOM") { int value = atoi(split_line[1].c_str()); if(value < 0) { string error_msg = "IGNORE_EDGES_BOTTOM: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } scan_ignore_edges_bottom = value; } else if(split_line[0] == "IGNORE_EDGES_LEFT") { int value = atoi(split_line[1].c_str()); if(value < 0) { string error_msg = "IGNORE_EDGES_LEFT: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } scan_ignore_edges_left = value; } else if(split_line[0] == "IGNORE_EDGES_RIGHT") { int value = atoi(split_line[1].c_str()); if(value < 0) { string error_msg = "IGNORE_EDGES_RIGHT: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } scan_ignore_edges_right = value; } else if(split_line[0] == "SPACE_INT_PADDING") { int value = atoi(split_line[1].c_str()); if(value < 0) { string error_msg = "SPACE_INT_PADDING: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } space_int_padding = value; } else if(split_line[0] == "LINEH_INT_PADDING") { int value = atoi(split_line[1].c_str()); if(value < 0) { string error_msg = "LINEH_INT_PADDING: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } line_height_int_padding = value; } // training config: else if(split_line[0] == "TRCFG_GRID_SIZE_X") { int value = atoi(split_line[1].c_str()); if(value < 1) { string error_msg = "TRCFG_GRID_SIZE_X: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } trcfg_grid_size_x = value; } else if(split_line[0] == "TRCFG_GRID_SIZE_Y") { int value = atoi(split_line[1].c_str()); if(value < 1) { string error_msg = "TRCFG_GRID_SIZE_Y: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } trcfg_grid_size_y = value; } else if(split_line[0] == "TRCFG_GRIDCELL_SIZE_X") { int value = atoi(split_line[1].c_str()); if(value < 1) { string error_msg = "TRCFG_GRIDCELL_SIZE_X: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } trcfg_gridcell_size_x = value; } else if(split_line[0] == "TRCFG_GRIDCELL_SIZE_Y") { int value = atoi(split_line[1].c_str()); if(value < 1) { string error_msg = "TRCFG_GRIDCELL_SIZE_Y: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } trcfg_gridcell_size_y = value; } else if(split_line[0] == "TRCFG_INTERSECT_PX") { int value = atoi(split_line[1].c_str()); if(value < 1) { string error_msg = "TRCFG_INTERSECT_PX: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } trcfg_intersect_px = value; } else if(split_line[0] == "TRCFG_SPACE_INT_LOWER") { int value = atoi(split_line[1].c_str()); if(value < 0) { string error_msg = "TRCFG_SPACE_INT_LOWER: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } trcfg_space_int.lower = value; } else if(split_line[0] == "TRCFG_SPACE_INT_UPPER") { int value = atoi(split_line[1].c_str()); if(value < 0) { string error_msg = "TRCFG_SPACE_INT_UPPER: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } trcfg_space_int.upper = value; } else if(split_line[0] == "TRCFG_LINE_HEIGHT_INT_LOWER") { int value = atoi(split_line[1].c_str()); if(value < 0) { string error_msg = "TRCFG_LINE_HEIGHT_INT_LOWER: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } trcfg_line_height_int.lower = value; } else if(split_line[0] == "TRCFG_LINE_HEIGHT_INT_UPPER") { int value = atoi(split_line[1].c_str()); if(value < 0) { string error_msg = "TRCFG_LINE_HEIGHT_INT_UPPER: value out of range"; log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); continue; } trcfg_line_height_int.upper = value; } else { string error_msg = string("in parse_from_config at line #") + int_to_string(line_num); log_error(ERROR_INVALID_CONFIG_OPTION, error_msg.c_str(), NULL); fclose(fp); return false; } } // while fclose(fp); return true;}bool write_config_file(string filename) { FILE *fp = fopen(filename.c_str(), "w"); if(fp == NULL) { log_error(ERROR_OPENING_FILE,"in write_config_file",strerror(errno)); return false; } // config: string output_line = string("CFG_PROFILE = ") + cfg_profile + '\n'; fputs(output_line.c_str(), fp); output_line = string("CFG_PROFILE_DIR = ") + cfg_profile_dir + '\n'; fputs(output_line.c_str(), fp); output_line = string("CFG_SAVE_DIR = ") + cfg_save_dir + '\n'; fputs(output_line.c_str(), fp); output_line = string("CFG_SCAN_DIR = ") + cfg_scan_dir + '\n'; fputs(output_line.c_str(), fp); output_line = string("CFG_LOG_DIR = ") + cfg_log_dir + '\n'; fputs(output_line.c_str(), fp); output_line = string("CFG_LOG_FILE = ") + cfg_log_file + "\n\n"; fputs(output_line.c_str(), fp); // misc config: output_line = string("GRID_RGB_INT_RL = ") + int_to_string(grid_rgb_int.Rl) + '\n'; fputs(output_line.c_str(), fp); output_line = string("GRID_RGB_INT_RU = ") + int_to_string(grid_rgb_int.Ru) + '\n'; fputs(output_line.c_str(), fp); output_line = string("GRID_RGB_INT_GL = ") + int_to_string(grid_rgb_int.Gl) + '\n'; fputs(output_line.c_str(), fp); output_line = string("GRID_RGB_INT_GU = ") + int_to_string(grid_rgb_int.Gu) + '\n'; fputs(output_line.c_str(), fp); output_line = string("GRID_RGB_INT_BL = ") + int_to_string(grid_rgb_int.Bl) + '\n'; fputs(output_line.c_str(), fp); output_line = string("GRID_RGB_INT_BU = ") + int_to_string(grid_rgb_int.Bu) + "\n\n"; fputs(output_line.c_str(), fp); // parse config: output_line = string("ZI_PR0_PG = ") + double_to_string(ZERO_INST_PR0_PGIVEN) + '\n'; fputs(output_line.c_str(), fp); output_line = string("ZI_PR1_PG = ") + double_to_string(ZERO_INST_PR1_PGIVEN) + '\n'; fputs(output_line.c_str(), fp); output_line = string("ZI_PR0_PGC = ") + double_to_string(ZERO_INST_PR0_PGC) + '\n'; fputs(output_line.c_str(), fp); output_line = string("ZI_PR1_PGC = ") + double_to_string(ZERO_INST_PR1_PGC) + '\n'; fputs(output_line.c_str(), fp); output_line = string("PRSF = ") + double_to_string(PR_SCALING_FACTOR)+'\n'; fputs(output_line.c_str(), fp); output_line = string("PD_NUM_MATCHES = ") + int_to_string(parse_dialog_num_matches) + '\n'; fputs(output_line.c_str(), fp); output_line = string("IGNORE_EDGES_TOP = ") + int_to_string(scan_ignore_edges_top) + '\n'; fputs(output_line.c_str(), fp); output_line = string("IGNORE_EDGES_BOTTOM = ") + int_to_string(scan_ignore_edges_bottom) + '\n'; fputs(output_line.c_str(), fp); output_line = string("IGNORE_EDGES_LEFT = ") + int_to_string(scan_ignore_edges_left) + '\n'; fputs(output_line.c_str(), fp); output_line = string("IGNORE_EDGES_RIGHT = ") + int_to_string(scan_ignore_edges_right) + '\n'; fputs(output_line.c_str(), fp); output_line = string("SPACE_INT_PADDING = ") + int_to_string(space_int_padding) + '\n'; fputs(output_line.c_str(), fp); output_line = string("LINEH_INT_PADDING = ") + int_to_string(line_height_int_padding) + '\n'; fputs(output_line.c_str(), fp); // training config: output_line = string("TRCFG_GRID_SIZE_X = ") + int_to_string(trcfg_grid_size_x) + '\n'; fputs(output_line.c_str(), fp); output_line = string("TRCFG_GRID_SIZE_Y = ") + int_to_string(trcfg_grid_size_y) + '\n'; fputs(output_line.c_str(), fp); output_line = string("TRCFG_GRIDCELL_SIZE_X = ") + int_to_string(trcfg_gridcell_size_x) + '\n'; fputs(output_line.c_str(), fp); output_line = string("TRCFG_GRIDCELL_SIZE_Y = ") + int_to_string(trcfg_gridcell_size_y) + '\n'; fputs(output_line.c_str(), fp); output_line = string("TRCFG_INTERSECT_PX = ") + int_to_string(trcfg_intersect_px) + '\n'; fputs(output_line.c_str(), fp); output_line = string("TRCFG_SPACE_INT_LOWER = ") + int_to_string(trcfg_space_int.lower) + '\n'; fputs(output_line.c_str(), fp); output_line = string("TRCFG_SPACE_INT_UPPER = ") + int_to_string(trcfg_space_int.upper) + '\n'; fputs(output_line.c_str(), fp); output_line = string("TRCFG_LINE_HEIGHT_INT_LOWER = ") + int_to_string(trcfg_line_height_int.lower) + '\n'; fputs(output_line.c_str(), fp); output_line = string("TRCFG_LINE_HEIGHT_INT_UPPER = ") + int_to_string(trcfg_line_height_int.upper) + '\n'; fputs(output_line.c_str(), fp); fclose(fp); return true;}/////// string utils:string trim_whitespace(string input) { vector<string> whitespace_chars; whitespace_chars.push_back("\n"); whitespace_chars.push_back(" "); whitespace_chars.push_back("\t"); for(int i = 0; i < whitespace_chars.size(); i++) { string cur_char = whitespace_chars[i]; int cur_pos = 0; while(cur_pos != -1) { cur_pos = input.find_first_of(cur_char, 0); if(cur_pos != -1) input = input.replace(cur_pos, 1, ""); } } return input;}string strip_newlines(string input) { vector<string> whitespace_chars; whitespace_chars.push_back("\n"); //whitespace_chars.push_back("\t"); for(int i = 0; i < whitespace_chars.size(); i++) { string cur_char = whitespace_chars[i]; int cur_pos = 0; while(cur_pos != -1) { cur_pos = input.find_first_of(cur_char, 0); if(cur_pos != -1) input = input.replace(cur_pos, 1, ""); } } return input;}string strip_unused_chars(string input) { int cur_char; for(int i = 0; i < input.length(); ) { cur_char = (int) input[i]; if(((cur_char >= 97) && (cur_char <= 122)) || ((cur_char >= 65) && (cur_char <= 90)) || ((char) cur_char == ' ')) i++; else input = input.replace(i, 1, ""); } return input;}vector<string> split_string(string line, char delimeter) { vector<string> r_val; int cur_pos = 0;//, next_pos = 0; string temp_val = "";//, first_pos = ""; while(line.length() != 0) { cur_pos = line.find_first_of(delimeter, 0); if(cur_pos == -1) { r_val.push_back(line); return r_val; } else { if(cur_pos != 0) r_val.push_back(line.substr(0, cur_pos)); else r_val.push_back(line.substr(0, 1)); if(line.length() == cur_pos + 1) return r_val; line = line.substr(cur_pos + 1, line.length() - cur_pos - 1); } } return r_val;}string int_to_string(int val) { char int_val[10]; sprintf(int_val, "%i", val); return string(int_val);}string double_to_string(double val) { char double_str[16]; sprintf(double_str, "%05f", val); return string(double_str);}// error checking:bool directory_exists(string dir_name) { DIR *dir = opendir(dir_name.c_str());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -