Snap multisplines together in 180 deg increments
Signed-off-by: Ravago Jones <ravagojones@gmail.com>
Change-Id: Ief9b07920f401d6cab79cccf59452dff44705f84
diff --git a/frc971/control_loops/python/path_edit.py b/frc971/control_loops/python/path_edit.py
index a0eb797..ecdbafe 100755
--- a/frc971/control_loops/python/path_edit.py
+++ b/frc971/control_loops/python/path_edit.py
@@ -53,7 +53,7 @@
# For the editing mode
self.control_point_index = None
- self.active_multispline_index = -1
+ self.active_multispline_index = 0
self.zoom_transform = cairo.Matrix()
@@ -68,7 +68,7 @@
"""Get the current active multispline or create a new one"""
if not self.multisplines:
self.multisplines.append(Multispline())
- self.active_multispline_index = -1
+ self.active_multispline_index = len(self.multisplines) - 1
return self.multisplines[self.active_multispline_index]
@@ -380,12 +380,16 @@
multispline.extrapolate()
self.queue_draw()
elif keyval == Gdk.KEY_m:
- self.multisplines.append(Multispline())
- self.active_spline_index = len(self.multisplines) - 1
self.mode = Mode.kPlacing
+ self.active_multispline_index += 1
+ self.multisplines.insert(self.active_multispline_index,
+ Multispline())
- multispline = self.multisplines[-2]
- #multispline.extrapolate()
+ prev_multispline = self.multisplines[self.active_multispline_index
+ - 1]
+ if prev_multispline:
+ self.active_multispline.extrapolate(
+ prev_multispline.getSplines()[-1])
self.queue_draw()
def do_button_release_event(self, event):
@@ -400,11 +404,12 @@
multispline.setControlPoint(self.control_point_index,
self.mousex, self.mousey)
- multispline.splineExtrapolate(
- self.control_point_index.spline_index)
+ Multispline.splineExtrapolate(self.multisplines,
+ self.control_point_index)
multispline.update_lib_spline()
self.graph.schedule_recalculate(self.multisplines)
+ self.queue_draw()
self.control_point_index = None
@@ -441,24 +446,22 @@
self.control_point_index = ControlPointIndex(
index_multisplines, index_splines,
index_points)
+ if self.control_point_index:
+ self.active_multispline_index = self.control_point_index.multispline_index
self.queue_draw()
def do_motion_notify_event(self, event):
- old_x = self.mousex
- old_y = self.mousey
self.mousex, self.mousey = self.input_transform.transform_point(
event.x, event.y)
- dif_x = self.mousex - old_x
- dif_y = self.mousey - old_y
- difs = np.array([dif_x, dif_y])
+ mouse = np.array([self.mousex, self.mousey])
if self.mode == Mode.kEditing and self.control_point_index != None:
multispline = self.multisplines[
self.control_point_index.multispline_index]
- multispline.updates_for_mouse_move(
- self.control_point_index.control_point_index,
- self.control_point_index.spline_index, self.mousex,
- self.mousey, difs)
+
+ multispline.updates_for_mouse_move(self.multisplines,
+ self.control_point_index,
+ mouse)
multispline.update_lib_spline()
self.graph.schedule_recalculate(self.multisplines)