summaryrefslogtreecommitdiff
path: root/doc/public/tmpl/cairo-matrix.sgml
blob: d9549b4a639ce980d624ffd1d035260a8f1eb6e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<!-- ##### SECTION Title ##### -->
cairo_matrix_t

<!-- ##### SECTION Short_Description ##### -->

  Transformation matrices

<!-- ##### SECTION Long_Description ##### -->

  <para><indexterm><primary>types</primary><secondary>cairo_matrix</secondary></indexterm><indexterm><primary/></indexterm>
    <structname>cairo_matrix_t</structname> is used throughout
    Cairo to represents between different coordinates spaces.
    A <structname>cairo_matrix</structname> holds an affine
    transformation, such as a scale, rotation, or shear, or a
    combination of those. Mathematically, the effect of an affine
    transformation on a point (<literal>x</literal>,<literal>y</literal>) is given by:
  </para>
  <programlisting>
    x_new = x * a + y * c + tx;
    y_new = x * b + y * d + ty;
  </programlisting>
  <para>
    The parameters <literal>a</literal>, <literal>b</literal>,
    <literal>c</literal>, <literal>d</literal>, <literal>tx</literal>,
    <literal>ty</literal> can be retrieved with
    cairo_matrix_get_affine() and set with cairo_matrix_get_affine().
  </para>
  <para>
    The primary use of transformation matrices in Cairo is as the
    current transformation matrix in a #cairo_t. The current
    transformation matrix gives the transformation from user space
    coordinates to device coordinates. See cairo_set_matrix(),
    cairo_current_matrix().
  </para>

<!-- ##### SECTION See_Also ##### -->
<para>
    
</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### STRUCT cairo_matrix_t ##### -->
<para>

</para>

@xx: 
@yx: 
@xy: 
@yy: 
@x0: 
@y0: 

<!-- ##### FUNCTION cairo_matrix_init ##### -->
<para>

</para>

@matrix: 
@xx: 
@yx: 
@xy: 
@yy: 
@x0: 
@y0: 


<!-- ##### FUNCTION cairo_matrix_init_identity ##### -->
<para>

</para>

@matrix: 


<!-- ##### FUNCTION cairo_matrix_init_translate ##### -->
<para>

</para>

@matrix: 
@tx: 
@ty: 


<!-- ##### FUNCTION cairo_matrix_init_scale ##### -->
<para>

</para>

@matrix: 
@sx: 
@sy: 


<!-- ##### FUNCTION cairo_matrix_init_rotate ##### -->
<para>

</para>

@matrix: 
@radians: 


<!-- ##### FUNCTION cairo_matrix_translate ##### -->
<para>

</para>

@matrix: 
@tx: 
@ty: 


<!-- ##### FUNCTION cairo_matrix_scale ##### -->
<para>

</para>

@matrix: 
@sx: 
@sy: 


<!-- ##### FUNCTION cairo_matrix_rotate ##### -->
<para>

</para>

@matrix: 
@radians: 


<!-- ##### FUNCTION cairo_matrix_invert ##### -->
<para>

</para>

@matrix: 
@Returns: 


<!-- ##### FUNCTION cairo_matrix_multiply ##### -->
<para>

</para>

@result: 
@a: 
@b: 


<!-- ##### FUNCTION cairo_matrix_transform_distance ##### -->
<para>

</para>

@matrix: 
@dx: 
@dy: 


<!-- ##### FUNCTION cairo_matrix_transform_point ##### -->
<para>

</para>

@matrix: 
@x: 
@y: