On Fri, 2015-01-02 at 23:12 +0100, Diederik van Lierop wrote:
On Sat, Nov 29, 2014 at 9:06 PM, Liam White <inkscapebrony@...400...> wrote: > These are the things I've been digging into in the past few years: > - What does SP stand for (took me a while to find that out) > - What's the purpose of each of these classes: SPDocument, SPView, SPNamedView, SPCanvas > - How does Inkscape handle multiple open documents and multiple views > - Actions, Verbs, shortcuts, ... > - How does inkscape go from parsing the XML file to storing the objects, > - How are these objects displayed, modified, and saved again to XML > - How are changes from the XML (editor) propagating to the objects, and vice versa > - Where does the GUI hook into this? > - What about filters, LPEs, .... > - Rendering on screen, vs. rendering for printing, vs. rendering for exporting > - Extensions, python/javascript API, DBus, command line interface > > I don't think we need very detailed information on all this stuff (although that would help too), but at least it should be authoritative, with useful pointers and references. Figuring out the details is not a problem. > > Diederik
To add to the discussion we had a month ago about the documentation of Inkscape's architecture, I've thought of some additional topics that would be very useful for both new and not-so-new devs:
Tav's wrap-up of the units discussion
Tav's recent blog post on planet.inkscape.org, although some of this
is already documented in /docs I guess. I especially like this part: "what the heck is an ‘arenaitem’?"
- Some pointers to the use of affine transformations and homogeneous
coordinates (not just in Inkscape, but for SVG in general). Just linking to the relevant Wikipedia pages is already a big step, e.g. http://en.wikipedia.org/wiki/Affine_transformation.
I would really like better documentation of the SP tree. It is not clear what many of the various SPObject methods are suppose to do despite hints from their names. For example, what exactly are these functions suppose to do?
SPObject::build() SPObject::invoke_build() SPObject::set() SPObject::update() SPObject::modified()
This becomes more relevant in the derived classes. For example, why is Inkscape::DrawingShape::setStyle() called in
SPShape::update() SPShape::modified() SPShape::show()
Some operations result in calls to all three functions, thus style is being set three times when it need be called once.
It is interesting to put in random print statements and see just how often some functions are called on what should be simple operations. Type a single character in the text tool and Layout::_clearInputObjects() is called seven times!
Tav