cairo.h | cairo.h | |||
---|---|---|---|---|
skipping to change at line 102 | skipping to change at line 102 | |||
* #cairo_bool_t is used for boolean values. Returns of type | * #cairo_bool_t is used for boolean values. Returns of type | |||
* #cairo_bool_t will always be either 0 or 1, but testing against | * #cairo_bool_t will always be either 0 or 1, but testing against | |||
* these values explicitly is not encouraged; just use the | * these values explicitly is not encouraged; just use the | |||
* value as a boolean condition. | * value as a boolean condition. | |||
* | * | |||
* <informalexample><programlisting> | * <informalexample><programlisting> | |||
* if (cairo_in_stroke (cr, x, y)) { | * if (cairo_in_stroke (cr, x, y)) { | |||
* /<!-- -->* do something *<!-- -->/ | * /<!-- -->* do something *<!-- -->/ | |||
* } | * } | |||
* </programlisting></informalexample> | * </programlisting></informalexample> | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef int cairo_bool_t; | typedef int cairo_bool_t; | |||
/** | /** | |||
* cairo_t: | * cairo_t: | |||
* | * | |||
* A #cairo_t contains the current state of the rendering device, | * A #cairo_t contains the current state of the rendering device, | |||
* including coordinates of yet to be drawn shapes. | * including coordinates of yet to be drawn shapes. | |||
* | * | |||
* Cairo contexts, as #cairo_t objects are named, are central to | * Cairo contexts, as #cairo_t objects are named, are central to | |||
* cairo and all drawing with cairo is always done to a #cairo_t | * cairo and all drawing with cairo is always done to a #cairo_t | |||
* object. | * object. | |||
* | * | |||
* Memory management of #cairo_t is done with | * Memory management of #cairo_t is done with | |||
* cairo_reference() and cairo_destroy(). | * cairo_reference() and cairo_destroy(). | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct _cairo cairo_t; | typedef struct _cairo cairo_t; | |||
/** | /** | |||
* cairo_surface_t: | * cairo_surface_t: | |||
* | * | |||
* A #cairo_surface_t represents an image, either as the destination | * A #cairo_surface_t represents an image, either as the destination | |||
* of a drawing operation or as source when drawing onto another | * of a drawing operation or as source when drawing onto another | |||
* surface. To draw to a #cairo_surface_t, create a cairo context | * surface. To draw to a #cairo_surface_t, create a cairo context | |||
* with the surface as the target, using cairo_create(). | * with the surface as the target, using cairo_create(). | |||
skipping to change at line 144 | skipping to change at line 148 | |||
* of its creation. If cairo creates the surface and backing storage for | * of its creation. If cairo creates the surface and backing storage for | |||
* the user, it will be initially cleared; for example, | * the user, it will be initially cleared; for example, | |||
* cairo_image_surface_create() and cairo_surface_create_similar(). | * cairo_image_surface_create() and cairo_surface_create_similar(). | |||
* Alternatively, if the user passes in a reference to some backing storage | * Alternatively, if the user passes in a reference to some backing storage | |||
* and asks cairo to wrap that in a #cairo_surface_t, then the contents are | * and asks cairo to wrap that in a #cairo_surface_t, then the contents are | |||
* not modified; for example, cairo_image_surface_create_for_data() and | * not modified; for example, cairo_image_surface_create_for_data() and | |||
* cairo_xlib_surface_create(). | * cairo_xlib_surface_create(). | |||
* | * | |||
* Memory management of #cairo_surface_t is done with | * Memory management of #cairo_surface_t is done with | |||
* cairo_surface_reference() and cairo_surface_destroy(). | * cairo_surface_reference() and cairo_surface_destroy(). | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct _cairo_surface cairo_surface_t; | typedef struct _cairo_surface cairo_surface_t; | |||
/** | /** | |||
* cairo_device_t: | * cairo_device_t: | |||
* | * | |||
* A #cairo_device_t represents the driver interface for drawing | * A #cairo_device_t represents the driver interface for drawing | |||
* operations to a #cairo_surface_t. There are different subtypes of | * operations to a #cairo_surface_t. There are different subtypes of | |||
* #cairo_device_t for different drawing backends; for example, | * #cairo_device_t for different drawing backends; for example, | |||
* cairo_xcb_device_create() creates a device that wraps the connection | * cairo_egl_device_create() creates a device that wraps an EGL display and | |||
* to an X Windows System using the XCB library. | * context. | |||
* | * | |||
* The type of a device can be queried with cairo_device_get_type(). | * The type of a device can be queried with cairo_device_get_type(). | |||
* | * | |||
* Memory management of #cairo_device_t is done with | * Memory management of #cairo_device_t is done with | |||
* cairo_device_reference() and cairo_device_destroy(). | * cairo_device_reference() and cairo_device_destroy(). | |||
* | * | |||
* Since: 1.10 | * Since: 1.10 | |||
**/ | **/ | |||
typedef struct _cairo_device cairo_device_t; | typedef struct _cairo_device cairo_device_t; | |||
skipping to change at line 181 | skipping to change at line 187 | |||
* @x0: X translation component of the affine transformation | * @x0: X translation component of the affine transformation | |||
* @y0: Y translation component of the affine transformation | * @y0: Y translation component of the affine transformation | |||
* | * | |||
* A #cairo_matrix_t holds an affine transformation, such as a scale, | * A #cairo_matrix_t holds an affine transformation, such as a scale, | |||
* rotation, shear, or a combination of those. The transformation of | * rotation, shear, or a combination of those. The transformation of | |||
* a point (x, y) is given by: | * a point (x, y) is given by: | |||
* <programlisting> | * <programlisting> | |||
* x_new = xx * x + xy * y + x0; | * x_new = xx * x + xy * y + x0; | |||
* y_new = yx * x + yy * y + y0; | * y_new = yx * x + yy * y + y0; | |||
* </programlisting> | * </programlisting> | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct _cairo_matrix { | typedef struct _cairo_matrix { | |||
double xx; double yx; | double xx; double yx; | |||
double xy; double yy; | double xy; double yy; | |||
double x0; double y0; | double x0; double y0; | |||
} cairo_matrix_t; | } cairo_matrix_t; | |||
/** | /** | |||
* cairo_pattern_t: | * cairo_pattern_t: | |||
* | * | |||
* A #cairo_pattern_t represents a source when drawing onto a | * A #cairo_pattern_t represents a source when drawing onto a | |||
* surface. There are different subtypes of #cairo_pattern_t, | * surface. There are different subtypes of #cairo_pattern_t, | |||
* for different types of sources; for example, | * for different types of sources; for example, | |||
* cairo_pattern_create_rgb() creates a pattern for a solid | * cairo_pattern_create_rgb() creates a pattern for a solid | |||
* opaque color. | * opaque color. | |||
* | * | |||
* Other than various cairo_pattern_create_<emphasis>type</emphasis>() | * Other than various | |||
* functions, some of the pattern types can be implicitly created | * <function>cairo_pattern_create_<emphasis>type</emphasis>()</function> | |||
* using various cairo_set_source_<emphasis>type</emphasis>() functions; | * functions, some of the pattern types can be implicitly created using var | |||
ious | ||||
* <function>cairo_set_source_<emphasis>type</emphasis>()</function> functi | ||||
ons; | ||||
* for example cairo_set_source_rgb(). | * for example cairo_set_source_rgb(). | |||
* | * | |||
* The type of a pattern can be queried with cairo_pattern_get_type(). | * The type of a pattern can be queried with cairo_pattern_get_type(). | |||
* | * | |||
* Memory management of #cairo_pattern_t is done with | * Memory management of #cairo_pattern_t is done with | |||
* cairo_pattern_reference() and cairo_pattern_destroy(). | * cairo_pattern_reference() and cairo_pattern_destroy(). | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct _cairo_pattern cairo_pattern_t; | typedef struct _cairo_pattern cairo_pattern_t; | |||
/** | /** | |||
* cairo_destroy_func_t: | * cairo_destroy_func_t: | |||
* @data: The data element being destroyed. | * @data: The data element being destroyed. | |||
* | * | |||
* #cairo_destroy_func_t the type of function which is called when a | * #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 | * data element is destroyed. It is passed the pointer to the data | |||
* element and should free any memory and resources allocated for it. | * element and should free any memory and resources allocated for it. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef void (*cairo_destroy_func_t) (void *data); | typedef void (*cairo_destroy_func_t) (void *data); | |||
/** | /** | |||
* cairo_user_data_key_t: | * cairo_user_data_key_t: | |||
* @unused: not used; ignore. | * @unused: not used; ignore. | |||
* | * | |||
* #cairo_user_data_key_t is used for attaching user data to cairo | * #cairo_user_data_key_t is used for attaching user data to cairo | |||
* data structures. The actual contents of the struct is never used, | * data structures. The actual contents of the struct is never used, | |||
* and there is no need to initialize the object; only the unique | * and there is no need to initialize the object; only the unique | |||
* address of a #cairo_data_key_t object is used. Typically, you | * 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. | * would just use the address of a static #cairo_data_key_t object. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct _cairo_user_data_key { | typedef struct _cairo_user_data_key { | |||
int unused; | int unused; | |||
} cairo_user_data_key_t; | } cairo_user_data_key_t; | |||
/** | /** | |||
* cairo_status_t: | * cairo_status_t: | |||
* @CAIRO_STATUS_SUCCESS: no error has occurred | * @CAIRO_STATUS_SUCCESS: no error has occurred (Since 1.0) | |||
* @CAIRO_STATUS_NO_MEMORY: out of memory | * @CAIRO_STATUS_NO_MEMORY: out of memory (Since 1.0) | |||
* @CAIRO_STATUS_INVALID_RESTORE: cairo_restore() called without matching c | * @CAIRO_STATUS_INVALID_RESTORE: cairo_restore() called without matching c | |||
airo_save() | airo_save() (Since 1.0) | |||
* @CAIRO_STATUS_INVALID_POP_GROUP: no saved group to pop, i.e. cairo_pop_g | * @CAIRO_STATUS_INVALID_POP_GROUP: no saved group to pop, i.e. cairo_pop_g | |||
roup() without matching cairo_push_group() | roup() without matching cairo_push_group() (Since 1.0) | |||
* @CAIRO_STATUS_NO_CURRENT_POINT: no current point defined | * @CAIRO_STATUS_NO_CURRENT_POINT: no current point defined (Since 1.0) | |||
* @CAIRO_STATUS_INVALID_MATRIX: invalid matrix (not invertible) | * @CAIRO_STATUS_INVALID_MATRIX: invalid matrix (not invertible) (Since 1.0 | |||
* @CAIRO_STATUS_INVALID_STATUS: invalid value for an input #cairo_status_t | ) | |||
* @CAIRO_STATUS_NULL_POINTER: %NULL pointer | * @CAIRO_STATUS_INVALID_STATUS: invalid value for an input #cairo_status_t | |||
* @CAIRO_STATUS_INVALID_STRING: input string not valid UTF-8 | (Since 1.0) | |||
* @CAIRO_STATUS_INVALID_PATH_DATA: input path data not valid | * @CAIRO_STATUS_NULL_POINTER: %NULL pointer (Since 1.0) | |||
* @CAIRO_STATUS_READ_ERROR: error while reading from input stream | * @CAIRO_STATUS_INVALID_STRING: input string not valid UTF-8 (Since 1.0) | |||
* @CAIRO_STATUS_WRITE_ERROR: error while writing to output stream | * @CAIRO_STATUS_INVALID_PATH_DATA: input path data not valid (Since 1.0) | |||
* @CAIRO_STATUS_SURFACE_FINISHED: target surface has been finished | * @CAIRO_STATUS_READ_ERROR: error while reading from input stream (Since 1 | |||
* @CAIRO_STATUS_SURFACE_TYPE_MISMATCH: the surface type is not appropriate | .0) | |||
for the operation | * @CAIRO_STATUS_WRITE_ERROR: error while writing to output stream (Since 1 | |||
* @CAIRO_STATUS_PATTERN_TYPE_MISMATCH: the pattern type is not appropriate | .0) | |||
for the operation | * @CAIRO_STATUS_SURFACE_FINISHED: target surface has been finished (Since | |||
* @CAIRO_STATUS_INVALID_CONTENT: invalid value for an input #cairo_content | 1.0) | |||
_t | * @CAIRO_STATUS_SURFACE_TYPE_MISMATCH: the surface type is not appropriate | |||
* @CAIRO_STATUS_INVALID_FORMAT: invalid value for an input #cairo_format_t | for the operation (Since 1.0) | |||
* @CAIRO_STATUS_INVALID_VISUAL: invalid value for an input Visual* | * @CAIRO_STATUS_PATTERN_TYPE_MISMATCH: the pattern type is not appropriate | |||
* @CAIRO_STATUS_FILE_NOT_FOUND: file not found | for the operation (Since 1.0) | |||
* @CAIRO_STATUS_INVALID_DASH: invalid value for a dash setting | * @CAIRO_STATUS_INVALID_CONTENT: invalid value for an input #cairo_content | |||
_t (Since 1.0) | ||||
* @CAIRO_STATUS_INVALID_FORMAT: invalid value for an input #cairo_format_t | ||||
(Since 1.0) | ||||
* @CAIRO_STATUS_INVALID_VISUAL: invalid value for an input Visual* (Since | ||||
1.0) | ||||
* @CAIRO_STATUS_FILE_NOT_FOUND: file not found (Since 1.0) | ||||
* @CAIRO_STATUS_INVALID_DASH: invalid value for a dash setting (Since 1.0) | ||||
* @CAIRO_STATUS_INVALID_DSC_COMMENT: invalid value for a DSC comment (Sinc e 1.2) | * @CAIRO_STATUS_INVALID_DSC_COMMENT: invalid value for a DSC comment (Sinc e 1.2) | |||
* @CAIRO_STATUS_INVALID_INDEX: invalid index passed to getter (Since 1.4) | * @CAIRO_STATUS_INVALID_INDEX: invalid index passed to getter (Since 1.4) | |||
* @CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: clip region not representable in d esired format (Since 1.4) | * @CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: clip region not representable in d esired format (Since 1.4) | |||
* @CAIRO_STATUS_TEMP_FILE_ERROR: error creating or writing to a temporary file (Since 1.6) | * @CAIRO_STATUS_TEMP_FILE_ERROR: error creating or writing to a temporary file (Since 1.6) | |||
* @CAIRO_STATUS_INVALID_STRIDE: invalid value for stride (Since 1.6) | * @CAIRO_STATUS_INVALID_STRIDE: invalid value for stride (Since 1.6) | |||
* @CAIRO_STATUS_FONT_TYPE_MISMATCH: the font type is not appropriate for t he operation (Since 1.8) | * @CAIRO_STATUS_FONT_TYPE_MISMATCH: the font type is not appropriate for t he operation (Since 1.8) | |||
* @CAIRO_STATUS_USER_FONT_IMMUTABLE: the user-font is immutable (Since 1.8 ) | * @CAIRO_STATUS_USER_FONT_IMMUTABLE: the user-font is immutable (Since 1.8 ) | |||
* @CAIRO_STATUS_USER_FONT_ERROR: error occurred in a user-font callback fu nction (Since 1.8) | * @CAIRO_STATUS_USER_FONT_ERROR: error occurred in a user-font callback fu nction (Since 1.8) | |||
* @CAIRO_STATUS_NEGATIVE_COUNT: negative number used where it is not allow ed (Since 1.8) | * @CAIRO_STATUS_NEGATIVE_COUNT: negative number used where it is not allow ed (Since 1.8) | |||
* @CAIRO_STATUS_INVALID_CLUSTERS: input clusters do not represent the acco mpanying text and glyph array (Since 1.8) | * @CAIRO_STATUS_INVALID_CLUSTERS: input clusters do not represent the acco mpanying text and glyph array (Since 1.8) | |||
* @CAIRO_STATUS_INVALID_SLANT: invalid value for an input #cairo_font_slan t_t (Since 1.8) | * @CAIRO_STATUS_INVALID_SLANT: invalid value for an input #cairo_font_slan t_t (Since 1.8) | |||
* @CAIRO_STATUS_INVALID_WEIGHT: invalid value for an input #cairo_font_wei ght_t (Since 1.8) | * @CAIRO_STATUS_INVALID_WEIGHT: invalid value for an input #cairo_font_wei ght_t (Since 1.8) | |||
* @CAIRO_STATUS_INVALID_SIZE: invalid value (typically too big) for the si ze of the input (surface, pattern, etc.) (Since 1.10) | * @CAIRO_STATUS_INVALID_SIZE: invalid value (typically too big) for the si ze of the input (surface, pattern, etc.) (Since 1.10) | |||
* @CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: user-font method not implemente d (Since 1.10) | * @CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: user-font method not implemente d (Since 1.10) | |||
* @CAIRO_STATUS_DEVICE_TYPE_MISMATCH: the device type is not appropriate f or the operation (Since 1.10) | * @CAIRO_STATUS_DEVICE_TYPE_MISMATCH: the device type is not appropriate f or the operation (Since 1.10) | |||
* @CAIRO_STATUS_DEVICE_ERROR: an operation to the device caused an unspeci fied error (Since 1.10) | * @CAIRO_STATUS_DEVICE_ERROR: an operation to the device caused an unspeci fied error (Since 1.10) | |||
* @CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: a mesh pattern | ||||
* construction operation was used outside of a | ||||
* cairo_mesh_pattern_begin_patch()/cairo_mesh_pattern_end_patch() | ||||
* pair (Since 1.12) | ||||
* @CAIRO_STATUS_DEVICE_FINISHED: target device has been finished (Since 1. | ||||
12) | ||||
* @CAIRO_STATUS_LAST_STATUS: this is a special value indicating the number of | * @CAIRO_STATUS_LAST_STATUS: this is a special value indicating the number of | |||
* status values defined in this enumeration. When using this value, not e | * status values defined in this enumeration. When using this value, not e | |||
* that the version of cairo at run-time may have additional status value s | * that the version of cairo at run-time may have additional status value s | |||
* defined than the value of this symbol at compile-time. (Since 1.10) | * defined than the value of this symbol at compile-time. (Since 1.10) | |||
* | * | |||
* #cairo_status_t is used to indicate errors that can occur when | * #cairo_status_t is used to indicate errors that can occur when | |||
* using Cairo. In some cases it is returned directly by functions. | * using Cairo. In some cases it is returned directly by functions. | |||
* but when using #cairo_t, the last error, if any, is stored in | * but when using #cairo_t, the last error, if any, is stored in | |||
* the context and can be retrieved with cairo_status(). | * the context and can be retrieved with cairo_status(). | |||
* | * | |||
* New entries may be added in future versions. Use cairo_status_to_string () | * New entries may be added in future versions. Use cairo_status_to_string () | |||
* to get a human-readable representation of an error message. | * to get a human-readable representation of an error message. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_status { | typedef enum _cairo_status { | |||
CAIRO_STATUS_SUCCESS = 0, | CAIRO_STATUS_SUCCESS = 0, | |||
CAIRO_STATUS_NO_MEMORY, | CAIRO_STATUS_NO_MEMORY, | |||
CAIRO_STATUS_INVALID_RESTORE, | CAIRO_STATUS_INVALID_RESTORE, | |||
CAIRO_STATUS_INVALID_POP_GROUP, | CAIRO_STATUS_INVALID_POP_GROUP, | |||
CAIRO_STATUS_NO_CURRENT_POINT, | CAIRO_STATUS_NO_CURRENT_POINT, | |||
CAIRO_STATUS_INVALID_MATRIX, | CAIRO_STATUS_INVALID_MATRIX, | |||
CAIRO_STATUS_INVALID_STATUS, | CAIRO_STATUS_INVALID_STATUS, | |||
skipping to change at line 322 | skipping to change at line 344 | |||
CAIRO_STATUS_USER_FONT_IMMUTABLE, | CAIRO_STATUS_USER_FONT_IMMUTABLE, | |||
CAIRO_STATUS_USER_FONT_ERROR, | CAIRO_STATUS_USER_FONT_ERROR, | |||
CAIRO_STATUS_NEGATIVE_COUNT, | CAIRO_STATUS_NEGATIVE_COUNT, | |||
CAIRO_STATUS_INVALID_CLUSTERS, | CAIRO_STATUS_INVALID_CLUSTERS, | |||
CAIRO_STATUS_INVALID_SLANT, | CAIRO_STATUS_INVALID_SLANT, | |||
CAIRO_STATUS_INVALID_WEIGHT, | CAIRO_STATUS_INVALID_WEIGHT, | |||
CAIRO_STATUS_INVALID_SIZE, | CAIRO_STATUS_INVALID_SIZE, | |||
CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, | CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, | |||
CAIRO_STATUS_DEVICE_TYPE_MISMATCH, | CAIRO_STATUS_DEVICE_TYPE_MISMATCH, | |||
CAIRO_STATUS_DEVICE_ERROR, | CAIRO_STATUS_DEVICE_ERROR, | |||
CAIRO_STATUS_INVALID_MESH_CONSTRUCTION, | ||||
CAIRO_STATUS_DEVICE_FINISHED, | ||||
CAIRO_STATUS_LAST_STATUS | CAIRO_STATUS_LAST_STATUS | |||
} cairo_status_t; | } cairo_status_t; | |||
/** | /** | |||
* cairo_content_t: | * cairo_content_t: | |||
* @CAIRO_CONTENT_COLOR: The surface will hold color content only. | * @CAIRO_CONTENT_COLOR: The surface will hold color content only. (Since 1 | |||
* @CAIRO_CONTENT_ALPHA: The surface will hold alpha content only. | .0) | |||
* @CAIRO_CONTENT_COLOR_ALPHA: The surface will hold color and alpha conten | * @CAIRO_CONTENT_ALPHA: The surface will hold alpha content only. (Since 1 | |||
t. | .0) | |||
* @CAIRO_CONTENT_COLOR_ALPHA: The surface will hold color and alpha conten | ||||
t. (Since 1.0) | ||||
* | * | |||
* #cairo_content_t is used to describe the content that a surface will | * #cairo_content_t is used to describe the content that a surface will | |||
* contain, whether color information, alpha information (translucence | * contain, whether color information, alpha information (translucence | |||
* vs. opacity), or both. | * vs. opacity), or both. | |||
* | * | |||
* Note: The large values here are designed to keep #cairo_content_t | * Note: The large values here are designed to keep #cairo_content_t | |||
* values distinct from #cairo_format_t values so that the | * values distinct from #cairo_format_t values so that the | |||
* implementation can detect the error if users confuse the two types. | * implementation can detect the error if users confuse the two types. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_content { | typedef enum _cairo_content { | |||
CAIRO_CONTENT_COLOR = 0x1000, | CAIRO_CONTENT_COLOR = 0x1000, | |||
CAIRO_CONTENT_ALPHA = 0x2000, | CAIRO_CONTENT_ALPHA = 0x2000, | |||
CAIRO_CONTENT_COLOR_ALPHA = 0x3000 | CAIRO_CONTENT_COLOR_ALPHA = 0x3000 | |||
} cairo_content_t; | } cairo_content_t; | |||
/** | /** | |||
* cairo_format_t: | ||||
* @CAIRO_FORMAT_INVALID: no such format exists or is supported. | ||||
* @CAIRO_FORMAT_ARGB32: each pixel is a 32-bit quantity, with | ||||
* alpha in the upper 8 bits, then red, then green, then blue. | ||||
* The 32-bit quantities are stored native-endian. Pre-multiplied | ||||
* alpha is used. (That is, 50% transparent red is 0x80800000, | ||||
* not 0x80ff0000.) (Since 1.0) | ||||
* @CAIRO_FORMAT_RGB24: each pixel is a 32-bit quantity, with | ||||
* the upper 8 bits unused. Red, Green, and Blue are stored | ||||
* in the remaining 24 bits in that order. (Since 1.0) | ||||
* @CAIRO_FORMAT_A8: each pixel is a 8-bit quantity holding | ||||
* an alpha value. (Since 1.0) | ||||
* @CAIRO_FORMAT_A1: each pixel is a 1-bit quantity holding | ||||
* an alpha value. Pixels are packed together into 32-bit | ||||
* quantities. The ordering of the bits matches the | ||||
* endianess of the platform. On a big-endian machine, the | ||||
* first pixel is in the uppermost bit, on a little-endian | ||||
* machine the first pixel is in the least-significant bit. (Since 1.0) | ||||
* @CAIRO_FORMAT_RGB16_565: each pixel is a 16-bit quantity | ||||
* with red in the upper 5 bits, then green in the middle | ||||
* 6 bits, and blue in the lower 5 bits. (Since 1.2) | ||||
* @CAIRO_FORMAT_RGB30: like RGB24 but with 10bpc. (Since 1.12) | ||||
* | ||||
* #cairo_format_t is used to identify the memory format of | ||||
* image data. | ||||
* | ||||
* New entries may be added in future versions. | ||||
* | ||||
* Since: 1.0 | ||||
**/ | ||||
typedef enum _cairo_format { | ||||
CAIRO_FORMAT_INVALID = -1, | ||||
CAIRO_FORMAT_ARGB32 = 0, | ||||
CAIRO_FORMAT_RGB24 = 1, | ||||
CAIRO_FORMAT_A8 = 2, | ||||
CAIRO_FORMAT_A1 = 3, | ||||
CAIRO_FORMAT_RGB16_565 = 4, | ||||
CAIRO_FORMAT_RGB30 = 5 | ||||
} cairo_format_t; | ||||
/** | ||||
* cairo_write_func_t: | * cairo_write_func_t: | |||
* @closure: the output closure | * @closure: the output closure | |||
* @data: the buffer containing the data to write | * @data: the buffer containing the data to write | |||
* @length: the amount of data to write | * @length: the amount of data to write | |||
* | * | |||
* #cairo_write_func_t is the type of function which is called when a | * #cairo_write_func_t is the type of function which is called when a | |||
* backend needs to write data to an output stream. It is passed the | * backend needs to write data to an output stream. It is passed the | |||
* closure which was specified by the user at the time the write | * closure which was specified by the user at the time the write | |||
* function was registered, the data to write and the length of the | * function was registered, the data to write and the length of the | |||
* data in bytes. The write function should return | * data in bytes. The write function should return | |||
* %CAIRO_STATUS_SUCCESS if all the data was successfully written, | * %CAIRO_STATUS_SUCCESS if all the data was successfully written, | |||
* %CAIRO_STATUS_WRITE_ERROR otherwise. | * %CAIRO_STATUS_WRITE_ERROR otherwise. | |||
* | * | |||
* Returns: the status code of the write operation | * Returns: the status code of the write operation | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef cairo_status_t (*cairo_write_func_t) (void *closure, | typedef cairo_status_t (*cairo_write_func_t) (void *closure, | |||
const unsigned char *data, | const unsigned char *data, | |||
unsigned int length); | unsigned int length); | |||
/** | /** | |||
* cairo_read_func_t: | * cairo_read_func_t: | |||
* @closure: the input closure | * @closure: the input closure | |||
* @data: the buffer into which to read the data | * @data: the buffer into which to read the data | |||
* @length: the amount of data to read | * @length: the amount of data to read | |||
* | * | |||
* #cairo_read_func_t is the type of function which is called when a | * #cairo_read_func_t is the type of function which is called when a | |||
* backend needs to read data from an input stream. It is passed the | * backend needs to read data from an input stream. It is passed the | |||
* closure which was specified by the user at the time the read | * closure which was specified by the user at the time the read | |||
* function was registered, the buffer to read the data into and the | * function was registered, the buffer to read the data into and the | |||
* length of the data in bytes. The read function should return | * length of the data in bytes. The read function should return | |||
* %CAIRO_STATUS_SUCCESS if all the data was successfully read, | * %CAIRO_STATUS_SUCCESS if all the data was successfully read, | |||
* %CAIRO_STATUS_READ_ERROR otherwise. | * %CAIRO_STATUS_READ_ERROR otherwise. | |||
* | * | |||
* Returns: the status code of the read operation | * Returns: the status code of the read operation | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef cairo_status_t (*cairo_read_func_t) (void *closure, | typedef cairo_status_t (*cairo_read_func_t) (void *closure, | |||
unsigned char *data, | unsigned char *data, | |||
unsigned int length); | unsigned int length); | |||
/** | ||||
* cairo_rectangle_int_t: | ||||
* @x: X coordinate of the left side of the rectangle | ||||
* @y: Y coordinate of the the top side of the rectangle | ||||
* @width: width of the rectangle | ||||
* @height: height of the rectangle | ||||
* | ||||
* A data structure for holding a rectangle with integer coordinates. | ||||
* | ||||
* Since: 1.10 | ||||
**/ | ||||
typedef struct _cairo_rectangle_int { | ||||
int x, y; | ||||
int width, height; | ||||
} cairo_rectangle_int_t; | ||||
/* Functions for manipulating state objects */ | /* Functions for manipulating state objects */ | |||
cairo_public cairo_t * | cairo_public cairo_t * | |||
cairo_create (cairo_surface_t *target); | cairo_create (cairo_surface_t *target); | |||
cairo_public cairo_t * | cairo_public cairo_t * | |||
cairo_reference (cairo_t *cr); | cairo_reference (cairo_t *cr); | |||
cairo_public void | cairo_public void | |||
cairo_destroy (cairo_t *cr); | cairo_destroy (cairo_t *cr); | |||
skipping to change at line 431 | skipping to change at line 519 | |||
cairo_public cairo_pattern_t * | cairo_public cairo_pattern_t * | |||
cairo_pop_group (cairo_t *cr); | cairo_pop_group (cairo_t *cr); | |||
cairo_public void | cairo_public void | |||
cairo_pop_group_to_source (cairo_t *cr); | cairo_pop_group_to_source (cairo_t *cr); | |||
/* Modify state */ | /* Modify state */ | |||
/** | /** | |||
* cairo_operator_t: | * cairo_operator_t: | |||
* @CAIRO_OPERATOR_CLEAR: clear destination layer (bounded) | * @CAIRO_OPERATOR_CLEAR: clear destination layer (bounded) (Since 1.0) | |||
* @CAIRO_OPERATOR_SOURCE: replace destination layer (bounded) | * @CAIRO_OPERATOR_SOURCE: replace destination layer (bounded) (Since 1.0) | |||
* @CAIRO_OPERATOR_OVER: draw source layer on top of destination layer | * @CAIRO_OPERATOR_OVER: draw source layer on top of destination layer | |||
* (bounded) | * (bounded) (Since 1.0) | |||
* @CAIRO_OPERATOR_IN: draw source where there was destination content | * @CAIRO_OPERATOR_IN: draw source where there was destination content | |||
* (unbounded) | * (unbounded) (Since 1.0) | |||
* @CAIRO_OPERATOR_OUT: draw source where there was no destination | * @CAIRO_OPERATOR_OUT: draw source where there was no destination | |||
* content (unbounded) | * content (unbounded) (Since 1.0) | |||
* @CAIRO_OPERATOR_ATOP: draw source on top of destination content and | * @CAIRO_OPERATOR_ATOP: draw source on top of destination content and | |||
* only there | * only there (Since 1.0) | |||
* @CAIRO_OPERATOR_DEST: ignore the source | * @CAIRO_OPERATOR_DEST: ignore the source (Since 1.0) | |||
* @CAIRO_OPERATOR_DEST_OVER: draw destination on top of source | * @CAIRO_OPERATOR_DEST_OVER: draw destination on top of source (Since 1.0) | |||
* @CAIRO_OPERATOR_DEST_IN: leave destination only where there was | * @CAIRO_OPERATOR_DEST_IN: leave destination only where there was | |||
* source content (unbounded) | * source content (unbounded) (Since 1.0) | |||
* @CAIRO_OPERATOR_DEST_OUT: leave destination only where there was no | * @CAIRO_OPERATOR_DEST_OUT: leave destination only where there was no | |||
* source content | * source content (Since 1.0) | |||
* @CAIRO_OPERATOR_DEST_ATOP: leave destination on top of source content | * @CAIRO_OPERATOR_DEST_ATOP: leave destination on top of source content | |||
* and only there (unbounded) | * and only there (unbounded) (Since 1.0) | |||
* @CAIRO_OPERATOR_XOR: source and destination are shown where there is onl y | * @CAIRO_OPERATOR_XOR: source and destination are shown where there is onl y | |||
* one of them | * one of them (Since 1.0) | |||
* @CAIRO_OPERATOR_ADD: source and destination layers are accumulated | * @CAIRO_OPERATOR_ADD: source and destination layers are accumulated (Sinc | |||
e 1.0) | ||||
* @CAIRO_OPERATOR_SATURATE: like over, but assuming source and dest are | * @CAIRO_OPERATOR_SATURATE: like over, but assuming source and dest are | |||
* disjoint geometries | * disjoint geometries (Since 1.0) | |||
* @CAIRO_OPERATOR_MULTIPLY: source and destination layers are multiplied. | * @CAIRO_OPERATOR_MULTIPLY: source and destination layers are multiplied. | |||
* This causes the result to be at least as dark as the darker inputs. | * This causes the result to be at least as dark as the darker inputs. (Sin ce 1.10) | |||
* @CAIRO_OPERATOR_SCREEN: source and destination are complemented and | * @CAIRO_OPERATOR_SCREEN: source and destination are complemented and | |||
* multiplied. This causes the result to be at least as light as the lighte r | * multiplied. This causes the result to be at least as light as the lighte r | |||
* inputs. | * inputs. (Since 1.10) | |||
* @CAIRO_OPERATOR_OVERLAY: multiplies or screens, depending on the | * @CAIRO_OPERATOR_OVERLAY: multiplies or screens, depending on the | |||
* lightness of the destination color. | * lightness of the destination color. (Since 1.10) | |||
* @CAIRO_OPERATOR_DARKEN: replaces the destination with the source if it | * @CAIRO_OPERATOR_DARKEN: replaces the destination with the source if it | |||
* is darker, otherwise keeps the source. | * is darker, otherwise keeps the source. (Since 1.10) | |||
* @CAIRO_OPERATOR_LIGHTEN: replaces the destination with the source if it | * @CAIRO_OPERATOR_LIGHTEN: replaces the destination with the source if it | |||
* is lighter, otherwise keeps the source. | * is lighter, otherwise keeps the source. (Since 1.10) | |||
* @CAIRO_OPERATOR_COLOR_DODGE: brightens the destination color to reflect | * @CAIRO_OPERATOR_COLOR_DODGE: brightens the destination color to reflect | |||
* the source color. | * the source color. (Since 1.10) | |||
* @CAIRO_OPERATOR_COLOR_BURN: darkens the destination color to reflect | * @CAIRO_OPERATOR_COLOR_BURN: darkens the destination color to reflect | |||
* the source color. | * the source color. (Since 1.10) | |||
* @CAIRO_OPERATOR_HARD_LIGHT: Multiplies or screens, dependant on source | * @CAIRO_OPERATOR_HARD_LIGHT: Multiplies or screens, dependent on source | |||
* color. | * color. (Since 1.10) | |||
* @CAIRO_OPERATOR_SOFT_LIGHT: Darkens or lightens, dependant on source | * @CAIRO_OPERATOR_SOFT_LIGHT: Darkens or lightens, dependent on source | |||
* color. | * color. (Since 1.10) | |||
* @CAIRO_OPERATOR_DIFFERENCE: Takes the difference of the source and | * @CAIRO_OPERATOR_DIFFERENCE: Takes the difference of the source and | |||
* destination color. | * destination color. (Since 1.10) | |||
* @CAIRO_OPERATOR_EXCLUSION: Produces an effect similar to difference, but | * @CAIRO_OPERATOR_EXCLUSION: Produces an effect similar to difference, but | |||
* with lower contrast. | * with lower contrast. (Since 1.10) | |||
* @CAIRO_OPERATOR_HSL_HUE: Creates a color with the hue of the source | * @CAIRO_OPERATOR_HSL_HUE: Creates a color with the hue of the source | |||
* and the saturation and luminosity of the target. | * and the saturation and luminosity of the target. (Since 1.10) | |||
* @CAIRO_OPERATOR_HSL_SATURATION: Creates a color with the saturation | * @CAIRO_OPERATOR_HSL_SATURATION: Creates a color with the saturation | |||
* of the source and the hue and luminosity of the target. Painting with | * of the source and the hue and luminosity of the target. Painting with | |||
* this mode onto a gray area prduces no change. | * this mode onto a gray area produces no change. (Since 1.10) | |||
* @CAIRO_OPERATOR_HSL_COLOR: Creates a color with the hue and saturation | * @CAIRO_OPERATOR_HSL_COLOR: Creates a color with the hue and saturation | |||
* of the source and the luminosity of the target. This preserves the gray | * of the source and the luminosity of the target. This preserves the gray | |||
* levels of the target and is useful for coloring monochrome images or | * levels of the target and is useful for coloring monochrome images or | |||
* tinting color images. | * tinting color images. (Since 1.10) | |||
* @CAIRO_OPERATOR_HSL_LUMINOSITY: Creates a color with the luminosity of | * @CAIRO_OPERATOR_HSL_LUMINOSITY: Creates a color with the luminosity of | |||
* the source and the hue and saturation of the target. This produces an | * the source and the hue and saturation of the target. This produces an | |||
* inverse effect to @CAIRO_OPERATOR_HSL_COLOR. | * inverse effect to @CAIRO_OPERATOR_HSL_COLOR. (Since 1.10) | |||
* | * | |||
* #cairo_operator_t is used to set the compositing operator for all cairo | * #cairo_operator_t is used to set the compositing operator for all cairo | |||
* drawing operations. | * drawing operations. | |||
* | * | |||
* The default operator is %CAIRO_OPERATOR_OVER. | * The default operator is %CAIRO_OPERATOR_OVER. | |||
* | * | |||
* The operators marked as <firstterm>unbounded</firstterm> modify their | * The operators marked as <firstterm>unbounded</firstterm> modify their | |||
* destination even outside of the mask layer (that is, their effect is not | * destination even outside of the mask layer (that is, their effect is not | |||
* bound by the mask layer). However, their effect can still be limited by | * bound by the mask layer). However, their effect can still be limited by | |||
* way of clipping. | * way of clipping. | |||
* | * | |||
* To keep things simple, the operator descriptions here | * To keep things simple, the operator descriptions here | |||
* document the behavior for when both source and destination are either fu lly | * document the behavior for when both source and destination are either fu lly | |||
* transparent or fully opaque. The actual implementation works for | * transparent or fully opaque. The actual implementation works for | |||
* translucent layers too. | * translucent layers too. | |||
* For a more detailed explanation of the effects of each operator, includi ng | * For a more detailed explanation of the effects of each operator, includi ng | |||
* the mathematical definitions, see | * the mathematical definitions, see | |||
* <ulink url="http://cairographics.org/operators/">http://cairographics.or g/operators/</ulink>. | * <ulink url="http://cairographics.org/operators/">http://cairographics.or g/operators/</ulink>. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_operator { | typedef enum _cairo_operator { | |||
CAIRO_OPERATOR_CLEAR, | CAIRO_OPERATOR_CLEAR, | |||
CAIRO_OPERATOR_SOURCE, | CAIRO_OPERATOR_SOURCE, | |||
CAIRO_OPERATOR_OVER, | CAIRO_OPERATOR_OVER, | |||
CAIRO_OPERATOR_IN, | CAIRO_OPERATOR_IN, | |||
CAIRO_OPERATOR_OUT, | CAIRO_OPERATOR_OUT, | |||
CAIRO_OPERATOR_ATOP, | CAIRO_OPERATOR_ATOP, | |||
skipping to change at line 570 | skipping to change at line 660 | |||
cairo_surface_t *surface, | cairo_surface_t *surface, | |||
double x, | double x, | |||
double y); | double y); | |||
cairo_public void | cairo_public void | |||
cairo_set_tolerance (cairo_t *cr, double tolerance); | cairo_set_tolerance (cairo_t *cr, double tolerance); | |||
/** | /** | |||
* cairo_antialias_t: | * cairo_antialias_t: | |||
* @CAIRO_ANTIALIAS_DEFAULT: Use the default antialiasing for | * @CAIRO_ANTIALIAS_DEFAULT: Use the default antialiasing for | |||
* the subsystem and target device | * the subsystem and target device, since 1.0 | |||
* @CAIRO_ANTIALIAS_NONE: Use a bilevel alpha mask | * @CAIRO_ANTIALIAS_NONE: Use a bilevel alpha mask, since 1.0 | |||
* @CAIRO_ANTIALIAS_GRAY: Perform single-color antialiasing (using | * @CAIRO_ANTIALIAS_GRAY: Perform single-color antialiasing (using | |||
* shades of gray for black text on a white background, for example). | * shades of gray for black text on a white background, for example), sinc e 1.0 | |||
* @CAIRO_ANTIALIAS_SUBPIXEL: Perform antialiasing by taking | * @CAIRO_ANTIALIAS_SUBPIXEL: Perform antialiasing by taking | |||
* advantage of the order of subpixel elements on devices | * advantage of the order of subpixel elements on devices | |||
* such as LCD panels | * such as LCD panels, since 1.0 | |||
* @CAIRO_ANTIALIAS_FAST: Hint that the backend should perform some | ||||
* antialiasing but prefer speed over quality, since 1.12 | ||||
* @CAIRO_ANTIALIAS_GOOD: The backend should balance quality against | ||||
* performance, since 1.12 | ||||
* @CAIRO_ANTIALIAS_BEST: Hint that the backend should render at the highes | ||||
t | ||||
* quality, sacrificing speed if necessary, since 1.12 | ||||
* | * | |||
* Specifies the type of antialiasing to do when rendering text or shapes. | * Specifies the type of antialiasing to do when rendering text or shapes. | |||
* | ||||
* As it is not necessarily clear from the above what advantages a particul | ||||
ar | ||||
* antialias method provides, since 1.12, there is also a set of hints: | ||||
* @CAIRO_ANTIALIAS_FAST: Allow the backend to degrade raster quality for s | ||||
peed | ||||
* @CAIRO_ANTIALIAS_GOOD: A balance between speed and quality | ||||
* @CAIRO_ANTIALIAS_BEST: A high-fidelity, but potentially slow, raster mod | ||||
e | ||||
* | ||||
* These make no guarantee on how the backend will perform its rasterisatio | ||||
n | ||||
* (if it even rasterises!), nor that they have any differing effect other | ||||
* than to enable some form of antialiasing. In the case of glyph rendering | ||||
, | ||||
* @CAIRO_ANTIALIAS_FAST and @CAIRO_ANTIALIAS_GOOD will be mapped to | ||||
* @CAIRO_ANTIALIAS_GRAY, with @CAIRO_ANTALIAS_BEST being equivalent to | ||||
* @CAIRO_ANTIALIAS_SUBPIXEL. | ||||
* | ||||
* The interpretation of @CAIRO_ANTIALIAS_DEFAULT is left entirely up to | ||||
* the backend, typically this will be similar to @CAIRO_ANTIALIAS_GOOD. | ||||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_antialias { | typedef enum _cairo_antialias { | |||
CAIRO_ANTIALIAS_DEFAULT, | CAIRO_ANTIALIAS_DEFAULT, | |||
/* method */ | ||||
CAIRO_ANTIALIAS_NONE, | CAIRO_ANTIALIAS_NONE, | |||
CAIRO_ANTIALIAS_GRAY, | CAIRO_ANTIALIAS_GRAY, | |||
CAIRO_ANTIALIAS_SUBPIXEL | CAIRO_ANTIALIAS_SUBPIXEL, | |||
/* hints */ | ||||
CAIRO_ANTIALIAS_FAST, | ||||
CAIRO_ANTIALIAS_GOOD, | ||||
CAIRO_ANTIALIAS_BEST | ||||
} cairo_antialias_t; | } cairo_antialias_t; | |||
cairo_public void | cairo_public void | |||
cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias); | cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias); | |||
/** | /** | |||
* cairo_fill_rule_t: | * cairo_fill_rule_t: | |||
* @CAIRO_FILL_RULE_WINDING: If the path crosses the ray from | * @CAIRO_FILL_RULE_WINDING: If the path crosses the ray from | |||
* left-to-right, counts +1. If the path crosses the ray | * left-to-right, counts +1. If the path crosses the ray | |||
* from right to left, counts -1. (Left and right are determined | * from right to left, counts -1. (Left and right are determined | |||
* from the perspective of looking along the ray from the starting | * from the perspective of looking along the ray from the starting | |||
* point.) If the total count is non-zero, the point will be filled. | * point.) If the total count is non-zero, the point will be filled. (Since 1.0) | |||
* @CAIRO_FILL_RULE_EVEN_ODD: Counts the total number of | * @CAIRO_FILL_RULE_EVEN_ODD: Counts the total number of | |||
* intersections, without regard to the orientation of the contour. If | * intersections, without regard to the orientation of the contour. If | |||
* the total number of intersections is odd, the point will be | * the total number of intersections is odd, the point will be | |||
* filled. | * filled. (Since 1.0) | |||
* | * | |||
* #cairo_fill_rule_t is used to select how paths are filled. For both | * #cairo_fill_rule_t is used to select how paths are filled. For both | |||
* fill rules, whether or not a point is included in the fill is | * fill rules, whether or not a point is included in the fill is | |||
* determined by taking a ray from that point to infinity and looking | * determined by taking a ray from that point to infinity and looking | |||
* at intersections with the path. The ray can be in any direction, | * at intersections with the path. The ray can be in any direction, | |||
* as long as it doesn't pass through the end point of a segment | * as long as it doesn't pass through the end point of a segment | |||
* or have a tricky intersection such as intersecting tangent to the path. | * or have a tricky intersection such as intersecting tangent to the path. | |||
* (Note that filling is not actually implemented in this way. This | * (Note that filling is not actually implemented in this way. This | |||
* is just a description of the rule that is applied.) | * is just a description of the rule that is applied.) | |||
* | * | |||
* The default fill rule is %CAIRO_FILL_RULE_WINDING. | * The default fill rule is %CAIRO_FILL_RULE_WINDING. | |||
* | * | |||
* New entries may be added in future versions. | * New entries may be added in future versions. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_fill_rule { | typedef enum _cairo_fill_rule { | |||
CAIRO_FILL_RULE_WINDING, | CAIRO_FILL_RULE_WINDING, | |||
CAIRO_FILL_RULE_EVEN_ODD | CAIRO_FILL_RULE_EVEN_ODD | |||
} cairo_fill_rule_t; | } cairo_fill_rule_t; | |||
cairo_public void | cairo_public void | |||
cairo_set_fill_rule (cairo_t *cr, cairo_fill_rule_t fill_rule); | cairo_set_fill_rule (cairo_t *cr, cairo_fill_rule_t fill_rule); | |||
cairo_public void | cairo_public void | |||
cairo_set_line_width (cairo_t *cr, double width); | cairo_set_line_width (cairo_t *cr, double width); | |||
/** | /** | |||
* cairo_line_cap_t: | * cairo_line_cap_t: | |||
* @CAIRO_LINE_CAP_BUTT: start(stop) the line exactly at the start(end) poi | * @CAIRO_LINE_CAP_BUTT: start(stop) the line exactly at the start(end) poi | |||
nt | nt (Since 1.0) | |||
* @CAIRO_LINE_CAP_ROUND: use a round ending, the center of the circle is t | * @CAIRO_LINE_CAP_ROUND: use a round ending, the center of the circle is t | |||
he end point | he end point (Since 1.0) | |||
* @CAIRO_LINE_CAP_SQUARE: use squared ending, the center of the square is | * @CAIRO_LINE_CAP_SQUARE: use squared ending, the center of the square is | |||
the end point | the end point (Since 1.0) | |||
* | * | |||
* Specifies how to render the endpoints of the path when stroking. | * Specifies how to render the endpoints of the path when stroking. | |||
* | * | |||
* The default line cap style is %CAIRO_LINE_CAP_BUTT. | * The default line cap style is %CAIRO_LINE_CAP_BUTT. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_line_cap { | typedef enum _cairo_line_cap { | |||
CAIRO_LINE_CAP_BUTT, | CAIRO_LINE_CAP_BUTT, | |||
CAIRO_LINE_CAP_ROUND, | CAIRO_LINE_CAP_ROUND, | |||
CAIRO_LINE_CAP_SQUARE | CAIRO_LINE_CAP_SQUARE | |||
} cairo_line_cap_t; | } cairo_line_cap_t; | |||
cairo_public void | cairo_public void | |||
cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap); | cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap); | |||
/** | /** | |||
* cairo_line_join_t: | * cairo_line_join_t: | |||
* @CAIRO_LINE_JOIN_MITER: use a sharp (angled) corner, see | * @CAIRO_LINE_JOIN_MITER: use a sharp (angled) corner, see | |||
* cairo_set_miter_limit() | * cairo_set_miter_limit() (Since 1.0) | |||
* @CAIRO_LINE_JOIN_ROUND: use a rounded join, the center of the circle is the | * @CAIRO_LINE_JOIN_ROUND: use a rounded join, the center of the circle is the | |||
* joint point | * joint point (Since 1.0) | |||
* @CAIRO_LINE_JOIN_BEVEL: use a cut-off join, the join is cut off at half | * @CAIRO_LINE_JOIN_BEVEL: use a cut-off join, the join is cut off at half | |||
* the line width from the joint point | * the line width from the joint point (Since 1.0) | |||
* | * | |||
* Specifies how to render the junction of two lines when stroking. | * Specifies how to render the junction of two lines when stroking. | |||
* | * | |||
* The default line join style is %CAIRO_LINE_JOIN_MITER. | * The default line join style is %CAIRO_LINE_JOIN_MITER. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_line_join { | typedef enum _cairo_line_join { | |||
CAIRO_LINE_JOIN_MITER, | CAIRO_LINE_JOIN_MITER, | |||
CAIRO_LINE_JOIN_ROUND, | CAIRO_LINE_JOIN_ROUND, | |||
CAIRO_LINE_JOIN_BEVEL | CAIRO_LINE_JOIN_BEVEL | |||
} cairo_line_join_t; | } cairo_line_join_t; | |||
cairo_public void | cairo_public void | |||
cairo_set_line_join (cairo_t *cr, cairo_line_join_t line_join); | cairo_set_line_join (cairo_t *cr, cairo_line_join_t line_join); | |||
skipping to change at line 903 | skipping to change at line 1030 | |||
* resolution. A #cairo_scaled_font_t is most useful for low-level font | * resolution. A #cairo_scaled_font_t is most useful for low-level font | |||
* usage where a library or application wants to cache a reference | * usage where a library or application wants to cache a reference | |||
* to a scaled font to speed up the computation of metrics. | * to a scaled font to speed up the computation of metrics. | |||
* | * | |||
* There are various types of scaled fonts, depending on the | * There are various types of scaled fonts, depending on the | |||
* <firstterm>font backend</firstterm> they use. The type of a | * <firstterm>font backend</firstterm> they use. The type of a | |||
* scaled font can be queried using cairo_scaled_font_get_type(). | * scaled font can be queried using cairo_scaled_font_get_type(). | |||
* | * | |||
* Memory management of #cairo_scaled_font_t is done with | * Memory management of #cairo_scaled_font_t is done with | |||
* cairo_scaled_font_reference() and cairo_scaled_font_destroy(). | * cairo_scaled_font_reference() and cairo_scaled_font_destroy(). | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct _cairo_scaled_font cairo_scaled_font_t; | typedef struct _cairo_scaled_font cairo_scaled_font_t; | |||
/** | /** | |||
* cairo_font_face_t: | * cairo_font_face_t: | |||
* | * | |||
* A #cairo_font_face_t specifies all aspects of a font other | * A #cairo_font_face_t specifies all aspects of a font other | |||
* than the size or font matrix (a font matrix is used to distort | * than the size or font matrix (a font matrix is used to distort | |||
* a font by sheering it or scaling it unequally in the two | * a font by sheering it or scaling it unequally in the two | |||
* directions) . A font face can be set on a #cairo_t by using | * directions) . A font face can be set on a #cairo_t by using | |||
* cairo_set_font_face(); the size and font matrix are set with | * cairo_set_font_face(); the size and font matrix are set with | |||
* cairo_set_font_size() and cairo_set_font_matrix(). | * cairo_set_font_size() and cairo_set_font_matrix(). | |||
* | * | |||
* There are various types of font faces, depending on the | * There are various types of font faces, depending on the | |||
* <firstterm>font backend</firstterm> they use. The type of a | * <firstterm>font backend</firstterm> they use. The type of a | |||
* font face can be queried using cairo_font_face_get_type(). | * font face can be queried using cairo_font_face_get_type(). | |||
* | * | |||
* Memory management of #cairo_font_face_t is done with | * Memory management of #cairo_font_face_t is done with | |||
* cairo_font_face_reference() and cairo_font_face_destroy(). | * cairo_font_face_reference() and cairo_font_face_destroy(). | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct _cairo_font_face cairo_font_face_t; | typedef struct _cairo_font_face cairo_font_face_t; | |||
/** | /** | |||
* cairo_glyph_t: | * cairo_glyph_t: | |||
* @index: glyph index in the font. The exact interpretation of the | * @index: glyph index in the font. The exact interpretation of the | |||
* glyph index depends on the font technology being used. | * glyph index depends on the font technology being used. | |||
* @x: the offset in the X direction between the origin used for | * @x: the offset in the X direction between the origin used for | |||
* drawing or measuring the string and the origin of this glyph. | * drawing or measuring the string and the origin of this glyph. | |||
* @y: the offset in the Y direction between the origin used for | * @y: the offset in the Y direction between the origin used for | |||
skipping to change at line 948 | skipping to change at line 1079 | |||
* (alternates to be used in different contexts, for example), or a | * (alternates to be used in different contexts, for example), or a | |||
* glyph can be a <firstterm>ligature</firstterm> of multiple | * glyph can be a <firstterm>ligature</firstterm> of multiple | |||
* characters. Cairo doesn't expose any way of converting input text | * characters. Cairo doesn't expose any way of converting input text | |||
* into glyphs, so in order to use the Cairo interfaces that take | * into glyphs, so in order to use the Cairo interfaces that take | |||
* arrays of glyphs, you must directly access the appropriate | * arrays of glyphs, you must directly access the appropriate | |||
* underlying font system. | * underlying font system. | |||
* | * | |||
* Note that the offsets given by @x and @y are not cumulative. When | * Note that the offsets given by @x and @y are not cumulative. When | |||
* drawing or measuring text, each glyph is individually positioned | * drawing or measuring text, each glyph is individually positioned | |||
* with respect to the overall origin | * with respect to the overall origin | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct { | typedef struct { | |||
unsigned long index; | unsigned long index; | |||
double x; | double x; | |||
double y; | double y; | |||
} cairo_glyph_t; | } cairo_glyph_t; | |||
cairo_public cairo_glyph_t * | cairo_public cairo_glyph_t * | |||
cairo_glyph_allocate (int num_glyphs); | cairo_glyph_allocate (int num_glyphs); | |||
skipping to change at line 995 | skipping to change at line 1128 | |||
cairo_public cairo_text_cluster_t * | cairo_public cairo_text_cluster_t * | |||
cairo_text_cluster_allocate (int num_clusters); | cairo_text_cluster_allocate (int num_clusters); | |||
cairo_public void | cairo_public void | |||
cairo_text_cluster_free (cairo_text_cluster_t *clusters); | cairo_text_cluster_free (cairo_text_cluster_t *clusters); | |||
/** | /** | |||
* cairo_text_cluster_flags_t: | * cairo_text_cluster_flags_t: | |||
* @CAIRO_TEXT_CLUSTER_FLAG_BACKWARD: The clusters in the cluster array | * @CAIRO_TEXT_CLUSTER_FLAG_BACKWARD: The clusters in the cluster array | |||
* map to glyphs in the glyph array from end to start. | * map to glyphs in the glyph array from end to start. (Since 1.8) | |||
* | * | |||
* Specifies properties of a text cluster mapping. | * Specifies properties of a text cluster mapping. | |||
* | * | |||
* Since: 1.8 | * Since: 1.8 | |||
**/ | **/ | |||
typedef enum _cairo_text_cluster_flags { | typedef enum _cairo_text_cluster_flags { | |||
CAIRO_TEXT_CLUSTER_FLAG_BACKWARD = 0x00000001 | CAIRO_TEXT_CLUSTER_FLAG_BACKWARD = 0x00000001 | |||
} cairo_text_cluster_flags_t; | } cairo_text_cluster_flags_t; | |||
/** | /** | |||
skipping to change at line 1031 | skipping to change at line 1164 | |||
* | * | |||
* The #cairo_text_extents_t structure stores the extents of a single | * The #cairo_text_extents_t structure stores the extents of a single | |||
* glyph or a string of glyphs in user-space coordinates. Because text | * glyph or a string of glyphs in user-space coordinates. Because text | |||
* extents are in user-space coordinates, they are mostly, but not | * extents are in user-space coordinates, they are mostly, but not | |||
* entirely, independent of the current transformation matrix. If you call | * entirely, independent of the current transformation matrix. If you call | |||
* <literal>cairo_scale(cr, 2.0, 2.0)</literal>, text will | * <literal>cairo_scale(cr, 2.0, 2.0)</literal>, text will | |||
* be drawn twice as big, but the reported text extents will not be | * be drawn twice as big, but the reported text extents will not be | |||
* doubled. They will change slightly due to hinting (so you can't | * doubled. They will change slightly due to hinting (so you can't | |||
* assume that metrics are independent of the transformation matrix), | * assume that metrics are independent of the transformation matrix), | |||
* but otherwise will remain unchanged. | * but otherwise will remain unchanged. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct { | typedef struct { | |||
double x_bearing; | double x_bearing; | |||
double y_bearing; | double y_bearing; | |||
double width; | double width; | |||
double height; | double height; | |||
double x_advance; | double x_advance; | |||
double y_advance; | double y_advance; | |||
} cairo_text_extents_t; | } cairo_text_extents_t; | |||
skipping to change at line 1053 | skipping to change at line 1188 | |||
* @ascent: the distance that the font extends above the baseline. | * @ascent: the distance that the font extends above the baseline. | |||
* Note that this is not always exactly equal to the maximum | * Note that this is not always exactly equal to the maximum | |||
* of the extents of all the glyphs in the font, but rather | * of the extents of all the glyphs in the font, but rather | |||
* is picked to express the font designer's intent as to | * is picked to express the font designer's intent as to | |||
* how the font should align with elements above it. | * how the font should align with elements above it. | |||
* @descent: the distance that the font extends below the baseline. | * @descent: the distance that the font extends below the baseline. | |||
* This value is positive for typical fonts that include | * This value is positive for typical fonts that include | |||
* portions below the baseline. Note that this is not always | * portions below the baseline. Note that this is not always | |||
* exactly equal to the maximum of the extents of all the | * exactly equal to the maximum of the extents of all the | |||
* glyphs in the font, but rather is picked to express the | * glyphs in the font, but rather is picked to express the | |||
* font designer's intent as to how the the font should | * font designer's intent as to how the font should | |||
* align with elements below it. | * align with elements below it. | |||
* @height: the recommended vertical distance between baselines when | * @height: the recommended vertical distance between baselines when | |||
* setting consecutive lines of text with the font. This | * setting consecutive lines of text with the font. This | |||
* is greater than @ascent+@descent by a | * is greater than @ascent+@descent by a | |||
* quantity known as the <firstterm>line spacing</firstterm> | * quantity known as the <firstterm>line spacing</firstterm> | |||
* or <firstterm>external leading</firstterm>. When space | * or <firstterm>external leading</firstterm>. When space | |||
* is at a premium, most fonts can be set with only | * is at a premium, most fonts can be set with only | |||
* a distance of @ascent+@descent between lines. | * a distance of @ascent+@descent between lines. | |||
* @max_x_advance: the maximum distance in the X direction that | * @max_x_advance: the maximum distance in the X direction that | |||
* the the origin is advanced for any glyph in the font. | * the origin is advanced for any glyph in the font. | |||
* @max_y_advance: the maximum distance in the Y direction that | * @max_y_advance: the maximum distance in the Y direction that | |||
* the the origin is advanced for any glyph in the font. | * the origin is advanced for any glyph in the font. | |||
* this will be zero for normal fonts used for horizontal | * This will be zero for normal fonts used for horizontal | |||
* writing. (The scripts of East Asia are sometimes written | * writing. (The scripts of East Asia are sometimes written | |||
* vertically.) | * vertically.) | |||
* | * | |||
* The #cairo_font_extents_t structure stores metric information for | * The #cairo_font_extents_t structure stores metric information for | |||
* a font. Values are given in the current user-space coordinate | * a font. Values are given in the current user-space coordinate | |||
* system. | * system. | |||
* | * | |||
* Because font metrics are in user-space coordinates, they are | * Because font metrics are in user-space coordinates, they are | |||
* mostly, but not entirely, independent of the current transformation | * mostly, but not entirely, independent of the current transformation | |||
* matrix. If you call <literal>cairo_scale(cr, 2.0, 2.0)</literal>, | * matrix. If you call <literal>cairo_scale(cr, 2.0, 2.0)</literal>, | |||
* text will be drawn twice as big, but the reported text extents will | * text will be drawn twice as big, but the reported text extents will | |||
* not be doubled. They will change slightly due to hinting (so you | * not be doubled. They will change slightly due to hinting (so you | |||
* can't assume that metrics are independent of the transformation | * can't assume that metrics are independent of the transformation | |||
* matrix), but otherwise will remain unchanged. | * matrix), but otherwise will remain unchanged. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct { | typedef struct { | |||
double ascent; | double ascent; | |||
double descent; | double descent; | |||
double height; | double height; | |||
double max_x_advance; | double max_x_advance; | |||
double max_y_advance; | double max_y_advance; | |||
} cairo_font_extents_t; | } cairo_font_extents_t; | |||
/** | /** | |||
* cairo_font_slant_t: | * cairo_font_slant_t: | |||
* @CAIRO_FONT_SLANT_NORMAL: Upright font style | * @CAIRO_FONT_SLANT_NORMAL: Upright font style, since 1.0 | |||
* @CAIRO_FONT_SLANT_ITALIC: Italic font style | * @CAIRO_FONT_SLANT_ITALIC: Italic font style, since 1.0 | |||
* @CAIRO_FONT_SLANT_OBLIQUE: Oblique font style | * @CAIRO_FONT_SLANT_OBLIQUE: Oblique font style, since 1.0 | |||
* | * | |||
* Specifies variants of a font face based on their slant. | * Specifies variants of a font face based on their slant. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_font_slant { | typedef enum _cairo_font_slant { | |||
CAIRO_FONT_SLANT_NORMAL, | CAIRO_FONT_SLANT_NORMAL, | |||
CAIRO_FONT_SLANT_ITALIC, | CAIRO_FONT_SLANT_ITALIC, | |||
CAIRO_FONT_SLANT_OBLIQUE | CAIRO_FONT_SLANT_OBLIQUE | |||
} cairo_font_slant_t; | } cairo_font_slant_t; | |||
/** | /** | |||
* cairo_font_weight_t: | * cairo_font_weight_t: | |||
* @CAIRO_FONT_WEIGHT_NORMAL: Normal font weight | * @CAIRO_FONT_WEIGHT_NORMAL: Normal font weight, since 1.0 | |||
* @CAIRO_FONT_WEIGHT_BOLD: Bold font weight | * @CAIRO_FONT_WEIGHT_BOLD: Bold font weight, since 1.0 | |||
* | * | |||
* Specifies variants of a font face based on their weight. | * Specifies variants of a font face based on their weight. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_font_weight { | typedef enum _cairo_font_weight { | |||
CAIRO_FONT_WEIGHT_NORMAL, | CAIRO_FONT_WEIGHT_NORMAL, | |||
CAIRO_FONT_WEIGHT_BOLD | CAIRO_FONT_WEIGHT_BOLD | |||
} cairo_font_weight_t; | } cairo_font_weight_t; | |||
/** | /** | |||
* cairo_subpixel_order_t: | * cairo_subpixel_order_t: | |||
* @CAIRO_SUBPIXEL_ORDER_DEFAULT: Use the default subpixel order for | * @CAIRO_SUBPIXEL_ORDER_DEFAULT: Use the default subpixel order for | |||
* for the target device | * for the target device, since 1.0 | |||
* @CAIRO_SUBPIXEL_ORDER_RGB: Subpixel elements are arranged horizontally | * @CAIRO_SUBPIXEL_ORDER_RGB: Subpixel elements are arranged horizontally | |||
* with red at the left | * with red at the left, since 1.0 | |||
* @CAIRO_SUBPIXEL_ORDER_BGR: Subpixel elements are arranged horizontally | * @CAIRO_SUBPIXEL_ORDER_BGR: Subpixel elements are arranged horizontally | |||
* with blue at the left | * with blue at the left, since 1.0 | |||
* @CAIRO_SUBPIXEL_ORDER_VRGB: Subpixel elements are arranged vertically | * @CAIRO_SUBPIXEL_ORDER_VRGB: Subpixel elements are arranged vertically | |||
* with red at the top | * with red at the top, since 1.0 | |||
* @CAIRO_SUBPIXEL_ORDER_VBGR: Subpixel elements are arranged vertically | * @CAIRO_SUBPIXEL_ORDER_VBGR: Subpixel elements are arranged vertically | |||
* with blue at the top | * with blue at the top, since 1.0 | |||
* | * | |||
* The subpixel order specifies the order of color elements within | * The subpixel order specifies the order of color elements within | |||
* each pixel on the display device when rendering with an | * each pixel on the display device when rendering with an | |||
* antialiasing mode of %CAIRO_ANTIALIAS_SUBPIXEL. | * antialiasing mode of %CAIRO_ANTIALIAS_SUBPIXEL. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_subpixel_order { | typedef enum _cairo_subpixel_order { | |||
CAIRO_SUBPIXEL_ORDER_DEFAULT, | CAIRO_SUBPIXEL_ORDER_DEFAULT, | |||
CAIRO_SUBPIXEL_ORDER_RGB, | CAIRO_SUBPIXEL_ORDER_RGB, | |||
CAIRO_SUBPIXEL_ORDER_BGR, | CAIRO_SUBPIXEL_ORDER_BGR, | |||
CAIRO_SUBPIXEL_ORDER_VRGB, | CAIRO_SUBPIXEL_ORDER_VRGB, | |||
CAIRO_SUBPIXEL_ORDER_VBGR | CAIRO_SUBPIXEL_ORDER_VBGR | |||
} cairo_subpixel_order_t; | } cairo_subpixel_order_t; | |||
/** | /** | |||
* cairo_hint_style_t: | * cairo_hint_style_t: | |||
* @CAIRO_HINT_STYLE_DEFAULT: Use the default hint style for | * @CAIRO_HINT_STYLE_DEFAULT: Use the default hint style for | |||
* font backend and target device | * font backend and target device, since 1.0 | |||
* @CAIRO_HINT_STYLE_NONE: Do not hint outlines | * @CAIRO_HINT_STYLE_NONE: Do not hint outlines, since 1.0 | |||
* @CAIRO_HINT_STYLE_SLIGHT: Hint outlines slightly to improve | * @CAIRO_HINT_STYLE_SLIGHT: Hint outlines slightly to improve | |||
* contrast while retaining good fidelity to the original | * contrast while retaining good fidelity to the original | |||
* shapes. | * shapes, since 1.0 | |||
* @CAIRO_HINT_STYLE_MEDIUM: Hint outlines with medium strength | * @CAIRO_HINT_STYLE_MEDIUM: Hint outlines with medium strength | |||
* giving a compromise between fidelity to the original shapes | * giving a compromise between fidelity to the original shapes | |||
* and contrast | * and contrast, since 1.0 | |||
* @CAIRO_HINT_STYLE_FULL: Hint outlines to maximize contrast | * @CAIRO_HINT_STYLE_FULL: Hint outlines to maximize contrast, since 1.0 | |||
* | * | |||
* Specifies the type of hinting to do on font outlines. Hinting | * Specifies the type of hinting to do on font outlines. Hinting | |||
* is the process of fitting outlines to the pixel grid in order | * is the process of fitting outlines to the pixel grid in order | |||
* to improve the appearance of the result. Since hinting outlines | * to improve the appearance of the result. Since hinting outlines | |||
* involves distorting them, it also reduces the faithfulness | * involves distorting them, it also reduces the faithfulness | |||
* to the original outline shapes. Not all of the outline hinting | * to the original outline shapes. Not all of the outline hinting | |||
* styles are supported by all font backends. | * styles are supported by all font backends. | |||
* | * | |||
* New entries may be added in future versions. | * New entries may be added in future versions. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_hint_style { | typedef enum _cairo_hint_style { | |||
CAIRO_HINT_STYLE_DEFAULT, | CAIRO_HINT_STYLE_DEFAULT, | |||
CAIRO_HINT_STYLE_NONE, | CAIRO_HINT_STYLE_NONE, | |||
CAIRO_HINT_STYLE_SLIGHT, | CAIRO_HINT_STYLE_SLIGHT, | |||
CAIRO_HINT_STYLE_MEDIUM, | CAIRO_HINT_STYLE_MEDIUM, | |||
CAIRO_HINT_STYLE_FULL | CAIRO_HINT_STYLE_FULL | |||
} cairo_hint_style_t; | } cairo_hint_style_t; | |||
/** | /** | |||
* cairo_hint_metrics_t: | * cairo_hint_metrics_t: | |||
* @CAIRO_HINT_METRICS_DEFAULT: Hint metrics in the default | * @CAIRO_HINT_METRICS_DEFAULT: Hint metrics in the default | |||
* manner for the font backend and target device | * manner for the font backend and target device, since 1.0 | |||
* @CAIRO_HINT_METRICS_OFF: Do not hint font metrics | * @CAIRO_HINT_METRICS_OFF: Do not hint font metrics, since 1.0 | |||
* @CAIRO_HINT_METRICS_ON: Hint font metrics | * @CAIRO_HINT_METRICS_ON: Hint font metrics, since 1.0 | |||
* | * | |||
* Specifies whether to hint font metrics; hinting font metrics | * Specifies whether to hint font metrics; hinting font metrics | |||
* means quantizing them so that they are integer values in | * means quantizing them so that they are integer values in | |||
* device space. Doing this improves the consistency of | * device space. Doing this improves the consistency of | |||
* letter and line spacing, however it also means that text | * letter and line spacing, however it also means that text | |||
* will be laid out differently at different zoom factors. | * will be laid out differently at different zoom factors. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_hint_metrics { | typedef enum _cairo_hint_metrics { | |||
CAIRO_HINT_METRICS_DEFAULT, | CAIRO_HINT_METRICS_DEFAULT, | |||
CAIRO_HINT_METRICS_OFF, | CAIRO_HINT_METRICS_OFF, | |||
CAIRO_HINT_METRICS_ON | CAIRO_HINT_METRICS_ON | |||
} cairo_hint_metrics_t; | } cairo_hint_metrics_t; | |||
/** | /** | |||
* cairo_font_options_t: | * cairo_font_options_t: | |||
* | * | |||
* An opaque structure holding all options that are used when | * An opaque structure holding all options that are used when | |||
* rendering fonts. | * rendering fonts. | |||
* | * | |||
* Individual features of a #cairo_font_options_t can be set or | * Individual features of a #cairo_font_options_t can be set or | |||
* accessed using functions named | * accessed using functions named | |||
* cairo_font_options_set_<emphasis>feature_name</emphasis> and | * <function>cairo_font_options_set_<emphasis>feature_name</emphasis>()</fu | |||
* cairo_font_options_get_<emphasis>feature_name</emphasis>, like | nction> and | |||
* <function>cairo_font_options_get_<emphasis>feature_name</emphasis>()</fu | ||||
nction>, like | ||||
* cairo_font_options_set_antialias() and | * cairo_font_options_set_antialias() and | |||
* cairo_font_options_get_antialias(). | * cairo_font_options_get_antialias(). | |||
* | * | |||
* New features may be added to a #cairo_font_options_t in the | * New features may be added to a #cairo_font_options_t in the | |||
* future. For this reason, cairo_font_options_copy(), | * future. For this reason, cairo_font_options_copy(), | |||
* cairo_font_options_equal(), cairo_font_options_merge(), and | * cairo_font_options_equal(), cairo_font_options_merge(), and | |||
* cairo_font_options_hash() should be used to copy, check | * cairo_font_options_hash() should be used to copy, check | |||
* for equality, merge, or compute a hash value of | * for equality, merge, or compute a hash value of | |||
* #cairo_font_options_t objects. | * #cairo_font_options_t objects. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct _cairo_font_options cairo_font_options_t; | typedef struct _cairo_font_options cairo_font_options_t; | |||
cairo_public cairo_font_options_t * | cairo_public cairo_font_options_t * | |||
cairo_font_options_create (void); | cairo_font_options_create (void); | |||
cairo_public cairo_font_options_t * | cairo_public cairo_font_options_t * | |||
cairo_font_options_copy (const cairo_font_options_t *original); | cairo_font_options_copy (const cairo_font_options_t *original); | |||
cairo_public void | cairo_public void | |||
skipping to change at line 1352 | skipping to change at line 1501 | |||
cairo_font_face_destroy (cairo_font_face_t *font_face); | cairo_font_face_destroy (cairo_font_face_t *font_face); | |||
cairo_public unsigned int | cairo_public unsigned int | |||
cairo_font_face_get_reference_count (cairo_font_face_t *font_face); | cairo_font_face_get_reference_count (cairo_font_face_t *font_face); | |||
cairo_public cairo_status_t | cairo_public cairo_status_t | |||
cairo_font_face_status (cairo_font_face_t *font_face); | cairo_font_face_status (cairo_font_face_t *font_face); | |||
/** | /** | |||
* cairo_font_type_t: | * cairo_font_type_t: | |||
* @CAIRO_FONT_TYPE_TOY: The font was created using cairo's toy font api | * @CAIRO_FONT_TYPE_TOY: The font was created using cairo's toy font api (S | |||
* @CAIRO_FONT_TYPE_FT: The font is of type FreeType | ince: 1.2) | |||
* @CAIRO_FONT_TYPE_WIN32: The font is of type Win32 | * @CAIRO_FONT_TYPE_FT: The font is of type FreeType (Since: 1.2) | |||
* @CAIRO_FONT_TYPE_QUARTZ: The font is of type Quartz (Since: 1.6) | * @CAIRO_FONT_TYPE_WIN32: The font is of type Win32 (Since: 1.2) | |||
* @CAIRO_FONT_TYPE_QUARTZ: The font is of type Quartz (Since: 1.6, in 1.2 | ||||
and | ||||
* 1.4 it was named CAIRO_FONT_TYPE_ATSUI) | ||||
* @CAIRO_FONT_TYPE_USER: The font was create using cairo's user font api ( Since: 1.8) | * @CAIRO_FONT_TYPE_USER: The font was create using cairo's user font api ( Since: 1.8) | |||
* | * | |||
* #cairo_font_type_t is used to describe the type of a given font | * #cairo_font_type_t is used to describe the type of a given font | |||
* face or scaled font. The font types are also known as "font | * face or scaled font. The font types are also known as "font | |||
* backends" within cairo. | * backends" within cairo. | |||
* | * | |||
* The type of a font face is determined by the function used to | * The type of a font face is determined by the function used to | |||
* create it, which will generally be of the form | * create it, which will generally be of the form | |||
* cairo_<emphasis>type</emphasis>_font_face_create(). The font face type c | * <function>cairo_<emphasis>type</emphasis>_font_face_create(<!-- -->)</fu | |||
an be queried | nction>. | |||
* with cairo_font_face_get_type() | * The font face type can be queried with cairo_font_face_get_type() | |||
* | * | |||
* The various #cairo_font_face_t functions can be used with a font face | * The various #cairo_font_face_t functions can be used with a font face | |||
* of any type. | * of any type. | |||
* | * | |||
* The type of a scaled font is determined by the type of the font | * The type of a scaled font is determined by the type of the font | |||
* face passed to cairo_scaled_font_create(). The scaled font type can | * face passed to cairo_scaled_font_create(). The scaled font type can | |||
* be queried with cairo_scaled_font_get_type() | * be queried with cairo_scaled_font_get_type() | |||
* | * | |||
* The various #cairo_scaled_font_t functions can be used with scaled | * The various #cairo_scaled_font_t functions can be used with scaled | |||
* fonts of any type, but some font backends also provide | * fonts of any type, but some font backends also provide | |||
* type-specific functions that must only be called with a scaled font | * type-specific functions that must only be called with a scaled font | |||
* of the appropriate type. These functions have names that begin with | * of the appropriate type. These functions have names that begin with | |||
* cairo_<emphasis>type</emphasis>_scaled_font() such as cairo_ft_scaled_fo | * <function>cairo_<emphasis>type</emphasis>_scaled_font(<!-- -->)</functio | |||
nt_lock_face(). | n> | |||
* such as cairo_ft_scaled_font_lock_face(). | ||||
* | * | |||
* The behavior of calling a type-specific function with a scaled font | * The behavior of calling a type-specific function with a scaled font | |||
* of the wrong type is undefined. | * of the wrong type is undefined. | |||
* | * | |||
* New entries may be added in future versions. | * New entries may be added in future versions. | |||
* | * | |||
* Since: 1.2 | * Since: 1.2 | |||
**/ | **/ | |||
typedef enum _cairo_font_type { | typedef enum _cairo_font_type { | |||
CAIRO_FONT_TYPE_TOY, | CAIRO_FONT_TYPE_TOY, | |||
skipping to change at line 1622 | skipping to change at line 1773 | |||
* as well as complex <firstterm>shaping</firstterm> required for scripts l ike | * as well as complex <firstterm>shaping</firstterm> required for scripts l ike | |||
* Arabic and Indic. | * Arabic and Indic. | |||
* | * | |||
* The @num_glyphs argument is preset to the number of glyph entries availa ble | * The @num_glyphs argument is preset to the number of glyph entries availa ble | |||
* in the @glyphs buffer. If the @glyphs buffer is %NULL, the value of | * in the @glyphs buffer. If the @glyphs buffer is %NULL, the value of | |||
* @num_glyphs will be zero. If the provided glyph array is too short for | * @num_glyphs will be zero. If the provided glyph array is too short for | |||
* the conversion (or for convenience), a new glyph array may be allocated | * the conversion (or for convenience), a new glyph array may be allocated | |||
* using cairo_glyph_allocate() and placed in @glyphs. Upon return, | * using cairo_glyph_allocate() and placed in @glyphs. Upon return, | |||
* @num_glyphs should contain the number of generated glyphs. If the value | * @num_glyphs should contain the number of generated glyphs. If the value | |||
* @glyphs points at has changed after the call, the caller will free the | * @glyphs points at has changed after the call, the caller will free the | |||
* allocated glyph array using cairo_glyph_free(). | * allocated glyph array using cairo_glyph_free(). The caller will also fr | |||
ee | ||||
* the original value of @glyphs, so the callback shouldn't do so. | ||||
* The callback should populate the glyph indices and positions (in font sp ace) | * The callback should populate the glyph indices and positions (in font sp ace) | |||
* assuming that the text is to be shown at the origin. | * assuming that the text is to be shown at the origin. | |||
* | * | |||
* If @clusters is not %NULL, @num_clusters and @cluster_flags are also | * If @clusters is not %NULL, @num_clusters and @cluster_flags are also | |||
* non-%NULL, and cluster mapping should be computed. The semantics of how | * non-%NULL, and cluster mapping should be computed. The semantics of how | |||
* cluster array allocation works is similar to the glyph array. That is, | * cluster array allocation works is similar to the glyph array. That is, | |||
* if @clusters initially points to a non-%NULL value, that array may be us ed | * if @clusters initially points to a non-%NULL value, that array may be us ed | |||
* as a cluster buffer, and @num_clusters points to the number of cluster | * as a cluster buffer, and @num_clusters points to the number of cluster | |||
* entries available there. If the provided cluster array is too short for | * entries available there. If the provided cluster array is too short for | |||
* the conversion (or for convenience), a new cluster array may be allocate d | * the conversion (or for convenience), a new cluster array may be allocate d | |||
* using cairo_text_cluster_allocate() and placed in @clusters. Upon retur | * using cairo_text_cluster_allocate() and placed in @clusters. In this ca | |||
n, | se, | |||
* @num_clusters should contain the number of generated clusters. | * the original value of @clusters will still be freed by the caller. Upon | |||
* return, @num_clusters should contain the number of generated clusters. | ||||
* If the value @clusters points at has changed after the call, the caller | * If the value @clusters points at has changed after the call, the caller | |||
* will free the allocated cluster array using cairo_text_cluster_free(). | * will free the allocated cluster array using cairo_text_cluster_free(). | |||
* | * | |||
* The callback is optional. If @num_glyphs is negative upon | * The callback is optional. If @num_glyphs is negative upon | |||
* the callback returning or if the return value | * the callback returning or if the return value | |||
* is %CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, the unicode_to_glyph callbac k | * is %CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, the unicode_to_glyph callbac k | |||
* is tried. See #cairo_user_scaled_font_unicode_to_glyph_func_t. | * is tried. See #cairo_user_scaled_font_unicode_to_glyph_func_t. | |||
* | * | |||
* Note: While cairo does not impose any limitation on glyph indices, | * Note: While cairo does not impose any limitation on glyph indices, | |||
* some applications may assume that a glyph index fits in a 16-bit | * some applications may assume that a glyph index fits in a 16-bit | |||
skipping to change at line 1792 | skipping to change at line 1945 | |||
cairo_get_matrix (cairo_t *cr, cairo_matrix_t *matrix); | cairo_get_matrix (cairo_t *cr, cairo_matrix_t *matrix); | |||
cairo_public cairo_surface_t * | cairo_public cairo_surface_t * | |||
cairo_get_target (cairo_t *cr); | cairo_get_target (cairo_t *cr); | |||
cairo_public cairo_surface_t * | cairo_public cairo_surface_t * | |||
cairo_get_group_target (cairo_t *cr); | cairo_get_group_target (cairo_t *cr); | |||
/** | /** | |||
* cairo_path_data_type_t: | * cairo_path_data_type_t: | |||
* @CAIRO_PATH_MOVE_TO: A move-to operation | * @CAIRO_PATH_MOVE_TO: A move-to operation, since 1.0 | |||
* @CAIRO_PATH_LINE_TO: A line-to operation | * @CAIRO_PATH_LINE_TO: A line-to operation, since 1.0 | |||
* @CAIRO_PATH_CURVE_TO: A curve-to operation | * @CAIRO_PATH_CURVE_TO: A curve-to operation, since 1.0 | |||
* @CAIRO_PATH_CLOSE_PATH: A close-path operation | * @CAIRO_PATH_CLOSE_PATH: A close-path operation, since 1.0 | |||
* | * | |||
* #cairo_path_data_t is used to describe the type of one portion | * #cairo_path_data_t is used to describe the type of one portion | |||
* of a path when represented as a #cairo_path_t. | * of a path when represented as a #cairo_path_t. | |||
* See #cairo_path_data_t for details. | * See #cairo_path_data_t for details. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_path_data_type { | typedef enum _cairo_path_data_type { | |||
CAIRO_PATH_MOVE_TO, | CAIRO_PATH_MOVE_TO, | |||
CAIRO_PATH_LINE_TO, | CAIRO_PATH_LINE_TO, | |||
CAIRO_PATH_CURVE_TO, | CAIRO_PATH_CURVE_TO, | |||
CAIRO_PATH_CLOSE_PATH | CAIRO_PATH_CLOSE_PATH | |||
} cairo_path_data_type_t; | } cairo_path_data_type_t; | |||
/** | /** | |||
* cairo_path_data_t: | * cairo_path_data_t: | |||
skipping to change at line 1873 | skipping to change at line 2028 | |||
* cairo_path_destroy (path); | * cairo_path_destroy (path); | |||
* </programlisting></informalexample> | * </programlisting></informalexample> | |||
* | * | |||
* As of cairo 1.4, cairo does not mind if there are more elements in | * As of cairo 1.4, cairo does not mind if there are more elements in | |||
* a portion of the path than needed. Such elements can be used by | * a portion of the path than needed. Such elements can be used by | |||
* users of the cairo API to hold extra values in the path data | * users of the cairo API to hold extra values in the path data | |||
* structure. For this reason, it is recommended that applications | * structure. For this reason, it is recommended that applications | |||
* always use <literal>data->header.length</literal> to | * always use <literal>data->header.length</literal> to | |||
* iterate over the path data, instead of hardcoding the number of | * iterate over the path data, instead of hardcoding the number of | |||
* elements for each element type. | * elements for each element type. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef union _cairo_path_data_t cairo_path_data_t; | typedef union _cairo_path_data_t cairo_path_data_t; | |||
union _cairo_path_data_t { | union _cairo_path_data_t { | |||
struct { | struct { | |||
cairo_path_data_type_t type; | cairo_path_data_type_t type; | |||
int length; | int length; | |||
} header; | } header; | |||
struct { | struct { | |||
double x, y; | double x, y; | |||
} point; | } point; | |||
skipping to change at line 1903 | skipping to change at line 2060 | |||
* cairo_copy_path_flat() as well the input value for | * cairo_copy_path_flat() as well the input value for | |||
* cairo_append_path(). | * cairo_append_path(). | |||
* | * | |||
* See #cairo_path_data_t for hints on how to iterate over the | * See #cairo_path_data_t for hints on how to iterate over the | |||
* actual data within the path. | * actual data within the path. | |||
* | * | |||
* The num_data member gives the number of elements in the data | * The num_data member gives the number of elements in the data | |||
* array. This number is larger than the number of independent path | * array. This number is larger than the number of independent path | |||
* portions (defined in #cairo_path_data_type_t), since the data | * portions (defined in #cairo_path_data_type_t), since the data | |||
* includes both headers and coordinates for each portion. | * includes both headers and coordinates for each portion. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef struct cairo_path { | typedef struct cairo_path { | |||
cairo_status_t status; | cairo_status_t status; | |||
cairo_path_data_t *data; | cairo_path_data_t *data; | |||
int num_data; | int num_data; | |||
} cairo_path_t; | } cairo_path_t; | |||
cairo_public cairo_path_t * | cairo_public cairo_path_t * | |||
cairo_copy_path (cairo_t *cr); | cairo_copy_path (cairo_t *cr); | |||
skipping to change at line 1938 | skipping to change at line 2097 | |||
cairo_public const char * | cairo_public const char * | |||
cairo_status_to_string (cairo_status_t status); | cairo_status_to_string (cairo_status_t status); | |||
/* Backend device manipulation */ | /* Backend device manipulation */ | |||
cairo_public cairo_device_t * | cairo_public cairo_device_t * | |||
cairo_device_reference (cairo_device_t *device); | cairo_device_reference (cairo_device_t *device); | |||
/** | /** | |||
* cairo_device_type_t: | * cairo_device_type_t: | |||
* @CAIRO_DEVICE_TYPE_DRM: The surface is of type Direct Render Manager | * @CAIRO_DEVICE_TYPE_DRM: The device is of type Direct Render Manager, sin | |||
* @CAIRO_DEVICE_TYPE_GL: The surface is of type OpenGL | ce 1.10 | |||
* @CAIRO_DEVICE_TYPE_SCRIPT: The surface is of type script | * @CAIRO_DEVICE_TYPE_GL: The device is of type OpenGL, since 1.10 | |||
* @CAIRO_DEVICE_TYPE_XCB: The surface is of type xcb | * @CAIRO_DEVICE_TYPE_SCRIPT: The device is of type script, since 1.10 | |||
* @CAIRO_DEVICE_TYPE_XLIB: The surface is of type xlib | * @CAIRO_DEVICE_TYPE_XCB: The device is of type xcb, since 1.10 | |||
* @CAIRO_DEVICE_TYPE_XML: The surface is of type XML | * @CAIRO_DEVICE_TYPE_XLIB: The device is of type xlib, since 1.10 | |||
* cairo_surface_create_for_rectangle() | * @CAIRO_DEVICE_TYPE_XML: The device is of type XML, since 1.10 | |||
* @CAIRO_DEVICE_TYPE_COGL: The device is of type cogl, since 1.12 | ||||
* @CAIRO_DEVICE_TYPE_WIN32: The device is of type win32, since 1.12 | ||||
* @CAIRO_DEVICE_TYPE_INVALID: The device is invalid, since 1.10 | ||||
* | * | |||
* #cairo_device_type_t is used to describe the type of a given | * #cairo_device_type_t is used to describe the type of a given | |||
* device. The devices types are also known as "backends" within cairo. | * device. The devices types are also known as "backends" within cairo. | |||
* | * | |||
* The device type can be queried with cairo_device_get_type() | * The device type can be queried with cairo_device_get_type() | |||
* | * | |||
* The various #cairo_device_t functions can be used with surfaces of | * The various #cairo_device_t functions can be used with devices of | |||
* any type, but some backends also provide type-specific functions | * any type, but some backends also provide type-specific functions | |||
* that must only be called with a device of the appropriate | * that must only be called with a device of the appropriate | |||
* type. These functions have names that begin with | * type. These functions have names that begin with | |||
* cairo_<emphasis>type</emphasis>_device<!-- --> such as cairo_xcb_device_ | * <literal>cairo_<emphasis>type</emphasis>_device</literal> such as | |||
debug_set_render_version(). | * cairo_xcb_device_debug_cap_xrender_version(). | |||
* | * | |||
* The behavior of calling a type-specific function with a surface of | * The behavior of calling a type-specific function with a device of | |||
* the wrong type is undefined. | * the wrong type is undefined. | |||
* | * | |||
* New entries may be added in future versions. | * New entries may be added in future versions. | |||
* | * | |||
* Since: 1.10 | * Since: 1.10 | |||
**/ | **/ | |||
typedef enum _cairo_device_type { | typedef enum _cairo_device_type { | |||
CAIRO_DEVICE_TYPE_DRM, | CAIRO_DEVICE_TYPE_DRM, | |||
CAIRO_DEVICE_TYPE_GL, | CAIRO_DEVICE_TYPE_GL, | |||
CAIRO_DEVICE_TYPE_SCRIPT, | CAIRO_DEVICE_TYPE_SCRIPT, | |||
CAIRO_DEVICE_TYPE_XCB, | CAIRO_DEVICE_TYPE_XCB, | |||
CAIRO_DEVICE_TYPE_XLIB, | CAIRO_DEVICE_TYPE_XLIB, | |||
CAIRO_DEVICE_TYPE_XML | CAIRO_DEVICE_TYPE_XML, | |||
CAIRO_DEVICE_TYPE_COGL, | ||||
CAIRO_DEVICE_TYPE_WIN32, | ||||
CAIRO_DEVICE_TYPE_INVALID = -1 | ||||
} cairo_device_type_t; | } cairo_device_type_t; | |||
cairo_public cairo_device_type_t | cairo_public cairo_device_type_t | |||
cairo_device_get_type (cairo_device_t *device); | cairo_device_get_type (cairo_device_t *device); | |||
cairo_public cairo_status_t | cairo_public cairo_status_t | |||
cairo_device_status (cairo_device_t *device); | cairo_device_status (cairo_device_t *device); | |||
cairo_public cairo_status_t | cairo_public cairo_status_t | |||
cairo_device_acquire (cairo_device_t *device); | cairo_device_acquire (cairo_device_t *device); | |||
skipping to change at line 2016 | skipping to change at line 2182 | |||
/* Surface manipulation */ | /* Surface manipulation */ | |||
cairo_public cairo_surface_t * | cairo_public cairo_surface_t * | |||
cairo_surface_create_similar (cairo_surface_t *other, | cairo_surface_create_similar (cairo_surface_t *other, | |||
cairo_content_t content, | cairo_content_t content, | |||
int width, | int width, | |||
int height); | int height); | |||
cairo_public cairo_surface_t * | cairo_public cairo_surface_t * | |||
cairo_surface_create_similar_image (cairo_surface_t *other, | ||||
cairo_format_t format, | ||||
int width, | ||||
int height); | ||||
cairo_public cairo_surface_t * | ||||
cairo_surface_map_to_image (cairo_surface_t *surface, | ||||
const cairo_rectangle_int_t *extents); | ||||
cairo_public void | ||||
cairo_surface_unmap_image (cairo_surface_t *surface, | ||||
cairo_surface_t *image); | ||||
cairo_public cairo_surface_t * | ||||
cairo_surface_create_for_rectangle (cairo_surface_t *target, | cairo_surface_create_for_rectangle (cairo_surface_t *target, | |||
double x, | double x, | |||
double y, | double y, | |||
double width, | double width, | |||
double height); | double height); | |||
typedef enum { | ||||
CAIRO_SURFACE_OBSERVER_NORMAL = 0, | ||||
CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS = 0x1 | ||||
} cairo_surface_observer_mode_t; | ||||
cairo_public cairo_surface_t * | ||||
cairo_surface_create_observer (cairo_surface_t *target, | ||||
cairo_surface_observer_mode_t mode); | ||||
typedef void (*cairo_surface_observer_callback_t) (cairo_surface_t *observe | ||||
r, | ||||
cairo_surface_t *target, | ||||
void *data); | ||||
cairo_public cairo_status_t | ||||
cairo_surface_observer_add_paint_callback (cairo_surface_t *abstract_surfac | ||||
e, | ||||
cairo_surface_observer_callback_t | ||||
func, | ||||
void *data); | ||||
cairo_public cairo_status_t | ||||
cairo_surface_observer_add_mask_callback (cairo_surface_t *abstract_surface | ||||
, | ||||
cairo_surface_observer_callback_t | ||||
func, | ||||
void *data); | ||||
cairo_public cairo_status_t | ||||
cairo_surface_observer_add_fill_callback (cairo_surface_t *abstract_surface | ||||
, | ||||
cairo_surface_observer_callback_t | ||||
func, | ||||
void *data); | ||||
cairo_public cairo_status_t | ||||
cairo_surface_observer_add_stroke_callback (cairo_surface_t *abstract_surfa | ||||
ce, | ||||
cairo_surface_observer_callback_ | ||||
t func, | ||||
void *data); | ||||
cairo_public cairo_status_t | ||||
cairo_surface_observer_add_glyphs_callback (cairo_surface_t *abstract_surfa | ||||
ce, | ||||
cairo_surface_observer_callback_ | ||||
t func, | ||||
void *data); | ||||
cairo_public cairo_status_t | ||||
cairo_surface_observer_add_flush_callback (cairo_surface_t *abstract_surfac | ||||
e, | ||||
cairo_surface_observer_callback_t | ||||
func, | ||||
void *data); | ||||
cairo_public cairo_status_t | ||||
cairo_surface_observer_add_finish_callback (cairo_surface_t *abstract_surfa | ||||
ce, | ||||
cairo_surface_observer_callback_ | ||||
t func, | ||||
void *data); | ||||
cairo_public cairo_status_t | ||||
cairo_surface_observer_print (cairo_surface_t *surface, | ||||
cairo_write_func_t write_func, | ||||
void *closure); | ||||
cairo_public double | ||||
cairo_surface_observer_elapsed (cairo_surface_t *surface); | ||||
cairo_public cairo_status_t | ||||
cairo_device_observer_print (cairo_device_t *device, | ||||
cairo_write_func_t write_func, | ||||
void *closure); | ||||
cairo_public double | ||||
cairo_device_observer_elapsed (cairo_device_t *device); | ||||
cairo_public double | ||||
cairo_device_observer_paint_elapsed (cairo_device_t *device); | ||||
cairo_public double | ||||
cairo_device_observer_mask_elapsed (cairo_device_t *device); | ||||
cairo_public double | ||||
cairo_device_observer_fill_elapsed (cairo_device_t *device); | ||||
cairo_public double | ||||
cairo_device_observer_stroke_elapsed (cairo_device_t *device); | ||||
cairo_public double | ||||
cairo_device_observer_glyphs_elapsed (cairo_device_t *device); | ||||
cairo_public cairo_surface_t * | cairo_public cairo_surface_t * | |||
cairo_surface_reference (cairo_surface_t *surface); | cairo_surface_reference (cairo_surface_t *surface); | |||
cairo_public void | cairo_public void | |||
cairo_surface_finish (cairo_surface_t *surface); | cairo_surface_finish (cairo_surface_t *surface); | |||
cairo_public void | cairo_public void | |||
cairo_surface_destroy (cairo_surface_t *surface); | cairo_surface_destroy (cairo_surface_t *surface); | |||
cairo_public cairo_device_t * | cairo_public cairo_device_t * | |||
cairo_surface_get_device (cairo_surface_t *surface); | cairo_surface_get_device (cairo_surface_t *surface); | |||
cairo_public unsigned int | cairo_public unsigned int | |||
cairo_surface_get_reference_count (cairo_surface_t *surface); | cairo_surface_get_reference_count (cairo_surface_t *surface); | |||
cairo_public cairo_status_t | cairo_public cairo_status_t | |||
cairo_surface_status (cairo_surface_t *surface); | cairo_surface_status (cairo_surface_t *surface); | |||
/** | /** | |||
* cairo_surface_type_t: | * cairo_surface_type_t: | |||
* @CAIRO_SURFACE_TYPE_IMAGE: The surface is of type image | * @CAIRO_SURFACE_TYPE_IMAGE: The surface is of type image, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_PDF: The surface is of type pdf | * @CAIRO_SURFACE_TYPE_PDF: The surface is of type pdf, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_PS: The surface is of type ps | * @CAIRO_SURFACE_TYPE_PS: The surface is of type ps, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_XLIB: The surface is of type xlib | * @CAIRO_SURFACE_TYPE_XLIB: The surface is of type xlib, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_XCB: The surface is of type xcb | * @CAIRO_SURFACE_TYPE_XCB: The surface is of type xcb, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_GLITZ: The surface is of type glitz | * @CAIRO_SURFACE_TYPE_GLITZ: The surface is of type glitz, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_QUARTZ: The surface is of type quartz | * @CAIRO_SURFACE_TYPE_QUARTZ: The surface is of type quartz, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_WIN32: The surface is of type win32 | * @CAIRO_SURFACE_TYPE_WIN32: The surface is of type win32, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_BEOS: The surface is of type beos | * @CAIRO_SURFACE_TYPE_BEOS: The surface is of type beos, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_DIRECTFB: The surface is of type directfb | * @CAIRO_SURFACE_TYPE_DIRECTFB: The surface is of type directfb, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_SVG: The surface is of type svg | * @CAIRO_SURFACE_TYPE_SVG: The surface is of type svg, since 1.2 | |||
* @CAIRO_SURFACE_TYPE_OS2: The surface is of type os2 | * @CAIRO_SURFACE_TYPE_OS2: The surface is of type os2, since 1.4 | |||
* @CAIRO_SURFACE_TYPE_WIN32_PRINTING: The surface is a win32 printing surf | * @CAIRO_SURFACE_TYPE_WIN32_PRINTING: The surface is a win32 printing surf | |||
ace | ace, since 1.6 | |||
* @CAIRO_SURFACE_TYPE_QUARTZ_IMAGE: The surface is of type quartz_image | * @CAIRO_SURFACE_TYPE_QUARTZ_IMAGE: The surface is of type quartz_image, s | |||
ince 1.6 | ||||
* @CAIRO_SURFACE_TYPE_SCRIPT: The surface is of type script, since 1.10 | * @CAIRO_SURFACE_TYPE_SCRIPT: The surface is of type script, since 1.10 | |||
* @CAIRO_SURFACE_TYPE_QT: The surface is of type Qt, since 1.10 | * @CAIRO_SURFACE_TYPE_QT: The surface is of type Qt, since 1.10 | |||
* @CAIRO_SURFACE_TYPE_RECORDING: The surface is of type recording, since 1 .10 | * @CAIRO_SURFACE_TYPE_RECORDING: The surface is of type recording, since 1 .10 | |||
* @CAIRO_SURFACE_TYPE_VG: The surface is a OpenVG surface, since 1.10 | * @CAIRO_SURFACE_TYPE_VG: The surface is a OpenVG surface, since 1.10 | |||
* @CAIRO_SURFACE_TYPE_GL: The surface is of type OpenGL, since 1.10 | * @CAIRO_SURFACE_TYPE_GL: The surface is of type OpenGL, since 1.10 | |||
* @CAIRO_SURFACE_TYPE_DRM: The surface is of type Direct Render Manager, s ince 1.10 | * @CAIRO_SURFACE_TYPE_DRM: The surface is of type Direct Render Manager, s ince 1.10 | |||
* @CAIRO_SURFACE_TYPE_TEE: The surface is of type 'tee' (a multiplexing su rface), since 1.10 | * @CAIRO_SURFACE_TYPE_TEE: The surface is of type 'tee' (a multiplexing su rface), since 1.10 | |||
* @CAIRO_SURFACE_TYPE_XML: The surface is of type XML (for debugging), sin ce 1.10 | * @CAIRO_SURFACE_TYPE_XML: The surface is of type XML (for debugging), sin ce 1.10 | |||
* @CAIRO_SURFACE_TYPE_SKIA: The surface is of type Skia, since 1.10 | * @CAIRO_SURFACE_TYPE_SKIA: The surface is of type Skia, since 1.10 | |||
* @CAIRO_SURFACE_TYPE_SUBSURFACE: The surface is a subsurface created with | * @CAIRO_SURFACE_TYPE_SUBSURFACE: The surface is a subsurface created with | |||
* cairo_surface_create_for_rectangle(), since 1.10 | * cairo_surface_create_for_rectangle(), since 1.10 | |||
* @CAIRO_SURFACE_TYPE_COGL: This surface is of type Cogl, since 1.12 | ||||
* | * | |||
* #cairo_surface_type_t is used to describe the type of a given | * #cairo_surface_type_t is used to describe the type of a given | |||
* surface. The surface types are also known as "backends" or "surface | * surface. The surface types are also known as "backends" or "surface | |||
* backends" within cairo. | * backends" within cairo. | |||
* | * | |||
* The type of a surface is determined by the function used to create | * The type of a surface is determined by the function used to create | |||
* it, which will generally be of the form cairo_<emphasis>type</emphasis>_ | * it, which will generally be of the form | |||
surface_create(), | * <function>cairo_<emphasis>type</emphasis>_surface_create(<!-- -->)</func | |||
tion>, | ||||
* (though see cairo_surface_create_similar() as well). | * (though see cairo_surface_create_similar() as well). | |||
* | * | |||
* The surface type can be queried with cairo_surface_get_type() | * The surface type can be queried with cairo_surface_get_type() | |||
* | * | |||
* The various #cairo_surface_t functions can be used with surfaces of | * The various #cairo_surface_t functions can be used with surfaces of | |||
* any type, but some backends also provide type-specific functions | * any type, but some backends also provide type-specific functions | |||
* that must only be called with a surface of the appropriate | * that must only be called with a surface of the appropriate | |||
* type. These functions have names that begin with | * type. These functions have names that begin with | |||
* cairo_<emphasis>type</emphasis>_surface<!-- --> such as cairo_image_surf ace_get_width(). | * <literal>cairo_<emphasis>type</emphasis>_surface</literal> such as cairo _image_surface_get_width(). | |||
* | * | |||
* The behavior of calling a type-specific function with a surface of | * The behavior of calling a type-specific function with a surface of | |||
* the wrong type is undefined. | * the wrong type is undefined. | |||
* | * | |||
* New entries may be added in future versions. | * New entries may be added in future versions. | |||
* | * | |||
* Since: 1.2 | * Since: 1.2 | |||
**/ | **/ | |||
typedef enum _cairo_surface_type { | typedef enum _cairo_surface_type { | |||
CAIRO_SURFACE_TYPE_IMAGE, | CAIRO_SURFACE_TYPE_IMAGE, | |||
skipping to change at line 2115 | skipping to change at line 2375 | |||
CAIRO_SURFACE_TYPE_QUARTZ_IMAGE, | CAIRO_SURFACE_TYPE_QUARTZ_IMAGE, | |||
CAIRO_SURFACE_TYPE_SCRIPT, | CAIRO_SURFACE_TYPE_SCRIPT, | |||
CAIRO_SURFACE_TYPE_QT, | CAIRO_SURFACE_TYPE_QT, | |||
CAIRO_SURFACE_TYPE_RECORDING, | CAIRO_SURFACE_TYPE_RECORDING, | |||
CAIRO_SURFACE_TYPE_VG, | CAIRO_SURFACE_TYPE_VG, | |||
CAIRO_SURFACE_TYPE_GL, | CAIRO_SURFACE_TYPE_GL, | |||
CAIRO_SURFACE_TYPE_DRM, | CAIRO_SURFACE_TYPE_DRM, | |||
CAIRO_SURFACE_TYPE_TEE, | CAIRO_SURFACE_TYPE_TEE, | |||
CAIRO_SURFACE_TYPE_XML, | CAIRO_SURFACE_TYPE_XML, | |||
CAIRO_SURFACE_TYPE_SKIA, | CAIRO_SURFACE_TYPE_SKIA, | |||
CAIRO_SURFACE_TYPE_SUBSURFACE | CAIRO_SURFACE_TYPE_SUBSURFACE, | |||
CAIRO_SURFACE_TYPE_COGL | ||||
} cairo_surface_type_t; | } cairo_surface_type_t; | |||
cairo_public cairo_surface_type_t | cairo_public cairo_surface_type_t | |||
cairo_surface_get_type (cairo_surface_t *surface); | cairo_surface_get_type (cairo_surface_t *surface); | |||
cairo_public cairo_content_t | cairo_public cairo_content_t | |||
cairo_surface_get_content (cairo_surface_t *surface); | cairo_surface_get_content (cairo_surface_t *surface); | |||
#if CAIRO_HAS_PNG_FUNCTIONS | #if CAIRO_HAS_PNG_FUNCTIONS | |||
skipping to change at line 2151 | skipping to change at line 2412 | |||
cairo_public cairo_status_t | cairo_public cairo_status_t | |||
cairo_surface_set_user_data (cairo_surface_t *surface, | cairo_surface_set_user_data (cairo_surface_t *surface, | |||
const cairo_user_data_key_t *key, | const cairo_user_data_key_t *key, | |||
void *user_data, | void *user_data, | |||
cairo_destroy_func_t destroy); | cairo_destroy_func_t destroy); | |||
#define CAIRO_MIME_TYPE_JPEG "image/jpeg" | #define CAIRO_MIME_TYPE_JPEG "image/jpeg" | |||
#define CAIRO_MIME_TYPE_PNG "image/png" | #define CAIRO_MIME_TYPE_PNG "image/png" | |||
#define CAIRO_MIME_TYPE_JP2 "image/jp2" | #define CAIRO_MIME_TYPE_JP2 "image/jp2" | |||
#define CAIRO_MIME_TYPE_URI "text/x-uri" | #define CAIRO_MIME_TYPE_URI "text/x-uri" | |||
#define CAIRO_MIME_TYPE_UNIQUE_ID "application/x-cairo.uuid" | ||||
cairo_public void | cairo_public void | |||
cairo_surface_get_mime_data (cairo_surface_t *surface, | cairo_surface_get_mime_data (cairo_surface_t *surface, | |||
const char *mime_type, | const char *mime_type, | |||
const unsigned char **data, | const unsigned char **data, | |||
unsigned long *length); | unsigned long *length); | |||
cairo_public cairo_status_t | cairo_public cairo_status_t | |||
cairo_surface_set_mime_data (cairo_surface_t *surface, | cairo_surface_set_mime_data (cairo_surface_t *surface, | |||
const char *mime_type, | const char *mime_type, | |||
const unsigned char *data, | const unsigned char *data, | |||
unsigned long length, | unsigned long length, | |||
cairo_destroy_func_t destroy, | cairo_destroy_func_t destroy, | |||
void *closure); | void *closure); | |||
cairo_public cairo_bool_t | ||||
cairo_surface_supports_mime_type (cairo_surface_t *surface, | ||||
const char *mime_type); | ||||
cairo_public void | cairo_public void | |||
cairo_surface_get_font_options (cairo_surface_t *surface, | cairo_surface_get_font_options (cairo_surface_t *surface, | |||
cairo_font_options_t *options); | cairo_font_options_t *options); | |||
cairo_public void | cairo_public void | |||
cairo_surface_flush (cairo_surface_t *surface); | cairo_surface_flush (cairo_surface_t *surface); | |||
cairo_public void | cairo_public void | |||
cairo_surface_mark_dirty (cairo_surface_t *surface); | cairo_surface_mark_dirty (cairo_surface_t *surface); | |||
skipping to change at line 2214 | skipping to change at line 2480 | |||
cairo_surface_copy_page (cairo_surface_t *surface); | cairo_surface_copy_page (cairo_surface_t *surface); | |||
cairo_public void | cairo_public void | |||
cairo_surface_show_page (cairo_surface_t *surface); | cairo_surface_show_page (cairo_surface_t *surface); | |||
cairo_public cairo_bool_t | cairo_public cairo_bool_t | |||
cairo_surface_has_show_text_glyphs (cairo_surface_t *surface); | cairo_surface_has_show_text_glyphs (cairo_surface_t *surface); | |||
/* Image-surface functions */ | /* Image-surface functions */ | |||
/** | ||||
* cairo_format_t: | ||||
* @CAIRO_FORMAT_INVALID: no such format exists or is supported. | ||||
* @CAIRO_FORMAT_ARGB32: each pixel is a 32-bit quantity, with | ||||
* alpha in the upper 8 bits, then red, then green, then blue. | ||||
* The 32-bit quantities are stored native-endian. Pre-multiplied | ||||
* alpha is used. (That is, 50% transparent red is 0x80800000, | ||||
* not 0x80ff0000.) | ||||
* @CAIRO_FORMAT_RGB24: each pixel is a 32-bit quantity, with | ||||
* the upper 8 bits unused. Red, Green, and Blue are stored | ||||
* in the remaining 24 bits in that order. | ||||
* @CAIRO_FORMAT_A8: each pixel is a 8-bit quantity holding | ||||
* an alpha value. | ||||
* @CAIRO_FORMAT_A1: each pixel is a 1-bit quantity holding | ||||
* an alpha value. Pixels are packed together into 32-bit | ||||
* quantities. The ordering of the bits matches the | ||||
* endianess of the platform. On a big-endian machine, the | ||||
* first pixel is in the uppermost bit, on a little-endian | ||||
* machine the first pixel is in the least-significant bit. | ||||
* @CAIRO_FORMAT_RGB16_565: each pixel is a 16-bit quantity | ||||
* with red in the upper 5 bits, then green in the middle | ||||
* 6 bits, and blue in the lower 5 bits. | ||||
* | ||||
* #cairo_format_t is used to identify the memory format of | ||||
* image data. | ||||
* | ||||
* New entries may be added in future versions. | ||||
**/ | ||||
typedef enum _cairo_format { | ||||
CAIRO_FORMAT_INVALID = -1, | ||||
CAIRO_FORMAT_ARGB32 = 0, | ||||
CAIRO_FORMAT_RGB24 = 1, | ||||
CAIRO_FORMAT_A8 = 2, | ||||
CAIRO_FORMAT_A1 = 3, | ||||
CAIRO_FORMAT_RGB16_565 = 4 | ||||
} cairo_format_t; | ||||
cairo_public cairo_surface_t * | cairo_public cairo_surface_t * | |||
cairo_image_surface_create (cairo_format_t format, | cairo_image_surface_create (cairo_format_t format, | |||
int width, | int width, | |||
int height); | int height); | |||
cairo_public int | cairo_public int | |||
cairo_format_stride_for_width (cairo_format_t format, | cairo_format_stride_for_width (cairo_format_t format, | |||
int width); | int width); | |||
cairo_public cairo_surface_t * | cairo_public cairo_surface_t * | |||
skipping to change at line 2306 | skipping to change at line 2535 | |||
cairo_recording_surface_create (cairo_content_t content, | cairo_recording_surface_create (cairo_content_t content, | |||
const cairo_rectangle_t *extents); | const cairo_rectangle_t *extents); | |||
cairo_public void | cairo_public void | |||
cairo_recording_surface_ink_extents (cairo_surface_t *surface, | cairo_recording_surface_ink_extents (cairo_surface_t *surface, | |||
double *x0, | double *x0, | |||
double *y0, | double *y0, | |||
double *width, | double *width, | |||
double *height); | double *height); | |||
cairo_public cairo_bool_t | ||||
cairo_recording_surface_get_extents (cairo_surface_t *surface, | ||||
cairo_rectangle_t *extents); | ||||
/* raster-source pattern (callback) functions */ | ||||
/** | ||||
* cairo_raster_source_acquire_func_t: | ||||
* @pattern: the pattern being rendered from | ||||
* @callback_data: the user data supplied during creation | ||||
* @target: the rendering target surface | ||||
* @extents: rectangular region of interest in pixels in sample space | ||||
* | ||||
* #cairo_raster_source_acquire_func_t is the type of function which is | ||||
* called when a pattern is being rendered from. It should create a surface | ||||
* that provides the pixel data for the region of interest as defined by | ||||
* extents, though the surface itself does not have to be limited to that | ||||
* area. For convenience the surface should probably be of image type, | ||||
* created with cairo_surface_create_similar_image() for the target (which | ||||
* enables the number of copies to be reduced during transfer to the | ||||
* device). Another option, might be to return a similar surface to the | ||||
* target for explicit handling by the application of a set of cached sourc | ||||
es | ||||
* on the device. The region of sample data provided should be defined usin | ||||
g | ||||
* cairo_surface_set_device_offset() to specify the top-left corner of the | ||||
* sample data (along with width and height of the surface). | ||||
* | ||||
* Returns: a #cairo_surface_t | ||||
* | ||||
* Since: 1.12 | ||||
**/ | ||||
typedef cairo_surface_t * | ||||
(*cairo_raster_source_acquire_func_t) (cairo_pattern_t *pattern, | ||||
void *callback_data, | ||||
cairo_surface_t *target, | ||||
const cairo_rectangle_int_t *extents) | ||||
; | ||||
/** | ||||
* cairo_raster_source_release_func_t: | ||||
* @pattern: the pattern being rendered from | ||||
* @callback_data: the user data supplied during creation | ||||
* @surface: the surface created during acquire | ||||
* | ||||
* #cairo_raster_source_release_func_t is the type of function which is | ||||
* called when the pixel data is no longer being access by the pattern | ||||
* for the rendering operation. Typically this function will simply | ||||
* destroy the surface created during acquire. | ||||
* | ||||
* Since: 1.12 | ||||
**/ | ||||
typedef void | ||||
(*cairo_raster_source_release_func_t) (cairo_pattern_t *pattern, | ||||
void *callback_data, | ||||
cairo_surface_t *surface); | ||||
/** | ||||
* cairo_raster_source_snapshot_func_t: | ||||
* @pattern: the pattern being rendered from | ||||
* @callback_data: the user data supplied during creation | ||||
* | ||||
* #cairo_raster_source_snapshot_func_t is the type of function which is | ||||
* called when the pixel data needs to be preserved for later use | ||||
* during printing. This pattern will be accessed again later, and it | ||||
* is expected to provide the pixel data that was current at the time | ||||
* of snapshotting. | ||||
* | ||||
* Return value: CAIRO_STATUS_SUCCESS on success, or one of the | ||||
* #cairo_status_t error codes for failure. | ||||
* | ||||
* Since: 1.12 | ||||
**/ | ||||
typedef cairo_status_t | ||||
(*cairo_raster_source_snapshot_func_t) (cairo_pattern_t *pattern, | ||||
void *callback_data); | ||||
/** | ||||
* cairo_raster_source_copy_func_t: | ||||
* @pattern: the #cairo_pattern_t that was copied to | ||||
* @callback_data: the user data supplied during creation | ||||
* @other: the #cairo_pattern_t being used as the source for the copy | ||||
* | ||||
* #cairo_raster_source_copy_func_t is the type of function which is | ||||
* called when the pattern gets copied as a normal part of rendering. | ||||
* | ||||
* Return value: CAIRO_STATUS_SUCCESS on success, or one of the | ||||
* #cairo_status_t error codes for failure. | ||||
* | ||||
* Since: 1.12 | ||||
**/ | ||||
typedef cairo_status_t | ||||
(*cairo_raster_source_copy_func_t) (cairo_pattern_t *pattern, | ||||
void *callback_data, | ||||
const cairo_pattern_t *other); | ||||
/** | ||||
* cairo_raster_source_finish_func_t: | ||||
* @pattern: the pattern being rendered from | ||||
* @callback_data: the user data supplied during creation | ||||
* | ||||
* #cairo_raster_source_finish_func_t is the type of function which is | ||||
* called when the pattern (or a copy thereof) is no longer required. | ||||
* | ||||
* Since: 1.12 | ||||
**/ | ||||
typedef void | ||||
(*cairo_raster_source_finish_func_t) (cairo_pattern_t *pattern, | ||||
void *callback_data); | ||||
cairo_public cairo_pattern_t * | ||||
cairo_pattern_create_raster_source (void *user_data, | ||||
cairo_content_t content, | ||||
int width, int height); | ||||
cairo_public void | ||||
cairo_raster_source_pattern_set_callback_data (cairo_pattern_t *pattern, | ||||
void *data); | ||||
cairo_public void * | ||||
cairo_raster_source_pattern_get_callback_data (cairo_pattern_t *pattern); | ||||
cairo_public void | ||||
cairo_raster_source_pattern_set_acquire (cairo_pattern_t *pattern, | ||||
cairo_raster_source_acquire_func_t | ||||
acquire, | ||||
cairo_raster_source_release_func_t | ||||
release); | ||||
cairo_public void | ||||
cairo_raster_source_pattern_get_acquire (cairo_pattern_t *pattern, | ||||
cairo_raster_source_acquire_func_t | ||||
*acquire, | ||||
cairo_raster_source_release_func_t | ||||
*release); | ||||
cairo_public void | ||||
cairo_raster_source_pattern_set_snapshot (cairo_pattern_t *pattern, | ||||
cairo_raster_source_snapshot_func_ | ||||
t snapshot); | ||||
cairo_public cairo_raster_source_snapshot_func_t | ||||
cairo_raster_source_pattern_get_snapshot (cairo_pattern_t *pattern); | ||||
cairo_public void | ||||
cairo_raster_source_pattern_set_copy (cairo_pattern_t *pattern, | ||||
cairo_raster_source_copy_func_t copy); | ||||
cairo_public cairo_raster_source_copy_func_t | ||||
cairo_raster_source_pattern_get_copy (cairo_pattern_t *pattern); | ||||
cairo_public void | ||||
cairo_raster_source_pattern_set_finish (cairo_pattern_t *pattern, | ||||
cairo_raster_source_finish_func_t fi | ||||
nish); | ||||
cairo_public cairo_raster_source_finish_func_t | ||||
cairo_raster_source_pattern_get_finish (cairo_pattern_t *pattern); | ||||
/* Pattern creation functions */ | /* Pattern creation functions */ | |||
cairo_public cairo_pattern_t * | cairo_public cairo_pattern_t * | |||
cairo_pattern_create_rgb (double red, double green, double blue); | cairo_pattern_create_rgb (double red, double green, double blue); | |||
cairo_public cairo_pattern_t * | cairo_public cairo_pattern_t * | |||
cairo_pattern_create_rgba (double red, double green, double blue, | cairo_pattern_create_rgba (double red, double green, double blue, | |||
double alpha); | double alpha); | |||
cairo_public cairo_pattern_t * | cairo_public cairo_pattern_t * | |||
skipping to change at line 2327 | skipping to change at line 2705 | |||
cairo_public cairo_pattern_t * | cairo_public cairo_pattern_t * | |||
cairo_pattern_create_linear (double x0, double y0, | cairo_pattern_create_linear (double x0, double y0, | |||
double x1, double y1); | double x1, double y1); | |||
cairo_public cairo_pattern_t * | cairo_public cairo_pattern_t * | |||
cairo_pattern_create_radial (double cx0, double cy0, double radius0, | cairo_pattern_create_radial (double cx0, double cy0, double radius0, | |||
double cx1, double cy1, double radius1); | double cx1, double cy1, double radius1); | |||
cairo_public cairo_pattern_t * | cairo_public cairo_pattern_t * | |||
cairo_pattern_create_mesh (void); | ||||
cairo_public cairo_pattern_t * | ||||
cairo_pattern_reference (cairo_pattern_t *pattern); | cairo_pattern_reference (cairo_pattern_t *pattern); | |||
cairo_public void | cairo_public void | |||
cairo_pattern_destroy (cairo_pattern_t *pattern); | cairo_pattern_destroy (cairo_pattern_t *pattern); | |||
cairo_public unsigned int | cairo_public unsigned int | |||
cairo_pattern_get_reference_count (cairo_pattern_t *pattern); | cairo_pattern_get_reference_count (cairo_pattern_t *pattern); | |||
cairo_public cairo_status_t | cairo_public cairo_status_t | |||
cairo_pattern_status (cairo_pattern_t *pattern); | cairo_pattern_status (cairo_pattern_t *pattern); | |||
skipping to change at line 2351 | skipping to change at line 2732 | |||
cairo_public cairo_status_t | cairo_public cairo_status_t | |||
cairo_pattern_set_user_data (cairo_pattern_t *pattern, | cairo_pattern_set_user_data (cairo_pattern_t *pattern, | |||
const cairo_user_data_key_t *key, | const cairo_user_data_key_t *key, | |||
void *user_data, | void *user_data, | |||
cairo_destroy_func_t destroy); | cairo_destroy_func_t destroy); | |||
/** | /** | |||
* cairo_pattern_type_t: | * cairo_pattern_type_t: | |||
* @CAIRO_PATTERN_TYPE_SOLID: The pattern is a solid (uniform) | * @CAIRO_PATTERN_TYPE_SOLID: The pattern is a solid (uniform) | |||
* color. It may be opaque or translucent. | * color. It may be opaque or translucent, since 1.2. | |||
* @CAIRO_PATTERN_TYPE_SURFACE: The pattern is a based on a surface (an ima | * @CAIRO_PATTERN_TYPE_SURFACE: The pattern is a based on a surface (an ima | |||
ge). | ge), since 1.2. | |||
* @CAIRO_PATTERN_TYPE_LINEAR: The pattern is a linear gradient. | * @CAIRO_PATTERN_TYPE_LINEAR: The pattern is a linear gradient, since 1.2. | |||
* @CAIRO_PATTERN_TYPE_RADIAL: The pattern is a radial gradient. | * @CAIRO_PATTERN_TYPE_RADIAL: The pattern is a radial gradient, since 1.2. | |||
* @CAIRO_PATTERN_TYPE_MESH: The pattern is a mesh, since 1.12. | ||||
* @CAIRO_PATTERN_TYPE_RASTER_SOURCE: The pattern is a user pattern providi | ||||
ng raster data, since 1.12. | ||||
* | * | |||
* #cairo_pattern_type_t is used to describe the type of a given pattern. | * #cairo_pattern_type_t is used to describe the type of a given pattern. | |||
* | * | |||
* The type of a pattern is determined by the function used to create | * The type of a pattern is determined by the function used to create | |||
* it. The cairo_pattern_create_rgb() and cairo_pattern_create_rgba() | * it. The cairo_pattern_create_rgb() and cairo_pattern_create_rgba() | |||
* functions create SOLID patterns. The remaining | * functions create SOLID patterns. The remaining | |||
* cairo_pattern_create<!-- --> functions map to pattern types in obvious | * cairo_pattern_create<!-- --> functions map to pattern types in obvious | |||
* ways. | * ways. | |||
* | * | |||
* The pattern type can be queried with cairo_pattern_get_type() | * The pattern type can be queried with cairo_pattern_get_type() | |||
skipping to change at line 2382 | skipping to change at line 2765 | |||
* will be shutdown and put into an error state. | * will be shutdown and put into an error state. | |||
* | * | |||
* New entries may be added in future versions. | * New entries may be added in future versions. | |||
* | * | |||
* Since: 1.2 | * Since: 1.2 | |||
**/ | **/ | |||
typedef enum _cairo_pattern_type { | typedef enum _cairo_pattern_type { | |||
CAIRO_PATTERN_TYPE_SOLID, | CAIRO_PATTERN_TYPE_SOLID, | |||
CAIRO_PATTERN_TYPE_SURFACE, | CAIRO_PATTERN_TYPE_SURFACE, | |||
CAIRO_PATTERN_TYPE_LINEAR, | CAIRO_PATTERN_TYPE_LINEAR, | |||
CAIRO_PATTERN_TYPE_RADIAL | CAIRO_PATTERN_TYPE_RADIAL, | |||
CAIRO_PATTERN_TYPE_MESH, | ||||
CAIRO_PATTERN_TYPE_RASTER_SOURCE | ||||
} cairo_pattern_type_t; | } cairo_pattern_type_t; | |||
cairo_public cairo_pattern_type_t | cairo_public cairo_pattern_type_t | |||
cairo_pattern_get_type (cairo_pattern_t *pattern); | cairo_pattern_get_type (cairo_pattern_t *pattern); | |||
cairo_public void | cairo_public void | |||
cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, | cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, | |||
double offset, | double offset, | |||
double red, double green, double blue); | double red, double green, double blue); | |||
cairo_public void | cairo_public void | |||
cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, | cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, | |||
double offset, | double offset, | |||
double red, double green, double blue, | double red, double green, double blue, | |||
double alpha); | double alpha); | |||
cairo_public void | cairo_public void | |||
cairo_mesh_pattern_begin_patch (cairo_pattern_t *pattern); | ||||
cairo_public void | ||||
cairo_mesh_pattern_end_patch (cairo_pattern_t *pattern); | ||||
cairo_public void | ||||
cairo_mesh_pattern_curve_to (cairo_pattern_t *pattern, | ||||
double x1, double y1, | ||||
double x2, double y2, | ||||
double x3, double y3); | ||||
cairo_public void | ||||
cairo_mesh_pattern_line_to (cairo_pattern_t *pattern, | ||||
double x, double y); | ||||
cairo_public void | ||||
cairo_mesh_pattern_move_to (cairo_pattern_t *pattern, | ||||
double x, double y); | ||||
cairo_public void | ||||
cairo_mesh_pattern_set_control_point (cairo_pattern_t *pattern, | ||||
unsigned int point_num, | ||||
double x, double y); | ||||
cairo_public void | ||||
cairo_mesh_pattern_set_corner_color_rgb (cairo_pattern_t *pattern, | ||||
unsigned int corner_num, | ||||
double red, double green, double bl | ||||
ue); | ||||
cairo_public void | ||||
cairo_mesh_pattern_set_corner_color_rgba (cairo_pattern_t *pattern, | ||||
unsigned int corner_num, | ||||
double red, double green, double b | ||||
lue, | ||||
double alpha); | ||||
cairo_public void | ||||
cairo_pattern_set_matrix (cairo_pattern_t *pattern, | cairo_pattern_set_matrix (cairo_pattern_t *pattern, | |||
const cairo_matrix_t *matrix); | const cairo_matrix_t *matrix); | |||
cairo_public void | cairo_public void | |||
cairo_pattern_get_matrix (cairo_pattern_t *pattern, | cairo_pattern_get_matrix (cairo_pattern_t *pattern, | |||
cairo_matrix_t *matrix); | cairo_matrix_t *matrix); | |||
/** | /** | |||
* cairo_extend_t: | * cairo_extend_t: | |||
* @CAIRO_EXTEND_NONE: pixels outside of the source pattern | * @CAIRO_EXTEND_NONE: pixels outside of the source pattern | |||
* are fully transparent | * are fully transparent (Since 1.0) | |||
* @CAIRO_EXTEND_REPEAT: the pattern is tiled by repeating | * @CAIRO_EXTEND_REPEAT: the pattern is tiled by repeating (Since 1.0) | |||
* @CAIRO_EXTEND_REFLECT: the pattern is tiled by reflecting | * @CAIRO_EXTEND_REFLECT: the pattern is tiled by reflecting | |||
* at the edges (Implemented for surface patterns since 1.6) | * at the edges (Since 1.0; but only implemented for surface patterns sin ce 1.6) | |||
* @CAIRO_EXTEND_PAD: pixels outside of the pattern copy | * @CAIRO_EXTEND_PAD: pixels outside of the pattern copy | |||
* the closest pixel from the source (Since 1.2; but only | * the closest pixel from the source (Since 1.2; but only | |||
* implemented for surface patterns since 1.6) | * implemented for surface patterns since 1.6) | |||
* | * | |||
* #cairo_extend_t is used to describe how pattern color/alpha will be | * #cairo_extend_t is used to describe how pattern color/alpha will be | |||
* determined for areas "outside" the pattern's natural area, (for | * determined for areas "outside" the pattern's natural area, (for | |||
* example, outside the surface bounds or outside the gradient | * example, outside the surface bounds or outside the gradient | |||
* geometry). | * geometry). | |||
* | * | |||
* Mesh patterns are not affected by the extend mode. | ||||
* | ||||
* The default extend mode is %CAIRO_EXTEND_NONE for surface patterns | * The default extend mode is %CAIRO_EXTEND_NONE for surface patterns | |||
* and %CAIRO_EXTEND_PAD for gradient patterns. | * and %CAIRO_EXTEND_PAD for gradient patterns. | |||
* | * | |||
* New entries may be added in future versions. | * New entries may be added in future versions. | |||
* | ||||
* Since: 1.0 | ||||
**/ | **/ | |||
typedef enum _cairo_extend { | typedef enum _cairo_extend { | |||
CAIRO_EXTEND_NONE, | CAIRO_EXTEND_NONE, | |||
CAIRO_EXTEND_REPEAT, | CAIRO_EXTEND_REPEAT, | |||
CAIRO_EXTEND_REFLECT, | CAIRO_EXTEND_REFLECT, | |||
CAIRO_EXTEND_PAD | CAIRO_EXTEND_PAD | |||
} cairo_extend_t; | } cairo_extend_t; | |||
cairo_public void | cairo_public void | |||
cairo_pattern_set_extend (cairo_pattern_t *pattern, cairo_extend_t extend); | cairo_pattern_set_extend (cairo_pattern_t *pattern, cairo_extend_t extend); | |||
cairo_public cairo_extend_t | cairo_public cairo_extend_t | |||
cairo_pattern_get_extend (cairo_pattern_t *pattern); | cairo_pattern_get_extend (cairo_pattern_t *pattern); | |||
/** | /** | |||
* cairo_filter_t: | * cairo_filter_t: | |||
* @CAIRO_FILTER_FAST: A high-performance filter, with quality similar | * @CAIRO_FILTER_FAST: A high-performance filter, with quality similar | |||
* to %CAIRO_FILTER_NEAREST | * to %CAIRO_FILTER_NEAREST (Since 1.0) | |||
* @CAIRO_FILTER_GOOD: A reasonable-performance filter, with quality | * @CAIRO_FILTER_GOOD: A reasonable-performance filter, with quality | |||
* similar to %CAIRO_FILTER_BILINEAR | * similar to %CAIRO_FILTER_BILINEAR (Since 1.0) | |||
* @CAIRO_FILTER_BEST: The highest-quality available, performance may | * @CAIRO_FILTER_BEST: The highest-quality available, performance may | |||
* not be suitable for interactive use. | * not be suitable for interactive use. (Since 1.0) | |||
* @CAIRO_FILTER_NEAREST: Nearest-neighbor filtering | * @CAIRO_FILTER_NEAREST: Nearest-neighbor filtering (Since 1.0) | |||
* @CAIRO_FILTER_BILINEAR: Linear interpolation in two dimensions | * @CAIRO_FILTER_BILINEAR: Linear interpolation in two dimensions (Since 1. | |||
0) | ||||
* @CAIRO_FILTER_GAUSSIAN: This filter value is currently | * @CAIRO_FILTER_GAUSSIAN: This filter value is currently | |||
* unimplemented, and should not be used in current code. | * unimplemented, and should not be used in current code. (Since 1.0) | |||
* | * | |||
* #cairo_filter_t is used to indicate what filtering should be | * #cairo_filter_t is used to indicate what filtering should be | |||
* applied when reading pixel values from patterns. See | * applied when reading pixel values from patterns. See | |||
* cairo_pattern_set_source() for indicating the desired filter to be | * cairo_pattern_set_filter() for indicating the desired filter to be | |||
* used with a particular pattern. | * used with a particular pattern. | |||
*/ | * | |||
* Since: 1.0 | ||||
**/ | ||||
typedef enum _cairo_filter { | typedef enum _cairo_filter { | |||
CAIRO_FILTER_FAST, | CAIRO_FILTER_FAST, | |||
CAIRO_FILTER_GOOD, | CAIRO_FILTER_GOOD, | |||
CAIRO_FILTER_BEST, | CAIRO_FILTER_BEST, | |||
CAIRO_FILTER_NEAREST, | CAIRO_FILTER_NEAREST, | |||
CAIRO_FILTER_BILINEAR, | CAIRO_FILTER_BILINEAR, | |||
CAIRO_FILTER_GAUSSIAN | CAIRO_FILTER_GAUSSIAN | |||
} cairo_filter_t; | } cairo_filter_t; | |||
cairo_public void | cairo_public void | |||
skipping to change at line 2503 | skipping to change at line 2930 | |||
cairo_public cairo_status_t | cairo_public cairo_status_t | |||
cairo_pattern_get_linear_points (cairo_pattern_t *pattern, | cairo_pattern_get_linear_points (cairo_pattern_t *pattern, | |||
double *x0, double *y0, | double *x0, double *y0, | |||
double *x1, double *y1); | double *x1, double *y1); | |||
cairo_public cairo_status_t | cairo_public cairo_status_t | |||
cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, | cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, | |||
double *x0, double *y0, double *r0, | double *x0, double *y0, double *r0, | |||
double *x1, double *y1, double *r1); | double *x1, double *y1, double *r1); | |||
cairo_public cairo_status_t | ||||
cairo_mesh_pattern_get_patch_count (cairo_pattern_t *pattern, | ||||
unsigned int *count); | ||||
cairo_public cairo_path_t * | ||||
cairo_mesh_pattern_get_path (cairo_pattern_t *pattern, | ||||
unsigned int patch_num); | ||||
cairo_public cairo_status_t | ||||
cairo_mesh_pattern_get_corner_color_rgba (cairo_pattern_t *pattern, | ||||
unsigned int patch_num, | ||||
unsigned int corner_num, | ||||
double *red, double *green, | ||||
double *blue, double *alpha); | ||||
cairo_public cairo_status_t | ||||
cairo_mesh_pattern_get_control_point (cairo_pattern_t *pattern, | ||||
unsigned int patch_num, | ||||
unsigned int point_num, | ||||
double *x, double *y); | ||||
/* Matrix functions */ | /* Matrix functions */ | |||
cairo_public void | cairo_public void | |||
cairo_matrix_init (cairo_matrix_t *matrix, | cairo_matrix_init (cairo_matrix_t *matrix, | |||
double xx, double yx, | double xx, double yx, | |||
double xy, double yy, | double xy, double yy, | |||
double x0, double y0); | double x0, double y0); | |||
cairo_public void | cairo_public void | |||
cairo_matrix_init_identity (cairo_matrix_t *matrix); | cairo_matrix_init_identity (cairo_matrix_t *matrix); | |||
skipping to change at line 2568 | skipping to change at line 3016 | |||
* It allows set-theoretical operations like cairo_region_union() and | * It allows set-theoretical operations like cairo_region_union() and | |||
* cairo_region_intersect() to be performed on them. | * cairo_region_intersect() to be performed on them. | |||
* | * | |||
* Memory management of #cairo_region_t is done with | * Memory management of #cairo_region_t is done with | |||
* cairo_region_reference() and cairo_region_destroy(). | * cairo_region_reference() and cairo_region_destroy(). | |||
* | * | |||
* Since: 1.10 | * Since: 1.10 | |||
**/ | **/ | |||
typedef struct _cairo_region cairo_region_t; | typedef struct _cairo_region cairo_region_t; | |||
/** | ||||
* cairo_rectangle_int_t: | ||||
* @x: X coordinate of the left side of the rectangle | ||||
* @y: Y coordinate of the the top side of the rectangle | ||||
* @width: width of the rectangle | ||||
* @height: height of the rectangle | ||||
* | ||||
* A data structure for holding a rectangle with integer coordinates. | ||||
* | ||||
* Since: 1.10 | ||||
**/ | ||||
typedef struct _cairo_rectangle_int { | ||||
int x, y; | ||||
int width, height; | ||||
} cairo_rectangle_int_t; | ||||
typedef enum _cairo_region_overlap { | typedef enum _cairo_region_overlap { | |||
CAIRO_REGION_OVERLAP_IN, /* completely inside region */ | CAIRO_REGION_OVERLAP_IN, /* completely inside region */ | |||
CAIRO_REGION_OVERLAP_OUT, /* completely outside region */ | CAIRO_REGION_OVERLAP_OUT, /* completely outside region */ | |||
CAIRO_REGION_OVERLAP_PART /* partly inside region */ | CAIRO_REGION_OVERLAP_PART /* partly inside region */ | |||
} cairo_region_overlap_t; | } cairo_region_overlap_t; | |||
cairo_public cairo_region_t * | cairo_public cairo_region_t * | |||
cairo_region_create (void); | cairo_region_create (void); | |||
cairo_public cairo_region_t * | cairo_public cairo_region_t * | |||
End of changes. 126 change blocks. | ||||
225 lines changed or deleted | 709 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |