gr_selections box_rep::graphical_select (SI x, SI y, SI dist) { gr_selections res; if (graphical_distance (x, y) <= dist) { gr_selection gs; gs->type= "box"; gs->dist= graphical_distance (x, y); gs->cp << find_tree_path (x, y, dist); // FIXME: check whether this is correct: I do not remember whether // find_tree_path returns an absolute or a relative path gs->c= curve (); res << gs; } return res; }
gr_selections composite_box_rep::graphical_select (SI x, SI y, SI dist) { gr_selections res; if (graphical_distance (x, y) <= dist) { int i, n= subnr(); for (i=0; i<n; i++) res << bs[i]->graphical_select (x- sx(i), y- sy(i), dist); } return res; }
gr_selections box_rep::graphical_select (SI x1, SI y1, SI x2, SI y2) { gr_selections res; if (in_rectangle (x1, y1, x2, y2)) { gr_selection gs; gs->type= "box"; gs->dist= graphical_distance (x1, y1); SI dist= (SI)norm (point (x2-x1, y2-y1)); gs->cp << find_tree_path (x1, y1, dist); // FIXME: as above, check whether this is correct or not gs->pts= array<point> (0); gs->c= curve (); res << gs; } return res; }