Hey Krzysztof,
I hope we do get you back again. 1, 6, & 7 are most appealing to me personally.
With 1, I do think that looking into the way Adobe products handle selections to add appropriate related features (because to me it sounds like a compatible backend for the functionality) would be beneficial. Basically, just look into what their Selection menu offers. I understand the goal is UI independent, but if it doesn't broaden the scope too much, some UI work on it would really be great.
I think 6 could be most beneficial to the refactoring and getting old code out of the tree. Plus maybe with work on the boolean operations in 2geom, we could finally get some important operations that are currently lacking.
As for 7, as much as I want to see improved rendering performance and for us to do things in a better way, the statement of "further work on the cairo branch" is unappealing. I would really rather see the cairo branch merged back prior to GSoC, and when GSoC starts, starting a new branch. Plus, tracking how much memory "bloat" takes place with caching would be good as well, as we went from satan to saintly with my testing on the Cairo branch and I don't want to see us get too evil again.
Either way, very good list of ideas!
Cheers, Josh
2011/3/27 Krzysztof Kosiński <tweenk.pl@...400...>
Hello I'm not 100% sure yet whether I'll be able to participate in GSoC 2011, but here are my ideas. They can be used by other potential participants.
- Selections
A lot of functions in Inkscape operate on the current selection. This includes things like moving objects to another layer, creating a bitmap copy, etc. This leads to a lot of unnecessary code duplication when some other function needs to reuse selection-specific logic in a way that is not tied to the UI. It also precludes any useful implementation of scripting (e.g. one that does not need to modify the user's selection every time a script is run). In order to rectify this, we should create an object that represents an arbitrary collection of SVG elements. It would work like the selection we have now, but would not be tied to any UI elements - it would just represent an ordered set of elements that can be passed to functions.
- Fix flowtext
Use svg:switch to fix flowtext. Make svg:switch transparent to the SP tree - e.g. a switch should not have its own SP element, the active part of the switch should be transparently included into the SP tree. This can be accomplished by allowing every object to have more than one representation.
- 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.
- 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.
- GTK3 compatibility
This would involve removal of deprecated code, so that Inkscape compiles with both GTK2 and GTK3.
- 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.
- Rendering speed improvements
Further work on the Cairo branch in several small sub-projects: 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. 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. 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.
Regards, Krzysztof
Enable your software for Intel(R) Active Management Technology to meet the growing manageability and security demands of your customers. Businesses are taking advantage of Intel(R) vPro (TM) technology - will your software be a part of the solution? Download the Intel(R) Manageability Checker today! http://p.sf.net/sfu/intel-dev2devmar _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel