presentationdiagrams.tex 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. % Define node group background
  2. % The first 4 arguments are nodes that define the group borders in (left,
  3. % top, right, bottom) order, the last argument is a text label
  4. \usetikzlibrary{shapes,arrows,positioning,patterns}
  5. \pgfdeclarelayer{background}
  6. \pgfdeclarelayer{foreground}
  7. \pgfsetlayers{background,main,foreground} % Layer order
  8. \newcommand{\group}[5]{
  9. \begin{pgfonlayer}{background}
  10. % Left top corner
  11. \path (#1.west |- #2.north)+(-0.7, 0.7)
  12. node (lefttop) {};
  13. % Right bottom corner
  14. \path (#3.east |- #4.south)+(0.7, -0.4)
  15. node (rightbottom) {};
  16. % Draw rectangle
  17. \path[draw, rounded corners, dashed] (lefttop) rectangle (rightbottom);
  18. % Text label
  19. \path (rightbottom.west |- lefttop.south)+(-1.2, -0.3) node {\emph{#5}};
  20. \end{pgfonlayer}
  21. }
  22. \tikzstyle{block} = [
  23. rectangle,
  24. draw=black,
  25. fill=white,
  26. thick,
  27. minimum height=2em,
  28. text centered,
  29. rounded corners,
  30. text width=6em
  31. ]
  32. \tikzstyle{lineto} = [
  33. ->,
  34. thick,
  35. shorten <= 2pt,
  36. shorten >= 2pt
  37. ]
  38. \tikzstyle{linefrom} = [
  39. <-,
  40. thick,
  41. shorten <= 2pt,
  42. shorten >= 2pt
  43. ]
  44. \newcommand{\architecture}[1]{
  45. \begin{tikzpicture}[node distance=6em, scale=0.7, transform shape]
  46. \node[block] (driver) {Driver};
  47. #1
  48. \end{tikzpicture}
  49. }
  50. \def\basicdiagram{
  51. \begin{figure}[h!]
  52. \center
  53. \begin{tikzpicture}[node distance=6em, scale=0.7, transform shape]
  54. \node[block] (driver) {Device driver};
  55. \node[block, below of=driver, dashed] (architecture) {Architecture}
  56. edge[linefrom] node[right] {device-specific messages} (driver);
  57. \node[block, below of=architecture] {Application}
  58. edge[linefrom, dotted] node[right] {gesture} (architecture);
  59. \end{tikzpicture}
  60. \end{figure}
  61. }
  62. \def\eventdriverdiagram{
  63. \begin{figure}[h!]
  64. \center
  65. \architecture{
  66. \node[block, below of=driver] (eventdriver) {Event driver}
  67. edge[linefrom] node[right, near end] {device-specific messages} (driver);
  68. \node[block, below of=eventdriver, dashed] (analysis) {Event analysis}
  69. edge[linefrom] node[right] {(low-level) event} (eventdriver);
  70. \node[block, below of=analysis] {Application}
  71. edge[linefrom, dotted] node[right, near start] {(high-level) gesture} (analysis);
  72. \node[right of=eventdriver, xshift=2em] (dummy) {};
  73. \group{eventdriver}{eventdriver}{dummy}{analysis}{Architecture}
  74. }
  75. \end{figure}
  76. }
  77. \def\lefthand{\includegraphics[width=50pt]{data/hand.png}}
  78. \def\righthand{\reflectbox{\includegraphics[width=50pt, angle=-45]{data/hand.png}}}
  79. \def\areaproblem{
  80. \begin{figure}[H]
  81. \center
  82. \begin{tikzpicture}[transform shape, scale=0.7]
  83. \draw node[draw, black, minimum width=190, minimum height=140] at (0,0) {};
  84. \draw node[fill=gray!50, draw=black!70, minimum height=40, minimum width=40] at (-1,-1) {\lefthand};
  85. \draw node[] at (1.2,1) {\righthand};
  86. \draw node[draw=black!80, diamond, minimum height=70, minimum width=70] at (1.2,1) {};
  87. \end{tikzpicture}
  88. \end{figure}
  89. }
  90. \def\areadiagram{
  91. \begin{figure}[H]
  92. \center
  93. \architecture{
  94. \node[block, below of=driver] (eventdriver) {Event driver}
  95. edge[linefrom] node[right, near end] {device-specific messages} (driver);
  96. \node[block, below of=eventdriver] (area) {Event areas}
  97. edge[linefrom] node[right] {event} (eventdriver);
  98. \node[block, right of=area, xshift=7em, dashed] (tracker) {Gesture detection}
  99. edge[linefrom, bend right=10] node[above] {event} (area)
  100. edge[lineto, bend left=10, dotted] node[below] {gesture} (area);
  101. \node[block, below of=area] {Application}
  102. edge[linefrom, dotted] node[right, near start] {gesture} (area);
  103. \group{eventdriver}{eventdriver}{tracker}{area}{Architecture}
  104. }
  105. \end{figure}
  106. }
  107. \def\propagationproblem{
  108. \begin{figure}[H]
  109. \center
  110. \begin{tikzpicture}[node distance=5.5em, transform shape, scale=0.6]
  111. \draw node[draw=black, minimum width=190, minimum height=140] at (0,0) {};
  112. \draw node[draw=black!60, minimum height=100, minimum width=100, pattern=north east lines] at (-0.1,-0.1) {};
  113. \draw node[fill=gray!60, draw=black!70, minimum height=40, minimum width=40] at (0.3,0.4) {};
  114. \fill (0.4, 0.6) circle (0.15);
  115. \end{tikzpicture}
  116. \end{figure}
  117. }
  118. \def\propagationdiagram{
  119. \begin{figure}[H]
  120. \center
  121. \begin{tikzpicture}[node distance=5.5em, transform shape, scale=0.7]
  122. \draw node[block, yshift=-10em, xshift=-3em] (driver) {Event driver};
  123. \draw node[block, below of=driver] (gray) {Outer event area}
  124. edge[linefrom] node[left] {1} (driver);
  125. \draw node[block, below of=gray] (white) {Inner event area}
  126. edge[linefrom, bend left=15] node[left] {2} (gray)
  127. edge[lineto, bend right=15, red] node[right, black] {6} (gray);
  128. \draw node[block, right of=white, xshift=4em] {\emph{drag} tracker}
  129. edge[linefrom, bend right=15] node[above] {3} (white)
  130. edge[lineto, dotted, bend left=15] node[below] {4} (white);
  131. \draw node[block, right of=gray, xshift=4em] {\emph{drag} tracker}
  132. edge[linefrom, bend right=15, red] node[above, black] {7} (gray)
  133. edge[lineto, dotted, bend left=15, red] node[below, black] {8} (gray);
  134. \draw node[block, below of=white] {Application}
  135. edge[linefrom, dotted, bend left=65, red] node[left, black] {9} (gray)
  136. edge[linefrom, dotted] node[left] {5} (white);
  137. \end{tikzpicture}
  138. \end{figure}
  139. }
  140. \def\fulldiagram{
  141. \begin{figure}[h!]
  142. \center
  143. \architecture{
  144. \node[block, below of=driver] (eventdriver) {Event driver}
  145. edge[linefrom] node[right, near end] {device-specific messages} (driver);
  146. \node[block, below of=eventdriver] (area) {Event areas}
  147. edge[linefrom] node[right] {event} (eventdriver);
  148. \node[block, right of=area, xshift=7em] (tracker) {Gesture trackers}
  149. edge[linefrom, bend right=10] node[above] {event} (area)
  150. edge[lineto, bend left=10, dotted] node[below] {gesture} (area);
  151. \node[block, below of=area] {Application}
  152. edge[linefrom, dotted] node[right, near start] {gesture} (area);
  153. \group{eventdriver}{eventdriver}{tracker}{area}{Architecture}
  154. }
  155. \end{figure}
  156. }
  157. \def\daemondiagram{
  158. \begin{figure}[H]
  159. \centering
  160. \begin{tikzpicture}[node distance=4em, transform shape, scale=0.7]
  161. \node[block] (daemon) {Daemon};
  162. \node[block, above of=daemon] (driver) {Device driver}
  163. edge[lineto] (daemon);
  164. \node[block, xshift=-4em, left of=driver] {Device driver}
  165. edge[lineto] (daemon);
  166. \node[block, xshift=4em, right of=driver] {Device driver}
  167. edge[lineto] (daemon);
  168. \node[block, below of=daemon] (app) {Application}
  169. edge[linefrom, dotted] (daemon);
  170. \node[block, xshift=-4em, left of=app] {Application}
  171. edge[linefrom, dotted] (daemon);
  172. \node[block, xshift=4em, right of=app] {Application}
  173. edge[linefrom, dotted] (daemon);
  174. \draw[dashed] (app.north)+(-4, 0.35) -- node[right=4, yshift=1] {Network protocol} ++(4, 0.35);
  175. \end{tikzpicture}
  176. \end{figure}
  177. }