Attach an image in the format mime_type to surface. To remove the data from a surface, call this function with same mime type and NULL for data. The attached image (or filename) data can later be used by backends which support it (currently: PDF, PS, SVG and Win32 Printing surfaces) to emit this data instead of making a snapshot of the surface. This approach tends to be faster and requires less memory and disk space. The recognized MIME types are the following: CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_PNG, CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_URI. See corresponding backend surface docs for details about which MIME types it can handle. Caution: the associated MIME data will be discarded if you draw on the surface afterwards. Use this function with care. Since 1.10

class Surface
string mimeType
ubyte[] data
cairo_destroy_func_t destroy
void* closure


mimeType string

the MIME type of the image data

data ubyte[]

the image data to attach to the surface

destroy cairo_destroy_func_t

a cairo_destroy_func_t which will be called when the surface is destroyed or when new image data is attached using the same mime type.

closure void*

the data to be passed to the destroy notifier

Return Value

CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a slot could not be allocated for the user data.