CD - Canvas Draw


CD is a platform-independent graphic library. It is implemented in several platforms using native graphic libraries: Microsoft Windows (GDI), Macintosh (QuickDraw), and X-Windows (XLIB).

The library contains functions to support both vector and image applications, and the visualization surface can be either a canvas or a more abstract surface, such as Clipboard, Metafile, PS, and so on.

To make the Application Programmers Interface (API) simple, all data are standard C types (int, double or char). Thus the application program does not have to maintain parallel data structures to deal with the graphic library.

Furthermore, the list of parameters of the CD primitive functions contains only the geometrical descriptions of the objects (line, circle, text, etc.). Where these objects should appear and what is the their color, thickness, etc. are defined as current state variables stored in the visualization surfaces. That is, the library is visualization-surface oriented, meaning that all attributes are stored in each visualization surface.

To control where the primitives are going to be drawn there we use the active canvas (visualization surface) concept. This means that you have to activate a given surface if you want to draw on it. As was pointed out, this approach simplifies the drawing for many primitives, so you do not have to pass the canvas as a parameter in each primitive. On the other hand, if there is no active canvas, a call to a primitive will create a memory invasion.

CD is free software, can be used for public and commercial applications.


The library is available for several compilers:

  • GCC and CC, in the UNIX environment
  • Visual C++, Borland C++, Watcom C++ and GCC (Cygwin and MingW), in the Windows environment

The library is available for several operating systems:

  • UNIX (SunOS, IRIX, AIX and Linux)
  • Microsoft Windows NT/2K/XP


The official support mechanism is by e-mail, at cd AT (replace " AT " by "@"). Before sending your message:

  • Check if the reported behavior is not described in the user guide.
  • Check if the reported behavior is not described in the specific driver characteristics.
  • Check the History to see if your version is updated.
  • Check the To Do list to see if your problem has already been reported.

After all of the above have been checked, report the problem, including in your message: function, element, driver, platform, and compiler.

Announcements of new versions are done by the read only list cd-l AT (replace " AT " by @). Send a request to the support e-mail to be added or removed from the list.


This work was developed at Tecgraf by means of the partnership with PETROBRAS/CENPES.

We thank the people at the SEPROC department at CENPES and the library creators Marcelo Gattass, Luiz Henrique de Figueiredo, Luiz Fernando Martha and Carlos Henrique Levy.

Thanks to the people that worked in the library:
- Carlos Cassino (X-Windows Platform Driver, Postscript Driver and WD functions),
- Renato Borges (X-Windows Platform Driver and WD functions),
- Marcelo Gattass (Microsoft Windows Platform Drivers),
- Carlos Augusto Mendes (DOS Platform Drivers),
- Diego Fernandes Nehab (DOS Platform Drivers, Lua binding),
- Vinicius da Silva Almendra (DGN Driver),
- Milton Jonathan (DXF Driver),
- Pedro Miller (DirectX Driver),
- Erick de Moura Ferreira (RGB Client Image Driver and Simulation,
- Carolina Alfaro (revision and translation of the user guide in Portuguese and English),
- Camilo Freire (CGM Driver),
- André Derraik (Macintosh Platform Beta Drivers),
- Alexandre Ferreira (Direct X Beta Driver)

We also thank the developers of the FreeType e Mesa libraries and of the XV program, for making the source code available, which helped us improve our implementation of the Simulation driver and of the X-Windows driver.


This toolkit is available at 

The full documentation can be downloaded from the Download by choosing the "Documentation Files" option.

The documentation is also available in Adobe Acrobat (cd.pdf ~400Kb) and Windows HTML Help (cd.chm ~200Kb) formats.

The HTML navigation uses the WebBook tool, available at