Bläddra i källkod

Added some new diagrams to report.

Taddeus Kroes 13 år sedan
förälder
incheckning
6106f7e633
4 ändrade filer med 133 tillägg och 13 borttagningar
  1. 2 1
      TODO.txt
  2. 115 0
      docs/data/diagrams.tex
  3. 14 10
      docs/report.tex
  4. 2 2
      docs/rules.mk

+ 2 - 1
TODO.txt

@@ -1,8 +1,9 @@
 Code:
 - Connect to VTK.
 - Rotation has a 'bump' at 0.
+- Gesture propagation
 
 Thesis:
 - Network protocol.
 - Cited to VTK book, is this ok if I didn't read it?
-- TUIO/VTK van preliminary naar appendices?
+- "Window" -> "Widget"

+ 115 - 0
docs/data/diagrams.tex

@@ -0,0 +1,115 @@
+% Define node group background
+% The first 4 arguments are nodes that define the group borders in (left,
+% top, right, bottom) order, the last argument is a text label
+\usetikzlibrary{shapes,arrows}
+\pgfdeclarelayer{background}
+\pgfdeclarelayer{foreground}
+\pgfsetlayers{background,main,foreground}  % Layer order
+\newcommand{\grouppadding}{0.5}
+\newcommand{\group}[5]{
+    \begin{pgfonlayer}{background}
+        % Left top corner
+        \path (#1.west |- #2.north)+(-0.7, 0.7)
+            node (lefttop) {};
+        % Right bottom corner
+        \path (#3.east |- #4.south)+(0.7, -0.4)
+            node (rightbottom) {};
+        % Draw rectangle
+        \path[draw, rounded corners, dashed] (lefttop) rectangle (rightbottom);
+        % Text label
+        \path (rightbottom.west |- lefttop.south)+(-1.2, -0.3) node {\emph{#5}};
+    \end{pgfonlayer}
+}
+\tikzstyle{block} = [
+    rectangle,
+    draw=black,
+    fill=white,
+    thick,
+    minimum height=2em,
+    text centered,
+    rounded corners,
+    text width=6em
+]
+\tikzstyle{lineto} = [
+    ->,
+    thick,
+    shorten <= 2pt,
+    shorten >= 2pt
+]
+\tikzstyle{linefrom} = [
+    <-,
+    thick,
+    shorten <= 2pt,
+    shorten >= 2pt
+]
+\newcommand{\architecture}[1]{
+    \begin{tikzpicture}[node distance=6em, auto]
+        \node[block] (driver) {Driver};
+        #1
+    \end{tikzpicture}
+}
+
+\newcommand{\simplediagram}{
+    \begin{figure}[H]
+        \center
+        \architecture{
+            \node[block, dashed, below of=driver] (arch) {Architecture}
+                edge[linefrom] node[right] {driver-specific messages} (driver);
+            \node[block, below of=arch] {Application}
+                edge[linefrom] node[right] {gestures} (arch);
+        }
+        \caption{Translation of driver-specific messages to gestures.}
+    \end{figure}
+}
+
+\newcommand{\completediagrams}{
+    \begin{figure}[H]
+        \hspace{-2.3em}
+        \subfigure[Architecture using a single widget. Dotted arrows represent
+                   gestures, normal arrows represent events (unless labeled
+                   otherwise).]{
+            \architecture{
+                \node[block, below of=driver] (eventserver) {Event server}
+                    edge[linefrom] node[right, near end] {driver-specific messages} (driver);
+                \node[block, below of=eventserver] (widget) {Widget}
+                    edge[linefrom] (eventserver);
+                \node[block, right of=widget, xshift=5em] (tracker) {Gesture tracker}
+                    edge[lineto, dotted, bend left=10] (widget)
+                    edge[linefrom, bend right=10] (widget);
+                \node[block, below of=widget] {Application}
+                    edge[linefrom, dotted] (widget);
+
+                \group{eventserver}{eventserver}{tracker}{tracker}{Architecture}
+            }
+        }
+        \hspace{1.5em}
+        \subfigure[Architecture using a sub widget. Dotted arrows represent
+                   gestures, normal arrows represent events (unless labeled
+                   otherwise).]{
+            \architecture{
+                \node[block, below of=driver] (eventserver) {Event server}
+                    edge[linefrom] node[right, near end] {driver-specific messages} (driver);
+
+                \node[block, below of=eventserver] (rootwidget) {Root widget}
+                    edge[linefrom] (eventserver);
+
+                \node[block, below of=rootwidget] (subwidget) {Sub widget}
+                    edge[linefrom] (rootwidget)
+                    edge[lineto, bend right=45, dotted] node[right=3]
+                    {propagation} (rootwidget);
+                \node[block, right of=rootwidget, xshift=5em] {Gesture tracker}
+                    edge[lineto, dotted, bend left=10] (rootwidget)
+                    edge[linefrom, bend right=10] (rootwidget);
+
+                \node[block, right of=subwidget, xshift=5em] (tracker) {Gesture tracker}
+                    edge[lineto, dotted, bend left=10] (subwidget)
+                    edge[linefrom, bend right=10] (subwidget);
+                \node[block, below of=subwidget, yshift=-.5em] {Application}
+                    edge[linefrom, dotted, bend left=60] (rootwidget)
+                    edge[linefrom, dotted] (subwidget);
+
+                \group{subwidget}{eventserver}{tracker}{subwidget}{Architecture}
+            }
+        }
+    \end{figure}
+}

+ 14 - 10
docs/report.tex

@@ -2,8 +2,7 @@
 
 \usepackage[english]{babel}
 \usepackage[utf8]{inputenc}
-\usepackage{hyperref,graphicx,float,tikz}
-\usetikzlibrary{shapes,arrows}
+\usepackage{hyperref,graphicx,float,tikz,subfigure}
 
 % Link colors
 \hypersetup{colorlinks=true,linkcolor=black,urlcolor=blue,citecolor=DarkGreen}
@@ -154,8 +153,7 @@ Python.
     \section{Analysis}
 
 
-
-\chapter{Problem analysis}
+\chapter{Requirements}
 
 % testimplementatie met taps, rotatie en pinch. Hieruit bleek:
 % - dat er verschillende manieren zijn om bijv. "rotatie" te
@@ -247,12 +245,6 @@ Python.
             gestures.
     \end{itemize}
 
-% -------
-% Results
-% -------
-
-\chapter{Design}
-
     \section{Requirements}
     \label{sec:requirements}
 
@@ -281,6 +273,12 @@ Python.
             programmer to define custom gestures for an application.
     \end{itemize}
 
+% -------
+% Results
+% -------
+
+\chapter{Design}
+
     \section{Components}
 
         Based on the requirements from section \ref{sec:requirements}, a design
@@ -406,6 +404,12 @@ Python.
         contains the related touch point. If so, the window updates its gesture
         trackers, which can then trigger gestures.
 
+    \section{Diagrams}
+
+    \input{data/diagrams}
+    \simplediagram
+    \completediagrams
+
     \section{Diagram of component relations}
 
     \begin{figure}[H]

+ 2 - 2
docs/rules.mk

@@ -1,5 +1,5 @@
 REPORT := report
-DIAGRAM := data/diagram
+DIAGRAMS := data/diagrams
 PDFLATEX_FLAGS = -halt-on-error -interaction=nonstopmode \
 	-output-directory $(@D) -shell-escape
 LATEX = TEXINPUTS=$(d):$(b): pdflatex $(PDFLATEX_FLAGS)
@@ -19,7 +19,7 @@ $(b)%.pdf: $(d)%.tex
 		$(LATEX) $^; \
 	done
 
-$(b)$(REPORT).pdf: $(d)$(DIAGRAM).tex
+$(b)$(REPORT).pdf: $(d)$(DIAGRAMS).tex
 
 $(b)$(REPORT).bbl: $(d)$(REPORT).bib
 	BIBINPUTS=$(d) bibtex8 ${@:.bbl=.aux}