Просмотр исходного кода

Added some new diagrams to report.

Taddeus Kroes 13 лет назад
Родитель
Сommit
6106f7e633
4 измененных файлов с 133 добавлено и 13 удалено
  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:
 Code:
 - Connect to VTK.
 - Connect to VTK.
 - Rotation has a 'bump' at 0.
 - Rotation has a 'bump' at 0.
+- Gesture propagation
 
 
 Thesis:
 Thesis:
 - Network protocol.
 - Network protocol.
 - Cited to VTK book, is this ok if I didn't read it?
 - 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[english]{babel}
 \usepackage[utf8]{inputenc}
 \usepackage[utf8]{inputenc}
-\usepackage{hyperref,graphicx,float,tikz}
-\usetikzlibrary{shapes,arrows}
+\usepackage{hyperref,graphicx,float,tikz,subfigure}
 
 
 % Link colors
 % Link colors
 \hypersetup{colorlinks=true,linkcolor=black,urlcolor=blue,citecolor=DarkGreen}
 \hypersetup{colorlinks=true,linkcolor=black,urlcolor=blue,citecolor=DarkGreen}
@@ -154,8 +153,7 @@ Python.
     \section{Analysis}
     \section{Analysis}
 
 
 
 
-
-\chapter{Problem analysis}
+\chapter{Requirements}
 
 
 % testimplementatie met taps, rotatie en pinch. Hieruit bleek:
 % testimplementatie met taps, rotatie en pinch. Hieruit bleek:
 % - dat er verschillende manieren zijn om bijv. "rotatie" te
 % - dat er verschillende manieren zijn om bijv. "rotatie" te
@@ -247,12 +245,6 @@ Python.
             gestures.
             gestures.
     \end{itemize}
     \end{itemize}
 
 
-% -------
-% Results
-% -------
-
-\chapter{Design}
-
     \section{Requirements}
     \section{Requirements}
     \label{sec:requirements}
     \label{sec:requirements}
 
 
@@ -281,6 +273,12 @@ Python.
             programmer to define custom gestures for an application.
             programmer to define custom gestures for an application.
     \end{itemize}
     \end{itemize}
 
 
+% -------
+% Results
+% -------
+
+\chapter{Design}
+
     \section{Components}
     \section{Components}
 
 
         Based on the requirements from section \ref{sec:requirements}, a design
         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
         contains the related touch point. If so, the window updates its gesture
         trackers, which can then trigger gestures.
         trackers, which can then trigger gestures.
 
 
+    \section{Diagrams}
+
+    \input{data/diagrams}
+    \simplediagram
+    \completediagrams
+
     \section{Diagram of component relations}
     \section{Diagram of component relations}
 
 
     \begin{figure}[H]
     \begin{figure}[H]

+ 2 - 2
docs/rules.mk

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