This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

Gtk Canvas

This page tries to collect highlights and drawbacks for the most known canvases around, plus some other information that hopefully will be useful to determine a sensible feature set and the best candidates to fill the canvas gap in GTK+.

Potential candidates for a new GtkCanvas are marked with a colored row. Other canvases are just for comparison.

WARNING: This is not a list of all canvases in the entire world; it's just meant to list potential canvases that can be used by, or folded in, GTK+ for a future release. Do not add your favourite pet canvas library.

Use Cases

GnomeCanvas

This is the existing (unloved) GNOME canvas, included here for reference. We should try to avoid regressions when choosing functionality for a new canvas

libccc

A potential candidate for the new GtkCanvas

GooCanvas

A potential candidate for the new GtkCanvas

FooCanvas

Unmaintained

Hippo-Canvas

Unmaintained

GeoCanvas

Uses an internal copy of FooCanvas, seems unmaintained

clutter

3D canvas, hardware accelerated, used by GNOME Shell

Qt4 Graphics View Framework

Added only for reference

Rapicorn

Written in C++

Concepts

Canvas

Primary Layout Model

Model/View Split

Infinite Scrolling

Backend

gnomecanvas

scene graph

{X}

{X}

GDK/libart(aa)

ccc

scene graph

(./)

{X}

cairo

goocanvas

scene graph

(./) (optional)

{X}

cairo

hippocanvas

boxed

{X}

{X}

cairo

foocanvas

scene graph

{X}

{X}

GDK

geocanvas

scene graph

{X}

(./)

cairo

clutter

scene graph

{X}

{X}

GLX/Win32/OSX/EGL/EGLX

Qt4

(./)

{X}

Qt

Rapicorn

(./)

{X}

cairo

Notes

Basic Features

Canvas

Generic Positioning

Accessibility

Printing Support

Item Grouping

Unit Support

Embedded GTK+ Widgets

GTK+ CellRenderer

Pixel Alignment

Automatic Layout

Primitives

gnomecanvas

(./)

(./)

{X}

(./)

Without transformation

{X}

{X}

ccc

436932

379331

(./)

(./)

Not yet,
waiting for GTK+ offscreen-rendering support
to implement transformation.

(./)

(./)

354331

Camera, Caret, Circle, Line, Pixbuf, Rectangle, Rounded Rectangle, Shape, SimpleItem, Text

goocanvas

Patch at 555097

(./)

(./) (no pagination)

(./)

(./)

Without transformation

{X}

only for tables

WxH

Ellipse, Group, Image, Path, Polyline, Rect, Table, Text, Widget

hippocanvas

N/A

{X}

{X}

(./)

{X}

(./)

{X}

mandatory

(./)

Box, Entry, Gradient, ImageButton, Image, Link, Scrollbars, Text

foocanvas

(./)

{X}

(./)

{X}

{X}

geocanvas

{X}

{X}

(./)

{X}

{X}

clutter

(./)

(./)
Since 1.4

{X}

(./)

(./)

(./)
Use clutter-gtk

{X}

(./)

WxH, HxW, NaS

Group, Text, Texture, Rectangle

Qt4

(./)

(./)

{X}

{X}

Rapicorn

{X}

{X}

(./)

(./)

{X}

(./)

Notes

Highlevel Features

Canvas

Animation Framework

Collision Detection

Builtin DnD Support

Non-scaled items

Theming

Inline Text Editing

Serialization

Rapid Prototyping

gnomecanvas

{X}

{X}

{X}

{X}

{X}

ccc

379327

{X}

436934

{X}

planned

(./)

in progress, using GtkBuilder

Signals of CcSimpleItem

goocanvas

fixed set of animations

{X}

{X}

{X}

{X}

{X}

{X}

hippocanvas

{X}

{X}

{X}

{X}

{X}

{X}

{X}

foocanvas

{X}

{X}

{X}

{X}

{X}

geocanvas

{X}

{X}

{X}

{X}

{X}

clutter

(./)

(./) a complete physics engine is provided through an integration library

(./)

{X}

{X}

(./)

(./)
using JSON and not GtkBuilder

(./)
using JSON and not GtkBuilder

Qt4

(./)

(./)

(./)

{X}

{X}

Rapicorn

{X}

{X}

{X}

{X}

Notes

API Details

Canvas

Opaque Object Structures

Initial Object Ownership

gnomecanvas

{X}

floating (GtkObject)

ccc

almost finished

floating (GInitiallyUnowned)

goocanvas

{X}

scope (GObject)

hippocanvas

{X}

floating?

foocanvas

{X}

floating (GtkObject)

geocanvas

(./)

floating (GtkObject)

clutter

(./)

floating (GInitiallyUnowned)

Qt4

Rapicorn

Notes

Metrics

Canvas

Phys. Lines of Code

API Reference

Tutorial

Roadmap

Bindings

Regression Tests

gnomecanvas

(./)

{X}

{X}

C, C++, Perl, Python, Ruby

(./)

ccc

7,617 - 2007/10/15

(./)

(./)

(./)

C, C++, C#, Python

(./)

goocanvas

17,121 - 2009/06/05

(./)

(./)

TODO list

C, C++, Python

{X}

hippocanvas

9,246 - 0.2.23

{X}

{X}

C, Python

(./)

foocanvas

{X}

{X}

C, C++

{X}

geocanvas

(./)

{X}

C, Python

(./)

clutter

110,827 - 2010/08/15

(./)

(./)

Bugzilla

C, C++, C#, Perl, Python, Ruby, Vala

(./)

Qt4

(./)

(./)

C++, Perl, Python

Rapicorn

{X}

{X}

{X}

C++

Comments

Any thoughts/comments? please write them here


2024-10-23 10:59