@@ -90,6 +90,158 @@ def onselect(epress, erelease):
90
90
assert tool .center == (180 , 190 )
91
91
92
92
93
+ def test_rectangle_resize ():
94
+ ax = get_ax ()
95
+
96
+ def onselect (epress , erelease ):
97
+ pass
98
+
99
+ tool = widgets .RectangleSelector (ax , onselect , interactive = True )
100
+ # Create rectangle
101
+ do_event (tool , 'press' , xdata = 0 , ydata = 10 , button = 1 )
102
+ do_event (tool , 'onmove' , xdata = 100 , ydata = 120 , button = 1 )
103
+ do_event (tool , 'release' , xdata = 100 , ydata = 120 , button = 1 )
104
+ assert tool .extents == (0.0 , 100.0 , 10.0 , 120.0 )
105
+
106
+ # resize NE handle
107
+ extents = tool .extents
108
+ xdata , ydata = extents [1 ], extents [3 ]
109
+ xdata_new , ydata_new = xdata + 10 , ydata + 5
110
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
111
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
112
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
113
+ assert tool .extents == (0.0 , xdata_new , 10.0 , ydata_new )
114
+
115
+ # resize E handle
116
+ extents = tool .extents
117
+ xdata , ydata = extents [1 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
118
+ xdata_new , ydata_new = xdata + 10 , ydata
119
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
120
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
121
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
122
+ assert tool .extents == (0.0 , xdata_new , 10.0 , 125.0 )
123
+
124
+ # resize W handle
125
+ extents = tool .extents
126
+ xdata , ydata = extents [0 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
127
+ xdata_new , ydata_new = xdata + 15 , ydata
128
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
129
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
130
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
131
+ assert tool .extents == (xdata_new , 120.0 , 10.0 , 125.0 )
132
+
133
+ # resize SW handle
134
+ extents = tool .extents
135
+ xdata , ydata = extents [0 ], extents [2 ]
136
+ xdata_new , ydata_new = xdata + 20 , ydata + 25
137
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
138
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
139
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
140
+ assert tool .extents == (xdata_new , 120.0 , ydata_new , 125.0 )
141
+
142
+
143
+ @pytest .mark .parametrize ('use_default_state' , [True , False ])
144
+ def test_rectangle_resize_center (use_default_state ):
145
+ ax = get_ax ()
146
+
147
+ def onselect (epress , erelease ):
148
+ pass
149
+
150
+ tool = widgets .RectangleSelector (ax , onselect , interactive = True )
151
+ # Create rectangle
152
+ do_event (tool , 'press' , xdata = 70 , ydata = 65 , button = 1 )
153
+ do_event (tool , 'onmove' , xdata = 125 , ydata = 130 , button = 1 )
154
+ do_event (tool , 'release' , xdata = 125 , ydata = 130 , button = 1 )
155
+ assert tool .extents == (70.0 , 125.0 , 65.0 , 130.0 )
156
+
157
+ if use_default_state :
158
+ tool ._default_state .add ('center' )
159
+
160
+ # resize NE handle
161
+ extents = tool .extents
162
+ xdata , ydata = extents [1 ], extents [3 ]
163
+ xdiff , ydiff = 10 , 5
164
+ xdata_new , ydata_new = xdata + xdiff , ydata + ydiff
165
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
166
+ if not use_default_state :
167
+ do_event (tool , 'on_key_press' , key = 'control' )
168
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
169
+ if not use_default_state :
170
+ do_event (tool , 'on_key_release' , key = 'control' )
171
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
172
+ assert tool .extents == (70.0 - xdiff , xdata_new , 65.0 - ydiff , ydata_new )
173
+
174
+ # resize E handle
175
+ extents = tool .extents
176
+ xdata , ydata = extents [1 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
177
+ xdiff = 10
178
+ xdata_new , ydata_new = xdata + xdiff , ydata
179
+ do_event (tool , 'press' , xdata = xdata , ydata = ydata , button = 1 )
180
+ if not use_default_state :
181
+ do_event (tool , 'on_key_press' , key = 'control' )
182
+ do_event (tool , 'onmove' , xdata = xdata_new , ydata = ydata_new , button = 1 )
183
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
184
+ if not use_default_state :
185
+ do_event (tool , 'on_key_release' , key = 'control' )
186
+ assert tool .extents == (60.0 - xdiff , xdata_new , 60.0 , 135.0 )
187
+
188
+ # resize E handle negative diff
189
+ extents = tool .extents
190
+ xdata , ydata = extents [1 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
191
+ xdiff = - 20
192
+ xdata_new , ydata_new = xdata + xdiff , ydata
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
+ do_event (tool , 'release' , xdata = xdata_new , ydata = ydata_new , button = 1 )
198
+ if not use_default_state :
199
+ do_event (tool , 'on_key_release' , key = 'control' )
200
+ assert tool .extents == (50.0 - xdiff , xdata_new , 60.0 , 135.0 )
201
+
202
+ # resize W handle
203
+ extents = tool .extents
204
+ xdata , ydata = extents [0 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
205
+ xdiff = 15
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 == (xdata_new , 125.0 - xdiff , 60.0 , 135.0 )
215
+
216
+ # resize W handle
217
+ extents = tool .extents
218
+ xdata , ydata = extents [0 ], extents [2 ] + (extents [3 ] - extents [2 ]) / 2
219
+ xdiff = - 25
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 == (xdata_new , 110.0 - xdiff , 60.0 , 135.0 )
229
+
230
+ # resize SW handle
231
+ extents = tool .extents
232
+ xdata , ydata = extents [0 ], extents [2 ]
233
+ xdiff , ydiff = 20 , 25
234
+ xdata_new , ydata_new = xdata + xdiff , ydata + ydiff
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 , 135.0 - xdiff , ydata_new , 135.0 - ydiff )
243
+
244
+
93
245
def test_ellipse ():
94
246
"""For ellipse, test out the key modifiers"""
95
247
ax = get_ax ()
0 commit comments