SoC proposal: ImageMagick effects in Inkscape
Hi,
I have written up a proposal to Inkscape for this year's Summer of Code. I'd be much obliged if you guys could give it a look and let me know how it is.
Thanks, -Nicholas Bishop
== Project Proposal == The goal of this project is to add multiple raster effects to Inkscape through the ImageMagick library.
== Details == Integration with ImageMagick will be achieved using Magick++, the C++ binding for ImageMagick. Magick++ comes with excellent documentation, which should greatly ease the integration process.
ImageMagick has quite a large set of effects, probably at least 50 or so. Time permitting, all of these can be added to Inkscape (though naturally I'll skip some of the unnecessary ones like flip and rotate.)
The initial GUI for the raster effects can be quite simple; most effects take only a few inputs, if they take any at all. In order to avoid dumping 50 new menu items into the Effects menu, I propose creating a single 'Raster Effects' menu item, which will bring up a dialog containing a list of all the effects, and space enough to show controls for any parameters the currently-selected effect might have. A handy feature to implement, time permitting, would be a small preview window showing how the effect will look when applied to the selection.
My proposed schedule for this project is based on the timeline suggested in the Inkscape wiki, with some modifications:
0) I've already successfully built and installed the latest revision of Inkscape from SVN. 1) Make the modifications to the Inkscape build system needed to use the Magick++ library. I have some prior experience with autoconf scripts. 2) Start building the basic code that will be used for all the effects; get one effect in ImageMagick to a usable state (I'll start with something like the negate effect since it's easy to see when it's working correctly.) Also begin code documentation. 3) Implement more ImageMagick effects. 4) Finish the code documentation and implement a test suite. Note: I'm not familiar with how Inkscape's existing testing code works, so I will need guidance from my mentor in this area. 5) If I complete the above plan before time runs out, I'm confident that there are more tasks related to the earlier work that I can fill in the remaining time with. For example, it might be useful to implement a stack of raster effects, so instead of simply applying effects to a selection, multiple effects can be attached to it, and arbitrarily reordered and altered at a later time. Doubtless other useful side features will be suggested as the project progresses.
== Bio == I'm a computer science student at the University of Maryland, College Park. I don't have any summer classes or jobs, so I'll be free to devote as much time to this project as necessary for me to complete it successfully.
I've been excited about the possibilities offered by open source graphics applications since I switched to using GNU/Linux several years ago. I've regularly used GIMP, Inkscape, and Blender for some time now, and in that time I've been amazed to see how far each has come.
Three years ago, in an effort to duplicate some of the new tools becoming popular in commercial 3D modelers, I started a graphics project called SharpConstruct (sharp3d.sourceforge.net), an open-source 3D sculpting tool. While working on SharpConstruct I gained experience with C++, the automake system, and gtkmm. This was my big introduction to the world of free software development, and while it was a relatively small project with only one other developer, it was an invaluable experience for me in terms of learning about programming and interacting with the many interesting users of open source graphics software.
Last year I successfully completed a Google Summer of Code project with Blender that involved adding three new modeling tools (written in C) to the program. (See Sculpt Modeling, Retopo, and Multires in the 2.43 release notes: http://www.blender.org/development/release-logs/blender-243). Last year's Summer of Code was quite an experience for me; although I was able to complete all the tools I had outlined about in my proposal and more, it was not until some time after the final SoC deadline that my final (and rather large) patch was reviewed and merged into Blender's main CVS branch. In order to complete the merge I was given commit rights, and I continued to further develop and extend the tools. It was not until February of this year that Blender 2.43 was released, which was the first official release to contain the tools I wrote during the Summer of Code. The community response to the tools was overwhelmingly positive, and since then I have continued to maintain and extend the tools.
For this year's Summer of Code I am applying to three organizations: BZFlag, GNOME, and Inkscape. I'm looking forward to another great experience of writing code, and as with my project last year, I hope to continue working with Inkscape after the conclusion of the Summer of Code.
On 3/23/07, Nicholas Bishop wrote:
I have written up a proposal to Inkscape for this year's Summer of Code. I'd be much obliged if you guys could give it a look and let me know how it is.
Nicholas,
Given your skills and experience It would be great having you on board.
I have two questions.
1. We've seen the approach with different menus in GIMP already. GIMP developers have moved away from those "Filters, Script-Fu, Python-Fu, Etc-Fu" in the current development branch and it looks like people do like it. To your mind, would an internal effects browser be a solution that would allow us not creating more menus than users probably expect?
2. What do you think about using GEGL instead of ImageMagick? AFAIR, GEGL is moving to stable API now, so it wouldn't really be dangerous to experiment with it.
Alexandre
On Fri, 23 Mar 2007 16:19:57 -0400, "Nicholas Bishop" <nicholasbishop@...400...> wrote:
The goal of this project is to add multiple raster effects to Inkscape through the ImageMagick library.
ImageMagick has quite a large set of effects, probably at least 50 or so. Time permitting, all of these can be added to Inkscape (though naturally I'll skip some of the unnecessary ones like flip and rotate.)
I'm concerned that this project would be redudant with respect the implementation of SVG filter effects -- most of the effects offered by ImageMagick could be expressed in terms of SVG filters, and if done using SVG filters would then have the advantage of being live rather than "baked in".
Would you consider a proposal to implement the remaining SVG filter effects in Inkscape? We currently implement only feGaussianBlur, so that work is badly needed.
You may find this link helpful for reference: http://www.w3.org/TR/SVG11/filters.html
-mental
participants (3)
-
Alexandre Prokoudine
-
MenTaLguY
-
Nicholas Bishop