The Birdfont Source Code


All Repositories / birdfont.git / commit – RSS feed

Update Beziér tool

These changes was commited to the Birdfont repository Tue, 05 May 2015 05:07:13 +0000.

Contributing

Send patches or pull requests to johan.mattsson.m@gmail.com.
Clone this repository: git clone https://github.com/johanmattssonm/birdfont.git
author Johan Mattsson <johan.mattsson.m@gmail.com>
Tue, 05 May 2015 05:07:13 +0000 (07:07 +0200)
committer Johan Mattsson <johan.mattsson.m@gmail.com>
Tue, 05 May 2015 05:07:13 +0000 (07:07 +0200)
commit ca1b58eed8755003272f5c88d0cad04f40cf28af
tree 8881f5be13b862a966ea13b10130aa3475e1600b
parent 8fda8ebf0c6f91c2e6e7b0b267fa53e520b90e9f
Update Beziér tool

libbirdfont/ForesightTool.vala
libbirdfont/PenTool.vala
--- a/libbirdfont/ForesightTool.vala +++ b/libbirdfont/ForesightTool.vala @@ -68,7 +68,7 @@ press_action.connect ((self, b, x, y) => { // ignore double clicks - if ((GLib.get_real_time () - last_release_time) / 1000000.0 < 0.4) { + if ((GLib.get_real_time () - last_release_time) / 1000000.0 < 0.2) { print ("Double click."); last_release_time = GLib.get_real_time (); MainWindow.set_cursor (NativeWindow.VISIBLE); @@ -94,7 +94,14 @@ release_action.connect ((self, b, x, y) => { PenTool p = (PenTool) PointTool.pen (); PointSelection last; - + + last_move_x = x; + last_move_y = y; + + if (b == 2) { + return; + } + if (state == MOVE_HANDLES || state == MOVE_FIRST_HANDLE) { if (state != MOVE_FIRST_HANDLE) { last = add_new_point (x, y); @@ -140,7 +147,7 @@ last_move_x = x; last_move_y = y; - + a = get_active_path (); if (a.is_open () && a.points.size > 1) { a.get_first_point ().set_reflective_handles (false); @@ -157,7 +164,7 @@ } PenTool.active_path = current_path; - PenTool.active_path.hide_end_handle = PenTool.active_path.is_open (); + PenTool.active_path.hide_end_handle = (state == MOVE_POINT); if (state == MOVE_HANDLES || state == MOVE_LAST_HANDLE) { if (previous_point > 0) { @@ -283,9 +290,38 @@ g = MainWindow.get_current_glyph (); g.store_undo_state (); - last_move_x = x; - last_move_y = y; - + if (b == 2) { + last_move_x = x; + last_move_y = y; + + stop_drawing (); + + move_action (this, x, y); + return; + } + + if (state == NONE) { + state = MOVE_POINT; + + PenTool.active_path = get_active_path (); + + add_new_point (x, y); + + PenTool.last_point_x = Glyph.path_coordinate_x (x); + PenTool.last_point_y = Glyph.path_coordinate_y (y); + + move_action (this, x, y); + state = MOVE_FIRST_HANDLE; + + press_action(this, b, x, y); + release_action(this, b, x, y); + } + + if (previous_point > 0) { + previous_point = 0; + state = MOVE_POINT; + } + if (previous_point == 0) { if (state == MOVE_POINT) { state = MOVE_HANDLES; @@ -336,31 +372,9 @@ } } } - - if (state == NONE) { - state = MOVE_POINT; - add_new_point (x, y); - - PenTool.active_path = get_active_path (); - - PenTool.last_point_x = Glyph.path_coordinate_x (x); - PenTool.last_point_y = Glyph.path_coordinate_y (y); - - move_action (this, x, y); - state = MOVE_FIRST_HANDLE; - - press_action(this, b, x, y); - release_action(this, b, x, y); - } - - if (previous_point > 0) { - previous_point = 0; - state = MOVE_POINT; - } - - if (b == 2) { - stop_drawing (); - } + + last_move_x = x; + last_move_y = y; } public void stop_drawing () { @@ -382,14 +396,15 @@ } } - MainWindow.get_current_glyph ().clear_active_paths (); - p.press_action (p, 2, last_move_x, last_move_y); p.release_action (p, 2, last_move_x, last_move_y); current_path.hide_end_handle = true; previous_point = 0; state = NONE; + + MainWindow.get_current_glyph ().clear_active_paths (); + PenTool.active_path = new Path (); } public Path get_active_path () { @@ -421,13 +436,12 @@ double handle_x, handle_y; PenTool p = (PenTool) PointTool.pen (); - + if (PenTool.active_path.points.size == 0) { last = p.new_point_action (x, y); - } else { - + } else { if (PenTool.selected_points.size == 0) { - p.press_action (p, 1, x, y); + last = p.new_point_action (x, y); } if (PenTool.selected_points.size == 0) {
--- a/libbirdfont/PenTool.vala +++ b/libbirdfont/PenTool.vala @@ -1202,16 +1202,22 @@ active_path = merge; merge.reopen (); glyph.open_path (); + + print ("CONTINUE FIRST\n"); + return; } if (is_close_to_point (merge.points.get (0), px, py)) { glyph.add_active_path (merge); active_path = merge; - merge.reverse (); clear_directions (); merge.reopen (); glyph.open_path (); + merge.reverse (); + + print ("CONTINUE\n"); + return; } }