From 0b7ac18c638bb5feab912b0159b2485574a2ca57 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Thu, 1 May 2014 08:32:02 +0200 Subject: [PATCH] first sequence --- program/hypcrawl/hypcrawl.py | 2 +- softwaredesign/sequence/pgf-umlsd.sty | 329 +++++++++++++ softwaredesign/sequence/sequence_diagram.aux | 1 + softwaredesign/sequence/sequence_diagram.log | 480 +++++++++++++++++++ softwaredesign/sequence/sequence_diagram.pdf | Bin 0 -> 23235 bytes softwaredesign/sequence/sequence_diagram.tex | 58 +++ 6 files changed, 869 insertions(+), 1 deletion(-) create mode 100644 softwaredesign/sequence/pgf-umlsd.sty create mode 100644 softwaredesign/sequence/sequence_diagram.aux create mode 100644 softwaredesign/sequence/sequence_diagram.log create mode 100644 softwaredesign/sequence/sequence_diagram.pdf create mode 100644 softwaredesign/sequence/sequence_diagram.tex diff --git a/program/hypcrawl/hypcrawl.py b/program/hypcrawl/hypcrawl.py index 04fffb3..2648982 100644 --- a/program/hypcrawl/hypcrawl.py +++ b/program/hypcrawl/hypcrawl.py @@ -1,4 +1,4 @@ -#!/bin/env python +/bin/env python # -*- coding: utf-8 -*- import codecs diff --git a/softwaredesign/sequence/pgf-umlsd.sty b/softwaredesign/sequence/pgf-umlsd.sty new file mode 100644 index 0000000..99847db --- /dev/null +++ b/softwaredesign/sequence/pgf-umlsd.sty @@ -0,0 +1,329 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Start of pgf-umlsd.sty +% +% Some macros for UML Sequence Diagrams. +% Home page of project: http://pgf-umlsd.googlecode.com/ +% Author: Xu Yuan , Southeast University, China +% Contributor: Nobel Huang , Southeast University, China +% +% History: +% v0.7 2012/03/05 +% - unify interface of call and callself +% - non-instantaneous message +% - bugfix: conflits with tikz library backgrounds +% v0.6 2011/07/27 +% - Fix Issue 6 reported by frankmorgner@gmail.com +% - diagram without a thread +% - allows empty diagram +% - New manual +% v0.5 2009/09/30 Fix Issue 2 reported by vlado.handziski +% - Nested callself is supported +% - Rename sdloop and sdframe to sdblock +% v0.4 2008/12/08 Fix Issue 1 reported by MathStuf: +% Nested sdloop environment hides outer loop +% v0.3 2008/11/10 in Berlin, fix for the PGF cvs version: +% - the list items in \foreach are not evaluated by default now, +% the `evaluate' opinion should be used +% v0.2 2008/03/20 create project at http://pgf-umlsd.googlecode.com/ +% - use `shadows' library +% Thanks for Dr. Ludger Humbert's feedback! +% - reduce the parameter numbers, the user can write the content +% of instance (such as no colon) +% - the user can redefine the `inststyle' +% - new option: switch underlining of the instance text +% - new option: switch rounded corners +% v0.1 2008/01/25 first release at http://www.fauskes.net/pgftikzexamples/ +% + +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{pgf-umlsd}[2011/07/27 v0.6 Some LaTeX macros for UML +Sequence Diagrams.] + +\RequirePackage{tikz} +\usetikzlibrary{arrows,shadows} + +\RequirePackage{ifthen} + +% Options +% ? the instance name under line ? +\newif\ifpgfumlsdunderline\pgfumlsdunderlinetrue +\DeclareOption{underline}{\pgfumlsdunderlinetrue} +\DeclareOption{underline=true}{\pgfumlsdunderlinetrue} +\DeclareOption{underline=false}{\pgfumlsdunderlinefalse} +% ? the instance box with rounded corners ? +\newif\ifpgfumlsdroundedcorners\pgfumlsdroundedcornersfalse +\DeclareOption{roundedcorners}{\pgfumlsdroundedcornerstrue} +\DeclareOption{roundedcorners=true}{\pgfumlsdroundedcornerstrue} +\DeclareOption{roundedcorners=false}{\pgfumlsdroundedcornersfalse} +\ProcessOptions + +% new counters +\newcounter{preinst} +\newcounter{instnum} +\newcounter{threadnum} +\newcounter{seqlevel} % level +\newcounter{callevel} +\newcounter{callselflevel} +\newcounter{blocklevel} + +% new an instance +% Example: +% \newinst[edge distance]{var}{name:class} +\newcommand{\newinst}[3][0.2]{ + \stepcounter{instnum} + \path (inst\thepreinst.east)+(#1,0) node[inststyle] (inst\theinstnum) + {\ifpgfumlsdunderline + \underline{#3} + \else + #3 + \fi}; + \path (inst\theinstnum)+(0,-0.5*\unitfactor) node (#2) {}; + \tikzstyle{instcolor#2}=[] + \stepcounter{preinst} +} + +% new an instance thread +% Example: +% \newinst[color]{var}{name}{class} +\newcommand{\newthread}[3][gray!30]{ + \newinst{#2}{#3} + \stepcounter{threadnum} + \node[below of=inst\theinstnum,node distance=0.8cm] (thread\thethreadnum) {}; + \tikzstyle{threadcolor\thethreadnum}=[fill=#1] + \tikzstyle{instcolor#2}=[fill=#1] +} + +% draw running (thick) line, should not call directly +\newcommand*{\drawthread}[2]{ + \begin{pgfonlayer}{umlsd@threadlayer} + \draw[threadstyle] (#1.west) -- (#1.east) -- (#2.east) -- (#2.west) -- cycle; + \end{pgfonlayer} +} + +% a function call +% Example: +% \begin{call}[height]{caller}{function}{callee}{return} +% \end{call} +\newenvironment{call}[5][1]{ +\ifthenelse{\equal{#2}{#4}} +{ + \begin{callself}[#1]{#2}{#3}{#5} +} +{ + \begin{callanother}[#1]{#2}{#3}{#4}{#5} +} +} +{ +\ifthenelse{\equal{\f\thecallevel}{\t\thecallevel}} +{ + \end{callself} +} +{ + \end{callanother} +} +} + +% function call to another instance +% interal use only +\newenvironment*{callanother}[5][1]{ + \stepcounter{seqlevel} + \stepcounter{callevel} % push + \path + (#2)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (cf\thecallevel) {} + (#4.\threadbias)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (ct\thecallevel) {}; + + \draw[->,>=triangle 60] ({cf\thecallevel}) -- (ct\thecallevel) + node[midway, above] {#3}; + \def\l\thecallevel{#1} + \def\f\thecallevel{#2} + \def\t\thecallevel{#4} + \def\returnvalue{#5} + \tikzstyle{threadstyle}+=[instcolor#2] +} +{ + \addtocounter{seqlevel}{\l\thecallevel} + \path + (\f\thecallevel)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (rf\thecallevel) {} + (\t\thecallevel.\threadbias)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (rt\thecallevel) {}; + \draw[dashed,->,>=angle 60] ({rt\thecallevel}) -- (rf\thecallevel) + node[midway, above]{\returnvalue}; + \drawthread{ct\thecallevel}{rt\thecallevel} + \addtocounter{callevel}{-1} % pop +} + +% a function do not need call others +% interal use only +% Example: +% \begin{callself}[height]{caller}{function}{return} +% \end{callself} +\newenvironment*{callself}[4][1]{ + \stepcounter{seqlevel} + \stepcounter{callevel} % push + \stepcounter{callselflevel} + + \path + (#2)+(\thecallselflevel*0.1-0.1,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (sc\thecallevel) {} + ({sc\thecallevel}.east)+(0,-0.33*\unitfactor) node (scb\thecallevel) {}; + + \draw[->,>=triangle 60] ({sc\thecallevel}.east) -- ++(0.8,0) + node[near start, above right] {#3} -- ++(0,-0.33*\unitfactor) + -- (scb\thecallevel); + \def\l\thecallevel{#1} + \def\f\thecallevel{#2} + \def\t\thecallevel{#2} + \def\returnvalue{#4} + \tikzstyle{threadstyle}+=[instcolor#2] +}{ + \addtocounter{seqlevel}{\l\thecallevel} + \path (\f\thecallevel)+(\thecallselflevel*0.1-0.1,-\theseqlevel*\unitfactor-0.33*\unitfactor) node + (sct\thecallevel) {}; + + \draw[dashed,->,>=angle 60] ({sct\thecallevel}.east) node + (sce\thecallevel) {} -- ++(0.8,0) -- node[midway, right]{\returnvalue} ++(0,-0.33*\unitfactor) -- ++(-0.8,0); + \drawthread{scb\thecallevel}{sce\thecallevel} + \addtocounter{callevel}{-1} % pop + \addtocounter{callselflevel}{-1} +} + +% message between threads +% Example: +% \mess[delay]{sender}{message content}{receiver} +\newcommand{\mess}[4][0]{ + \stepcounter{seqlevel} + \path + (#2)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (mess from) {}; + \addtocounter{seqlevel}{#1} + \path + (#4)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (mess to) {}; + \draw[->,>=angle 60] (mess from) -- (mess to) node[midway, above] + {#3}; + + \node (#3 from) at (mess from) {}; + \node (#3 to) at (mess to) {}; +} + +\newenvironment{messcall}[4][1]{ + \stepcounter{seqlevel} + \stepcounter{callevel} % push + \path + (#2)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (cf\thecallevel) {} + (#4.\threadbias)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (ct\thecallevel) {}; + + \draw[->,>=angle 60] ({cf\thecallevel}) -- (ct\thecallevel) + node[midway, above] {#3}; + \def\l\thecallevel{#1} + \def\f\thecallevel{#2} + \def\t\thecallevel{#4} + \tikzstyle{threadstyle}+=[instcolor#2] +} +{ + \addtocounter{seqlevel}{\l\thecallevel} + \path + (\f\thecallevel)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (rf\thecallevel) {} + (\t\thecallevel.\threadbias)+(0,-\theseqlevel*\unitfactor-0.3*\unitfactor) node (rt\thecallevel) {}; + \drawthread{ct\thecallevel}{rt\thecallevel} + \addtocounter{callevel}{-1} % pop +} + +% In the situation of multi-threads, some objects are called at the +% same time. Currently, we have to adjust the bias of thread line +% manually. Possible parameters are: center, west, east +\newcommand{\setthreadbias}[1]{\global\def\threadbias{#1}} + +% This function makes the call earlier. +\newcommand{\prelevel}{\addtocounter{seqlevel}{-1}} + +% This function makes the call later. +\newcommand{\postlevel}{\addtocounter{seqlevel}{+1}} + +% a block box with caption +% \begin{sdblock}[caption background color]{caption}{comments} +% \end{sdblock} +\newenvironment{sdblock}[3][white]{ + \stepcounter{seqlevel} + \stepcounter{blocklevel} % push + \coordinate (blockbeg\theblocklevel) at (0,-\theseqlevel*\unitfactor-\unitfactor); + \stepcounter{seqlevel} + \def\blockcolor\theblocklevel{#1} + \def\blockname\theblocklevel{#2} + \def\blockcomm\theblocklevel{#3} + \begin{pgfinterruptboundingbox} +}{ + \coordinate (blockend) at (0,-\theseqlevel*\unitfactor-2*\unitfactor); + \path (current bounding box.east)+(0.2,0) node (boxeast) {} + (current bounding box.west |- {blockbeg\theblocklevel}) + (-0.2,0) + node (nw) {}; + \path (boxeast |- blockend) node (se) {}; + + % % title + \node[blockstyle] (blocktitle) at (nw) {\blockname\theblocklevel}; + \path (blocktitle.south east) + (0,0.2) node (set) {} + (blocktitle.south east) + (-0.2,0) node (seb) {} + (blocktitle.north east) + (0.2,0) node (comm) {}; + \draw[fill=\blockcolor\theblocklevel] (blocktitle.north west) -- (blocktitle.north east) -- + (set.center) -- (seb.center) -- (blocktitle.south west) -- cycle; + \node[blockstyle] (blocktitle) at (nw) {\blockname\theblocklevel}; + \node[blockcommentstyle] (blockcomment) at (comm) {\blockcomm\theblocklevel}; + + \coordinate (se) at (current bounding box.south east); + \end{pgfinterruptboundingbox} + + \draw (se) rectangle (nw); + + \addtocounter{blocklevel}{-1} % pop + \stepcounter{seqlevel} +} + +% the environment of sequence diagram +\newenvironment{sequencediagram}{ + % declare layers + \pgfdeclarelayer{umlsd@background} + \pgfdeclarelayer{umlsd@threadlayer} + \pgfsetlayers{umlsd@background,umlsd@threadlayer,main} + + \begin{tikzpicture} + \setlength{\unitlength}{1cm} + \tikzstyle{sequence}=[coordinate] + \tikzstyle{inststyle}=[rectangle, draw, anchor=west, minimum + height=0.8cm, minimum width=1.6cm, fill=white, + drop shadow={opacity=1,fill=black}] + \ifpgfumlsdroundedcorners + \tikzstyle{inststyle}+=[rounded corners=3mm] + \fi + \tikzstyle{blockstyle}=[anchor=north west] + \tikzstyle{blockcommentstyle}=[anchor=north west, font=\small] + \tikzstyle{dot}=[inner sep=0pt,fill=black,circle,minimum size=0.2pt] + \global\def\unitfactor{0.6} + \global\def\threadbias{center} + % reset counters + \setcounter{preinst}{0} + \setcounter{instnum}{0} + \setcounter{threadnum}{0} + \setcounter{seqlevel}{0} + \setcounter{callevel}{0} + \setcounter{callselflevel}{0} + \setcounter{blocklevel}{0} + + % origin + \node[coordinate] (inst0) {}; +} +{ + \begin{pgfonlayer}{umlsd@background} + \ifnum\c@instnum > 0 + \foreach \t [evaluate=\t] in {1,...,\theinstnum}{ + \draw[dotted] (inst\t) -- ++(0,-\theseqlevel*\unitfactor-2.2*\unitfactor); + } + \fi + \ifnum\c@threadnum > 0 + \foreach \t [evaluate=\t] in {1,...,\thethreadnum}{ + \path (thread\t)+(0,-\theseqlevel*\unitfactor-0.1*\unitfactor) node (threadend) {}; + \tikzstyle{threadstyle}+=[threadcolor\t] + \drawthread{thread\t}{threadend} + } + \fi + \end{pgfonlayer} +\end{tikzpicture}} + + +%%% End of pgf-umlsd.sty +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ No newline at end of file diff --git a/softwaredesign/sequence/sequence_diagram.aux b/softwaredesign/sequence/sequence_diagram.aux new file mode 100644 index 0000000..f23e546 --- /dev/null +++ b/softwaredesign/sequence/sequence_diagram.aux @@ -0,0 +1 @@ +\relax diff --git a/softwaredesign/sequence/sequence_diagram.log b/softwaredesign/sequence/sequence_diagram.log new file mode 100644 index 0000000..9a0a544 --- /dev/null +++ b/softwaredesign/sequence/sequence_diagram.log @@ -0,0 +1,480 @@ +This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian) (format=pdflatex 2014.4.28) 30 APR 2014 22:41 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**sequence_diagram.tex +(./sequence_diagram.tex +LaTeX2e <2011/06/27> +Babel <3.9k> and hyphenation patterns for 2 languages loaded. +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2007/10/19 v1.4h Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks14 +\pgfutil@tempdima=\dimen103 +\pgfutil@tempdimb=\dimen104 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t +ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box26 +(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +Package: pgfrcs 2013/12/20 v3.0.0 (rcs-revision 1.28) +)) +Package: pgf 2013/12/18 v3.0.0 (rcs-revision 1.14) + +(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 1999/03/16 v1.13 key=value parser (DPC) +\KV@toks@=\toks15 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 1999/03/16 v1.09 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: pdftex.def on input line 91. + +(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count87 +)) +\Gin@req@height=\dimen105 +\Gin@req@width=\dimen106 +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2013/11/30 v3.0.0 (rcs-revision 1.47) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks16 +\pgfkeys@temptoks=\toks17 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t +ex +\pgfkeys@tmptoks=\toks18 +)) +\pgf@x=\dimen107 +\pgf@y=\dimen108 +\pgf@xa=\dimen109 +\pgf@ya=\dimen110 +\pgf@xb=\dimen111 +\pgf@yb=\dimen112 +\pgf@xc=\dimen113 +\pgf@yc=\dimen114 +\w@pgf@writea=\write3 +\r@pgf@reada=\read1 +\c@pgf@counta=\count88 +\c@pgf@countb=\count89 +\c@pgf@countc=\count90 +\c@pgf@countd=\count91 +\t@pgf@toka=\toks19 +\t@pgf@tokb=\toks20 +\t@pgf@tokc=\toks21 + (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2008/05/14 (rcs-revision 1.7) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2013/07/18 (rcs-revision 1.33) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de +f +File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) +))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. +tex +File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) +\pgfsyssoftpath@smallbuffer@items=\count92 +\pgfsyssoftpath@bigbuffer@items=\count93 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. +tex +File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) +)) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341. +Package xcolor Info: Model `RGB' extended on input line 1353. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360. +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2010/04/11 v3.0.0 (rcs-revision 1.7) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen115 +\pgfmath@count=\count94 +\pgfmath@box=\box27 +\pgfmath@toks=\toks22 +\pgfmath@stack@operand=\toks23 +\pgfmath@stack@operation=\toks24 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code +.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet +ric.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod +e.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison +.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. +tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code +.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. +tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari +thmetics.code.tex))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count95 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te +x +File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) +\pgf@picminx=\dimen116 +\pgf@picmaxx=\dimen117 +\pgf@picminy=\dimen118 +\pgf@picmaxy=\dimen119 +\pgf@pathminx=\dimen120 +\pgf@pathmaxx=\dimen121 +\pgf@pathminy=\dimen122 +\pgf@pathmaxy=\dimen123 +\pgf@xx=\dimen124 +\pgf@xy=\dimen125 +\pgf@yx=\dimen126 +\pgf@yy=\dimen127 +\pgf@zx=\dimen128 +\pgf@zy=\dimen129 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. +code.tex +File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) +\pgf@path@lastx=\dimen130 +\pgf@path@lasty=\dimen131 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code +.tex +File: pgfcorepathusage.code.tex 2013/12/13 (rcs-revision 1.23) +\pgf@shorten@end@additional=\dimen132 +\pgf@shorten@start@additional=\dimen133 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te +x +File: pgfcorescopes.code.tex 2013/10/09 (rcs-revision 1.44) +\pgfpic=\box28 +\pgf@hbox=\box29 +\pgf@layerbox@main=\box30 +\pgf@picture@serial@count=\count96 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c +ode.tex +File: pgfcoregraphicstate.code.tex 2013/09/19 (rcs-revision 1.11) +\pgflinewidth=\dimen134 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation +s.code.tex +File: pgfcoretransformations.code.tex 2013/10/10 (rcs-revision 1.17) +\pgf@pt@x=\dimen135 +\pgf@pt@y=\dimen136 +\pgf@pt@temp=\dimen137 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t +ex +File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing +.code.tex +File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te +x +File: pgfcorearrows.code.tex 2013/11/07 (rcs-revision 1.40) +\pgfarrowsep=\dimen138 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) +\pgf@max=\dimen139 +\pgf@sys@shading@range@num=\count97 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. +tex +File: pgfcoreexternal.code.tex 2013/07/15 (rcs-revision 1.20) +\pgfexternal@startupbox=\box31 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te +x +File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c +ode.tex +File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. +tex +File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) +))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2013/10/31 (rcs-revision 1.34) +\pgfnodeparttextbox=\box32 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2013/07/31 (rcs-revision 1.12) +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 +.sty +Package: pgfcomp-version-0-65 2007/07/03 v3.0.0 (rcs-revision 1.7) +\pgf@nodesepstart=\dimen140 +\pgf@nodesepend=\dimen141 +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 +.sty +Package: pgfcomp-version-1-18 2007/07/23 v3.0.0 (rcs-revision 1.1) +)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2013/12/13 v3.0.0 (rcs-revision 1.25) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) +\pgffor@iter=\dimen142 +\pgffor@skip=\dimen143 +\pgffor@stack=\toks25 +\pgffor@toks=\toks26 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2013/12/13 v3.0.0 (rcs-revision 1.142) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers +.code.tex +File: pgflibraryplothandlers.code.tex 2013/08/31 v3.0.0 (rcs-revision 1.20) +\pgf@plot@mark@count=\count98 +\pgfplotmarksize=\dimen144 +) +\tikz@lastx=\dimen145 +\tikz@lasty=\dimen146 +\tikz@lastxsaved=\dimen147 +\tikz@lastysaved=\dimen148 +\tikzleveldistance=\dimen149 +\tikzsiblingdistance=\dimen150 +\tikz@figbox=\box33 +\tikz@figbox@bg=\box34 +\tikz@tempbox=\box35 +\tikz@tempbox@bg=\box36 +\tikztreelevel=\count99 +\tikznumberofchildren=\count100 +\tikznumberofcurrentchild=\count101 +\tikz@fig@count=\count102 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2013/09/17 (rcs-revision 1.8) +\pgfmatrixcurrentrow=\count103 +\pgfmatrixcurrentcolumn=\count104 +\pgf@matrix@numberofcolumns=\count105 +) +\tikz@expandcount=\count106 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik +zlibrarytopaths.code.tex +File: tikzlibrarytopaths.code.tex 2008/06/17 v3.0.0 (rcs-revision 1.2) +))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik +zlibraryarrows.code.tex +File: tikzlibraryarrows.code.tex 2008/01/09 v3.0.0 (rcs-revision 1.1) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code. +tex +File: pgflibraryarrows.code.tex 2013/09/23 v3.0.0 (rcs-revision 1.16) +\arrowsize=\dimen151 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik +zlibraryshadows.code.tex +File: tikzlibraryshadows.code.tex 2008/01/13 v3.0.0 (rcs-revision 1.3) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik +zlibraryfadings.code.tex +File: tikzlibraryfadings.code.tex 2009/11/15 v3.0.0 (rcs-revision 1.2) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code +.tex +File: pgflibraryfadings.code.tex 2008/02/07 v3.0.0 (rcs-revision 1.3) +))) (./pgf-umlsd.sty +Package: pgf-umlsd 2011/07/27 v0.6 Some LaTeX macros for UML Sequence Diagrams. + + +(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC) +) +\c@preinst=\count107 +\c@instnum=\count108 +\c@threadnum=\count109 +\c@seqlevel=\count110 +\c@callevel=\count111 +\c@callselflevel=\count112 +\c@blocklevel=\count113 +) +(./sequence_diagram.aux) +\openout1 = `sequence_diagram.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. + ABD: EveryShipout initializing macros +(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count114 +\scratchdimen=\dimen152 +\scratchbox=\box37 +\nofMPsegments=\count115 +\nofMParguments=\count116 +\everyMPshowfont=\toks27 +\MPscratchCnt=\count117 +\MPscratchDim=\dimen153 +\MPnumerator=\count118 +\makeMPintoPDFobject=\count119 +\everyMPtoPDFconversion=\toks28 +) (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty +Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) +Package ifpdf Info: pdfTeX in PDF mode is detected. +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty +Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO) +)) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +))) +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 452. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +\pgf@layerbox@umlsd@background=\box38 +\pgf@layerboxsaved@umlsd@background=\box39 +\pgf@layerbox@umlsd@threadlayer=\box40 +\pgf@layerboxsaved@umlsd@threadlayer=\box41 +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 57. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 57. + +Overfull \hbox (21.13268pt too wide) in paragraph at lines 9--58 +[][] + [] + +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] +(./sequence_diagram.aux) ) +Here is how much of TeX's memory you used: + 12264 strings out of 495028 + 253569 string characters out of 6181497 + 315349 words of memory out of 5000000 + 15266 multiletter control sequences out of 15000+600000 + 3939 words of font info for 15 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 55i,9n,78p,428b,924s stack positions out of 5000i,500n,10000p,200000b,80000s + +Output written on sequence_diagram.pdf (2 pages, 23235 bytes). +PDF statistics: + 42 PDF objects out of 1000 (max. 8388607) + 20 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 109 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/softwaredesign/sequence/sequence_diagram.pdf b/softwaredesign/sequence/sequence_diagram.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1779568297ac5b410d563edcaba0a1bb580a9042 GIT binary patch literal 23235 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 Js%Wbc{R5ezsI>q9 literal 0 HcmV?d00001 diff --git a/softwaredesign/sequence/sequence_diagram.tex b/softwaredesign/sequence/sequence_diagram.tex new file mode 100644 index 0000000..bce394f --- /dev/null +++ b/softwaredesign/sequence/sequence_diagram.tex @@ -0,0 +1,58 @@ +\documentclass{article} + +\usepackage{tikz} +\usetikzlibrary{arrows,shadows} +\usepackage{pgf-umlsd} + +\begin{document} + +\resizebox{!}{1\textheight}{ + +\begin{sequencediagram} + +\newthread[white]{u}{User} +\newinst[3]{f}{Free Format Editor} +\newinst[3]{b}{Backend} + +\begin{sdblock}{Define shape}{} + + \begin{call}{u}{goToDSView()}{f}{showDSView()} + \end{call} + + \begin{sdblock}{Loop}{} + \begin{call}{u}{draw()}{f}{showDraw()} + \end{call} + \end{sdblock} + + \begin{call}{u}{saveShape()}{f}{returnToEditor()} + \begin{call}{f}{promptDefineAttributes()}{u}{defineAttributes()} + \end{call} + \begin{call}{f}{sendAttributes()}{b}{true} + \end{call} + \end{call} + +\end{sdblock} + +\begin{sdblock}{Create Diagram} + + \begin{call}{u}{createDiagram()}{f}{showDView()} + \end{call} + + \begin{sdblock}{Loop}{} + \begin{call}{u}{addShape()}{f}{showShape()} + \begin{call}{f}{promptAddAttributes()}{u}{addAttributes()} + \end{call} + \end{call} + \end{sdblock} + + \begin{call}{u}{saveDiagram()}{f}{returnToEditor()} + \begin{call}{f}{sendAttributes()}{b}{true} + \end{call} + \end{call} + +\end{sdblock} + +\end{sequencediagram} + +} +\end{document} -- 2.20.1