Cairo based canvases


CCC has been developed as a foundation for the criawips presentation application. It was written from scratch with experience from using GnomeCanvas to avoid certain problems that have appeared with GnomeCanvas. Some ideas that have moved into the design were:

  • Be able to render "a page" more than once easily
  • Be able to provide thumbnails in GtkTreeView

  • Allow easy printing of the canvas


GooCanvas is a written-from-scratch canvas, similar in many ways to FooCanvas and GnomeCanvas. GooCanvas features a cairo based rendering backend and offers APIs for both with and without model/view split.


HippoCanvas has been developed by the Mugshot team to provide a canvas they can use for their rendering. HippoCanvas is modelled very close to the box concept known from HTML and also provides CSS-like attributes for the items. HippoCanvas contains only one container which is supposed to do box-layouting.


GeoCanvas is a fork of FooCanvas. It was mostly written with performance being the most important aspect. Although providing a one-to-one connection between the model and the view, the items don't depend on the view anymore and propagate update events etc. up the object tree via GObject signal emission.


Rapicorn is an experimental graphical user interface toolkit in development phase, is targeted at becoming a suitable replacement for canvas projects such as GnomeCanvas and to some extend also cover aspects of Gtk+.

GDK based canvases


Initially based on TK canvas, GnomeCanvas has been originally developed with only GDK in mind. A libart based backend, which supported anti-aliased rendering was added later but never finished (eg. the rich text item has never been ported to the AA backen). GnomeCanvas provides a very tight integration with GTK+ and also allows basic widget embedding.

Right now, GnomeCanvas is used for the current Eye-of-Gnome icon view (which will be replaced with eog 2.20) and in the GNOME Display Manager.


FooCanvas is a fork of GnomeCanvas, stripping off the libart backend to make it a bit more lightweight for nautilus and gnumeric.

OpenGL based canvases


Clutter is currently being developed by OpenedHand to provide visually rich graphical user interfaces on desktop and embedded hardware. The main target are media center-like applications, small devices UIs and base drawing API for GL- and GL/ES-based UI toolkits. It uses Pango for text rendering (with a special GL/GLES renderer) and GdkPixbuf for loading images into GL textures. Interaction with other GNOME platform libraries is done through multiple integration libraries, e.g.: clutter-gst (GStreamer), clutter-gtk (for embedding the stage into a GTK+ application), clutter-cairo (for using cairo to draw into a texture). It's API and ABI stable within micro releases, but can break API during minor releases -- until it reaches 1.0, then it will be API and ABI stable until the following major release.

Other Toolkits

QT4 Graphics View Framework

Developed by Trolltech, it's a from-scratch replacement for QCanvas (deprecated Qt3 API), featuring model/view separation, a generic animation framework, double precision coordinates, built-in DnD, and enhamced performance (according to the docs, it's able to visualize millions of items in real time). See

Evas (Enlightenment)

Evas is the graphics rendering engine of Enlightenment DR17, it's designed to be small and fast, with several rendering backends (X11, Xcb, GL, FB, ...) and the possibility of being hardware accelerated on the backends that allow this. Evas allows the rendering of pixmaps, text (UTF-8, but doesn't handle RTL correctly) and basic figures like lines and boxes and also allows various operations like alpha blending, scaling, etc...

Evas is regularly maintained, and is still in active development. Commercial support is available.

Attic/ProjectRidley/CanvasOverview/Canvases (last edited 2013-11-23 01:05:07 by WilliamJonMcCann)