void edit_interface_rep::draw_graphics (renderer ren) { if (got_focus || full_screen) { cursor cu= get_cursor(); if (over_graphics(cu->ox, cu->oy) && inside_active_graphics ()) { eval ("(graphics-reset-context 'graphics-cursor)"); draw_graphical_object (ren); string tm_curs= as_string (eval ("graphics-texmacs-pointer")); if (tm_curs != "none") { if (tm_curs == "graphics-cross") { ren->set_line_style (pixel); ren->set_color (red); ren->line (cu->ox, cu->oy-5*pixel, cu->ox, cu->oy+5*pixel); ren->line (cu->ox-5*pixel, cu->oy, cu->ox+5*pixel, cu->oy); } else if (tm_curs == "graphics-cross-arrows") { static int s= 6*pixel, a= 2*pixel; ren->set_line_style (pixel); ren->set_color (red); ren->line (cu->ox, cu->oy-s, cu->ox, cu->oy+s); ren->line (cu->ox-s, cu->oy, cu->ox+s, cu->oy); ren->line (cu->ox, cu->oy-s,cu->ox-a, cu->oy-s+a); ren->line (cu->ox, cu->oy-s, cu->ox+a, cu->oy-s+a); ren->line (cu->ox, cu->oy+s, cu->ox-a, cu->oy+s-a); ren->line (cu->ox, cu->oy+s, cu->ox+a, cu->oy+s-a); ren->line (cu->ox-s, cu->oy, cu->ox-s+a, cu->oy+a); ren->line (cu->ox-s, cu->oy, cu->ox-s+a, cu->oy-a); ren->line (cu->ox+s, cu->oy, cu->ox+s-a, cu->oy+a); ren->line (cu->ox+s, cu->oy, cu->ox+s-a, cu->oy-a); } } } else eval ("(graphics-reset-context 'text-cursor)"); } }
bool edit_graphics_rep::mouse_graphics (string type, SI x, SI y, int m, time_t t) { //cout << type << ", " << x << ", " << y << ", " << m << ", " << t << "\n"; //cout << "et= " << et << "\n"; //cout << "tp= " << tp << "\n"; //cout << "gp= " << graphics_path () << "\n"; (void) t; // apply_changes (); // FIXME: remove after review of synchronization frame f= find_frame (); if (!is_nil (f)) { if (!over_graphics (x, y)) return false; if (type == "move" || type == "dragging-left") if (check_event (MOTION_EVENT)) return true; point p = f [point (x, y)]; graphical_select (p[0], p[1]); // init the caching for adjust(). p= adjust (p); gr_x= p[0]; gr_y= p[1]; string sx= as_string (p[0]); string sy= as_string (p[1]); invalidate_graphical_object (); call ("set-keyboard-modifiers", object (m)); if (type == "move") call ("graphics-move", sx, sy); else if (type == "release-left" || type == "double-left") call ("graphics-release-left", sx, sy); else if (type == "release-middle") call ("graphics-release-middle", sx, sy); else if (type == "release-right" || type == "double-right") call ("graphics-release-right", sx, sy); else if (type == "start-drag-left") call ("graphics-start-drag-left", sx, sy); else if (type == "dragging-left") call ("graphics-dragging-left", sx, sy); else if (type == "end-drag-left") call ("graphics-end-drag-left", sx, sy); else if (type == "start-drag-right") call ("graphics-start-drag-right", sx, sy); else if (type == "dragging-right") call ("graphics-dragging-right", sx, sy); else if (type == "end-drag-right") call ("graphics-end-drag-right", sx, sy); invalidate_graphical_object (); notify_change (THE_CURSOR); return true; } //cout << "No frame " << tp << ", " << subtree (et, path_up (tp)) << "\n"; return false; }
bool edit_graphics_rep::mouse_graphics (string type, SI x, SI y, int m, time_t t) { (void) t; // apply_changes (); // FIXME: remove after review of synchronization frame f= find_frame (); if (!is_nil (f)) { if (!over_graphics (x, y)) return false; if (type == "move" || type == "dragging") if (check_event (MOTION_EVENT)) return true; point p = f [point (x, y)]; graphical_select (p[0], p[1]); // init the caching for adjust(). p = adjust (p); gr_x= p[0]; gr_y= p[1]; string sx= as_string (p[0]); string sy= as_string (p[1]); invalidate_graphical_object (); call ("set-keyboard-modifiers", object (m)); if (type == "move") call ("graphics-move-point", sx, sy); else if (type == "release-left") call ("graphics-insert-point", sx, sy); else if (type == "release-middle") call ("graphics-remove-point", sx, sy); else if (type == "release-right") call ("graphics-last-point", sx, sy); else if (type == "start-drag") call ("graphics-start-drag", sx, sy); else if (type == "dragging") call ("graphics-dragging", sx, sy); else if (type == "end-drag") call ("graphics-end-drag", sx, sy); else if (type == "start-right-drag") call ("graphics-start-right-drag", sx, sy); else if (type == "right-dragging") call ("graphics-right-dragging", sx, sy); else if (type == "end-right-drag") call ("graphics-end-right-drag", sx, sy); invalidate_graphical_object (); notify_change (THE_CURSOR); return true; } return false; }