diff options
76 files changed, 5342 insertions, 0 deletions
diff --git a/.project b/.project new file mode 100644 index 0000000..452dcbe --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>documentation-i08005-2</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>net.sourceforge.texlipse.builder.TexlipseBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>net.sourceforge.texlipse.builder.TexlipseNature</nature> + </natures> +</projectDescription> diff --git a/.texlipse b/.texlipse new file mode 100644 index 0000000..8ef5dfd --- /dev/null +++ b/.texlipse @@ -0,0 +1,13 @@ +#TeXlipse project settings +#Tue Feb 22 18:22:50 CET 2011 +builderNum=2 +outputDir= +makeIndSty= +bibrefDir= +outputFormat=pdf +tempDir=tmp +mainTexFile=document.tex +outputFile=document.pdf +langSpell=de +markDer=true +srcDir= diff --git a/document.bib b/document.bib new file mode 100644 index 0000000..cde3809 --- /dev/null +++ b/document.bib @@ -0,0 +1,169 @@ +% !TEX TS-program = bibtex + +% Frühere Studienarbeiten +@unpublished{wolf05, +title="{Implementierung eines Kybernetischen System Modells}", +author="Wolf, Friedhelm", +year=2005, +note="{Studienarbeit an der BA-Horb}", +} + +@Unpublished{dreher11, +title="{Refactoring und Redesign}", +author="Dreher, Tobias", +year=2011, +note="{Studienarbeit an der DHBW Stuttgart Campus Horb}", +} + +@Unpublished{kienzle11, +title="{Plugin Entwicklung: Eclipse Plugin Entwicklung}", +author="Kienzle, Felix", +year=2011, +note="{Seminararbeit Software-Engineering bei Prof. Dr. phil. van Hoof an der DHBW Stuttgart Campus Horb}", +} + +@unpublished{riess03, +title="{Kybernetisches Systemmodell KSM 4}", +author="Riess, Christian", +year=2003, +note="{Studienarbeit an der BA-Horb}", +} + +@Unpublished{fischer10, + author = "Fischer, Yves", + title = "{KSM - Eclipse RCP}", + year = 2010, + note="{Studienarbeit an der DHBW Stuttgart Campus Horb}", +} + +%Eclipse/Java Books +@book{gef1, +title="{Create an Eclipse-based application using the Graphical Editing Framework}", +author="Aniszczyk, Chris and Hudson, Randy}", +year="2007", +note="\url{http://www.ibm.com/developerworks/library/os-eclipse-gef11/}", +publisher="{IBM developerWorks}", +} + +@book{daumEclipse, +title="{Java-Entwicklung mit Eclipse 3.1}", +author="Daum, Berthold", +year=2005, +publisher="{dpunkt.verlag}" +} + +@book{eclipse-osgi, +title="{Understanding how Eclipse plug-ins work with OSGi}", +author="{Scott Delap}", +year=2006, +note="\url{http://www.ibm.com/developerworks/library/os-ecl-osgi/index.html}", +publisher="{IBM developerWorks}", +} + +@book{swing2swt, +title="{Migrate your Swing application to SWT}", +author="{Yannick Saillet}", +year=2004, +note="\url{http://www.ibm.com/developerworks/java/tutorials/j-swing2swt/}", +publisher="{IBM developerWorks}", +} + +@book{eclipse-plugins, +title="{Developing Eclipse plug-ins}", +author="Gallardo, David", +year=2002, +note="\url{http://www.ibm.com/developerworks/opensource/library/os-ecplug/}", +publisher="{IBM developerWorks}", +} + +@book{eclipse-read, +title="{Recommended Eclipse reading list}", +author="{Chris Aniszczyk, EMC}", +year=2006, +note="\url{https://www.ibm.com/developerworks/library/os-ecl-read/}", +publisher="{IBM developerWorks}", +} + +@book{eclipse-codebuch, +title="{Das Eclipse-Codebuch}", +author="Daum, Berthold", +year=2006, +publisher="{dpunkt.verlag}", +note="{aus Bibliothek DHBW/Horb}", +} + +@book{eclipse:building:plugins, +title="{eclipse - Building Commercial-Quality Plug-ins}", +author="Gamma and Nackman and Wiegand", +year=2006, +publisher="{Addison-Wesley}", +note="{aus Bibliothek DHBW/Horb}", +} + +@book{book:eclipse-rcp, +title="{Eclipse Rich Client Platform}", +author="{Sippel, Jastram, Bendisposto}", +year=2009, +publisher="{entwickler.press}", +note="{aus Bibliothek DHBW/Horb}", +} + +@book{bartlett, +title = "{OSGi in Practice}", +author = "Bartlett, Neil", +publisher = "Bartlett, Neil", +year = 2010, +note = "\url{http://njbartlett.name/osgibook.html}", +} + +@book{gefslides, +title = "{GEF in Depth}", +author = "Hudson, Randy and Shah, Pratik", +publisher = "IBM Rational Software", +year = 2005, +note = "\url{http://www.eclipsecon.org/2005/presentations/EclipseCon2005_23_GEF_Tutorial_Final.ppt}", +} + +@book{gefredbook, +title = "{Eclipse Development using the Graphical Editing Framework and the Eclipse Modeling Framework}", +author = "Moore, William and Dean, David and Gerber, Anna and Wagenknecht, Gunnar and Vanderheyden, Philippe", +publisher = "{An IBM Redbooks publication}", +year = 2004, +note = "\url{http://www.redbooks.ibm.com/abstracts/sg246302.html}" +} + +@misc{vogelrcp, +title = "{Eclipse RCP Tutorial}", +author = "Vogel, Lars", +year = 2011, +note = "Version 5.7, \url{http://www.vogella.de/articles/EclipseRCP/article.html}" +} + +@misc{eclipse:wiki, +title = "{Eclipse Wiki}", +note = "\url{http://wiki.eclipse.org/Main_Page}" +} + +@misc{eclipse:scalabundle, +title = "{Scala Bundle}", +note = "\url{http://wiki.eclipse.org/Scala_Bundle}" +} + +@misc{eclipse:scalarcp, +title = "{Using Scala to Create Eclipse RCP Applications}", +note = "\url{http://www.coconut-palm-software.com/the_new_visual_editor/doku.php?id=blog:using_scala_to_create_eclipse_rcp_applications}", +} + +@book{jfaceaction, +title = "{SWT/JFace In Action}", +author = "Scarpino, Matthew and Holder, Stephen and Ng, Stanford and Mihalkovic, Laurent", +publisher = "Manning", +year = 2005, +} + +@misc{cathedral, +title = "{The Cathedral and the Bazaar}", +author = "Raymond, Eric Steven", +year = 2002, +note = "\url{http://www.catb.org/~esr/writings/homesteading/cathedral-bazaar/index.html}", +} diff --git a/document.pdf b/document.pdf Binary files differnew file mode 100644 index 0000000..b06595b --- /dev/null +++ b/document.pdf diff --git a/document.tex b/document.tex new file mode 100644 index 0000000..3ed2fc3 --- /dev/null +++ b/document.tex @@ -0,0 +1,801 @@ +% !TEX TS-program = pdflatex -shell-escape +% !TEX encoding = UTF-8 Unicode +\documentclass[%draft, +12pt,titlepage,abstracton]{scrreprt} +\usepackage[T1]{fontenc} +\usepackage{ucs} +\usepackage[utf8x]{inputenc} +\usepackage[ngerman]{babel} +\usepackage{url,graphicx,xcolor} +%\usepackage{float} % for [H] +\usepackage[pdfstartview=FitH,colorlinks,linkcolor=black,citecolor=darkgray,urlcolor=darkgray,filecolor=darkgray]{hyperref} +%\usepackage{draftwatermark} \SetWatermarkLightness{0} + +\bibliographystyle{unsrt} + +\usepackage{libertine} %Schriftart Linux-Libertine +\usepackage{courier} % Schriftart für monospaced +\usepackage[activate]{microtype} % Microtype für besseren Zeichensatz + +\usepackage{setspace} +\setlength{\parindent}{0pt} +\setlength{\parskip}{9pt} +\onehalfspacing % BA Vorgabe ein-einhalb Zeilenabstand + +\usepackage{listings} +\usepackage{pdfpages} % Zum einbinden externer PDF-Dateien + +\newcommand{\boppel}[1]{ + \parbox{1cm}{ + \setlength{\unitlength}{1cm} + \begin{picture}(1,1)(0,0) + \linethickness{2pt} + \put(0.5,0.5){\color{cyan}\circle*{1.5}} + \put(0.5,0.5){\makebox(0,0){\textcolor{white}{\textbf{#1}}}} + \end{picture} + } +} + +\usepackage[toc,smallcaps]{glossaries} +\renewcommand*{\glstextformat}[1]{\textit{#1}} +\makeglossaries +\makeindex + +\title{\infoTitle} +\author{\infoAuthor} +\date{\infoDate} + + +\newcommand{\infoTitel}{KSM: Eclipse RCP} +\newcommand{\infoTyp}{Studienarbeit 2} +\newcommand{\infoKurs}{Studiengang Informationstechnik} +\newcommand{\infoAutor}{Yves Fischer} +\newcommand{\infoAbgabe}{20. Mai 2011} % Titelseite und Erklärung +\newcommand{\infoBetreuerDH}{Dr. Jörg Wedeck} +\newcommand{\infoKurskuerzel}{\textsc{TIT}2008/NS} + +\newglossaryentry{Viewport}{name={Viewport}, description={Begriff aus + dem Grafikbereich der den Auschnitt eines Bildes, welcher + dargestellt wird, bezeichnet.}} + +\newglossaryentry{Controls}{name={Controls},description={hier Teil einer GUI Anwendung, +oft auch Widget genannt.}} + +\newglossaryentry{JDT}{name={JDT},description={\emph{J}ava \emph{D}evelopment \emph{T}ools}} + +\newglossaryentry{Classpath}{name={Classpath},description={Der Classpath wird vom Java Classloader benützt um referenzierte Klassen zu finden. Durch spezielle Classloader lässt sich Code innerhalb einer Virtual-Machine separieren.}} + +\newglossaryentry{Classloader}{name={Classloader},description={siehe \glstext{Classpath}}} + +\newglossaryentry{Memory Leak}{name={Memory Leak},description={Ein Memory Leak ensteht wenn ein Programm (auch indirekt über Bibliotheken) vom Betriebssystem Speicher anfordert (\texttt{*alloc}) und die Referenz auf den zugewiesenen Speicher löscht, daher den Speicher ,,vergisst'' und nicht wieder freigeben kann.}} + +\newglossaryentry{KSM/Swing}{name={KSM/Swing},description={Die KSM +Implementierung auf Basis der Java-Swing GUI-Bibliothek.}} + +\newglossaryentry{KSM/RCP}{name={KSM/RCP},description={Die KSM +Implementierung als eine Eclipse~RCP Anwendung.}} + + +\begin{document} +\begin{titlepage}\enlargethispage*{4\baselineskip} +\pagenumbering{roman} +\unitlength1mm +\begin{picture}(0,0) + \put(45,0){\includegraphics[width=5cm]{images/dhbwlogo.png}} +\end{picture} + +\vspace{2cm} + +\begin{centering} +\huge{\infoTitel}\\ +\vspace{1.5cm} +\LARGE{\textsc{\infoTyp}}\\ +\vspace{3cm} +\Large{\infoKurs}\\ +\normalsize{% +an der Dualen Hochschule Baden-Württemberg Stuttgart Campus Horb\\ +von}\\ +\Large{\infoAutor} \\ +\vspace{2cm} +\normalsize +Abgabedatum:\\ \infoAbgabe\\ +\end{centering} + +\vspace{5.0cm} +\begin{tabbing} +MMMMMMMMMMMMMMMMMMMMMMMM \= \kill\\ +\textbf{Kurs} \> \infoKurskuerzel\\ +\textbf{Betreuer der Dualen Hochschule} \> \infoBetreuerDH\\ +\end{tabbing} +\begin{flushleft} +\end{flushleft} + +\end{titlepage} + +{\huge Erklärung} + +\vspace{2cm} +Ich habe die Studienarbeit selbständig verfasst und keine anderen als +die angegebenen Quellen und Hilfsmittel benutzt. + +Die Arbeit wurde bisher in gleicher oder ähnlicher Form keiner anderen +Prüfungsbehörde vorgelegt und auch nicht veröffentlicht. + +\vspace{1cm} + +Rheinau, \infoAbgabe + +\vspace{1cm} + +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +\newpage +\renewcommand{\abstractname}{Zusammenfassung} +\begin{abstract} +Im vorangegangen Semester wurde die Portierung der KSM Java/Swing Applikation +auf Eclipse~RCP evaluiert. + +In dieser Arbeit sollen konkrete Vorgehensweisen erörtert und der Weg zu +einer Eclipse~RCP basierten KSM Applikation geebnet werden. + +\section*{Motivation} +Das GUI von KSM basiert momentan auf Swing bei Verwendung des +NetBeans GUI-\-Designers. Der auf diesem Weg erzeugte Code ist nahezu +unwartbar und auch durch die ständige Weiterentwicklung inkonsistent. + +Mithilfe von Eclipse~RCP können dank klarer Strukturen und +Konventionen Verbesserungen im Bereich Wartbarkeit, Erweiterbarkeit +und Usability erzielt werden. + +\section*{Problemstellung und Ziele} +Während die vorhergehende Studienenarbeit \cite{fischer10} sich mit der +Einarbeitung in Eclipse~RCP und der grundsätzlichen Möglichkeit der Realisierung +von KSM darin beschäftigte, soll mit dieser Studienarbeit die konkrete Umsetzung +begonnen werden. +\end{abstract} + +\renewcommand{\abstractname}{Summary} +\begin{abstract} +The previous assignment evaluated the porting of the KSM Java / Swing +Application to Eclipse-RCP. + +This follow-up discuss specific ways to an Eclipse~RCP based KSM application. + +\section*{Motivation} Currently KSM is based on a Java-Swing Graphical User +Interface, developed with the NetBeans GUI-Designer. This GUI-related code is +inconsistent and unmaintainable due to continuos development. + +Its possible to gain a better maintainability, expandability and usability by +using Eclipse RCP through clear structures and conventions. + +\section*{Tasks and Objectives} +While the foregoing Studienenarbeit elaborates +basic Eclipse-RCP technics and presented a rough-prototype, its now time to +begin with the implementation of specific points of a new KSM Application in +Eclipse-RCP to supersede the Swing-based Application. + +The ongoing development will be in close cooperation with students working on +bugfixing and extending the Swing-based KSM, to gain interoperability and quality. +\end{abstract} + +\tableofcontents +\newpage\pagenumbering{arabic} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Einleitung} +Aufbauend auf den Ergebnissen der vorangegangen Studienarbeit gilt es zu +beginnen, mithilfe von Eclipse~RCP ein KSM Werkzeug zu erstellen welches auf +längere Sicht den die Java/Swing Version ablösen kann. + +Für ein KSM auf Basis von Eclipse~RCP sprechen viele Gründe von denen einige +im folgenden kurz erläutert werden: + +\textbf{Erweiterbarkeit/Modularität\ } Die Entwicklung von KSM hat viele +verschiedene Versionsstände hervorgebracht die oftmals nicht wieder vereint +werden konnten. Wäre das Grundprojekt modularer aufgebaut gewesen hätten diese +einfacher in ein großes ganzes integriert werden können. + +Zu diesem Zeitpunkt existieren zwei im Grunde gleiche KSM Entwicklungszweige: +KSM und QKSM. Der Ideen und Bugfix Austausch zwischen den Entwicklern und +Projektständen ist durch die strikte Trennung nahezu null. + +Wenn zukünftig weitere Anwendungen mit ähnlichen Anwendungsbereich in +Eclipse~RCP entwickelt werden ist es möglich diese mit wenig Aufwand gebündelt +auszuliefern. + +\textbf{Vereinfachung\ } Durch Verwendung von Softwarekomponten und Frameworks +aus der Eclipse Platform kann auf aufwendige, fehleranfällige Eigenentwicklungen +verzichtet werden. + +\textbf{Bessere GUI\ } Für Benutzer von Eclipse wird das Arbeiten mit +Workspaces und Projekten in der Eclipse~Art bereits vertraut sein. Alle anderen +werden mit einem intuitiven Standard- --- weniger individuell-kreativen --- +Oberfläche konfrontiert. + +\textbf{Lizenzmanagement\ } KSM soll in naher Zukunft öffentlich verfügbar +sein, QKSM nicht. Wäre QKSM ein Zusatzmodul (Bundle, Plugin) für KSM, dann +würde lediglich eine zusätzliche Datei einem Open-Source KSM QKSM Fähigkeiten +verleihen. + +\textbf{Deployment/Update\ } Eclipse verfügt über ausgereifte Mechanismen zur +Softwareverteilung und Aktualisierung. Über eine Update-Site könnten Benutzer +über das Internet Ihre KSM-Installation modular Ihren Bedürfnissen anpassen und +aktualisieren. + +\textbf{Web Anwendungen\ } Mithilfe von RAP (Rich Ajax Platform) lassen sich +RCP Anwendungen ins Web portieren. + +\vspace{1cm} + +Diese Studienarbeit wird die Vorteile der Nutzung der Eclipse Platform nur zum +Bruchteil auskosten. Nicht zu vergessen ist, dass es auch Hindernisse gibt auf +die im Kapitel \ref{chapter:rcpprogrammierung} ab Seite +\pageref{chapter:rcpprogrammierung} eingegangen wird. + +Zu Beginn wird die Entwicklung eines Datenformat für die Computerdarstellung von +Kybernetischen System-Modellen besprochen. Kapitel +\ref{chapter:weiterentwicklung} beschreibt Veränderungen gegenüber dem Prototyp +aus der vorhergehenden Arbeit. + +In Kapitel \ref{chapter:rcpprogrammierung} wird auf die Arbeit und das +Erlernen des Umgangs mit Eclipse~RCP besprochen. Kapitel \ref{chapter:ausblick} +wird die Ergebnisse dieser Arbeit kurz zusammenfassen und zur möglichen +Weiterentwicklung Stellung nehmen. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Datenformat und Datenmodell} +In der Studienarbeit 1 wurde mit einem vereinfachten Datenmodell gearbeitet. + +Da zukünftig sowohl KSM/Swing alsu auch /RCP die gleichen Daten verarbeiten +können sollten liegt es nahe, dass Format in dem die Daten persistent im +Dateisystem abgelegt werden können zu vereinheitlichen. + +Im folgenden wird ausgeführt warum das aktuelle Datenformat in KSM/Swing nicht +geeignet ist und wie ein neues entwickelt wurde. + +\par +\begingroup +\leftskip=1.5cm % ggf. verstellen +\noindent In Anhang \ref{chapter:doku-datamodel} ist die vollständige Dokumentation des +in neuen Dateformat zu finden dessen Entwicklung in diesem Kapitel beschrieben +wird. +\par +\endgroup + +\section{Istzustand} +In der Evaluation von RCP wurde ein einfaches Datenformat eingeführt, indem die +Model-Objekte einfach mittels leicht annotiertem JAXB serialisiert wurden: +{\small +\begin{verbatim} +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<diagram> + <connections> + <connection> + <source>1c862df6-80e5-445b-a41c-ed677973abfb</source> + <target>e36a0368-d8f6-40a2-bd29-375352045da8</target> + </connection> + </connections> + <nodes name="Node 01"> + <id>1c862df6-80e5-445b-a41c-ed677973abfb</id> + <location> + <x>128</x> + <y>90</y> + </location> + <nodeProperties/> + </nodes> + <nodes name="Node 11"> + <id>e36a0368-d8f6-40a2-bd29-375352045da8</id> + <location> + <x>531</x> + <y>104</y> + </location> + <nodeProperties/> + </nodes> +</diagram> +\end{verbatim} +} + +In der aktuellen KSM/Swing Applikation wird ebenfalls ein auf XML-basierendes +Datenformat verwendet. + +Abbildung \ref{fig:ksmswing-diagramm} zeigt ein einfaches KSM-Diagramm in +KSM/Swing. Listing \ref{ksmswingdata} gibt stark gekürzt das bei der Speicherung +erzeugte XML wieder. + +\begin{figure}[ht!] + \centering + \includegraphics[width=\textwidth]{images/ksm-swing-screenshot.png} + \caption{KSM/Swing Applikation bei der Anzeige der Daten aus Listing + \ref{ksmswingdata}} + \label{fig:ksmswing-diagramm} +\end{figure} + +\lstinputlisting[language=XML,basicstyle=\ttfamily\scriptsize, + caption={Datenformat aus KSM/Swing Applikation Stand + 22.02.2011}]{files/ksm-example.xml}\label{ksmswingdata} + +Für das KSM/Swing Datenform existiert ein XML-Schema in der Ausarbeitung der +Studienarbeit von Friedhelm Wolf \cite{wolf05} in Anhang 4. Es wurde aber in den +folgenden Studienarbeiten nicht mehr weiter gepflegt und ist daher vermutlich +nicht mehr gültig. + +Darüberhinaus existierte keine saubere Dokumentation dieses Datenformates. Die +Bedeutung der abgelegten Werte muss aus dem Quelltext von KSM/Swing +interpretiert werden was nicht immer einfach ist. + +Weiterhin scheinen die Konventionen beim Entwurf dieses Formates (oder +,,Schema'') eher beliebig gewesen zu sein. +Dies fällt als erstes auf bei der Benennung der der Eigenschaftsnamen (Tags), wo +\texttt{CamelCase} (,,Microsoft Stil''), \texttt{javaStilArt} und +underline\_stil wild gemischt werden. Die Benamung verwendet teils Typ-Prefix +(\texttt{sIconPath}), teils auch nicht. + +Die Ein- und Ausgabe erfolgt in KSM/Swing mithilfe der Java-Bibliothek +\textit{com.machinedialog}. Von Seiten der Projektbetreuung wurde geäusert, dass +es gewünscht ist diese alte Bibliothekt nicht mehr weiter zu verwenden. + + +Die fehlende Dokumentation und der anscheinend unstrukturierte Entwurf sprachen +ebenfalls gegen eine Weiterverwendung dieses Schemas. +In Sicht zur Zukunft ist das Format ungeignet, weil es nicht erlaubt zusätzlich +Eigenschaften rückwärtskompatibel abzubilden. + +Es ist nicht durch ein XML-Schema gestützt und es wurde im Laufe der Entwicklung +mehrmals beliebig verändert. Es ist nicht dokumentiert und der Parser in +KSM/Swing Programm ist in einem schlechten und mit der GUI verknüpften Zustand. + + +\section{Entwicklung eines neuen Datenformat} +Wie an diesen beiden Beispielen zu sehen ist, bietet das XML-Format aus der +Studienarbeit~1 nicht den Darstellungsumfang des KSM/Swing Format. Letzteres ist +jedoch ungeignet zur Nutzung in einer neuen KSM RCP-Applikation. + +Daher lag es nahe ein Format zu entwerfen welche sowohl von KSM/Swing mithilfe +einer sauberen neuen Import/Export Infrastruktur als auch in der RCP-Anwendung +genutzt werden kann. Es wurde hierbei ein Ansatz gewählt der sowohl Knoten, +Gruppen von Knoten (auch bekannt als ,,Hirarchien'') als auch gerichtete +Verbindungen zu einem anderen Knoten abbilden kann. Alle drei Objekte können +durch Eigenschaften dynamisch, nicht schemagebunden mit Informationen +angereichert werden. + +\par +\begingroup +\leftskip=1.5cm % ggf. verstellen +\noindent Die Implementierung des neuen Datenformat in KSM/Swing wurde von +Tobias Dreher vorgenommen. Siehe dazu seine Studienarbeit \cite{dreher11}. +\par +\endgroup + + +Zu festen Standardisierung wurde ein XML-Schema erstellt woraus wiederum mittels +des XML-Schema-Compiler (xjc) von JAXB Java-Klassen erzeugt werden die mit +weiteren, handgeschrieben Klassen eine Bibliothek zur Abbildung von +KSM-Diagrammen im Speicher und laden/speichern bietet (Abb. +\ref{fig:class-diagram-xmlschema}). Diese kann sowohl von KSM/RCP als auch +beliebigen Java-Anwendungen verwendet werden. + +\begin{figure}[ht!] + \centering +\includegraphics[width=0.8\textwidth]{images/class-diagram-xmlschema.PNG} +\caption{Klassendiagramm XML-Datenmodell Bibliothekt, Auschnitt KSM +Model-Klasse} +\label{fig:class-diagram-xmlschema} +\end{figure} + +Die Datenmodell Bibliothek (Name +\texttt{de.\-dhbw.\-horb.\-ksm.\-xmlschema}) ist als Eclipse-Project angelegt +kann jedoch auch nur mit Ant entwickelt werden. Das Projektverzeichnis enthält +weiterhin umfassende Unit-Tests, teils Beaviour Driven + +Listing \ref{listing:example} zeigt valide Beispieldaten zum im Anhang ab Seite +\pageref{listing:schema} hinterlegten neuen XML-Schema.. + +\lstinputlisting[language=XML,basicstyle=\ttfamily\scriptsize, + caption={KSM example-1.xml} + ]{files/example-1.xml}\label{listing:example} + + +Weitere Dokumentation zum Format und der Bibliothek finden sich im Anhang ab +Seite \pageref{chapter:doku-datamodel}. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Weiterentwicklung Programmfunktionalität und +Modularisierung}\label{chapter:weiterentwicklung} + +Das KSM/RCP Projekt besteht aus folgenden Komponenten: +\begin{description} + \item[\texttt{de.\-dhbw.\-horb.\-ksm.\-core}] Plugin + Project, Kernfunktionalität: + \begin{itemize} + \item RCP-Anwendung Einstiegspunkt + \item Editor auf Basis von GEF (Figures, EditParts) + \item Projekttypen, Dateiwizard, Outline und Navigator + \item KSM-Property Extension-Point + \end{itemize} + \item[\texttt{de.\-dhbw.\-horb.\-ksm.\-qksm}] Plugin Project, Enthält nur + eine Demo für den Property Extension-Point. + \item[\texttt{de.\-dhbw.\-horb.\-ksm.\-simulator}] Fragment Project von + \texttt{.core}, Enthält eine Demo der + live Verknüpfung des im Editor dargestellten Modells mit einem Chart auf Basis + von SWTChart. + \item[\texttt{de.\-dhbw.\-horb.\-ksm.\-tableeditor}] Fragment Project von + \texttt{.core}, Enthält einen Prototyp + zum Editieren von Knoteneigenschaften in Tabellenform. + \item[\texttt{ksm-model}] + Java-Project/Apache Ant, Datenmodell: + \begin{itemize} + \item XML-Schema des Datenformat. + \item Java Library auf Basis von JAXB. + \item Dokumentation des Datenformat. + \end{itemize} + \item[\texttt{de.\-dhbw.\-horb.\-ksm.\-model}] Plugin Project welches + \texttt{ksm-model} als OSGi-Bundle zur Verfügung stellt. Muss nach + Aktualisierung von \texttt{ksm-model} ebenfalls aktualisiert werden. +\end{description} + + +\section{Die RCP Applikation \texttt{ksm.\-core}} +\subsection{Der Editor und das Datenmodell} + +\begin{figure}[mt] +\centering +\includegraphics[width=\textwidth]{images/node-edit-and-figure.PNG} +\caption{Model, View und Controller des KSM (von Rechts nach Links)} +\label{fig:node-edit-and-figure} +\end{figure} + + +% model source/target connections +% commands +%zooming redbook 4.2.4 +% übersicht der commits mit verbesserten commit-messages + +% fragment project versus bundle + + + +% Properties +% http://www.eclipse.org/articles/Article-Properties-View/properties-view.html +% vogella: extension points + + + +\section{Simulation} +Ein Prototyp der Simulationsdarstellung zeigt wie sich Änderungen + +\begin{figure}[ht!] +\centering +\includegraphics[width=0.8\textwidth]{images/eclipse-simulator.jpg} +\caption{Simulator Prototyp} +\label{fig:eclipse-simulator} +\end{figure} + +Die Simulationskomponente lässt sich in Eclipse~RCP mithilfe einer zusätzlichen +View implementieren. + +Diese View besitzt einen eigenen Zustand ist jedoch zum Start der Simulation mit dem +dann aktiven Editor gekoppelt. + +\subsection{Dieser komische Graph} +kann mit der library swtchart dargesellt werden + +\section{Table-Editor} +Der Table-Editor ,,besteht aus sechs Reitermenüs. Diese besitzen folgende +Funktionalitäten: [Editoren für] ,Edge Values' – Kanteneigenschaften [..] +,Node Values' – Knoteneigenschaften'' (Studienarbeit Christian Riess \cite[S. +24]{riess03}). + +Im Rahmen dieser Studienarbeit wurde ein Table-Editor prototypisch entworfen +welcher Knoteneigenschaften manipulieren kann. Abbildung \ref{fig:table-editor} +zeigt die dabei eingeführten Neuigkeiten. + +\begin{figure}[ht!] +\centering +\includegraphics[width=0.8\textwidth]{images/table-editor.jpg} +\caption{Prototyp eines Table-Editor} +\label{fig:table-editor} +\end{figure} + +Rot markiert ist die neue View des ,,Table-Editor''. Sie wird durch den Aufruf +der Table-Editor Perspektive aktiviert (Button ebenfalls rot markiert). + +Bei der View handelt es sich \texttt{PageBookView}. Sie instanziert für jeden +offenen Editor einen Table-Editor. Es wird jeweils der zu dem fokussierten +Diagramm-Editor passende Table-Editor angezeigt. Die Implentierung folgt dabei +dem Eclipse-Standard wie er auch in Outline verwendet wird. + +Änderungen am Diagramm übernimmt der Table-Editor einfacherweise indem er auf +alle Node/NodeGroup Objekte listener registriert sondern er beobachtet den +Command-Stack des Editors. Dies funktioniert nur solange wie keine weiteren +Änderungen am Modell vorgenommen werden die kein Command im Diagramm-Editor +Command-Stack erzeugen. + +Der Table-Editor nutzt im Prototyp noch keine Undo-/Redo-Funktionalität. + +Der Table-Editor Prototyp ist als seperates Eclipse-Projekt vom Typ +,,Plugin-Fragment'' abgelegt. Das bedeutet, es hängt direkt vom KSM-Core Plugin +als Host-Plugin ab und ist kein eigenständiges (OSGi-)Bundle. Daraus folgt auch, +dass es nicht über ein \texttt{Activator} Klasse verfügt. + +\section{Property Editor} +Damit ein Model für die Properties-View nötigen Informationen bereitstellt muss +eine \texttt{Prop\-erty\-Source} bereitgestellt werden. Dies geschieht im +einfachen Fall indem die Model-Klasse \texttt{IProp\-erty\-Source\-Provider} implementiert. + +Ist dies nicht der Fall fragt die Properties-View das \texttt{EditPart} über +\texttt{getAdapter\-(IProp\-erty\-Source\-Provider.class)} nach einem Objekt das +die Properties des Model beschreibt. Dieser Ansatz wurde gewählt, da die +Klassen des Models nicht angepasst werden konnten. Dies ist in einer +Designschwäche der Model-Bibliothek begründet. Es ist noch nicht möglich eigene, +abgeleitete Klassen für das Model zu verwenden. + +Es wurden daher die Klassen \texttt{d.d.h.k.core.\-editor.\-model.\-property.*} +als PropertySourceProvider für \texttt{Node} und \texttt{NodeGroup} eingeführt. +Abbildung \ref{fig:ext-property-descriptors} zeigt als UML-Klassendiagramm die +Klassen zur Verwaltung der Properties. + +\begin{figure}[mt] +\centering +\includegraphics[width=0.7\textwidth]{images/ext-property-descriptors.PNG} +\caption{Klassen des Extension Point für Property Deskriptoren} +\label{fig:ext-property-descriptors} +\end{figure} + +Für jedes Model-Objekt meldet das entsprechende EditPart eine Instanz von +\texttt{Model\-Property\-Source}. Das Attribut \texttt{type} ist dabei je nach +Model eines von \texttt{ksm, nodegroup, node, connection}. +Anhand dieses Typs wird in der Extension\-Registry nachgeschlagen ob für den +Extension\-Point \texttt{de.\-dhbw.\-horb.\-ksm.\-core.\-model.\-property} +Extensions registriert wurden. + +Extensions sehen so aus, dass eine von +\texttt{Abstract\-Property\-Descriptor\-Advisor} abgeleitete Klasse (im +Beispiel sind schon BaseNode(Group)PropertyAdvisor dargestellt die die +Manipulation der grundlegenden Eigenschaften Farbe und Beschriftung erlauben) +angegeben wird die Descriptoren für Eigenschaften des Model-Objekt erstellt. + +\begin{figure}[mt] +\centering +\includegraphics[width=0.7\textwidth]{images/eclipse-property-declaration-extensionpoint.jpg} +\caption{Deklaration des Extension-Point für Property-Advisors} +\label{fig:property-declaration-extensionpoint} +\end{figure} + +\begin{figure}[mt] +\centering +\includegraphics[width=0.7\textwidth]{images/eclipse-property-usage-extensionpoint.jpg} +\caption{Benutzung des Extension-Point für Property-Advisors} +\label{fig:eclipse-property-usage-extensionpoint} +\end{figure} + +Abbildung \ref{fig:property-declaration-extensionpoint} zeigt wie der Extension +Point deklariert wurde. Das gezeigte GUI ist eine Maske für eine XML-Datei die +im Prinzip ein XML-Schema für das XML ist mit dem der Extension-Point +genutzt werden kann. In diesem Fall können auf den Extension-Point beliebig +viele ,,advisor'' Elemente angelegt werden die auf eine von +\texttt{Abstract\-Property\-Descriptor\-Advisor} abgeleitete Klasse zeigen und +ein Attribut \texttt{type} haben (Abb. +\ref{fig:eclipse-property-usage-extensionpoint}). + + +\section{ksm-datamodel als OSGi Bundle} +%%% warum primitiv gehalten +%% wies in eclipse geht + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Eclipse~RCP Programmierung}\label{chapter:rcpprogrammierung} +Dieses Kapitel soll zukünftigen Entwickler einige Hinweise zum schnellen Start +geben. Dazu soll die in dieser Arbeit verwendete Arbeitsumgebung vorgestellt und +dabei gewonnenen Erfahrungen bei der Einarbeitung und Nutzung mitgeteilt werden. + +\section{Hilfsmittel} +Zu Beginn der Studienarbeit I verfügte ich über Basiskentnisse der Eclipse +Java Development Tools (JDT). Das Thema Eclipse~RCP wurde im Studium nicht +angesprochen und daher war meine primäre Aufgabe einen Einstieg in das Thema +RCP-Entwicklung zu finden. + +Zum Kennenlernen von Eclipse ist der Besuch eines Eclipse Demo~Camp +empfehlenswert. Dort werden neue, auf Eclipse aufbauende Technologien +vorgestellt. Informationen darüber finden sich im Eclipse Wiki +\cite{eclipse:wiki}. Weitere aktuelle Informationen aus dem Eclipse Umfeld +finden sich in Blogs die im Eclipse Planet aggregiert werden +(\url{http://planeteclipse.org/}). + +Weiterhin war auch einige der Literatur in Buchform, die im Literaturverzeichnis +dieser Arbeit verlinkt ist, sehr hilfreich. Grundsätzlich findet man jedoch die +meisten Informationen in RCP-Beispielapplikationen, formloser Dokumentation und +im Eclipse-(Online-)Hilfesystem. Auch sollte man zur RCP-Entwicklung die Quellen +von RCP installiert haben, sodass man bei jeder Gelegenheit nahtlos in den +Quellcode von RCP wechseln kann. Die API-Dokumentation der RCP und auch GEF +Klassen ist meist sehr hilfreich. + +Zum Einstieg ist das RCP Tutorial von Lars Vogel empfehlenswert \cite{vogelrcp}. +Zu den Grundlagen von GEF sind die Folien eines EclipseCon Tutorials interessant +\cite{gefslides}. Tiefergehend jedoch teils veraltete Informationen bietet +das IBM Redbook zu diesem Thema \cite{gefredbook}. + +Einen allgemeinen Überblick und guten Enstieg in die Eclipse Plugin Entwicklung +findet sich in der Seminararbeit im Kurs Software-Engineering 2011 von Felix +Kienzle TIT2008NS \cite{kienzle11}. + +Da Eclipse~RCP kein abgeschlossenes Produkt ist sondern sich aus einzelnen +Komponenten zusammensetzt findet man auch Informationen jenseits von RCP. +Beispielsweise zu OSGi\cite{bartlett}, JFace\cite{jfaceaction} oder SWT. Eine +Liste von Empfohlenen Büchern findet sich unter \cite{eclipse-read}. + +\section{Berücksichtigung von Eclipse~RCP in zukünftigen Vorlesungen} +Im 4ten-Semester gab es eine Einführung in das Arbeiten mit Eclipse. Aus der +Sicht dieser Studienarbeit lag der Focus dabei leider lediglich auf einer +kurzen Einführung in die Arbeit mit den Java Development Tools (JDT). + +Um die Arbeit an KSM/RCP vorzubereiten könnte in dieser Vorlesung schon die +Entwicklung von Eclipse-Plugins und RCP-Anwendungen besprochen werden. + +Dadurch wird der Zeitbedarf der Vorlesung steigen. Ein Möglichkeit diese Zeit zu +gewinnen könnte in der Optimierung der Vorlesungen zu Programmiersprachen +liegen. +So gab es im Zuge der Vorlesungen C++, Java/Eclipse, .net/C\# Themenredundanzen. +Möglicherweise wäre es sinnvoll, anhand Java - wegen dem vglw. einfachen Aufbau +dieser Programmiersprache - in die Objektorientierte Programmierung einzuführen +und ggf. darauf aufbauend C++ zu lehren. + +Die zusätzliche Vermittlung der .net-Umgebung mit der Sprache C\# hat in meinen +Augen keinen Sinn gemacht, da hier keine neuen oder andersartigen Konzepte +sondern lediglich leichte Syntaxveränderungen vermittelt wurden. + +Ergänzend hätte mich vielmehr eine Einführung in funktionale Programmierung +interessiert, die könnte - bei anhaltender Eclipse~RCP-Ausrichtung - mit dem +Einsatz Scala erfolgen \cite{eclipse:scalabundle}\cite{eclipse:scalarcp}. + +\section{Technische Organisation des Projekts} +XXX +hier zum opensource, git svn migration. + +kurz xmlschema-doc als asciidoc. + +einschätzung ksm als opensource + +vorteile github +XXX + +\section{KSM als Open-Source Projekt} +Bereits zu Beginn der ersten Studienarbeit wurde die Veröffentlichung des KSM +Programm inklusive Quelltexte diskutiert. Zu diesem Zeitpunkt war man der +Auffasung, dass KSM/Swing technisch nicht in einem veröffentlichungswüdigen +Zustand ist und KSM/RCP existierte noch nicht als Prototyp. +Die Veröffentlichung von KSM/Swing wird wahrscheinlich nicht mehr in dieser +Studienarbeit geschehen. + +Unabhängig davon erscheint eine Veröffentlichung von KSM/RCP sinnvoll. Es darf +dabei jedoch nicht als klassisches Open-Source Projekt gesehen werden weil es +noch nicht produktiv verwendbar ist: +\begin{quote} +It's fairly clear that one cannot code from the ground up in bazaar style. +One can test, debug and improve in bazaar style, but it would be very hard to +originate a project in bazaar mode.\\ +\ldots Your nascent developer community needs to have something runnable and +testable to play with. +\flushright{\small Eric S. Raymond, ,,Necessary +Preconditions for the Bazaar Style'' \cite{cathedral}} +\end{quote} + +Die Veröffentlichung hat nicht die Absicht eine Entwicklergemeinde zu bilden, +sondern eine ,,stabile'' Heimat für KSM zu gründen. Wie in Studienarbeit 1 +visualisiert wurde \cite[S. 2]{fischer10} war die bisherige Entwicklung von KSM +eher chaotisch als zielstrebig. Dies lag vermutlich auch zum Teil daran, dass +beginnende Studenten kein sauberes Projekt vorfanden sondern auf ,,ein SVN'' was +\textit{irgendwo liegt} verwiesen wurden und dann gibts da noch so eine +\textit{CD-ROM}. Eine Übersicht über die vorhergehenden +Studienarbeiten-Ausarbeitungen gab es bis dahin ebenfalls nicht. + +Die Veröffentlichung - bzw. eine sauber strukturierte Ablage - ist ein Baustein +im Prozess der Zustand ändert. + +In Hinblick auf eine Open-Source Entwicklung wird das private und sich als +unzuverlässig herausgestellte Subversion-Repository gegen ein Git-Repository +getauscht. Die Wahl für Git begründet sich durch die starke Präsenz besonders in +Eclipse nahen Projekten und dadurch, dass bereits im Kurs Software-Engineering +mit Git gearbeitet wurde. Es wird die ebenfalls im Studium bereits verwendete +Platform \texttt{github.com} verwendet. + +Die Quellen des Eclipse basierten KSM/RCP werden unter dem Github +Organization-Account \textit{dhbw-horb} veröffentlicht bzw. hinterlegt werden. +Ebenso wird ein Verweis auf die KSM-Website hinterlegt. Zukünftige Entwickler +erhalten Zugriff, indem sie Mitglied dieses Organization-Account werden. + +Zwar wird der Quellcode veröffentlicht. Von Open-Source im Sinne der allgemeinen +Bedeutung ist allerdings nicht zu sprechen, da keine Open-Source Lizenzierung +vorgenommen wird die fremden Personen die Beteiligung erleichtern würde. + +%XXX +Da zur Drucklegung noch keine endgültige Entscheidung der Projektleitung +gefallen ist, ist das KSM/RCP-Repository bis auf weiteres \textit{private}, d.h. +es kann nur von Mitgliedern der \textit{dhbw-horb Organization} eingesehen werden. + + +% ergänzungen zu sa-1 +%link zu +%% java coding style +%% mockito dokumentation +%% avh vorlesung xmlschema + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Zusammenfassung und Ausblick}\label{chapter:ausblick} +% zukpnftige aufgaben +%% lizenzierung +%% programmieren der fehleenden komponetenten +%%% graph, table editor +%% Automatische GUI-Tests +%% Model mit EMF erstellen von KSM/Swing wegfällt + +%% graffiti statt GEF? + +%% trennung qksm/ksm/rcp sinnlos + +% model/xmlschema: fehlender factory support; einzelne listener vll. doch falsch + +% gef nach migration http://eclipse.org/graphiti/ + +%danksagung + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\cleardoublepage +\appendix +\addcontentsline{toc}{chapter}{Anhang} +\label{appendix} +\setcounter{section}{0} + + +\cleardoublepage +\addtocounter{section}{1} +\chapter*{Anhang \arabic{section}. \ Dokumentation Datenmodell} +\addcontentsline{toc}{section}{Anhang \arabic{section}. \ Dokumentation Datenmodell} +\label{chapter:doku-datamodel} +\includepdf[pages=2-, +pagecommand=, +scale=0.8, +offset=0 50,scale=1.12]{../ksmrcp/ksm-model/doc/KSM-Datamodel.pdf} + +\cleardoublepage +\addtocounter{section}{1} +\chapter*{Anhang \arabic{section}. \ Neues XML-Schema} +\addcontentsline{toc}{section}{Anhang \arabic{section}. \ Neues XML-Schema} +\label{appendix:schema} +\lstinputlisting[language=XML,basicstyle=\ttfamily\scriptsize, + label=listing:schema + ]{files/ksm-1.xsd} + + +\cleardoublepage +\addtocounter{section}{1} +\renewcommand{\listfigurename}{Anhang \arabic{section}. \ Abbildungsverzeichnis} +\addcontentsline{toc}{section}{\listfigurename} +\listoffigures + +%\cleardoublepage +%\addtocounter{section}{1} +%\renewcommand{\listtablename}{Anhang \arabic{section}. \ Tabellenverzeichnis} +%\addcontentsline{toc}{section}{\listtablename} +%\listoftables + +%\newpage +%\twocolumn +%\printglossary[toctitle={Glossar},title={Glossar}] +%\onecolumn + +\cleardoublepage +\addtocounter{section}{1} +\renewcommand{\bibname}{Anhang \arabic{section}. \ Literatur} +\addcontentsline{toc}{section}{\bibname} +\nocite{*} %alles ausgaben +\bibliography{document} +\end{document}
\ No newline at end of file diff --git a/files/example-1.xml b/files/example-1.xml new file mode 100644 index 0000000..e334856 --- /dev/null +++ b/files/example-1.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<ksm xmlns="http://hb.dhbw-stuttgart.de/~ksm/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://hb.dhbw-stuttgart.de/~ksm/1.0 ksm-1.0.xsd" + version="1.0"> + <nodegroup id="root"> + <node id="56-7567-567567-657657-567"> + <properties> + <string name="visual.caption">a node</string> + <string name="visual.color">#ffeecc</string> + <integer name="visual.pos_x">420</integer> + <integer name="visual.pos_y">420</integer> + </properties> + <connections /> + </node> + + <nodegroup id="0123123-123123-123123-123213"> + <node id="56-7567-12345-657657-567"> + <properties> + <string name="visual.color">#ffeecc</string> + <integer name="visual.pos_x">420</integer> + <integer name="visual.pos_y">420</integer> + </properties> + <connections> + <connection to="56-7567-567567-657657-567"> + <properties> + <string name="visual.caption">A Connection</string> + <string name="visual.color">#ffeecc</string> + <integer name="data.weight">5</integer> + </properties> + </connection> + </connections> + </node> + <properties> + <string name="visual.caption">a Hierarchy</string> + <string name="visual.color">#ffeecc</string> + <integer name="visual.pos_x">420</integer> + <integer name="visual.pos_y">420</integer> + </properties> + </nodegroup> + <properties /> + </nodegroup> +</ksm> diff --git a/files/ksm-1.xsd b/files/ksm-1.xsd new file mode 100644 index 0000000..d0d872b --- /dev/null +++ b/files/ksm-1.xsd @@ -0,0 +1,238 @@ +<?xml version="1.0" encoding="UTF-8"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ba-horb.de/~ksm/xml/ksm-1" + xmlns:tns="http://www.ba-horb.de/~ksm/xml/ksm-1" elementFormDefault="qualified" + xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="1.0"> + + <!-- Wurzelelement eines KSM Dokument --> + <element name="ksm"> + <complexType> + <annotation> + <appinfo> + <jxb:class name="XKSM" /> + </appinfo> + </annotation> + <sequence> + <element name="nodegroup" type="tns:NODEGROUP_TYPE" + minOccurs="1" maxOccurs="1"> + </element> + <element name="properties" type="tns:PROPERTIES_TYPE" + minOccurs="0" maxOccurs="1"></element> + </sequence> + <attribute name="version" type="string" use="required" /> + </complexType> + </element> + + <complexType name="PROPERTY_BASE_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XPropertyBase" /> + </appinfo> + </annotation> + <simpleContent> + <extension base="anySimpleType"> + <attribute name="name" use="required" /> + </extension> + </simpleContent> + </complexType> + + <complexType name="PROPERTY_STRING_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XPropertyString" /> + </appinfo> + </annotation> + <simpleContent> + <extension base="string"> + <attribute name="name" use="required" /> + </extension> + </simpleContent> + </complexType> + + <complexType name="PROPERTY_BOOLEAN_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XPropertyBoolean" /> + </appinfo> + </annotation> + <simpleContent> + <extension base="boolean"> + <attribute name="name" use="required" /> + </extension> + </simpleContent> + </complexType> + + <complexType name="PROPERTY_DECIMAL_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XPropertyDecimal" /> + </appinfo> + </annotation> + <simpleContent> + <extension base="decimal"> + <attribute name="name" use="required" /> + </extension> + </simpleContent> + </complexType> + + <complexType name="PROPERTY_INTEGER_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XPropertyInteger" /> + </appinfo> + </annotation> + <simpleContent> + <extension base="integer"> + <attribute name="name" use="required" /> + </extension> + </simpleContent> + </complexType> + + <complexType name="PROPERTY_LIST_BASE_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XPropertyBaseList" /> + </appinfo> + </annotation> + <sequence> + </sequence> + <attribute name="name" use="required"></attribute> + </complexType> + + <complexType name="PROPERTY_STRING_LIST_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XPropertyStringList" /> + </appinfo> + </annotation> + <complexContent> + <extension base="tns:PROPERTY_LIST_BASE_TYPE"> + <sequence> + <element name="value" type="string" minOccurs="0" + maxOccurs="unbounded" /> + </sequence> + </extension> + </complexContent> + </complexType> + + <complexType name="PROPERTY_DECIMAL_LIST_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XPropertyDecimalList" /> + </appinfo> + </annotation> + <complexContent> + <extension base="tns:PROPERTY_LIST_BASE_TYPE"> + <sequence> + <element name="value" type="decimal" minOccurs="0" + maxOccurs="unbounded" /> + </sequence> + </extension> + </complexContent> + </complexType> + <complexType name="PROPERTY_INTEGER_LIST_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XPropertyIntegerList" /> + </appinfo> + </annotation> + <complexContent> + <extension base="tns:PROPERTY_LIST_BASE_TYPE"> + <sequence> + <element name="value" type="integer" minOccurs="0" + maxOccurs="unbounded" /> + </sequence> + </extension> + </complexContent> + </complexType> + + <!-- EinelListe von Eigenschaften --> + <complexType name="PROPERTIES_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XProperties" /> + </appinfo> + </annotation> + <sequence> + <element name="string" type="tns:PROPERTY_STRING_TYPE" + minOccurs="0" maxOccurs="unbounded" /> + <element name="decimal" type="tns:PROPERTY_DECIMAL_TYPE" + minOccurs="0" maxOccurs="unbounded" /> + <element name="integer" type="tns:PROPERTY_INTEGER_TYPE" + minOccurs="0" maxOccurs="unbounded" /> + <element name="boolean" type="tns:PROPERTY_BOOLEAN_TYPE" + minOccurs="0" maxOccurs="unbounded" /> + <element name="stringList" type="tns:PROPERTY_STRING_LIST_TYPE" + minOccurs="0" maxOccurs="unbounded" /> + <element name="decimalList" type="tns:PROPERTY_DECIMAL_LIST_TYPE" + minOccurs="0" maxOccurs="unbounded" /> + <element name="integerList" type="tns:PROPERTY_INTEGER_LIST_TYPE" + minOccurs="0" maxOccurs="unbounded" /> + </sequence> + </complexType> + + <!-- KSM Node (Knoten), hat Eigenschaften, hat Verbindungen zu anderen Knoten --> + <complexType name="NODE_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XNode" /> + </appinfo> + </annotation> + <sequence> + <element name="properties" type="tns:PROPERTIES_TYPE" + minOccurs="1" maxOccurs="1" /> + <element name="connections" type="tns:CONNECTIONS_TYPE" + minOccurs="0" maxOccurs="1" /> + </sequence> + <attribute name="id" type="tns:NODE_ID_TYPE" use="required" /> + </complexType> + + <!-- Eine NodeGroup fasst mehrere Knoten zusammen, auch bekannt als Hirachien --> + <complexType name="NODEGROUP_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XNodeGroup" /> + </appinfo> + </annotation> + <sequence> + <element name="node" type="tns:NODE_TYPE" minOccurs="0" + maxOccurs="unbounded" /> + <element name="nodegroup" type="tns:NODEGROUP_TYPE" + minOccurs="0" maxOccurs="unbounded"></element> + <element name="properties" type="tns:PROPERTIES_TYPE" + minOccurs="1" maxOccurs="1" /> + </sequence> + <attribute name="id" type="tns:NODE_ID_TYPE" use="required" /> + </complexType> + + <!-- Connections. Eine Node eine beliebige Anzahl gerichteter Verbindungen + zu einer anderen Node haben --> + <complexType name="CONNECTIONS_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XConnections" /> + </appinfo> + </annotation> + <sequence> + <element name="connection" type="tns:CONNECTION_TYPE" + minOccurs="0" maxOccurs="unbounded" /> + </sequence> + </complexType> + + <!-- Eine gerichtete Verbindung zu einer anderen Node. --> + <complexType name="CONNECTION_TYPE"> + <annotation> + <appinfo> + <jxb:class name="XConnection" /> + </appinfo> + </annotation> + <sequence> + <element name="properties" type="tns:PROPERTIES_TYPE" + minOccurs="1" maxOccurs="1" /> + </sequence> + <attribute name="to" type="tns:NODE_ID_TYPE" /> + </complexType> + + <simpleType name="NODE_ID_TYPE"> + <restriction base="string"></restriction> + </simpleType> +</schema>
\ No newline at end of file diff --git a/files/ksm-example.xml b/files/ksm-example.xml new file mode 100644 index 0000000..d7c7f8c --- /dev/null +++ b/files/ksm-example.xml @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<KyberneticSystemModel> + <nodes> + <node> + <node_ID>0</node_ID> + <x_pos>469</x_pos> + <y_pos>423</y_pos> + <name>new_Node_0</name> + <comment /> + <allowModeration>false</allowModeration> + <moderationsteps>1</moderationsteps> + <Moderation>1.0</Moderation> + <adaptionRate>0.2</adaptionRate> + <Reaction>1.0</Reaction> + <moderationMethod>linear</moderationMethod> + <color>White</color> + <std_height>50</std_height> + <std_width>220</std_width> + <bShowProgressBar>true</bShowProgressBar> + <bCustomizeNodeTransparent>false</bCustomizeNodeTransparent> + <bCustomizeNodeBorder>true</bCustomizeNodeBorder> + <iTextVerticalFactor>33</iTextVerticalFactor> + <sIconPath /> + <scaleFct> + </scaleFct> + <belongsToHierarchy>0</belongsToHierarchy> + <hierarchyDepth>0</hierarchyDepth> + <useScaleFct>false</useScaleFct> + <inWeightEdges> + <inWeightEdge> + <tupel_value>0.0</tupel_value> + </inWeightEdge> + <inWeightEdge> + <tupel_value>1.0</tupel_value> + </inWeightEdge> + <inWeightEdge> + <tupel_value>0.0</tupel_value> + </inWeightEdge> + </inWeightEdges> + <UserValue> + <tupel_value>3.0</tupel_value> + </UserValue> + <MinValue> + <tupel_value>0.0</tupel_value> + </MinValue> + <MaxValue> + <tupel_value>5.0</tupel_value> + </MaxValue> + <extern> + <tupel_value>0.0</tupel_value> + </extern> + <scaleCoeffizient>1.0</scaleCoeffizient> + </node> + <node> + <node_ID>1</node_ID> + <x_pos>299</x_pos> + <y_pos>216</y_pos> + <name>new_Node_1</name> + ... + </node> + </nodes> + <arrows> + <arrow> + <start_node>1</start_node> + <end_node>0</end_node> + <start_pos>6</start_pos> + <end_pos>1</end_pos> + <bend_xpos>497</bend_xpos> + <bend_ypos>313</bend_ypos> + <saved>true</saved> + <funcType>gui.functions.FuncStraightLine</funcType> + <arrowfunction> + <m>1.0</m> + <b>0.0</b> + <position>0</position> + <FuncDraggingPoints> + <FuncDraggingPoint> + <moveHorz>false</moveHorz> + <moveVert>true</moveVert> + <first>true</first> + <last>false</last> + <funcPx>0.0</funcPx> + <funcPy>0.0</funcPy> + </FuncDraggingPoint> + <FuncDraggingPoint> + <moveHorz>false</moveHorz> + <moveVert>true</moveVert> + <first>false</first> + <last>true</last> + <funcPx>1.0</funcPx> + <funcPy>1.0</funcPy> + </FuncDraggingPoint> + </FuncDraggingPoints> + </arrowfunction> + </arrow> + <arrow> + <start_node>0</start_node> + <end_node>2</end_node> + <start_pos>3</start_pos> + <end_pos>8</end_pos> + <bend_xpos>674</bend_xpos> + <bend_ypos>388</bend_ypos> + <saved>true</saved> + <funcType>gui.functions.FuncStraightLine</funcType> + ... + </arrow> + </arrows> + <hierarchies /> +</KyberneticSystemModel>
\ No newline at end of file diff --git a/files/umlstuff.zargo b/files/umlstuff.zargo Binary files differnew file mode 100644 index 0000000..bebc024 --- /dev/null +++ b/files/umlstuff.zargo diff --git a/images/KSMHistorie.png b/images/KSMHistorie.png Binary files differnew file mode 100644 index 0000000..d81b36d --- /dev/null +++ b/images/KSMHistorie.png diff --git a/images/class-diagram-xmlschema.PNG b/images/class-diagram-xmlschema.PNG Binary files differnew file mode 100644 index 0000000..2944a9c --- /dev/null +++ b/images/class-diagram-xmlschema.PNG diff --git a/images/class-diagram-xmlschema.ucls b/images/class-diagram-xmlschema.ucls new file mode 100644 index 0000000..44d62fa --- /dev/null +++ b/images/class-diagram-xmlschema.ucls @@ -0,0 +1,60 @@ +<class-diagram version="1.0.1" icons="true" automaticImage="PNG" always-add-relationships="false" generalizations="true" + realizations="true" associations="true" dependencies="false" nesting-relationships="true"> + <interface id="1" corner="BOTTOM_RIGHT" language="java" name="de.dhbw.horb.ksm.xmlschema.api.KSM" + project="de.dhbw.horb.ksm.xmlschema" file="/de.dhbw.horb.ksm.xmlschema/src/de/dhbw/horb/ksm/xmlschema/api/KSM.java" + binary="false"> + <position x="412" y="93" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </interface> + <class id="2" corner="BOTTOM_RIGHT" language="java" name="de.dhbw.horb.ksm.xmlschema.impl.KSMImpl" + project="de.dhbw.horb.ksm.xmlschema" + file="/de.dhbw.horb.ksm.xmlschema/src/de/dhbw/horb/ksm/xmlschema/impl/KSMImpl.java" binary="false"> + <position x="415" y="319" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="true" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <class id="3" corner="BOTTOM_RIGHT" language="java" name="de.dhbw.horb.ksm.xmlschema.generated.XKSM" + project="de.dhbw.horb.ksm.xmlschema" + file="/de.dhbw.horb.ksm.xmlschema/src/de/dhbw/horb/ksm/xmlschema/generated/XKSM.java" binary="false"> + <position x="147" y="335" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <class id="6" corner="BOTTOM_RIGHT" language="java" name="de.dhbw.horb.ksm.xmlschema.impl.KSMFactory" + project="de.dhbw.horb.ksm.xmlschema" + file="/de.dhbw.horb.ksm.xmlschema/src/de/dhbw/horb/ksm/xmlschema/impl/KSMFactory.java" binary="false"> + <position x="117" y="94" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <dependency> + <end type="SOURCE" nodeId="6"/> + <end type="TARGET" nodeId="2"/> + </dependency> + <association> + <end type="SOURCE" nodeId="2" navigable="false"> + <attribute name="xksm"/> + <multiplicity minimum="0" maximum="1"/> + </end> + <end type="TARGET" nodeId="3" navigable="true"/> + <display labels="true" multiplicity="true"/> + </association> + <realization> + <end type="SOURCE" nodeId="2"/> + <end type="TARGET" nodeId="1"/> + </realization> + <classifier-display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </classifier-display> + <association-display labels="true" multiplicity="true"/> +</class-diagram>
\ No newline at end of file diff --git a/images/dhbwlogo.png b/images/dhbwlogo.png Binary files differnew file mode 100644 index 0000000..9179607 --- /dev/null +++ b/images/dhbwlogo.png diff --git a/images/eclipse-checkstyle.png b/images/eclipse-checkstyle.png Binary files differnew file mode 100644 index 0000000..8c7d6a4 --- /dev/null +++ b/images/eclipse-checkstyle.png diff --git a/images/eclipse-commonnavigator.jpg b/images/eclipse-commonnavigator.jpg Binary files differnew file mode 100644 index 0000000..36d3cbb --- /dev/null +++ b/images/eclipse-commonnavigator.jpg diff --git a/images/eclipse-connection-fanrouter.png b/images/eclipse-connection-fanrouter.png Binary files differnew file mode 100644 index 0000000..3c177d8 --- /dev/null +++ b/images/eclipse-connection-fanrouter.png diff --git a/images/eclipse-connection-manhattan.png b/images/eclipse-connection-manhattan.png Binary files differnew file mode 100644 index 0000000..84e4fe6 --- /dev/null +++ b/images/eclipse-connection-manhattan.png diff --git a/images/eclipse-extensions.jpg b/images/eclipse-extensions.jpg Binary files differnew file mode 100644 index 0000000..b6ef40a --- /dev/null +++ b/images/eclipse-extensions.jpg diff --git a/images/eclipse-gef-mvc.png b/images/eclipse-gef-mvc.png Binary files differnew file mode 100644 index 0000000..5a4c6c5 --- /dev/null +++ b/images/eclipse-gef-mvc.png diff --git a/images/eclipse-gef-node-connections.jpg b/images/eclipse-gef-node-connections.jpg Binary files differnew file mode 100644 index 0000000..5cba586 --- /dev/null +++ b/images/eclipse-gef-node-connections.jpg diff --git a/images/eclipse-gef-schema.png b/images/eclipse-gef-schema.png Binary files differnew file mode 100644 index 0000000..bb553af --- /dev/null +++ b/images/eclipse-gef-schema.png diff --git a/images/eclipse-gef-schema2.png b/images/eclipse-gef-schema2.png Binary files differnew file mode 100644 index 0000000..67a1ad5 --- /dev/null +++ b/images/eclipse-gef-schema2.png diff --git a/images/eclipse-gef-uebersicht.png b/images/eclipse-gef-uebersicht.png Binary files differnew file mode 100644 index 0000000..dfe06b2 --- /dev/null +++ b/images/eclipse-gef-uebersicht.png diff --git a/images/eclipse-gesamtschema.png b/images/eclipse-gesamtschema.png Binary files differnew file mode 100644 index 0000000..07d75d9 --- /dev/null +++ b/images/eclipse-gesamtschema.png diff --git a/images/eclipse-gesamtschema.svg b/images/eclipse-gesamtschema.svg new file mode 100644 index 0000000..a89832f --- /dev/null +++ b/images/eclipse-gesamtschema.svg @@ -0,0 +1,443 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="502.07141" + height="237.21431" + id="svg2" + version="1.1" + inkscape:version="0.47 r22583" + sodipodi:docname="eclipse-gesamtschema.svg" + inkscape:export-filename="/home/yvesf/vcs/sa/images/eclipse-gesamtschema.png" + inkscape:export-xdpi="199.94579" + inkscape:export-ydpi="199.94579"> + <defs + id="defs4"> + <pattern + inkscape:stockid="Wavy" + id="Wavy" + height="5.1805778" + width="30.066020" + patternUnits="userSpaceOnUse" + inkscape:collect="always"> + <path + id="path5418" + d="M 7.597,0.061 C 5.079,-0.187 2.656,0.302 -0.01,1.788 L -0.01,3.061 C 2.773,1.431 5.173,1.052 7.472,1.280 C 9.770,1.508 11.969,2.361 14.253,3.218 C 18.820,4.931 23.804,6.676 30.066,3.061 L 30.062,1.788 C 23.622,5.497 19.246,3.770 14.691,2.061 C 12.413,1.207 10.115,0.311 7.597,0.061 z " + style="fill:black;stroke:none;" /> + </pattern> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + <inkscape:perspective + id="perspective3609" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3640" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3707" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3707-3" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3753" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3800" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3831" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3862" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3893" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3924" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3971" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4002" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4046" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.4" + inkscape:cx="303.16439" + inkscape:cy="85.973173" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1436" + inkscape:window-height="864" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-50.928574,-226.8622)"> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2816" + width="500" + height="192.14287" + x="51.428574" + y="227.3622" + ry="5" /> + <g + id="g3596" + transform="translate(123.57143,-193.78569)"> + <rect + y="428.79074" + x="310.53445" + height="38.57143" + width="97.857162" + id="rect3590" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + id="text3592" + y="456.81277" + x="358.70132" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="456.81277" + x="358.70132" + id="tspan3594" + sodipodi:role="line">JDT</tspan></text> + </g> + <g + id="g3596-1" + transform="translate(-259.46303,-3.7856802)"> + <rect + y="428.79074" + x="311.24875" + height="38.571442" + width="500.71426" + id="rect3590-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + id="text3592-4" + y="456.81277" + x="512.98706" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="456.81277" + x="512.98706" + id="tspan3594-7" + sodipodi:role="line">OSGi/Equinox</tspan></text> + </g> + <g + id="g3596-8" + transform="translate(-105.32019,-117.14285)"> + <rect + y="397.92416" + x="163.3916" + height="132.29514" + width="257.14288" + id="rect3590-4" + style="opacity:0.06583072;fill:url(#Wavy);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + ry="5" /> + <text + id="text3592-5" + y="419.85812" + x="195.35397" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="419.85812" + x="195.35397" + id="tspan3594-0" + sodipodi:role="line" + style="font-style:italic;-inkscape-font-specification:'1942 report Italic'">RCP</tspan></text> + </g> + <g + id="g3596-3" + transform="translate(11.202779,-145.92854)"> + <rect + y="428.79074" + x="310.53445" + height="38.57143" + width="97.857162" + id="rect3590-6" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + id="text3592-1" + y="456.81277" + x="358.70132" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="456.81277" + x="358.70132" + id="tspan3594-06" + sodipodi:role="line">Help</tspan></text> + </g> + <g + id="g3596-2" + transform="translate(123.17403,-145.92854)"> + <rect + y="428.79074" + x="310.53445" + height="38.57143" + width="97.857162" + id="rect3590-0" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + id="text3592-6" + y="456.81277" + x="358.70132" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="456.81277" + x="358.70132" + id="tspan3594-1" + sodipodi:role="line">Team</tspan></text> + </g> + <g + id="g3596-2-5" + transform="translate(10.036971,-98.785676)"> + <rect + y="428.79074" + x="342.35425" + height="38.571442" + width="179.17442" + id="rect3590-0-5" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + id="text3592-6-4" + y="456.81277" + x="431.54303" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="456.81277" + x="431.54303" + id="tspan3594-1-7" + sodipodi:role="line">IDE</tspan></text> + </g> + <g + id="g3596-2-5-6" + transform="translate(10.036971,-54.256362)"> + <rect + y="428.79074" + x="342.35425" + height="38.571442" + width="179.17442" + id="rect3590-0-5-5" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + id="text3592-6-4-6" + y="456.81277" + x="431.54303" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="456.81277" + x="431.54303" + id="tspan3594-1-7-9" + sodipodi:role="line">Ressourcen</tspan></text> + </g> + <g + id="g3596-37" + transform="translate(11.202779,-193.78569)"> + <rect + y="428.79074" + x="310.53445" + height="38.57143" + width="97.857162" + id="rect3590-45" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + id="text3592-2" + y="456.81277" + x="358.70132" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="456.81277" + x="358.70132" + id="tspan3594-5" + sodipodi:role="line">Search</tspan></text> + </g> + <rect + style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;fill-opacity:1" + id="rect3590-7" + width="97.857162" + height="38.57143" + x="68.428566" + y="362.14792" /> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="116.59544" + y="390.16995" + id="text3592-44"><tspan + sodipodi:role="line" + id="tspan3594-3" + x="116.59544" + y="390.16995">SWT</tspan></text> + <g + id="g3596-37-0" + transform="translate(-211.3916,-193.78569)"> + <rect + y="428.79074" + x="310.53445" + height="38.57143" + width="97.857162" + id="rect3590-45-7" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + id="text3592-2-8" + y="456.81277" + x="358.70132" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="456.81277" + x="358.70132" + id="tspan3594-5-6" + sodipodi:role="line">...</tspan></text> + </g> + <rect + style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;fill-opacity:1" + id="rect3590-45-8" + width="97.857162" + height="38.57143" + x="196.28572" + y="362.14792" /> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="244.45259" + y="390.16995" + id="text3592-2-4"><tspan + sodipodi:role="line" + id="tspan3594-5-3" + x="244.45259" + y="390.16995">JFace</tspan></text> + <rect + style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;fill-opacity:1" + id="rect3590-0-5-0" + width="179.17442" + height="38.571442" + x="91.341362" + y="307.86218" /> + <g + id="g3596-37-0-6" + transform="translate(-101.16583,-193.78569)"> + <rect + y="428.79074" + x="310.53445" + height="38.57143" + width="97.857162" + id="rect3590-45-7-8" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + id="text3592-2-8-9" + y="456.81277" + x="358.70132" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="456.81277" + x="358.70132" + id="tspan3594-5-6-2" + sodipodi:role="line">Update</tspan></text> + </g> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="180.16687" + y="336.59851" + id="text3592-2-9"><tspan + sodipodi:role="line" + id="tspan3594-5-2" + x="180.16687" + y="336.59851">UI/Workbench</tspan></text> + </g> +</svg> diff --git a/images/eclipse-outline.png b/images/eclipse-outline.png Binary files differnew file mode 100644 index 0000000..02827b2 --- /dev/null +++ b/images/eclipse-outline.png diff --git a/images/eclipse-plugin-extensions.png b/images/eclipse-plugin-extensions.png Binary files differnew file mode 100644 index 0000000..21505a4 --- /dev/null +++ b/images/eclipse-plugin-extensions.png diff --git a/images/eclipse-plugins.png b/images/eclipse-plugins.png Binary files differnew file mode 100644 index 0000000..14bb9c7 --- /dev/null +++ b/images/eclipse-plugins.png diff --git a/images/eclipse-property-declaration-extensionpoint.jpg b/images/eclipse-property-declaration-extensionpoint.jpg Binary files differnew file mode 100644 index 0000000..c9be88d --- /dev/null +++ b/images/eclipse-property-declaration-extensionpoint.jpg diff --git a/images/eclipse-property-usage-extensionpoint.jpg b/images/eclipse-property-usage-extensionpoint.jpg Binary files differnew file mode 100644 index 0000000..feb572c --- /dev/null +++ b/images/eclipse-property-usage-extensionpoint.jpg diff --git a/images/eclipse-simulator.jpg b/images/eclipse-simulator.jpg Binary files differnew file mode 100644 index 0000000..f79590f --- /dev/null +++ b/images/eclipse-simulator.jpg diff --git a/images/eclipse-target.jpg b/images/eclipse-target.jpg Binary files differnew file mode 100644 index 0000000..c7991fc --- /dev/null +++ b/images/eclipse-target.jpg diff --git a/images/eclipse-workbench-high-level.png b/images/eclipse-workbench-high-level.png Binary files differnew file mode 100644 index 0000000..32bafec --- /dev/null +++ b/images/eclipse-workbench-high-level.png diff --git a/images/eclipse-workbenchscreen.png b/images/eclipse-workbenchscreen.png Binary files differnew file mode 100644 index 0000000..4084e4d --- /dev/null +++ b/images/eclipse-workbenchscreen.png diff --git a/images/eclipse-workbenchscreen.screen b/images/eclipse-workbenchscreen.screen new file mode 100644 index 0000000..c99ff38 --- /dev/null +++ b/images/eclipse-workbenchscreen.screen @@ -0,0 +1,209 @@ +<?xml version="1.0" encoding="UTF-8"?> +<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore"> + <widgets xsi:type="model:Window" x="25" y="25" width="816" height="578" text="Java - org.eclipse.draw2d.geometry.Rectangle - Eclipse" measuredWidth="816" measuredHeight="578"/> + <widgets xsi:type="model:Menu" x="25" y="44" width="803" text="File,Edit,Source,Refactor,Navigate,Search,Project,Run,Window,Help" measuredWidth="803" measuredHeight="30"> + <items x="5" y="0" width="30" height="30" text="File"/> + <items x="35" y="0" width="34" height="30" text="Edit"/> + <items x="69" y="0" width="55" height="30" text="Source"/> + <items x="124" y="0" width="62" height="30" text="Refactor"/> + <items x="186" y="0" width="67" height="30" text="Navigate"/> + <items x="253" y="0" width="55" height="30" text="Search"/> + <items x="308" y="0" width="54" height="30" text="Project"/> + <items x="362" y="0" width="33" height="30" text="Run"/> + <items x="395" y="0" width="57" height="30" text="Window"/> + <items x="452" y="0" width="39" height="30" text="Help"/> + </widgets> + <widgets xsi:type="model:VLine" x="29" y="74" height="26" measuredWidth="6" measuredHeight="26"/> + <widgets xsi:type="model:VLine" x="169" y="74" height="26" measuredWidth="6" measuredHeight="26"/> + <widgets xsi:type="model:VLine" x="239" y="74" height="26" measuredWidth="6" measuredHeight="26"/> + <widgets xsi:type="model:VLine" x="361" y="74" height="26" measuredWidth="6" measuredHeight="26"/> + <widgets xsi:type="model:VLine" x="473" y="74" height="26" measuredWidth="6" measuredHeight="26"/> + <widgets xsi:type="model:VLine" x="569" y="74" height="26" measuredWidth="6" measuredHeight="26"/> + <widgets xsi:type="model:Icon" x="255" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="271" y="80" measuredWidth="16" measuredHeight="16" icon="empty-arrow-down (small)"/> + <widgets xsi:type="model:Icon" x="289" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="315" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="341" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="585" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="601" y="80" measuredWidth="16" measuredHeight="16" icon="empty-arrow-down (small)"/> + <widgets xsi:type="model:Icon" x="619" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="635" y="80" measuredWidth="16" measuredHeight="16" icon="empty-arrow-down (small)"/> + <widgets xsi:type="model:Icon" x="45" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="71" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="97" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="123" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="149" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="377" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="393" y="80" measuredWidth="16" measuredHeight="16" icon="empty-arrow-down (small)"/> + <widgets xsi:type="model:Icon" x="411" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="427" y="80" measuredWidth="16" measuredHeight="16" icon="empty-arrow-down (small)"/> + <widgets xsi:type="model:Icon" x="445" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="461" y="80" measuredWidth="16" measuredHeight="16" icon="empty-arrow-down (small)"/> + <widgets xsi:type="model:Icon" x="489" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="515" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="541" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="557" y="80" measuredWidth="16" measuredHeight="16" icon="empty-arrow-down (small)"/> + <widgets xsi:type="model:Icon" x="185" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="211" y="80" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="227" y="80" measuredWidth="16" measuredHeight="16" icon="empty-arrow-down (small)"/> + <widgets xsi:type="model:HLine" x="313" y="573" width="2" measuredWidth="2" measuredHeight="6"/> + <widgets xsi:type="model:Label" x="318" y="573" text="Read-Only" measuredWidth="69" measuredHeight="25"> + <font/> + </widgets> + <widgets xsi:type="model:HLine" x="432" y="573" width="2" measuredWidth="2" measuredHeight="6"/> + <widgets xsi:type="model:Label" x="437" y="573" text="Smart Insert" measuredWidth="85" measuredHeight="25"> + <font/> + </widgets> + <widgets xsi:type="model:HLine" x="544" y="573" width="2" measuredWidth="2" measuredHeight="6"/> + <widgets xsi:type="model:Label" x="549" y="573" text="41 : 8" measuredWidth="41" measuredHeight="25"> + <font/> + </widgets> + <widgets xsi:type="model:Icon" x="45" y="579" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="69" y="142" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="95" y="142" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:VLine" x="115" y="136" height="26" measuredWidth="6" measuredHeight="26"/> + <widgets xsi:type="model:Icon" x="127" y="142" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Tree" x="34" y="164" width="135" height="404" text="fakessh
fakessh2
ksm
ksmrcp
ksm-trunk
playground1
quercustest
rcpapp
zs
" measuredWidth="135" measuredHeight="404" verticalScrollbar="true"> + <items x="0" y="5" width="118" height="23" text="fakessh"/> + <items x="0" y="28" width="118" height="23" text="fakessh2"/> + <items x="0" y="51" width="118" height="23" text="ksm"/> + <items x="0" y="74" width="118" height="23" text="ksmrcp"/> + <items x="0" y="97" width="118" height="23" text="ksm-trunk"/> + <items x="0" y="120" width="118" height="23" text="playground1"/> + <items x="0" y="143" width="118" height="23" text="quercustest"/> + <items x="0" y="166" width="118" height="23" text="rcpapp"/> + <items x="0" y="189" width="118" height="23" text="zs"/> + </widgets> + <widgets xsi:type="model:Icon" x="680" y="141" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="706" y="141" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="732" y="141" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="758" y="141" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Icon" x="784" y="141" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:Tree" x="675" y="161" width="153" height="263" text="Rectangle
-serialVersionUID : long
-SINGLETON : Rectangle
-height : int
-width : int
-x : int
-y : int
-Rectangle()
-Rectangle(int, int, int, int)
-Rectangle(Point, Dimension)
-Rectangle(Point, Point)
-Rectangle(Rectangle)
-Rectangle(Rectangle)
-bottom() : int
-contains(int, int) : boolean
-contains(Point) : boolean
-contains(Rectangle) : boolean
-crop(Insets) : Rectangle
-equals(Object) : boolean
-expand(int, int) : Rectangle
-expand(Insets) : Rectangle
-getBottom() : Point
-getBottomLeft() : Point
-getBottomRight() : Point
-getCenter() : Point
-getCopy() : Rectangle
-getCropped(Insets) : Rectangle
-getExpanded(int, int) : Rectangle
-getExpanded(Insets) : Rectangle
-getIntersection(Rectangle) : Rectangle
-getLeft() : Point
-getLocation() : Point
-getPosition(Point) : int
-getResized(int, int) : Rectangle
-getResized(Dimension) : Rectangle
-getRight() : Point
-getSize() : Dimension
-getTop() : Point
-getTopLeft() : Point
-getTopRight() : Point
-getTranslated(int, int) : Rectangle
-getTranslated(Point) : Rectangle
-getTransposed() : Rectangle
-getUnion(Rectangle) : Rectangle
-hashCode() : int
-intersect(Rectangle) : Rectangle
-intersects(Rectangle) : boolean
-isEmpty() : boolean
-performScale(double) : void
-performTranslate(int, int) : void
-preciseHeight() : double
-preciseWidth() : double
-preciseX() : double
-preciseY() : double
-resize(int, int) : Rectangle
-resize(Dimension) : Rectangle
-right() : int
-scale(double) : Rectangle
-scale(double, double) : Rectangle
-setBounds(Rectangle) : Rectangle
-setLocation(int, int) : Rectangle
-setLocation(Point) : Rectangle
-setSize(int, int) : Rectangle
-setSize(Dimension) : Rectangle
-shrink(int, int) : Rectangle
-toString() : String
-touches(Rectangle) : boolean
-translate(int, int) : Rectangle
-translate(Point) : Rectangle
-transpose() : Rectangle
-union(int, int) : Rectangle
-union(int, int, int, int) : Rectangle
-union(Dimension) : Rectangle
-union(Point) : void
-union(Rectangle) : Rectangle
" measuredWidth="153" measuredHeight="263" verticalScrollbar="true"> + <items x="0" y="5" width="136" height="23" text="Rectangle"/> + <items x="0" y="28" width="136" height="23" text="-serialVersionUID : long"/> + <items x="0" y="51" width="136" height="23" text="-SINGLETON : Rectangle"/> + <items x="0" y="74" width="136" height="23" text="-height : int"/> + <items x="0" y="97" width="136" height="23" text="-width : int"/> + <items x="0" y="120" width="136" height="23" text="-x : int"/> + <items x="0" y="143" width="136" height="23" text="-y : int"/> + <items x="0" y="166" width="136" height="23" text="-Rectangle()"/> + <items x="0" y="189" width="136" height="23" text="-Rectangle(int, int, int, int)"/> + <items x="0" y="212" width="136" height="23" text="-Rectangle(Point, Dimension)"/> + <items x="0" y="235" width="136" height="23" text="-Rectangle(Point, Point)"/> + <items x="0" y="258" width="136" height="23" text="-Rectangle(Rectangle)"/> + <items x="0" y="281" width="136" height="23" text="-Rectangle(Rectangle)"/> + <items x="0" y="304" width="136" height="23" text="-bottom() : int"/> + <items x="0" y="327" width="136" height="23" text="-contains(int, int) : boolean"/> + <items x="0" y="350" width="136" height="23" text="-contains(Point) : boolean"/> + <items x="0" y="373" width="136" height="23" text="-contains(Rectangle) : boolean"/> + <items x="0" y="396" width="136" height="23" text="-crop(Insets) : Rectangle"/> + <items x="0" y="419" width="136" height="23" text="-equals(Object) : boolean"/> + <items x="0" y="442" width="136" height="23" text="-expand(int, int) : Rectangle"/> + <items x="0" y="465" width="136" height="23" text="-expand(Insets) : Rectangle"/> + <items x="0" y="488" width="136" height="23" text="-getBottom() : Point"/> + <items x="0" y="511" width="136" height="23" text="-getBottomLeft() : Point"/> + <items x="0" y="534" width="136" height="23" text="-getBottomRight() : Point"/> + <items x="0" y="557" width="136" height="23" text="-getCenter() : Point"/> + <items x="0" y="580" width="136" height="23" text="-getCopy() : Rectangle"/> + <items x="0" y="603" width="136" height="23" text="-getCropped(Insets) : Rectangle"/> + <items x="0" y="626" width="136" height="23" text="-getExpanded(int, int) : Rectangle"/> + <items x="0" y="649" width="136" height="23" text="-getExpanded(Insets) : Rectangle"/> + <items x="0" y="672" width="136" height="23" text="-getIntersection(Rectangle) : Rectangle"/> + <items x="0" y="695" width="136" height="23" text="-getLeft() : Point"/> + <items x="0" y="718" width="136" height="23" text="-getLocation() : Point"/> + <items x="0" y="741" width="136" height="23" text="-getPosition(Point) : int"/> + <items x="0" y="764" width="136" height="23" text="-getResized(int, int) : Rectangle"/> + <items x="0" y="787" width="136" height="23" text="-getResized(Dimension) : Rectangle"/> + <items x="0" y="810" width="136" height="23" text="-getRight() : Point"/> + <items x="0" y="833" width="136" height="23" text="-getSize() : Dimension"/> + <items x="0" y="856" width="136" height="23" text="-getTop() : Point"/> + <items x="0" y="879" width="136" height="23" text="-getTopLeft() : Point"/> + <items x="0" y="902" width="136" height="23" text="-getTopRight() : Point"/> + <items x="0" y="925" width="136" height="23" text="-getTranslated(int, int) : Rectangle"/> + <items x="0" y="948" width="136" height="23" text="-getTranslated(Point) : Rectangle"/> + <items x="0" y="971" width="136" height="23" text="-getTransposed() : Rectangle"/> + <items x="0" y="994" width="136" height="23" text="-getUnion(Rectangle) : Rectangle"/> + <items x="0" y="1017" width="136" height="23" text="-hashCode() : int"/> + <items x="0" y="1040" width="136" height="23" text="-intersect(Rectangle) : Rectangle"/> + <items x="0" y="1063" width="136" height="23" text="-intersects(Rectangle) : boolean"/> + <items x="0" y="1086" width="136" height="23" text="-isEmpty() : boolean"/> + <items x="0" y="1109" width="136" height="23" text="-performScale(double) : void"/> + <items x="0" y="1132" width="136" height="23" text="-performTranslate(int, int) : void"/> + <items x="0" y="1155" width="136" height="23" text="-preciseHeight() : double"/> + <items x="0" y="1178" width="136" height="23" text="-preciseWidth() : double"/> + <items x="0" y="1201" width="136" height="23" text="-preciseX() : double"/> + <items x="0" y="1224" width="136" height="23" text="-preciseY() : double"/> + <items x="0" y="1247" width="136" height="23" text="-resize(int, int) : Rectangle"/> + <items x="0" y="1270" width="136" height="23" text="-resize(Dimension) : Rectangle"/> + <items x="0" y="1293" width="136" height="23" text="-right() : int"/> + <items x="0" y="1316" width="136" height="23" text="-scale(double) : Rectangle"/> + <items x="0" y="1339" width="136" height="23" text="-scale(double, double) : Rectangle"/> + <items x="0" y="1362" width="136" height="23" text="-setBounds(Rectangle) : Rectangle"/> + <items x="0" y="1385" width="136" height="23" text="-setLocation(int, int) : Rectangle"/> + <items x="0" y="1408" width="136" height="23" text="-setLocation(Point) : Rectangle"/> + <items x="0" y="1431" width="136" height="23" text="-setSize(int, int) : Rectangle"/> + <items x="0" y="1454" width="136" height="23" text="-setSize(Dimension) : Rectangle"/> + <items x="0" y="1477" width="136" height="23" text="-shrink(int, int) : Rectangle"/> + <items x="0" y="1500" width="136" height="23" text="-toString() : String"/> + <items x="0" y="1523" width="136" height="23" text="-touches(Rectangle) : boolean"/> + <items x="0" y="1546" width="136" height="23" text="-translate(int, int) : Rectangle"/> + <items x="0" y="1569" width="136" height="23" text="-translate(Point) : Rectangle"/> + <items x="0" y="1592" width="136" height="23" text="-transpose() : Rectangle"/> + <items x="0" y="1615" width="136" height="23" text="-union(int, int) : Rectangle"/> + <items x="0" y="1638" width="136" height="23" text="-union(int, int, int, int) : Rectangle"/> + <items x="0" y="1661" width="136" height="23" text="-union(Dimension) : Rectangle"/> + <items x="0" y="1684" width="136" height="23" text="-union(Point) : void"/> + <items x="0" y="1707" width="136" height="23" text="-union(Rectangle) : Rectangle"/> + </widgets> + <widgets xsi:type="model:TextArea" x="185" y="136" width="476" height="288" text=" * Copyright (c) 2000, 2010 IBM Corporation and others.
package org.eclipse.draw2d.geometry;

import org.eclipse.draw2d.PositionConstants;

public class Rectangle
 implements 
Cloneable, java.io.Serializable,
 Translatable {
	/** the X value */
	public int x;
	/** the Y value */
	public int y;
	/** the width */
	public int width;
	/** the height */
	public int height;

	/**
	 * A singleton for use in short calculations. Use to avoid newing
	 * unnecessary objects.
	 */
	public static final Rectangle SINGLETON = new Rectangle();

	static final long serialVersionUID = 1;

	/**
	 * Constructs a Rectangle at the origin with zero width and height.
	 * 
	 * @since 2.0
	 */
	public Rectangle() {
	}

	/**
	 * Constructs a Rectangle given a location and size.
	 * 
	 * @param p
	 * the location
	 * @param size
	 * the size
	 * @since 2.0
	 */
	public Rectangle(Point p, Dimension size) {
		this(p.x, p.y, size.width, size.height);
	}

	/**
	 * Constructs a copy of the provided Rectangle.
	 * 
	 * @param rect
	 * Rectangle supplying the initial values
	 * @since 2.0
	 */
	public Rectangle(Rectangle rect) {
		this(rect.x, rect.y, rect.width, rect.height);
	}

	/**
	 * Constructs a copy of the provided SWT
	 * {@link org.eclipse.swt.graphics.Rectangle}.
	 * 
	 * @param rect
	 * The SWT Rectangle being copied
	 * @since 2.0
	 */
	public Rectangle(org.eclipse.swt.graphics.Rectangle rect) {
		this(rect.x, rect.y, rect.width, rect.height);
	}

	/**
	 * Constructs a Rectangle with the provided values.
	 * 
	 * @param x
	 * X location
	 * @param y
	 * Y location
	 * @param width
	 * Width of the rectangle
	 * @param height
	 * Height of the rectangle
	 * @since 2.0
	 */
	public Rectangle(int x, int y, int width, int height) {
		this.x = x;
		this.y = y;
		this.width = width;
		this.height = height;
	}

	/**
	 * Constructs the smallest Rectangle that contains the specified Points.
	 * 
	 * @param p1
	 * Upper left hand corner
	 * @param p2
	 * Lower right hand corner
	 * @since 2.0
	 */
	public Rectangle(Point p1, Point p2) {
		this.x = Math.min(p1.x, p2.x);
		this.y = Math.min(p1.y, p2.y);
		this.width = Math.abs(p2.x - p1.x) + 1;
		this.height = Math.abs(p2.y - p1.y) + 1;
	}

	/**
	 * Returns the y-coordinate of the bottom of this Rectangle.
	 * 
	 * @return The Y coordinate of the bottom
	 * @since 2.0
	 */
	public int bottom() {
		return y + height;
	}

	/**
	 * Returns whether the given point is within the boundaries of this
	 * Rectangle. The boundaries are inclusive of the top and left edges, but
	 * exclusive of the bottom and right edges.
	 * 
	 * @param pt
	 * Point being tested for containment
	 * @return true if the Point is within this Rectangle
	 * @since 2.0
	 */
	public boolean contains(Point pt) {
		return contains(pt.x, pt.y);
	}

	/**
	 * Returns <code>true</code> if the given rectangle is contained within the
	 * boundaries of this Rectangle.
	 * 
	 * @param rect
	 * the Rectangle to test
	 * @return true if the Rectangle is within this Rectangle
	 */
	public boolean contains(Rectangle rect) {
		return x <= rect.x && y <= rect.y && right() >= rect.right()
				&& bottom() >= rect.bottom();
	}

	/**
	 * Returns whether the given coordinates are within the boundaries of this
	 * Rectangle. The boundaries are inclusive of the top and left edges, but
	 * exclusive of the bottom and right edges.
	 * 
	 * @param x
	 * X value
	 * @param y
	 * Y value
	 * @return true if the coordinates are within this Rectangle
	 * @since 2.0
	 */
	public boolean contains(int x, int y) {
		return y >= this.y && y < this.y + this.height && x >= this.x
				&& x < this.x + this.width;
	}

	/**
	 * Crops this rectangle by the amount specified in <code>insets</code>.
	 * 
	 * @param insets
	 * Insets to be removed from the Rectangle
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle crop(Insets insets) {
		if (insets == null)
			return this;
		x += insets.left;
		y += insets.top;
		width -= (insets.getWidth());
		height -= (insets.getHeight());
		return this;
	}

	/**
	 * Returns whether the input object is equal to this Rectangle or not.
	 * Rectangles are equivalent if their x, y, height, and width values are the
	 * same.
	 * 
	 * @param o
	 * Object being tested for equality
	 * @return Returns the result of the equality test
	 * @since 2.0
	 */
	public boolean equals(Object o) {
		if (this == o)
			return true;
		if (o instanceof Rectangle) {
			Rectangle r = (Rectangle) o;
			return (x == r.x) && (y == r.y) && (width == r.width)
					&& (height == r.height);
		}
		return false;
	}

	/**
	 * Expands the horizontal and vertical sides of this Rectangle with the
	 * values provided as input, and returns this for convenience. The location
	 * of its center is kept constant.
	 * 
	 * @param h
	 * Horizontal increment
	 * @param v
	 * Vertical increment
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle expand(int h, int v) {
		return shrink(-h, -v);
	}

	/**
	 * Expands the horizontal and vertical sides of this Rectangle by the width
	 * and height of the given Insets, and returns this for convenience.
	 * 
	 * @param insets
	 * contains the amounts to expand on each side
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle expand(Insets insets) {
		x -= insets.left;
		y -= insets.top;
		height += insets.getHeight();
		width += insets.getWidth();
		return this;
	}

	/**
	 * Returns a new Point representing the middle point of the bottom side of
	 * this Rectangle.
	 * 
	 * @return Point at the bottom of the Rectangle
	 * @since 2.0
	 */
	public Point getBottom() {
		return new Point(x + width / 2, bottom());
	}

	/**
	 * Returns a new Point representing the bottom left point of this Rectangle.
	 * 
	 * @return Point at the bottom left of the rectangle
	 * @since 2.0
	 */
	public Point getBottomLeft() {
		return new Point(x, y + height);
	}

	/**
	 * Returns a new Point representing the bottom right point of this
	 * Rectangle.
	 * 
	 * @return Point at the bottom right of the rectangle
	 * @since 2.0
	 */
	public Point getBottomRight() {
		return new Point(x + width, y + height);
	}

	/**
	 * Returns a new point representing the center of this Rectangle.
	 * 
	 * @return Point at the center of the rectangle
	 */
	public Point getCenter() {
		return new Point(x + width / 2, y + height / 2);
	}

	/**
	 * Returns a new Rectangle which has the exact same parameters as this
	 * Rectangle.
	 * 
	 * @return Copy of this Rectangle
	 * @since 2.0
	 */
	public Rectangle getCopy() {

		if (getClass() == Rectangle.class) {
			/* avoid clone() call cost see bug #260740 */
			return new Rectangle(this);
		} else {
			try {
				return (Rectangle) clone();
			} catch (CloneNotSupportedException exc) {
				return new Rectangle(this);
			}
		}
	}

	/**
	 * Returns a new Rectangle with the specified insets cropped.
	 * 
	 * @param insets
	 * Insets being cropped from the Rectangle
	 * @return Cropped new Rectangle
	 */
	public Rectangle getCropped(Insets insets) {
		Rectangle r = new Rectangle(this);
		r.crop(insets);
		return r;
	}

	/**
	 * Returns a new incremented Rectangle, where the sides are expanded by the
	 * horizonatal and vertical values provided. The center of the Rectangle is
	 * maintained constant.
	 * 
	 * @param h
	 * Horizontal increment
	 * @param v
	 * Vertical inrement
	 * @return A new expanded Rectangle
	 * @since 2.0
	 */
	public Rectangle getExpanded(int h, int v) {
		return new Rectangle(this).expand(h, v);
	}

	/**
	 * Creates and returns a new Rectangle with the bounds of <code>this</code>
	 * Rectangle, expanded by the given Insets.
	 * 
	 * @param insets
	 * The insets used to expand this rectangle
	 * @return A new expanded Rectangle
	 * @since 2.0
	 */
	public Rectangle getExpanded(Insets insets) {
		return new Rectangle(this).expand(insets);
	}

	/**
	 * Returns a new Rectangle which has the intersection of this Rectangle and
	 * the rectangle provided as input. Returns an empty Rectangle if there is
	 * no interection.
	 * 
	 * @param rect
	 * Rectangle provided to test for intersection
	 * @return A new Rectangle representing the intersection
	 * @since 2.0
	 */
	public Rectangle getIntersection(Rectangle rect) {
		int x1 = Math.max(x, rect.x);
		int x2 = Math.min(x + width, rect.x + rect.width);
		int y1 = Math.max(y, rect.y);
		int y2 = Math.min(y + height, rect.y + rect.height);
		if (((x2 - x1) < 0) || ((y2 - y1) < 0))
			return new Rectangle(0, 0, 0, 0); // No intersection
		else
			return new Rectangle(x1, y1, x2 - x1, y2 - y1);
	}

	/**
	 * Returns a new Point representing the middle point of the left hand side
	 * of this Rectangle.
	 * 
	 * @return Point at the left of the Rectangle
	 */
	public Point getLeft() {
		return new Point(x, y + height / 2);
	}

	/**
	 * Returns the upper left hand corner of the rectangle.
	 * 
	 * @return Location of the rectangle
	 * @see #setLocation(Point)
	 */
	public Point getLocation() {
		return new Point(x, y);
	}

	/**
	 * <P>
	 * Returns an integer which represents the position of the given point with
	 * respect to this rectangle. Possible return values are bitwise ORs of the
	 * constants WEST, EAST, NORTH, and SOUTH as found in
	 * {@link org.eclipse.draw2d.PositionConstants}.
	 * 
	 * <P>
	 * Returns PositionConstant.NONE if the given point is inside this
	 * Rectangle.
	 * 
	 * @param pt
	 * The Point whose position has to be determined
	 * @return An <code>int</code> which is a PositionConstant
	 * @see org.eclipse.draw2d.PositionConstants
	 * @since 2.0
	 */
	public int getPosition(Point pt) {
		int result = PositionConstants.NONE;

		if (contains(pt))
			return result;

		if (pt.x < x)
			result = PositionConstants.WEST;
		else if (pt.x >= (x + width))
			result = PositionConstants.EAST;

		if (pt.y < y)
			result = result | PositionConstants.NORTH;
		else if (pt.y >= (y + height))
			result = result | PositionConstants.SOUTH;

		return result;
	}

	/**
	 * Returns a new Rectangle which is equivalent to this Rectangle with its
	 * dimensions modified by the passed width <i>w</i> and height <i>h</i>.
	 * 
	 * @param w
	 * Amount by which width is to be resized
	 * @param h
	 * Amount by which height is to be resized
	 * @return a new rectangle with its width and height modified
	 */
	public Rectangle getResized(int w, int h) {
		return new Rectangle(this).resize(w, h);
	}

	/**
	 * Returns a new Rectangle which is equivalent to this Rectangle with its
	 * dimensions modified by the passed Dimension <i>d</i>.
	 * 
	 * @param d
	 * Dimensions by which the rectangle's size should be modified
	 * @return The new rectangle with the modified dimensions
	 * @since 2.0
	 */
	public Rectangle getResized(Dimension d) {
		return new Rectangle(this).resize(d);
	}

	/**
	 * Returns a new Point which represents the middle point of the right hand
	 * side of this Rectangle.
	 * 
	 * @return Point at the right of the Rectangle
	 * @since 2.0
	 */
	public Point getRight() {
		return new Point(right(), y + height / 2);
	}

	/**
	 * Retuns the dimensions of this Rectangle.
	 * 
	 * @return Size of this Rectangle as a Dimension
	 * @since 2.0
	 */
	public Dimension getSize() {
		return new Dimension(width, height);
	}

	/**
	 * Returns a new Point which represents the middle point of the top side of
	 * this Rectangle.
	 * 
	 * @return Point at the top of the Rectangle
	 * @since 2.0
	 */
	public Point getTop() {
		return new Point(x + width / 2, y);
	}

	/**
	 * Returns a new Point which represents the top left hand corner of this
	 * Rectangle.
	 * 
	 * @return Point at the top left of the rectangle
	 * @since 2.0
	 */
	public Point getTopLeft() {
		return new Point(x, y);
	}

	/**
	 * Returns a new Point which represents the top right hand corner of this
	 * Rectangle.
	 * 
	 * @return Point at the top right of the rectangle
	 * @since 2.0
	 */
	public Point getTopRight() {
		return new Point(x + width, y);
	}

	/**
	 * Returns a new Rectangle which is shifted along each axis by the passed
	 * values.
	 * 
	 * @param dx
	 * Displacement along X axis
	 * @param dy
	 * Displacement along Y axis
	 * @return The new translated rectangle
	 * @since 2.0
	 */
	public Rectangle getTranslated(int dx, int dy) {
		return new Rectangle(this).translate(dx, dy);
	}

	/**
	 * Returns a new Rectangle which is shifted by the position of the given
	 * Point.
	 * 
	 * @param pt
	 * Point providing the amount of shift along each axis
	 * @return The new translated Rectangle
	 * @since 2.0
	 */
	public Rectangle getTranslated(Point pt) {
		return new Rectangle(this).translate(pt);
	}

	/**
	 * Returns a new rectangle whose width and height have been interchanged, as
	 * well as its x and y values. This can be useful in orientation changes.
	 * 
	 * @return The transposed rectangle
	 * @since 2.0
	 */
	public Rectangle getTransposed() {
		Rectangle r = new Rectangle(this);
		r.transpose();
		return r;
	}

	/**
	 * Returns a new Rectangle which contains both this Rectangle and the
	 * Rectangle supplied as input.
	 * 
	 * @param rect
	 * Rectangle for calculating union
	 * @return A new unioned Rectangle
	 * @since 2.0
	 */
	public Rectangle getUnion(Rectangle rect) {
		if (rect == null || rect.isEmpty())
			return new Rectangle(this);
		Rectangle union = new Rectangle(Math.min(x, rect.x),
				Math.min(y, rect.y), 0, 0);
		union.width = Math.max(x + width, rect.x + rect.width) - union.x;
		union.height = Math.max(y + height, rect.y + rect.height) - union.y;
		return union;
	}

	/**
	 * @see java.lang.Object#hashCode()
	 */
	public int hashCode() {
		return (x + height + 1) * (y + width + 1) ^ x ^ y;
	}

	/**
	 * Sets the size of this Rectangle to the intersection region with the
	 * Rectangle supplied as input, and returns this for convenience. The
	 * location and dimensions are set to zero if there is no intersection with
	 * the input Rectangle.
	 * 
	 * @param rect
	 * Rectangle for the calculating intersection.
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle intersect(Rectangle rect) {
		int x1 = Math.max(x, rect.x);
		int x2 = Math.min(x + width, rect.x + rect.width);
		int y1 = Math.max(y, rect.y);
		int y2 = Math.min(y + height, rect.y + rect.height);
		if (((x2 - x1) < 0) || ((y2 - y1) < 0))
			x = y = width = height = 0; // No intersection
		else {
			x = x1;
			y = y1;
			width = x2 - x1;
			height = y2 - y1;
		}
		return this;
	}

	/**
	 * Returns <code>true</code> if the input Rectangle intersects this
	 * Rectangle.
	 * 
	 * @param rect
	 * Rectangle for the intersetion test
	 * @return <code>true</code> if the input Rectangle intersects this
	 * Rectangle
	 * @since 2.0
	 */
	public boolean intersects(Rectangle rect) {
		return rect.x < x + width && rect.y < y + height
				&& rect.x + rect.width > x && rect.y + rect.height > y;
	}

	/**
	 * Returns <code>true</code> if this Rectangle's width or height is less
	 * than or equal to 0.
	 * 
	 * @return <code>true</code> if this Rectangle is empty
	 * @since 2.0
	 */
	public boolean isEmpty() {
		return width <= 0 || height <= 0;
	}

	/**
	 * @see Translatable#performScale(double)
	 */
	public void performScale(double factor) {
		scale(factor);
	}

	/**
	 * @see Translatable#performTranslate(int, int)
	 */
	public void performTranslate(int dx, int dy) {
		translate(dx, dy);
	}

	/**
	 * Resizes this Rectangle by the Dimension provided as input and returns
	 * this for convenience. This Rectange's width will become this.width +
	 * sizeDelta.width. Likewise for height.
	 * 
	 * @param sizeDelta
	 * Resize data as a Dimension
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle resize(Dimension sizeDelta) {
		width += sizeDelta.width;
		height += sizeDelta.height;
		return this;
	}

	/**
	 * Resizes this Rectangle by the values supplied as input and returns this
	 * for convenience. This Rectangle's width will become this.width + dw. This
	 * Rectangle's height will become this.height + dh.
	 * 
	 * @param dw
	 * Amount by which width is to be resized
	 * @param dh
	 * Amount by which height is to be resized
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle resize(int dw, int dh) {
		width += dw;
		height += dh;
		return this;
	}

	/**
	 * Returns the x-coordinate of the right side of this Rectangle.
	 * 
	 * @return The X coordinate of the right side
	 * @since 2.0
	 */
	public int right() {
		return x + width;
	}

	/**
	 * Scales the location and size of this Rectangle by the given scale and
	 * returns this for convenience.
	 * 
	 * @param scaleFactor
	 * The factor by which this rectangle will be scaled
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public final Rectangle scale(double scaleFactor) {
		return scale(scaleFactor, scaleFactor);
	}

	/**
	 * Scales the location and size of this Rectangle by the given scales and
	 * returns this for convenience.
	 * 
	 * @param scaleX
	 * the factor by which the X dimension has to be scaled
	 * @param scaleY
	 * the factor by which the Y dimension has to be scaled
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle scale(double scaleX, double scaleY) {
		int oldX = x;
		int oldY = y;
		x = (int) (Math.floor(x * scaleX));
		y = (int) (Math.floor(y * scaleY));
		width = (int) (Math.ceil((oldX + width) * scaleX)) - x;
		height = (int) (Math.ceil((oldY + height) * scaleY)) - y;
		return this;
	}

	/**
	 * Sets the parameters of this Rectangle from the Rectangle passed in and
	 * returns this for convenience.
	 * 
	 * @return <code>this</code> for convenience
	 * @param rect
	 * Rectangle providing the bounding values
	 * @since 2.0
	 */
	public Rectangle setBounds(Rectangle rect) {
		x = rect.x;
		y = rect.y;
		width = rect.width;
		height = rect.height;
		return this;
	}

	/**
	 * Sets the location of this Rectangle to the point given as input and
	 * returns this for convenience.
	 * 
	 * @return <code>this</code> for convenience
	 * @param p
	 * New position of this Rectangle
	 * @since 2.0
	 */
	public Rectangle setLocation(Point p) {
		x = p.x;
		y = p.y;
		return this;
	}

	/**
	 * Sets the location of this Rectangle to the coordinates given as input and
	 * returns this for convenience.
	 * 
	 * @param x1
	 * The new X coordinate
	 * @param y1
	 * The new Y coordinate
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle setLocation(int x1, int y1) {
		x = x1;
		y = y1;
		return this;
	}

	/**
	 * Sets the width and height of this Rectangle to the width and height of
	 * the given Dimension and returns this for convenience.
	 * 
	 * @param d
	 * The new Dimension
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle setSize(Dimension d) {
		width = d.width;
		height = d.height;
		return this;
	}

	/**
	 * Sets the width of this Rectangle to <i>w</i> and the height of this
	 * Rectangle to <i>h</i> and returns this for convenience.
	 * 
	 * @return <code>this</code> for convenience
	 * @param w
	 * The new width
	 * @param h
	 * The new height
	 * @since 2.0
	 */
	public Rectangle setSize(int w, int h) {
		width = w;
		height = h;
		return this;
	}

	/**
	 * Shrinks the sides of this Rectangle by the horizontal and vertical values
	 * provided as input, and returns this Rectangle for convenience. The center
	 * of this Rectangle is kept constant.
	 * 
	 * @param h
	 * Horizontal reduction amount
	 * @param v
	 * Vertical reduction amount
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle shrink(int h, int v) {
		x += h;
		width -= (h + h);
		y += v;
		height -= (v + v);
		return this;
	}

	/**
	 * Returns the description of this Rectangle.
	 * 
	 * @return String containing the description
	 * @since 2.0
	 */
	public String toString() {
		return "Rectangle(" + x + ", " + y + ", " + //$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
				width + ", " + height + ")";//$NON-NLS-2$//$NON-NLS-1$
	}

	/**
	 * Returns <code>true</code> if the input Rectangle touches this Rectangle.
	 * 
	 * @param rect
	 * Rectangle being checked for contact
	 * @return <code>true</code> if rect touches this Rectangle
	 * @since 2.0
	 */
	public boolean touches(Rectangle rect) {
		return rect.x <= x + width && rect.y <= y + height
				&& rect.x + rect.width >= x && rect.y + rect.height >= y;
	}

	/**
	 * Moves this Rectangle horizontally by the x value of the given Point and
	 * vertically by the y value of the given Point, then returns this Rectangle
	 * for convenience.
	 * 
	 * @param p
	 * Point which provides translation information
	 * @return <code>this</code> for convenience
	 */
	public Rectangle translate(Point p) {
		x += p.x;
		y += p.y;
		return this;
	}

	/**
	 * Moves this Rectangle horizontally by dx and vertically by dy, then
	 * returns this Rectangle for convenience.
	 * 
	 * @param dx
	 * Shift along X axis
	 * @param dy
	 * Shift along Y axis
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle translate(int dx, int dy) {
		x += dx;
		y += dy;
		return this;
	}

	/**
	 * Switches the x and y values, as well as the width and height of this
	 * Rectangle. Useful for orientation changes.
	 * 
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle transpose() {
		int temp = x;
		x = y;
		y = temp;
		temp = width;
		width = height;
		height = temp;
		return this;
	}

	/**
	 * Unions this Rectangle's width and height with the specified Dimension.
	 * 
	 * @param d
	 * Dimension being unioned
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle union(Dimension d) {
		width = Math.max(width, d.width);
		height = Math.max(height, d.height);
		return this;
	}

	/**
	 * Updates this Rectangle's bounds to the minimum size which can hold both
	 * this Rectangle and the coordinate (x,y).
	 * 
	 * @return <code>this</code> for convenience
	 * @param x1
	 * X coordinate
	 * @param y1
	 * Y coordinate
	 * @since 2.0
	 */
	public Rectangle union(int x1, int y1) {
		if (x1 < x) {
			width += (x - x1);
			x = x1;
		} else {
			int right = x + width;
			if (x1 >= right) {
				right = x1 + 1;
				width = right - x;
			}
		}
		if (y1 < y) {
			height += (y - y1);
			y = y1;
		} else {
			int bottom = y + height;
			if (y1 >= bottom) {
				bottom = y1 + 1;
				height = bottom - y;
			}
		}
		return this;
	}

	/**
	 * Updates this Rectangle's bounds to the minimum size which can hold both
	 * this Rectangle and the given Point.
	 * 
	 * @param p
	 * Point to be unioned with this Rectangle
	 * @since 2.0
	 */
	public void union(Point p) {
		union(p.x, p.y);
	}

	/**
	 * Updates this Rectangle's dimensions to the minimum size which can hold
	 * both this Rectangle and the given Rectangle.
	 * 
	 * @return <code>this</code> for convenience
	 * @param rect
	 * Rectangle to be unioned with this Rectangle
	 * @since 2.0
	 */
	public Rectangle union(Rectangle rect) {
		if (rect == null)
			return this;
		return union(rect.x, rect.y, rect.width, rect.height);
	}

	/**
	 * Updates this Rectangle's dimensions to the minimum size which can hold
	 * both this Rectangle and the rectangle (x, y, w, h).
	 * 
	 * @param x
	 * X coordiante of desired union.
	 * @param y
	 * Y coordiante of desired union.
	 * @param w
	 * Width of desired union.
	 * @param h
	 * Height of desired union.
	 * @return <code>this</code> for convenience
	 * @since 2.0
	 */
	public Rectangle union(int x, int y, int w, int h) {
		int right = Math.max(this.x + width, x + w);
		int bottom = Math.max(this.y + height, y + h);
		this.x = Math.min(this.x, x);
		this.y = Math.min(this.y, y);
		this.width = right - this.x;
		this.height = bottom - this.y;
		return this;
	}

	/**
	 * Returns <code>double</code> x coordinate
	 * 
	 * @return <code>double</code> x coordinate
	 * @since 3.4
	 */
	public double preciseX() {
		return x;
	}

	/**
	 * Returns <code>double</code> y coordinate
	 * 
	 * @return <code>double</code> y coordinate
	 * @since 3.4
	 */
	public double preciseY() {
		return y;
	}

	/**
	 * Returns <code>double</code> width
	 * 
	 * @return <code>double</code> width
	 * @since 3.4
	 */
	public double preciseWidth() {
		return width;
	}

	/**
	 * Returns <code>double</code> height
	 * 
	 * @return <code>double</code> height
	 * @since 3.4
	 */
	public double preciseHeight() {
		return height;
	}

}
" measuredWidth="476" measuredHeight="288" verticalScrollbar="true"> + <font/> + </widgets> + <widgets xsi:type="model:Tabs" x="175" y="106" text="NodeFigure.java,Figure.class,Rectangle.class" measuredWidth="336" measuredHeight="30" selection="2"> + <items x="1" y="0" width="122" height="30" text="NodeFigure.java"/> + <items x="123" y="0" width="94" height="30" text="Figure.class"/> + <items x="217" y="0" width="118" height="30" text="Rectangle.class"/> + </widgets> + <widgets xsi:type="model:Tabs" x="672" y="106" text="Outline" measuredWidth="67" measuredHeight="30" selection="0"> + <items x="1" y="0" width="65" height="30" text="Outline"/> + </widgets> + <widgets xsi:type="model:Tabs" x="175" y="430" text="Problems,Javadoc,Declaration,Console" measuredWidth="315" measuredHeight="30" selection="4"> + <items x="1" y="0" width="80" height="30" text="Problems"/> + <items x="81" y="0" width="69" height="30" text="Javadoc"/> + <items x="150" y="0" width="93" height="30" text="Declaration"/> + <items x="243" y="0" width="71" height="30" text="Console"/> + </widgets> + <widgets xsi:type="model:Label" x="178" y="460" text="No consoles to display at this time." measuredWidth="229" measuredHeight="25"> + <font/> + </widgets> + <widgets xsi:type="model:Tabs" x="31" y="106" text="Project Explorer" measuredWidth="122" measuredHeight="30" selection="0"> + <items x="1" y="0" width="120" height="30" text="Project Explorer"/> + </widgets> + <widgets xsi:type="model:Icon" x="154" y="142" measuredWidth="16" measuredHeight="16" icon="image (small)"/> + <widgets xsi:type="model:VLine" x="172" y="106" height="465" measuredWidth="6" measuredHeight="465"/> + <widgets xsi:type="model:HLine" x="175" y="427" width="666" measuredWidth="666" measuredHeight="6"/> + <widgets xsi:type="model:VLine" x="669" y="106" height="321" measuredWidth="6" measuredHeight="321"/> + <widgets xsi:type="model:VLine" x="29" y="573" height="30" measuredWidth="6" measuredHeight="30"/> + <widgets xsi:type="model:VLine" x="655" y="573" height="30" measuredWidth="6" measuredHeight="30"/> + <widgets xsi:type="model:Tooltip" x="650" y="38" text="CoolBar" measuredWidth="67" measuredHeight="42"> + <font bold="true" italic="true"/> + </widgets> + <widgets xsi:type="model:Tooltip" x="489" y="13" text="Menu" measuredWidth="50" measuredHeight="42"> + <font bold="true" italic="true"/> + </widgets> + <widgets xsi:type="model:Tooltip" x="616" y="555" text="StatusBar" measuredWidth="82" measuredHeight="42"> + <font bold="true" italic="true"/> + </widgets> + <widgets xsi:type="model:Label" x="377" y="259" text="IEditorPart\nInstances" measuredWidth="230" measuredHeight="110" textAlignment="Center"> + <font size="32"/> + </widgets> + <widgets xsi:type="model:Label" x="86" y="497" text="ViewPart's" measuredWidth="225" measuredHeight="59" textAlignment="Center"> + <font size="32"/> + </widgets> + <widgets xsi:type="model:Label" x="606" y="408" text="ViewPart's" measuredWidth="225" measuredHeight="59" textAlignment="Center"> + <font size="32"/> + </widgets> + <hRuler/> + <vRuler/> + <font/> +</model:Screen> diff --git a/images/ext-property-descriptors.PNG b/images/ext-property-descriptors.PNG Binary files differnew file mode 100644 index 0000000..07571e0 --- /dev/null +++ b/images/ext-property-descriptors.PNG diff --git a/images/ext-property-descriptors.ucls b/images/ext-property-descriptors.ucls new file mode 100644 index 0000000..9a398e7 --- /dev/null +++ b/images/ext-property-descriptors.ucls @@ -0,0 +1,73 @@ +<class-diagram version="1.0.1" icons="true" automaticImage="PNG" always-add-relationships="false" generalizations="true" + realizations="true" associations="true" dependencies="false" nesting-relationships="true"> + <class id="1" corner="BOTTOM_RIGHT" language="java" + name="de.dhbw.horb.ksm.core.extension.AbstractPropertyDescriptorAdvisor" project="de.dhbw.horb.ksm.core" + file="/de.dhbw.horb.ksm.core/src/de/dhbw/horb/ksm/core/extension/AbstractPropertyDescriptorAdvisor.java" + binary="false"> + <position x="209" y="344" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <class id="4" corner="BOTTOM_RIGHT" language="java" + name="de.dhbw.horb.ksm.core.editor.model.property.BaseNodeGroupPropertyAdvisor" project="de.dhbw.horb.ksm.core" + file="/de.dhbw.horb.ksm.core/src/de/dhbw/horb/ksm/core/editor/model/property/BaseNodeGroupPropertyAdvisor.java" + binary="false"> + <position x="332" y="487" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <class id="5" corner="BOTTOM_RIGHT" language="java" + name="de.dhbw.horb.ksm.core.editor.model.property.BaseNodePropertyAdvisor" project="de.dhbw.horb.ksm.core" + file="/de.dhbw.horb.ksm.core/src/de/dhbw/horb/ksm/core/editor/model/property/BaseNodePropertyAdvisor.java" + binary="false"> + <position x="108" y="483" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <class id="8" corner="BOTTOM_RIGHT" language="java" + name="de.dhbw.horb.ksm.core.editor.model.property.ModelPropertySource" project="de.dhbw.horb.ksm.core" + file="/de.dhbw.horb.ksm.core/src/de/dhbw/horb/ksm/core/editor/model/property/ModelPropertySource.java" + binary="false"> + <position x="213" y="153" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <interface id="10" corner="BOTTOM_RIGHT" language="java" name="org.eclipse.ui.views.properties.IPropertySource" + project="de.dhbw.horb.ksm.core" + file="/mnt/btrfs/stuff/eclipse/plugins/org.eclipse.ui.views_3.5.1.M20110202-0800.jar" binary="true"> + <position x="214" y="10" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="false" package="false" protected="false" private="false"/> + <operations public="false" package="false" protected="false" private="false"/> + </display> + </interface> + <generalization> + <end type="SOURCE" nodeId="5"/> + <end type="TARGET" nodeId="1"/> + </generalization> + <dependency> + <end type="SOURCE" nodeId="8"/> + <end type="TARGET" nodeId="1"/> + </dependency> + <generalization> + <end type="SOURCE" nodeId="4"/> + <end type="TARGET" nodeId="1"/> + </generalization> + <realization> + <end type="SOURCE" nodeId="8"/> + <end type="TARGET" nodeId="10"/> + </realization> + <classifier-display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </classifier-display> + <association-display labels="true" multiplicity="true"/> +</class-diagram>
\ No newline at end of file diff --git a/images/icons/ksm-connection-new.png b/images/icons/ksm-connection-new.png Binary files differnew file mode 100644 index 0000000..14ab901 --- /dev/null +++ b/images/icons/ksm-connection-new.png diff --git a/images/icons/ksm-modell.png b/images/icons/ksm-modell.png Binary files differnew file mode 100644 index 0000000..78e9d96 --- /dev/null +++ b/images/icons/ksm-modell.png diff --git a/images/icons/ksm-node-delete.png b/images/icons/ksm-node-delete.png Binary files differnew file mode 100644 index 0000000..2476289 --- /dev/null +++ b/images/icons/ksm-node-delete.png diff --git a/images/icons/ksm-node-new.png b/images/icons/ksm-node-new.png Binary files differnew file mode 100644 index 0000000..f4097e7 --- /dev/null +++ b/images/icons/ksm-node-new.png diff --git a/images/icons/ksm-node-property-add.png b/images/icons/ksm-node-property-add.png Binary files differnew file mode 100644 index 0000000..114ad70 --- /dev/null +++ b/images/icons/ksm-node-property-add.png diff --git a/images/icons/ksm-node-property-delete.png b/images/icons/ksm-node-property-delete.png Binary files differnew file mode 100644 index 0000000..407a679 --- /dev/null +++ b/images/icons/ksm-node-property-delete.png diff --git a/images/ksm-gui-prototype.ep b/images/ksm-gui-prototype.ep new file mode 100644 index 0000000..031fe3e --- /dev/null +++ b/images/ksm-gui-prototype.ep @@ -0,0 +1,167 @@ +<?xml version="1.0"?> +<Document xmlns="http://www.evolus.vn/Namespace/Pencil"><Properties/><Pages><Page><Properties><Property name="name">ksm-gui-prototype</Property><Property name="id">1287070596437_35</Property><Property name="width">1038</Property><Property name="height">663</Property><Property name="dimBackground">false</Property><Property name="backgroundColor">#FFFFFFFF</Property><Property name="transparentBackground">true</Property><Property name="background">transparent</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.GTK.Widgets:Window" id="1c83d04ceceb47d3adc3f0717278325c" transform="matrix(1, 0, 0, 1, 4, 5)"><p:metadata><p:property name="box"><![CDATA[1025,650]]></p:property><p:property name="headerHeight"><![CDATA[0,78]]></p:property><p:property name="titleText"><![CDATA[KSM RCP]]></p:property><p:property name="textColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="textFont"><![CDATA[Liberation Sans|bold|normal|13px|none]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="headerColor"><![CDATA[#E6E3FFFF]]></p:property><p:property name="withShadow"><![CDATA[true]]></p:property></p:metadata> + + <defs> + <linearGradient x1="0%" y1="0%" x2="100%" y2="0%" p:name="linearFill" id="9a61b613f56041f293077e3388b809e3"> + <stop style="stop-color: rgb(22, 92, 128); stop-opacity: 1;" offset="0" p:name="stop1" id="15530b4ffc0f4c92a0c1ec29137fec25"/> + <stop style="stop-color: rgb(10, 122, 180); stop-opacity: 1;" offset="0.5" p:name="stop2" id="30ebb2dbcd6e483f8781b54b7a677850"/> + <stop style="stop-color: rgb(22, 92, 128); stop-opacity: 1;" offset="1" p:name="stop3" id="091c63f980c147f1a7912ff09b5d71ae"/> + </linearGradient> + </defs> + <rect width="1025" height="650" rx="0" ry="0" x="3" y="3" style="fill: rgb(0, 0, 0); fill-opacity: 0.2; stroke: none; visibility: visible;" p:name="shadowBox" id="6f538ecc282a4ce080cbf59700e314fa"/> + <rect width="1024" height="649" rx="0" ry="0" x="0.5" y="0.5" style="fill: none; stroke: rgb(0, 84, 129); stroke-width: 1; stroke-linejoin: round;" p:name="outBorder1" id="140e1e8a76994b95ae7dc0e11b17aa1d"/> + <rect width="1022" height="647" rx="0" ry="0" x="1.5" y="1.5" style="fill: none; stroke: rgb(24, 176, 255); stroke-width: 1; stroke-linejoin: round;" p:name="outBorder2" id="6ae41560fd224333b4f2c1042c0f2746"/> + <rect width="1021" height="27" rx="0" ry="0" x="2" y="2" style="fill: url(#9a61b613f56041f293077e3388b809e3) rgb(0, 0, 0); stroke: none;" p:name="titleBg" id="07bda51712c24077ae568d4588775ef1"/> + <rect width="1020" height="618" rx="0" ry="0" x="2.5" y="29.5" style="fill: rgb(237, 233, 227); stroke: rgb(0, 113, 172); stroke-width: 1; stroke-linejoin: round;" p:name="contentBg" id="81b477a67adb48fba7974f1c120b6b96"/> + <text x="485" y="20" style="font-size: 13px; font-style: normal; font-weight: bold; text-align: left; text-anchor: start; dominant-baseline: auto; fill: rgb(0, 0, 0); font-family: Liberation Sans; fill-opacity: 0.333333; text-decoration: none;" xml:space="preserve" p:name="shadowText" id="df8eb345be9941068026508faa8f5606">KSM RCP</text><path id="df8eb345be9941068026508faa8f5606_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + <text x="484" y="19" style="font-size: 13px; font-style: normal; font-weight: bold; text-align: left; text-anchor: start; dominant-baseline: auto; fill: rgb(255, 255, 255); font-family: Liberation Sans; fill-opacity: 1; text-decoration: none;" xml:space="preserve" p:name="text" id="34c85b2064ae4d1a8cb5c6f6b16e4636">KSM RCP</text><path id="34c85b2064ae4d1a8cb5c6f6b16e4636_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + <rect width="1019" height="48" rx="0" ry="0" x="3" y="30" style="fill: rgb(230, 227, 255); stroke: none; fill-opacity: 1;" p:name="headerBar" id="122eead32a8446a0b3061e6304462fcc"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.WindowsXP.Widgets:Groupbox" id="d723597712194079b0aa6963e24434fa" transform="matrix(1, 0, 0, 1, 299, 72)"><p:metadata><p:property name="box"><![CDATA[712,396]]></p:property><p:property name="label"><![CDATA[Editor]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Tahoma|normal|normal|11px|none]]></p:property></p:metadata> + <path d="M 50,0.5 L 707.5,0.5 C 710,0.5 711.5,2.2946114 711.5,4.5 L 711.5,391.5 C 711.5,394 710,395.5 707.5,395.5 L 4.5,395.5 C 2.284,395.5 0.5,394 0.5,391.5 L 0.5,4.5106114 C 0.5,2.2946114 2.284,0.51061056 4.5,0.51061056 L 5.5,0.51061056" style="overflow: visible; marker: none; color: rgb(0, 0, 0); fill: rgb(255, 255, 255); fill-opacity: 0; fill-rule: nonzero; stroke: rgb(172, 168, 153); stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" p:name="rect" id="f75d7f416d114ec8827b1f1e177a1251"/> + <text y="5" x="10" style="font-size: 11px; font-style: normal; font-weight: normal; text-align: left; text-anchor: start; dominant-baseline: auto; fill: rgb(0, 0, 0); font-family: Tahoma; fill-opacity: 1; text-decoration: none;" xml:space="preserve" p:name="text" id="bde8782581174d5885fae90a714bff3a">Editor</text><path id="bde8782581174d5885fae90a714bff3a_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RectWithGradient" id="dfe08c4e93334197b1649664372b7413" transform="matrix(1, 0, 0, 1, 310.2, 125)"><p:metadata><p:property name="box"><![CDATA[690,334]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,20.875]]></p:property><p:property name="startFillColor"><![CDATA[#A3D3FFFF]]></p:property><p:property name="endFillColor"><![CDATA[#F0FCFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[<body id="RichTextEditor" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal;"/>]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <linearGradient x1="0%" y1="0%" x2="0%" y2="100%" p:name="linearFill" id="80cf4a48e3664dec817dcd58163f02d7"> + <stop style="stop-color: rgb(163, 211, 255); stop-opacity: 1;" offset="0" p:name="stop1" id="ff22dcc01a7044998161102aa745d5ec"/> + <stop style="stop-color: rgb(240, 252, 255); stop-opacity: 1;" offset="1" p:name="stop2" id="f83c897ce35c4a168458f7e07ce39e00"/> + </linearGradient> + <rect width="690" height="334" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: url(#80cf4a48e3664dec817dcd58163f02d7) rgb(0, 0, 0); stroke: rgb(0, 0, 0); stroke-opacity: 1;" p:name="rrRect" id="1dabfae788314e309fa3f98c44698c1b" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="298d9a039126414aa49fc3587ca5e162"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#1dabfae788314e309fa3f98c44698c1b" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#298d9a039126414aa49fc3587ca5e162)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="c571ae05b0ef4ee29bf13bb342bd09f8"/> + <use xlink:href="#1dabfae788314e309fa3f98c44698c1b" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="20.875" y="166" width="648.25" height="2" p:name="text" id="0287c5c82c9a4ef7b862ca8863aa569f" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml"><body id="RichTextEditor" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal;"/></div></foreignObject><path id="0287c5c82c9a4ef7b862ca8863aa569f_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="be0405e158dc4c8b9c35fb7e62068a9c" transform="matrix(1, 0, 0, 1, 642, 186)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Node]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="200" height="80" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="4541901e458e43ca8537faf8654c2660" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="d19d75a8cc5f46ba9a4d5132e50e6678"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#4541901e458e43ca8537faf8654c2660" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#d19d75a8cc5f46ba9a4d5132e50e6678)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="ce82ba7c26c24180a565bbeaa079314b"/> + <use xlink:href="#4541901e458e43ca8537faf8654c2660" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="10" y="33" width="180" height="15" p:name="text" id="5a2c4b041aa44b2386a58db789870f56" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Node</div></foreignObject><path id="5a2c4b041aa44b2386a58db789870f56_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="16c666cc73c14eb7bed1793c7163a857" transform="matrix(1, 0, 0, 1, 367, 313)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Node]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="200" height="80" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="1b98330fa2b84ff1806998ddd29bbb12" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="f88ba5127d144756ab65b5770ebab29f"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#1b98330fa2b84ff1806998ddd29bbb12" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#f88ba5127d144756ab65b5770ebab29f)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="cbfcf985211b4b329bf6646390402a28"/> + <use xlink:href="#1b98330fa2b84ff1806998ddd29bbb12" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="10" y="33" width="180" height="15" p:name="text" id="0b0db1f46280477e87379a2e66ece0fe" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Node</div></foreignObject><path id="329eb8f3a7534214b0abf79c03cde385" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:2pointline" id="579ef420baaa450bab1235fb96c7dbe0" transform="matrix(1, 0, 0, 1, 379.269, 204.453)"><p:metadata><p:property name="a"><![CDATA[112,109]]></p:property><p:property name="b"><![CDATA[262,18]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property></p:metadata> + <path fill="none" style="stroke: transparent; stroke-width: 10px;" p:name="bgpath" id="06cfab0f166a4bbb83b1c25be067c3af" d="M 112 109 L 262 18 z"/> + <path fill="none" style="stroke-linejoin: round; stroke: rgb(27, 50, 128); stroke-opacity: 1; stroke-width: 2;" p:name="path" id="11e47738784949cc827ba5c572bd52d9" transform="translate(0)" d="M 112 109 L 262 18 z"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Annotation:Bullet" id="f06ccb81898c40fd9ace76f812e06b21" transform="matrix(1, 0, 0, 1, 299.24, 115.96)"><p:metadata><p:property name="box"><![CDATA[30,30]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#21D9EDFF]]></p:property><p:property name="strokeColor"><![CDATA[#7F7F7F00]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[1]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#FFFFFFFF]]></p:property></p:metadata> + + <defs> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="imageShading" id="77a4d551bf7c4b4d8b2253e2240087a9"> + <feGaussianBlur stdDeviation="1.3325" in="SourceAlpha"/> + </filter> + <g p:name="container" id="d373930a370e475f82bdcf4c3b5b7fe0"> + <ellipse p:name="ellipse" id="793608d537ca44189e746447cab09f80" cx="15" cy="15" rx="15" ry="15" style="fill: rgb(33, 217, 237); fill-opacity: 1; stroke: rgb(127, 127, 127); stroke-opacity: 0; stroke-width: 2;"/> + </g> + </defs> + <use xlink:href="#d373930a370e475f82bdcf4c3b5b7fe0" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(1, 1)" p:filter="url(#77a4d551bf7c4b4d8b2253e2240087a9)" style="opacity: 0.6; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="46ff994a619d48cd917a56078f841a29"/> + <use xlink:href="#d373930a370e475f82bdcf4c3b5b7fe0" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="0" y="8" width="30" height="15" p:name="text" id="9fa98ca45c3a41ae8d5c2b269eb7e486" style="fill: rgb(255, 255, 255); fill-opacity: 1; color: rgb(255, 255, 255); opacity: 1; font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: bold; font-style: normal; text-decoration: none; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">1</div></foreignObject><path id="9fa98ca45c3a41ae8d5c2b269eb7e486_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.WindowsXP.Widgets:Groupbox" id="837f06991bff4e98ab2c0e7bb32ad50f" transform="matrix(1, 0, 0, 1, 20, 73)"><p:metadata><p:property name="box"><![CDATA[256,447]]></p:property><p:property name="label"><![CDATA[Node Properties]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Tahoma|normal|normal|11px|none]]></p:property></p:metadata> + <path d="M 104,0.5 L 251.5,0.5 C 254,0.5 255.5,2.2946114 255.5,4.5 L 255.5,442.5 C 255.5,445 254,446.5 251.5,446.5 L 4.5,446.5 C 2.284,446.5 0.5,445 0.5,442.5 L 0.5,4.5106114 C 0.5,2.2946114 2.284,0.51061056 4.5,0.51061056 L 5.5,0.51061056" style="overflow: visible; marker: none; color: rgb(0, 0, 0); fill: rgb(255, 255, 255); fill-opacity: 0; fill-rule: nonzero; stroke: rgb(172, 168, 153); stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" p:name="rect" id="bff111e026d34643970741120419b3a0"/> + <text y="4" x="10" style="font-size: 11px; font-style: normal; font-weight: normal; text-align: left; text-anchor: start; dominant-baseline: auto; fill: rgb(0, 0, 0); font-family: Tahoma; fill-opacity: 1; text-decoration: none;" xml:space="preserve" p:name="text" id="377a6a7629c44a589963f398a83e874d">Node Properties</text><path id="377a6a7629c44a589963f398a83e874d_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:PlainText" id="3fdae2bc0ab8492e8f65586a0e8c4052" transform="matrix(0.866025, -0.5, 0.5, 0.866025, 520.897, 278.617)"><p:metadata><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="label"><![CDATA[Connection]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property></p:metadata> + <text y="11" x="0" style="font-size: 13px; font-style: normal; font-weight: normal; text-align: left; text-anchor: start; dominant-baseline: auto; fill: rgb(0, 0, 0); font-family: "Liberation Sans",Arial,sans-serif; fill-opacity: 1; text-decoration: none;" xml:space="preserve" p:name="text" id="b0aae7984b3d4aa5818d37838708337f">Connection</text><path id="b0aae7984b3d4aa5818d37838708337f_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.GTK.Widgets:Button" id="7eb20506eb174b1cbd26f3018d367b00" transform="matrix(1, 0, 0, 1, 320, 82)"><p:metadata><p:property name="box"><![CDATA[75,24]]></p:property><p:property name="buttonText"><![CDATA[Add Node]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Liberation Sans|normal|normal|12px|none]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property></p:metadata> + + <defs> + <linearGradient x1="0%" y1="0%" x2="0%" y2="100%" p:name="linearFill" id="aefac1a3f86c4a89a5af3435ce806aaf"> + <stop style="stop-color: rgb(253, 253, 252); stop-opacity: 1;" offset="0" p:name="stop1" id="478bf559a2a44e208f0f1f90e35a6d23"/> + <stop style="stop-color: rgb(235, 235, 235); stop-opacity: 1;" offset="0.7" p:name="stop2" id="edc80c2c923942fc97c74d60d49ec9d5"/> + <stop style="stop-color: rgb(252, 252, 252); stop-opacity: 1;" offset="1" p:name="stop3" id="b9cde99a2ca5488faca500bccfd62585"/> + </linearGradient> + </defs> + <rect width="74" height="23" rx="3" ry="3" x="0.5" y="0.5" style="fill: url(#aefac1a3f86c4a89a5af3435ce806aaf) rgb(0, 0, 0); stroke: rgb(161, 150, 133); stroke-width: 1; stroke-linejoin: round; stroke-opacity: 1;" p:name="rect" id="7670d5eda5594fcf822d2786d22b2f58"/> + <text x="11" y="17" style="font-size: 12px; font-style: normal; font-weight: normal; text-align: left; text-anchor: start; dominant-baseline: auto; fill: rgb(0, 0, 0); font-family: Liberation Sans; fill-opacity: 1; text-decoration: none;" xml:space="preserve" p:name="text" id="752521cd29ed4606b0573c8a25225fd5">Add Node</text><path id="752521cd29ed4606b0573c8a25225fd5_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Annotation:Bullet" id="eff073f1d6e143e19b7de51e3096cef6" transform="matrix(1, 0, 0, 1, 118, 172)"><p:metadata><p:property name="box"><![CDATA[30,30]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#21D9EDFF]]></p:property><p:property name="strokeColor"><![CDATA[#7F7F7F00]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[2]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#FFFFFFFF]]></p:property></p:metadata> + + <defs> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="imageShading" id="407ddf38081b418bae41b4f715312bbf"> + <feGaussianBlur stdDeviation="1.3325" in="SourceAlpha"/> + </filter> + <g p:name="container" id="c2eacd74a96f4e149d28056fc0b9fd1e"> + <ellipse p:name="ellipse" id="a9f47f697f41415a8e71e4ab85c004ed" cx="15" cy="15" rx="15" ry="15" style="fill: rgb(33, 217, 237); fill-opacity: 1; stroke: rgb(127, 127, 127); stroke-opacity: 0; stroke-width: 2;"/> + </g> + </defs> + <use xlink:href="#c2eacd74a96f4e149d28056fc0b9fd1e" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(1, 1)" p:filter="url(#407ddf38081b418bae41b4f715312bbf)" style="opacity: 0.6; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="c5334e5d25fc402b80dc198a15c9a1a4"/> + <use xlink:href="#c2eacd74a96f4e149d28056fc0b9fd1e" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="0" y="8" width="30" height="15" p:name="text" id="dd83e3310d9c4845a79c65ebb70259a1" style="fill: rgb(255, 255, 255); fill-opacity: 1; color: rgb(255, 255, 255); opacity: 1; font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: bold; font-style: normal; text-decoration: none; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">2</div></foreignObject><path id="dd83e3310d9c4845a79c65ebb70259a1_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:2pointline" id="3a6082afd43d4593a1d80d543887bb4c" transform="matrix(1, 0, 0, 1, 213, 108)"><p:metadata><p:property name="a"><![CDATA[80,-40]]></p:property><p:property name="b"><![CDATA[80,545]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property></p:metadata> + <path fill="none" style="stroke: transparent; stroke-width: 10px;" p:name="bgpath" id="0ee1bc80740e488594e42cf91407977a" d="M 80 -40 L 80 545 z"/> + <path fill="none" style="stroke-linejoin: round; stroke: rgb(27, 50, 128); stroke-opacity: 1; stroke-width: 2;" p:name="path" id="eb41813920a24b6cbf5a7df2b07bf853" transform="translate(0)" d="M 80 -40 L 80 545 z"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:table" id="ca3109efe83640978d758b74c35a7a33" transform="matrix(1, 0, 0, 1, 36, 94)"><p:metadata><p:property name="box"><![CDATA[230,51]]></p:property><p:property name="useHtmlContent"><![CDATA[false]]></p:property><p:property name="fixedHeaderHeight"><![CDATA[false]]></p:property><p:property name="padding"><![CDATA[0,4]]></p:property><p:property name="headerHeight"><![CDATA[0,20]]></p:property><p:property name="h0"><![CDATA[78,0]]></p:property><p:property name="h1"><![CDATA[92,0]]></p:property><p:property name="h2"><![CDATA[168.66666666666669,0]]></p:property><p:property name="h3"><![CDATA[199.33333333333334,0]]></p:property><p:property name="h4"><![CDATA[207,0]]></p:property><p:property name="h5"><![CDATA[214.66666666666669,0]]></p:property><p:property name="h6"><![CDATA[222.33333333333334,0]]></p:property><p:property name="h7"><![CDATA[222.33333333333334,0]]></p:property><p:property name="h8"><![CDATA[222.33333333333334,0]]></p:property><p:property name="h9"><![CDATA[222.33333333333334,0]]></p:property><p:property name="h10"><![CDATA[222.33333333333334,0]]></p:property><p:property name="h11"><![CDATA[222.33333333333334,0]]></p:property><p:property name="content"><![CDATA[gaga | Column 2 +Bla | Cell Content 1 +blubb | Cell content 2]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textAlign"><![CDATA[0,1]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property><p:property name="textColor"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="fillColor"><![CDATA[#00000000]]></p:property><p:property name="headerTextColor"><![CDATA[#000000FF]]></p:property><p:property name="headerBackground"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#00000055]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property></p:metadata> + + <foreignObject x="0" y="0" width="231" height="73" p:name="htmlObject" id="ef1abd81f57d4b139a103f7e9958fb5f"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; width: 230px; color: rgb(0, 0, 0); opacity: 1; font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none;" p:name="textDiv" id="b9f263c4fb0046a8ae50712b63c6bbe2"><table style="border-collapse: collapse; background-color: transparent; width: 229px; height: 50px; margin-left: 1px; margin-top: 1px;"><thead><tr><th style="border: 1px solid rgba(0, 0, 0, 0.33); padding: 0px; overflow: hidden; background-color: rgb(204, 204, 204); color: rgb(0, 0, 0); text-align: left; vertical-align: middle; min-width: 0px; min-height: 0px; width: 76px;"><div style="padding: 4px; overflow: hidden; min-width: 0px; -moz-box-sizing: border-box; width: 76px;">gaga </div></th><th style="border: 1px solid rgba(0, 0, 0, 0.33); padding: 0px; overflow: hidden; background-color: rgb(204, 204, 204); color: rgb(0, 0, 0); text-align: left; vertical-align: middle; min-width: 0px; min-height: 0px; width: 150px;"><div style="padding: 4px; overflow: hidden; min-width: 0px; -moz-box-sizing: border-box; width: 150px;"> Column 2</div></th></tr></thead><tbody><tr><td style="border: 1px solid rgba(0, 0, 0, 0.33); padding: 0px; overflow: hidden; text-align: left; vertical-align: middle; min-width: 0px; min-height: 0px; width: 76px;"><div style="padding: 4px; overflow: hidden; min-width: 0px; -moz-box-sizing: border-box; width: 76px;">Bla </div></td><td style="border: 1px solid rgba(0, 0, 0, 0.33); padding: 0px; overflow: hidden; text-align: left; vertical-align: middle; min-width: 0px; min-height: 0px; width: 150px;"><div style="padding: 4px; overflow: hidden; min-width: 0px; -moz-box-sizing: border-box; width: 150px;"> Cell Content 1</div></td></tr><tr><td style="border: 1px solid rgba(0, 0, 0, 0.33); padding: 0px; overflow: hidden; text-align: left; vertical-align: middle; min-width: 0px; min-height: 0px; width: 76px;"><div style="padding: 4px; overflow: hidden; min-width: 0px; -moz-box-sizing: border-box; width: 76px;">blubb </div></td><td style="border: 1px solid rgba(0, 0, 0, 0.33); padding: 0px; overflow: hidden; text-align: left; vertical-align: middle; min-width: 0px; min-height: 0px; width: 150px;"><div style="padding: 4px; overflow: hidden; min-width: 0px; -moz-box-sizing: border-box; width: 150px;"> Cell content 2</div></td></tr></tbody></table></div><path id="b9f263c4fb0046a8ae50712b63c6bbe2_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + <div xmlns="http://www.w3.org/1999/xhtml" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;"/> + </foreignObject> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:2pointline" id="e7526d0847c44c36bbf4985308b95dfe" transform="matrix(1, 0, 0, 1, 293, 480)"><p:metadata><p:property name="a"><![CDATA[0,0]]></p:property><p:property name="b"><![CDATA[735,0]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property></p:metadata> + <path fill="none" style="stroke: transparent; stroke-width: 10px;" p:name="bgpath" id="8007a104f73445548676ac81fb2b5ef7" d="M 0 0 L 735 0 z"/> + <path fill="none" style="stroke-linejoin: round; stroke: rgb(27, 50, 128); stroke-opacity: 1; stroke-width: 2;" p:name="path" id="65782947d02f4da08718b83d3fc62622" transform="translate(0)" d="M 0 0 L 735 0 z"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.WindowsXP.Widgets:Groupbox" id="d2d696a1142a493b81d8d2d1c6c36744" transform="matrix(1, 0, 0, 1, 310, 502)"><p:metadata><p:property name="box"><![CDATA[697,137]]></p:property><p:property name="label"><![CDATA[Simulation Output]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Tahoma|normal|normal|11px|none]]></p:property></p:metadata> + <path d="M 120,0.5 L 692.5,0.5 C 695,0.5 696.5,2.2946114 696.5,4.5 L 696.5,132.5 C 696.5,135 695,136.5 692.5,136.5 L 4.5,136.5 C 2.284,136.5 0.5,135 0.5,132.5 L 0.5,4.5106114 C 0.5,2.2946114 2.284,0.51061056 4.5,0.51061056 L 5.5,0.51061056" style="overflow: visible; marker: none; color: rgb(0, 0, 0); fill: rgb(255, 255, 255); fill-opacity: 0; fill-rule: nonzero; stroke: rgb(172, 168, 153); stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" p:name="rect" id="f3e52a928a2f42b4a4e7ff2b69dc0bb0"/> + <text y="4" x="10" style="font-size: 11px; font-style: normal; font-weight: normal; text-align: left; text-anchor: start; dominant-baseline: auto; fill: rgb(0, 0, 0); font-family: Tahoma; fill-opacity: 1; text-decoration: none;" xml:space="preserve" p:name="text" id="b1fe90de84054e15927fde05c9bdc154">Simulation Output</text><path id="b1fe90de84054e15927fde05c9bdc154_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.WindowsXP.Widgets:MenuItem" id="dcedef5c64e44a939071b8c6af1d29ca" transform="matrix(1, 0, 0, 1, 5, 36)"><p:metadata><p:property name="box"><![CDATA[170,20]]></p:property><p:property name="type"><![CDATA[none]]></p:property><p:property name="hasCascadingMenu"><![CDATA[false]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="selected"><![CDATA[false]]></p:property><p:property name="label"><![CDATA[File]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Tahoma|normal|normal|11px|none]]></p:property></p:metadata> + <rect style="fill: rgb(51, 102, 204); fill-opacity: 1; stroke: none; visibility: hidden;" x="3" y="1" p:name="bgRect" id="c4860cf7e85e406b8d50ee2940426bcc" width="164" height="18"/> + <text x="20" y="15" style="text-align: left; text-anchor: start; dominant-baseline: auto; fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Tahoma; font-size: 11px; font-weight: normal; font-style: normal; text-decoration: none;" xml:space="preserve" p:name="text" id="de3f1cc9cf5f491598d338c4370ef72a">File</text><path id="de3f1cc9cf5f491598d338c4370ef72a_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + <path style="fill: none; stroke-width: 1px; visibility: hidden;" p:name="accelIndicator" id="f715bf573f5a4553b4c3d6936dd08641"/> + <path style="fill: none; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1; visibility: hidden;" d="M 2.9699794,5.3993084 L 5.5632114,8.7682884 L 10.376336,3.1939584" transform="translate(4, 3.5)" p:name="checkedPath" id="ac8b6dba43344c898a23406791bbe28e"/> + <circle cx="10" cy="10" r="3" stroke="none" fill="#000000" p:name="bullet" id="72205badfa984422a8e43b7ecbcc75b0" style="visibility: hidden; fill: rgb(0, 0, 0); fill-opacity: 1;"/> + <path style="fill: rgb(0, 0, 0); stroke: none; visibility: hidden; fill-opacity: 1;" d="M 0,0 L 4,4 L 0,8 z" p:name="submenuMark" id="c244d325fbd94874969043d213c825b5" transform="translate(156, 6.5)"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.WindowsXP.Widgets:MenuItem" id="558a9547e5bd4cdfae6ab9b239f963aa" transform="matrix(1, 0, 0, 1, 91, 36)"><p:metadata><p:property name="box"><![CDATA[170,20]]></p:property><p:property name="type"><![CDATA[none]]></p:property><p:property name="hasCascadingMenu"><![CDATA[false]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="selected"><![CDATA[false]]></p:property><p:property name="label"><![CDATA[...]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Tahoma|normal|normal|11px|none]]></p:property></p:metadata> + <rect style="fill: rgb(51, 102, 204); fill-opacity: 1; stroke: none; visibility: hidden;" x="3" y="1" p:name="bgRect" id="5e60831aa8cc436da08eabf6ef0f7b80" width="164" height="18"/> + <text x="20" y="11" style="text-align: left; text-anchor: start; dominant-baseline: auto; fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Tahoma; font-size: 11px; font-weight: normal; font-style: normal; text-decoration: none;" xml:space="preserve" p:name="text" id="4bf8164368ff405caad7e0c8bdb72f0b">...</text><path id="4bf8164368ff405caad7e0c8bdb72f0b_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="5890b9a158eb4b119263ed9747c4f6db" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + <path style="fill: none; stroke-width: 1px; visibility: hidden;" p:name="accelIndicator" id="7725f192ef824060836e2af731adf207"/> + <path style="fill: none; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1; visibility: hidden;" d="M 2.9699794,5.3993084 L 5.5632114,8.7682884 L 10.376336,3.1939584" transform="translate(4, 3.5)" p:name="checkedPath" id="78ab1edb7d424f5caebaab59e2fb2f96"/> + <circle cx="10" cy="10" r="3" stroke="none" fill="#000000" p:name="bullet" id="fc7e0564907e44f4bbd1389e8b2a87e3" style="visibility: hidden; fill: rgb(0, 0, 0); fill-opacity: 1;"/> + <path style="fill: rgb(0, 0, 0); stroke: none; visibility: hidden; fill-opacity: 1;" d="M 0,0 L 4,4 L 0,8 z" p:name="submenuMark" id="cee434517f40442f9fad148fa52148ec" transform="translate(156, 6.5)"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:2pointline" id="86a83f0d39034dadbe690e9740af928f" transform="matrix(1, 0, 0, 1, 8, 56)"><p:metadata><p:property name="a"><![CDATA[0,0]]></p:property><p:property name="b"><![CDATA[1020,0]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property></p:metadata> + <path fill="none" style="stroke: transparent; stroke-width: 10px;" p:name="bgpath" id="a4e9d6ff10b4488cbef46be576edae17" d="M 0 0 L 1020 0 z"/> + <path fill="none" style="stroke-linejoin: round; stroke: rgb(27, 50, 128); stroke-opacity: 1; stroke-width: 2;" p:name="path" id="c75c10d7932143e58506b53b7536228b" transform="translate(0)" d="M 0 0 L 1020 0 z"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Annotation:Bullet" id="dd27294be7474eaf811d8acd14a09aa6" transform="matrix(1, 0, 0, 1, 342.24, 526.96)"><p:metadata><p:property name="box"><![CDATA[30,30]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#21D9EDFF]]></p:property><p:property name="strokeColor"><![CDATA[#7F7F7F00]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[3]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#FFFFFFFF]]></p:property></p:metadata> + + <defs> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="imageShading" id="d7e4b399ad034943935397929df50de6"> + <feGaussianBlur stdDeviation="1.3325" in="SourceAlpha"/> + </filter> + <g p:name="container" id="98ce5fb7b0224995a7a22b4340cd10ae"> + <ellipse p:name="ellipse" id="784aa6cc5ff14cc7bb9bd6623b0e2ed3" cx="15" cy="15" rx="15" ry="15" style="fill: rgb(33, 217, 237); fill-opacity: 1; stroke: rgb(127, 127, 127); stroke-opacity: 0; stroke-width: 2;"/> + </g> + </defs> + <use xlink:href="#98ce5fb7b0224995a7a22b4340cd10ae" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(1, 1)" p:filter="url(#d7e4b399ad034943935397929df50de6)" style="opacity: 0.6; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="1629f3e0024e4fb7a0ed3284d6f15ba2"/> + <use xlink:href="#98ce5fb7b0224995a7a22b4340cd10ae" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="0" y="8" width="30" height="15" p:name="text" id="2100a86e831b4e7fa41d67023ea55093" style="fill: rgb(255, 255, 255); fill-opacity: 1; color: rgb(255, 255, 255); opacity: 1; font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: bold; font-style: normal; text-decoration: none; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">3</div></foreignObject><path id="2100a86e831b4e7fa41d67023ea55093_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="d7ff5cc43558426aab0706532af0c707" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Annotation:Bullet" id="19d3d52743594f30b8a7a877673dfdaf" transform="matrix(1, 0, 0, 1, 48.24, 14.96)"><p:metadata><p:property name="box"><![CDATA[30,30]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#21D9EDFF]]></p:property><p:property name="strokeColor"><![CDATA[#7F7F7F00]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[4]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#FFFFFFFF]]></p:property></p:metadata> + + <defs> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="imageShading" id="98e6e13873c84203ae1b69a0cbaea65f"> + <feGaussianBlur stdDeviation="1.3325" in="SourceAlpha"/> + </filter> + <g p:name="container" id="c7cd5d31b5044c3a9139b291872e9c13"> + <ellipse p:name="ellipse" id="a9418daaa3d14c7d8ddb352975bdd708" cx="15" cy="15" rx="15" ry="15" style="fill: rgb(33, 217, 237); fill-opacity: 1; stroke: rgb(127, 127, 127); stroke-opacity: 0; stroke-width: 2;"/> + </g> + </defs> + <use xlink:href="#c7cd5d31b5044c3a9139b291872e9c13" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(1, 1)" p:filter="url(#98e6e13873c84203ae1b69a0cbaea65f)" style="opacity: 0.6; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="7b2361e831f540c4a731b5727389d577"/> + <use xlink:href="#c7cd5d31b5044c3a9139b291872e9c13" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="0" y="8" width="30" height="15" p:name="text" id="9ae5e1afa95e4391abe0a05e410721f8" style="fill: rgb(255, 255, 255); fill-opacity: 1; color: rgb(255, 255, 255); opacity: 1; font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: bold; font-style: normal; text-decoration: none; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">4</div></foreignObject><path id="9ae5e1afa95e4391abe0a05e410721f8_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="7a82a08f07e849909c92a2f09551a85c" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:2pointline" id="bca20c8acf5e480daa1b06bf4f01c0a3" transform="matrix(1, 0, 0, 1, 293, 116)"><p:metadata><p:property name="a"><![CDATA[0,0]]></p:property><p:property name="b"><![CDATA[735,0]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|1,3]]></p:property></p:metadata> + <path fill="none" style="stroke: transparent; stroke-width: 10px;" p:name="bgpath" id="4182ae7736464869889a5bfb6d777e69" d="M 0 0 L 735 0 z"/> + <path fill="none" style="stroke-linejoin: round; stroke: rgb(27, 50, 128); stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 1, 3;" p:name="path" id="ac103744b81f48129897e4c86934ff97" transform="translate(0)" d="M 0 0 L 735 0 z"/> + </g></Content></Page></Pages></Document>
\ No newline at end of file diff --git a/images/ksm-gui-prototype.png b/images/ksm-gui-prototype.png Binary files differnew file mode 100644 index 0000000..1bd451f --- /dev/null +++ b/images/ksm-gui-prototype.png diff --git a/images/ksm-outline-databinding.png b/images/ksm-outline-databinding.png Binary files differnew file mode 100644 index 0000000..7d448c6 --- /dev/null +++ b/images/ksm-outline-databinding.png diff --git a/images/ksm-outline-databinding.screen b/images/ksm-outline-databinding.screen new file mode 100644 index 0000000..80c6d53 --- /dev/null +++ b/images/ksm-outline-databinding.screen @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore"> + <widgets xsi:type="model:Tree" x="314" y="53" width="201" height="194" text="KSM Knoten 1
- KSM Knoten 2
KSM Knoten 2
-KSM Knoten 1" measuredWidth="201" measuredHeight="194" verticalScrollbar="true" selection="0"> + <items x="0" y="5" width="184" height="23" text="KSM Knoten 1"/> + <items x="0" y="28" width="184" height="23" text="- KSM Knoten 2"/> + <items x="0" y="51" width="184" height="23" text="KSM Knoten 2"/> + <items x="0" y="74" width="184" height="23" text="-KSM Knoten 1"/> + </widgets> + <widgets xsi:type="model:Panel" x="23" y="52" width="260" height="406" measuredWidth="260" measuredHeight="406" verticalScrollbar="true"/> + <widgets xsi:type="model:Tabs" x="16" y="24" text="Sample KSM Model.ksm" measuredWidth="176" measuredHeight="30" selection="0"> + <items x="1" y="0" width="174" height="30" text="Sample KSM Model.ksm"/> + </widgets> + <widgets xsi:type="model:Tabs" x="314" y="18" text="Outline" measuredWidth="67" measuredHeight="30" selection="0"> + <items x="1" y="0" width="65" height="30" text="Outline"/> + </widgets> + <widgets xsi:type="model:VLine" x="298" y="10" height="445" measuredWidth="6" measuredHeight="445"/> + <widgets xsi:type="model:ButtonBar" x="314" y="277" text="Add,Delete" measuredWidth="109" measuredHeight="30" selection=""> + <font/> + <items x="0" y="0" width="46" height="30" text="Add"/> + <items x="46" y="0" width="63" height="30" text="Delete"/> + </widgets> + <widgets xsi:type="model:Table" x="314" y="319" width="201" height="120" text="Name,Value
Property 1,Value 1
Property 2,Value 2
Property 3,Value 3" measuredWidth="201" measuredHeight="120" verticalScrollbar="true"> + <font/> + </widgets> + <widgets xsi:type="model:Rectangle" x="56" y="234" width="136" height="49" text="KSM Knoten 1" measuredWidth="136" measuredHeight="49" border="dashed-rounded"> + <font/> + </widgets> + <widgets xsi:type="model:Arrow" x="117" y="145" width="83" height="90" measuredWidth="83" measuredHeight="90" left="false" right="true" direction="bottom"/> + <widgets xsi:type="model:Rectangle" x="125" y="97" width="136" height="49" text="KSM Knoten 2" measuredWidth="136" measuredHeight="49"> + <font/> + </widgets> + <widgets xsi:type="model:Arrow" x="190" y="71" width="138" height="164" measuredWidth="138" measuredHeight="164" foreground="#ff0000" right="true" direction="bottom"/> + <widgets xsi:type="model:Arrow" x="260" y="103" width="67" height="24" measuredWidth="67" measuredHeight="24" foreground="#ff0000" right="true"/> + <widgets xsi:type="model:Arrow" x="440" y="62" width="105" height="290" measuredWidth="105" measuredHeight="290" foreground="#0000ff" left="false" right="true"/> + <widgets xsi:type="model:Label" x="191" y="12" text="Selektions\nSynchronisation" measuredWidth="107" measuredHeight="42" foreground="#ff0000"> + <font/> + </widgets> + <widgets xsi:type="model:Label" x="392" y="176" text="Master-Detail\nBeziehung" measuredWidth="90" measuredHeight="42" foreground="#0000ff"> + <font/> + </widgets> + <widgets xsi:type="model:CurlyBrace" x="514" y="304" width="23" height="149" measuredWidth="23" measuredHeight="149"> + <font/> + </widgets> + <widgets xsi:type="model:Circle" x="432" y="61" width="20" height="19" measuredWidth="20" measuredHeight="19" background="#0000ff"> + <font/> + </widgets> + <widgets xsi:type="model:HSplitter" x="314" y="253" width="201" measuredWidth="201" measuredHeight="11"/> + <hRuler/> + <vRuler/> + <font/> +</model:Screen> diff --git a/images/ksm-outline.png b/images/ksm-outline.png Binary files differnew file mode 100644 index 0000000..c0436ba --- /dev/null +++ b/images/ksm-outline.png diff --git a/images/ksm-prototype-mainWindow.png b/images/ksm-prototype-mainWindow.png Binary files differnew file mode 100644 index 0000000..d90be2b --- /dev/null +++ b/images/ksm-prototype-mainWindow.png diff --git a/images/ksm-prototype-mainWindow.screen b/images/ksm-prototype-mainWindow.screen new file mode 100644 index 0000000..e7d70c7 --- /dev/null +++ b/images/ksm-prototype-mainWindow.screen @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore"> + <widgets xsi:type="model:Window" x="-2" y="24" width="1035" height="673" text="KSM RCP" measuredWidth="1035" measuredHeight="673"/> + <widgets xsi:type="model:Menu" x="-2" y="43" text="File,Edit,Perspective,Help" measuredWidth="197" measuredHeight="30"> + <items x="5" y="0" width="30" height="30" text="File"/> + <items x="35" y="0" width="34" height="30" text="Edit"/> + <items x="69" y="0" width="84" height="30" text="Perspective"/> + <items x="153" y="0" width="39" height="30" text="Help"/> + </widgets> + <widgets xsi:type="model:Icon" x="8" y="76" measuredWidth="16" measuredHeight="16" icon="add (small)"/> + <widgets xsi:type="model:Icon" x="34" y="76" measuredWidth="16" measuredHeight="16" icon="save (small)"/> + <widgets xsi:type="model:VLine" x="56" y="71" height="26" measuredWidth="6" measuredHeight="26"/> + <widgets xsi:type="model:Icon" x="64" y="76" measuredWidth="16" measuredHeight="16" icon="submenu (small)"/> + <widgets xsi:type="model:Tree" x="17" y="161" width="268" height="520" text="KSM Project
-Sample KSM Model.ksm
Other KSM Project" measuredWidth="268" measuredHeight="520" verticalScrollbar="true" selection="1"> + <items x="0" y="5" width="251" height="23" text="KSM Project"/> + <items x="0" y="28" width="251" height="23" text="-Sample KSM Model.ksm"/> + <items x="0" y="51" width="251" height="23" text="Other KSM Project"/> + </widgets> + <widgets xsi:type="model:Tree" x="824" y="138" width="201" height="194" text="KSM Knoten 1
- KSM Knoten 2
KSM Knoten 2
-KSM Knoten 1" measuredWidth="201" measuredHeight="194" verticalScrollbar="true"> + <items x="0" y="5" width="184" height="23" text="KSM Knoten 1"/> + <items x="0" y="28" width="184" height="23" text="- KSM Knoten 2"/> + <items x="0" y="51" width="184" height="23" text="KSM Knoten 2"/> + <items x="0" y="74" width="184" height="23" text="-KSM Knoten 1"/> + </widgets> + <widgets xsi:type="model:Panel" x="432" y="137" width="361" height="406" measuredWidth="361" measuredHeight="406" verticalScrollbar="true"/> + <widgets xsi:type="model:Tabs" x="294" y="108" text="Sample KSM Model.ksm" measuredWidth="176" measuredHeight="30" selection="0"> + <items x="1" y="0" width="174" height="30" text="Sample KSM Model.ksm"/> + </widgets> + <widgets xsi:type="model:Tabs" x="291" y="565" text="Simulation Output, Other Stuff" measuredWidth="228" measuredHeight="30" selection="4"> + <items x="1" y="0" width="136" height="30" text="Simulation Output"/> + <items x="137" y="0" width="90" height="30" text="Other Stuff"/> + </widgets> + <widgets xsi:type="model:HLine" x="291" y="552" width="742" measuredWidth="742" measuredHeight="6"/> + <widgets xsi:type="model:Tabs" x="17" y="108" text="Project Explorer" measuredWidth="122" measuredHeight="30" selection="0"> + <items x="1" y="0" width="120" height="30" text="Project Explorer"/> + </widgets> + <widgets xsi:type="model:VLine" x="288" y="103" height="578" measuredWidth="6" measuredHeight="578"/> + <widgets xsi:type="model:Tabs" x="824" y="103" text="Outline" measuredWidth="67" measuredHeight="30" selection="0"> + <items x="1" y="0" width="65" height="30" text="Outline"/> + </widgets> + <widgets xsi:type="model:VLine" x="808" y="95" height="445" measuredWidth="6" measuredHeight="445"/> + <widgets xsi:type="model:Tree" x="294" y="161" width="123" height="384" text="Node
Connection" measuredWidth="123" measuredHeight="384" verticalScrollbar="true"> + <items x="0" y="5" width="106" height="23" text="Node"/> + <items x="0" y="28" width="106" height="23" text="Connection"/> + </widgets> + <widgets xsi:type="model:Label" x="294" y="143" text="Palette" measuredWidth="49" measuredHeight="25"> + <font/> + </widgets> + <widgets xsi:type="model:ButtonBar" x="824" y="362" text="Add,Delete" measuredWidth="109" measuredHeight="30" selection=""> + <font/> + <items x="0" y="0" width="46" height="30" text="Add"/> + <items x="46" y="0" width="63" height="30" text="Delete"/> + </widgets> + <widgets xsi:type="model:HLine" x="824" y="341" width="201" measuredWidth="201" measuredHeight="6"/> + <widgets xsi:type="model:Table" x="824" y="404" width="201" height="120" text="Name,Value
Property 1,Value 1
Property 2,Value 2
Property 3,Value 3" measuredWidth="201" measuredHeight="120" verticalScrollbar="true"> + <font/> + </widgets> + <widgets xsi:type="model:Callout" x="448" y="95" text="1" measuredWidth="27" measuredHeight="27" background="#00adef"> + <font bold="true"/> + </widgets> + <widgets xsi:type="model:Callout" x="952" y="363" text="2" measuredWidth="27" measuredHeight="27" background="#00adef"> + <font bold="true"/> + </widgets> + <widgets xsi:type="model:Rectangle" x="442" y="200" width="136" height="49" text="KSM Knoten 1" measuredWidth="136" measuredHeight="49"> + <font/> + </widgets> + <widgets xsi:type="model:Rectangle" x="624" y="200" width="136" height="49" text="KSM Knoten 2" measuredWidth="136" measuredHeight="49"> + <font/> + </widgets> + <widgets xsi:type="model:HLine" x="577" y="232" width="48" measuredWidth="48" measuredHeight="6"/> + <widgets xsi:type="model:Callout" x="383" y="620" text="3" measuredWidth="27" measuredHeight="27" background="#00adef"> + <font bold="true"/> + </widgets> + <widgets xsi:type="model:Callout" x="96" y="65" text="4" measuredWidth="27" measuredHeight="27" background="#00adef"> + <font bold="true"/> + </widgets> + <widgets xsi:type="model:Rectangle" x="294" y="598" width="723" height="83" measuredWidth="723" measuredHeight="83"> + <font/> + </widgets> + <widgets xsi:type="model:Chart" x="496" y="603" width="151" height="73" measuredWidth="151" measuredHeight="73" chartType="column"/> + <widgets xsi:type="model:Chart" x="312" y="602" width="177" height="74" measuredWidth="177" measuredHeight="74" chartType="line"/> + <widgets xsi:type="model:Chart" x="646" y="603" width="151" height="72" measuredWidth="151" measuredHeight="72" chartType="column"/> + <widgets xsi:type="model:Table" x="800" y="603" width="216" height="71" text="Name,Name,Age v,Kids,Likes,Actions
Peter,Severin,33,[x],{computer},[Edit] [View]
Cristina,Severin,33,[x],{shopping-cart},[Edit] [View]
Henri,Severin,2,[],{note},[Edit] [View]" measuredWidth="216" measuredHeight="71" rowHeight="20"> + <font size="8"/> + </widgets> + <hRuler/> + <vRuler> + <guides position="108"/> + </vRuler> + <font/> +</model:Screen> diff --git a/images/ksm-speicher-laden-wolf05.jpg b/images/ksm-speicher-laden-wolf05.jpg Binary files differnew file mode 100644 index 0000000..862e563 --- /dev/null +++ b/images/ksm-speicher-laden-wolf05.jpg diff --git a/images/ksm-swing-screenshot.png b/images/ksm-swing-screenshot.png Binary files differnew file mode 100644 index 0000000..6160926 --- /dev/null +++ b/images/ksm-swing-screenshot.png diff --git a/images/node-edit-and-figure.PNG b/images/node-edit-and-figure.PNG Binary files differnew file mode 100644 index 0000000..0cb0832 --- /dev/null +++ b/images/node-edit-and-figure.PNG diff --git a/images/node-edit-and-figure.ucls b/images/node-edit-and-figure.ucls new file mode 100644 index 0000000..263b27b --- /dev/null +++ b/images/node-edit-and-figure.ucls @@ -0,0 +1,96 @@ +<class-diagram version="1.0.1" icons="true" automaticImage="PNG" always-add-relationships="true" generalizations="true" + realizations="true" associations="true" dependencies="true" nesting-relationships="true"> + <class id="1" corner="BOTTOM_RIGHT" language="java" name="de.dhbw.horb.ksm.core.editor.figures.KSMNodeFigure" + project="de.dhbw.horb.ksm.core" + file="/de.dhbw.horb.ksm.core/src/de/dhbw/horb/ksm/core/editor/figures/KSMNodeFigure.java" binary="false"> + <position x="524" y="64" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="false" package="false" protected="false" private="false"/> + <operations public="false" package="false" protected="false" private="false"/> + </display> + </class> + <class id="8" corner="BOTTOM_RIGHT" language="java" name="de.dhbw.horb.ksm.core.editor.parts.PartFactory" + project="de.dhbw.horb.ksm.core" + file="/de.dhbw.horb.ksm.core/src/de/dhbw/horb/ksm/core/editor/parts/PartFactory.java" binary="false"> + <position x="527" y="530" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <class id="11" corner="BOTTOM_RIGHT" language="java" name="de.dhbw.horb.ksm.core.editor.parts.KSMNodeEditPart" + project="de.dhbw.horb.ksm.core" + file="/de.dhbw.horb.ksm.core/src/de/dhbw/horb/ksm/core/editor/parts/KSMNodeEditPart.java" binary="false"> + <position x="523" y="277" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="false" package="false" protected="false" private="false"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <interface id="16" corner="BOTTOM_RIGHT" language="java" name="de.dhbw.horb.ksm.xmlschema.api.Node" + project="ksm-datamodel" file="/ksm-datamodel/src/de/dhbw/horb/ksm/xmlschema/api/Node.java" binary="false"> + <position x="166" y="156" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </interface> + <class id="17" corner="BOTTOM_RIGHT" language="java" + name="de.dhbw.horb.ksm.core.editor.parts.editmanager.NodeDirectEditManager" project="de.dhbw.horb.ksm.core" + file="/de.dhbw.horb.ksm.core/src/de/dhbw/horb/ksm/core/editor/parts/editmanager/NodeDirectEditManager.java" + binary="false"> + <position x="898" y="140" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="false" package="false" protected="false" private="false"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <class id="18" corner="BOTTOM_RIGHT" language="java" + name="de.dhbw.horb.ksm.core.editor.policies.NodeComponentEditPolicy" project="de.dhbw.horb.ksm.core" + file="/de.dhbw.horb.ksm.core/src/de/dhbw/horb/ksm/core/editor/policies/NodeComponentEditPolicy.java" binary="false"> + <position x="900" y="36" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <class id="19" corner="BOTTOM_RIGHT" language="java" + name="de.dhbw.horb.ksm.core.editor.policies.NodeGraphicalNodeEditPolicy" project="de.dhbw.horb.ksm.core" + file="/de.dhbw.horb.ksm.core/src/de/dhbw/horb/ksm/core/editor/policies/NodeGraphicalNodeEditPolicy.java" + binary="false"> + <position x="915" y="269" width="-1" height="-1"/> + <display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </display> + </class> + <dependency> + <end type="SOURCE" nodeId="11"/> + <end type="TARGET" nodeId="18"/> + </dependency> + <dependency> + <end type="SOURCE" nodeId="11"/> + <end type="TARGET" nodeId="1"/> + </dependency> + <dependency> + <end type="SOURCE" nodeId="19"/> + <end type="TARGET" nodeId="11"/> + </dependency> + <dependency> + <end type="SOURCE" nodeId="8"/> + <end type="TARGET" nodeId="11"/> + </dependency> + <association> + <end type="SOURCE" nodeId="11" navigable="false"> + <attribute name="manager"/> + <multiplicity minimum="0" maximum="1"/> + </end> + <end type="TARGET" nodeId="17" navigable="true"/> + <display labels="true" multiplicity="true"/> + </association> + <classifier-display autosize="true" package="true" initial-value="false" signature="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true"/> + <operations public="true" package="true" protected="true" private="true"/> + </classifier-display> + <association-display labels="true" multiplicity="true"/> +</class-diagram>
\ No newline at end of file diff --git a/images/osgi-schema-ibm-developerworks.png b/images/osgi-schema-ibm-developerworks.png Binary files differnew file mode 100644 index 0000000..b9f6270 --- /dev/null +++ b/images/osgi-schema-ibm-developerworks.png diff --git a/images/piccolo2d-arch.ep b/images/piccolo2d-arch.ep new file mode 100644 index 0000000..8412aa5 --- /dev/null +++ b/images/piccolo2d-arch.ep @@ -0,0 +1,82 @@ +<?xml version="1.0"?> +<Document xmlns="http://www.evolus.vn/Namespace/Pencil"><Properties/><Pages><Page><Properties><Property name="name">piccolo2d-arch</Property><Property name="id">1287051392413_6764</Property><Property name="width">273.4000244140625</Property><Property name="height">259</Property><Property name="dimBackground">false</Property><Property name="backgroundColor">#FFFFFFFF</Property><Property name="transparentBackground">true</Property><Property name="background">transparent</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="e1aacea1fb0c47ae9e72ee8b136f30a7" transform="matrix(1, 0, 0, 1, 10.4, 58)"><p:metadata><p:property name="box"><![CDATA[252,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[piccolo2d/PCanvas]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="252" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="83713648b0654dbc83aa7c728f332546" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="15715eb16f0b4e3db325a2f8ebb5b59a"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#83713648b0654dbc83aa7c728f332546" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#15715eb16f0b4e3db325a2f8ebb5b59a)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="a05d9a902f3b4867aac3088b37bb89e3"/> + <use xlink:href="#83713648b0654dbc83aa7c728f332546" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="242.75" height="16" p:name="text" id="b7f51a48630b450db5f42e7c2b304d23" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">piccolo2d/PCanvas</div></foreignObject><path id="b7f51a48630b450db5f42e7c2b304d23_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="3281f36e3b544c1cb2cc8c4a5a88da60" transform="matrix(1, 0, 0, 1, 10.4, 106)"><p:metadata><p:property name="box"><![CDATA[252,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[AWT]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="252" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="81dc0ff75bf7431495f83556b0038303" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="2e9f54d845df452690303557bef7be9e"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#81dc0ff75bf7431495f83556b0038303" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#2e9f54d845df452690303557bef7be9e)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="7c159d4e5695455dae7c76a89ec10e4c"/> + <use xlink:href="#81dc0ff75bf7431495f83556b0038303" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="242.75" height="16" p:name="text" id="fa0b9abb3a654ed3b832d53504ff2f10" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">AWT</div></foreignObject><path id="fa0b9abb3a654ed3b832d53504ff2f10_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="7383ced4b1f24b42a5f12a363f7ffc9c" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="f11594d724ab436883be10b9320e2631" transform="matrix(1, 0, 0, 1, 10.4, 212)"><p:metadata><p:property name="box"><![CDATA[252,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#7CCC54FF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Hardware]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="252" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(124, 204, 84); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="09a7fd5ddb594a2ca140e1549b52676c" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="7e3845707bb0493585f2015e20749338"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#09a7fd5ddb594a2ca140e1549b52676c" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#7e3845707bb0493585f2015e20749338)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="f7e926d371e04437b376d6bba1c5ffed"/> + <use xlink:href="#09a7fd5ddb594a2ca140e1549b52676c" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="242.75" height="16" p:name="text" id="9f53459a0a2a4f63b8a8b4a8acdb19d5" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Hardware</div></foreignObject><path id="9f53459a0a2a4f63b8a8b4a8acdb19d5_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="8449e7942f704dc6b9fc0a4d4281e8f8" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:2pointline" id="9895d97bd3724c72924fa20418e1d1c9" transform="matrix(1, 0, 0, 1, -50, 201.4)"><p:metadata><p:property name="a"><![CDATA[60,0]]></p:property><p:property name="b"><![CDATA[312,0]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property></p:metadata> + <path fill="none" style="stroke: transparent; stroke-width: 10px;" p:name="bgpath" id="d13c2c05ab3c45a7a5b8a7b643fd24df" d="M 60 0 L 312 0 z"/> + <path fill="none" style="stroke-linejoin: round; stroke: rgb(27, 50, 128); stroke-opacity: 1; stroke-width: 2;" p:name="path" id="659f66fb3df348d18f74786ddbe02e21" transform="translate(0)" d="M 60 0 L 312 0 z"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Group" xmlns:p="http://www.evolus.vn/Namespace/Pencil" transform="matrix(1, 0, 0, 1, 10.4, 153)" id="69d9c727fb6e4acd9913109328c400c5"><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="9129b0d32ea04f08a8404f13a64b169e" transform="matrix(1, 0, 0, 1, 0, 0)"><p:metadata><p:property name="box"><![CDATA[79,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Windows]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="79" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="8f21c09c311847ee9ebbd3d8bef9303a" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="726eb38f126e451faf69716de305aeb9"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#8f21c09c311847ee9ebbd3d8bef9303a" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#726eb38f126e451faf69716de305aeb9)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="3ef451ad32854cd8b1c3c06c8a066e77"/> + <use xlink:href="#8f21c09c311847ee9ebbd3d8bef9303a" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="69.75" height="16" p:name="text" id="ff50403a85d84651ac3e21bb22e9b49c" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Windows</div></foreignObject><path id="ff50403a85d84651ac3e21bb22e9b49c_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="f5782a59de994f2ea561d96035e9f1d4" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="d106bb0013a94363acee12658d7dec21" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="1c1c30295b314b94b048f54b85a2c877" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="6f0bd8037b014db1860f10237543c3c3" transform="matrix(1, 0, 0, 1, 85, 0)"><p:metadata><p:property name="box"><![CDATA[79,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Motfi/X11]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="79" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="9ee22261e8ce4cbab6c1347d7f08cd09" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="bdf9406788cb4d3c97f5c38dba970083"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#9ee22261e8ce4cbab6c1347d7f08cd09" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#bdf9406788cb4d3c97f5c38dba970083)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="1c162c9e9d9848c1b84cc02fb8704b97"/> + <use xlink:href="#9ee22261e8ce4cbab6c1347d7f08cd09" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="69.75" height="16" p:name="text" id="44ba8531bdf74eba9646fe934d803650" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Motfi/X11</div></foreignObject><path id="44ba8531bdf74eba9646fe934d803650_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="51a48688425845bf8339446b60686535" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="c10d9cfc478a47d3afb729c482bfc453" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="e9015fc0bdff4c1085fcbc58dec34bca" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="7c08c97f61f04be6a3406201c9b0919f" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="b9cd3fcd6414416eb87475b271bc1ab1" transform="matrix(1, 0, 0, 1, 172, 0)"><p:metadata><p:property name="box"><![CDATA[79,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Carbon]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="79" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="6d317d53ba2342169b24d640e19b27f2" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="5c41e246bd75458a9eb87ed4ab17c2a2"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#6d317d53ba2342169b24d640e19b27f2" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#5c41e246bd75458a9eb87ed4ab17c2a2)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="cf6f108127904a629e532ead3521efdd"/> + <use xlink:href="#6d317d53ba2342169b24d640e19b27f2" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="69.75" height="16" p:name="text" id="908a0ba29c4d4e27b51e4b7d5ac655db" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Carbon</div></foreignObject><path id="908a0ba29c4d4e27b51e4b7d5ac655db_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="28caffbb23064b948129f1c39c7bd505" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="f0e1dfda06f84b7296f1c13d14cf4753" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="5ac884e389b14cb0bb6dba2612305e5b" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="9456d110cd40452ba5728b35e76e7a60" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="89ea964f047a43f1b0773420a7c5814b" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g></g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="4690853766e246fe807c93044664d193" transform="matrix(1, 0, 0, 1, 11.4, 10)"><p:metadata><p:property name="box"><![CDATA[252,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[KSM VirtualEditor<br _moz_dirty=""/>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="252" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="c8e79ab0f75a4c8ba11941b8247095ff" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="7cb4b1bbf60e40f0ac990b263b2a683f"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#c8e79ab0f75a4c8ba11941b8247095ff" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#7cb4b1bbf60e40f0ac990b263b2a683f)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="9e95be5ddde94b84ae140604aa036240"/> + <use xlink:href="#c8e79ab0f75a4c8ba11941b8247095ff" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="242.75" height="16" p:name="text" id="f5556a419dae4889bdd35ae8ed344cd1" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">KSM VirtualEditor<br _moz_dirty=""/></div></foreignObject><path id="f5556a419dae4889bdd35ae8ed344cd1_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="24424d14dcba4e17bf123403a04de15d" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g></Content></Page></Pages></Document>
\ No newline at end of file diff --git a/images/piccolo2d-arch.png b/images/piccolo2d-arch.png Binary files differnew file mode 100644 index 0000000..8e38a94 --- /dev/null +++ b/images/piccolo2d-arch.png diff --git a/images/projekthistorie.png b/images/projekthistorie.png Binary files differnew file mode 100644 index 0000000..98b316a --- /dev/null +++ b/images/projekthistorie.png diff --git a/images/projekthistorie.svg b/images/projekthistorie.svg new file mode 100644 index 0000000..10e56a0 --- /dev/null +++ b/images/projekthistorie.svg @@ -0,0 +1,1057 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="900" + height="716.09003" + id="svg2" + version="1.1" + inkscape:version="0.47 r22583" + sodipodi:docname="projekthistorie.svg" + inkscape:export-filename="/home/yvesf/vcs/sa/images/projekthistorie.png" + inkscape:export-xdpi="108" + inkscape:export-ydpi="108"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + <inkscape:perspective + id="perspective2884" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2920" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2984" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3009" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3074" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2895" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2990" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3039" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3061" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3083" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3105" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3135" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3189" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3214" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3273" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3298" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3513" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3513-0" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3573" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4367" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3330" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + id="linearGradient4833" + inkscape:collect="always"> + <stop + id="stop4835" + offset="0" + style="stop-color:#aaccee;stop-opacity:1;" /> + <stop + id="stop4837" + offset="1" + style="stop-color:#336699;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient4825" + inkscape:collect="always"> + <stop + id="stop4827" + offset="0" + style="stop-color:#b3ddfd;stop-opacity:1" /> + <stop + id="stop4829" + offset="1" + style="stop-color:#6699cc;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4833" + id="linearGradient3397" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,2)" + x1="236.25528" + y1="346.04547" + x2="238.03323" + y2="571.05756" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4825" + id="linearGradient3399" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.97319034,0,0,1.0135135,-0.50694579,-13.679101)" + x1="244.84155" + y1="415.74597" + x2="244.84155" + y2="639.99988" /> + <inkscape:perspective + id="perspective3409" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4833-8" + id="linearGradient3397-3" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,2)" + x1="236.25528" + y1="346.04547" + x2="238.03323" + y2="571.05756" /> + <linearGradient + id="linearGradient4833-8" + inkscape:collect="always"> + <stop + id="stop4835-0" + offset="0" + style="stop-color:#aaccee;stop-opacity:1;" /> + <stop + id="stop4837-0" + offset="1" + style="stop-color:#336699;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4825-6" + id="linearGradient3399-3" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.97319034,0,0,1.0135135,-0.50694579,-13.679101)" + x1="244.84155" + y1="415.74597" + x2="244.84155" + y2="639.99988" /> + <linearGradient + id="linearGradient4825-6" + inkscape:collect="always"> + <stop + id="stop4827-8" + offset="0" + style="stop-color:#b3ddfd;stop-opacity:1" /> + <stop + id="stop4829-4" + offset="1" + style="stop-color:#6699cc;stop-opacity:1" /> + </linearGradient> + <inkscape:perspective + id="perspective4291" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4336" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4336-6" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4372" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4396" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2999" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3799" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="364.7646" + inkscape:cy="337.29835" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1436" + inkscape:window-height="864" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-336.27302)"> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="525.1933" + y="882.82428" + id="text2833" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2835" + x="525.1933" + y="882.82428">Pustelnik I/II</tspan><tspan + sodipodi:role="line" + x="525.1933" + y="906.12787" + id="tspan2849">Hirarchien</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="633.43188" + y="881.44586" + id="text2841" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2843" + x="633.43188" + y="881.44586">Klein I/II</tspan><tspan + sodipodi:role="line" + x="633.43188" + y="904.74945" + id="tspan2851">Funktionen</tspan></text> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="72.85714" + y="733.79077" + id="text2845" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2847" + x="72.85714" + y="733.79077" /></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="167.41319" + y="596.01025" + id="text2857" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2859" + x="167.41319" + y="596.01025">Braden</tspan><tspan + sodipodi:role="line" + x="167.41319" + y="619.31384" + id="tspan2861">Druckfunktion</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="167.94116" + y="516.11548" + id="text2857-1" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="167.94116" + y="516.11548" + id="tspan2861-4">Schäfer, Wolf</tspan><tspan + sodipodi:role="line" + x="167.94116" + y="539.41907" + id="tspan2906">Modellierung eines Prozess in ksm</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="418.7916" + y="596.01025" + id="text2857-7" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="418.7916" + y="596.01025" + id="tspan2861-45">Künne</tspan><tspan + sodipodi:role="line" + x="418.7916" + y="619.31384" + id="tspan2942">Zoomfunktion</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="243.07613" + y="991.23877" + id="text2948" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2950" + x="243.07613" + y="991.23877">Dreher</tspan><tspan + sodipodi:role="line" + x="243.07613" + y="1014.5424" + id="tspan2952">Refactoring</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="477.78781" + y="995.34802" + id="text2960" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2962" + x="477.78781" + y="995.34802">Schneider</tspan><tspan + sodipodi:role="line" + x="477.78781" + y="1018.6516" + id="tspan2964">qksm</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="589.53247" + y="995.46179" + id="text2966" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2968" + x="589.53247" + y="995.46179">Obergfell</tspan><tspan + sodipodi:role="line" + x="589.53247" + y="1018.7654" + id="tspan2970">qksm</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="195.56984" + y="760.09833" + id="text2857-6" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="195.56984" + y="760.09833" + id="tspan2861-0">Aigner</tspan><tspan + sodipodi:role="line" + x="195.56984" + y="783.40192" + id="tspan3031">weiterentwicklung</tspan></text> + <path + sodipodi:type="arc" + style="font-size:26.58284569px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;font-family:Arial;-inkscape-font-specification:Arial" + id="path3033" + sodipodi:cx="484.28571" + sodipodi:cy="438.38019" + sodipodi:rx="163.67145" + sodipodi:ry="88.78093" + d="m 647.95715,438.38019 a 163.67145,88.78093 0 1 1 -327.34289,0 163.67145,88.78093 0 1 1 327.34289,0 z" + transform="matrix(0.70131219,0,0,0.70131219,286.5583,571.59278)" /> + <path + sodipodi:type="arc" + style="font-size:26.58284569px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;font-family:Arial;-inkscape-font-specification:Arial" + id="path3035" + sodipodi:cx="560.71429" + sodipodi:cy="567.66589" + sodipodi:rx="567.28046" + sodipodi:ry="74.743156" + d="m 1127.9948,567.66589 a 567.28046,74.743156 0 1 1 -1134.5609621,0 567.28046,74.743156 0 1 1 1134.5609621,0 z" + transform="matrix(0.70131219,0,0,0.70131219,76.43007,597.2268)" /> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="368.34674" + y="992.20038" + id="text2966-6" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="368.34674" + y="992.20038" + id="tspan2970-2">Henn</tspan><tspan + sodipodi:role="line" + x="368.34674" + y="1015.504" + id="tspan3096">Redesign</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="164.02451" + y="882.82104" + id="text2833-1" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="164.02451" + y="882.82104" + id="tspan2849-4">Knobloch, Hauser</tspan><tspan + sodipodi:role="line" + x="164.02451" + y="906.12463" + id="tspan2965">Redesign</tspan></text> + <path + sodipodi:type="arc" + style="font-size:26.58284569px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;font-family:Arial;-inkscape-font-specification:Arial" + id="path3033-5" + sodipodi:cx="484.28571" + sodipodi:cy="438.38019" + sodipodi:rx="136.99586" + sodipodi:ry="84.950554" + d="m 621.28157,438.38019 a 136.99586,84.950554 0 1 1 -273.99173,0 136.99586,84.950554 0 1 1 273.99173,0 z" + transform="matrix(0.70131219,0,0,0.70131219,-107.83043,578.54459)" /> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="392.9646" + y="870.5705" + id="text2833-1-6" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="392.9646" + y="870.5705" + id="tspan2965-0">Lukauer I/II</tspan><tspan + sodipodi:role="line" + x="392.9646" + y="893.87408" + id="tspan3015">hybride</tspan><tspan + sodipodi:role="line" + x="392.9646" + y="917.17767" + id="tspan4386">Knote</tspan></text> + <path + sodipodi:type="arc" + style="font-size:26.58284569px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:4.27769566;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:17.110782, 8.555391, 4.2776955, 8.555391;stroke-dashoffset:0;font-family:Arial;-inkscape-font-specification:Arial" + id="path3033-5-6" + sodipodi:cx="484.28571" + sodipodi:cy="438.38019" + sodipodi:rx="90.940468" + sodipodi:ry="85.663506" + d="m 575.22617,438.38019 a 90.940468,85.663506 0 1 1 -181.88093,0 90.940468,85.663506 0 1 1 181.88093,0 z" + transform="matrix(0.70131219,0,0,0.70131219,93.31215,572.83379)" /> + <path + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:0.70131218px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" + d="M 288.62249,807.32973 268.84761,831.4714" + id="path3098-3" + sodipodi:nodetypes="cc" /> + <path + sodipodi:type="arc" + style="font-size:26.58284569px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;font-family:Arial;-inkscape-font-specification:Arial" + id="path3033-5-0" + sodipodi:cx="484.28571" + sodipodi:cy="438.38019" + sodipodi:rx="134.37703" + sodipodi:ry="58.57143" + d="m 618.66273,438.38019 c 0,32.34811 -60.16264,58.57143 -134.37702,58.57143 -74.21439,0 -134.37703,-26.22332 -134.37703,-58.57143 0,-32.34811 60.16264,-58.57143 134.37703,-58.57143 74.21438,0 134.37702,26.22332 134.37702,58.57143 z" + transform="matrix(0.70131219,0,0,0.70131219,-75.417649,460.86526)" /> + <path + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:0.94193441px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" + d="m 306.18054,851.28926 119.78129,-41.403 100.41037,42.72353" + id="path3119" + sodipodi:nodetypes="ccc" /> + <path + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial;stroke-miterlimit:4;stroke-dasharray:12,6,3,6;stroke-dashoffset:0" + d="m 486.49929,918.94736 39.46022,41.83373 26.79037,9.41805" + id="path3121" + sodipodi:nodetypes="ccc" /> + <path + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:0.70131218px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" + d="M 49.48326,481.21111 629.0818,478.37737" + id="path3155" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="168.40541" + y="436.91006" + id="text3165" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3167" + x="168.40541" + y="436.91006">Mohrlock, Seidel, Schüssler</tspan><tspan + sodipodi:role="line" + x="168.40541" + y="460.21365" + id="tspan3169">Zusammenführung</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="167.41319" + y="352.27405" + id="text3175" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3177" + x="167.41319" + y="352.27405">Kelber, Dawidowski, Lachenmeier, Riess, Maas</tspan><tspan + sodipodi:role="line" + x="167.41319" + y="375.57764" + id="tspan3179">Entwurf als einzelne Module, nicht funktionsfähig</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="168.10501" + y="674.57172" + id="text2857-65" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="168.10501" + y="674.57172" + id="tspan2861-9">Umbeer</tspan><tspan + sodipodi:role="line" + x="168.10501" + y="697.87531" + id="tspan3236">Allg. verbesserungen</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="418.34555" + y="678.49512" + id="text3238" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3240" + x="418.34555" + y="678.49512">Müller</tspan><tspan + sodipodi:role="line" + x="418.34555" + y="701.79871" + id="tspan3242">Visualisierung</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="18.126654" + y="943.25629" + id="text2837-4" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2839-5" + x="18.126654" + y="943.25629">2010</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="18.126654" + y="610.15924" + id="text2853-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2855-5" + x="18.126654" + y="610.15924">2006</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="18.126654" + y="526.88495" + id="text2908-4" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2910-7" + x="18.126654" + y="526.88495">2005</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="18.126654" + y="1026.5305" + id="text2944-4" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2946-4" + x="18.126654" + y="1026.5305">2011</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="18.126654" + y="776.7077" + id="text2853-0-30" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2855-3-78" + x="18.126654" + y="776.7077">2008</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="18.126654" + y="443.61069" + id="text3161-6" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3163-8" + x="18.126654" + y="443.61069">2004</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="18.126654" + y="360.3364" + id="text3171-8" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3173-4" + x="18.126654" + y="360.3364">2003</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="18.126654" + y="693.43347" + id="text2853-4-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2855-7-1" + x="18.126654" + y="693.43347">2007</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="18.126654" + y="859.98199" + id="text2853-0-3-4" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2855-3-7-9" + x="18.126654" + y="859.98199">2009</tspan></text> + <path + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:0.70131218px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" + d="m 287.98446,809.31616 93.52516,41.4701" + id="path3098-3-2" + sodipodi:nodetypes="cc" /> + <path + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:0.70131218px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" + d="m 360.10936,771.1324 213.10693,54.81934" + id="path3098-3-6" + sodipodi:nodetypes="cc" /> + <path + sodipodi:type="arc" + style="font-size:26.58284569px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:4.27769566;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:17.110782, 8.555391, 4.2776955, 8.555391;stroke-dashoffset:0;font-family:Arial;-inkscape-font-specification:Arial" + id="path3035-8-9" + sodipodi:cx="560.71429" + sodipodi:cy="567.66589" + sodipodi:rx="157.92769" + sodipodi:ry="51.593288" + d="m 718.64198,567.66589 a 157.92769,51.593288 0 1 1 -315.85537,0 157.92769,51.593288 0 1 1 315.85537,0 z" + transform="matrix(0.70131219,0,0,0.70131219,178.51423,603.48645)" /> + <g + id="g3387" + transform="translate(-86.941126,91.287843)"> + <g + transform="matrix(0.11636178,0,0,0.11636178,752.51898,671.61164)" + id="g4488"> + <g + id="g4877" + transform="matrix(1.4738293,0,0,1.4738293,-52.053466,-166.9319)"> + <path + id="rect4815" + d="m 98.423865,343.77632 c -11.08,0 -20,8.92 -20,20 l 0,48.5 0,33.71875 0,105.0625 c 0,11.08 8.92,20 20,20 l 279.218745,0 c 11.08,0 20,-8.92 20,-20 l 0,-138.78125 c 0,-11.08 -8.92,-20 -20,-20 l -117.125,0 c -7.54785,-1.18445 -9.7958,-6.84828 -10.375,-11.3125 l 0,-5.625 0,-11.5625 c 0,-11.08 -8.92,-20 -20,-20 l -131.718745,0 z" + style="fill:#6699cc;fill-opacity:1;stroke:none" /> + <rect + style="fill:#336699;fill-opacity:1;stroke:none" + id="rect4817" + width="366.6853" + height="227.28435" + x="54.42783" + y="409.68503" + rx="12.884699" + ry="12.199305" /> + <path + style="fill:url(#linearGradient3397);fill-opacity:1;stroke:none" + d="m 98.423865,345.77632 c -11.08,0 -20,8.92 -20,20 l 0,48.5 0,33.71875 0,105.0625 c 0,11.08 8.92,20 20,20 l 279.218745,0 c 11.08,0 20,-8.92 20,-20 l 0,-138.78125 c 0,-11.08 -8.92,-20 -20,-20 l -117.125,0 c -7.54785,-1.18445 -9.7958,-6.84828 -10.375,-11.3125 l 0,-5.625 0,-11.5625 c 0,-11.08 -8.92,-20 -20,-20 l -131.718745,0 z" + id="path4873" /> + <rect + ry="12.199305" + rx="12.884699" + y="407.68503" + x="54.42783" + height="227.28435" + width="366.6853" + id="rect4869" + style="fill:url(#linearGradient3399);fill-opacity:1;stroke:none" /> + </g> + </g> + <text + id="text3383" + y="717.74658" + x="791.8233" + style="font-size:9.97655201px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="717.74658" + x="791.8233" + id="tspan3385" + sodipodi:role="line" + style="font-style:italic;-inkscape-font-specification:'1942 report Italic'">SVN</tspan></text> + </g> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="672.65381" + y="840.37823" + id="text3041" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3043" + x="672.65381" + y="840.37823">ksm08</tspan></text> + <g + id="g3387-6" + transform="translate(49.761036,232.47912)"> + <g + transform="matrix(0.11636178,0,0,0.11636178,752.51898,671.61164)" + id="g4488-9"> + <g + id="g4877-4" + transform="matrix(1.4738293,0,0,1.4738293,-52.053466,-166.9319)"> + <path + id="rect4815-6" + d="m 98.423865,343.77632 c -11.08,0 -20,8.92 -20,20 l 0,48.5 0,33.71875 0,105.0625 c 0,11.08 8.92,20 20,20 l 279.218745,0 c 11.08,0 20,-8.92 20,-20 l 0,-138.78125 c 0,-11.08 -8.92,-20 -20,-20 l -117.125,0 c -7.54785,-1.18445 -9.7958,-6.84828 -10.375,-11.3125 l 0,-5.625 0,-11.5625 c 0,-11.08 -8.92,-20 -20,-20 l -131.718745,0 z" + style="fill:#6699cc;fill-opacity:1;stroke:none" /> + <rect + style="fill:#336699;fill-opacity:1;stroke:none" + id="rect4817-3" + width="366.6853" + height="227.28435" + x="54.42783" + y="409.68503" + rx="12.884699" + ry="12.199305" /> + <path + style="fill:url(#linearGradient3397-3);fill-opacity:1;stroke:none" + d="m 98.423865,345.77632 c -11.08,0 -20,8.92 -20,20 l 0,48.5 0,33.71875 0,105.0625 c 0,11.08 8.92,20 20,20 l 279.218745,0 c 11.08,0 20,-8.92 20,-20 l 0,-138.78125 c 0,-11.08 -8.92,-20 -20,-20 l -117.125,0 c -7.54785,-1.18445 -9.7958,-6.84828 -10.375,-11.3125 l 0,-5.625 0,-11.5625 c 0,-11.08 -8.92,-20 -20,-20 l -131.718745,0 z" + id="path4873-2" /> + <rect + ry="12.199305" + rx="12.884699" + y="407.68503" + x="54.42783" + height="227.28435" + width="366.6853" + id="rect4869-6" + style="fill:url(#linearGradient3399-3);fill-opacity:1;stroke:none" /> + </g> + </g> + <text + id="text3383-1" + y="717.74658" + x="791.8233" + style="font-size:9.97655201px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="717.74658" + x="791.8233" + id="tspan3385-2" + sodipodi:role="line" + style="font-style:italic;-inkscape-font-specification:'1942 report Italic'">SVN</tspan></text> + </g> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="818.71173" + y="981.15497" + id="text3037" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3039" + x="818.71173" + y="981.15497">ksm</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3471" + width="245" + height="170.83348" + x="605" + y="164.09003" + transform="translate(0,336.27302)" /> + <flowRoot + xml:space="preserve" + id="flowRoot3475" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + transform="translate(29,336.27302)"><flowRegion + id="flowRegion3477"><rect + id="rect3479" + width="200" + height="255" + x="612" + y="171.09003" /></flowRegion><flowPara + id="flowPara4277" + style="font-size:18px">synchronisiert lt. Klein II/S.33</flowPara></flowRoot> <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="397.17462" + y="811.29199" + id="text3497"><tspan + sodipodi:role="line" + id="tspan3499" + x="397.17462" + y="811.29199">1</tspan></text> + <path + sodipodi:type="arc" + style="fill:#000000;fill-opacity:1;stroke:none" + id="path3501" + sodipodi:cx="412.24326" + sodipodi:cy="479.56281" + sodipodi:rx="3.5355339" + sodipodi:ry="3.5355339" + d="m 415.77879,479.56281 c 0,1.95262 -1.58291,3.53553 -3.53553,3.53553 -1.95263,0 -3.53554,-1.58291 -3.53554,-3.53553 0,-1.95263 1.58291,-3.53554 3.53554,-3.53554 1.95262,0 3.53553,1.58291 3.53553,3.53554 z" + transform="translate(1.4142136,334.1517)" /> + <flowRoot + xml:space="preserve" + id="flowRoot3475-6" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + transform="translate(30.73047,429.22918)"><flowRegion + id="flowRegion3477-1"><rect + id="rect3479-2" + width="207" + height="256" + x="612" + y="171.09003" /></flowRegion><flowPara + id="flowPara4277-3" + style="font-size:18px">erster lauffähiger Stand (lt. Wolf S.4)</flowPara></flowRoot> <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="614.1543" + y="527.11108" + id="text3497-7"><tspan + sodipodi:role="line" + id="tspan3499-9" + x="614.1543" + y="527.11108">1</tspan></text> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="616.1543" + y="628.48364" + id="text3497-6"><tspan + sodipodi:role="line" + id="tspan3499-3" + x="616.1543" + y="628.48364">2</tspan></text> + <path + sodipodi:type="arc" + style="fill:#000000;fill-opacity:1;stroke:none" + id="path3501-4" + sodipodi:cx="412.24326" + sodipodi:cy="479.56281" + sodipodi:rx="3.5355339" + sodipodi:ry="3.5355339" + d="m 415.77879,479.56281 c 0,1.95262 -1.58291,3.53553 -3.53553,3.53553 -1.95263,0 -3.53554,-1.58291 -3.53554,-3.53553 0,-1.95263 1.58291,-3.53554 3.53554,-3.53554 1.95262,0 3.53553,1.58291 3.53553,3.53554 z" + transform="translate(193.25675,-0.44975938)" /> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="613.13116" + y="471.44086" + id="text3497-6-1"><tspan + sodipodi:role="line" + id="tspan3499-3-0" + x="613.13116" + y="471.44086">2</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="138.20943" + y="990.42206" + id="text2948-1" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2950-9" + x="138.20943" + y="990.42206">Vogt</tspan><tspan + sodipodi:role="line" + x="138.20943" + y="1013.7256" + id="tspan2952-4">GUI Impr..</tspan></text> + <text + xml:space="preserve" + style="font-size:18.64287376px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial" + x="690.93561" + y="990.88904" + id="text2954" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2956" + x="690.93561" + y="990.88904">Fischer</tspan><tspan + sodipodi:role="line" + x="690.93561" + y="1014.1926" + id="tspan2958">eclipse RCP</tspan></text> + <path + sodipodi:type="arc" + style="font-size:26.58284569px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:none;stroke:#000000;stroke-width:3.2182529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.21825292, 19.30951749;stroke-dashoffset:0;font-family:Arial;-inkscape-font-specification:Arial" + id="path3035-8" + sodipodi:cx="560.71429" + sodipodi:cy="567.66589" + sodipodi:rx="88.415138" + sodipodi:ry="49.810917" + d="m 649.12943,567.66589 a 88.415138,49.810917 0 1 1 -176.83027,0 88.415138,49.810917 0 1 1 176.83027,0 z" + transform="matrix(0.70131219,0,0,0.70131219,345.76423,599.25204)" /> + </g> +</svg> diff --git a/images/rcp-beispiel-maximiert.jpg b/images/rcp-beispiel-maximiert.jpg Binary files differnew file mode 100644 index 0000000..6541d63 --- /dev/null +++ b/images/rcp-beispiel-maximiert.jpg diff --git a/images/rcp-beispiel-umordnung.jpg b/images/rcp-beispiel-umordnung.jpg Binary files differnew file mode 100644 index 0000000..965415b --- /dev/null +++ b/images/rcp-beispiel-umordnung.jpg diff --git a/images/rcp-beispielmodell.jpg b/images/rcp-beispielmodell.jpg Binary files differnew file mode 100644 index 0000000..1aa090c --- /dev/null +++ b/images/rcp-beispielmodell.jpg diff --git a/images/table-editor.jpg b/images/table-editor.jpg Binary files differnew file mode 100644 index 0000000..687bd55 --- /dev/null +++ b/images/table-editor.jpg diff --git a/images/transformation.png b/images/transformation.png Binary files differnew file mode 100644 index 0000000..a3c1d9b --- /dev/null +++ b/images/transformation.png diff --git a/images/transformation.svg b/images/transformation.svg new file mode 100644 index 0000000..47f2600 --- /dev/null +++ b/images/transformation.svg @@ -0,0 +1,1027 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448" + height="1100" + id="svg2" + version="1.1" + inkscape:version="0.47 r22583" + sodipodi:docname="transformation.svg" + inkscape:export-filename="/home/yvesf/vcs/sa/images/transformation.png" + inkscape:export-xdpi="149.97273" + inkscape:export-ydpi="149.97273"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + <inkscape:perspective + id="perspective3631" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3660" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5197" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5222" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5283" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5283-0" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5314" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5351" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5375" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5397" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5438" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5530" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5880" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5939" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5961" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5986" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective6011" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective6573" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective6632" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective6632-3" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective6971" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7009" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7031" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7157" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7400" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7400-1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="281.37167" + inkscape:cy="349.46163" + inkscape:document-units="mm" + inkscape:current-layer="g7060-6" + showgrid="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:snap-global="true" + units="cm" + showborder="true" + inkscape:showpageshadow="true" + borderlayer="false" + inkscape:snap-bbox="true" + inkscape:snap-bbox-edge-midpoints="false" + inkscape:snap-bbox-midpoints="false" + inkscape:object-nodes="false" + inkscape:snap-center="false" + inkscape:window-width="1436" + inkscape:window-height="864" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0"> + <inkscape:grid + type="xygrid" + id="grid5339" + empspacing="5" + visible="true" + enabled="true" + snapvisiblegridlinesonly="true" + units="mm" + spacingx="1mm" + spacingy="1mm" + dotted="false" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,47.638094)"> + <g + id="g7060" + transform="translate(35.433071,-974.40945)"> + <rect + ry="0" + y="1140.9446" + x="88.58268" + height="276.27328" + width="397.14288" + id="rect3603" + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 8;stroke-dashoffset:0" /> + <g + transform="translate(49.928187,1128.7191)" + id="g3611"> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2816" + width="171.80283" + height="47.578693" + x="127.23717" + y="79.548332" + ry="5.5357141" /> + <text + xml:space="preserve" + style="font-size:15.69355583px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="174.38667" + y="95.336945" + id="text3605"><tspan + sodipodi:role="line" + id="tspan3607" + x="174.38667" + y="95.336945">KSM Node</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 126.42857,101.6479 172.14286,0" + id="path3609" /> + <path + transform="translate(10.86484,-89.063855)" + d="m 121.78571,168.61218 c 0,3.45178 -2.79822,6.25 -6.25,6.25 -3.45178,0 -6.25,-2.79822 -6.25,-6.25 0,-3.45178 2.79822,-6.25 6.25,-6.25 3.45178,0 6.25,2.79822 6.25,6.25 z" + sodipodi:ry="6.25" + sodipodi:rx="6.25" + sodipodi:cy="168.61218" + sodipodi:cx="115.53571" + id="path5260-3-9" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" + sodipodi:type="arc" /> + </g> + <text + id="text3617" + y="1135.6191" + x="18.287876" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1135.6191" + x="18.287876" + id="tspan3619" + sodipodi:role="line">(25,25)</tspan></text> + <a + transform="translate(-38.57143,1028.0502)" + id="a6562"> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3621" + width="670" + height="440" + x="38.57143" + y="26.140238" /> + </a> + <g + transform="matrix(0.7507518,0,0,0.7507518,58.947886,633.20437)" + id="text3648" + style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Anonymous Pro;-inkscape-font-specification:Anonymous Pro"> + <path + style="fill:#0000ff" + id="path5468" + d="m 476.51257,652.33069 -5.96093,17.8418 -2.54297,0 -5.90625,-17.8418 1.98242,0 5.20898,15.9414 5.18164,-15.9414 2.03711,0" /> + <path + style="fill:#0000ff" + id="path5470" + d="m 485.86414,654.88733 -2.54297,0 0,-2.55664 2.54297,0 0,2.55664 m 2.54296,15.28516 -7.64257,0 0,-1.59961 2.88476,0 0,-9.54297 -2.88476,0 0,-1.59961 4.77148,0 0,11.14258 2.87109,0 0,1.59961" /> + <path + style="fill:#0000ff" + id="path5472" + d="m 495.4071,664.45764 c 0.13672,1.34896 0.62891,2.42448 1.47657,3.22656 0.84765,0.80209 1.95051,1.20313 3.30859,1.20313 0.95702,0 1.80924,-0.19596 2.55664,-0.58789 0.74739,-0.39193 1.30793,-0.87956 1.68164,-1.46289 l 1.3125,0.90234 c -0.63803,0.89323 -1.3991,1.57683 -2.2832,2.05078 -0.88412,0.46485 -1.97332,0.69727 -3.26758,0.69727 -0.98438,0 -1.88672,-0.16406 -2.70703,-0.49219 -0.82032,-0.32812 -1.53125,-0.78385 -2.13281,-1.36719 -0.59245,-0.59244 -1.05274,-1.29426 -1.38086,-2.10547 -0.32813,-0.81119 -0.49219,-1.71353 -0.49219,-2.70703 0,-0.96614 0.14583,-1.85481 0.4375,-2.66601 0.30078,-0.8203 0.72917,-1.52668 1.28516,-2.11914 0.5651,-0.60155 1.24869,-1.0664 2.05078,-1.39453 0.80208,-0.33723 1.69986,-0.50585 2.69336,-0.50586 1.08462,1e-5 2.03254,0.1823 2.84375,0.54687 0.81118,0.3646 1.48566,0.87046 2.02343,1.51758 0.54687,0.63803 0.94791,1.40366 1.20313,2.29687 0.26431,0.89324 0.39647,1.88217 0.39648,2.9668 l -11.00586,0 m 9.02344,-1.59961 c -0.20964,-1.39452 -0.7155,-2.43358 -1.51758,-3.11719 -0.80209,-0.68358 -1.79102,-1.02537 -2.96679,-1.02539 -0.60157,2e-5 -1.15756,0.10028 -1.66797,0.30079 -0.51042,0.19141 -0.96159,0.46941 -1.35352,0.83398 -0.39193,0.36459 -0.72005,0.80665 -0.98437,1.32617 -0.26433,0.51043 -0.43295,1.07097 -0.50586,1.68164 l 8.99609,0" /> + <path + style="fill:#0000ff" + id="path5474" + d="m 522.01257,657.4303 -2.58398,12.74219 -2.1875,0 -2.03711,-9.35157 -1.92773,9.35157 -2.1875,0 -2.61133,-12.74219 1.99609,0 1.8457,10.19922 1.98243,-10.19922 1.85937,0 2.03711,10.19922 1.8457,-10.19922 1.96875,0" /> + <path + style="fill:#0000ff" + id="path5476" + d="m 536.90125,663.81506 c -2e-5,0.9935 -0.15497,1.89584 -0.46485,2.70703 -0.30991,0.81121 -0.74741,1.51303 -1.3125,2.10547 -0.556,0.58334 -1.23048,1.03907 -2.02344,1.36719 -0.79297,0.32813 -1.68164,0.49219 -2.66601,0.49219 -0.67449,0 -1.33074,-0.12305 -1.96875,-0.36914 -0.62891,-0.2461 -1.2168,-0.61068 -1.76367,-1.09375 l 0,6.24804 -1.87305,0 0,-17.84179 1.87305,0 0,1.17578 c 1.15754,-0.98436 2.40168,-1.47655 3.73242,-1.47656 0.98437,1e-5 1.87304,0.16407 2.66601,0.49218 0.79296,0.31903 1.46744,0.77931 2.02344,1.38086 0.56509,0.59246 1.00259,1.3034 1.3125,2.13282 0.30988,0.82032 0.46483,1.71354 0.46485,2.67968 m -1.87305,0 c -10e-6,-0.71093 -0.10027,-1.37629 -0.30078,-1.99609 -0.19142,-0.6289 -0.48309,-1.17121 -0.875,-1.62695 -0.39194,-0.45572 -0.87501,-0.81575 -1.44922,-1.08008 -0.56511,-0.26431 -1.22136,-0.39647 -1.96875,-0.39649 -0.71094,2e-5 -1.37631,0.13218 -1.9961,0.39649 -0.61068,0.26433 -1.18945,0.69272 -1.73632,1.28515 l 0,6.83594 c 0.54687,0.59245 1.12564,1.01628 1.73632,1.27149 0.61979,0.25521 1.28516,0.38281 1.9961,0.38281 0.74739,0 1.40364,-0.13216 1.96875,-0.39649 0.57421,-0.26432 1.05728,-0.62434 1.44922,-1.08007 0.39191,-0.45573 0.68358,-0.98893 0.875,-1.59961 0.20051,-0.61979 0.30077,-1.28515 0.30078,-1.9961" /> + <path + style="fill:#0000ff" + id="path5478" + d="m 552.54187,663.84241 c -10e-6,0.99349 -0.15952,1.89583 -0.47852,2.70703 -0.3099,0.8112 -0.76108,1.50846 -1.35351,2.0918 -0.58335,0.57422 -1.28517,1.02539 -2.10547,1.35351 -0.82032,0.32813 -1.73634,0.49219 -2.74805,0.49219 -0.99349,0 -1.90039,-0.16406 -2.7207,-0.49219 -0.82032,-0.32812 -1.52669,-0.77929 -2.11914,-1.35351 -0.58333,-0.58334 -1.03451,-1.2806 -1.35352,-2.0918 -0.30989,-0.8112 -0.46484,-1.71354 -0.46484,-2.70703 0,-0.96614 0.15495,-1.86393 0.46484,-2.69336 0.31901,-0.83853 0.77019,-1.54947 1.35352,-2.13281 0.59245,-0.59244 1.29882,-1.05273 2.11914,-1.38086 0.82031,-0.33723 1.72721,-0.50585 2.7207,-0.50586 1.01171,1e-5 1.92773,0.16863 2.74805,0.50586 0.8203,0.32813 1.52212,0.78842 2.10547,1.38086 0.59243,0.58334 1.04361,1.29428 1.35351,2.13281 0.319,0.82943 0.47851,1.72722 0.47852,2.69336 m -1.87305,0 c -10e-6,-0.72916 -0.10938,-1.39908 -0.32812,-2.00977 -0.20965,-0.61978 -0.5241,-1.1621 -0.94336,-1.62695 -0.41928,-0.46483 -0.9297,-0.82942 -1.53125,-1.09375 -0.59246,-0.26431 -1.26238,-0.39647 -2.00977,-0.39649 -0.7474,2e-5 -1.42188,0.13218 -2.02343,0.39649 -0.59246,0.26433 -1.09376,0.62892 -1.50391,1.09375 -0.41016,0.46485 -0.72461,1.00717 -0.94336,1.62695 -0.20964,0.61069 -0.31445,1.28061 -0.31445,2.00977 0,0.72917 0.10481,1.40365 0.31445,2.02343 0.21875,0.61069 0.5332,1.13933 0.94336,1.58594 0.41015,0.44662 0.91145,0.79753 1.50391,1.05274 0.60155,0.25521 1.27603,0.38281 2.02343,0.38281 0.74739,0 1.41731,-0.1276 2.00977,-0.38281 0.60155,-0.25521 1.11197,-0.60612 1.53125,-1.05274 0.41926,-0.44661 0.73371,-0.97525 0.94336,-1.58594 0.21874,-0.61978 0.32811,-1.29426 0.32812,-2.02343" /> + <path + style="fill:#0000ff" + id="path5480" + d="m 566.82898,659.22131 c -0.67449,-0.33722 -1.47657,-0.50584 -2.40625,-0.50586 -0.76563,2e-5 -1.44923,0.16408 -2.05078,0.49219 -0.60157,0.32814 -1.11199,0.76108 -1.53125,1.29883 -0.41928,0.52865 -0.74285,1.13933 -0.9707,1.83203 -0.21876,0.6836 -0.32813,1.38998 -0.32813,2.11914 l 0,4.11524 2.88477,0 0,1.59961 -7.64258,0 0,-1.59961 2.88476,0 0,-9.54297 -2.88476,0 0,-1.59961 4.75781,0 0,3.19922 c 0.85677,-2.33332 2.48372,-3.49999 4.88086,-3.5 0.64712,1e-5 1.20767,0.041 1.68164,0.12304 0.48306,0.082 0.92968,0.22788 1.33984,0.4375 l -0.61523,1.53125" /> + <path + style="fill:#0000ff" + id="path5482" + d="m 582.97546,666.11194 c -0.14584,1.33984 -0.67449,2.40625 -1.58593,3.19922 -0.90236,0.78385 -2.03256,1.17578 -3.39063,1.17578 -0.7474,0 -1.43099,-0.12305 -2.05078,-0.36914 -0.6198,-0.2461 -1.14844,-0.58789 -1.58594,-1.02539 -0.4375,-0.4375 -0.7793,-0.96159 -1.02539,-1.57227 -0.23698,-0.61979 -0.35547,-1.29427 -0.35547,-2.02344 l 0,-6.46679 -2.88476,0 0,-1.59961 2.88476,0 0,-5.09961 1.87305,0 0,5.09961 5.42773,0 0,1.59961 -5.42773,0 0,6.46679 c 0,0.46485 0.0729,0.90235 0.21875,1.3125 0.15494,0.41016 0.36458,0.77019 0.62891,1.08008 0.27343,0.3099 0.60155,0.55599 0.98437,0.73828 0.38281,0.17318 0.82031,0.25977 1.3125,0.25977 0.92968,0 1.70442,-0.28711 2.32422,-0.86133 0.6289,-0.58333 0.98892,-1.33528 1.08008,-2.25586 l 1.57226,0.3418" /> + </g> + <g + transform="translate(261.55144,1210.8528)" + id="g3611-4"> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2816-7" + width="171.80283" + height="47.578693" + x="127.23717" + y="79.548332" + ry="5.5357141" /> + <text + xml:space="preserve" + style="font-size:15.69355583px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="174.38667" + y="95.336945" + id="text3605-8"><tspan + sodipodi:role="line" + id="tspan3607-4" + x="174.38667" + y="95.336945">KSM Node</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 126.42857,101.6479 172.14286,0" + id="path3609-5" /> + </g> + <rect + y="1264.938" + x="491.21387" + height="90.408653" + width="96.469566" + id="rect3686" + style="fill:#ffffff;fill-opacity:0.81089741;fill-rule:evenodd;stroke:none" /> + <text + id="text3617-6" + y="1135.5985" + x="201.81615" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1135.5985" + x="201.81615" + id="tspan3619-3" + sodipodi:role="line">(0,0)</tspan></text> + <text + id="text3617-9" + y="1459.8422" + x="389.76379" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1459.8422" + x="389.76379" + id="tspan3619-95" + sodipodi:role="line">(250,250)</tspan></text> + <text + id="text3617-6-2" + y="1459.8422" + x="513.77954" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1459.8422" + x="513.77954" + id="tspan3619-3-1" + sodipodi:role="line">(200,200)</tspan></text> + <path + transform="translate(-26.116422,975.87571)" + d="m 121.78571,168.61218 c 0,3.45178 -2.79822,6.25 -6.25,6.25 -3.45178,0 -6.25,-2.79822 -6.25,-6.25 0,-3.45178 2.79822,-6.25 6.25,-6.25 3.45178,0 6.25,2.79822 6.25,6.25 z" + sodipodi:ry="6.25" + sodipodi:rx="6.25" + sodipodi:cy="168.61218" + sodipodi:cx="115.53571" + id="path5260" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" + sodipodi:type="arc" /> + <text + id="text3617-91" + y="1194.0942" + x="159.44882" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1194.0942" + x="159.44882" + id="tspan3619-34" + sodipodi:role="line">(50,50)</tspan></text> + <text + id="text3617-6-5" + y="1194.0942" + x="341.56537" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1194.0942" + x="341.56537" + id="tspan3619-3-8" + sodipodi:role="line">(25,25)</tspan></text> + <g + transform="matrix(0.31250009,0,0,0.55421684,305.54374,827.21851)" + id="g5423"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect5337" + width="16" + height="480" + x="605" + y="577.35956" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect5341" + width="16" + height="9" + x="605" + y="567.35956" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect5341-5" + width="16" + height="8.9999609" + x="605" + y="1058.3596" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 608,1060.3596 10,0 -5,5 -5,-5 z" + id="path5365" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 618,574.3596 -10,0 5,-5 5,5 z" + id="path5365-7" + sodipodi:nodetypes="cccc" /> + </g> + <g + transform="matrix(0,0.31250009,-0.55421684,0,677.20953,1238.3707)" + id="g5423-3"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect5337-3" + width="16" + height="700.91309" + x="605" + y="356.44656" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect5341-8" + width="16" + height="9" + x="605" + y="345.42477" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect5341-5-9" + width="16" + height="8.9999609" + x="605" + y="1058.3596" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 608,1060.3596 10,0 -5,5 -5,-5 z" + id="path5365-5" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 618,352.42481 -10,0 5,-5 5,5 z" + id="path5365-7-5" + sodipodi:nodetypes="cccc" /> + </g> + <g + transform="translate(-35.714287,466.11406)" + id="text5505" + style="font-size:21.70134163px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Anonymous Pro;-inkscape-font-specification:Anonymous Pro"> + <path + id="path5510" + style="fill:#ff0000" + d="m 644.96058,578.7356 c -0.36029,1.1868 -0.95015,2.12987 -1.7696,2.82923 -0.81945,0.6923 -1.85083,1.03844 -3.09413,1.03844 -0.96781,0 -1.78726,-0.19779 -2.45836,-0.59339 -0.6711,-0.40266 -1.22211,-0.93248 -1.65303,-1.58946 -0.42385,-0.65697 -0.73115,-1.41637 -0.92188,-2.27821 -0.18367,-0.86183 -0.27551,-1.75546 -0.27551,-2.68088 0,-0.92541 0.0918,-1.81903 0.27551,-2.68088 0.19073,-0.86183 0.49803,-1.62476 0.92188,-2.28881 0.43092,-0.66403 0.98193,-1.19385 1.65303,-1.58946 0.6711,-0.40264 1.49055,-0.60398 2.45836,-0.60399 0.85477,10e-6 1.58591,0.1519 2.19344,0.45564 0.60752,0.30378 1.0561,0.76649 1.34574,1.38813 l 0,-1.61065 1.23978,0 0,4.53524 -1.23978,0 c -10e-6,-0.48742 -0.0954,-0.9466 -0.2861,-1.37752 -0.18368,-0.43798 -0.43446,-0.81591 -0.75234,-1.13381 -0.3179,-0.31788 -0.69584,-0.56513 -1.13381,-0.74175 -0.43093,-0.18366 -0.88657,-0.27549 -1.36693,-0.27551 -0.74882,2e-5 -1.37047,0.17662 -1.86496,0.52982 -0.48744,0.35323 -0.8795,0.81593 -1.1762,1.38813 -0.2967,0.57221 -0.50862,1.20799 -0.63578,1.90734 -0.12009,0.69937 -0.18014,1.39873 -0.18014,2.09808 0,0.6923 0.06,1.39166 0.18014,2.09808 0.12716,0.69936 0.33908,1.33161 0.63578,1.89675 0.2967,0.55807 0.68876,1.01725 1.1762,1.37752 0.49449,0.35322 1.11614,0.52982 1.86496,0.52982 1.72367,0 2.92459,-1.04197 3.60276,-3.12593 l 1.26097,0.49803" /> + <path + id="path5512" + style="fill:#ff0000" + d="m 646.84673,579.68928 c 0,-0.62165 0.15541,-1.14087 0.46624,-1.55767 0.31082,-0.42385 0.71702,-0.75587 1.21858,-0.99606 0.50862,-0.24724 1.08789,-0.42385 1.7378,-0.52981 0.65697,-0.11303 1.32454,-0.16954 2.00271,-0.16955 0.26137,10e-6 0.49449,0.004 0.69936,0.0106 0.21192,0.007 0.40972,0.0177 0.5934,0.0318 0.19073,0.0141 0.38146,0.0318 0.5722,0.053 0.19073,0.0212 0.39912,0.0459 0.62519,0.0742 l 0,-0.70996 c -10e-6,-0.48036 -0.10597,-0.87596 -0.31789,-1.18679 -0.20487,-0.31082 -0.45919,-0.55454 -0.76294,-0.73115 -0.30377,-0.18366 -0.62166,-0.31082 -0.95367,-0.38147 -0.33203,-0.0777 -0.6146,-0.11655 -0.84771,-0.11656 -0.73469,10e-6 -1.41285,0.0989 -2.0345,0.2967 -0.62166,0.19781 -1.20092,0.46271 -1.73781,0.79472 l -0.65697,-1.09142 c 0.5934,-0.36027 1.25743,-0.65343 1.99212,-0.8795 0.74174,-0.23311 1.55412,-0.34967 2.43716,-0.34968 0.53687,10e-6 1.06316,0.0707 1.57886,0.21193 0.52274,0.13423 0.98898,0.34616 1.39871,0.63578 0.41679,0.28258 0.74881,0.65698 0.99606,1.12321 0.24724,0.46625 0.37087,1.02433 0.37088,1.67423 l 0,6.46378 -1.4623,0 0,-1.65303 c -0.25432,0.31789 -0.54396,0.59693 -0.8689,0.83711 -0.3179,0.24018 -0.65345,0.43798 -1.00666,0.59339 -0.35322,0.14835 -0.70643,0.26138 -1.05963,0.33909 -0.35322,0.0848 -0.68877,0.12715 -1.00666,0.12715 -1.30688,0 -2.29588,-0.25078 -2.96698,-0.75234 -0.6711,-0.50156 -1.00665,-1.22211 -1.00665,-2.16165 m 3.97363,1.67422 c 0.60752,0 1.15147,-0.0883 1.63184,-0.26491 0.48743,-0.18367 0.90069,-0.40972 1.23978,-0.67817 0.33907,-0.26843 0.60045,-0.55454 0.78413,-0.8583 0.19072,-0.30376 0.28609,-0.57926 0.2861,-0.82652 l 0,-0.93248 c -0.47331,-0.0706 -0.92896,-0.10949 -1.36693,-0.11656 -0.43093,-0.007 -0.80533,-0.0106 -1.12322,-0.0106 -0.52275,0 -1.02785,0.0353 -1.51528,0.10596 -0.48037,0.0707 -0.90069,0.18721 -1.26096,0.34968 -0.36028,0.15542 -0.64991,0.36028 -0.8689,0.61459 -0.219,0.25432 -0.32849,0.56867 -0.32849,0.94308 0,0.41679 0.20133,0.80179 0.60399,1.155 0.40973,0.34615 1.04904,0.51922 1.91794,0.51922" /> + <path + id="path5514" + style="fill:#ff0000" + d="m 668.09243,582.35956 -1.4623,0 0,-6.09291 c -10e-6,-0.88302 -0.19074,-1.56825 -0.5722,-2.05569 -0.38148,-0.48743 -0.9996,-0.73114 -1.85437,-0.73115 -0.53688,10e-6 -1.02432,0.12363 -1.46229,0.37087 -0.43093,0.24726 -0.79827,0.57928 -1.10203,0.99606 -0.30376,0.40973 -0.53688,0.88304 -0.69936,1.41991 -0.15541,0.52983 -0.23312,1.08437 -0.23312,1.66363 l 0,4.42928 -1.4517,0 0,-9.87581 1.4517,0 0,2.47955 c 0.69936,-1.80844 1.9462,-2.71266 3.74052,-2.71267 2.43009,10e-6 3.64514,1.33868 3.64515,4.01602 l 0,6.09291" /> + <path + id="path5516" + style="fill:#ff0000" + d="m 680.80806,572.48375 -4.28093,9.87581 -1.94973,0 -4.30212,-9.87581 1.7378,0 3.53918,8.65723 3.51799,-8.65723 1.73781,0" /> + <path + id="path5518" + style="fill:#ff0000" + d="m 682.45049,579.68928 c 0,-0.62165 0.15541,-1.14087 0.46624,-1.55767 0.31083,-0.42385 0.71702,-0.75587 1.21858,-0.99606 0.50862,-0.24724 1.08789,-0.42385 1.7378,-0.52981 0.65697,-0.11303 1.32454,-0.16954 2.00272,-0.16955 0.26137,10e-6 0.49449,0.004 0.69936,0.0106 0.21192,0.007 0.40972,0.0177 0.59339,0.0318 0.19073,0.0141 0.38146,0.0318 0.57221,0.053 0.19072,0.0212 0.39912,0.0459 0.62518,0.0742 l 0,-0.70996 c -10e-6,-0.48036 -0.10597,-0.87596 -0.31789,-1.18679 -0.20487,-0.31082 -0.45918,-0.55454 -0.76294,-0.73115 -0.30377,-0.18366 -0.62166,-0.31082 -0.95367,-0.38147 -0.33203,-0.0777 -0.61459,-0.11655 -0.84771,-0.11656 -0.73468,10e-6 -1.41285,0.0989 -2.0345,0.2967 -0.62166,0.19781 -1.20092,0.46271 -1.7378,0.79472 l -0.65698,-1.09142 c 0.5934,-0.36027 1.25744,-0.65343 1.99212,-0.8795 0.74174,-0.23311 1.55413,-0.34967 2.43716,-0.34968 0.53688,10e-6 1.06316,0.0707 1.57886,0.21193 0.52274,0.13423 0.98898,0.34616 1.39872,0.63578 0.41678,0.28258 0.7488,0.65698 0.99606,1.12321 0.24723,0.46625 0.37086,1.02433 0.37087,1.67423 l 0,6.46378 -1.4623,0 0,-1.65303 c -0.25432,0.31789 -0.54395,0.59693 -0.8689,0.83711 -0.3179,0.24018 -0.65345,0.43798 -1.00666,0.59339 -0.35321,0.14835 -0.70642,0.26138 -1.05963,0.33909 -0.35322,0.0848 -0.68877,0.12715 -1.00665,0.12715 -1.30689,0 -2.29588,-0.25078 -2.96699,-0.75234 -0.6711,-0.50156 -1.00665,-1.22211 -1.00665,-2.16165 m 3.97364,1.67422 c 0.60752,0 1.15146,-0.0883 1.63183,-0.26491 0.48743,-0.18367 0.90069,-0.40972 1.23978,-0.67817 0.33907,-0.26843 0.60045,-0.55454 0.78413,-0.8583 0.19073,-0.30376 0.28609,-0.57926 0.2861,-0.82652 l 0,-0.93248 c -0.47331,-0.0706 -0.92895,-0.10949 -1.36693,-0.11656 -0.43092,-0.007 -0.80533,-0.0106 -1.12321,-0.0106 -0.52276,0 -1.02785,0.0353 -1.51528,0.10596 -0.48037,0.0707 -0.9007,0.18721 -1.26097,0.34968 -0.36028,0.15542 -0.64991,0.36028 -0.8689,0.61459 -0.21899,0.25432 -0.32849,0.56867 -0.32849,0.94308 0,0.41679 0.20133,0.80179 0.60399,1.155 0.40973,0.34615 1.04904,0.51922 1.91795,0.51922" /> + <path + id="path5520" + style="fill:#ff0000" + d="m 703.9505,579.6257 c -1e-5,0.57927 -0.14483,1.05964 -0.43445,1.4411 -0.28964,0.38147 -0.66405,0.68523 -1.12321,0.91129 -0.45212,0.22606 -0.96075,0.385 -1.52588,0.47684 -0.55808,0.0989 -1.10556,0.14834 -1.64244,0.14834 -0.89716,0 -1.79078,-0.13068 -2.68087,-0.39206 -0.8901,-0.26138 -1.6601,-0.60399 -2.31001,-1.02785 l 0.64638,-1.25037 c 0.72761,0.45918 1.44463,0.81239 2.15106,1.05964 0.70642,0.24725 1.43757,0.37087 2.19344,0.37087 2.18285,0 3.27427,-0.56514 3.27428,-1.69542 -10e-6,-0.2755 -0.0918,-0.49802 -0.27551,-0.66757 -0.17661,-0.1766 -0.41679,-0.31788 -0.72055,-0.42385 -0.30377,-0.11303 -0.65345,-0.20133 -1.04904,-0.26491 -0.38854,-0.0636 -0.79826,-0.12362 -1.22918,-0.18014 -0.55101,-0.0777 -1.09849,-0.16954 -1.64243,-0.2755 -0.54395,-0.10596 -1.04198,-0.26491 -1.49409,-0.47684 -0.44505,-0.21192 -0.80532,-0.49449 -1.08083,-0.84771 -0.26844,-0.3532 -0.40266,-0.81944 -0.40266,-1.39872 0,-0.49449 0.12363,-0.92187 0.37087,-1.28216 0.25432,-0.36026 0.58987,-0.66049 1.00666,-0.90069 0.42385,-0.24017 0.91835,-0.41678 1.48349,-0.52982 0.56513,-0.11301 1.15147,-0.16953 1.75899,-0.16954 0.8689,10e-6 1.64597,0.10244 2.3312,0.3073 0.68523,0.19781 1.30335,0.48391 1.85437,0.8583 l -0.5828,1.13381 c -0.56515,-0.39559 -1.13735,-0.67109 -1.71661,-0.82651 -0.57928,-0.16247 -1.20799,-0.24371 -1.88616,-0.24372 -0.30376,10e-6 -0.64285,0.0283 -1.01725,0.0848 -0.36734,0.0495 -0.70995,0.14129 -1.02784,0.27551 -0.3179,0.12716 -0.58634,0.2967 -0.80533,0.50862 -0.21192,0.20487 -0.31789,0.46625 -0.31789,0.78413 0,0.27551 0.0883,0.49804 0.26491,0.66757 0.18367,0.16249 0.42739,0.30024 0.73115,0.41326 0.30376,0.10597 0.64991,0.19074 1.03844,0.25431 0.3956,0.0636 0.80886,0.12363 1.23978,0.18014 0.53687,0.0777 1.07729,0.16955 1.62124,0.27551 0.551,0.10597 1.04903,0.26138 1.49409,0.46624 0.4521,0.20486 0.81591,0.4839 1.09142,0.83711 0.2755,0.35321 0.41325,0.81945 0.41326,1.39872" /> + </g> + <text + id="text3617-17-1-2" + y="1134.7777" + x="110.16586" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1134.7777" + x="110.16586" + id="tspan3619-93-6-1" + sodipodi:role="line">(25,25)</tspan></text> + <text + id="text3617-6-5-0" + y="1194.0942" + x="252.9827" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1194.0942" + x="252.9827" + id="tspan3619-3-8-5" + sodipodi:role="line">(50,50)</tspan></text> + <text + id="text3617-97" + y="1459.8422" + x="265.74802" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1459.8422" + x="265.74802" + id="tspan3619-38" + sodipodi:role="line">(250,250)</tspan></text> + <path + transform="translate(369.89736,1248.7104)" + d="m 121.78571,168.61218 c 0,3.45178 -2.79822,6.25 -6.25,6.25 -3.45178,0 -6.25,-2.79822 -6.25,-6.25 0,-3.45178 2.79822,-6.25 6.25,-6.25 3.45178,0 6.25,2.79822 6.25,6.25 z" + sodipodi:ry="6.25" + sodipodi:rx="6.25" + sodipodi:cy="168.61218" + sodipodi:cx="115.53571" + id="path5260-9" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" + sodipodi:type="arc" /> + <text + id="text3617-0" + y="1048.8186" + x="-3.5433071" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1048.8186" + x="-3.5433071" + id="tspan3619-9" + sodipodi:role="line">(0,0)</tspan></text> + <text + id="text3617-6-23" + y="1048.798" + x="116.92913" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1048.798" + x="116.92913" + id="tspan3619-3-18" + sodipodi:role="line">(-25,-25)</tspan></text> + <text + id="text3617-17-1-2-7" + y="1047.9772" + x="56.692913" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="1047.9772" + x="56.692913" + id="tspan3619-93-6-1-4" + sodipodi:role="line">(0,0)</tspan></text> + </g> + <g + id="g7060-6"> + <rect + ry="0" + y="643.55304" + x="124.51575" + height="276.27328" + width="397.14288" + id="rect3603-4" + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 8;stroke-dashoffset:0" /> + <g + transform="matrix(2,0,0,2,28.990232,588.54083)" + id="g3611-8"> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2816-5" + width="171.80283" + height="47.578693" + x="127.23717" + y="79.548332" + ry="5.5357141" /> + <text + xml:space="preserve" + style="font-size:15.69355583px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="174.38667" + y="95.336945" + id="text3605-6"><tspan + sodipodi:role="line" + id="tspan3607-2" + x="174.38667" + y="95.336945">KSM Node</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 126.42857,101.6479 172.14286,0" + id="path3609-52" /> + </g> + <text + id="text3617-69" + y="638.2276" + x="54.220947" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="638.2276" + x="54.220947" + id="tspan3619-1" + sodipodi:role="line">(25,25)</tspan></text> + <a + transform="translate(-2.6383593,530.65868)" + id="a6562-3"> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3621-3" + width="670" + height="440" + x="38.57143" + y="26.140238" /> + </a> + <g + transform="matrix(0.7507518,0,0,0.7507518,94.880953,135.81282)" + id="text3648-1" + style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Anonymous Pro;-inkscape-font-specification:Anonymous Pro"> + <path + style="fill:#0000ff" + id="path5468-5" + d="m 476.51257,652.33069 -5.96093,17.8418 -2.54297,0 -5.90625,-17.8418 1.98242,0 5.20898,15.9414 5.18164,-15.9414 2.03711,0" /> + <path + style="fill:#0000ff" + id="path5470-2" + d="m 485.86414,654.88733 -2.54297,0 0,-2.55664 2.54297,0 0,2.55664 m 2.54296,15.28516 -7.64257,0 0,-1.59961 2.88476,0 0,-9.54297 -2.88476,0 0,-1.59961 4.77148,0 0,11.14258 2.87109,0 0,1.59961" /> + <path + style="fill:#0000ff" + id="path5472-6" + d="m 495.4071,664.45764 c 0.13672,1.34896 0.62891,2.42448 1.47657,3.22656 0.84765,0.80209 1.95051,1.20313 3.30859,1.20313 0.95702,0 1.80924,-0.19596 2.55664,-0.58789 0.74739,-0.39193 1.30793,-0.87956 1.68164,-1.46289 l 1.3125,0.90234 c -0.63803,0.89323 -1.3991,1.57683 -2.2832,2.05078 -0.88412,0.46485 -1.97332,0.69727 -3.26758,0.69727 -0.98438,0 -1.88672,-0.16406 -2.70703,-0.49219 -0.82032,-0.32812 -1.53125,-0.78385 -2.13281,-1.36719 -0.59245,-0.59244 -1.05274,-1.29426 -1.38086,-2.10547 -0.32813,-0.81119 -0.49219,-1.71353 -0.49219,-2.70703 0,-0.96614 0.14583,-1.85481 0.4375,-2.66601 0.30078,-0.8203 0.72917,-1.52668 1.28516,-2.11914 0.5651,-0.60155 1.24869,-1.0664 2.05078,-1.39453 0.80208,-0.33723 1.69986,-0.50585 2.69336,-0.50586 1.08462,1e-5 2.03254,0.1823 2.84375,0.54687 0.81118,0.3646 1.48566,0.87046 2.02343,1.51758 0.54687,0.63803 0.94791,1.40366 1.20313,2.29687 0.26431,0.89324 0.39647,1.88217 0.39648,2.9668 l -11.00586,0 m 9.02344,-1.59961 c -0.20964,-1.39452 -0.7155,-2.43358 -1.51758,-3.11719 -0.80209,-0.68358 -1.79102,-1.02537 -2.96679,-1.02539 -0.60157,2e-5 -1.15756,0.10028 -1.66797,0.30079 -0.51042,0.19141 -0.96159,0.46941 -1.35352,0.83398 -0.39193,0.36459 -0.72005,0.80665 -0.98437,1.32617 -0.26433,0.51043 -0.43295,1.07097 -0.50586,1.68164 l 8.99609,0" /> + <path + style="fill:#0000ff" + id="path5474-9" + d="m 522.01257,657.4303 -2.58398,12.74219 -2.1875,0 -2.03711,-9.35157 -1.92773,9.35157 -2.1875,0 -2.61133,-12.74219 1.99609,0 1.8457,10.19922 1.98243,-10.19922 1.85937,0 2.03711,10.19922 1.8457,-10.19922 1.96875,0" /> + <path + style="fill:#0000ff" + id="path5476-4" + d="m 536.90125,663.81506 c -2e-5,0.9935 -0.15497,1.89584 -0.46485,2.70703 -0.30991,0.81121 -0.74741,1.51303 -1.3125,2.10547 -0.556,0.58334 -1.23048,1.03907 -2.02344,1.36719 -0.79297,0.32813 -1.68164,0.49219 -2.66601,0.49219 -0.67449,0 -1.33074,-0.12305 -1.96875,-0.36914 -0.62891,-0.2461 -1.2168,-0.61068 -1.76367,-1.09375 l 0,6.24804 -1.87305,0 0,-17.84179 1.87305,0 0,1.17578 c 1.15754,-0.98436 2.40168,-1.47655 3.73242,-1.47656 0.98437,1e-5 1.87304,0.16407 2.66601,0.49218 0.79296,0.31903 1.46744,0.77931 2.02344,1.38086 0.56509,0.59246 1.00259,1.3034 1.3125,2.13282 0.30988,0.82032 0.46483,1.71354 0.46485,2.67968 m -1.87305,0 c -10e-6,-0.71093 -0.10027,-1.37629 -0.30078,-1.99609 -0.19142,-0.6289 -0.48309,-1.17121 -0.875,-1.62695 -0.39194,-0.45572 -0.87501,-0.81575 -1.44922,-1.08008 -0.56511,-0.26431 -1.22136,-0.39647 -1.96875,-0.39649 -0.71094,2e-5 -1.37631,0.13218 -1.9961,0.39649 -0.61068,0.26433 -1.18945,0.69272 -1.73632,1.28515 l 0,6.83594 c 0.54687,0.59245 1.12564,1.01628 1.73632,1.27149 0.61979,0.25521 1.28516,0.38281 1.9961,0.38281 0.74739,0 1.40364,-0.13216 1.96875,-0.39649 0.57421,-0.26432 1.05728,-0.62434 1.44922,-1.08007 0.39191,-0.45573 0.68358,-0.98893 0.875,-1.59961 0.20051,-0.61979 0.30077,-1.28515 0.30078,-1.9961" /> + <path + style="fill:#0000ff" + id="path5478-4" + d="m 552.54187,663.84241 c -10e-6,0.99349 -0.15952,1.89583 -0.47852,2.70703 -0.3099,0.8112 -0.76108,1.50846 -1.35351,2.0918 -0.58335,0.57422 -1.28517,1.02539 -2.10547,1.35351 -0.82032,0.32813 -1.73634,0.49219 -2.74805,0.49219 -0.99349,0 -1.90039,-0.16406 -2.7207,-0.49219 -0.82032,-0.32812 -1.52669,-0.77929 -2.11914,-1.35351 -0.58333,-0.58334 -1.03451,-1.2806 -1.35352,-2.0918 -0.30989,-0.8112 -0.46484,-1.71354 -0.46484,-2.70703 0,-0.96614 0.15495,-1.86393 0.46484,-2.69336 0.31901,-0.83853 0.77019,-1.54947 1.35352,-2.13281 0.59245,-0.59244 1.29882,-1.05273 2.11914,-1.38086 0.82031,-0.33723 1.72721,-0.50585 2.7207,-0.50586 1.01171,1e-5 1.92773,0.16863 2.74805,0.50586 0.8203,0.32813 1.52212,0.78842 2.10547,1.38086 0.59243,0.58334 1.04361,1.29428 1.35351,2.13281 0.319,0.82943 0.47851,1.72722 0.47852,2.69336 m -1.87305,0 c -10e-6,-0.72916 -0.10938,-1.39908 -0.32812,-2.00977 -0.20965,-0.61978 -0.5241,-1.1621 -0.94336,-1.62695 -0.41928,-0.46483 -0.9297,-0.82942 -1.53125,-1.09375 -0.59246,-0.26431 -1.26238,-0.39647 -2.00977,-0.39649 -0.7474,2e-5 -1.42188,0.13218 -2.02343,0.39649 -0.59246,0.26433 -1.09376,0.62892 -1.50391,1.09375 -0.41016,0.46485 -0.72461,1.00717 -0.94336,1.62695 -0.20964,0.61069 -0.31445,1.28061 -0.31445,2.00977 0,0.72917 0.10481,1.40365 0.31445,2.02343 0.21875,0.61069 0.5332,1.13933 0.94336,1.58594 0.41015,0.44662 0.91145,0.79753 1.50391,1.05274 0.60155,0.25521 1.27603,0.38281 2.02343,0.38281 0.74739,0 1.41731,-0.1276 2.00977,-0.38281 0.60155,-0.25521 1.11197,-0.60612 1.53125,-1.05274 0.41926,-0.44661 0.73371,-0.97525 0.94336,-1.58594 0.21874,-0.61978 0.32811,-1.29426 0.32812,-2.02343" /> + <path + style="fill:#0000ff" + id="path5480-6" + d="m 566.82898,659.22131 c -0.67449,-0.33722 -1.47657,-0.50584 -2.40625,-0.50586 -0.76563,2e-5 -1.44923,0.16408 -2.05078,0.49219 -0.60157,0.32814 -1.11199,0.76108 -1.53125,1.29883 -0.41928,0.52865 -0.74285,1.13933 -0.9707,1.83203 -0.21876,0.6836 -0.32813,1.38998 -0.32813,2.11914 l 0,4.11524 2.88477,0 0,1.59961 -7.64258,0 0,-1.59961 2.88476,0 0,-9.54297 -2.88476,0 0,-1.59961 4.75781,0 0,3.19922 c 0.85677,-2.33332 2.48372,-3.49999 4.88086,-3.5 0.64712,1e-5 1.20767,0.041 1.68164,0.12304 0.48306,0.082 0.92968,0.22788 1.33984,0.4375 l -0.61523,1.53125" /> + <path + style="fill:#0000ff" + id="path5482-0" + d="m 582.97546,666.11194 c -0.14584,1.33984 -0.67449,2.40625 -1.58593,3.19922 -0.90236,0.78385 -2.03256,1.17578 -3.39063,1.17578 -0.7474,0 -1.43099,-0.12305 -2.05078,-0.36914 -0.6198,-0.2461 -1.14844,-0.58789 -1.58594,-1.02539 -0.4375,-0.4375 -0.7793,-0.96159 -1.02539,-1.57227 -0.23698,-0.61979 -0.35547,-1.29427 -0.35547,-2.02344 l 0,-6.46679 -2.88476,0 0,-1.59961 2.88476,0 0,-5.09961 1.87305,0 0,5.09961 5.42773,0 0,1.59961 -5.42773,0 0,6.46679 c 0,0.46485 0.0729,0.90235 0.21875,1.3125 0.15494,0.41016 0.36458,0.77019 0.62891,1.08008 0.27343,0.3099 0.60155,0.55599 0.98437,0.73828 0.38281,0.17318 0.82031,0.25977 1.3125,0.25977 0.92968,0 1.70442,-0.28711 2.32422,-0.86133 0.6289,-0.58333 0.98892,-1.33528 1.08008,-2.25586 l 1.57226,0.3418" /> + </g> + <rect + y="743.02283" + x="523.18762" + height="104.87294" + width="114.60768" + id="rect3686-0" + style="fill:#ffffff;fill-opacity:0.81089741;fill-rule:evenodd;stroke:none" /> + <text + id="text3617-6-0" + y="638.20697" + x="237.74922" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="638.20697" + x="237.74922" + id="tspan3619-3-2" + sodipodi:role="line">(0,0)</tspan></text> + <text + id="text3617-9-2" + y="962.45062" + x="425.69684" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="962.45062" + x="425.69684" + id="tspan3619-95-6" + sodipodi:role="line">(250,250)</tspan></text> + <text + id="text3617-6-2-9" + y="962.45062" + x="549.71265" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="962.45062" + x="549.71265" + id="tspan3619-3-1-0" + sodipodi:role="line">(200,200)</tspan></text> + <path + transform="translate(9.8166487,478.48416)" + d="m 121.78571,168.61218 c 0,3.45178 -2.79822,6.25 -6.25,6.25 -3.45178,0 -6.25,-2.79822 -6.25,-6.25 0,-3.45178 2.79822,-6.25 6.25,-6.25 3.45178,0 6.25,2.79822 6.25,6.25 z" + sodipodi:ry="6.25" + sodipodi:rx="6.25" + sodipodi:cy="168.61218" + sodipodi:cx="115.53571" + id="path5260-3" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" + sodipodi:type="arc" /> + <text + id="text3617-91-5" + y="742.76575" + x="269.79135" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="742.76575" + x="269.79135" + id="tspan3619-34-5" + sodipodi:role="line">(50,50)</tspan></text> + <text + id="text3617-6-5-8" + y="742.76575" + x="485.03101" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="742.76575" + x="485.03101" + id="tspan3619-3-8-7" + sodipodi:role="line">(100,100)</tspan></text> + <g + transform="matrix(0.31250009,0,0,0.55421684,341.47681,329.82696)" + id="g5423-1"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect5337-7" + width="16" + height="480" + x="605" + y="577.35956" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect5341-0" + width="16" + height="9" + x="605" + y="567.35956" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect5341-5-6" + width="16" + height="8.9999609" + x="605" + y="1058.3596" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 608,1060.3596 10,0 -5,5 -5,-5 z" + id="path5365-0" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 618,574.3596 -10,0 5,-5 5,5 z" + id="path5365-7-4" + sodipodi:nodetypes="cccc" /> + </g> + <g + transform="matrix(0,0.31250009,-0.55421684,0,713.1426,740.97918)" + id="g5423-3-1"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect5337-3-3" + width="16" + height="700.91309" + x="605" + y="356.44656" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect5341-8-0" + width="16" + height="9" + x="605" + y="345.42477" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect5341-5-9-2" + width="16" + height="8.9999609" + x="605" + y="1058.3596" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 608,1060.3596 10,0 -5,5 -5,-5 z" + id="path5365-5-9" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 618,352.42481 -10,0 5,-5 5,5 z" + id="path5365-7-5-6" + sodipodi:nodetypes="cccc" /> + </g> + <g + transform="translate(0.21878366,-31.277496)" + id="text5505-0" + style="font-size:21.70134163px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Anonymous Pro;-inkscape-font-specification:Anonymous Pro"> + <path + id="path5510-9" + style="fill:#ff0000" + d="m 644.96058,578.7356 c -0.36029,1.1868 -0.95015,2.12987 -1.7696,2.82923 -0.81945,0.6923 -1.85083,1.03844 -3.09413,1.03844 -0.96781,0 -1.78726,-0.19779 -2.45836,-0.59339 -0.6711,-0.40266 -1.22211,-0.93248 -1.65303,-1.58946 -0.42385,-0.65697 -0.73115,-1.41637 -0.92188,-2.27821 -0.18367,-0.86183 -0.27551,-1.75546 -0.27551,-2.68088 0,-0.92541 0.0918,-1.81903 0.27551,-2.68088 0.19073,-0.86183 0.49803,-1.62476 0.92188,-2.28881 0.43092,-0.66403 0.98193,-1.19385 1.65303,-1.58946 0.6711,-0.40264 1.49055,-0.60398 2.45836,-0.60399 0.85477,10e-6 1.58591,0.1519 2.19344,0.45564 0.60752,0.30378 1.0561,0.76649 1.34574,1.38813 l 0,-1.61065 1.23978,0 0,4.53524 -1.23978,0 c -10e-6,-0.48742 -0.0954,-0.9466 -0.2861,-1.37752 -0.18368,-0.43798 -0.43446,-0.81591 -0.75234,-1.13381 -0.3179,-0.31788 -0.69584,-0.56513 -1.13381,-0.74175 -0.43093,-0.18366 -0.88657,-0.27549 -1.36693,-0.27551 -0.74882,2e-5 -1.37047,0.17662 -1.86496,0.52982 -0.48744,0.35323 -0.8795,0.81593 -1.1762,1.38813 -0.2967,0.57221 -0.50862,1.20799 -0.63578,1.90734 -0.12009,0.69937 -0.18014,1.39873 -0.18014,2.09808 0,0.6923 0.06,1.39166 0.18014,2.09808 0.12716,0.69936 0.33908,1.33161 0.63578,1.89675 0.2967,0.55807 0.68876,1.01725 1.1762,1.37752 0.49449,0.35322 1.11614,0.52982 1.86496,0.52982 1.72367,0 2.92459,-1.04197 3.60276,-3.12593 l 1.26097,0.49803" /> + <path + id="path5512-3" + style="fill:#ff0000" + d="m 646.84673,579.68928 c 0,-0.62165 0.15541,-1.14087 0.46624,-1.55767 0.31082,-0.42385 0.71702,-0.75587 1.21858,-0.99606 0.50862,-0.24724 1.08789,-0.42385 1.7378,-0.52981 0.65697,-0.11303 1.32454,-0.16954 2.00271,-0.16955 0.26137,10e-6 0.49449,0.004 0.69936,0.0106 0.21192,0.007 0.40972,0.0177 0.5934,0.0318 0.19073,0.0141 0.38146,0.0318 0.5722,0.053 0.19073,0.0212 0.39912,0.0459 0.62519,0.0742 l 0,-0.70996 c -10e-6,-0.48036 -0.10597,-0.87596 -0.31789,-1.18679 -0.20487,-0.31082 -0.45919,-0.55454 -0.76294,-0.73115 -0.30377,-0.18366 -0.62166,-0.31082 -0.95367,-0.38147 -0.33203,-0.0777 -0.6146,-0.11655 -0.84771,-0.11656 -0.73469,10e-6 -1.41285,0.0989 -2.0345,0.2967 -0.62166,0.19781 -1.20092,0.46271 -1.73781,0.79472 l -0.65697,-1.09142 c 0.5934,-0.36027 1.25743,-0.65343 1.99212,-0.8795 0.74174,-0.23311 1.55412,-0.34967 2.43716,-0.34968 0.53687,10e-6 1.06316,0.0707 1.57886,0.21193 0.52274,0.13423 0.98898,0.34616 1.39871,0.63578 0.41679,0.28258 0.74881,0.65698 0.99606,1.12321 0.24724,0.46625 0.37087,1.02433 0.37088,1.67423 l 0,6.46378 -1.4623,0 0,-1.65303 c -0.25432,0.31789 -0.54396,0.59693 -0.8689,0.83711 -0.3179,0.24018 -0.65345,0.43798 -1.00666,0.59339 -0.35322,0.14835 -0.70643,0.26138 -1.05963,0.33909 -0.35322,0.0848 -0.68877,0.12715 -1.00666,0.12715 -1.30688,0 -2.29588,-0.25078 -2.96698,-0.75234 -0.6711,-0.50156 -1.00665,-1.22211 -1.00665,-2.16165 m 3.97363,1.67422 c 0.60752,0 1.15147,-0.0883 1.63184,-0.26491 0.48743,-0.18367 0.90069,-0.40972 1.23978,-0.67817 0.33907,-0.26843 0.60045,-0.55454 0.78413,-0.8583 0.19072,-0.30376 0.28609,-0.57926 0.2861,-0.82652 l 0,-0.93248 c -0.47331,-0.0706 -0.92896,-0.10949 -1.36693,-0.11656 -0.43093,-0.007 -0.80533,-0.0106 -1.12322,-0.0106 -0.52275,0 -1.02785,0.0353 -1.51528,0.10596 -0.48037,0.0707 -0.90069,0.18721 -1.26096,0.34968 -0.36028,0.15542 -0.64991,0.36028 -0.8689,0.61459 -0.219,0.25432 -0.32849,0.56867 -0.32849,0.94308 0,0.41679 0.20133,0.80179 0.60399,1.155 0.40973,0.34615 1.04904,0.51922 1.91794,0.51922" /> + <path + id="path5514-5" + style="fill:#ff0000" + d="m 668.09243,582.35956 -1.4623,0 0,-6.09291 c -10e-6,-0.88302 -0.19074,-1.56825 -0.5722,-2.05569 -0.38148,-0.48743 -0.9996,-0.73114 -1.85437,-0.73115 -0.53688,10e-6 -1.02432,0.12363 -1.46229,0.37087 -0.43093,0.24726 -0.79827,0.57928 -1.10203,0.99606 -0.30376,0.40973 -0.53688,0.88304 -0.69936,1.41991 -0.15541,0.52983 -0.23312,1.08437 -0.23312,1.66363 l 0,4.42928 -1.4517,0 0,-9.87581 1.4517,0 0,2.47955 c 0.69936,-1.80844 1.9462,-2.71266 3.74052,-2.71267 2.43009,10e-6 3.64514,1.33868 3.64515,4.01602 l 0,6.09291" /> + <path + id="path5516-4" + style="fill:#ff0000" + d="m 680.80806,572.48375 -4.28093,9.87581 -1.94973,0 -4.30212,-9.87581 1.7378,0 3.53918,8.65723 3.51799,-8.65723 1.73781,0" /> + <path + id="path5518-3" + style="fill:#ff0000" + d="m 682.45049,579.68928 c 0,-0.62165 0.15541,-1.14087 0.46624,-1.55767 0.31083,-0.42385 0.71702,-0.75587 1.21858,-0.99606 0.50862,-0.24724 1.08789,-0.42385 1.7378,-0.52981 0.65697,-0.11303 1.32454,-0.16954 2.00272,-0.16955 0.26137,10e-6 0.49449,0.004 0.69936,0.0106 0.21192,0.007 0.40972,0.0177 0.59339,0.0318 0.19073,0.0141 0.38146,0.0318 0.57221,0.053 0.19072,0.0212 0.39912,0.0459 0.62518,0.0742 l 0,-0.70996 c -10e-6,-0.48036 -0.10597,-0.87596 -0.31789,-1.18679 -0.20487,-0.31082 -0.45918,-0.55454 -0.76294,-0.73115 -0.30377,-0.18366 -0.62166,-0.31082 -0.95367,-0.38147 -0.33203,-0.0777 -0.61459,-0.11655 -0.84771,-0.11656 -0.73468,10e-6 -1.41285,0.0989 -2.0345,0.2967 -0.62166,0.19781 -1.20092,0.46271 -1.7378,0.79472 l -0.65698,-1.09142 c 0.5934,-0.36027 1.25744,-0.65343 1.99212,-0.8795 0.74174,-0.23311 1.55413,-0.34967 2.43716,-0.34968 0.53688,10e-6 1.06316,0.0707 1.57886,0.21193 0.52274,0.13423 0.98898,0.34616 1.39872,0.63578 0.41678,0.28258 0.7488,0.65698 0.99606,1.12321 0.24723,0.46625 0.37086,1.02433 0.37087,1.67423 l 0,6.46378 -1.4623,0 0,-1.65303 c -0.25432,0.31789 -0.54395,0.59693 -0.8689,0.83711 -0.3179,0.24018 -0.65345,0.43798 -1.00666,0.59339 -0.35321,0.14835 -0.70642,0.26138 -1.05963,0.33909 -0.35322,0.0848 -0.68877,0.12715 -1.00665,0.12715 -1.30689,0 -2.29588,-0.25078 -2.96699,-0.75234 -0.6711,-0.50156 -1.00665,-1.22211 -1.00665,-2.16165 m 3.97364,1.67422 c 0.60752,0 1.15146,-0.0883 1.63183,-0.26491 0.48743,-0.18367 0.90069,-0.40972 1.23978,-0.67817 0.33907,-0.26843 0.60045,-0.55454 0.78413,-0.8583 0.19073,-0.30376 0.28609,-0.57926 0.2861,-0.82652 l 0,-0.93248 c -0.47331,-0.0706 -0.92895,-0.10949 -1.36693,-0.11656 -0.43092,-0.007 -0.80533,-0.0106 -1.12321,-0.0106 -0.52276,0 -1.02785,0.0353 -1.51528,0.10596 -0.48037,0.0707 -0.9007,0.18721 -1.26097,0.34968 -0.36028,0.15542 -0.64991,0.36028 -0.8689,0.61459 -0.21899,0.25432 -0.32849,0.56867 -0.32849,0.94308 0,0.41679 0.20133,0.80179 0.60399,1.155 0.40973,0.34615 1.04904,0.51922 1.91795,0.51922" /> + <path + id="path5520-6" + style="fill:#ff0000" + d="m 703.9505,579.6257 c -1e-5,0.57927 -0.14483,1.05964 -0.43445,1.4411 -0.28964,0.38147 -0.66405,0.68523 -1.12321,0.91129 -0.45212,0.22606 -0.96075,0.385 -1.52588,0.47684 -0.55808,0.0989 -1.10556,0.14834 -1.64244,0.14834 -0.89716,0 -1.79078,-0.13068 -2.68087,-0.39206 -0.8901,-0.26138 -1.6601,-0.60399 -2.31001,-1.02785 l 0.64638,-1.25037 c 0.72761,0.45918 1.44463,0.81239 2.15106,1.05964 0.70642,0.24725 1.43757,0.37087 2.19344,0.37087 2.18285,0 3.27427,-0.56514 3.27428,-1.69542 -10e-6,-0.2755 -0.0918,-0.49802 -0.27551,-0.66757 -0.17661,-0.1766 -0.41679,-0.31788 -0.72055,-0.42385 -0.30377,-0.11303 -0.65345,-0.20133 -1.04904,-0.26491 -0.38854,-0.0636 -0.79826,-0.12362 -1.22918,-0.18014 -0.55101,-0.0777 -1.09849,-0.16954 -1.64243,-0.2755 -0.54395,-0.10596 -1.04198,-0.26491 -1.49409,-0.47684 -0.44505,-0.21192 -0.80532,-0.49449 -1.08083,-0.84771 -0.26844,-0.3532 -0.40266,-0.81944 -0.40266,-1.39872 0,-0.49449 0.12363,-0.92187 0.37087,-1.28216 0.25432,-0.36026 0.58987,-0.66049 1.00666,-0.90069 0.42385,-0.24017 0.91835,-0.41678 1.48349,-0.52982 0.56513,-0.11301 1.15147,-0.16953 1.75899,-0.16954 0.8689,10e-6 1.64597,0.10244 2.3312,0.3073 0.68523,0.19781 1.30335,0.48391 1.85437,0.8583 l -0.5828,1.13381 c -0.56515,-0.39559 -1.13735,-0.67109 -1.71661,-0.82651 -0.57928,-0.16247 -1.20799,-0.24371 -1.88616,-0.24372 -0.30376,10e-6 -0.64285,0.0283 -1.01725,0.0848 -0.36734,0.0495 -0.70995,0.14129 -1.02784,0.27551 -0.3179,0.12716 -0.58634,0.2967 -0.80533,0.50862 -0.21192,0.20487 -0.31789,0.46625 -0.31789,0.78413 0,0.27551 0.0883,0.49804 0.26491,0.66757 0.18367,0.16249 0.42739,0.30024 0.73115,0.41326 0.30376,0.10597 0.64991,0.19074 1.03844,0.25431 0.3956,0.0636 0.80886,0.12363 1.23978,0.18014 0.53687,0.0777 1.07729,0.16955 1.62124,0.27551 0.551,0.10597 1.04903,0.26138 1.49409,0.46624 0.4521,0.20486 0.81591,0.4839 1.09142,0.83711 0.2755,0.35321 0.41325,0.81945 0.41326,1.39872" /> + </g> + <text + id="text3617-17-1-2-4" + y="637.38617" + x="146.09894" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="637.38617" + x="146.09894" + id="tspan3619-93-6-1-3" + sodipodi:role="line">(50,50)</tspan></text> + <text + id="text3617-6-5-0-1" + y="742.76575" + x="363.3252" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="742.76575" + x="363.3252" + id="tspan3619-3-8-5-9" + sodipodi:role="line">(100,100)</tspan></text> + <text + id="text3617-97-1" + y="962.45062" + x="301.68106" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="962.45062" + x="301.68106" + id="tspan3619-38-0" + sodipodi:role="line">(250,250)</tspan></text> + <path + transform="translate(405.83043,751.31888)" + d="m 121.78571,168.61218 c 0,3.45178 -2.79822,6.25 -6.25,6.25 -3.45178,0 -6.25,-2.79822 -6.25,-6.25 0,-3.45178 2.79822,-6.25 6.25,-6.25 3.45178,0 6.25,2.79822 6.25,6.25 z" + sodipodi:ry="6.25" + sodipodi:rx="6.25" + sodipodi:cy="168.61218" + sodipodi:cx="115.53571" + id="path5260-9-9" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" + sodipodi:type="arc" /> + <text + id="text3617-0-4" + y="552.75555" + x="31.889761" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="552.75555" + x="31.889761" + id="tspan3619-9-5" + sodipodi:role="line">(0,0)</tspan></text> + <text + id="text3617-6-23-6" + y="551.40643" + x="152.8622" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="551.40643" + x="152.8622" + id="tspan3619-3-18-2" + sodipodi:role="line">(-25,-25)</tspan></text> + <text + id="text3617-17-1-2-7-5" + y="550.58563" + x="92.625984" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="550.58563" + x="92.625984" + id="tspan3619-93-6-1-4-9" + sodipodi:role="line">(0,0)</tspan></text> + <path + transform="translate(167.92885,581.73203)" + d="m 121.78571,168.61218 a 6.25,6.25 0 1 1 -12.5,0 6.25,6.25 0 1 1 12.5,0 z" + sodipodi:ry="6.25" + sodipodi:rx="6.25" + sodipodi:cy="168.61218" + sodipodi:cx="115.53571" + id="path5260-3-1" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" + sodipodi:type="arc" /> + </g> + <g + id="g4272" + transform="translate(-609.4488,-485.43307)"> + <g + transform="translate(611.03086,6.5687638)" + id="g3308"> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="170.85327" + y="485.95062" + id="text6951"><tspan + sodipodi:role="line" + id="tspan6953" + x="170.85327" + y="485.95062">Real</tspan></text> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="257.07938" + y="485.95062" + id="text6955"><tspan + sodipodi:role="line" + id="tspan6957" + x="257.07938" + y="485.95062">Transformiert</tspan></text> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="441.33133" + y="485.95062" + id="text6959"><tspan + sodipodi:role="line" + id="tspan6961" + x="441.33133" + y="485.95062">Sichtbereich</tspan></text> + </g> + <rect + y="461.53601" + x="743.76074" + height="40.706882" + width="477.77383" + id="rect3316" + style="fill:none;stroke:#000000;stroke-width:1.81277609;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:21.75331234, 1.81277604;stroke-dashoffset:0" /> + </g> + </g> +</svg> diff --git a/images/uml-datamodel.png b/images/uml-datamodel.png Binary files differnew file mode 100644 index 0000000..6f220fb --- /dev/null +++ b/images/uml-datamodel.png diff --git a/images/uml-editor-outline.png b/images/uml-editor-outline.png Binary files differnew file mode 100644 index 0000000..03b8da4 --- /dev/null +++ b/images/uml-editor-outline.png diff --git a/images/uml-gef.plantuml b/images/uml-gef.plantuml new file mode 100644 index 0000000..d044c60 --- /dev/null +++ b/images/uml-gef.plantuml @@ -0,0 +1,26 @@ +@startuml img/classes01.png + +package "Model" #dddddd { + Element <-- Connection + Element <- Node + Element <- NodeProperties + Element <- Diagram + Node *-- NodeProperties + Diagram *-- Node + Diagram *-- Connection +} +DiagramEditor o-- "1" Diagram +DiagramEditor *-- PartFactory + +package "Controller" #DDDDDD { + PartFactory o-- ConnectionEditPart + PartFactory o-- KSMNodeEditPart +} +PartFactory:createEditPart(context, model) + +package "View" #dddddd { + KSMNodeEditPart *-- KSMNodeFigure + ConnectionEditPart *-- RoundedPolygone +} + +@enduml
\ No newline at end of file diff --git a/images/uml-gef.png b/images/uml-gef.png Binary files differnew file mode 100644 index 0000000..5a7ed90 --- /dev/null +++ b/images/uml-gef.png diff --git a/images/uml_editorpart.png b/images/uml_editorpart.png Binary files differnew file mode 100644 index 0000000..385b389 --- /dev/null +++ b/images/uml_editorpart.png diff --git a/images/uml_editorport.zargo b/images/uml_editorport.zargo Binary files differnew file mode 100644 index 0000000..69016b8 --- /dev/null +++ b/images/uml_editorport.zargo diff --git a/images/xmlschema-arch.png b/images/xmlschema-arch.png Binary files differnew file mode 100644 index 0000000..4747ae1 --- /dev/null +++ b/images/xmlschema-arch.png diff --git a/images/xmlschema-arch.svg b/images/xmlschema-arch.svg new file mode 100644 index 0000000..1203429 --- /dev/null +++ b/images/xmlschema-arch.svg @@ -0,0 +1,421 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="497.54285" + height="404.68573" + id="svg2" + version="1.1" + inkscape:version="0.47 r22583" + sodipodi:docname="xmlschema-arch.svg" + inkscape:export-filename="/home/yvesf/vcs/ksmrcp/documentation-i08005-2/images/xmlschema-arch.png" + inkscape:export-xdpi="32.029999" + inkscape:export-ydpi="32.029999"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + <inkscape:perspective + id="perspective2830" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2858" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2880" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2907" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2938" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2966" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2992" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3834" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3869" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3917" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3946" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3946-7" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3999" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.98994949" + inkscape:cx="327.47385" + inkscape:cy="237.78901" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1436" + inkscape:window-height="864" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-129.80002,-91.447903)"> + <rect + style="fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#a40000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2816" + width="497.14285" + height="64.285713" + x="130.00002" + y="258.07648" /> + <text + xml:space="preserve" + style="font-size:19.21108246px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="377.70844" + y="283.51233" + id="text2818"><tspan + sodipodi:role="line" + id="tspan2820" + x="377.70844" + y="283.51233">ksm-xmlschema.jar</tspan><tspan + sodipodi:role="line" + x="377.70844" + y="306.02567" + id="tspan3011" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Courier New;-inkscape-font-specification:Courier New">de.dhbw.horb.ksm.xmlschema.{api,impl}</tspan></text> + <rect + style="fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#a40000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2816-1" + width="234.28569" + height="64.285721" + x="130.00002" + y="174.50505" /> + <text + xml:space="preserve" + style="font-size:19.21108246px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="246.23061" + y="202.55186" + id="text2818-9" + inkscape:transform-center-x="-12.857143"><tspan + sodipodi:role="line" + id="tspan2820-4" + x="246.23061" + y="202.55186">Eclipse RCP</tspan><tspan + sodipodi:role="line" + x="246.23061" + y="226.56572" + id="tspan2897">Model</tspan></text> + <rect + style="fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#a40000;stroke-width:0.60733807;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2816-1-7" + width="234.07835" + height="148.33377" + x="392.96085" + y="91.781891" /> + <text + xml:space="preserve" + style="font-size:19.21108246px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="509.92966" + y="213.3764" + id="text2818-9-8"><tspan + sodipodi:role="line" + id="tspan2820-4-4" + x="509.92966" + y="213.3764">KSM/Swing</tspan></text> + <rect + style="fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#a40000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2816-1-5" + width="234.28569" + height="64.285721" + x="130.00002" + y="91.647903" /> + <text + xml:space="preserve" + style="font-size:19.21108246px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="246.53313" + y="130.02873" + id="text2818-9-0" + inkscape:transform-center-x="-12.857143"><tspan + sodipodi:role="line" + x="246.53313" + y="130.02873" + id="tspan2897-6">KSM/RCP</tspan></text> + <rect + style="fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#a40000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2816-10" + width="497.14285" + height="64.285713" + x="130.00002" + y="345.93362" /> + <text + xml:space="preserve" + style="font-size:19.21108246px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="378.76843" + y="371.36948" + id="text2818-6"><tspan + sodipodi:role="line" + id="tspan2820-3" + x="378.76843" + y="371.36948">xjc generated Classes</tspan><tspan + sodipodi:role="line" + x="378.76843" + y="395.38333" + id="tspan3009" + style="-inkscape-font-specification:Courier New;font-family:Courier New;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal">de.dhbw.horb.ksm.xmlschema.generated</tspan></text> + <rect + style="fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#a40000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2816-10-2" + width="497.14285" + height="64.285713" + x="130.00002" + y="431.64792" /> + <text + xml:space="preserve" + style="font-size:144px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="194.28571" + y="455.21933" + id="text2980"><tspan + sodipodi:role="line" + id="tspan2982" + x="194.28571" + y="455.21933"></tspan></text> + <text + xml:space="preserve" + style="font-size:19.21108246px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="379.16241" + y="470.95273" + id="text2818-6-0"><tspan + sodipodi:role="line" + id="tspan2820-3-6" + x="379.16241" + y="470.95273">XML-Schema (<tspan + style="font-size:19.21099999999999852;-inkscape-font-specification:Courier New;font-family:Courier New;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal" + id="tspan4025">ksm-1.0.xsd</tspan>)</tspan></text> + <text + xml:space="preserve" + style="font-size:13px;font-style:oblique;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Oblique;font-stretch:normal;font-variant:normal;writing-mode:lr;line-height:125%" + x="176.34482" + y="337.76346" + id="text3013-1" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3015-5" + x="176.34482" + y="337.76346">Use</tspan></text> + <g + id="g3857" + transform="translate(55.600443,-95.026129)"> + <path + sodipodi:nodetypes="csc" + id="path3017-5" + d="m 147.04906,399.00192 c 0,0 -14.82367,7.47351 -2.89396,33.897 3.45765,7.65847 6.46602,11.02615 6.46602,11.02615" + style="fill:none;stroke:#000000;stroke-width:2.29190302;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + sodipodi:nodetypes="cccc" + id="path3039-4" + d="m 138.41615,447.3528 c 0.003,-0.0324 23.34543,-9.54791 22.93062,-9.37893 -1.73287,4.03177 -4.62816,6.77367 -5.58524,13.51779 -5.81933,-2.74779 -11.57835,-2.6991 -17.34538,-4.13886 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.01446982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + </g> + <g + id="g3857-5" + transform="matrix(-1,0,0,-1,659.70232,853.15848)"> + <path + sodipodi:nodetypes="csc" + id="path3017-5-6" + d="m 147.04906,399.00192 c 0,0 -14.82367,7.47351 -2.89396,33.897 3.45765,7.65847 6.46602,11.02615 6.46602,11.02615" + style="fill:none;stroke:#000000;stroke-width:2.29190302;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + sodipodi:nodetypes="cccc" + id="path3039-4-9" + d="m 138.41615,447.3528 c 0.003,-0.0324 23.34543,-9.54791 22.93062,-9.37893 -1.73287,4.03177 -4.62816,6.77367 -5.58524,13.51779 -5.81933,-2.74779 -11.57835,-2.6991 -17.34538,-4.13886 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.01446982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + </g> + <text + xml:space="preserve" + style="font-size:13px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Oblique" + x="553.72351" + y="421.53741" + id="text3013-1-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3015-5-7" + x="553.72351" + y="421.53741">Compiled</tspan><tspan + sodipodi:role="line" + x="553.72351" + y="437.78741" + id="tspan3934">with</tspan><tspan + sodipodi:role="line" + x="553.72351" + y="454.03741" + id="tspan3936">xjc</tspan></text> + <text + xml:space="preserve" + style="font-size:13px;font-style:oblique;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Oblique;font-stretch:normal;font-variant:normal;writing-mode:lr;line-height:125%" + x="216.01836" + y="263.80185" + id="text3013-1-4" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3015-5-5" + x="216.01836" + y="263.80185">extend</tspan></text> + <g + id="g3857-2" + transform="translate(112.44657,-168.98774)"> + <path + sodipodi:nodetypes="csc" + id="path3017-5-5" + d="m 147.04906,399.00192 c 0,0 -14.82367,7.47351 -2.89396,33.897 3.45765,7.65847 6.46602,11.02615 6.46602,11.02615" + style="fill:none;stroke:#000000;stroke-width:2.29190302;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + sodipodi:nodetypes="cccc" + id="path3039-4-4" + d="m 138.41615,447.3528 c 0.003,-0.0324 23.34543,-9.54791 22.93062,-9.37893 -1.73287,4.03177 -4.62816,6.77367 -5.58524,13.51779 -5.81933,-2.74779 -11.57835,-2.6991 -17.34538,-4.13886 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.01446982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + </g> + <text + xml:space="preserve" + style="font-size:13px;font-style:oblique;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Oblique;font-stretch:normal;font-variant:normal;writing-mode:lr;line-height:125%" + x="182.6833" + y="165.81705" + id="text3013-1-44" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3015-5-3" + x="182.6833" + y="165.81705">Use</tspan></text> + <g + id="g3857-0" + transform="translate(61.938948,-266.97253)"> + <path + sodipodi:nodetypes="csc" + id="path3017-5-7" + d="m 147.04906,399.00192 c 0,0 -14.82367,7.47351 -2.89396,33.897 3.45765,7.65847 6.46602,11.02615 6.46602,11.02615" + style="fill:none;stroke:#000000;stroke-width:2.29190302;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + sodipodi:nodetypes="cccc" + id="path3039-4-8" + d="m 138.41615,447.3528 c 0.003,-0.0324 23.34543,-9.54791 22.93062,-9.37893 -1.73287,4.03177 -4.62816,6.77367 -5.58524,13.51779 -5.81933,-2.74779 -11.57835,-2.6991 -17.34538,-4.13886 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.01446982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + </g> + <text + xml:space="preserve" + style="font-size:13px;font-style:oblique;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Oblique;font-stretch:normal;font-variant:normal;writing-mode:lr;line-height:125%" + x="532.19604" + y="255.72061" + id="text3013-1-44-6" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3015-5-3-8" + x="532.19604" + y="255.72061">Use</tspan></text> + <g + id="g3857-0-8" + transform="matrix(-1.1463638,0,0,1,664.97243,-172.01819)"> + <path + sodipodi:nodetypes="csc" + id="path3017-5-7-4" + d="m 147.04906,399.00192 c 0,0 -14.82367,7.47351 -2.89396,33.897 3.45765,7.65847 6.46602,11.02615 6.46602,11.02615" + style="fill:none;stroke:#000000;stroke-width:2.29190302;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + sodipodi:nodetypes="cccc" + id="path3039-4-8-3" + d="m 138.41615,447.3528 c 0.003,-0.0324 23.34543,-9.54791 22.93062,-9.37893 -1.73287,4.03177 -4.62816,6.77367 -5.58524,13.51779 -5.81933,-2.74779 -11.57835,-2.6991 -17.34538,-4.13886 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.01446982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + </g> + </g> +</svg> diff --git a/images/zest-arch.ep b/images/zest-arch.ep new file mode 100644 index 0000000..b22090f --- /dev/null +++ b/images/zest-arch.ep @@ -0,0 +1,115 @@ +<?xml version="1.0"?> +<Document xmlns="http://www.evolus.vn/Namespace/Pencil"><Properties/><Pages><Page><Properties><Property name="name">zest-arch</Property><Property name="id">1287051392413_6764</Property><Property name="width">273</Property><Property name="height">260</Property><Property name="dimBackground">false</Property><Property name="backgroundColor">#FFFFFFFF</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="e1aacea1fb0c47ae9e72ee8b136f30a7" transform="matrix(1, 0, 0, 1, 11, 10)"><p:metadata><p:property name="box"><![CDATA[252,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Zest]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="252" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="83713648b0654dbc83aa7c728f332546" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="15715eb16f0b4e3db325a2f8ebb5b59a"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#83713648b0654dbc83aa7c728f332546" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#15715eb16f0b4e3db325a2f8ebb5b59a)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="a05d9a902f3b4867aac3088b37bb89e3"/> + <use xlink:href="#83713648b0654dbc83aa7c728f332546" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="242.75" height="16" p:name="text" id="b7f51a48630b450db5f42e7c2b304d23" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Zest</div></foreignObject><path id="b7f51a48630b450db5f42e7c2b304d23_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="3281f36e3b544c1cb2cc8c4a5a88da60" transform="matrix(1, 0, 0, 1, 11, 62)"><p:metadata><p:property name="box"><![CDATA[252,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Draw2d]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="252" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="81dc0ff75bf7431495f83556b0038303" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="2e9f54d845df452690303557bef7be9e"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#81dc0ff75bf7431495f83556b0038303" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#2e9f54d845df452690303557bef7be9e)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="7c159d4e5695455dae7c76a89ec10e4c"/> + <use xlink:href="#81dc0ff75bf7431495f83556b0038303" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="242.75" height="16" p:name="text" id="fa0b9abb3a654ed3b832d53504ff2f10" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Draw2d</div></foreignObject><path id="fa0b9abb3a654ed3b832d53504ff2f10_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="7383ced4b1f24b42a5f12a363f7ffc9c" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="bdd97dd6eefd42cf83a98c91efd224d3" transform="matrix(1, 0, 0, 1, 10, 113)"><p:metadata><p:property name="box"><![CDATA[252,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[SWT-Canvas]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="252" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="c3fb43b9a8a14446a5fc4ea0b4ccde85" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="051fe29868de42bcbab66dfb6a2288ea"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#c3fb43b9a8a14446a5fc4ea0b4ccde85" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#051fe29868de42bcbab66dfb6a2288ea)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="d259fc84f18e41f1b7806afe60106b28"/> + <use xlink:href="#c3fb43b9a8a14446a5fc4ea0b4ccde85" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="242.75" height="16" p:name="text" id="8d61d03b87614dae9771cb1b172852b0" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">SWT-Canvas</div></foreignObject><path id="8d61d03b87614dae9771cb1b172852b0_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="ede488462ba54e6da915abe79632bd5c" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="501acce8b876431fb72fe1ff4cc558d4" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="f11594d724ab436883be10b9320e2631" transform="matrix(1, 0, 0, 1, 11, 213)"><p:metadata><p:property name="box"><![CDATA[252,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#7CCC54FF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Hardware]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="252" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(124, 204, 84); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="09a7fd5ddb594a2ca140e1549b52676c" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="7e3845707bb0493585f2015e20749338"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#09a7fd5ddb594a2ca140e1549b52676c" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#7e3845707bb0493585f2015e20749338)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="f7e926d371e04437b376d6bba1c5ffed"/> + <use xlink:href="#09a7fd5ddb594a2ca140e1549b52676c" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="242.75" height="16" p:name="text" id="9f53459a0a2a4f63b8a8b4a8acdb19d5" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Hardware</div></foreignObject><path id="9f53459a0a2a4f63b8a8b4a8acdb19d5_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="8449e7942f704dc6b9fc0a4d4281e8f8" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:2pointline" id="9895d97bd3724c72924fa20418e1d1c9" transform="matrix(1, 0, 0, 1, -49.4, 205.4)"><p:metadata><p:property name="a"><![CDATA[60,0]]></p:property><p:property name="b"><![CDATA[312,0]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property></p:metadata> + <path fill="none" style="stroke: transparent; stroke-width: 10px;" p:name="bgpath" id="d13c2c05ab3c45a7a5b8a7b643fd24df" d="M 60 0 L 312 0 z"/> + <path fill="none" style="stroke-linejoin: round; stroke: rgb(27, 50, 128); stroke-opacity: 1; stroke-width: 2;" p:name="path" id="659f66fb3df348d18f74786ddbe02e21" transform="translate(0)" d="M 60 0 L 312 0 z"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Group" xmlns:p="http://www.evolus.vn/Namespace/Pencil" transform="matrix(1, 0, 0, 1, 11, 161)" id="69d9c727fb6e4acd9913109328c400c5"><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="9129b0d32ea04f08a8404f13a64b169e" transform="matrix(1, 0, 0, 1, 0, 0)"><p:metadata><p:property name="box"><![CDATA[79,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Windows]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="79" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="8f21c09c311847ee9ebbd3d8bef9303a" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="726eb38f126e451faf69716de305aeb9"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#8f21c09c311847ee9ebbd3d8bef9303a" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#726eb38f126e451faf69716de305aeb9)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="3ef451ad32854cd8b1c3c06c8a066e77"/> + <use xlink:href="#8f21c09c311847ee9ebbd3d8bef9303a" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="69.75" height="16" p:name="text" id="ff50403a85d84651ac3e21bb22e9b49c" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Windows</div></foreignObject><path id="ff50403a85d84651ac3e21bb22e9b49c_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="f5782a59de994f2ea561d96035e9f1d4" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="d106bb0013a94363acee12658d7dec21" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="1c1c30295b314b94b048f54b85a2c877" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="6f0bd8037b014db1860f10237543c3c3" transform="matrix(1, 0, 0, 1, 85, 0)"><p:metadata><p:property name="box"><![CDATA[79,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[GTK/X11]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="79" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="9ee22261e8ce4cbab6c1347d7f08cd09" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="bdf9406788cb4d3c97f5c38dba970083"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#9ee22261e8ce4cbab6c1347d7f08cd09" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#bdf9406788cb4d3c97f5c38dba970083)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="1c162c9e9d9848c1b84cc02fb8704b97"/> + <use xlink:href="#9ee22261e8ce4cbab6c1347d7f08cd09" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="69.75" height="16" p:name="text" id="44ba8531bdf74eba9646fe934d803650" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">GTK/X11</div></foreignObject><path id="44ba8531bdf74eba9646fe934d803650_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="51a48688425845bf8339446b60686535" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="c10d9cfc478a47d3afb729c482bfc453" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="e9015fc0bdff4c1085fcbc58dec34bca" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="7c08c97f61f04be6a3406201c9b0919f" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="b9cd3fcd6414416eb87475b271bc1ab1" transform="matrix(1, 0, 0, 1, 172, 0)"><p:metadata><p:property name="box"><![CDATA[79,37]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,4.625]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Carbon]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|14px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="79" height="37" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="6d317d53ba2342169b24d640e19b27f2" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="5c41e246bd75458a9eb87ed4ab17c2a2"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#6d317d53ba2342169b24d640e19b27f2" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#5c41e246bd75458a9eb87ed4ab17c2a2)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="cf6f108127904a629e532ead3521efdd"/> + <use xlink:href="#6d317d53ba2342169b24d640e19b27f2" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="4.625" y="11" width="69.75" height="16" p:name="text" id="908a0ba29c4d4e27b51e4b7d5ac655db" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 14px; font-weight: bold; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Carbon</div></foreignObject><path id="908a0ba29c4d4e27b51e4b7d5ac655db_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="28caffbb23064b948129f1c39c7bd505" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="f0e1dfda06f84b7296f1c13d14cf4753" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="5ac884e389b14cb0bb6dba2612305e5b" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="9456d110cd40452ba5728b35e76e7a60" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="89ea964f047a43f1b0773420a7c5814b" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g></g></Content></Page><Page><Properties><Property name="name">zest-mvc</Property><Property name="id">1287052717037_4543</Property><Property name="width">1081</Property><Property name="height">646</Property><Property name="dimBackground">false</Property><Property name="backgroundColor">#FFFFFFFF</Property><Property name="background">transparent</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="a398b826f52c416c9b4b0277afb6ba1e" transform="matrix(1, 0, 0, 1, 232, 167)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Model]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="200" height="80" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="e2d742efa6a0407eb7adab4b9d91ef53" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="9dbcc0a868e94f97a8ceca200b0c9777"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#e2d742efa6a0407eb7adab4b9d91ef53" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#9dbcc0a868e94f97a8ceca200b0c9777)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="ae2757dbcf1d40ffbf48dc9a14c62a80"/> + <use xlink:href="#e2d742efa6a0407eb7adab4b9d91ef53" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="10" y="33" width="180" height="15" p:name="text" id="1d9c1c62775f45c68a75a570b8e8250e" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Model</div></foreignObject><path id="1d9c1c62775f45c68a75a570b8e8250e_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="1258bad1c36241fcab8695755e706ad1" transform="matrix(1, 0, 0, 1, 516, 167)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[View]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="200" height="80" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="7f90511e72db49bbb68e1c5c1d747b47" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="c3a54ce55aee42039e85fe078daa88b5"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#7f90511e72db49bbb68e1c5c1d747b47" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#c3a54ce55aee42039e85fe078daa88b5)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="33f4d6e42a90486ca4288e045acc3593"/> + <use xlink:href="#7f90511e72db49bbb68e1c5c1d747b47" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="10" y="33" width="180" height="15" p:name="text" id="b0ae269b65154d48b70e48e6d4654a8c" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">View</div></foreignObject><path id="b0ae269b65154d48b70e48e6d4654a8c_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="bf860599ba884ab598564b12d20e49be" transform="matrix(1, 0, 0, 1, 374, 295)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Controller]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="200" height="80" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="53f56f1d47d5492f87d3bdd405cb110d" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="75b835ff2f9a420cb984ae94d7d3cb98"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#53f56f1d47d5492f87d3bdd405cb110d" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#75b835ff2f9a420cb984ae94d7d3cb98)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="846eb58a1c434d45a3ad71f42cff855b"/> + <use xlink:href="#53f56f1d47d5492f87d3bdd405cb110d" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="10" y="33" width="180" height="15" p:name="text" id="a40c2afb536c426789469c0efeed4764" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Controller</div></foreignObject><path id="a40c2afb536c426789469c0efeed4764_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="97715b13cdf34a23a4c8d549ed3ee0f6" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g></Content></Page></Pages></Document>
\ No newline at end of file diff --git a/images/zest-arch.png b/images/zest-arch.png Binary files differnew file mode 100644 index 0000000..c735e58 --- /dev/null +++ b/images/zest-arch.png diff --git a/images/zest-mvc.ep b/images/zest-mvc.ep new file mode 100644 index 0000000..32df630 --- /dev/null +++ b/images/zest-mvc.ep @@ -0,0 +1,35 @@ +<?xml version="1.0"?> +<Document xmlns="http://www.evolus.vn/Namespace/Pencil"><Properties/><Pages><Page><Properties><Property name="name">zest-mvc</Property><Property name="id">1287052717037_4543</Property><Property name="width">1081</Property><Property name="height">646</Property><Property name="dimBackground">false</Property><Property name="backgroundColor">#FFFFFFFF</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="a398b826f52c416c9b4b0277afb6ba1e" transform="matrix(1, 0, 0, 1, 232, 167)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Model]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="200" height="80" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="e2d742efa6a0407eb7adab4b9d91ef53" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="9dbcc0a868e94f97a8ceca200b0c9777"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#e2d742efa6a0407eb7adab4b9d91ef53" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#9dbcc0a868e94f97a8ceca200b0c9777)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="ae2757dbcf1d40ffbf48dc9a14c62a80"/> + <use xlink:href="#e2d742efa6a0407eb7adab4b9d91ef53" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="10" y="33" width="180" height="15" p:name="text" id="1d9c1c62775f45c68a75a570b8e8250e" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Model</div></foreignObject><path id="1d9c1c62775f45c68a75a570b8e8250e_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="1258bad1c36241fcab8695755e706ad1" transform="matrix(1, 0, 0, 1, 516, 167)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[View]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="200" height="80" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="7f90511e72db49bbb68e1c5c1d747b47" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="c3a54ce55aee42039e85fe078daa88b5"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#7f90511e72db49bbb68e1c5c1d747b47" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#c3a54ce55aee42039e85fe078daa88b5)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="33f4d6e42a90486ca4288e045acc3593"/> + <use xlink:href="#7f90511e72db49bbb68e1c5c1d747b47" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="10" y="33" width="180" height="15" p:name="text" id="b0ae269b65154d48b70e48e6d4654a8c" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">View</div></foreignObject><path id="b0ae269b65154d48b70e48e6d4654a8c_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="bf860599ba884ab598564b12d20e49be" transform="matrix(1, 0, 0, 1, 374, 295)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#4388CCFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Controller]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata> + + <defs> + <rect width="200" height="80" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(67, 136, 204); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="53f56f1d47d5492f87d3bdd405cb110d" transform="translate(0)"/> + <filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="75b835ff2f9a420cb984ae94d7d3cb98"> + <feGaussianBlur stdDeviation="1" in="SourceAlpha"/> + </filter> + </defs> + <use xlink:href="#53f56f1d47d5492f87d3bdd405cb110d" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#75b835ff2f9a420cb984ae94d7d3cb98)" style="opacity: 0.5; visibility: hidden;" p:heavy="true" p:name="bgCopy" id="846eb58a1c434d45a3ad71f42cff855b"/> + <use xlink:href="#53f56f1d47d5492f87d3bdd405cb110d" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <foreignObject x="10" y="33" width="180" height="15" p:name="text" id="a40c2afb536c426789469c0efeed4764" style="font-family: "Liberation Sans",Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Controller</div></foreignObject><path id="a40c2afb536c426789469c0efeed4764_underline" style="fill: none; stroke-width: 1px; visibility: hidden;"/><path id="97715b13cdf34a23a4c8d549ed3ee0f6" style="fill: none; stroke-width: 1px; visibility: hidden;"/> + </g></Content></Page></Pages></Document>
\ No newline at end of file |