1 // A diagram of the state machine found in gesture_sequence.cc 2 // To generate a pdf: 3 // dot -Tpdf -ooutput.pdf gestures.dot 4 // 5 // If you alter this diagram, please update: 6 // sites.google.com/a/chromium.org/dev/developers/design-documents/aura/gesture-recognizer 7 8 digraph G { 9 ratio = 1; 10 11 legend[label = "{ \ 12 M : Move \l\ 13 D : Down \l\ 14 S : Stationary \l\ 15 C : Cancel \l\ 16 R : Release \l\ 17 M_Delay : Move after a certain delay}" 18 shape = record] 19 20 GS_NO_GESTURE -> GS_PENDING_SYNTHETIC_CLICK [label= "D0"]; 21 22 GS_PENDING_SYNTHETIC_CLICK -> GS_SCROLL [label= "M0\n S0"]; 23 GS_PENDING_SYNTHETIC_CLICK -> GS_PENDING_SYNTHETIC_CLICK [label= "M0\n S0"]; 24 GS_PENDING_SYNTHETIC_CLICK -> GS_NO_GESTURE [label= "C0\n R0"]; 25 GS_PENDING_SYNTHETIC_CLICK -> GS_PENDING_SYNTHETIC_CLICK_NO_SCROLL [label= "M0"]; 26 GS_PENDING_SYNTHETIC_CLICK -> GS_PENDING_TWO_FINGER_TAP [label= "D1"]; 27 GS_PENDING_SYNTHETIC_CLICK -> GS_PENDING_PINCH [label= "D1"]; 28 GS_PENDING_SYNTHETIC_CLICK -> GS_SYNTHETIC_CLICK_ABORTED [label= "M0"]; 29 30 GS_PENDING_SYNTHETIC_CLICK_NO_SCROLL -> GS_PENDING_SYNTHETIC_CLICK_NO_SCROLL [label= "M0\n S0"]; 31 GS_PENDING_SYNTHETIC_CLICK_NO_SCROLL -> GS_NO_GESTURE [label= "C0\n R0"]; 32 GS_PENDING_SYNTHETIC_CLICK_NO_SCROLL -> GS_PENDING_TWO_FINGER_TAP [label= "D1"]; 33 GS_PENDING_SYNTHETIC_CLICK_NO_SCROLL -> GS_PENDING_PINCH [label= "D1"]; 34 GS_PENDING_SYNTHETIC_CLICK_NO_SCROLL -> GS_SYNTHETIC_CLICK_ABORTED [label= "M0"]; 35 36 GS_SYNTHETIC_CLICK_ABORTED -> GS_NO_GESTURE [label= "C0\n R0"]; 37 GS_SYNTHETIC_CLICK_ABORTED -> GS_PENDING_PINCH [label= "D1"]; 38 39 GS_SCROLL -> GS_SCROLL [label= "M0"]; 40 GS_SCROLL -> GS_NO_GESTURE [label= "C0\n R0\n"]; 41 GS_SCROLL -> GS_PENDING_TWO_FINGER_TAP [label= "D1"]; 42 43 GS_PENDING_PINCH -> GS_PENDING_PINCH [label= "M0\n M1"]; 44 GS_PENDING_PINCH -> GS_PENDING_PINCH_NO_PINCH [label= "M0\n M1"]; 45 GS_PENDING_PINCH -> GS_PINCH [label= "M0\n M1"]; 46 GS_PENDING_PINCH -> GS_SCROLL [label= "R0\n R1\n C0\n C1"]; 47 48 GS_PENDING_PINCH_NO_PINCH -> GS_PENDING_PINCH_NO_PINCH [label= "M0\n M1"]; 49 GS_PENDING_PINCH_NO_PINCH -> GS_SCROLL [label= "R0\n R1\n C0\n C1"]; 50 51 GS_PENDING_TWO_FINGER_TAP -> GS_PENDING_TWO_FINGER_TAP [label= "M0\n M1"]; 52 GS_PENDING_TWO_FINGER_TAP -> GS_PENDING_TWO_FINGER_TAP_NO_PINCH [label= "M0\n M1"]; 53 GS_PENDING_TWO_FINGER_TAP -> GS_PINCH [label= "M0\n M1"]; 54 GS_PENDING_TWO_FINGER_TAP -> GS_PINCH [label= "M_Delay0\n M_Delay1"]; 55 GS_PENDING_TWO_FINGER_TAP -> GS_PINCH [label= "D2"]; 56 GS_PENDING_TWO_FINGER_TAP -> GS_SCROLL [label= "R0\n R1\n C0\n C1"]; 57 58 GS_PENDING_TWO_FINGER_TAP_NO_PINCH -> GS_PENDING_TWO_FINGER_TAP_NO_PINCH [label= "M0\n M1"]; 59 GS_PENDING_TWO_FINGER_TAP_NO_PINCH -> GS_SCROLL [label= "R0\n R1\n C0\n C1"]; 60 61 GS_PINCH -> GS_PINCH [label= "M0\n M1"]; 62 GS_PINCH -> GS_SCROLL [label= "C0\n R0\n C1\n R1"]; 63 GS_PINCH -> GS_PENDING_THREE_FINGER_SWIPE [label= "D2"]; 64 65 GS_PENDING_THREE_FINGER_SWIPE -> GS_PINCH [label= "C0\n R0\n C1\n R1\n C2\n R2"]; 66 GS_PENDING_THREE_FINGER_SWIPE -> GS_PENDING_THREE_FINGER_SWIPE [label= "M0\n M1\n M2"]; 67 }