White Paper: GNOME Technologies


< Prev Contents Next >

GNOME Imaging Architecture

The GNOME imaging architecture provides developers with tools for creating interactive graphics displays, high-quality printing, and typographic-quality fonts. There are four components in the GNOME Imaging Architecture, and although not all of them are completed, they promise a development environment that has never been offered in the Linux and UNIX worlds.

The four components of the GNOME Imaging Architecture are: the Canvas, Libart, GNOME Print, and GNOME Fonts. At the writing of this paper the canvas and Libart are complete and GNOME Print and GNOME Fonts are still being developed.

GNOME Canvas.
The GNOME canvas[1] is a high-level display engine for creating structured graphics. A canvas displays collections of items that can be lines, rectangles, elipses, and text.

The canvas is an extensible, high-level, object-oriented drawing widget. Applications can use the basic drawing primitives in the canvas to create interactive displays, or define their custom canvas item types for complex displays.

The GNOME Canvas can render the images in two different modes. One mode uses Xlib to render in a fast but lower quality method. The second mode uses Libart to render a very high quality image, but requires more system resources to do so.

Libart.
Libart is a rendering engine that provides a superset of the PostScript imaging model, with the addition of alpha transparency and native anti-aliasing. Libart is a high-quality rendering engine that uses a combination of rendering technologies to enhance performance; for example, microtile arrays and sorted vector paths.

A microtile array is a grid-like data structure that lets the canvas keep an efficient representation of the regions that need to be repainted.

With Libart, the programmer can create a vector path or a Bzier path, and later ask the library to create a sorted vector path for performance. A sorted vector path is a vector path whose segments have been sorted in a monotonically-increasing Y order. This allows for more efficient rasterization or scan conversion.

Libart also utilizes GdkRGB, which creates a 24 bit rendering space for all images, no matter what bit depth the final display will be. If the image needs to be displayed in a lower bit depth it will still be calculated in a 24 bit, RGB space prior to display. The image then goes through a conversion to adjust it to the X visual depth. Using this method increases the performance in rendering. Performing the calculations in 24 bit depth allows for the highest quality image available to the user.

Notes

[1]

GNOME Canvas whitepaper


< Prev Contents Next >