Types Cairo: A Vector Graphics Library Top | Description Types Types — Generic data types used in the cairo API Synopsis typedef cairo_bool_t; cairo_user_data_key_t; void (*cairo_destroy_func_t) (void *data); Description Details cairo_bool_t typedef int cairo_bool_t; cairo_bool_t is used for boolean values. Returns of type cairo_bool_t will always be either 0 or 1, but testing against these values explicitly is not encouraged; just use the value as a boolean condition. if (cairo_in_stroke (cr, x, y)) { /* do something */ } cairo_user_data_key_t typedef struct { int unused; } cairo_user_data_key_t; cairo_user_data_key_t is used for attaching user data to cairo data structures. The actual contents of the struct is never used, and there is no need to initialize the object; only the unique address of a cairo_data_key_t object is used. Typically, you would just use the address of a static cairo_data_key_t object. int unused; not used; ignore. cairo_destroy_func_t () void (*cairo_destroy_func_t) (void *data); cairo_destroy_func_t the type of function which is called when a data element is destroyed. It is passed the pointer to the data element and should free any memory and resources allocated for it. data : The data element being destroyed.