@@ -282,7 +282,7 @@ def __init__(self, x, y):
282282 self ._old_values = None
283283 self .current_state = None
284284
285- def _restore (self ):
285+ def restore (self ):
286286 if self ._old_values is not None :
287287 for i in [
288288 "x" ,
@@ -297,50 +297,8 @@ def _restore(self):
297297 ]:
298298 setattr (self , i , getattr (self ._old_values , i ))
299299
300- def move_to (self , state ):
301- # fill in the previous values
302- if self .current_state == PenState .PEN_IS_OUT_OF_RANGE :
303- self ._restore ()
304-
305- print (f"\n *** pen is moving to { state } ***" )
306-
307- if state == PenState .PEN_IS_OUT_OF_RANGE :
308- self ._old_values = copy .copy (self )
309- self .x = 0
310- self .y = 0
311- self .tipswitch = False
312- self .tippressure = 0
313- self .azimuth = 0
314- self .inrange = False
315- self .width = 0
316- self .height = 0
317- self .invert = False
318- self .eraser = False
319- self .x_tilt = 0
320- self .y_tilt = 0
321- self .twist = 0
322- elif state == PenState .PEN_IS_IN_RANGE :
323- self .tipswitch = False
324- self .inrange = True
325- self .invert = False
326- self .eraser = False
327- elif state == PenState .PEN_IS_IN_CONTACT :
328- self .tipswitch = True
329- self .inrange = True
330- self .invert = False
331- self .eraser = False
332- elif state == PenState .PEN_IS_IN_RANGE_WITH_ERASING_INTENT :
333- self .tipswitch = False
334- self .inrange = True
335- self .invert = True
336- self .eraser = False
337- elif state == PenState .PEN_IS_ERASING :
338- self .tipswitch = False
339- self .inrange = True
340- self .invert = True
341- self .eraser = True
342-
343- self .current_state = state
300+ def backup (self ):
301+ self ._old_values = copy .copy (self )
344302
345303 def __assert_axis (self , evdev , axis , value ):
346304 if (
@@ -384,6 +342,51 @@ def __init__(
384342 continue
385343 self .fields = [f .usage_name for f in r ]
386344
345+ def move_to (self , pen , state ):
346+ # fill in the previous values
347+ if pen .current_state == PenState .PEN_IS_OUT_OF_RANGE :
348+ pen .restore ()
349+
350+ print (f"\n *** pen is moving to { state } ***" )
351+
352+ if state == PenState .PEN_IS_OUT_OF_RANGE :
353+ pen .backup ()
354+ pen .x = 0
355+ pen .y = 0
356+ pen .tipswitch = False
357+ pen .tippressure = 0
358+ pen .azimuth = 0
359+ pen .inrange = False
360+ pen .width = 0
361+ pen .height = 0
362+ pen .invert = False
363+ pen .eraser = False
364+ pen .x_tilt = 0
365+ pen .y_tilt = 0
366+ pen .twist = 0
367+ elif state == PenState .PEN_IS_IN_RANGE :
368+ pen .tipswitch = False
369+ pen .inrange = True
370+ pen .invert = False
371+ pen .eraser = False
372+ elif state == PenState .PEN_IS_IN_CONTACT :
373+ pen .tipswitch = True
374+ pen .inrange = True
375+ pen .invert = False
376+ pen .eraser = False
377+ elif state == PenState .PEN_IS_IN_RANGE_WITH_ERASING_INTENT :
378+ pen .tipswitch = False
379+ pen .inrange = True
380+ pen .invert = True
381+ pen .eraser = False
382+ elif state == PenState .PEN_IS_ERASING :
383+ pen .tipswitch = False
384+ pen .inrange = True
385+ pen .invert = True
386+ pen .eraser = True
387+
388+ pen .current_state = state
389+
387390 def event (self , pen ):
388391 rs = []
389392 r = self .create_report (application = self .cur_application , data = pen )
@@ -462,7 +465,7 @@ def _test_states(self, state_list, scribble):
462465 cur_state = PenState .PEN_IS_OUT_OF_RANGE
463466
464467 p = Pen (50 , 60 )
465- p .move_to (PenState .PEN_IS_OUT_OF_RANGE )
468+ uhdev .move_to (p , PenState .PEN_IS_OUT_OF_RANGE )
466469 events = self .post (uhdev , p )
467470 self .validate_transitions (cur_state , p , evdev , events )
468471
@@ -475,7 +478,7 @@ def _test_states(self, state_list, scribble):
475478 events = self .post (uhdev , p )
476479 self .validate_transitions (cur_state , p , evdev , events )
477480 assert len (events ) >= 3 # X, Y, SYN
478- p .move_to (state )
481+ uhdev .move_to (p , state )
479482 if scribble and state != PenState .PEN_IS_OUT_OF_RANGE :
480483 p .x += 1
481484 p .y -= 1
0 commit comments