28 Unsafe Libraries
The racket/draw library is currently implemented using Cairo
and Pango. The get-handle in bitmap% method exposes the
underlying Cairo surface for a bitmap% object, while
make-handle-brush supports the creation of a brush from an
existing Cairo surface. The representation of handles for these
methods, however, is subject to change if the racket/draw
library is implemented differently in the future.
28.1 Handle Brushes
Creates a brush given a handle that (currently) is a
cairo_surface_t. If copy? is true, then the surface is
copied, so that it can be freed or modified after the brush is
created; if copy? is #f, the surface must remain available
and unchanged as long as the brush can be used.
The width and height arguments specify the surface
bounds for use when the surface must be copied—even when
copy? is #f. The surface may need to be converted to a
stipple bitmap, for example, when drawing to a monochrome target.
The given surface is treated much like a stipple bitmap: it is
implicitly repeated, and the given transformation (if any)
determines the surface’s alignment relative to the target drawing
context.
When the brush is used with a record-dc% object, and if that
object’s get-recorded-datum method is called, then the
surface is effectively converted to a stipple bitmap for the result datum.
28.2 Cairo Library
A reference to the Cairo library for use with functions such as
get-ffi-obj, or
#f if Cairo is unavailable.