
In SVG transformations like moving, scaling, rotating and shearing objects are modelled as coordinate system transformations. This page talks a lot about coordinate systems and it some parts might be hard to follow, if you're not somewhat familiar with coordinate system transforms. Note that Inkscape uses two types of classes here: SVG document layer uses GTK style classes, which don't make use of C++ object oriented programming functionality, but are usable in plain C. For example, feOffset node is handled by NR::FilterOffset class, which resides in src/display/nr-filter-offset.* Again, there are own classes for most different node names. SVG renderer produces bitmap images from the SVG graphics.

Main tasks for SVG document layer are reading essential parameters from XML tree, parsing parameter values read from XML tree, writing out internal state to XML node and initializing SVG renderer classes. For example, nodes named feOffset are handled by SPFeOffset class, which resides in src/sp-feoffset.* Mostly, nodes are handled by different classes depending on the name of the node. This layer gives meaning to XML node names, node attributes, node content etc. SVG document layer builds upon the XML layer. Inkscape XML representation layer could be used for any type of XML document, not just SVG. At this level these nodes and whatever content they have, don't have any special meaning.


It contains XML nodes, which have attributes, content, children etc. XML representation level is merely an representation of XML tree of the document. The tiers are XML representation, SVG document and SVG renderer.
