https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&feed=atom&action=history
Architectural overview - Revision history
2024-03-29T01:32:33Z
Revision history for this page on the wiki
MediaWiki 1.36.1
https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&diff=101891&oldid=prev
Tavmjong: /* Main subsystems */
2016-09-16T09:00:50Z
<p><span dir="auto"><span class="autocomment">Main subsystems</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 09:00, 16 September 2016</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l6">Line 6:</td>
<td colspan="2" class="diff-lineno">Line 6:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Inkscape can be roughly subdivided into these subsystems:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Inkscape can be roughly subdivided into these subsystems:</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">;[[Display subsystem]]</del></div></td><td colspan="2"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">:Responsible for rendering graphic primitives, displaying things onscreen, and providing the main canvas widget. Also dispatches events to tools. Contained in the <code>src/display/</code> directory of the source tree. </del></div></td><td colspan="2"></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[XML subsystem]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[XML subsystem]]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Classes to store the parsed XML of an SVG document. Fairly generic, and doesn't contain significant SVG-specific functionality. The main distinguishing features (from something like <code>libxml++</code>) are notifications about XML changes and undo functionality. This subsystem is garbage-collected. Because XML nodes were formerly C structures called <code>SPRepr</code>, the XML tree is sometimes called the "repr tree", and XML nodes "reprs" (short for "representation").</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Classes to store the parsed XML of an SVG document. Fairly generic, and doesn't contain significant SVG-specific functionality. The main distinguishing features (from something like <code>libxml++</code>) are notifications about XML changes and undo functionality. This subsystem is garbage-collected. Because XML nodes were formerly C structures called <code>SPRepr</code>, the XML tree is sometimes called the "repr tree", and XML nodes "reprs" (short for "representation").</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Object tree]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Object tree]]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:This is where the bulk of Inkscape's functionality is contained. Implements an XML-to-display primitive mapping, and provides an object hierarchy that can be modified using the tools. Based on <code>GObject</code>. Each document has an object tree and an XML tree. Changes in the XML tree are automatically propagated to the object tree via observers, but ''not'' the other way around—a function called <code>updateRepr()</code> must be explicitly called.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:This is where the bulk of Inkscape's functionality is contained. Implements an XML-to-display primitive mapping, and provides an object hierarchy that can be modified using the tools. Based on <code>GObject</code>. Each document has an object tree and an XML tree. Changes in the XML tree are automatically propagated to the object tree via observers, but ''not'' the other way around—a function called <code>updateRepr()</code> must be explicitly called.</div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">;[[Display subsystem]]</ins></div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">:Responsible for rendering graphic primitives, displaying things onscreen, and providing the main canvas widget. Also dispatches events to tools. Contained in the <code>src/display/</code> directory of the source tree. </ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Tools subsystem]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Tools subsystem]]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Processes input events on the canvas and translates them into document changes. Tools are called ''event contexts'' internally. This subsystem is based on <code>GObject</code>, dispersed in the <code>src/</code> directory (and several subdirectories). Files with event handling code end with <code>-context.cpp</code>.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Processes input events on the canvas and translates them into document changes. Tools are called ''event contexts'' internally. This subsystem is based on <code>GObject</code>, dispersed in the <code>src/</code> directory (and several subdirectories). Files with event handling code end with <code>-context.cpp</code>.</div></td></tr>
</table>
Tavmjong
https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&diff=101881&oldid=prev
Tavmjong at 07:55, 16 September 2016
2016-09-16T07:55:15Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 07:55, 16 September 2016</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>This is a high-level overview of how Inkscape works.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>This is a high-level overview of how Inkscape works.</div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">See doc/architecture.txt in the code repository for another (dated) overview.</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Main subsystems==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Main subsystems==</div></td></tr>
</table>
Tavmjong
https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&diff=90674&oldid=prev
LiamW: /* Historical note */
2014-05-14T21:51:00Z
<p><span dir="auto"><span class="autocomment">Historical note</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 21:51, 14 May 2014</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l37">Line 37:</td>
<td colspan="2" class="diff-lineno">Line 37:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Writing and maintaining <code>GObject</code> code is cumbersome, because C lacks any syntax support for this system. There are still many places that use old <code>GObject</code>-based code (notably the tools and the <code>SPObject</code> tree). </div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Writing and maintaining <code>GObject</code> code is cumbersome, because C lacks any syntax support for this system. There are still many places that use old <code>GObject</code>-based code (notably the tools and the <code>SPObject</code> tree). </div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>An important long-term goal is to convert all <code>GObject</code> code to regular C++ objects. <del style="font-weight: bold; text-decoration: none;"> For </del>the <del style="font-weight: bold; text-decoration: none;">present, however, some knowledge of <code>GObject</code> is needed to develop Inkscape</del>.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>An important long-term goal is to convert all <code>GObject</code> code to regular C++ objects. <ins style="font-weight: bold; text-decoration: none;">This goal has been addressed for </ins>the <ins style="font-weight: bold; text-decoration: none;">most part with 0.91</ins>.</div></td></tr>
</table>
LiamW
https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&diff=90482&oldid=prev
Zearin: Minor markup fix (the “tt” element isn’t supported in HTML5)
2014-05-07T14:47:54Z
<p>Minor markup fix (the “tt” element isn’t supported in HTML5)</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:47, 7 May 2014</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l5">Line 5:</td>
<td colspan="2" class="diff-lineno">Line 5:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Display subsystem]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Display subsystem]]</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>:Responsible for rendering graphic primitives, displaying things onscreen, and providing the main canvas widget. Also dispatches events to tools. Contained in the <<del style="font-weight: bold; text-decoration: none;">tt</del>>src/display/</<del style="font-weight: bold; text-decoration: none;">tt</del>> directory of the source tree. </div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>:Responsible for rendering graphic primitives, displaying things onscreen, and providing the main canvas widget. Also dispatches events to tools. Contained in the <<ins style="font-weight: bold; text-decoration: none;">code</ins>>src/display/</<ins style="font-weight: bold; text-decoration: none;">code</ins>> directory of the source tree. </div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[XML subsystem]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[XML subsystem]]</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>:Classes to store the parsed XML of an SVG document. Fairly generic, and doesn't contain significant SVG-specific functionality. The main distinguishing features (from something like <<del style="font-weight: bold; text-decoration: none;">tt</del>>libxml++</<del style="font-weight: bold; text-decoration: none;">tt</del>>) are notifications about XML changes and undo functionality. This subsystem is garbage-collected. Because XML nodes were formerly C structures called <<del style="font-weight: bold; text-decoration: none;">tt</del>>SPRepr</<del style="font-weight: bold; text-decoration: none;">tt</del>>, the XML tree is sometimes called the "repr tree", and XML nodes "reprs" (short for "representation").</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>:Classes to store the parsed XML of an SVG document. Fairly generic, and doesn't contain significant SVG-specific functionality. The main distinguishing features (from something like <<ins style="font-weight: bold; text-decoration: none;">code</ins>>libxml++</<ins style="font-weight: bold; text-decoration: none;">code</ins>>) are notifications about XML changes and undo functionality. This subsystem is garbage-collected. Because XML nodes were formerly C structures called <<ins style="font-weight: bold; text-decoration: none;">code</ins>>SPRepr</<ins style="font-weight: bold; text-decoration: none;">code</ins>>, the XML tree is sometimes called the "repr tree", and XML nodes "reprs" (short for "representation").</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Object tree]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Object tree]]</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>:This is where the bulk of Inkscape's functionality is contained. Implements an XML-to-display primitive mapping, and provides an object hierarchy that can be modified using the tools. Based on <code>GObject</code>. Each document has an object tree and an XML tree. Changes in the XML tree are automatically propagated to the object tree via observers, but ''not'' the other way around—a function called <<del style="font-weight: bold; text-decoration: none;">tt</del>>updateRepr()</<del style="font-weight: bold; text-decoration: none;">tt</del>> must be explicitly called.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>:This is where the bulk of Inkscape's functionality is contained. Implements an XML-to-display primitive mapping, and provides an object hierarchy that can be modified using the tools. Based on <code>GObject</code>. Each document has an object tree and an XML tree. Changes in the XML tree are automatically propagated to the object tree via observers, but ''not'' the other way around—a function called <<ins style="font-weight: bold; text-decoration: none;">code</ins>>updateRepr()</<ins style="font-weight: bold; text-decoration: none;">code</ins>> must be explicitly called.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Tools subsystem]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Tools subsystem]]</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>:Processes input events on the canvas and translates them into document changes. Tools are called ''event contexts'' internally. This subsystem is based on <code>GObject</code>, dispersed in the <<del style="font-weight: bold; text-decoration: none;">tt</del>>src/</<del style="font-weight: bold; text-decoration: none;">tt</del>> directory (and several subdirectories). Files with event handling code end with <<del style="font-weight: bold; text-decoration: none;">tt</del>>-context.cpp</<del style="font-weight: bold; text-decoration: none;">tt</del>>.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>:Processes input events on the canvas and translates them into document changes. Tools are called ''event contexts'' internally. This subsystem is based on <code>GObject</code>, dispersed in the <<ins style="font-weight: bold; text-decoration: none;">code</ins>>src/</<ins style="font-weight: bold; text-decoration: none;">code</ins>> directory (and several subdirectories). Files with event handling code end with <<ins style="font-weight: bold; text-decoration: none;">code</ins>>-context.cpp</<ins style="font-weight: bold; text-decoration: none;">code</ins>>.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Extension subsystem]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Extension subsystem]]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Allows third-party extensions without modifying Inkscape's code. Currently, extensions may provide additional I/O formats, effects, path effects, and printing backends.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Allows third-party extensions without modifying Inkscape's code. Currently, extensions may provide additional I/O formats, effects, path effects, and printing backends.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Preferences subsystem]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Preferences subsystem]]</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>:Provides a shared storage for all of Inkscape's user settings. Small but relatively self-contained. Keeps the parsed XML tree of the preferences file (but it's not directly accessible). The intent is to separate preference ''implementation'' (which might not be based on an XML file in the future) from the ''API'' used to access them. Contained in <<del style="font-weight: bold; text-decoration: none;">tt</del>>preferences.cpp</<del style="font-weight: bold; text-decoration: none;">tt</del>></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>:Provides a shared storage for all of Inkscape's user settings. Small but relatively self-contained. Keeps the parsed XML tree of the preferences file (but it's not directly accessible). The intent is to separate preference ''implementation'' (which might not be based on an XML file in the future) from the ''API'' used to access them. Contained in <<ins style="font-weight: bold; text-decoration: none;">code</ins>>preferences.cpp</<ins style="font-weight: bold; text-decoration: none;">code</ins>></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[User Interface Modules]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[User Interface Modules]]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Dialogs, widgets, tools, and more.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Dialogs, widgets, tools, and more.</div></td></tr>
</table>
Zearin
https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&diff=90476&oldid=prev
Zearin: Minor tweaks to markup
2014-05-07T14:45:50Z
<p>Minor tweaks to markup</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:45, 7 May 2014</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l9">Line 9:</td>
<td colspan="2" class="diff-lineno">Line 9:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Classes to store the parsed XML of an SVG document. Fairly generic, and doesn't contain significant SVG-specific functionality. The main distinguishing features (from something like <tt>libxml++</tt>) are notifications about XML changes and undo functionality. This subsystem is garbage-collected. Because XML nodes were formerly C structures called <tt>SPRepr</tt>, the XML tree is sometimes called the "repr tree", and XML nodes "reprs" (short for "representation").</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Classes to store the parsed XML of an SVG document. Fairly generic, and doesn't contain significant SVG-specific functionality. The main distinguishing features (from something like <tt>libxml++</tt>) are notifications about XML changes and undo functionality. This subsystem is garbage-collected. Because XML nodes were formerly C structures called <tt>SPRepr</tt>, the XML tree is sometimes called the "repr tree", and XML nodes "reprs" (short for "representation").</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Object tree]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Object tree]]</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>:This is where the bulk of Inkscape's functionality is contained. Implements an XML-to-display primitive mapping, and provides an object hierarchy that can be modified using the tools. Based on GObject. Each document has an object tree and an XML tree. Changes in the XML tree are automatically propagated to the object tree via observers, but ''not'' the other way around—a function called <tt>updateRepr()</tt> must be explicitly called.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>:This is where the bulk of Inkscape's functionality is contained. Implements an XML-to-display primitive mapping, and provides an object hierarchy that can be modified using the tools. Based on <ins style="font-weight: bold; text-decoration: none;"><code></ins>GObject<ins style="font-weight: bold; text-decoration: none;"></code></ins>. Each document has an object tree and an XML tree. Changes in the XML tree are automatically propagated to the object tree via observers, but ''not'' the other way around—a function called <tt>updateRepr()</tt> must be explicitly called.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Tools subsystem]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Tools subsystem]]</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>:Processes input events on the canvas and translates them into document changes. Tools are called ''event contexts'' internally. This subsystem is based on GObject, dispersed in the <tt>src/</tt> directory (and several subdirectories). Files with event handling code end with <tt>-context.cpp</tt>.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>:Processes input events on the canvas and translates them into document changes. Tools are called ''event contexts'' internally. This subsystem is based on <ins style="font-weight: bold; text-decoration: none;"><code></ins>GObject<ins style="font-weight: bold; text-decoration: none;"></code></ins>, dispersed in the <tt>src/</tt> directory (and several subdirectories). Files with event handling code end with <tt>-context.cpp</tt>.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Extension subsystem]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>;[[Extension subsystem]]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Allows third-party extensions without modifying Inkscape's code. Currently, extensions may provide additional I/O formats, effects, path effects, and printing backends.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>:Allows third-party extensions without modifying Inkscape's code. Currently, extensions may provide additional I/O formats, effects, path effects, and printing backends.</div></td></tr>
</table>
Zearin
https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&diff=90470&oldid=prev
Zearin: Minor tweaks to markup
2014-05-07T14:44:36Z
<p>Minor tweaks to markup</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:44, 7 May 2014</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l33">Line 33:</td>
<td colspan="2" class="diff-lineno">Line 33:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Inkscape is derived from an earlier vector drawing program called Sodipodi. </div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Inkscape is derived from an earlier vector drawing program called Sodipodi. </div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Sodipodi was written entirely in plain C using GObject. GObject is the C object system used by GTK+. </div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Sodipodi was written entirely in plain C using <ins style="font-weight: bold; text-decoration: none;"><code></ins>GObject<ins style="font-weight: bold; text-decoration: none;"></code></ins>. GObject is the C object system used by GTK+. </div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Writing and maintaining GObject code is cumbersome, because C lacks any syntax support for this system. There are still many places that use old GObject-based code (notably the tools and the SPObject tree). An important long-term goal is to convert all GObject code to regular C++ objects. For the present, however, some knowledge of GObject is needed to develop Inkscape.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Writing and maintaining <ins style="font-weight: bold; text-decoration: none;"><code></ins>GObject<ins style="font-weight: bold; text-decoration: none;"></code> </ins>code is cumbersome, because C lacks any syntax support for this system. There are still many places that use old <ins style="font-weight: bold; text-decoration: none;"><code></ins>GObject<ins style="font-weight: bold; text-decoration: none;"></code></ins>-based code (notably the tools and the <ins style="font-weight: bold; text-decoration: none;"><code></ins>SPObject<ins style="font-weight: bold; text-decoration: none;"></code> </ins>tree). </div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>An important long-term goal is to convert all <ins style="font-weight: bold; text-decoration: none;"><code></ins>GObject<ins style="font-weight: bold; text-decoration: none;"></code> </ins>code to regular C++ objects. For the present, however, some knowledge of <ins style="font-weight: bold; text-decoration: none;"><code></ins>GObject<ins style="font-weight: bold; text-decoration: none;"></code> </ins>is needed to develop Inkscape.</div></td></tr>
</table>
Zearin
https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&diff=63529&oldid=prev
Zearin: Edited for clarity.
2010-07-21T14:24:06Z
<p>Edited for clarity.</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:24, 21 July 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l20">Line 20:</td>
<td colspan="2" class="diff-lineno">Line 20:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==How Inkscape starts==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==How Inkscape starts==</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div># <del style="font-weight: bold; text-decoration: none;">First, the </del><tt>main()</tt> <del style="font-weight: bold; text-decoration: none;">function </del>is called. On Windows<del style="font-weight: bold; text-decoration: none;">, it is called from a </del><tt>WinMain()</tt> stub<del style="font-weight: bold; text-decoration: none;">, so that the command prompt is not displayed.</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div># <tt>main()</tt> is called<ins style="font-weight: bold; text-decoration: none;">, and determines whether Inkscape was run in graphical mode or command-line mode</ins>.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"># </del><tt>main()</tt> <del style="font-weight: bold; text-decoration: none;">determines whether Inkscape was run in </del>command<del style="font-weight: bold; text-decoration: none;">-line mode or in graphical mode</del>.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">## '''</ins>On Windows<ins style="font-weight: bold; text-decoration: none;">:''' A </ins><tt>WinMain()</tt> stub <ins style="font-weight: bold; text-decoration: none;">calls </ins><tt>main()</tt> <ins style="font-weight: bold; text-decoration: none;">so that the </ins>command <ins style="font-weight: bold; text-decoration: none;">prompt is not displayed</ins>.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div># Based on <del style="font-weight: bold; text-decoration: none;">that </del>decision, <tt><del style="font-weight: bold; text-decoration: none;">sp_main_console</del>()</tt> or <tt><del style="font-weight: bold; text-decoration: none;">sp_main_gui</del>()</tt> is called. Both <del style="font-weight: bold; text-decoration: none;">those functions </del>call <tt>sp_common_main()</tt>, which handles parameter parsing. Parameters are parsed into <del style="font-weight: bold; text-decoration: none;">a lot </del>global variables (needs to be heavily refactored)<del style="font-weight: bold; text-decoration: none;">.</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div># Based on <ins style="font-weight: bold; text-decoration: none;">the </ins>decision, <ins style="font-weight: bold; text-decoration: none;">either </ins><tt><ins style="font-weight: bold; text-decoration: none;">sp_main_gui</ins>()</tt> or <tt><ins style="font-weight: bold; text-decoration: none;">sp_main_console</ins>()</tt>is called. <ins style="font-weight: bold; text-decoration: none;"> </ins></div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div># An <tt>Inkscape::NSApplication::Application</tt> <del style="font-weight: bold; text-decoration: none;">object </del>is <del style="font-weight: bold; text-decoration: none;">instantiated</del>. This object is an unfinished attempt at converting top-level Inkscape structures to C++ classes. It creates the legacy <tt>Inkscape::Application</tt> structure and creates <tt>SPDesktop</tt><del style="font-weight: bold; text-decoration: none;">s </del>for each <del style="font-weight: bold; text-decoration: none;">opened </del>document. (<tt>SPDesktop</tt><del style="font-weight: bold; text-decoration: none;">, "desktop" for short </del>is a window used to edit a <del style="font-weight: bold; text-decoration: none;">document - the </del>main window you see when you start Inkscape.)</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">## </ins>Both call <tt>sp_common_main()</tt>, which handles parameter parsing. Parameters are parsed into <ins style="font-weight: bold; text-decoration: none;">several </ins>global variables<ins style="font-weight: bold; text-decoration: none;">. </ins>(<ins style="font-weight: bold; text-decoration: none;">Yes, this </ins>needs to be heavily refactored<ins style="font-weight: bold; text-decoration: none;">!</ins>)</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div># <del style="font-weight: bold; text-decoration: none;">Finally, the </del>created desktops are shown.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div># An <ins style="font-weight: bold; text-decoration: none;">instance of </ins><tt>Inkscape::NSApplication::Application</tt> is <ins style="font-weight: bold; text-decoration: none;">created</ins>. </div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">## </ins>This object is an unfinished attempt at converting top-level Inkscape structures to C++ classes. It creates the legacy <tt>Inkscape::Application</tt> structure and creates <ins style="font-weight: bold; text-decoration: none;">an instance of </ins><tt>SPDesktop</tt> for each <ins style="font-weight: bold; text-decoration: none;">open </ins>document. (<tt>SPDesktop</tt> is a window used to edit a <ins style="font-weight: bold; text-decoration: none;">document—the </ins>main window you see when you start Inkscape<ins style="font-weight: bold; text-decoration: none;">. Sometimes simply called “desktop” for short</ins>.)</div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div># <ins style="font-weight: bold; text-decoration: none;">The </ins>created desktops are shown. <ins style="font-weight: bold; text-decoration: none;"> </ins></div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Ta-Da!</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Historical note==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Historical note==</div></td></tr>
</table>
Zearin
https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&diff=63523&oldid=prev
Zearin: Reformatted to a definition list. Semantically correct and more readable. :)
2010-07-21T14:07:52Z
<p>Reformatted to a definition list. Semantically correct and more readable. :)</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:07, 21 July 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l2">Line 2:</td>
<td colspan="2" class="diff-lineno">Line 2:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Main subsystems==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Main subsystems==</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Inkscape can be roughly subdivided into <del style="font-weight: bold; text-decoration: none;">a few </del>subsystems:</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Inkscape can be roughly subdivided into <ins style="font-weight: bold; text-decoration: none;">these </ins>subsystems:</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">* </del>[[Display subsystem]]<del style="font-weight: bold; text-decoration: none;">. </del>Responsible for rendering graphic primitives, displaying things onscreen, and providing the main canvas widget. Also dispatches events to tools. Contained in the <tt>src/display/</tt> directory of the source tree. </div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">;</ins>[[Display subsystem]]</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">* </del>[[XML subsystem]]<del style="font-weight: bold; text-decoration: none;">. </del>Classes to store the parsed XML of an SVG document. Fairly generic, and doesn't contain significant SVG-specific functionality. The main distinguishing features (from something like <tt>libxml++</tt>) are notifications about XML changes and undo functionality. This subsystem is garbage-collected. Because XML nodes were formerly C structures called <tt>SPRepr</tt>, the XML tree is sometimes called the "repr tree", and XML nodes "reprs" (short for "representation").</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">:</ins>Responsible for rendering graphic primitives, displaying things onscreen, and providing the main canvas widget. Also dispatches events to tools. Contained in the <tt>src/display/</tt> directory of the source tree. </div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">* </del>[[Object tree]]<del style="font-weight: bold; text-decoration: none;">. </del>This is where the bulk of Inkscape's functionality is contained. Implements an XML-to-display primitive mapping, and provides an object hierarchy that can be modified using the tools. Based on GObject. Each document has an object tree and an XML tree. Changes in the XML tree are automatically propagated to the object tree via observers, but ''not'' the other way around—a function called <tt>updateRepr()</tt> must be explicitly called.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">;</ins>[[XML subsystem]]</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">* </del>[[Tools subsystem]]<del style="font-weight: bold; text-decoration: none;">. </del>Processes input events on the canvas and translates them into document changes. Tools are called ''event contexts'' internally. This subsystem is based on GObject, dispersed in the <tt>src/</tt> directory (and several subdirectories). Files with event handling code end with <tt>-context.cpp</tt>.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">:</ins>Classes to store the parsed XML of an SVG document. Fairly generic, and doesn't contain significant SVG-specific functionality. The main distinguishing features (from something like <tt>libxml++</tt>) are notifications about XML changes and undo functionality. This subsystem is garbage-collected. Because XML nodes were formerly C structures called <tt>SPRepr</tt>, the XML tree is sometimes called the "repr tree", and XML nodes "reprs" (short for "representation").</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">* </del>[[Extension subsystem]]<del style="font-weight: bold; text-decoration: none;">. </del>Allows third-party extensions without modifying Inkscape's code. Currently, extensions may provide additional I/O formats, effects, path effects, and printing backends.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">;</ins>[[Object tree]]</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">* </del>[[Preferences subsystem]]<del style="font-weight: bold; text-decoration: none;">. </del>Provides a shared storage for all of Inkscape's user settings. Small but relatively self-contained. Keeps the parsed XML tree of the preferences file (but it's not directly accessible). The intent is to separate preference ''implementation'' (which might not be based on an XML file in the future) from the ''API'' used to access them. Contained in <tt>preferences.cpp</tt></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">:</ins>This is where the bulk of Inkscape's functionality is contained. Implements an XML-to-display primitive mapping, and provides an object hierarchy that can be modified using the tools. Based on GObject. Each document has an object tree and an XML tree. Changes in the XML tree are automatically propagated to the object tree via observers, but ''not'' the other way around—a function called <tt>updateRepr()</tt> must be explicitly called.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">* </del>[[User Interface Modules]]<del style="font-weight: bold; text-decoration: none;">. </del>Dialogs, widgets, tools, and more.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">;</ins>[[Tools subsystem]]</div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">:</ins>Processes input events on the canvas and translates them into document changes. Tools are called ''event contexts'' internally. This subsystem is based on GObject, dispersed in the <tt>src/</tt> directory (and several subdirectories). Files with event handling code end with <tt>-context.cpp</tt>.</div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">;</ins>[[Extension subsystem]]</div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">:</ins>Allows third-party extensions without modifying Inkscape's code. Currently, extensions may provide additional I/O formats, effects, path effects, and printing backends.</div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">;</ins>[[Preferences subsystem]]</div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">:</ins>Provides a shared storage for all of Inkscape's user settings. Small but relatively self-contained. Keeps the parsed XML tree of the preferences file (but it's not directly accessible). The intent is to separate preference ''implementation'' (which might not be based on an XML file in the future) from the ''API'' used to access them. Contained in <tt>preferences.cpp</tt></div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">;</ins>[[User Interface Modules]]</div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">:</ins>Dialogs, widgets, tools, and more.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==How Inkscape starts==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==How Inkscape starts==</div></td></tr>
</table>
Zearin
https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&diff=63517&oldid=prev
Zearin: Edited for brevity and clarity.
2010-07-21T14:05:45Z
<p>Edited for brevity and clarity.</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:05, 21 July 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l3">Line 3:</td>
<td colspan="2" class="diff-lineno">Line 3:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Main subsystems==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Main subsystems==</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Inkscape can be roughly subdivided into a few subsystems:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Inkscape can be roughly subdivided into a few subsystems:</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [[Display subsystem]] <del style="font-weight: bold; text-decoration: none;">- contained in the <tt>src/display/</tt> directory of the source tree</del>. <del style="font-weight: bold; text-decoration: none;">It is responsible </del>for rendering graphic primitives, displaying things <del style="font-weight: bold; text-decoration: none;">on the screen</del>, and providing the main canvas widget. <del style="font-weight: bold; text-decoration: none;">It also </del>dispatches events to tools.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [[XML subsystem]] <del style="font-weight: bold; text-decoration: none;">- provides classes </del>to store the parsed XML of an SVG document. <del style="font-weight: bold; text-decoration: none;">It is fairly </del>generic and <del style="font-weight: bold; text-decoration: none;">does not </del>contain significant SVG-<del style="font-weight: bold; text-decoration: none;">related </del>functionality. The main <del style="font-weight: bold; text-decoration: none;">feature that distinguishes it </del>from <del style="font-weight: bold; text-decoration: none;">e.g. </del>libxml++ <del style="font-weight: bold; text-decoration: none;">is that it provides notification </del>about XML changes and undo functionality. <del style="font-weight: bold; text-decoration: none;">The classes of this </del>subsystem <del style="font-weight: bold; text-decoration: none;">are </del>garbage collected. Because <del style="font-weight: bold; text-decoration: none;">the </del>XML nodes were formerly C structures called <tt>SPRepr</tt>, the XML tree is sometimes called the "repr tree", and XML nodes "reprs" <del style="font-weight: bold; text-decoration: none;">- a </del>short <del style="font-weight: bold; text-decoration: none;">form of </del>"representation".</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* [[Display subsystem]]. <ins style="font-weight: bold; text-decoration: none;"> Responsible </ins>for rendering graphic primitives, displaying things <ins style="font-weight: bold; text-decoration: none;">onscreen</ins>, and providing the main canvas widget. <ins style="font-weight: bold; text-decoration: none;">Also </ins>dispatches events to tools<ins style="font-weight: bold; text-decoration: none;">. Contained in the <tt>src/display/</tt> directory of the source tree</ins>. </div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [[Object tree]] <del style="font-weight: bold; text-decoration: none;">- implements a mapping from </del>the XML to display <del style="font-weight: bold; text-decoration: none;">primitives</del>, and provides <del style="font-weight: bold; text-decoration: none;">a </del>hierarchy <del style="font-weight: bold; text-decoration: none;">of objects </del>that can be modified using the tools. <del style="font-weight: bold; text-decoration: none;">This is where the bulk of Inkscape's functionality is contained. This system is based </del>on GObject. Each document has an object tree and an XML tree. Changes in the XML tree are automatically propagated to the object tree via observers, but not the other way <del style="font-weight: bold; text-decoration: none;">around - a </del>function called <tt>updateRepr()</tt> <del style="font-weight: bold; text-decoration: none;">needs to </del>be explicitly called.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* [[XML subsystem]]<ins style="font-weight: bold; text-decoration: none;">. Classes </ins>to store the parsed XML of an SVG document. <ins style="font-weight: bold; text-decoration: none;">Fairly </ins>generic<ins style="font-weight: bold; text-decoration: none;">, </ins>and <ins style="font-weight: bold; text-decoration: none;">doesn't </ins>contain significant SVG-<ins style="font-weight: bold; text-decoration: none;">specific </ins>functionality. The main <ins style="font-weight: bold; text-decoration: none;">distinguishing features (</ins>from <ins style="font-weight: bold; text-decoration: none;">something like <tt></ins>libxml++<ins style="font-weight: bold; text-decoration: none;"></tt>) are notifications </ins>about XML changes and undo functionality. <ins style="font-weight: bold; text-decoration: none;">This </ins>subsystem <ins style="font-weight: bold; text-decoration: none;">is </ins>garbage<ins style="font-weight: bold; text-decoration: none;">-</ins>collected. Because XML nodes were formerly C structures called <tt>SPRepr</tt>, the XML tree is sometimes called the "repr tree", and XML nodes "reprs" <ins style="font-weight: bold; text-decoration: none;">(</ins>short <ins style="font-weight: bold; text-decoration: none;">for </ins>"representation"<ins style="font-weight: bold; text-decoration: none;">)</ins>.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [[Tools subsystem]] <del style="font-weight: bold; text-decoration: none;">- provides tools, internally called event contexts, that process </del>input events <del style="font-weight: bold; text-decoration: none;">happening </del>on the canvas and <del style="font-weight: bold; text-decoration: none;">translate </del>them into document changes. This subsystem is based on GObject, dispersed in the <tt>src/</tt> directory and several <del style="font-weight: bold; text-decoration: none;">subdirs</del>. Files <del style="font-weight: bold; text-decoration: none;">that contain </del>event handling code end with <tt>-context.cpp</tt>.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* [[Object tree]]<ins style="font-weight: bold; text-decoration: none;">. This is where </ins>the <ins style="font-weight: bold; text-decoration: none;">bulk of Inkscape's functionality is contained. Implements an </ins>XML<ins style="font-weight: bold; text-decoration: none;">-</ins>to<ins style="font-weight: bold; text-decoration: none;">-</ins>display <ins style="font-weight: bold; text-decoration: none;">primitive mapping</ins>, and provides <ins style="font-weight: bold; text-decoration: none;">an object </ins>hierarchy that can be modified using the tools. <ins style="font-weight: bold; text-decoration: none;"> Based </ins>on GObject. Each document has an object tree and an XML tree. Changes in the XML tree are automatically propagated to the object tree via observers, but <ins style="font-weight: bold; text-decoration: none;">''</ins>not<ins style="font-weight: bold; text-decoration: none;">'' </ins>the other way <ins style="font-weight: bold; text-decoration: none;">around—a </ins>function called <tt>updateRepr()</tt> <ins style="font-weight: bold; text-decoration: none;">must </ins>be explicitly called.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [[Extension subsystem]] <del style="font-weight: bold; text-decoration: none;">- allows Inkscape to use </del>third-party extensions without modifying Inkscape's code. Currently extensions <del style="font-weight: bold; text-decoration: none;">can </del>provide additional <del style="font-weight: bold; text-decoration: none;">input and output </del>formats, effects, path effects and printing backends.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* [[Tools subsystem]]<ins style="font-weight: bold; text-decoration: none;">. Processes </ins>input events on the canvas and <ins style="font-weight: bold; text-decoration: none;">translates </ins>them into document changes. <ins style="font-weight: bold; text-decoration: none;">Tools are called ''event contexts'' internally. </ins>This subsystem is based on GObject, dispersed in the <tt>src/</tt> directory <ins style="font-weight: bold; text-decoration: none;">(</ins>and several <ins style="font-weight: bold; text-decoration: none;">subdirectories)</ins>. Files <ins style="font-weight: bold; text-decoration: none;">with </ins>event handling code end with <tt>-context.cpp</tt>.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [[Preferences subsystem]] <del style="font-weight: bold; text-decoration: none;">- this small, but relatively self-contained piece of code provides </del>a shared storage for all of Inkscape's user settings. <del style="font-weight: bold; text-decoration: none;">It keeps </del>the parsed XML tree of the preferences file<del style="font-weight: bold; text-decoration: none;">, </del>but it's not directly accessible <del style="font-weight: bold; text-decoration: none;">- the </del>intent is to separate <del style="font-weight: bold; text-decoration: none;">the preferences </del>implementation (which <del style="font-weight: bold; text-decoration: none;">in future </del>might not be based on an XML file) from the API used to access them. <del style="font-weight: bold; text-decoration: none;">It is contained </del>in <tt>preferences.cpp</tt></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* [[Extension subsystem]]<ins style="font-weight: bold; text-decoration: none;">. Allows </ins>third-party extensions without modifying Inkscape's code. Currently<ins style="font-weight: bold; text-decoration: none;">, </ins>extensions <ins style="font-weight: bold; text-decoration: none;">may </ins>provide additional <ins style="font-weight: bold; text-decoration: none;">I/O </ins>formats, effects, path effects<ins style="font-weight: bold; text-decoration: none;">, </ins>and printing backends.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [[User Interface Modules]] <del style="font-weight: bold; text-decoration: none;">- contains specific Inkscape dialogs</del>, widgets, tools and more.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* [[Preferences subsystem]]<ins style="font-weight: bold; text-decoration: none;">. Provides </ins>a shared storage for all of Inkscape's user settings. <ins style="font-weight: bold; text-decoration: none;"> Small but relatively self-contained. Keeps </ins>the parsed XML tree of the preferences file <ins style="font-weight: bold; text-decoration: none;">(</ins>but it's not directly accessible<ins style="font-weight: bold; text-decoration: none;">). The </ins>intent is to separate <ins style="font-weight: bold; text-decoration: none;">preference ''</ins>implementation<ins style="font-weight: bold; text-decoration: none;">'' </ins>(which might not be based on an XML file <ins style="font-weight: bold; text-decoration: none;">in the future</ins>) from the <ins style="font-weight: bold; text-decoration: none;">''</ins>API<ins style="font-weight: bold; text-decoration: none;">'' </ins>used to access them. <ins style="font-weight: bold; text-decoration: none;">Contained </ins>in <tt>preferences.cpp</tt></div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* [[User Interface Modules]]<ins style="font-weight: bold; text-decoration: none;">. Dialogs</ins>, widgets, tools<ins style="font-weight: bold; text-decoration: none;">, </ins>and more.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==How Inkscape starts==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==How Inkscape starts==</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l19">Line 19:</td>
<td colspan="2" class="diff-lineno">Line 20:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Historical note==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Historical note==</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Inkscape is derived from an earlier vector drawing program called Sodipodi. Sodipodi was written entirely in plain C using GObject<del style="font-weight: bold; text-decoration: none;">, </del>the C object system used by GTK+. Writing and maintaining GObject code is cumbersome, because C lacks any syntax support for this system. There are still many places that use old GObject-based code<del style="font-weight: bold; text-decoration: none;">, </del>notably the tools and the SPObject tree. <del style="font-weight: bold; text-decoration: none;">The </del>long-term goal is to convert GObject<del style="font-weight: bold; text-decoration: none;">-based </del>code to regular C++ objects, <del style="font-weight: bold; text-decoration: none;">but in the meanwhile </del>some knowledge of GObject is needed to develop Inkscape.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Inkscape is derived from an earlier vector drawing program called Sodipodi. </div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Sodipodi was written entirely in plain C using GObject<ins style="font-weight: bold; text-decoration: none;">. GObject is </ins>the C object system used by GTK+. </div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Writing and maintaining GObject code is cumbersome, because C lacks any syntax support for this system. There are still many places that use old GObject-based code <ins style="font-weight: bold; text-decoration: none;">(</ins>notably the tools and the SPObject tree<ins style="font-weight: bold; text-decoration: none;">)</ins>. <ins style="font-weight: bold; text-decoration: none;">An important </ins>long-term goal is to convert <ins style="font-weight: bold; text-decoration: none;">all </ins>GObject code to regular C++ objects<ins style="font-weight: bold; text-decoration: none;">. For the present, however</ins>, <ins style="font-weight: bold; text-decoration: none;"> </ins>some knowledge of GObject is needed to develop Inkscape.</div></td></tr>
</table>
Zearin
https://wiki.inkscape.org/wiki/index.php?title=Architectural_overview&diff=61723&oldid=prev
AurelioAHeckert: Main subsystems - User Interface Modules
2010-05-01T22:57:16Z
<p>Main subsystems - User Interface Modules</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 22:57, 1 May 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l9">Line 9:</td>
<td colspan="2" class="diff-lineno">Line 9:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Extension subsystem]] - allows Inkscape to use third-party extensions without modifying Inkscape's code. Currently extensions can provide additional input and output formats, effects, path effects and printing backends.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Extension subsystem]] - allows Inkscape to use third-party extensions without modifying Inkscape's code. Currently extensions can provide additional input and output formats, effects, path effects and printing backends.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Preferences subsystem]] - this small, but relatively self-contained piece of code provides a shared storage for all of Inkscape's user settings. It keeps the parsed XML tree of the preferences file, but it's not directly accessible - the intent is to separate the preferences implementation (which in future might not be based on an XML file) from the API used to access them. It is contained in <tt>preferences.cpp</tt></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Preferences subsystem]] - this small, but relatively self-contained piece of code provides a shared storage for all of Inkscape's user settings. It keeps the parsed XML tree of the preferences file, but it's not directly accessible - the intent is to separate the preferences implementation (which in future might not be based on an XML file) from the API used to access them. It is contained in <tt>preferences.cpp</tt></div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [[User Interface Modules]] - contains specific Inkscape dialogs, widgets, tools and more.</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==How Inkscape starts==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==How Inkscape starts==</div></td></tr>
</table>
AurelioAHeckert