Sets the pattern's transformation matrix to matrix. This matrix is a transformation from user space to pattern space.

cairo_pattern_set_matrix(pattern, matrix)

Arguments

pattern

[cairo_pattern_t *] a #cairo_pattern_t

matrix

[cairo_matrix_t *] a #cairo_matrix_t

Details

When a pattern is first created it always has the identity matrix for its transformation matrix, which means that pattern space is initially identical to user space.

Important: Please note that the direction of this transformation matrix is from user space to pattern space. This means that if you imagine the flow from a pattern to user space (and on to device space), then coordinates in that flow will be transformed by the inverse of the pattern matrix.

For example, if you want to make a pattern appear twice as large as it does by default the correct code to use is:

<informalexample><programlisting> cairo_matrix_init_scale (&amp;matrix, 0.5, 0.5); cairo_pattern_set_matrix (pattern, &amp;matrix); </programlisting></informalexample>

Meanwhile, using values of 2.0 rather than 0.5 in the code above would cause the pattern to appear at half of its default size.

Also, please note the discussion of the user-space locking semantics of cairo_set_source().

Since: 1.0

C function prototype: void cairo_pattern_set_matrix (cairo_pattern_t *pattern, const cairo_matrix_t *matrix)

See also