|
@@ -0,0 +1,59 @@
|
|
|
|
|
+\documentclass{minimal}
|
|
|
|
|
+
|
|
|
|
|
+\usepackage{tikz}
|
|
|
|
|
+\usetikzlibrary{shapes,arrows}
|
|
|
|
|
+
|
|
|
|
|
+\begin{document}
|
|
|
|
|
+\pagestyle{empty}
|
|
|
|
|
+
|
|
|
|
|
+% Block+line styles
|
|
|
|
|
+\tikzstyle{block} = [rectangle, draw, fill=blue!20, text width=5em,
|
|
|
|
|
+ text centered, rounded corners, minimum height=4em]
|
|
|
|
|
+\tikzstyle{impl} = [rectangle, draw, fill=yellow, text width=5em,
|
|
|
|
|
+ text centered, rounded corners, minimum height=4em]
|
|
|
|
|
+\tikzstyle{app} = [rectangle, draw, fill=green, text width=5em,
|
|
|
|
|
+ text centered, rounded corners, minimum height=4em]
|
|
|
|
|
+\tikzstyle{line} = [draw, -latex']
|
|
|
|
|
+
|
|
|
|
|
+\begin{tikzpicture}[node distance = 7em, auto]
|
|
|
|
|
+ % Servers
|
|
|
|
|
+ \node [block] (inputserver) {Input server};
|
|
|
|
|
+ \node [right of=inputserver] (inputserverdots) {$\cdots$};
|
|
|
|
|
+
|
|
|
|
|
+ \node [impl, right of=inputserverdots] (tuioserver) {TUIO server};
|
|
|
|
|
+
|
|
|
|
|
+ \node [block, below of=inputserver] (gestureserver) {Gesture server};
|
|
|
|
|
+ \path [line] (inputserver) -- node {triggers [down, move, up]}(gestureserver);
|
|
|
|
|
+
|
|
|
|
|
+ % Window
|
|
|
|
|
+ \node [block, below of=gestureserver] (window) {Window};
|
|
|
|
|
+ \node [right of=window] (windowdots) {$\cdots$};
|
|
|
|
|
+ \path [line] (gestureserver) -- node {triggers [down, move, up]}(window);
|
|
|
|
|
+
|
|
|
|
|
+ \node [impl, right of=windowdots] (rectangularwindow) {Rectangular window};
|
|
|
|
|
+ \node [impl, right of=rectangularwindow] (circularwindow) {Circular window};
|
|
|
|
|
+
|
|
|
|
|
+ % Tracker
|
|
|
|
|
+ \node [block, below of=window] (tracker) {Gesture tracker};
|
|
|
|
|
+ \node [right of=tracker] (trackerdots) {$\cdots$};
|
|
|
|
|
+ \path [line] (window) -- node {triggers [down, move, up]}(tracker);
|
|
|
|
|
+
|
|
|
|
|
+ \node [impl, right of=trackerdots] (taptracker) {Tap tracker};
|
|
|
|
|
+ \node [impl, right of=taptracker, text width=7em] (transformtracker) {Transformation tracker};
|
|
|
|
|
+
|
|
|
|
|
+ % Gesture
|
|
|
|
|
+ \node [block, below of=tracker] (gesture) {Gesture};
|
|
|
|
|
+ \node [right of=gesture] (gesturedots) {$\cdots$};
|
|
|
|
|
+ \path [line] (tracker) -- node {triggers gesture}(gesture);
|
|
|
|
|
+
|
|
|
|
|
+ % Client application
|
|
|
|
|
+ \node [app, left of=window, xshift=-14em] (app) {Client application};
|
|
|
|
|
+ \path [line, dashed] (app) -- node [near start] {binds gesture handler}(tracker);
|
|
|
|
|
+ \path [line, dashed] (tracker) -- node [near start] {triggers gesture handler}(app);
|
|
|
|
|
+
|
|
|
|
|
+ \path [line, dashed] (app) -- node [near start] {starts}(gestureserver);
|
|
|
|
|
+ \path [line, dashed] (app) -- node [near start] {adds to server}(window);
|
|
|
|
|
+
|
|
|
|
|
+\end{tikzpicture}
|
|
|
|
|
+
|
|
|
|
|
+\end{document}
|