@@ -118,6 +118,158 @@ def onselect(epress, erelease):
118
118
assert artist .get_alpha () == 0.3
119
119
120
120
121
+ def test_rectangle_resize ():
122
+ ax = get_ax ()
123
+
124
+ def onselect (epress , erelease ):
125
+ pass
126
+
127
+ tool = widgets .RectangleSelector (ax , onselect , interactive = True )
128
+ # Create rectangle
129
+ do_event (tool , 'press' , xdata = 0 , ydata = 10 , button = 1 )
130
+ do_event (tool , 'onmove' , xdata = 100 , ydata = 120 , button = 1 )
131
+ do_event (tool , 'release' , xdata = 100 , ydata = 120 , button = 1 )
132
+ assert tool .extents == (0.0 , 100.0 , 10.0 , 120.0 )
133
+
134
+ # resize NE handle
135
+ extents = tool .extents
136
+ xdata , ydata = extents [1 ], extents [3 ]
137
+ xdata_new , ydata_new = xdata + 10 , ydata + 5
138
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
139
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
140
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
141
+ assert tool .extents == (0.0 , xdata_new , 10.0 , ydata_new )
142
+
143
+ # resize E handle
144
+ extents = tool .extents
145
+ xdata , ydata = extents [1 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
146
+ xdata_new , ydata_new = xdata + 10 , ydata
147
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
148
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
149
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
150
+ assert tool .extents == (0.0 , xdata_new , 10.0 , 125.0 )
151
+
152
+ # resize W handle
153
+ extents = tool .extents
154
+ xdata , ydata = extents [0 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
155
+ xdata_new , ydata_new = xdata + 15 , ydata
156
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
157
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
158
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
159
+ assert tool .extents == (xdata_new , 120.0 , 10.0 , 125.0 )
160
+
161
+ # resize SW handle
162
+ extents = tool .extents
163
+ xdata , ydata = extents [0 ], extents [2 ]
164
+ xdata_new , ydata_new = xdata + 20 , ydata + 25
165
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
166
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
167
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
168
+ assert tool .extents == (xdata_new , 120.0 , ydata_new , 125.0 )
169
+
170
+
171
+ @pytest .mark .parametrize ('use_default_state' , [True , False ])
172
+ def test_rectangle_resize_center (use_default_state ):
173
+ ax = get_ax ()
174
+
175
+ def onselect (epress , erelease ):
176
+ pass
177
+
178
+ tool = widgets .RectangleSelector (ax , onselect , interactive = True )
179
+ # Create rectangle
180
+ do_event (tool , 'press' , xdata = 70 , ydata = 65 , button = 1 )
181
+ do_event (tool , 'onmove' , xdata = 125 , ydata = 130 , button = 1 )
182
+ do_event (tool , 'release' , xdata = 125 , ydata = 130 , button = 1 )
183
+ assert tool .extents == (70.0 , 125.0 , 65.0 , 130.0 )
184
+
185
+ if use_default_state :
186
+ tool ._default_state .add ('center' )
187
+
188
+ # resize NE handle
189
+ extents = tool .extents
190
+ xdata , ydata = extents [1 ], extents [3 ]
191
+ xdiff , ydiff = 10 , 5
192
+ xdata_new , ydata_new = xdata + xdiff , ydata + ydiff
193
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
194
+ if not use_default_state :
195
+ do_event (tool , 'on_key_press' , key = 'control' )
196
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
197
+ if not use_default_state :
198
+ do_event (tool , 'on_key_release' , key = 'control' )
199
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
200
+ assert tool .extents == (70.0 - xdiff , xdata_new , 65.0 - ydiff , ydata_new )
201
+
202
+ # resize E handle
203
+ extents = tool .extents
204
+ xdata , ydata = extents [1 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
205
+ xdiff = 10
206
+ xdata_new , ydata_new = xdata + xdiff , ydata
207
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
208
+ if not use_default_state :
209
+ do_event (tool , 'on_key_press' , key = 'control' )
210
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
211
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
212
+ if not use_default_state :
213
+ do_event (tool , 'on_key_release' , key = 'control' )
214
+ assert tool .extents == (60.0 - xdiff , xdata_new , 60.0 , 135.0 )
215
+
216
+ # resize E handle negative diff
217
+ extents = tool .extents
218
+ xdata , ydata = extents [1 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
219
+ xdiff = - 20
220
+ xdata_new , ydata_new = xdata + xdiff , ydata
221
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
222
+ if not use_default_state :
223
+ do_event (tool , 'on_key_press' , key = 'control' )
224
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
225
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
226
+ if not use_default_state :
227
+ do_event (tool , 'on_key_release' , key = 'control' )
228
+ assert tool .extents == (50.0 - xdiff , xdata_new , 60.0 , 135.0 )
229
+
230
+ # resize W handle
231
+ extents = tool .extents
232
+ xdata , ydata = extents [0 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
233
+ xdiff = 15
234
+ xdata_new , ydata_new = xdata + xdiff , ydata
235
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
236
+ if not use_default_state :
237
+ do_event (tool , 'on_key_press' , key = 'control' )
238
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
239
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
240
+ if not use_default_state :
241
+ do_event (tool , 'on_key_release' , key = 'control' )
242
+ assert tool .extents == (xdata_new , 125.0 - xdiff , 60.0 , 135.0 )
243
+
244
+ # resize W handle
245
+ extents = tool .extents
246
+ xdata , ydata = extents [0 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
247
+ xdiff = - 25
248
+ xdata_new , ydata_new = xdata + xdiff , ydata
249
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
250
+ if not use_default_state :
251
+ do_event (tool , 'on_key_press' , key = 'control' )
252
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
253
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
254
+ if not use_default_state :
255
+ do_event (tool , 'on_key_release' , key = 'control' )
256
+ assert tool .extents == (xdata_new , 110.0 - xdiff , 60.0 , 135.0 )
257
+
258
+ # resize SW handle
259
+ extents = tool .extents
260
+ xdata , ydata = extents [0 ], extents [2 ]
261
+ xdiff , ydiff = 20 , 25
262
+ xdata_new , ydata_new = xdata + xdiff , ydata + ydiff
263
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
264
+ if not use_default_state :
265
+ do_event (tool , 'on_key_press' , key = 'control' )
266
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
267
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
268
+ if not use_default_state :
269
+ do_event (tool , 'on_key_release' , key = 'control' )
270
+ assert tool .extents == (xdata_new , 135.0 - xdiff , ydata_new , 135.0 - ydiff )
271
+
272
+
121
273
def test_ellipse ():
122
274
"""For ellipse, test out the key modifiers"""
123
275
ax = get_ax ()
0 commit comments