void edit_select_rep::selection_get (selection& sel) { if (selection_active_table ()) { int row1, col1, row2, col2; path fp= selection_get_subtable (row1, col1, row2, col2); tree st= subtree (et, fp); int i, j; rectangle r (0, 0, 0, 0); for (i=row1; i<=row2; i++) for (j=col1; j<=col2; j++) { path cp= fp * ::table_search_cell (st, i, j); sel= eb->find_check_selection (cp * 0, cp * 1); if (sel->valid) { rectangles rs= sel->rs; if (r != rectangle (0, 0, 0, 0)) rs= rectangles (r, rs); r= least_upper_bound (rs); } } sel= selection (rectangles (r), fp * 0, fp * 1); } else { path p_start, p_end; //cout << "Find " << start_p << " -- " << end_p << "\n"; selection_correct (start_p, end_p, p_start, p_end); //cout << "Find " << p_start << " -- " << p_end << "\n"; sel= eb->find_check_selection (p_start, p_end); //cout << "sel= " << sel << "\n"; } }
box typesetter_rep::typeset (SI& x1b, SI& y1b, SI& x2b, SI& y2b) { x1= x1b; y1= y1b; x2=x2b; y2= y2b; box b= typeset (); // cout << "-------------------------------------------------------------\n"; b->position_at (0, 0, change_log); change_log= requires_update (change_log); rectangle r (0, 0, 0, 0); if (!is_nil (change_log)) r= least_upper_bound (change_log); x1b= r->x1; y1b= r->y1; x2b= r->x2; y2b= r->y2; change_log= rectangles (); return b; }
void x_window_rep::repaint_invalid_regions () { //if (!is_nil (invalid_regions)) cout << invalid_regions << "\n"; //else { cout << "."; cout.flush (); } rectangles new_regions; if (!is_nil (invalid_regions)) { rectangle lub= least_upper_bound (invalid_regions); if (area (lub) < 1.2 * area (invalid_regions)) invalid_regions= rectangles (lub); } while (!is_nil (invalid_regions)) { ren->set_origin (0, 0); rectangle r= copy (invalid_regions->item); r= thicken (r, 1, 1); ren->encode (r->x1, r->y1); ren->encode (r->x2, r->y2); ren->set_clipping (r->x1, r->y2, r->x2, r->y1); send_repaint (w, ren, r->x1, r->y2, r->x2, r->y1); if (gui_interrupted ()) new_regions= rectangles (invalid_regions->item, new_regions); invalid_regions= invalid_regions->next; } invalid_regions= new_regions; }