GSOC2007 Live path effects in Inkscape

From Inkscape Wiki
Jump to navigation Jump to search

This page is outdated. It is kept for historical reasons, e.g. to document specific decisions in Inkscape development.

Below you find the accepted live-effects application for GSoC 2007 submitted by Johan Engelen.

Abstract

At the moment, effects on paths are possible through the use of external extensions. These extensions are not 'live' in the sense that they are not interactive: if a modification to the effect is required, one has to recreate the situation before the effect was applied and run the extension again. Live path effects will make many of these extensions interactive and live on-canvas. For example the path along path effect will hugely benefit.

Within this project, the underlying infrastructure will be created as well as a common framework and a couple of effects, including a basic UI to apply these new live effects.

Detailed Description

Name:

  Johan Engelen

Project title:

  Live path effects

Benefits to Inkscape:

At the moment, effects on paths are possible through the use of extensions. These extensions are not 'live' in the sense that they are not interactive: if a modification to the effect is required, one has to recreate the situation before the effect was applied and run the extension again. Live path effects will make many of these extensions interactive and live on-canvas. The enormous advantages should be clear.

Deliverables:

Inkscape code that correctly handles Live effects, including a framework + couple of new effects. Also a very basic UI to apply effects.

Project details:

Bulia Byak has already written alot of details; they can be found here: http://wiki.inkscape.org/wiki/index.php/LivePathEffects

I'd like to make a framework which facilitates creation of new effects. It should be possible to create effects without much knowledge of Inkscape's internals. For example the implementation of a new path transformation effect will only receive a path and other parameters as input and will only have to output a new path + UI widgets to alter the parameters.

Project schedule:

  phase 1. research

Determine effect requirements => Handwrite an inkscape file which has to be 'understood' correctly by Inkscape. Determine how live effects should fit in Inkscape code => Create framework design (classes, etc).

  phase 2. framework

Implement the framework and correct handling of effects. Also create a test live-effect to test the framework.

  phase 3. implement effects

This if where the fun starts: framework is done and new effects can be made without hacking or much knowledge of Inkscape's internals. Hopefully the Inkscape community already starts trying to implement their own effects so there is more feedback on the framework and improvements can be made.

Before the official start of the project, the research phase is finished long ago (since I am already familiar with the Inkscape community, I'll skip the introduction phase). My real project therefore starts with phase 2 on May 28 (or maybe even before). At the mid-term eval deadline (July 9), my project should be at the end of phase 2. Maybe the Inkscape community can already start to implement their own live effects. August 20, project done: working live effects + basic UI.

Bio:

I am 23 years old and live in The Netherlands. I just started as an electrical engineering PhD student at the University of Twente (Netherlands) after obtaining my MSc degree last year. I've been programming already for so long I forgot when I started; I've programmed in C++, Pascal, assembly, PHP, Java and others. I'm self taught in most of these languages; two very very brief courses taught me the basics of C++ and Java.

Inkscape is my first (and only) open-source experience, before that programming experience has been a private hobby (once together with a friend). A friend showed Inkscape to me as his drawing application and I was sold immediately. Coding for Inkscape started after two weeks with adding the "Save-a-copy" functionality, then I implemented a couple of new extension parameter types. After helping with the bug fixing for 0.45, I made the on-canvas gradient editting (unfortunately too late for 0.45) and most recently a new grid framework to greatly facilitate implementation of new grid types.

Other applications:

I have not applied for any other GSoC project. I have no motivation to apply to other projects other than Inkscape's.