From 2829d1b0f2c3e4afc26a2733d76525fd980ea018 Mon Sep 17 00:00:00 2001
From: Noel Dan Le <lenoelda@informatik.hu-berlin.de>
Date: Tue, 16 Jan 2018 16:07:56 +0100
Subject: [PATCH] Added tikz-uml command to use cars as actors

---
 doc/mainDocument/img/Car.png                  | Bin 0 -> 3777 bytes
 ...ftwareArch.jpg => SoftwareArchitektur.jpg} | Bin
 ...marchitektur.png => SystemArchitektur.png} | Bin
 doc/mainDocument/mainDocument.tex             |  13 ++-
 doc/mainDocument/sections/architektur.tex     |   4 +-
 doc/mainDocument/tikzImgs/uc_diagram.tex      |  16 ++--
 doc/tikz-uml.sty                              |  78 ++++++++++++++++++
 7 files changed, 94 insertions(+), 17 deletions(-)
 create mode 100644 doc/mainDocument/img/Car.png
 rename doc/mainDocument/img/{SoftwareArch.jpg => SoftwareArchitektur.jpg} (100%)
 rename doc/mainDocument/img/{Systemarchitektur.png => SystemArchitektur.png} (100%)

diff --git a/doc/mainDocument/img/Car.png b/doc/mainDocument/img/Car.png
new file mode 100644
index 0000000000000000000000000000000000000000..820add40ed8103e7cfc561efa2871e8f6e0d9a6b
GIT binary patch
literal 3777
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
J)mo^i{{!r_F9!es

literal 0
HcmV?d00001

diff --git a/doc/mainDocument/img/SoftwareArch.jpg b/doc/mainDocument/img/SoftwareArchitektur.jpg
similarity index 100%
rename from doc/mainDocument/img/SoftwareArch.jpg
rename to doc/mainDocument/img/SoftwareArchitektur.jpg
diff --git a/doc/mainDocument/img/Systemarchitektur.png b/doc/mainDocument/img/SystemArchitektur.png
similarity index 100%
rename from doc/mainDocument/img/Systemarchitektur.png
rename to doc/mainDocument/img/SystemArchitektur.png
diff --git a/doc/mainDocument/mainDocument.tex b/doc/mainDocument/mainDocument.tex
index a285ff8e..7a98ad6d 100644
--- a/doc/mainDocument/mainDocument.tex
+++ b/doc/mainDocument/mainDocument.tex
@@ -9,11 +9,11 @@
 \usepackage[hidelinks]{hyperref}
 \usepackage{tabularx} % used for better table formatting see: https://en.wikibooks.org/wiki/LaTeX/Tables#The_tabularx_package
 \usepackage[table]{xcolor}
-\usepackage{graphicx}	% Bilder, Fotos
-\usepackage{subfiles}	% split doc into multiple .tex subfiles
+\usepackage{graphicx} % Bilder, Fotos
+\usepackage{subfiles} % split doc into multiple .tex subfiles
 \graphicspath{ {./img/} }
 \usepackage{float} % used to allow the [H] option for tables, etc.
-\usepackage{verbatim}	% makes multiline comments possible via \begin{comment}\end{comment}
+\usepackage{verbatim} % makes multiline comments possible via \begin{comment}\end{comment}
 \usepackage{ifthen, tikz, xstring, calc, pgfopts} % required for tikz-uml
 \usepackage{../tikz-uml}
 
@@ -53,7 +53,7 @@
 
 %%% DOCUMENT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{document}
-  
+
 \maketitle
 \tableofcontents
 
@@ -61,7 +61,7 @@
 \subfile{sections/organisation}
 \subfile{sections/ausbaustufen}
 \subfile{sections/usecases}
-\subfile{sections/architektur}	
+\subfile{sections/architektur}
 \subfile{sections/modspez}
 \subfile{sections/test}
 \subfile{sections/auswertung}
@@ -76,6 +76,5 @@
 \phantomsection
 \addcontentsline{toc}{section}{Bibliography}
 \printbibliography
-  
 
-\end{document}
+\end{document}
\ No newline at end of file
diff --git a/doc/mainDocument/sections/architektur.tex b/doc/mainDocument/sections/architektur.tex
index 65b161fb..700048a7 100644
--- a/doc/mainDocument/sections/architektur.tex
+++ b/doc/mainDocument/sections/architektur.tex
@@ -15,7 +15,7 @@
   \end{figure}
   \begin{figure}[h]
     \begin{center}
-      \includegraphics[scale=0.5]{Systemarchitektur}
+      \includegraphics[scale=0.5]{SystemArchitektur}
     \end{center}
     \caption{Odriod-System}
     \label{fig:hardware-sys}
@@ -201,6 +201,6 @@
 
 \subsection{Softwarearchitktur}
 %tikz oder drawio
-\includegraphics[width=\textwidth]{SoftwareArch}
+\includegraphics[width=\textwidth]{SoftwareArchitektur}
 
 \end{document}
\ No newline at end of file
diff --git a/doc/mainDocument/tikzImgs/uc_diagram.tex b/doc/mainDocument/tikzImgs/uc_diagram.tex
index 3471ed2f..2da9716f 100644
--- a/doc/mainDocument/tikzImgs/uc_diagram.tex
+++ b/doc/mainDocument/tikzImgs/uc_diagram.tex
@@ -12,15 +12,15 @@
     \umlusecase[x=3, y=-17, width=34mm, fill=green!30]{\nameref{UC:changeSpeed}}
 	\end{umlsystem}
 	
-	\umlactor[x=0,  y=-10]{Operator}
-	\umlactor[x=14, y=-10]{LV}
-	\umlactor[x=14, y=-5]{FV}
-	\umlactor[x=14, y=-15]{PFV}
-	\umlactor[x=14, y=1]{GV}
+	\umlactor[x=0,  y=-11]{Operator}
+	\umlcar[x=15, y=-10]{LV}
+	\umlcar[x=15, y=-5]{FV}
+	\umlcar[x=15, y=-15]{PFV}
+	\umlcar[x=15, y=1]{GV}
 	
-	\umlHVHinherit[arm2=10mm]{LV}{GV}
-	\umlHVHinherit[arm2=10mm]{FV}{GV}
-	\umlHVHinherit[arm2=10mm]{PFV}{GV}
+	\umlHVHinherit[arm2=16mm]{LV}{GV}
+	\umlHVHinherit[arm2=16mm]{FV}{GV}
+	\umlHVHinherit[arm2=16mm]{PFV}{GV}
   
 	\umlassoc{Operator}{usecase-1}
 	\umlassoc{Operator}{usecase-4}
diff --git a/doc/tikz-uml.sty b/doc/tikz-uml.sty
index eacab58d..16f7a7ee 100644
--- a/doc/tikz-uml.sty
+++ b/doc/tikz-uml.sty
@@ -2790,6 +2790,84 @@
   %
 }%
 
+%-----------------------------------------------------------------------------------------------
+%
+% copy and paste of the above section in order to replace the actor symbol with a car picture
+%
+% define the actor symbol
+% optional : global tikzpicture styles
+\newcommand{\picturedcar}[1]{%
+	\pgfkeys{/tikzuml/picactor/.cd, scale/.initial=1, .unknown/.code={}}%
+	\pgfkeys{/tikzuml/picactor/.cd,#1}%
+	\pgfkeys{/tikzuml/picactor/.cd, scale/.get=\tikzumlPicturedActorScale}%
+	%
+	\begin{tikzpicture}[#1]%
+	\node at (0,0) {\includegraphics[width=3em]{img/Car.png}};%
+	\end{tikzpicture}%
+}%
+%
+% define an actor
+% arg : var name
+% optional : x, y: coordinates of the actor
+%            scale: scale factor of the actor symbol
+%            below: distance between the actor symbol and its name below
+%            draw, text: colors
+%            style: to manage every default TikZ option
+%            no coords: to tell that the actor position is defined relatively
+%                       to another node (automatically used with TikZ options above, below, left, right, below left, ...)
+\newcommand{\umlcar}[2][]{%
+	\stepcounter{tikzumlActorNum}%
+	\pgfkeys{/tikzuml/actor/.cd, x/.initial=\tikzumlDefaultX, y/.initial=\tikzumlDefaultX, scale/.initial=1, below/.initial=\tikzumlActorDefaultBelow,%
+		draw/.initial=\tikzumlDefaultDrawColor, text/.initial=\tikzumlDefaultTextColor,%
+		style/.style={},%
+		no coords/.is if=tikzumlactorWithoutCoords,%
+		no coords=false,%
+		.unknown/.code={%
+			\let\keyname=\pgfkeyscurrentname%
+			\let\keyvalue=\pgfkeyscurrentvalue%
+			\ifthenelse{\equal{\keyname}{above}\OR%
+				\equal{\keyname}{left}\OR%
+				\equal{\keyname}{below}\OR%
+				\equal{\keyname}{right}\OR%
+				\equal{\keyname}{above left}\OR%
+				\equal{\keyname}{above right}\OR%
+				\equal{\keyname}{below left}\OR%
+				\equal{\keyname}{below right}}{%
+				\IfSubStr{\keyvalue}{ of }{%
+					\pgfkeys{/tikzuml/actor/.cd, no coords}%
+				}{}%
+			}{}%
+			\ifx\keyvalue\pgfkeysnovalue%
+			\pgfkeys{/tikzuml/actor/.cd, style/.append style/.expand once={\keyname}}%
+			\else%
+			\pgfkeys{/tikzuml/actor/.cd, style/.append style/.expand twice={\expandafter\keyname\expandafter=\keyvalue}}%
+			\fi%
+			%\errmessage{TIKZUML ERROR : in umlactor, invalid option \keyname}%
+		}%
+	}%
+	\pgfkeys{/tikzuml/actor/.cd, #1}%
+	\pgfkeys{/tikzuml/actor/.cd,%
+		x/.get=\tikzumlActorX, y/.get=\tikzumlActorY, scale/.get=\tikzumlActorScale,%
+		below/.get=\tikzumlActorBelow,%
+		draw/.get=\tikzumlActorDrawColor, text/.get=\tikzumlActorTextColor}%
+	%
+	\def\tikzumlActorName{#2}%
+	\begingroup%
+	\def\_{_}\edef\x{\endgroup%
+		\def\noexpand\tikzumlActorNodeName{\tikzumlActorName}}\x%
+	%
+	\def\tikzumlActorPos{\tikzumlActorX,\tikzumlActorY}%
+	%
+	\iftikzumlactorWithoutCoords%
+	\node[tikzuml actor style, text=\tikzumlActorTextColor, font=\tikzumlDefaultFont, /tikzuml/actor/style] (\tikzumlActorNodeName) {\picturedcar{scale=\tikzumlActorScale, fill=white, draw=\tikzumlActorDrawColor, thick}};%
+	\else%
+	\node[tikzuml actor style, text=\tikzumlActorTextColor, font=\tikzumlDefaultFont, /tikzuml/actor/style] (\tikzumlActorNodeName) at (\tikzumlActorPos) {\picturedcar{scale=\tikzumlActorScale, fill=white, draw=\tikzumlActorDrawColor, thick}};%
+	\fi%
+	\node[text=\tikzumlActorTextColor, font=\tikzumlDefaultFont, below=\tikzumlActorScale*\tikzumlActorBelow] at (\tikzumlActorNodeName) {\tikzumlActorName};%
+	%
+}%
+%-----------------------------------------------------------------------------------------------
+
 % shortcuts for include and extend relation
 \newcommand{\umlinclude}[3][]{%
   \pgfkeys{/tikzuml/includerelation/.cd,%
-- 
GitLab