Cairo support based on ROME

Mentor: Alain Plantec
Second mentor: Hilaire Fernandes
Level: Intermediate
Invited students: Angelina Chekanova, Andraž Krevh
Students interested: Angelina Chekanova, Andraž Krevh

Rome is a canvas drawing framework that has been developed for the Sophie project. It allows one to use the same interface to draw on multiple surfaces such as bitblt, cairo or SVG. Cairo (http://cairographics.org/) is a 2D graphic library that is widely used in the free software community (Firefox uses it to render everything from UI to website content).

Technical details

Rome provides a hierarchy of canvas classes which share a common protocol. Applications using Rome can switch backends without worrying about protocol incompatibilities as is the case with the different Morphic canvases right now.

Most prominent canvas is the RomePluginCanvas which interfaces with Cairo. Cairo itself provides different backends so this offers access to pdf, ps and svg output.

The only other working class right now is the balloon canvas, using the balloon engine as a backend.
A nice goal would be to migrate all drawing code to the Rome protocol, adding e.g. a Bitblt canvas in the process.

Benefits to the Student

- Learn how 2D drawing and Canvas can be implemented in Smalltalk
- Discover how Canvas are used in Squeak and Pharo
- Get involved in a project that could have an important impact for Smalltalkers

Benefits to the Community

Using Rome would greatly improve Squeak/Pharo 2D drawing

Updated: 13.4.2010