summaryrefslogtreecommitdiffstats
path: root/krita/IMAGE_LIBRARIES
diff options
context:
space:
mode:
Diffstat (limited to 'krita/IMAGE_LIBRARIES')
-rw-r--r--krita/IMAGE_LIBRARIES259
1 files changed, 259 insertions, 0 deletions
diff --git a/krita/IMAGE_LIBRARIES b/krita/IMAGE_LIBRARIES
new file mode 100644
index 00000000..8b4763d2
--- /dev/null
+++ b/krita/IMAGE_LIBRARIES
@@ -0,0 +1,259 @@
+WARNING: OBSOLETE (Krita's internal code has become much better by now)
+
+From time to time, people come up with the suggestion to use an
+existing imaging library with Krita, to replace our own core. This
+file contains a list of all libraries known to me, and a short
+evaluation.
+
+Perhaps, one day, we will decide to either use an existing library, or
+remodel our core after one of those. Of the libraries present, except
+for our own Krita, Vigra look like it's the best bet from a technical
+point of view, with Vips a good runner-up.
+
+
+* Krita (http://koffice.kde.org/krita)
+
+Krita contains its own 2D image library, consisting of the tile
+manager, the layer classes and KisPainter. We really should separate
+this 2d lib from the interface code, and put it in a real lib with
+a well-defined interface.
+
+Advantages:
+
+ - Already works
+ - Optimized for interactive work
+ - Allows different colour models
+ - Uses GraphicsMagick or ImageMagick for loading and saving.
+
+Disadvantages:
+
+ - Does not work well with different channel depths
+ - Not integrated with CMS
+ - TileManager complicated and slow for pixel reading and
+ writing.
+
+* Gimp (http://www.gimp.org)
+
+The Gimp contains a complex core that allows interactive painting of
+images with a channel depth of 8 bits.
+
+Advantages:
+
+ - Well tested, very complete
+ - Optimized for interactive usage
+
+Disadvantages:
+
+ - Written in C.
+ - Not readily available as a library.
+ - Depends on glib and gtk
+ - 8-bit only
+ - No colour models
+ - Has problems handling really large images
+
+* Vigra (http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/)
+
+Vigra is a C++ imaging library written by Ullrich Koetthe to
+demonstrate his Phd thesis on flexible image algorithms.
+
+Advantages:
+
+ - Supports very large images
+ - Supports colour models
+ - Supports different bit depths through templating
+ - C++
+ - Relatively small
+ - Relatively well-documented
+
+Disadvantages:
+
+ - License incompatible with GPL?
+ - Not optimized for interactive use
+ - Unsure about future development since this was a research
+ project.
+
+* Vips (http://www.vips.ecs.soton.ac.uk/)
+
+Vips is a C library with a C++ layer. It has been designed for
+handling very large images, mainly in the context of research into
+paintings in museums like the National Gallery. It comes with a gtk2
+gui.
+
+Advantages:
+
+ - Handles very large images
+ - Handles colour models
+ - Handles different bit depths
+ - C++ interface
+
+Disadvantages:
+
+ - Not optimized for paintbox type apps (even though it is
+ possible).
+ - Very large.
+
+* VXL (http://vxl.sourceforge.net/)
+
+VXL is a collection of small libraries that are used for compution
+vision and imaging purposes in an academic setting.
+
+Advantages:
+
+ - Handles very large images
+ - C++
+
+Disadvantages:
+
+ - Not recently updated
+ - Comes with its own core libraries that replace standard C++
+ - Optimized for simple rgb images.
+ - No license at all
+ - Badly documented
+
+* CImg (http://cimg.sourceforge.net/)
+
+CImg is a very cool, very small library that offers some extremely
+innovative image effects, like inpainting of damaged or noise images.
+
+Advantages:
+
+ - Small
+ - GPL
+ - Cool stuff
+
+Disadvantages:
+
+ - Everything, including GUI stuff, in one header file.
+ - badly documented.
+
+
+* Gegl (http://www.gegl.org/)
+
+Gegl was intended to become the Gimp 2.0 core, but development had
+stalled so much that the move to Gegl didn't happen before Gimp 2.0.
+However, the Thawte millionaire whose name has escaped me, has
+promised to support gegl development financially, freeing the
+developer to work full-time on it. It is, more or less, an attempt to
+write a templated library in C++ with the help of a custom language to
+describe image operations.
+
+Advantages:
+
+ - It's got money behind it
+ - Small
+ - Optimized for interactive use
+
+Disadvantages:
+
+ - Not finished yet
+ - C
+ - Complex hack around the fact that C is a low-level language
+
+* libart_lgpl (http://www.levien.com/libart/)
+
+Libart isn't really an image library, but rather a canvas that can be
+used to paint images on. It is optimized for vector graphics, and is
+used by Karbon to render shapes before display.
+
+Advantages:
+
+ - Raph Levien is really good at this stuff, so libart is
+ quality
+
+Disadvantages:
+
+ - C
+ - It isn't an image library, really
+
+
+* java2D (http://java.sun.com/j2se/1.4.2/docs/guide/2d/index.html)
+
+
+Java2D is more or less complete library to write a paint app around.
+It offers image types, colour spaces, kernel convolutions and text.
+It's in Java, of course, and the free re-implementation is not done
+yet, and besides, is based around Cairo.
+
+Advantages:
+
+ - Neat OO design
+ - Complete
+
+Disadvantages:
+
+ - Java
+ - Not free
+ - Has some legacy cruft.
+
+* ImageMagick/GraphicsMagick (http://imagemagick.org/, http://www.graphicsmagick.org/)
+
+GraphicsMagick is ImageMagick with a different license, and a
+focus on API stability. GM and IM now also differ slightly in terms of
+features offered. Krita used to be based around IM (which can still be
+seen in many places in the code). The IM core was dropped in favour of
+the present core because it turned out that IM was not re-entrant,
+making it hard to use in an interactive application.
+
+Advantages:
+
+ - Mature
+ - C++ interface
+ - Full-featured
+ - RGB and CMYK (but not more)
+ - License compatible with Krita
+ - Under active development
+
+Disadvantages:
+
+ - Bit-depth a compile-time option
+ - Not re-entrant: not optimized for interactive use.
+
+* Paintlib2 (http://www.paintlib.de/paintlib/)
+
+A portable (windows/Linux) library for image loading, manipulation and
+saving. The same kind of thing as IM/GM, but not quite as mature.
+
+Advantages:
+
+Disadvantages:
+
+ - No support for larger bit depths per channel
+ - Windows (bmp) centric
+ - Development seems to have stopped in 2000
+
+
+* Antigrain (http://www.antigrain.com/)
+
+Antigrain is a graphics lib that specializes in high-quality anti-aliasing. It can be
+useful to mine for algorithms, but is mainly a library to render vector data to bitmaps,
+just like libart or cairo.
+
+Advantages:
+
+ - High quality algorithms
+ - Completely free license.
+ - Colour-space agnostic
+
+Disadvantages:
+
+ - Not a complete 2D library
+ - self-admittedly complex and hard to use.
+ - No support for greater bit-depths.
+
+* The Visualization Toolkit (VTK, http://public.kitware.com/VTK/)
+
+A very big C++ library for 2d and 3d image processing and visualisation. It's
+too big to easily evaluate for me.
+
+Advantages
+
+ - It is used in other Qt applications, like Julius
+ - Probably very good
+
+Disadvantages
+
+ - The book is very expensive
+ - Uses its own make equivalent, CMake
+ - Very large
+
+* Java Advanced Imaging