On Wed, 2 Feb 2005, Ashwin Bharambe wrote:
Hi Bryce,
Another area we will need a lot of help in fairly soon is with upgrading the UI to gtkmm. This will involve a lot of meat-and-potatos C++ class creation and conversion of C code into OOP style. Presently this work is going on in a separate cvs module but it's scheduled for integration within about a week. If you're interested in working on this, let me know and I can give more details. It should be pretty straightforward work, and will be seeing progress rapidly, so it could be fun. :-)
I would be interested in more details for this. Basically, once in a while, it feels good to do "simple" things and get something useful done. :) Let me know if and how I could help out here.
Great! This work will begin in earnest after we release 0.41, but you can get involved now easily by downloading and tinkering with the inkscape_gtkmm codebase, and/or learning Gtkmm via the www.gtkmm.org site.
If you're anxious to work on something with inkscape_gtkmm, and willing to take on a more challenging effort, I posted a few tasks to this list a couple weeks ago, you could look through. For example:
http://sourceforge.net/mailarchive/forum.php?thread_id=6260552&forum_id=... http://sourceforge.net/mailarchive/forum.php?thread_id=6260551&forum_id=...
Those include directions for checking out the code, too.
Also, look in the PLAN document within the codebase for some tasks and projects (esp. at the end of the file).
- Cairo Gtk Canvas - A long term project we have talked about is to replace our internal renderer with Cairo, but there's a ton of R&D experimentation needed to get there. If you like working from a blank sheet of paper and just coming up with a lot of good ideas that others can build off of later, this would be a good opportunity.
How would one start here? I briefly tried figuring out how exactly livarot is used within inkscape at this moment - is there a well-specified layer here? If you could get me started on a brief outline of what the goals are, I am willing to spend considerable amount of time performing experimentation with cairo.
This would be great. I think you have already made some progress at this but I can give some additional random info:
* Cairo is itself composed of several libraries that each provide different wrappers atop the core. For instance, the SVG bindings are in a library that sits atop the more underlying cairo bits.
* We need to understand exactly which cairo pieces are required, how they're packaged, and how we can distribute them to users. For example, what pieces would we need to distribute to Windows users?
* There is a GtkCairo lib, that you looked at the other day, but actually we need a full Canvas. What exactly does this mean? How would we go about packaging such a thing?
* I believe I saw that there is a Qt Canvas for Cairo. Is there any possibility of sharing code between this and a Gtk Canvas?
* What portions of the existing Inkscape codebase would get subsumed into a GtkCairoCanvas object? What would be most appropriate to keep out at a different level?
In general, the idea behind creating a gtk cairo canvas would be to enable things like these:
* A game developer could use it to render and manipulate the graphical components in their game.
* A project aimed at creating a shared whiteboard project could tie a canvas to the Jabber message protocol stream to enable interactive drawing functionality.
* A company wishing to provide their customers with an application showing attractive, dynamic graphs and diagrams could use it for drawing this information as it is broadcast to the client app.
* An application for viewing/managing rack mounted computer hardware could use it for displaying a top-down view of the data center, which could be interactively clicked on to view front-views of the racks, and with further clicking to see individual hosts in the racks, usage/performance graphs, machine statistics, and wiring diagrams.
Of course, in addition, the canvas would provide rich functionality for Inkscape to use it for editing SVG documents. ;-)
Bryce