blob: 21d5879a0944ee3987650a8171de9d43521c4456 [file] [log] [blame]
digraph {
label="MOTION RECOGNIZER" labelloc="t"
rankdir="LR"
// The gesture arena, which invokes methods on the various states of the recognizer.
arena [shape="doublecircle"]
// `InitialContender` definition.
arena -> examine_at_initial_contender [label="examine\nevent()"]
examine_at_initial_contender [shape="diamond" label="exactly\none\nfinger?"]
examine_at_initial_contender -> examine2_at_initial_contender [label="yes"]
examine_at_initial_contender -> return_mismatch_at_initial_contender [label="no"]
examine2_at_initial_contender [shape="diamond" label="button\npressed?"]
examine2_at_initial_contender -> return_finger_down_contender_at_initial_contender [label="no"]
examine2_at_initial_contender -> return_mismatch_at_initial_contender [label="yes"]
return_mismatch_at_initial_contender [shape="rectangle" label="return\nMismatch"]
return_finger_down_contender_at_initial_contender [shape="rectangle" label="return\nFingerDownContender"]
subgraph cluster_initial_contender {
label="InitialContender"
examine_at_initial_contender
examine2_at_initial_contender
return_mismatch_at_initial_contender
return_finger_down_contender_at_initial_contender
}
// How `finger_down_contender` handles examine_event().
arena -> examine_at_finger_down_contender [label="examine\nevent()"]
examine_at_finger_down_contender [shape="diamond" label="exactly\none\nfinger?"]
examine_at_finger_down_contender -> return_mismatch_at_finger_down_contender [label="no"]
examine_at_finger_down_contender -> examine2_at_finger_down_contender [label="yes"]
examine2_at_finger_down_contender [shape="diamond" label="button\npressed?"]
examine2_at_finger_down_contender -> return_mismatch_at_finger_down_contender [label="yes"]
examine2_at_finger_down_contender -> examine3_at_finger_down_contender [label="no"]
examine3_at_finger_down_contender [shape="diamond" label="displacement\n>\nthreshold?"]
examine3_at_finger_down_contender -> return_matched_contender_at_finger_down_contender [label="yes"]
examine3_at_finger_down_contender -> return_self_at_finger_down_contender [label="no"]
return_mismatch_at_finger_down_contender [shape="rectangle" label="return\nMismatch"]
return_matched_contender_at_finger_down_contender [shape="rectangle" label="return\nMatched\nContender"]
return_self_at_finger_down_contender [shape="rectangle" label="return\n`self`"]
subgraph cluster_finger_down_contender {
label="FingerDownContender\n`impl Contender`"
examine_at_finger_down_contender
examine2_at_finger_down_contender
examine3_at_finger_down_contender
return_mismatch_at_finger_down_contender
return_matched_contender_at_finger_down_contender
return_self_at_finger_down_contender
}
// Definition of `MatchedContender`
arena -> verify_at_matched_contender [label="verify\nevent()"]
verify_at_matched_contender [shape="diamond" label="exactly\none\nfinger?"]
verify_at_matched_contender -> return_mismatch_at_matched_contender [label="no"]
verify_at_matched_contender -> examine2_at_matched_contender [label="yes"]
examine2_at_matched_contender [shape="diamond" label="button\npressed?"]
examine2_at_matched_contender -> return_mismatch_at_matched_contender [label="yes"]
examine2_at_matched_contender -> return_self_at_matched_contender [label="no"]
arena -> return_winner_at_matched_contender [label="process\nbuffered\nevents()"]
return_mismatch_at_matched_contender [shape="rectangle" label="return\nMismatch"]
return_self_at_matched_contender [shape="rectangle" label="return\n`self`"]
return_winner_at_matched_contender [shape="rectangle" label="return\n`events`, Winner, Motion"]
subgraph cluster_matched_contender {
label="MatchedContender"
verify_at_matched_contender
examine2_at_matched_contender
return_mismatch_at_matched_contender
return_self_at_matched_contender
return_winner_at_matched_contender
}
// Definition of `Winner`
arena -> process_at_winner [label="process\nnew\nevent()"]
process_at_winner -> return_end_without_event_at_winner [label="0"]
process_at_winner [shape="diamond" label="num\nfingers\npresent"]
process_at_winner -> process2_at_winner [label="1"]
process_at_winner -> return_end_with_event_at_winner [label=">1"]
process2_at_winner [shape="diamond" label="button\npressed?"]
process2_at_winner -> return_end_with_event_at_winner [label="yes"]
process2_at_winner -> return_continue_with_event_at_winner [label="no"]
return_end_without_event_at_winner [shape="rectangle" label="return\nEndGesture(None)"]
return_end_with_event_at_winner [shape="rectangle" label="return\nEndGesture(Some)"]
return_continue_with_event_at_winner [shape="rectangle" label="return\nContinueGesture(\nSome, self)"]
subgraph cluster_winner {
label="Winner"
process_at_winner
process2_at_winner
return_end_without_event_at_winner
return_end_with_event_at_winner
return_continue_with_event_at_winner
}
}