@@ -59,7 +59,8 @@ def draw_callback(self, event):
59
59
self .background = self .canvas .copy_from_bbox (self .ax .bbox )
60
60
self .ax .draw_artist (self .poly )
61
61
self .ax .draw_artist (self .line )
62
- self .canvas .blit (self .ax .bbox )
62
+ # do not need to blit here, this will fire before the screen is
63
+ # updated
63
64
64
65
def poly_changed (self , poly ):
65
66
'this method is called whenever the polygon object is called'
@@ -114,9 +115,8 @@ def key_press_callback(self, event):
114
115
elif event .key == 'd' :
115
116
ind = self .get_ind_under_point (event )
116
117
if ind is not None :
117
- self .poly .xy = [tup
118
- for i , tup in enumerate (self .poly .xy )
119
- if i != ind ]
118
+ self .poly .xy = np .delete (self .poly .xy ,
119
+ ind , axis = 0 )
120
120
self .line .set_data (zip (* self .poly .xy ))
121
121
elif event .key == 'i' :
122
122
xys = self .poly .get_transform ().transform (self .poly .xy )
@@ -126,14 +126,14 @@ def key_press_callback(self, event):
126
126
s1 = xys [i + 1 ]
127
127
d = dist_point_to_segment (p , s0 , s1 )
128
128
if d <= self .epsilon :
129
- self .poly .xy = np .array (
130
- list ( self .poly .xy [: i ]) +
131
- [( event .xdata , event .ydata )] +
132
- list ( self . poly . xy [ i :]) )
129
+ self .poly .xy = np .insert (
130
+ self .poly .xy , i + 1 ,
131
+ [event .xdata , event .ydata ],
132
+ axis = 0 )
133
133
self .line .set_data (zip (* self .poly .xy ))
134
134
break
135
-
136
- self .canvas .draw ()
135
+ if self . line . stale :
136
+ self .canvas .draw_idle ()
137
137
138
138
def motion_notify_callback (self , event ):
139
139
'on mouse movement'
0 commit comments