Skip to content
Snippets Groups Projects
Commit 90a6c9aa authored by Francois POLACK's avatar Francois POLACK
Browse files

fix: Edition of interpolating broken line :point addition and suppression.

parent 56680e49
No related branches found
No related tags found
No related merge requests found
......@@ -90,9 +90,14 @@ class Crms_fig(fig.Figure):
print('linemode on')
if len(self.vertices) >0:
self.lineedit=True
self.line.set_marker("s") # square markers
self.redraw_line()
self.canvas.set_cursor(3)
else:
print('linemode off')
if len(self.vertices) >0:
self.line.set_marker("") # no marker
self.redraw_line()
self.lineedit=False
self.canvas.set_cursor(1)
......@@ -100,9 +105,6 @@ class Crms_fig(fig.Figure):
def on_draw(self, event):
"""Callback for draws."""
self.background = self.canvas.copy_from_bbox(self.gca().bbox)
# self.ax.draw_artist(self.pathpatch)
# self.ax.draw_artist(self.line)
# self.canvas.blit(self.ax.bbox)
def get_vertex_index(self,event):
#xy=self.line.get_data()
......@@ -127,27 +129,36 @@ class Crms_fig(fig.Figure):
print(tnorm)
# print(d2)
print(d)
# U2=np.square(np.linalg.norm(segments, axis=1))
# d=np.sqrt((np.square(U2)-np.square(UV))/U2)
# xt, yt = xyt[:, 0], xyt[:, 1]
# d = np.sqrt((xt - event.x)**2 + (yt - event.y)**2)
ind = d.argmin()
return ind if d[ind] < self.epsilon and tnorm[ind] > 0 and tnorm[ind] < 1. else None
return ind+1 if d[ind] < self.epsilon and tnorm[ind] > 0 and tnorm[ind] < 1. else None
def button_press(self, event):
if event.inaxes is self.gca().axes and self.linemode:
if self.lineedit:
index=self.get_vertex_index(event)
if index!= None:
print( '>>', index, self.vertices[index])
self.index=index
self.mvcid = self.canvas.mpl_connect('motion_notify_event', self.on_mouse_move)
self.brcid = self.canvas.mpl_connect('button_release_event', self.on_button_release)
if 'shift' in event.modifiers:
print( 'delete point', index, self.vertices[index])
self.vertices.pop(index)
x,y=zip(*self.vertices)
self.line.set_data(list(x),list(y))
self.redraw_line()
return
else:
print( 'move point', index, self.vertices[index])
else:
# print('>>', event.modifiers)
if 'ctrl' in event.modifiers:
index=self.get_insert_index(event)
print("add point",index)
if index==None:
return
self.vertices.insert(index,(event.xdata,event.ydata))
x,y=zip(*self.vertices)
self.line.set_data(list(x),list(y))
self.index=index
self.mvcid = self.canvas.mpl_connect('motion_notify_event', self.on_mouse_move)
self.brcid = self.canvas.mpl_connect('button_release_event', self.on_button_release)
return
if event.dblclick:
#self.canvas.manager.toolmanager.trigger_tool('Line_tool', sender=self)
......@@ -168,6 +179,10 @@ class Crms_fig(fig.Figure):
else:
self.line.set_data(list(x),list(y))
def redraw_line(self):
self.canvas.restore_region(self.background)
self.gca().draw_artist(self.line)
self.canvas.blit(self.gca().bbox)
def on_mouse_move(self, event):
# print('on move')
......@@ -176,10 +191,11 @@ class Crms_fig(fig.Figure):
x[self.index]=event.xdata
y[self.index]=event.ydata
self.line.set_data(x,y)
self.redraw_line()
# print(self.line.get_data())
self.canvas.restore_region(self.background)
self.gca().draw_artist(self.line)
self.canvas.blit(self.gca().bbox)
# self.canvas.restore_region(self.background)
# self.gca().draw_artist(self.line)
# self.canvas.blit(self.gca().bbox)
def on_button_release(self,event):
if event.inaxes is self.gca().axes and self.lineedit:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment