dwww Home | Show directory contents | Find package

<FILENAME filename="index.html"><html><head><title>The Rocs Handbook</title><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-default.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-docs.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-localised.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><meta name="description" content="Rocs is a graph theory tool."><meta name="keywords" content="KDE, kdeedu, mathematics, math, graphs, node, edge, Rocs"><link rel="home" href="index.html" title="The Rocs Handbook"><link rel="next" href="introduction.html" title="Chapter 1. Introduction"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="GENERATOR" content="KDE XSL Stylesheet V1.14 using libxslt"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div id="content"><div id="header"><div id="header_content"><div id="header_left"><div id="header_right"><img src="help:/kdoctools5-common/top-kde.jpg" width="36" height="34"> The <span class="application">Rocs</span> Handbook</div></div></div></div><div class="navCenter"><table class="navigation"><tr><td class="prevCell"></td><td class="upCell"> </td><td class="nextCell"><a accesskey="n" href="introduction.html">Next</a></td></tr></table></div><div id="contentBody"><div lang="en" class="book"><div class="titlepage"><div><div><h1 class="title"><a name="rocs"></a>The <span class="application">Rocs</span> Handbook</h1></div><div><div class="authorgroup"><p class="author"><span class="firstname">Tomaz</span> <span class="surname">Canabrava</span> <code class="email">&lt;tomaz.canabrava@gmail.com&gt;</code></p><p class="author"><span class="firstname">Andreas</span> <span class="surname">Cord-Landwehr</span> <code class="email">&lt;cordlandwehr@kde.org&gt;</code></p></div></div><div>Revision <span class="releaseinfo">KDE Gear 21.08 (<span class="date">2021-10-23</span>)</span></div><div><p><a href="help:/kdoctools5-common/fdl-notice.html">Legal Notice</a></p></div><div><div><div class="abstract"><p>
<span class="application">Rocs</span> is a graph theory tool.
</p></div></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="introduction.html">1. Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a href="introduction.html#introduction-goals">Goals, Target Audience, and Workflows</a></span></dt><dt><span class="sect1"><a href="introduction-nutshell.html"><span class="application">Rocs</span> in a Nutshell</a></span></dt><dd><dl><dt><span class="sect2"><a href="introduction-nutshell.html#idm72">Graph Documents</a></span></dt><dt><span class="sect2"><a href="introduction-nutshell.html#idm78">Edge Types</a></span></dt><dt><span class="sect2"><a href="introduction-nutshell.html#idm82">Node Types</a></span></dt><dt><span class="sect2"><a href="introduction-nutshell.html#idm86">Properties</a></span></dt></dl></dd><dt><span class="sect1"><a href="introduction-tutorial.html">Tutorial</a></span></dt><dd><dl><dt><span class="sect2"><a href="introduction-tutorial.html#idm104">Generating the Graph</a></span></dt><dt><span class="sect2"><a href="introduction-tutorial.html#idm113">Creating the Element Types</a></span></dt><dt><span class="sect2"><a href="introduction-tutorial.html#idm123">The Algorithm</a></span></dt><dt><span class="sect2"><a href="introduction-tutorial.html#idm127">Execute the Algorithm</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="user-interface.html">2. The <span class="application">Rocs</span> User Interface</a></span></dt><dd><dl><dt><span class="sect1"><a href="user-interface.html#user-interface-all">Main Elements of the User Interface</a></span></dt></dl></dd><dt><span class="chapter"><a href="scripting.html">3. Scripting</a></span></dt><dd><dl><dt><span class="sect1"><a href="scripting.html#idm225">Executing Algorithms in <span class="application">Rocs</span></a></span></dt><dd><dl><dt><span class="sect2"><a href="scripting.html#idm232">Control Script Execution</a></span></dt><dt><span class="sect2"><a href="scripting.html#idm248">Script Output</a></span></dt><dt><span class="sect2"><a href="scripting.html#idm254">Scripting Engine API</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="import-export.html">4. Import and Export</a></span></dt><dd><dl><dt><span class="sect1"><a href="import-export.html#import-export-projects">Exchange <span class="application">Rocs</span> Projects</a></span></dt><dd><dl><dt><span class="sect2"><a href="import-export.html#import-export-graphs">Import and Export of Graph Documents</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="graph-layout.html">5. Graph Layout</a></span></dt><dd><dl><dt><span class="sect1"><a href="graph-layout.html#idm348">Laying out graphs automatically in <span class="application">Rocs</span></a></span></dt><dd><dl><dt><span class="sect2"><a href="graph-layout.html#idm359">Force Based Layout</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="credits.html">6. Credits and License</a></span></dt></dl></div><FILENAME filename="introduction.html"><html><head><title>Chapter 1. Introduction</title><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-default.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-docs.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-localised.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><meta name="keywords" content="KDE, kdeedu, mathematics, math, graphs, node, edge, Rocs"><link rel="home" href="index.html" title="The Rocs Handbook"><link rel="up" href="index.html" title="The Rocs Handbook"><link rel="prev" href="index.html" title="The Rocs Handbook"><link rel="next" href="introduction-nutshell.html" title="Rocs in a Nutshell"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="GENERATOR" content="KDE XSL Stylesheet V1.14 using libxslt"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div id="content"><div id="header"><div id="header_content"><div id="header_left"><div id="header_right"><img src="help:/kdoctools5-common/top-kde.jpg" width="36" height="34"> Introduction</div></div></div></div><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="index.html">Prev</a></td><td class="upCell"> </td><td class="nextCell"><a accesskey="n" href="introduction-nutshell.html">Next</a></td></tr></table></div><div id="contentBody"><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="introduction"></a>Chapter 1. Introduction</h1></div></div></div><p>
This chapter provides an overview of the core features and the typical workflows.
The most important parts are <a class="xref" href="introduction-nutshell.html" title="Rocs in a Nutshell">the section called “<span class="application">Rocs</span> in a Nutshell”</a> and <a class="xref" href="scripting.html" title="Chapter 3. Scripting">Chapter 3, <i>Scripting</i></a>, which together should allow every new user to directly start using <span class="application">Rocs</span>.
</p><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction-goals"></a>Goals, Target Audience, and Workflows</h2></div></div></div><p><span class="application">Rocs</span> is a Graph Theory Tool for everybody interested in designing and studying graph algorithms. In particular, those are</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>lecturers, who want to demonstrate algorithms to their students,</p></li><li class="listitem"><p>students and researchers, who want to see how their algorithm perform, and</p></li><li class="listitem"><p>everybody who is interested in data structures and algorithms.</p></li></ul></div><p>For all them, <span class="application">Rocs</span> provides an easy to use graphical editor for creating graphs, a powerful scripting engine to execute algorithms, and several helper tools for simulations, experiments, and graph exports.
The typical way of using <span class="application">Rocs</span> is to create a graph, either by hand (<abbr class="abbrev">i.e.</abbr>, dragging nodes and edges to the whiteboard), or by using one of the graph generators.
Graph algorithms then can be implemented and executed on the created graph and all changes, which the algorithm performs, are visible immediately in the graph editor.
</p><div class="screenshot"><div xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="mediaobject"><img src="rocs-screenshot.png" alt="A Screenshot of Rocs."></div></div></div><FILENAME filename="introduction-nutshell.html"><html><head><title>Rocs in a Nutshell</title><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-default.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-docs.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-localised.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><meta name="keywords" content="KDE, kdeedu, mathematics, math, graphs, node, edge, Rocs"><link rel="home" href="index.html" title="The Rocs Handbook"><link rel="up" href="introduction.html" title="Chapter 1. Introduction"><link rel="prev" href="introduction.html" title="Chapter 1. Introduction"><link rel="next" href="introduction-tutorial.html" title="Tutorial"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="GENERATOR" content="KDE XSL Stylesheet V1.14 using libxslt"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div id="content"><div id="header"><div id="header_content"><div id="header_left"><div id="header_right"><img src="help:/kdoctools5-common/top-kde.jpg" width="36" height="34"> <span class="application">Rocs</span> in a Nutshell</div></div></div></div><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="introduction.html">Prev</a></td><td class="upCell">Introduction</td><td class="nextCell"><a accesskey="n" href="introduction-tutorial.html">Next</a></td></tr></table></div><div id="contentBody"><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction-nutshell"></a><span class="application">Rocs</span> in a Nutshell</h2></div></div></div><p>
Every <span class="application">Rocs</span> session is a project: when opening <span class="application">Rocs</span> an empty project is created, when loading some project it becomes the current project.
Hereby, a project itself consists of <span class="emphasis"><em>graph documents</em></span>, <span class="emphasis"><em>scripts/algorithms</em></span>, and a <span class="emphasis"><em>journal</em></span>.
</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm72"></a>Graph Documents</h3></div></div></div><p>
A graph document represents the content of a whiteboard in the graph editor.
It contains information about the user defined node and edge types, their properties, and about the already created nodes and edges.
This is, <span class="application">Rocs</span> understands the set of all nodes and edges of a graph document to form a (not necessarily connected) graph.
Everything belonging to a graph document is accessible by the script engine via the global object
<strong class="userinput"><code><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="command"><span class="command"><strong>Document</strong></span></span></code></strong>.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm78"></a>Edge Types</h3></div></div></div><p>
In some scenarios, graphs consist of different types of edges (<abbr class="abbrev">e.g.</abbr>, an undirected graph plus the tree edges computed by a breadh-first-search algorithm) that shall be handled and displayed differently.
For this, besides a default edge type, you can define arbitrary other edge types.
Each edge type has its individual visual representation, dynamic properties, and can be set to be either undirected or directed.
The scripting interface provides convenience methods to specifically access only edges of specific types.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm82"></a>Node Types</h3></div></div></div><p>
Analog to edge types, you can define different types of nodes of a graph (<abbr class="abbrev">e.g.</abbr>, to give some nodes special roles).
Each node type has its own visual representation and dynamic properties.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm86"></a>Properties</h3></div></div></div><p>
Every (node or edge) element can have properties.
Those properties must be setup at the corresponding node or edge type.
Properties are identified and accessed by their names and can contain any value.
To create new or change existing properties, use the <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guilabel">Element Types</span></span> sidebar and use the
<span class="inlinemediaobject"><img src="document-properties.png"></span><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guibutton">Properties</span></span>
button to open the property dialog.
</p><p>
You can also use the scripting engine to access registered properties and change their values.
In the following example we assume that the property <span class="quote">“<span class="quote">weight</span>”</span> is registered for the default edge type.
</p><pre class="programlisting">
var nodes = Document.nodes()
for (var i = 0; i &lt; nodes.length; ++i){
    nodes[i].weight = i;
}
for (var i = 0; i &lt; nodes.length; ++i){
    Console.log("weight of node " + i + ": " + nodes[i].weight);
}
</pre><p>
</p></div></div></div><div id="footer"><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="introduction.html">Prev</a></td><td class="upCell"><a accesskey="h" href="index.html">Contents</a></td><td class="nextCell"><a accesskey="n" href="introduction-tutorial.html">Next</a></td></tr><tr><td class="prevCell">Introduction </td><td class="upCell">Introduction</td><td class="nextCell"> Tutorial</td></tr></table></div><div id="footer_text">Would you like to make a comment or contribute an update to this page?<br>Send feedback to the <a href="mailto:kde-doc-english@kde.org" class="footer_email">KDE Docs Team</a></div></div></div></body></html></FILENAME><FILENAME filename="introduction-tutorial.html"><html><head><title>Tutorial</title><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-default.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-docs.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-localised.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><meta name="keywords" content="KDE, kdeedu, mathematics, math, graphs, node, edge, Rocs"><link rel="home" href="index.html" title="The Rocs Handbook"><link rel="up" href="introduction.html" title="Chapter 1. Introduction"><link rel="prev" href="introduction-nutshell.html" title="Rocs in a Nutshell"><link rel="next" href="user-interface.html" title="Chapter 2. The Rocs User Interface"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="GENERATOR" content="KDE XSL Stylesheet V1.14 using libxslt"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div id="content"><div id="header"><div id="header_content"><div id="header_left"><div id="header_right"><img src="help:/kdoctools5-common/top-kde.jpg" width="36" height="34"> Tutorial</div></div></div></div><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="introduction-nutshell.html">Prev</a></td><td class="upCell">Introduction</td><td class="nextCell"><a accesskey="n" href="user-interface.html">Next</a></td></tr></table></div><div id="contentBody"><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction-tutorial"></a>Tutorial</h2></div></div></div><p>
In this section we want to create an example project to explore some of the most important functions of <span class="application">Rocs</span>.
The goal is to create a graph and a script that illustrates a simple 2-approximate algorithm for the <span class="emphasis"><em>minimum vertex cover</em></span> problem.
The minimum vertex cover problem is the problem to find a subset of graph nodes C of minimal size such that each graph edge is connected to at least one node in C.
This problem is known to be NP-hard and we want to illustrate how to find an approximation of factor 2 by computing a matching in the given graph.
</p><p>
Our goal is to visualize the relationship of the matching and the minimum vertex cover.
For this, we want to specify two edge types, one to display matching edges and one type to display <span class="quote">“<span class="quote">ordinary</span>”</span> edges, as well as two node types that we use to distinguish nodes contained in C and those not contained in C.
</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm104"></a>Generating the Graph</h3></div></div></div><p>
For creating the graph, we use a default graph generator provided by <span class="application">Rocs</span>.
This can be found in the main menu at <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guimenu">Graph Document</span></span> → <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guisubmenu">Tools</span></span> → <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guimenuitem">Generate Graph</span></span>.
There, we select a <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guilabel">Random Graph</span></span> with 30 nodes, 90 edges, and with seed 1 (the seed is the starting seed for the random graph generator; using the same seed multiple times results in same and reproducible graphs).
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm113"></a>Creating the Element Types</h3></div></div></div><p>
We use the <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guilabel">Element Types</span></span> and create a second node type as well as a second edge type. For both new types we open the properties dialog by using the respective <span class="inlinemediaobject"><img src="document-properties.png"></span><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guibutton">Properties</span></span> buttons and set the IDs to <code class="literal">2</code>. Furthermore, we change the colors of elements of these two new types (to distinguish them from the default types). Finally, we set all edge types to be bidirectional, and the IDs of the default types to <code class="literal">1</code>.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm123"></a>The Algorithm</h3></div></div></div><p>
At last we have to implement the approximation algorithm. For this we use the following implementation:
</p><pre class="programlisting">
for (var i=0; i &lt; Document.nodes.length; i++) {
    Document.nodes[i].type = 1;
}
for (var i=0; i &lt; Document.edges.length; i++) {
    Document.edges[i].type = 1;
}

var E = Document.edges(); // set of unprocessed edges
var C = new Array();      // matching edges
while (E.length &gt; 0) {
    var e = E[0];         // we take first edge e={u,v}
    var u = e.from();
    var v = e.to();
    e.type = 2;           // set edge to be a matching edge
    E.shift();            // remove e (i.e., E[0]) from edge list
    C.push(u);            // add u to C
    C.push(v);            // add v to C

    // mark u,v as nodes in C
    u.type = 2;
    v.type = 2;

    // remove from E all edges incident to u or v
    var adjacent = u.edges();
    for (var i=0; i &lt; adjacent.length; i++) {
        var index = E.indexOf(adjacent[i]); // find the index
        if (index != -1) {
            E.splice(index, 1); // remove it if really found
        }
    }
    var adjacent = v.edges();
    for (var i=0; i &lt; adjacent.length; i++) {
        var index = E.indexOf(adjacent[i]); // find the index
        if (index != -1) {
            E.splice(index, 1); // remove it if really found
        }
    }
}
Console.log("Vertex Cover contains " + C.length + " nodes.");
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm127"></a>Execute the Algorithm</h3></div></div></div><p>
The algorithm can be executed by the <span class="inlinemediaobject"><img src="media-playback-start.png"></span><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guibutton">Run</span></span> button at the script control panel.
</p></div></div></div><div id="footer"><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="introduction-nutshell.html">Prev</a></td><td class="upCell"><a accesskey="h" href="index.html">Contents</a></td><td class="nextCell"><a accesskey="n" href="user-interface.html">Next</a></td></tr><tr><td class="prevCell"><span class="application">Rocs</span> in a Nutshell </td><td class="upCell">Introduction</td><td class="nextCell"> The <span class="application">Rocs</span> User Interface</td></tr></table></div><div id="footer_text">Would you like to make a comment or contribute an update to this page?<br>Send feedback to the <a href="mailto:kde-doc-english@kde.org" class="footer_email">KDE Docs Team</a></div></div></div></body></html></FILENAME></div></div><div id="footer"><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="index.html">Prev</a></td><td class="upCell"><a accesskey="h" href="index.html">Contents</a></td><td class="nextCell"><a accesskey="n" href="introduction-nutshell.html">Next</a></td></tr><tr><td class="prevCell">The <span class="application">Rocs</span> Handbook </td><td class="upCell"> </td><td class="nextCell"> <span class="application">Rocs</span> in a Nutshell</td></tr></table></div><div id="footer_text">Would you like to make a comment or contribute an update to this page?<br>Send feedback to the <a href="mailto:kde-doc-english@kde.org" class="footer_email">KDE Docs Team</a></div></div></div></body></html></FILENAME><FILENAME filename="user-interface.html"><html><head><title>Chapter 2. The Rocs User Interface</title><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-default.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-docs.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-localised.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><meta name="keywords" content="KDE, kdeedu, mathematics, math, graphs, node, edge, Rocs"><link rel="home" href="index.html" title="The Rocs Handbook"><link rel="up" href="index.html" title="The Rocs Handbook"><link rel="prev" href="introduction-tutorial.html" title="Tutorial"><link rel="next" href="scripting.html" title="Chapter 3. Scripting"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="GENERATOR" content="KDE XSL Stylesheet V1.14 using libxslt"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div id="content"><div id="header"><div id="header_content"><div id="header_left"><div id="header_right"><img src="help:/kdoctools5-common/top-kde.jpg" width="36" height="34"> The <span class="application">Rocs</span> User Interface</div></div></div></div><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="introduction-tutorial.html">Prev</a></td><td class="upCell"> </td><td class="nextCell"><a accesskey="n" href="scripting.html">Next</a></td></tr></table></div><div id="contentBody"><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="user-interface"></a>Chapter 2. The <span class="application">Rocs</span> User Interface</h1></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="user-interface-all"></a>Main Elements of the User Interface</h2></div></div></div><p>
The user interface is divided into several logical parts as presented at the screenshot below.
</p><div class="screenshot"><div xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="mediaobject"><img src="rocs-interfaces.png" alt="GUI elements of the Rocs interface."></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">Graph Editor</span></dt><dd><p>
    The editor provides a whiteboard at that nodes and edges can be placed.
    Double-clicking at any of its elements opens a corresponding property menu.
    You can use the tools from the <span class="emphasis"><em>Side Bar Tabs</em></span> to create and modify graphs.</p><p>Available tools:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Top left in the box, your found the following action icons. Clicking at an action means that your mouse pointer applies this action at the graph editor whiteboard:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p><span class="inlinemediaobject"><img src="sc-actions-rocsselect.png"></span><span class="guiicon">Select and Move</span>: To select elements, either click at unused space at the whiteboard, keep the mouse pressed and draw a rectangle that contains some data elements and/or edges to select these elements or otherwise directly click at an unselected element to select this element. If you click at a selected element or a set of selected elements, respectively, by keeping the mouse pressed and moving around you can move these elements. Moving selected elements is also possible with the arrow keys.</p></li><li class="listitem"><p><span class="inlinemediaobject"><img src="sc-actions-rocsnode.png"></span><span class="guiicon">Add a Node</span>: Click at an arbitrary position at the graph editor whiteboard to create a new data element that belongs to the currently selected data structure. By keeping the mouse pointer pressed at the button, a menu shows up at which the data type of the new created data elements can be selected (only if different data types exist).</p></li><li class="listitem"><p><span class="inlinemediaobject"><img src="sc-actions-rocsedge.png"></span><span class="guiicon">Create an Edge</span>: Click at one data element, keep the mouse pressed and draw a line to another data element to which the edge shall point. This action is only successful if the current graph allows to add this edge (<abbr class="abbrev">e.g.</abbr>, in an undirected graph you are not allowed to add multiple edges between two data elements). By keeping the mouse pointer pressed at the button, a menu shows up at which the edge type of the new created edges can be selected (only if different edge types exist).</p></li><li class="listitem"><p><span class="inlinemediaobject"><img src="sc-actions-rocsdelete.png"></span><span class="guiicon">Delete element</span>: Click at an element to delete it. If you delete a node, all adjacent edges are also deleted.</p></li></ul></div></li></ul></div></dd><dt><span class="term">Side Bar</span></dt><dd><p>At the right, you can find the side bar that provides several tools for your workflow:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guilabel">Element Types</span></span>: This widget gives you direct access to the available edge and node types.</p></li><li class="listitem"><p><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guilabel">Journal</span></span>: Each project has its own journal that can be used to, <abbr class="abbrev">e.g.</abbr> note tasks, results, or observations.</p></li><li class="listitem"><p><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guilabel">Scripting API</span></span>: To get direct access to the script documentation, you can open this widget.</p></li></ul></div></dd><dt><span class="term">Script Editor</span></dt><dd><p>In this text editor you can write algorithms as explained in detail in <a class="xref" href="scripting.html" title="Chapter 3. Scripting">Chapter 3, <i>Scripting</i></a>. You can work on several script documents simultaneously by using several tabs.</p></dd><dt><span class="term">Script output:</span></dt><dd><p>This text area either shows debug information or the script output of your algorithm, depending on the toggled setting at the top of this widget. If the script throws an error, automatically the debug output is presented.</p></dd><dt><span class="term">Controls</span></dt><dd><p>Here you can find the controls for executing scripts. You can execute the script that is currently open at the script editor by pressing the <span class="inlinemediaobject"><img src="media-playback-start.png"></span><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guibutton">Run</span></span> button. While the script is executed, it is possible to stop execution by pressing the <span class="inlinemediaobject"><img src="process-stop.png"></span><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guibutton">Stop</span></span> button.</p></dd></dl></div></div></div></div><div id="footer"><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="introduction-tutorial.html">Prev</a></td><td class="upCell"><a accesskey="h" href="index.html">Contents</a></td><td class="nextCell"><a accesskey="n" href="scripting.html">Next</a></td></tr><tr><td class="prevCell">Tutorial </td><td class="upCell"> </td><td class="nextCell"> Scripting</td></tr></table></div><div id="footer_text">Would you like to make a comment or contribute an update to this page?<br>Send feedback to the <a href="mailto:kde-doc-english@kde.org" class="footer_email">KDE Docs Team</a></div></div></div></body></html></FILENAME><FILENAME filename="scripting.html"><html><head><title>Chapter 3. Scripting</title><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-default.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-docs.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-localised.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><meta name="keywords" content="KDE, kdeedu, mathematics, math, graphs, node, edge, Rocs"><link rel="home" href="index.html" title="The Rocs Handbook"><link rel="up" href="index.html" title="The Rocs Handbook"><link rel="prev" href="user-interface.html" title="Chapter 2. The Rocs User Interface"><link rel="next" href="import-export.html" title="Chapter 4. Import and Export"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="GENERATOR" content="KDE XSL Stylesheet V1.14 using libxslt"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div id="content"><div id="header"><div id="header_content"><div id="header_left"><div id="header_right"><img src="help:/kdoctools5-common/top-kde.jpg" width="36" height="34"> Scripting</div></div></div></div><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="user-interface.html">Prev</a></td><td class="upCell"> </td><td class="nextCell"><a accesskey="n" href="import-export.html">Next</a></td></tr></table></div><div id="contentBody"><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="scripting"></a>Chapter 3. Scripting</h1></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm225"></a>Executing Algorithms in <span class="application">Rocs</span></h2></div></div></div><p>
<span class="application">Rocs</span> internally uses the QtScript <span class="application">JavaScript</span> engine. 
This means, all algorithms that you implement must use <span class="application">JavaScript</span>.
In the following, we explain how to access and change elements of a graph document from the scripting engine.
It is important to note that changes done by the scripting engine are directly reflected at the properties at the graph editor elements.
</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm232"></a>Control Script Execution</h3></div></div></div><p>
    There are different execution modes for your algorithms:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        <span class="inlinemediaobject"><img src="media-playback-start.png"></span>
        <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guibutton">Run</span></span>: Execute the script until it finishes.</p></li><li class="listitem"><p>
        <span class="inlinemediaobject"><img src="process-stop.png"></span>
        <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guibutton">Stop</span></span>: Stop script execution (only available while a script is executed).</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm248"></a>Script Output</h3></div></div></div><p>
    During the execution of an algorithm, debug and program output is displayed in the <span class="emphasis"><em>Debug &amp; Script Output</em></span>.
    If the scripting engine detects a syntax error in your script, the error is also displayed as debug message.
    Note that all program messages are also displayed at the debug output (displayed as bold text).
</p><p>
    You can control the text that is displayed at the script output by the following functions:
</p><pre class="programlisting">
    Console.log(string message);            // displays the message as script output
    Console.debug(string message);          // displays the message as debug output
    Console.error(string message);          // displays the message as error output
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm254"></a>Scripting Engine API</h3></div></div></div><p>
The different parts of <span class="application">Rocs</span> each provide a static element that can be accessed by the scripting engine.
These are:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><strong class="userinput"><code><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="command"><span class="command"><strong>Document</strong></span></span></code></strong> for the graph document</p></li><li class="listitem"><p><strong class="userinput"><code><span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="command"><span class="command"><strong>Console</strong></span></span></code></strong> for the console log output</p></li></ul></div><p>
For the explicit API use and for a method reference, please see the inline help at the <span class="application">Rocs</span> side bar.
</p></div></div></div></div><div id="footer"><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="user-interface.html">Prev</a></td><td class="upCell"><a accesskey="h" href="index.html">Contents</a></td><td class="nextCell"><a accesskey="n" href="import-export.html">Next</a></td></tr><tr><td class="prevCell">The <span class="application">Rocs</span> User Interface </td><td class="upCell"> </td><td class="nextCell"> Import and Export</td></tr></table></div><div id="footer_text">Would you like to make a comment or contribute an update to this page?<br>Send feedback to the <a href="mailto:kde-doc-english@kde.org" class="footer_email">KDE Docs Team</a></div></div></div></body></html></FILENAME><FILENAME filename="import-export.html"><html><head><title>Chapter 4. Import and Export</title><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-default.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-docs.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-localised.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><meta name="keywords" content="KDE, kdeedu, mathematics, math, graphs, node, edge, Rocs"><link rel="home" href="index.html" title="The Rocs Handbook"><link rel="up" href="index.html" title="The Rocs Handbook"><link rel="prev" href="scripting.html" title="Chapter 3. Scripting"><link rel="next" href="graph-layout.html" title="Chapter 5. Graph Layout"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="GENERATOR" content="KDE XSL Stylesheet V1.14 using libxslt"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div id="content"><div id="header"><div id="header_content"><div id="header_left"><div id="header_right"><img src="help:/kdoctools5-common/top-kde.jpg" width="36" height="34"> Import and Export</div></div></div></div><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="scripting.html">Prev</a></td><td class="upCell"> </td><td class="nextCell"><a accesskey="n" href="graph-layout.html">Next</a></td></tr></table></div><div id="contentBody"><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="import-export"></a>Chapter 4. Import and Export</h1></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="import-export-projects"></a>Exchange <span class="application">Rocs</span> Projects</h2></div></div></div><p>
        <span class="application">Rocs</span> projects can be imported and exported as archived <code class="literal">.tar.gz</code> files.
        These archives can be used to exchange projects.
        Import and Export can be done with the <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guimenu">Graph Document</span></span> → <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guimenuitem">Import Graph...</span></span> and <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guimenu">Graph Document</span></span> → <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guimenuitem">Export Graph As...</span></span> menu items, respectively.
    </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="import-export-graphs"></a>Import and Export of Graph Documents</h3></div></div></div><p><span class="application">Rocs</span> currently supports import and export of the following file formats:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><acronym class="acronym">DOT</acronym> files, also known as Graphviz files</p></li><li class="listitem"><p><acronym class="acronym">GML</acronym> files</p></li><li class="listitem"><p>Trivial Graph Format files</p></li><li class="listitem"><p>Keyhole Markup Language Format</p></li></ul></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="format-specification-tgf"></a>Trivial Graph File Format</h4></div></div></div><p>
    The <span class="emphasis"><em>Trivial Graph Format</em></span> (<acronym class="acronym">TGF</acronym>) is a simple text-based file format for describing graphs.
    A <acronym class="acronym">TGF</acronym> file consists of a list of node definitions, that map the node IDs to labels, followed by a list of the edges.
    In this format it is only possible to have one label per node and one value per edge.
    <span class="application">Rocs</span> interprets imported graphs as undirected graphs.
    Exported graphs will contain two edges per connection if connections are bidirectional.
</p><div class="sect4"><div class="titlepage"><div><div><h5 class="title"><a name="idm304"></a>Format Specification</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>The file starts with a list of nodes (one node per line), followed by a line with the only character <span class="quote">“<span class="quote">#</span>”</span>, followed by a list of edges (one edge per line).</p></li><li class="listitem"><p>A node consists of an integer (identifier), followed by a space, followed by an arbitrary string.</p></li><li class="listitem"><p>An edge consists of two integers (identifiers) separated by a space, followed by a space, followed by an arbitrary string. It is assumed that the directed edge points from the first identifier to the second identifier.</p></li></ul></div></div><div class="sect4"><div class="titlepage"><div><div><h5 class="title"><a name="idm314"></a>Example</h5></div></div></div><pre class="programlisting">
1 starting node
2 transmitter
3 sink
#
1 2 blue
2 1 red
2 3 green
</pre></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="format-specification-dot"></a><acronym class="acronym">DOT</acronym> Language / Graphviz Graph File Format</h4></div></div></div><p>
    The <acronym class="acronym">DOT</acronym> language is a plain text graph description language that allows both,a good human readable representation of graphs as well as an efficient processing by graph layout programs.
    <acronym class="acronym">DOT</acronym> is the default file format for the Graphviz graph visualization suite, but is also widely used by other graph tools.
    The usual file extensions for <acronym class="acronym">DOT</acronym> are <code class="literal">.gv</code> and <code class="literal">.dot</code>.
</p><div class="sect4"><div class="titlepage"><div><div><h5 class="title"><a name="idm326"></a>Unsupported Features</h5></div></div></div><p>
    <span class="application">Rocs</span> can parse every graph file that contains a graph specified according to the <acronym class="acronym">DOT</acronym> language specification<a href="#ftn.idm331" class="footnote" name="idm331"><sup class="footnote">[1]</sup></a>.
    The support of language features is complete, despite of the following exceptions:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>subgraph: Due to the lack of a subgraph concept in <span class="application">Rocs</span>, subgraphs are only imported as a set of date elements and connections. Especially, connections to or from subgraphs are not imported.</p></li><li class="listitem"><p><acronym class="acronym">HTML</acronym> and <acronym class="acronym">XML</acronym> attributes: Attributes (like labels) that contain <acronym class="acronym">HTML</acronym> or <acronym class="acronym">XML</acronym> syntax are read unchanged. Especially, not adjustment of fonts and styles are read from those attributes.</p></li></ul></div></div><div class="sect4"><div class="titlepage"><div><div><h5 class="title"><a name="idm343"></a>Example</h5></div></div></div><pre class="programlisting">
digraph myGraph {
    a -&gt; b -&gt; c;
    b -&gt; d;
}
</pre></div></div></div></div><div class="footnotes"><br><hr style="width:100; text-align:left;margin-left: 0"><div id="ftn.idm331" class="footnote"><p><a href="#idm331" class="para"><sup class="para">[1] </sup></a>https://graphviz.org/doc/info/lang.html</p></div></div></div></div><div id="footer"><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="scripting.html">Prev</a></td><td class="upCell"><a accesskey="h" href="index.html">Contents</a></td><td class="nextCell"><a accesskey="n" href="graph-layout.html">Next</a></td></tr><tr><td class="prevCell">Scripting </td><td class="upCell"> </td><td class="nextCell"> Graph Layout</td></tr></table></div><div id="footer_text">Would you like to make a comment or contribute an update to this page?<br>Send feedback to the <a href="mailto:kde-doc-english@kde.org" class="footer_email">KDE Docs Team</a></div></div></div></body></html></FILENAME><FILENAME filename="graph-layout.html"><html><head><title>Chapter 5. Graph Layout</title><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-default.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-docs.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-localised.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><meta name="keywords" content="KDE, kdeedu, mathematics, math, graphs, node, edge, Rocs"><link rel="home" href="index.html" title="The Rocs Handbook"><link rel="up" href="index.html" title="The Rocs Handbook"><link rel="prev" href="import-export.html" title="Chapter 4. Import and Export"><link rel="next" href="credits.html" title="Chapter 6. Credits and License"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="GENERATOR" content="KDE XSL Stylesheet V1.14 using libxslt"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div id="content"><div id="header"><div id="header_content"><div id="header_left"><div id="header_right"><img src="help:/kdoctools5-common/top-kde.jpg" width="36" height="34"> Graph Layout</div></div></div></div><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="import-export.html">Prev</a></td><td class="upCell"> </td><td class="nextCell"><a accesskey="n" href="credits.html">Next</a></td></tr></table></div><div id="contentBody"><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="graph-layout"></a>Chapter 5. Graph Layout</h1></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm348"></a>Laying out graphs automatically in <span class="application">Rocs</span></h2></div></div></div><p>
            <span class="application">Rocs</span> can lay out graphs automatically. The <span class="application">Rocs</span> graph layout tool can be found in the main menu at <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guimenu">Graph Document</span></span> → <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guisubmenu">Tools</span></span> → <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guimenuitem">Graph Layout</span></span>.
            There are two different layout algorithms that can be applied: Force Based Layout and Radial Tree Layout. To apply one of them, select the corresponding
            tab of the graph layout tool, choose the desired parameters and execute the algorithm by pressing on the <span xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="guiitem"><span class="guibutton">OK</span></span> button. Details that are specific to each one of the layout algorithms are provided in the next sections.
        </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm359"></a>Force Based Layout</h3></div></div></div><p>
            The Force Based Layout can be applied to any graph. Intuitively, this algorithm simulates forces acting in each node. There are repelling forces between pairs of nodes and attraction forces between pairs of nodes that are neighbours. The magnitude of these forces can be specified by moving the corresponding sliders in the user interface.
        </p><div class="screenshot"><div xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="mediaobject"><img src="force-based-layout-ui-screenshot.png" alt="A Screenshot of the Force Based Layout tab of the Rocs graph layout tool."></div></div><p>
            Another parameter that can be controlled is the Area Factor. This parameter controls how the nodes are spread. Layouts generated with high values of Area Factor have a tendency of  having large distances between nodes.
        </p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idm372"></a>Radial Tree Layout</h4></div></div></div><p>
            The Radial Tree Layout can only be applied to trees. Any attempt to apply this layout algorithm to other kinds of graph will produce an error message.
            Parameters for the Radial Tree Layout can be selected using the provided user interface.
        </p><div class="screenshot"><div xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="mediaobject"><img src="radial-tree-layout-ui-screenshot.png" alt="A Screenshot of the Radial Tree Layout tab of the Rocs graph layout tool."></div></div><p>
            The tree type parameter selects between a free tree layout and a rooted tree layout. In a free tree layout, nodes are placed freely without any apparent hierarchy between them. In a rooted tree layout, the root node is placed at the top and sub-trees are laid out below it, giving an idea of a hierarchy between nodes.
        </p><p>
            The center/root parameter defines which node is going be used as root for the rooted tree layout or as center for the free tree layout. The center of a free tree layout is the first node to be placed by the algorithm. All other nodes are placed on circles centered at the center node. A center/root can be selected automatically by the layout algorithm.
        </p><p>
            The node separation parameter controls the distance between nodes. Increasing the value of this parameter will cause the distance between nodes to increase.
            Similarly, decreasing the value of this parameter will cause the distance between nodes to decrease.
        </p></div></div></div></div></div><div id="footer"><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="import-export.html">Prev</a></td><td class="upCell"><a accesskey="h" href="index.html">Contents</a></td><td class="nextCell"><a accesskey="n" href="credits.html">Next</a></td></tr><tr><td class="prevCell">Import and Export </td><td class="upCell"> </td><td class="nextCell"> Credits and License</td></tr></table></div><div id="footer_text">Would you like to make a comment or contribute an update to this page?<br>Send feedback to the <a href="mailto:kde-doc-english@kde.org" class="footer_email">KDE Docs Team</a></div></div></div></body></html></FILENAME><FILENAME filename="credits.html"><html><head><title>Chapter 6. Credits and License</title><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-default.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-docs.css"><link rel="stylesheet" type="text/css" href="help:/kdoctools5-common/kde-localised.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><meta name="keywords" content="KDE, kdeedu, mathematics, math, graphs, node, edge, Rocs"><link rel="home" href="index.html" title="The Rocs Handbook"><link rel="up" href="index.html" title="The Rocs Handbook"><link rel="prev" href="graph-layout.html" title="Chapter 5. Graph Layout"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="GENERATOR" content="KDE XSL Stylesheet V1.14 using libxslt"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div id="content"><div id="header"><div id="header_content"><div id="header_left"><div id="header_right"><img src="help:/kdoctools5-common/top-kde.jpg" width="36" height="34"> Credits and License</div></div></div></div><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="graph-layout.html">Prev</a></td><td class="upCell"> </td><td class="nextCell"></td></tr></table></div><div id="contentBody"><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="credits"></a>Chapter 6. Credits and License</h1></div></div></div><p>
<span class="application">Rocs</span>
</p><p>Program Copyright:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Copyright 2008       Ugo Sangiori (ugorox AT gmail.com)</p></li><li class="listitem"><p>Copyright 2008-2012  Tomaz Canabrava (tcanabrava AT kde.org)</p></li><li class="listitem"><p>Copyright 2008-2012  Wagner Reck (wagner.reck AT gmail.com)</p></li><li class="listitem"><p>Copyright 2011-2015  Andreas Cord-Landwehr (cordlandwehr AT kde.org)</p></li></ul></div><p>Documentation Copyright:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Documentation copyright 2009 <span class="firstname">Anne-Marie</span> <span class="surname">Mahfouf</span> <code class="email">(annma AT kde.org)</code></p></li><li class="listitem"><p>Documentation copyright 2009 Tomaz Canabrava (tcanabrava AT kde.org)</p></li><li class="listitem"><p>Documentation copyright 2011-2015 Andreas Cord-Landwehr (cordlandwehr AT kde.org)</p></li></ul></div><p><a name="gnu-fdl"></a>This documentation is licensed under the terms of the <a class="ulink" href="help:/kdoctools5-common/fdl-license.html" target="_top">GNU Free Documentation
License</a>.</p><p>This program is licensed under the terms of the <a class="ulink" href="help:/kdoctools5-common/gpl-license.html" target="_top">GNU General Public License</a>.</p></div></div><div id="footer"><div class="navCenter"><table class="navigation"><tr><td class="prevCell"><a accesskey="p" href="graph-layout.html">Prev</a></td><td class="upCell"><a accesskey="h" href="index.html">Contents</a></td><td class="nextCell"></td></tr><tr><td class="prevCell">Graph Layout </td><td class="upCell"> </td><td class="nextCell"> </td></tr></table></div><div id="footer_text">Would you like to make a comment or contribute an update to this page?<br>Send feedback to the <a href="mailto:kde-doc-english@kde.org" class="footer_email">KDE Docs Team</a></div></div></div></body></html></FILENAME></div></div><div id="footer"><div class="navCenter"><table class="navigation"><tr><td class="prevCell"></td><td class="upCell"> </td><td class="nextCell"><a accesskey="n" href="introduction.html">Next</a></td></tr><tr><td class="prevCell"> </td><td class="upCell"> </td><td class="nextCell"> Introduction</td></tr></table></div><div id="footer_text">Would you like to make a comment or contribute an update to this page?<br>Send feedback to the <a href="mailto:kde-doc-english@kde.org" class="footer_email">KDE Docs Team</a></div></div></div></body></html></FILENAME>

Generated by dwww version 1.15 on Thu May 23 18:58:35 CEST 2024.