On 27-03-11 15:59, Krzysztof KosiĆski wrote:
...
- Selections
... 2. Fix flowtext ...
Makes perfect sense.
- Make XML private
Discussed before. Was the object of a previous year project, but the main effect of that was mass renaming and moving of code into classes rather than any meaningful improvement in encapsulation. The main thing we need is an ability to create SP nodes. Right now we create XML nodes and rely on SP tree callbacks to construct the SP node for us.
Would be very, very useful. Especially if we could abstract from SVG enough to make it easier to allow for a different data format in the future (I'm thinking of SVG 2 for example). I imagine this could also help with flowtext-like situations.
- Typed XML tree
The XML tree stores strings, which is rather wasteful and leads to a lot of boilerplate in SP object implementations. We have enough knowledge about the document at the XML level to know the type of each attribute and CSS property based on its name. Storing parsed values would save space, particularly for embedded images, at the cost of slightly more expensive saving. GVariant could be used.
I'm not 100% sure it's still the case, but paths also used to store path data in strings (which may have served a purpose once, but is less important now that we can deal with things like arcs in more places), and there might be similar issues around the codebase. So I think this item could be broader, which also give more flexibility to anyone attempting it.
It is important to be careful while doing this btw, as it can negatively impact Inkscape's ability to round-trip SVG, which is important for many people.
Also, keep in mind that the XML editor also shows serialized values (it's not just when saving a file that you need the serialization). Although I guess it could be cool to let the XML editor deal with typed values...
- GTK3 compatibility
This would involve removal of deprecated code, so that Inkscape compiles with both GTK2 and GTK3.
Sounds like a good idea. Perhaps also a good candidate to put up here: http://wiki.inkscape.org/wiki/index.php/Google_Summer_Of_Code
- 2geom improvements
Move and rewrite code 2geom to the point where it can take over the job of livarot, libavoid, etc. Document the new code and make sure it fits nicely with existing code. The scope of the project could be limited to implementing Boolean operations on paths.
Always a good idea :)
- Rendering speed improvements
Further work on the Cairo branch in several small sub-projects:
I object to the word "branch", as I really, really, really hope it won't be a branch by then. And if it still is, then I think that integrating it with trunk should be more important than pretty much anything else. (Yes, I know I'm stubborn, I also know about the problems with Cairo, but I also know it hurts us to have such an important change out of trunk for such a long time, and I can't help but feel that it should be possible to work around the Cairo issues in some way, even if that means we have to temporarily link statically to an unreleased version of Cairo or something.)
a) Instead of re-rendering the same pixels every time a new tile of a filter is rendered, cache them until the rendering is done. The implementation could involve allocating screen-size bitmaps for each layer of a filtered object and filling them with data in small increments.
I don't completely understand your description, but in general improving caching would be fine. What I don't understand is what you mean by "filling them with data in small increments".
b) Render editing controls to a separate image that is composited on top of the drawing, so that what a path outline is highlighted, there is no need to re-render the object under it.
Ouch, never realized that we do that, that's awful. Should definitely be fixed.
c) Render each layer of the drawing to a separate image; alternatively, render 3 images: everything below current layer, current layer and everything above. This would allow the user to give us some hints.
I could think of a few other ways to reduce the amount of images to store, but in general I think the idea is sound and would be quite useful.