亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? classnotes.cpp

?? Ocr source code. provides an Ocr engine that works in C++ language.
?? CPP
字號:
/* classnotes.cpp : main function; starts the GUI; * Author: Maxie D. Schmidt (created 5/21/2006)     */#include <stdlib.h>#include <stdio.h>#include <dirent.h>#include <errno.h>#include <time.h>#include <string.h>#include <gtkmm/main.h>#include <string>#include <vector>using namespace std;#include "classnotes.h"#include "profile.h"#include "runutils.h"#include "mainwindow.h"// externed vars: setup default values:string cfg_profile = HOME_DIRECTORY + "/.classnotes/profiles/default.profile";string cfg_profile_dir = HOME_DIRECTORY + "/.classnotes/profiles/";string cfg_save_dir = HOME_DIRECTORY + "/.classnotes/save_dir/";string cfg_scan_dir = HOME_DIRECTORY + "/.classnotes/scans/";string cfg_log_dir = HOME_DIRECTORY + "/.classnotes/log/";string cfg_log_file = HOME_DIRECTORY + "/.classnotes/log/classnotes.log";png_file *pf = new png_file();profile *prof = new profile(trcfg_grid_size_x, trcfg_grid_size_y,                            trcfg_gridcell_size_x, trcfg_gridcell_size_y);bool prompt_for_profile_name = false;string new_profile_name = cfg_profile;vector<translated_line> text_lines;bool text_saved = true;rgb_interval_t grid_rgb_int = create_interval(0, 100, 0, 100, 0, 100);run_signals signals;bool PARSE_NO_GUI = false;bool PNG_PARSE_ALL_IN_SCANDIR = false;vector<string> PNG_SCAN_FILES;bool PNG_SINGLE_OUTPUT_FILE = false;string PNG_SG_OUTPUT_FILE = "";string PNG_OUTPUT_FILE_PREFIX = "";// main functions:void print_usage(char *prog_name);void setup_args(int argc, char *argv[]);void run_parse_no_gui();int main(int argc, char *argv[]) {     setup_classnotes_dirs();     parse_from_config(CONFIG_FILE_PATH);     setup_args(argc, argv);     stamp_log_file(CLASSNOTES_LOG_STAMP);     if(!load_profile_from_file(cfg_profile)) {          log_error(ERROR_PROFILE, "in main: Error loading profile.", NULL);          delete prof;          prof = NULL;          if(PARSE_NO_GUI) {               log_error(ERROR_PARSE_NO_GUI, "Cannot continue without valid profile (exiting ... ).", NULL);               exit(-1);          }          }     // run the program:     if(!PARSE_NO_GUI) {          Gtk::Main main_runner(argc, argv);          main_window window;          main_runner.run(window);     }     else           run_parse_no_gui();     return 0;}void print_usage(char *prog_file) {     printf("Usage: %s [--scan-files file0 [... filen]] [--set-scan-dir dir]\n", prog_file);     printf("       [--parse-all-in-scan-dir] [--set-save-dir dir]\n");      printf("       [--single-output-file file] [--output-file-prefix prefix]\n");     printf("       [--profile file] [--list-profiles] [--help]\n");}void setup_args(int argc, char *argv[]) {     if(argc > 1)          PARSE_NO_GUI = true;     for(int i = 1; i < argc; i++) {         if((!strcmp(argv[i], "--scan-files")             || !strcmp(argv[i], "--single-output-file")            || !strcmp(argv[i], "--output-file-prefix")            || !strcmp(argv[i], "--profile")            || !strcmp(argv[i], "--set-scan-dir")            || !strcmp(argv[i], "--set-save-dir")) &&            (((i + 1) == argc) || (argv[i + 1][0] == '-'))) {              printf("The option \"%s\" requires an argument (exiting ... ).\n");              exit(-1);         }         if(!strcmp(argv[i], "--scan-files")) {              while((i != (argc - 1)) && (argv[i + 1][0] != '-')) {                   if(!file_exists(argv[i + 1])) {                        string error_msg = string("File ") + argv[i + 1] +                                           " does not exist (exiting ... ).";                        log_error(ERROR_PARSE_NO_GUI, error_msg.c_str(), NULL);                        exit(-1);                   }                   PNG_SCAN_FILES.push_back(argv[i + 1]);                   i++;              } // while         }         else if(!strcmp(argv[i], "--set-scan-dir")) {              if(!directory_exists(argv[i + 1])) {                   printf("Scan directory does not exist (exiting ... ).\n");                   exit(-1);              }              cfg_scan_dir = argv[i + 1];              i++;         }         else if(!strcmp(argv[i], "--parse-all-in-scan-dir"))              PNG_PARSE_ALL_IN_SCANDIR = true;         else if(!strcmp(argv[i], "--set-save-dir")) {              if(!directory_exists(argv[i + 1])) {                   printf("Save directory does not exist (exiting ... ).\n");                   exit(-1);              }              cfg_save_dir = argv[i + 1];              i++;         }         else if(!strcmp(argv[i], "--single-output-file"))              PNG_SINGLE_OUTPUT_FILE = true;         else if(!strcmp(argv[i], "--output-file-prefix")) {              PNG_OUTPUT_FILE_PREFIX = argv[i + 1];              i++;         }         else if(!strcmp(argv[i], "--profile")) {              if(!file_exists(argv[i + 1])) {                   log_error(ERROR_PARSE_NO_GUI, "Profile file does not exist (exiting ... ).", NULL);                   exit(-1);              }              cfg_profile = argv[i + 1];              i++;         }         else if(!strcmp(argv[i], "--list-profiles")) {               vector<string> profiles;               DIR *profile_dir = opendir(cfg_profile_dir.c_str());               if(profile_dir == NULL) {                    printf("Unable to open profile dir (exiting ... ).\n");                    exit(-1);               }               dirent *profile_dir_dirent;               errno = 0;               string profile;               while((profile_dir_dirent = readdir(profile_dir))) {                    profile = profile_dir_dirent->d_name;                    if(profile.length() < 9)                         continue;                    if(profile.substr(profile.length() - 8, 8) == ".profile")                         profiles.push_back(profile);               } // while               if(errno) {                    printf("Error reading files from profile directory (exiting ... ).\n");                    exit(-1);               }                              if(profiles.size() == 0)                    printf("There are no profiles in dir %s.\n",                            cfg_profile_dir.c_str());               else {                                        printf("Profiles:\n\n");                    for(int i = 0; i < profiles.size(); i++)                         printf("   (%d / %d) %s%s\n", i + 1, profiles.size(),                                cfg_profile_dir.c_str(), profiles[i].c_str());                    printf("\n");               }                              exit(0);                  }         else if(!strcmp(argv[i], "--help")) {              print_usage(argv[0]);              exit(0);         }         else {              printf("Invalid option \"%s\" (exiting ... ).\n\n", argv[i]);              print_usage(argv[0]);              exit(-1);         }    } // for i}void run_parse_no_gui() {          printf("%s:\n\n", CLASSNOTES_VER_STR.c_str());          // get files to parse:     vector<string> files;     if(PNG_PARSE_ALL_IN_SCANDIR) {          DIR *scan_dir = opendir(cfg_scan_dir.c_str());          if(scan_dir == NULL) {               printf("Error opening the scan dir (exiting ... ).\n");               exit(-1);          }          dirent *scan_dir_dirent;          errno = 0;          string png_file;          while((scan_dir_dirent = readdir(scan_dir))) {               png_file = scan_dir_dirent->d_name;               if((png_file.length() >= 4) &&                  (png_file.substr(png_file.length() - 5, 4) == ".png"))                    files.push_back(cfg_scan_dir + png_file);          }          if(errno) {               printf("Error reading files from scan directory (exiting ... ).\n");               exit(-1);          }                    closedir(scan_dir);               }     else           files = PNG_SCAN_FILES;     if(files.size() == 0) {          printf("There are no files to parse (exiting ... ).\n");          exit(0);     }     // read, parse, and save output text for each file:     FILE *output_fp;     int file_num = 0;     char num[64];     string filename, stripped_filename, prefix;     for(int i = 0; i < files.size(); i++) {          if(PNG_SINGLE_OUTPUT_FILE)               filename = PNG_SG_OUTPUT_FILE;          else {               int last_slash_pos = files[i].rfind("/", files[i].length() - 1);               stripped_filename = files[i].substr(last_slash_pos + 1,                                   files[i].length() - last_slash_pos - 1);               stripped_filename = stripped_filename.substr(0,                                    stripped_filename.length() - 4);               if(PNG_OUTPUT_FILE_PREFIX != "")                    prefix = PNG_OUTPUT_FILE_PREFIX + "-";               else                    prefix = "";                              filename = cfg_save_dir + prefix + stripped_filename +                           "-output-";               sprintf(num, "%d", file_num);               filename = filename + num + ".txt";          }                    if(file_exists(filename))               output_fp = fopen(filename.c_str(), "a");          else               output_fp = fopen(filename.c_str(), "w");                    if(output_fp == NULL) {               printf("Error opening output file %s (%s) (exiting ... ).\n",                       filename.c_str(), strerror(errno));               exit(-1);          }                    png_file *pfile = new png_file();          if(init_png_file(files[i], pfile)) {               png_file *temp = pf;               pf = pfile;               delete temp;          }          else {               delete pfile;               printf("Error loading png_file %s (exiting ... ).\n", files[i].c_str());               exit(-1);          }          if(pf->plist == NULL)               pf->plist = new parse_list();          if(!fill_parse_list(trcfg_line_height_int, pf, pf->plist)) {               pf->plist->clear();               delete pf->plist;               pf->plist = NULL;               delete pf;               printf("Error filling parse list (file %s) (exiting ... ).\n", files[i].c_str());               exit(-1);          }          // translate characters:          parsed_line *cur_pl = pf->plist->pl_begin;          parsed_char *cur_pc;          grid_t char_grid;          vector<char_probability> prs;          translated_line t_line;          while(cur_pl != NULL) {               t_line.text = "";               cur_pc = cur_pl->pc_begin;               while(cur_pc != NULL) {                    // spaces:                    if(cur_pc != cur_pl->pc_begin) {                                             int char_spacing = cur_pc->self_node.self_box.xy.x -                                            (cur_pc->prev->self_node.self_box.xy.x +                                             cur_pc->prev->self_node.self_box.horiz_len);                         if((char_spacing >= trcfg_space_int.lower) &&                            (char_spacing <= trcfg_space_int.upper))                              t_line.text = t_line.text + ' ';                    } // if cur_pc != cur_pl->pc_begin                                   char_grid = grid_char(cur_pc->self_node.self_box);                    prs = identify_character(char_grid);                     if(prs.size() != 0)                          t_line.text = t_line.text + prs[0].character;                    cur_pc = cur_pc->next;               } // while cur_pc                              t_line.text = t_line.text + "\n";               fputs(t_line.text.c_str(), output_fp);               cur_pl = cur_pl->next;                         } // while cur_pl          printf("(%d / %d) : File %s written.\n", i + 1,                  files.size(), filename.c_str());          file_num++;          fclose(output_fp);               } // for i     printf("\nTotal: %d scans processed.\n", files.size());}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线观看免费视频| 亚洲成人在线免费| 国产很黄免费观看久久| 久久精品一区二区三区av| 国产美女在线观看一区| 欧美极品美女视频| 91在线精品一区二区三区| 亚洲精品视频在线看| 欧美日韩精品一区二区三区 | 中文字幕一区二区三区不卡在线| 国产成人啪午夜精品网站男同| 国产欧美日韩在线视频| www.亚洲色图| 亚洲国产成人tv| 日韩一区二区在线观看| 国产成人免费av在线| 亚洲精品视频一区二区| 91精选在线观看| 国产成人精品免费一区二区| 亚洲三级电影网站| 91麻豆精品国产91| 国产精品原创巨作av| 亚洲女性喷水在线观看一区| 欧美女孩性生活视频| 成人免费精品视频| 亚洲高清在线视频| 国产婷婷精品av在线| 欧洲中文字幕精品| 久久99九九99精品| 一级精品视频在线观看宜春院| 555www色欧美视频| av电影天堂一区二区在线观看| 午夜a成v人精品| 国产精品色在线| 91精品国产福利| 99久久综合狠狠综合久久| 日韩成人dvd| 亚洲欧美日韩在线| 亚洲精品一区二区三区精华液 | 天天射综合影视| 国产精品久久久久天堂| 欧美一区二区三级| 色婷婷久久久久swag精品| 国内精品伊人久久久久影院对白| 亚洲摸摸操操av| 久久精品欧美日韩精品| 制服丝袜av成人在线看| 91麻豆免费看片| 国产一区二区三区在线观看精品| 伊人开心综合网| 国产欧美精品国产国产专区| 欧美日韩在线播放| 91久久奴性调教| 成人18精品视频| 国产麻豆欧美日韩一区| 免费高清在线一区| 日韩精品三区四区| 亚洲777理论| 一区二区三区国产| 亚洲女厕所小便bbb| 国产欧美一区二区三区在线看蜜臀| 69堂国产成人免费视频| 91精品办公室少妇高潮对白| 成人黄色综合网站| 国产精品一级二级三级| 国产中文字幕精品| 美国欧美日韩国产在线播放| 亚洲超丰满肉感bbw| 亚洲高清在线精品| 一区二区三区日韩精品视频| 亚洲欧洲国产专区| 1024成人网色www| 国产精品久久久久久久裸模| 久久久精品综合| 国产日韩影视精品| 国产欧美日韩不卡免费| 国产三级三级三级精品8ⅰ区| 精品免费视频一区二区| 精品毛片乱码1区2区3区| 日韩一区二区三区视频在线观看| 欧美日韩情趣电影| 欧美日韩国产小视频| 欧美三级电影在线看| 777精品伊人久久久久大香线蕉| 欧美日韩一级二级三级| 911精品国产一区二区在线| 欧美一区二区观看视频| 欧美日韩国产高清一区二区三区 | 欧洲精品视频在线观看| 欧美性欧美巨大黑白大战| 欧美日韩国产中文| 日韩欧美一二三| 久久免费看少妇高潮| 欧美国产在线观看| 亚洲欧美日韩国产一区二区三区| 亚洲精品精品亚洲| 亚洲电影一级黄| 久久99精品国产.久久久久| 久久97超碰色| 成人免费视频一区二区| 在线观看一区二区视频| 在线综合视频播放| 久久免费的精品国产v∧| 欧美激情一区二区三区在线| 亚洲精品一二三区| 免费美女久久99| 大胆欧美人体老妇| 欧美在线啊v一区| 日韩欧美在线影院| 亚洲国产精品99久久久久久久久 | 欧美色图在线观看| 精品国产123| 亚洲视频在线一区观看| 日韩二区三区四区| 成人免费毛片片v| 国产日韩亚洲欧美综合| 亚洲人吸女人奶水| 免费在线观看精品| 国产成人av一区二区三区在线 | 2017欧美狠狠色| 中文字幕在线不卡视频| 天天综合色天天| proumb性欧美在线观看| 这里只有精品电影| 亚洲欧洲制服丝袜| 狠狠色丁香久久婷婷综合_中 | 亚洲国产精品一区二区www| 国产伦精品一区二区三区视频青涩| 99精品久久99久久久久| 久久综合色播五月| 午夜精彩视频在线观看不卡| 国产乱国产乱300精品| 欧美人与禽zozo性伦| 国产精品久久三区| 国产一区亚洲一区| 777色狠狠一区二区三区| 亚洲欧美日韩小说| 国产高清不卡一区| 美女视频一区二区| 久久亚洲精精品中文字幕早川悠里| 天涯成人国产亚洲精品一区av| 成人免费毛片嘿嘿连载视频| 欧美日韩aaaaa| 亚洲视频你懂的| 国产精品综合网| 欧美电视剧在线看免费| 亚洲综合一区在线| 成人一区二区视频| 欧美精品在线一区二区三区| 亚洲欧洲99久久| 国产福利电影一区二区三区| 91精品国产全国免费观看| 亚洲国产你懂的| 91美女片黄在线| 自拍偷在线精品自拍偷无码专区| 国产精品一级二级三级| 精品国产乱码久久久久久蜜臀| 亚洲电影你懂得| 色综合久久中文字幕| 中文字幕一区二区三区av| 韩国三级在线一区| 26uuu精品一区二区在线观看| 青草av.久久免费一区| 欧美日韩精品电影| 天天综合网 天天综合色| 欧美日韩国产bt| 视频一区二区三区中文字幕| 欧美日韩久久久| 亚洲成av人影院在线观看网| 欧美日韩精品福利| 免费成人小视频| 亚洲精品一区二区三区香蕉| 国产一区二区三区免费观看| 久久青草国产手机看片福利盒子 | 日本va欧美va精品发布| 91麻豆精品91久久久久久清纯| 日本中文字幕不卡| 欧美成人一区二区三区| 国产综合色在线视频区| 久久综合九色综合欧美98| 国产精品亚洲午夜一区二区三区| 久久精品一区八戒影视| bt7086福利一区国产| 亚洲少妇中出一区| 欧美日韩国产成人在线91| 蜜臀久久99精品久久久画质超高清| 日韩一区二区在线观看| 国产精品一区不卡| ...xxx性欧美| 欧美日韩国产经典色站一区二区三区| 午夜av电影一区| 精品国产91九色蝌蚪| 99精品国产热久久91蜜凸| 午夜精品久久久久久久99樱桃| 91精品国产免费| 成人高清视频在线| 亚洲一区二区三区视频在线播放 | 国产电影一区在线| 亚洲麻豆国产自偷在线| 91麻豆精品国产91久久久久久|