Work packages toward the koffice 2.0 release
---------------------------------------------------

Here are some main things we have to work on to get ready for koffice 2.0
Feel free to add or modify todos as they appear when working on karbon.
Before working on some of the following, just add your name beside the todo you want to work on so there
is no duplicate work.

Canvas:
-------
- we should add/replace the canvas at the document docker (bird eye view)

KoPathShape:
------------

- make sure it supports all we had with the old karbon path
- some things that are currently lacking (taken from inkscape):
  - joining selected end nodes by merging them
  - nearest point on curve
- fix combine path command

Layers:
-------
- drag and drop of items raising/lowering them (see dockers)

Shapes/Tools:
---------------
- check if the KoTextShape provided by KWord is flexible enough for our use cases (i.e. text along a path)
  KoText intends to have a shape that does most of what karbon needs.  Text along a path is an exception,
  but that feature will be provided by Qt4.3 (in QPainterPath) [TZ]
- add support for adding shapes like sinus, spiral, etc. (see odf spec for custom shape/enhanced geometry)
- implement changing a single path point's type from line to curve and vice versa
- implement something like kword/part/frames/KWCopyShape.h
- implement a SpiralShape
- implement a Inkscape like calligraphy tool (http://www.inkscape.org/doc/calligraphy/tutorial-calligraphy.htm)
- implement "drawing" the gradient on shapes which have no gradient yet
- find a way to save/load the roundness of the star shape (e.g. flower)
- implement pattern resizing

ODF support:
------------
- use http://netmoc.cpe.ucf.edu/Projects/OpenDocument/TestSuite.html for testing (when they have some more drawing tests)
- save miterlimit using svg:stroke-miterlimit (that is not part of the odf spec as of now)

Dockers:
--------
- implement reordering of shapes and layers in the layer docker (d'n'd)

Plugins:
--------
- port the old plugins to work with flake shapes
- port the round corners plugin
- port the zoom tool plugin ??? there is an koffice wide zoom tool underway
- gradient tool:
    - implement a way to remove the gradient fill (and/or set a solid fill)
    - implement setting a gradient as stroke
- implement a tracing plugin for tracing images (potrace...)

Filters:
--------
- port the filters to create a document with flake shapes
- fix the eps and ps filters (maybe using ps2pdf and then use a pdf import filter)
- text support for wmf and svg import filter
- import filter for old karbon file format

Cleanup:
--------
- remove dead code as we replace it with new code
- get rid of qt3support classes whereever we can with our limited resources

General:
--------
- consider the old todos and wishes when implementing/porting the above parts
- replace VColor with KoColor


From the usability review of Thomas Zander
------------------------------------------

* Toolbars
  - Toolbars should be persistent					----
  - toolbox to the left by default					----

* Toolbox
  - add kbd shortcuts to the tools					----
  - make 'ESC' select the 'Select tool'					----


All time favourites :)
-----------------------

BIG TOPICS:
5) introduce renderstack. And dont forget to rewrite shadoweffect to use it.

GUI:
-	other koffice apps have widgts that may of interest to us, for instance in kpresenter. We should
	try to reuse them.
-	make a UI for the node manipulation tool.
-	rework the stroke/fill docker with preview on the document and apply button.
-	Find a better way to select a color than the color manager. Maybe a popup ?

REAL BUGS:
-	fix i18n singular/plural
-	make curve1To, curve2To work
-	vpolylinetool creates beziers where it could create lines

TODO:
-	make pattern coords absolute and not relative to the shape
-	VImage
-	VPattern like VImage with embedded binaries instead of paths
-	bring text support back, ideally using fontconfig and freetype, and no xft.
-	improve printing (specifically printing of gradient and pattern fill), 
	should go along with porting to qt4/the new rendering framework
-	select first/last segment's knot if one of each other's knot is selected
-	allow for multiple strokes and fills in VPath which get rendered in the order they occur.
-	use inside/intersection tests in vpath::combine() for changing winding.
-	change flatness test in intersection code to a estimation used in gems code. otherwise
	if the 2 input curves are the same our code runs forever.
-	make layers tree robust, efficient and scalable.

WISHLIST:
-	krita export filter (with layers)
-	add a nice grid-like shape like in Illu and webdraw
-	pdf import filter (based on poppler)

OPTIMIZATION:
-	make fill/stroke shared so copying for undo/redo is more efficient. Also potentially
	apply this to file format (like OOo does).
-	check places we use sqrt() if these are really necessary (lenny)

MAKE IT NICE:
-	pass all dialogs a parent
-	why represent opacity as float, not as short?
-	introduce our own "Color drag" class, since we have in addition to rgb also opacity,
	and maybe also gradient info could be dragged later.

NEW IDEAS:
- make VDocument a KoDocument?

