static int cancel_which(void) { if (which >= 0) { R_standard_color(BACKGROUND); Outline_box((report.top + which * height) + 1, report.top + (which + 1) * height, report.left, report.right - 1); show_point(first_point + which, 1); } which = -1; return 0; }
void frame_init (void) { //整体表格绘制 uint16_t cur_x,cur_y; uint8_t up[] = "Up",down[] = "Down",lift[] = "Lift",ringt[] = "Right"; for(cur_x = SysStarX;cur_x < SysEndX;cur_x += BSIZE) { for(cur_y = SysStarY;cur_y < SysEndY;cur_y += BSIZE) { ssd1289_draw_line(cur_x ,cur_y,cur_x ,cur_y + BSIZE,Green); ssd1289_draw_line(cur_x + BSIZE,cur_y,cur_x + BSIZE,cur_y + BSIZE,Green); ssd1289_draw_line(cur_x, cur_y,cur_x + BSIZE,cur_y ,Green); ssd1289_draw_line(cur_x,cur_y + BSIZE,cur_x + BSIZE,cur_y + BSIZE,Green); } } //绘制按键 //第一个 ssd1289_square_full(290,5,315,45,BUTTON_UP); ssd1289_putchs(295,10,Black,CoppyB,lift); //第二个 ssd1289_square_full(290,68,315,108,BUTTON_UP); ssd1289_putchs(295,68,Black,CoppyB,ringt); //第三个 ssd1289_square_full(290,131,315,171,BUTTON_UP); ssd1289_putchs(295,136,Black,CoppyB,down); //第四个 ssd1289_square_full(290,194,315,234,BUTTON_UP); ssd1289_putchs(295,204,Black,CoppyB,up); //初始化board变量 】 for(cur_x = 0;cur_x < Vertical_boxs;cur_x ++) { for(cur_y = 0;cur_y < Horizontal_boxs;cur_y ++) { Table_board[cur_x][cur_y].var = 0; Table_board[cur_x][cur_y].color = Black; } } //打开滴答定时器 SysTick->CTRL |= SysTick_CTRL_ENABLE; //初始化分数区域 show_point(0); }
static void show_item_layer(PcbItem *item, int layer) { if (!pcb.layer->olay) return; hide_item_layer(item, layer); if (!(item->layers & LAYER(layer))) return; switch (item->type) { case PCB_POINT: show_point(item, layer); break; case PCB_LINE: show_line(item, layer); break; } }
/** * process_image_event() * * User has done something in the image window - mouse down or up. Work out * what it is and do something with it. * If DOWN - just remember where it was. * If UP - for each word in the selected area do the operation defined by * the current mode. */ void Tesseract::process_image_event( // action in image win const SVEvent &event) { // The following variable should remain static, since it is used by // debug editor, which uses a single Tesseract instance. static ICOORD down; ICOORD up; TBOX selection_box; char msg[80]; switch(event.type) { case SVET_SELECTION: if (event.type == SVET_SELECTION) { down.set_x(event.x + event.x_size); down.set_y(event.y + event.y_size); if (mode == SHOW_POINT_CMD_EVENT) show_point(current_page_res, event.x, event.y); } up.set_x(event.x); up.set_y(event.y); selection_box = TBOX(down, up); switch(mode) { case CHANGE_DISP_CMD_EVENT: process_selected_words( current_page_res, selection_box, &tesseract::Tesseract::word_blank_and_set_display); break; case DUMP_WERD_CMD_EVENT: process_selected_words(current_page_res, selection_box, &tesseract::Tesseract::word_dumper); break; case SHOW_BLN_WERD_CMD_EVENT: process_selected_words(current_page_res, selection_box, &tesseract::Tesseract::word_bln_display); break; case DEBUG_WERD_CMD_EVENT: debug_word(current_page_res, selection_box); break; case SHOW_POINT_CMD_EVENT: break; // ignore up event case RECOG_WERDS: image_win->AddMessage("Recogging selected words"); this->process_selected_words(current_page_res, selection_box, &Tesseract::recog_interactive); break; case RECOG_PSEUDO: image_win->AddMessage("Recogging selected blobs"); recog_pseudo_word(current_page_res, selection_box); break; default: sprintf(msg, "Mode %d not yet implemented", mode); image_win->AddMessage(msg); break; } default: break; } }
void Notify(const SVEvent* sv_event) { if (sv_event->type == SVET_DESTROY) bln_word_window = NULL; else if (sv_event->type == SVET_CLICK) show_point(current_page_res, sv_event->x, sv_event->y); }
static int pick(int x, int y) { int n; int cur; cur = which; cancel_which(); if (inbox(&more, x, y)) { if (curp >= group.points.count) return 0; first_point = curp; pager = 1; return 1; } if (inbox(&less, x, y)) { if (first_point == 0) return 0; first_point -= nlines; if (first_point < 0) first_point = 0; pager = 1; return 1; } if (!inbox(&report, x, y)) { return 0; } n = (y - report.top) / height; if (n == cur) { /* second click! */ if (!delete_mode) { group.points.status[first_point + n] = !group.points.status[first_point + n]; compute_transformation(); show_point(first_point + n, 1); return 1; } else { delete_control_point(first_point + n); first_point = 0; compute_transformation(); pager = 1; return 1; } } /* first click */ which = n; show_point(first_point + n, 0); if (!delete_mode) R_standard_color(RED); else R_standard_color(ORANGE); Outline_box((report.top + n * height) + 1, report.top + (n + 1) * height, report.left, report.right - 1); R_flush(); return 0; /* ignore first click */ }