1<?xml version="1.0"?>
2<!-- This file was automatically generated from C sources - DO NOT EDIT!
3To affect the contents of this file, edit the original C definitions,
4and/or use gtk-doc annotations. -->
5<repository version="1.2"
6 xmlns="http://www.gtk.org/introspection/core/1.0"
7 xmlns:c="http://www.gtk.org/introspection/c/1.0"
8 xmlns:doc="http://www.gtk.org/introspection/doc/1.0"
9 xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
10 <include name="Gdk" version="4.0"/>
11 <include name="Graphene" version="1.0"/>
12 <package name="gtk4"/>
13 <c:include name="gsk/gsk.h"/>
14 <doc:format name="gi-docgen"/>
15 <namespace name="Gsk"
16 version="4.0"
17 shared-library="libgtk-4.so.1"
18 c:identifier-prefixes="Gsk"
19 c:symbol-prefixes="gsk">
20 <function-macro name="BROADWAY_RENDERER"
21 c:identifier="GSK_BROADWAY_RENDERER"
22 introspectable="0">
23 <source-position filename="gsk/broadway/gskbroadwayrenderer.h"
24 line="31"/>
25 <parameters>
26 <parameter name="obj">
27 </parameter>
28 </parameters>
29 </function-macro>
30 <function-macro name="BROADWAY_RENDERER_CLASS"
31 c:identifier="GSK_BROADWAY_RENDERER_CLASS"
32 introspectable="0">
33 <source-position filename="gsk/broadway/gskbroadwayrenderer.h"
34 line="33"/>
35 <parameters>
36 <parameter name="klass">
37 </parameter>
38 </parameters>
39 </function-macro>
40 <function-macro name="BROADWAY_RENDERER_GET_CLASS"
41 c:identifier="GSK_BROADWAY_RENDERER_GET_CLASS"
42 introspectable="0">
43 <source-position filename="gsk/broadway/gskbroadwayrenderer.h"
44 line="35"/>
45 <parameters>
46 <parameter name="obj">
47 </parameter>
48 </parameters>
49 </function-macro>
50 <enumeration name="BlendMode"
51 glib:type-name="GskBlendMode"
52 glib:get-type="gsk_blend_mode_get_type"
53 c:type="GskBlendMode">
54 <doc xml:space="preserve"
55 filename="gsk/gskenums.h"
56 line="158">The blend modes available for render nodes.
57
58The implementation of each blend mode is deferred to the
59rendering pipeline.
60
61See <https://www.w3.org/TR/compositing-1/#blending> for more information
62on blending and blend modes.</doc>
63 <member name="default"
64 value="0"
65 c:identifier="GSK_BLEND_MODE_DEFAULT"
66 glib:nick="default"
67 glib:name="GSK_BLEND_MODE_DEFAULT">
68 <doc xml:space="preserve"
69 filename="gsk/gskenums.h"
70 line="160">The default blend mode, which specifies no blending</doc>
71 </member>
72 <member name="multiply"
73 value="1"
74 c:identifier="GSK_BLEND_MODE_MULTIPLY"
75 glib:nick="multiply"
76 glib:name="GSK_BLEND_MODE_MULTIPLY">
77 <doc xml:space="preserve"
78 filename="gsk/gskenums.h"
79 line="161">The source color is multiplied by the destination
80 and replaces the destination</doc>
81 </member>
82 <member name="screen"
83 value="2"
84 c:identifier="GSK_BLEND_MODE_SCREEN"
85 glib:nick="screen"
86 glib:name="GSK_BLEND_MODE_SCREEN">
87 <doc xml:space="preserve"
88 filename="gsk/gskenums.h"
89 line="163">Multiplies the complements of the destination and source
90 color values, then complements the result.</doc>
91 </member>
92 <member name="overlay"
93 value="3"
94 c:identifier="GSK_BLEND_MODE_OVERLAY"
95 glib:nick="overlay"
96 glib:name="GSK_BLEND_MODE_OVERLAY">
97 <doc xml:space="preserve"
98 filename="gsk/gskenums.h"
99 line="165">Multiplies or screens the colors, depending on the
100 destination color value. This is the inverse of hard-list</doc>
101 </member>
102 <member name="darken"
103 value="4"
104 c:identifier="GSK_BLEND_MODE_DARKEN"
105 glib:nick="darken"
106 glib:name="GSK_BLEND_MODE_DARKEN">
107 <doc xml:space="preserve"
108 filename="gsk/gskenums.h"
109 line="167">Selects the darker of the destination and source colors</doc>
110 </member>
111 <member name="lighten"
112 value="5"
113 c:identifier="GSK_BLEND_MODE_LIGHTEN"
114 glib:nick="lighten"
115 glib:name="GSK_BLEND_MODE_LIGHTEN">
116 <doc xml:space="preserve"
117 filename="gsk/gskenums.h"
118 line="168">Selects the lighter of the destination and source colors</doc>
119 </member>
120 <member name="color_dodge"
121 value="6"
122 c:identifier="GSK_BLEND_MODE_COLOR_DODGE"
123 glib:nick="color-dodge"
124 glib:name="GSK_BLEND_MODE_COLOR_DODGE">
125 <doc xml:space="preserve"
126 filename="gsk/gskenums.h"
127 line="169">Brightens the destination color to reflect the source color</doc>
128 </member>
129 <member name="color_burn"
130 value="7"
131 c:identifier="GSK_BLEND_MODE_COLOR_BURN"
132 glib:nick="color-burn"
133 glib:name="GSK_BLEND_MODE_COLOR_BURN">
134 <doc xml:space="preserve"
135 filename="gsk/gskenums.h"
136 line="170">Darkens the destination color to reflect the source color</doc>
137 </member>
138 <member name="hard_light"
139 value="8"
140 c:identifier="GSK_BLEND_MODE_HARD_LIGHT"
141 glib:nick="hard-light"
142 glib:name="GSK_BLEND_MODE_HARD_LIGHT">
143 <doc xml:space="preserve"
144 filename="gsk/gskenums.h"
145 line="171">Multiplies or screens the colors, depending on the source color value</doc>
146 </member>
147 <member name="soft_light"
148 value="9"
149 c:identifier="GSK_BLEND_MODE_SOFT_LIGHT"
150 glib:nick="soft-light"
151 glib:name="GSK_BLEND_MODE_SOFT_LIGHT">
152 <doc xml:space="preserve"
153 filename="gsk/gskenums.h"
154 line="172">Darkens or lightens the colors, depending on the source color value</doc>
155 </member>
156 <member name="difference"
157 value="10"
158 c:identifier="GSK_BLEND_MODE_DIFFERENCE"
159 glib:nick="difference"
160 glib:name="GSK_BLEND_MODE_DIFFERENCE">
161 <doc xml:space="preserve"
162 filename="gsk/gskenums.h"
163 line="173">Subtracts the darker of the two constituent colors from the lighter color</doc>
164 </member>
165 <member name="exclusion"
166 value="11"
167 c:identifier="GSK_BLEND_MODE_EXCLUSION"
168 glib:nick="exclusion"
169 glib:name="GSK_BLEND_MODE_EXCLUSION">
170 <doc xml:space="preserve"
171 filename="gsk/gskenums.h"
172 line="174">Produces an effect similar to that of the difference mode but lower in contrast</doc>
173 </member>
174 <member name="color"
175 value="12"
176 c:identifier="GSK_BLEND_MODE_COLOR"
177 glib:nick="color"
178 glib:name="GSK_BLEND_MODE_COLOR">
179 <doc xml:space="preserve"
180 filename="gsk/gskenums.h"
181 line="175">Creates a color with the hue and saturation of the source color and the luminosity of the destination color</doc>
182 </member>
183 <member name="hue"
184 value="13"
185 c:identifier="GSK_BLEND_MODE_HUE"
186 glib:nick="hue"
187 glib:name="GSK_BLEND_MODE_HUE">
188 <doc xml:space="preserve"
189 filename="gsk/gskenums.h"
190 line="176">Creates a color with the hue of the source color and the saturation and luminosity of the destination color</doc>
191 </member>
192 <member name="saturation"
193 value="14"
194 c:identifier="GSK_BLEND_MODE_SATURATION"
195 glib:nick="saturation"
196 glib:name="GSK_BLEND_MODE_SATURATION">
197 <doc xml:space="preserve"
198 filename="gsk/gskenums.h"
199 line="177">Creates a color with the saturation of the source color and the hue and luminosity of the destination color</doc>
200 </member>
201 <member name="luminosity"
202 value="15"
203 c:identifier="GSK_BLEND_MODE_LUMINOSITY"
204 glib:nick="luminosity"
205 glib:name="GSK_BLEND_MODE_LUMINOSITY">
206 <doc xml:space="preserve"
207 filename="gsk/gskenums.h"
208 line="178">Creates a color with the luminosity of the source color and the hue and saturation of the destination color</doc>
209 </member>
210 </enumeration>
211 <class name="BlendNode"
212 c:symbol-prefix="blend_node"
213 c:type="GskBlendNode"
214 parent="RenderNode"
215 glib:type-name="GskBlendNode"
216 glib:get-type="gsk_blend_node_get_type"
217 glib:fundamental="1">
218 <doc xml:space="preserve"
219 filename="gsk/gskrendernodeimpl.c"
220 line="6667">A render node applying a blending function between its two child nodes.</doc>
221 <constructor name="new" c:identifier="gsk_blend_node_new">
222 <doc xml:space="preserve"
223 filename="gsk/gskrendernodeimpl.c"
224 line="6794">Creates a `GskRenderNode` that will use @blend_mode to blend the @top
225node onto the @bottom node.</doc>
226 <source-position filename="gsk/gskrendernode.h" line="521"/>
227 <return-value transfer-ownership="full">
228 <doc xml:space="preserve"
229 filename="gsk/gskrendernodeimpl.c"
230 line="6803">A new `GskRenderNode`</doc>
231 <type name="BlendNode" c:type="GskRenderNode*"/>
232 </return-value>
233 <parameters>
234 <parameter name="bottom" transfer-ownership="none">
235 <doc xml:space="preserve"
236 filename="gsk/gskrendernodeimpl.c"
237 line="6796">The bottom node to be drawn</doc>
238 <type name="RenderNode" c:type="GskRenderNode*"/>
239 </parameter>
240 <parameter name="top" transfer-ownership="none">
241 <doc xml:space="preserve"
242 filename="gsk/gskrendernodeimpl.c"
243 line="6797">The node to be blended onto the @bottom node</doc>
244 <type name="RenderNode" c:type="GskRenderNode*"/>
245 </parameter>
246 <parameter name="blend_mode" transfer-ownership="none">
247 <doc xml:space="preserve"
248 filename="gsk/gskrendernodeimpl.c"
249 line="6798">The blend mode to use</doc>
250 <type name="BlendMode" c:type="GskBlendMode"/>
251 </parameter>
252 </parameters>
253 </constructor>
254 <method name="get_blend_mode"
255 c:identifier="gsk_blend_node_get_blend_mode">
256 <doc xml:space="preserve"
257 filename="gsk/gskrendernodeimpl.c"
258 line="6865">Retrieves the blend mode used by @node.</doc>
259 <source-position filename="gsk/gskrendernode.h" line="529"/>
260 <return-value transfer-ownership="none">
261 <doc xml:space="preserve"
262 filename="gsk/gskrendernodeimpl.c"
263 line="6871">the blend mode</doc>
264 <type name="BlendMode" c:type="GskBlendMode"/>
265 </return-value>
266 <parameters>
267 <instance-parameter name="node" transfer-ownership="none">
268 <doc xml:space="preserve"
269 filename="gsk/gskrendernodeimpl.c"
270 line="6867">a blending `GskRenderNode`</doc>
271 <type name="BlendNode" c:type="const GskRenderNode*"/>
272 </instance-parameter>
273 </parameters>
274 </method>
275 <method name="get_bottom_child"
276 c:identifier="gsk_blend_node_get_bottom_child">
277 <doc xml:space="preserve"
278 filename="gsk/gskrendernodeimpl.c"
279 line="6833">Retrieves the bottom `GskRenderNode` child of the @node.</doc>
280 <source-position filename="gsk/gskrendernode.h" line="525"/>
281 <return-value transfer-ownership="none">
282 <doc xml:space="preserve"
283 filename="gsk/gskrendernodeimpl.c"
284 line="6839">the bottom child node</doc>
285 <type name="RenderNode" c:type="GskRenderNode*"/>
286 </return-value>
287 <parameters>
288 <instance-parameter name="node" transfer-ownership="none">
289 <doc xml:space="preserve"
290 filename="gsk/gskrendernodeimpl.c"
291 line="6835">a blending `GskRenderNode`</doc>
292 <type name="BlendNode" c:type="const GskRenderNode*"/>
293 </instance-parameter>
294 </parameters>
295 </method>
296 <method name="get_top_child" c:identifier="gsk_blend_node_get_top_child">
297 <doc xml:space="preserve"
298 filename="gsk/gskrendernodeimpl.c"
299 line="6849">Retrieves the top `GskRenderNode` child of the @node.</doc>
300 <source-position filename="gsk/gskrendernode.h" line="527"/>
301 <return-value transfer-ownership="none">
302 <doc xml:space="preserve"
303 filename="gsk/gskrendernodeimpl.c"
304 line="6855">the top child node</doc>
305 <type name="RenderNode" c:type="GskRenderNode*"/>
306 </return-value>
307 <parameters>
308 <instance-parameter name="node" transfer-ownership="none">
309 <doc xml:space="preserve"
310 filename="gsk/gskrendernodeimpl.c"
311 line="6851">a blending `GskRenderNode`</doc>
312 <type name="BlendNode" c:type="const GskRenderNode*"/>
313 </instance-parameter>
314 </parameters>
315 </method>
316 </class>
317 <class name="BlurNode"
318 c:symbol-prefix="blur_node"
319 c:type="GskBlurNode"
320 parent="RenderNode"
321 glib:type-name="GskBlurNode"
322 glib:get-type="gsk_blur_node_get_type"
323 glib:fundamental="1">
324 <doc xml:space="preserve"
325 filename="gsk/gskrendernodeimpl.c"
326 line="7431">A render node applying a blur effect to its single child.</doc>
327 <constructor name="new" c:identifier="gsk_blur_node_new">
328 <doc xml:space="preserve"
329 filename="gsk/gskrendernodeimpl.c"
330 line="7698">Creates a render node that blurs the child.</doc>
331 <source-position filename="gsk/gskrendernode.h" line="568"/>
332 <return-value transfer-ownership="full">
333 <doc xml:space="preserve"
334 filename="gsk/gskrendernodeimpl.c"
335 line="7705">a new `GskRenderNode`</doc>
336 <type name="BlurNode" c:type="GskRenderNode*"/>
337 </return-value>
338 <parameters>
339 <parameter name="child" transfer-ownership="none">
340 <doc xml:space="preserve"
341 filename="gsk/gskrendernodeimpl.c"
342 line="7700">the child node to blur</doc>
343 <type name="RenderNode" c:type="GskRenderNode*"/>
344 </parameter>
345 <parameter name="radius" transfer-ownership="none">
346 <doc xml:space="preserve"
347 filename="gsk/gskrendernodeimpl.c"
348 line="7701">the blur radius. Must be positive</doc>
349 <type name="gfloat" c:type="float"/>
350 </parameter>
351 </parameters>
352 </constructor>
353 <method name="get_child" c:identifier="gsk_blur_node_get_child">
354 <doc xml:space="preserve"
355 filename="gsk/gskrendernodeimpl.c"
356 line="7735">Retrieves the child `GskRenderNode` of the blur @node.</doc>
357 <source-position filename="gsk/gskrendernode.h" line="571"/>
358 <return-value transfer-ownership="none">
359 <doc xml:space="preserve"
360 filename="gsk/gskrendernodeimpl.c"
361 line="7741">the blurred child node</doc>
362 <type name="RenderNode" c:type="GskRenderNode*"/>
363 </return-value>
364 <parameters>
365 <instance-parameter name="node" transfer-ownership="none">
366 <doc xml:space="preserve"
367 filename="gsk/gskrendernodeimpl.c"
368 line="7737">a blur `GskRenderNode`</doc>
369 <type name="BlurNode" c:type="const GskRenderNode*"/>
370 </instance-parameter>
371 </parameters>
372 </method>
373 <method name="get_radius" c:identifier="gsk_blur_node_get_radius">
374 <doc xml:space="preserve"
375 filename="gsk/gskrendernodeimpl.c"
376 line="7751">Retrieves the blur radius of the @node.</doc>
377 <source-position filename="gsk/gskrendernode.h" line="573"/>
378 <return-value transfer-ownership="none">
379 <doc xml:space="preserve"
380 filename="gsk/gskrendernodeimpl.c"
381 line="7757">the blur radius</doc>
382 <type name="gfloat" c:type="float"/>
383 </return-value>
384 <parameters>
385 <instance-parameter name="node" transfer-ownership="none">
386 <doc xml:space="preserve"
387 filename="gsk/gskrendernodeimpl.c"
388 line="7753">a blur `GskRenderNode`</doc>
389 <type name="BlurNode" c:type="const GskRenderNode*"/>
390 </instance-parameter>
391 </parameters>
392 </method>
393 </class>
394 <class name="BorderNode"
395 c:symbol-prefix="border_node"
396 c:type="GskBorderNode"
397 parent="RenderNode"
398 glib:type-name="GskBorderNode"
399 glib:get-type="gsk_border_node_get_type"
400 glib:fundamental="1">
401 <doc xml:space="preserve"
402 filename="gsk/gskrendernodeimpl.c"
403 line="2180">A render node for a border.</doc>
404 <constructor name="new" c:identifier="gsk_border_node_new">
405 <doc xml:space="preserve"
406 filename="gsk/gskrendernodeimpl.c"
407 line="2473">Creates a `GskRenderNode` that will stroke a border rectangle inside the
408given @outline.
409
410The 4 sides of the border can have different widths and colors.</doc>
411 <source-position filename="gsk/gskrendernode.h" line="339"/>
412 <return-value transfer-ownership="full">
413 <doc xml:space="preserve"
414 filename="gsk/gskrendernodeimpl.c"
415 line="2486">A new `GskRenderNode`</doc>
416 <type name="BorderNode" c:type="GskRenderNode*"/>
417 </return-value>
418 <parameters>
419 <parameter name="outline" transfer-ownership="none">
420 <doc xml:space="preserve"
421 filename="gsk/gskrendernodeimpl.c"
422 line="2475">a `GskRoundedRect` describing the outline of the border</doc>
423 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
424 </parameter>
425 <parameter name="border_width" transfer-ownership="none">
426 <doc xml:space="preserve"
427 filename="gsk/gskrendernodeimpl.c"
428 line="2476">the stroke width of the border on
429 the top, right, bottom and left side respectively.</doc>
430 <array zero-terminated="0" c:type="const float*" fixed-size="4">
431 <type name="gfloat" c:type="float"/>
432 </array>
433 </parameter>
434 <parameter name="border_color" transfer-ownership="none">
435 <doc xml:space="preserve"
436 filename="gsk/gskrendernodeimpl.c"
437 line="2478">the color used on the top, right,
438 bottom and left side.</doc>
439 <array zero-terminated="0" c:type="const GdkRGBA*" fixed-size="4">
440 <type name="Gdk.RGBA" c:type="GdkRGBA"/>
441 </array>
442 </parameter>
443 </parameters>
444 </constructor>
445 <method name="get_colors" c:identifier="gsk_border_node_get_colors">
446 <doc xml:space="preserve"
447 filename="gsk/gskrendernodeimpl.c"
448 line="2442">Retrieves the colors of the border.</doc>
449 <source-position filename="gsk/gskrendernode.h" line="347"/>
450 <return-value transfer-ownership="none">
451 <doc xml:space="preserve"
452 filename="gsk/gskrendernodeimpl.c"
453 line="2448">an array of 4 `GdkRGBA`
454 structs for the top, right, bottom and left color of the border</doc>
455 <array zero-terminated="0" c:type="const GdkRGBA*" fixed-size="4">
456 <type name="Gdk.RGBA" c:type="GdkRGBA"/>
457 </array>
458 </return-value>
459 <parameters>
460 <instance-parameter name="node" transfer-ownership="none">
461 <doc xml:space="preserve"
462 filename="gsk/gskrendernodeimpl.c"
463 line="2444">a `GskRenderNode` for a border</doc>
464 <type name="BorderNode" c:type="const GskRenderNode*"/>
465 </instance-parameter>
466 </parameters>
467 </method>
468 <method name="get_outline" c:identifier="gsk_border_node_get_outline">
469 <doc xml:space="preserve"
470 filename="gsk/gskrendernodeimpl.c"
471 line="2408">Retrieves the outline of the border.</doc>
472 <source-position filename="gsk/gskrendernode.h" line="343"/>
473 <return-value transfer-ownership="none">
474 <doc xml:space="preserve"
475 filename="gsk/gskrendernodeimpl.c"
476 line="2414">the outline of the border</doc>
477 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
478 </return-value>
479 <parameters>
480 <instance-parameter name="node" transfer-ownership="none">
481 <doc xml:space="preserve"
482 filename="gsk/gskrendernodeimpl.c"
483 line="2410">a `GskRenderNode` for a border</doc>
484 <type name="BorderNode" c:type="const GskRenderNode*"/>
485 </instance-parameter>
486 </parameters>
487 </method>
488 <method name="get_widths" c:identifier="gsk_border_node_get_widths">
489 <doc xml:space="preserve"
490 filename="gsk/gskrendernodeimpl.c"
491 line="2424">Retrieves the stroke widths of the border.</doc>
492 <source-position filename="gsk/gskrendernode.h" line="345"/>
493 <return-value transfer-ownership="none">
494 <doc xml:space="preserve"
495 filename="gsk/gskrendernodeimpl.c"
496 line="2430">an array of 4 floats
497 for the top, right, bottom and left stroke width of the border,
498 respectively</doc>
499 <array zero-terminated="0" c:type="const float*" fixed-size="4">
500 <type name="gfloat" c:type="float"/>
501 </array>
502 </return-value>
503 <parameters>
504 <instance-parameter name="node" transfer-ownership="none">
505 <doc xml:space="preserve"
506 filename="gsk/gskrendernodeimpl.c"
507 line="2426">a `GskRenderNode` for a border</doc>
508 <type name="BorderNode" c:type="const GskRenderNode*"/>
509 </instance-parameter>
510 </parameters>
511 </method>
512 </class>
513 <class name="BroadwayRenderer"
514 c:symbol-prefix="broadway_renderer"
515 c:type="GskBroadwayRenderer"
516 parent="Renderer"
517 glib:type-name="GskBroadwayRenderer"
518 glib:get-type="gsk_broadway_renderer_get_type"
519 glib:type-struct="BroadwayRendererClass">
520 <doc xml:space="preserve"
521 filename="gsk/broadway/gskbroadwayrenderer.c"
522 line="14">A Broadway based renderer.
523
524See [class@Gsk.Renderer].</doc>
525 <source-position filename="gsk/broadway/gskbroadwayrenderer.h"
526 line="38"/>
527 <constructor name="new"
528 c:identifier="gsk_broadway_renderer_new"
529 deprecated="1"
530 deprecated-version="4.20">
531 <doc xml:space="preserve"
532 filename="gsk/broadway/gskbroadwayrenderer.c"
533 line="998">Creates a new Broadway renderer.
534
535The Broadway renderer is the default renderer for the broadway backend.
536It will only work with broadway surfaces, otherwise it will fail the
537call to gsk_renderer_realize().
538
539This function is only available when GTK was compiled with Broadway
540support.</doc>
541 <doc-deprecated xml:space="preserve">Broadway will be retired in GTK 5</doc-deprecated>
542 <source-position filename="gsk/broadway/gskbroadwayrenderer.h"
543 line="45"/>
544 <return-value transfer-ownership="full">
545 <doc xml:space="preserve"
546 filename="gsk/broadway/gskbroadwayrenderer.c"
547 line="1010">a new Broadway renderer.</doc>
548 <type name="Renderer" c:type="GskRenderer*"/>
549 </return-value>
550 </constructor>
551 </class>
552 <record name="BroadwayRendererClass"
553 c:type="GskBroadwayRendererClass"
554 disguised="1"
555 opaque="1"
556 glib:is-gtype-struct-for="BroadwayRenderer">
557 <source-position filename="gsk/broadway/gskbroadwayrenderer.h"
558 line="38"/>
559 </record>
560 <function-macro name="CAIRO_RENDERER"
561 c:identifier="GSK_CAIRO_RENDERER"
562 introspectable="0">
563 <source-position filename="gsk/gskcairorenderer.h" line="34"/>
564 <parameters>
565 <parameter name="obj">
566 </parameter>
567 </parameters>
568 </function-macro>
569 <function-macro name="CAIRO_RENDERER_CLASS"
570 c:identifier="GSK_CAIRO_RENDERER_CLASS"
571 introspectable="0">
572 <source-position filename="gsk/gskcairorenderer.h" line="36"/>
573 <parameters>
574 <parameter name="klass">
575 </parameter>
576 </parameters>
577 </function-macro>
578 <function-macro name="CAIRO_RENDERER_GET_CLASS"
579 c:identifier="GSK_CAIRO_RENDERER_GET_CLASS"
580 introspectable="0">
581 <source-position filename="gsk/gskcairorenderer.h" line="38"/>
582 <parameters>
583 <parameter name="obj">
584 </parameter>
585 </parameters>
586 </function-macro>
587 <class name="CairoNode"
588 c:symbol-prefix="cairo_node"
589 c:type="GskCairoNode"
590 parent="RenderNode"
591 glib:type-name="GskCairoNode"
592 glib:get-type="gsk_cairo_node_get_type"
593 glib:fundamental="1">
594 <doc xml:space="preserve"
595 filename="gsk/gskrendernodeimpl.c"
596 line="4103">A render node for a Cairo surface.</doc>
597 <constructor name="new" c:identifier="gsk_cairo_node_new">
598 <doc xml:space="preserve"
599 filename="gsk/gskrendernodeimpl.c"
600 line="4202">Creates a `GskRenderNode` that will render a cairo surface
601into the area given by @bounds.
602
603You can draw to the cairo surface using [method@Gsk.CairoNode.get_draw_context].</doc>
604 <source-position filename="gsk/gskrendernode.h" line="396"/>
605 <return-value transfer-ownership="full">
606 <doc xml:space="preserve"
607 filename="gsk/gskrendernodeimpl.c"
608 line="4211">A new `GskRenderNode`</doc>
609 <type name="CairoNode" c:type="GskRenderNode*"/>
610 </return-value>
611 <parameters>
612 <parameter name="bounds" transfer-ownership="none">
613 <doc xml:space="preserve"
614 filename="gsk/gskrendernodeimpl.c"
615 line="4204">the rectangle to render to</doc>
616 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
617 </parameter>
618 </parameters>
619 </constructor>
620 <method name="get_draw_context"
621 c:identifier="gsk_cairo_node_get_draw_context">
622 <doc xml:space="preserve"
623 filename="gsk/gskrendernodeimpl.c"
624 line="4231">Creates a Cairo context for drawing using the surface associated
625to the render node.
626
627If no surface exists yet, a surface will be created optimized for
628rendering to @renderer.</doc>
629 <source-position filename="gsk/gskrendernode.h" line="398"/>
630 <return-value transfer-ownership="full">
631 <doc xml:space="preserve"
632 filename="gsk/gskrendernodeimpl.c"
633 line="4241">a Cairo context used for drawing; use
634 cairo_destroy() when done drawing</doc>
635 <type name="cairo.Context" c:type="cairo_t*"/>
636 </return-value>
637 <parameters>
638 <instance-parameter name="node" transfer-ownership="none">
639 <doc xml:space="preserve"
640 filename="gsk/gskrendernodeimpl.c"
641 line="4233">a `GskRenderNode` for a Cairo surface</doc>
642 <type name="CairoNode" c:type="GskRenderNode*"/>
643 </instance-parameter>
644 </parameters>
645 </method>
646 <method name="get_surface" c:identifier="gsk_cairo_node_get_surface">
647 <doc xml:space="preserve"
648 filename="gsk/gskrendernodeimpl.c"
649 line="4172">Retrieves the Cairo surface used by the render node.</doc>
650 <source-position filename="gsk/gskrendernode.h" line="400"/>
651 <return-value transfer-ownership="none">
652 <doc xml:space="preserve"
653 filename="gsk/gskrendernodeimpl.c"
654 line="4178">a Cairo surface</doc>
655 <type name="cairo.Surface" c:type="cairo_surface_t*"/>
656 </return-value>
657 <parameters>
658 <instance-parameter name="node" transfer-ownership="none">
659 <doc xml:space="preserve"
660 filename="gsk/gskrendernodeimpl.c"
661 line="4174">a `GskRenderNode` for a Cairo surface</doc>
662 <type name="CairoNode" c:type="GskRenderNode*"/>
663 </instance-parameter>
664 </parameters>
665 </method>
666 </class>
667 <class name="CairoRenderer"
668 c:symbol-prefix="cairo_renderer"
669 c:type="GskCairoRenderer"
670 parent="Renderer"
671 glib:type-name="GskCairoRenderer"
672 glib:get-type="gsk_cairo_renderer_get_type"
673 glib:type-struct="CairoRendererClass">
674 <doc xml:space="preserve"
675 filename="gsk/gskcairorenderer.h"
676 line="40">Renders a GSK rendernode tree with cairo.
677
678Since it is using cairo, this renderer cannot support
6793D transformations.</doc>
680 <source-position filename="gsk/gskcairorenderer.h" line="49"/>
681 <constructor name="new" c:identifier="gsk_cairo_renderer_new">
682 <doc xml:space="preserve"
683 filename="gsk/gskcairorenderer.c"
684 line="210">Creates a new Cairo renderer.
685
686The Cairo renderer is the fallback renderer drawing in ways similar
687to how GTK 3 drew its content. Its primary use is as comparison tool.
688
689The Cairo renderer is incomplete. It cannot render 3D transformed
690content and will instead render an error marker. Its usage should be
691avoided.</doc>
692 <source-position filename="gsk/gskcairorenderer.h" line="55"/>
693 <return-value transfer-ownership="full">
694 <doc xml:space="preserve"
695 filename="gsk/gskcairorenderer.c"
696 line="222">a new Cairo renderer.</doc>
697 <type name="Renderer" c:type="GskRenderer*"/>
698 </return-value>
699 </constructor>
700 </class>
701 <record name="CairoRendererClass"
702 c:type="GskCairoRendererClass"
703 disguised="1"
704 opaque="1"
705 glib:is-gtype-struct-for="CairoRenderer">
706 <source-position filename="gsk/gskcairorenderer.h" line="49"/>
707 </record>
708 <class name="ClipNode"
709 c:symbol-prefix="clip_node"
710 c:type="GskClipNode"
711 parent="RenderNode"
712 glib:type-name="GskClipNode"
713 glib:get-type="gsk_clip_node_get_type"
714 glib:fundamental="1">
715 <doc xml:space="preserve"
716 filename="gsk/gskrendernodeimpl.c"
717 line="5548">A render node applying a rectangular clip to its single child node.</doc>
718 <constructor name="new" c:identifier="gsk_clip_node_new">
719 <doc xml:space="preserve"
720 filename="gsk/gskrendernodeimpl.c"
721 line="5642">Creates a `GskRenderNode` that will clip the @child to the area
722given by @clip.</doc>
723 <source-position filename="gsk/gskrendernode.h" line="461"/>
724 <return-value transfer-ownership="full">
725 <doc xml:space="preserve"
726 filename="gsk/gskrendernodeimpl.c"
727 line="5650">A new `GskRenderNode`</doc>
728 <type name="ClipNode" c:type="GskRenderNode*"/>
729 </return-value>
730 <parameters>
731 <parameter name="child" transfer-ownership="none">
732 <doc xml:space="preserve"
733 filename="gsk/gskrendernodeimpl.c"
734 line="5644">The node to draw</doc>
735 <type name="RenderNode" c:type="GskRenderNode*"/>
736 </parameter>
737 <parameter name="clip" transfer-ownership="none">
738 <doc xml:space="preserve"
739 filename="gsk/gskrendernodeimpl.c"
740 line="5645">The clip to apply</doc>
741 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
742 </parameter>
743 </parameters>
744 </constructor>
745 <method name="get_child" c:identifier="gsk_clip_node_get_child">
746 <doc xml:space="preserve"
747 filename="gsk/gskrendernodeimpl.c"
748 line="5679">Gets the child node that is getting clipped by the given @node.</doc>
749 <source-position filename="gsk/gskrendernode.h" line="464"/>
750 <return-value transfer-ownership="none">
751 <doc xml:space="preserve"
752 filename="gsk/gskrendernodeimpl.c"
753 line="5685">The child that is getting clipped</doc>
754 <type name="RenderNode" c:type="GskRenderNode*"/>
755 </return-value>
756 <parameters>
757 <instance-parameter name="node" transfer-ownership="none">
758 <doc xml:space="preserve"
759 filename="gsk/gskrendernodeimpl.c"
760 line="5681">a clip @GskRenderNode</doc>
761 <type name="ClipNode" c:type="const GskRenderNode*"/>
762 </instance-parameter>
763 </parameters>
764 </method>
765 <method name="get_clip" c:identifier="gsk_clip_node_get_clip">
766 <doc xml:space="preserve"
767 filename="gsk/gskrendernodeimpl.c"
768 line="5695">Retrieves the clip rectangle for @node.</doc>
769 <source-position filename="gsk/gskrendernode.h" line="466"/>
770 <return-value transfer-ownership="none">
771 <doc xml:space="preserve"
772 filename="gsk/gskrendernodeimpl.c"
773 line="5701">a clip rectangle</doc>
774 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
775 </return-value>
776 <parameters>
777 <instance-parameter name="node" transfer-ownership="none">
778 <doc xml:space="preserve"
779 filename="gsk/gskrendernodeimpl.c"
780 line="5697">a `GskClipNode`</doc>
781 <type name="ClipNode" c:type="const GskRenderNode*"/>
782 </instance-parameter>
783 </parameters>
784 </method>
785 </class>
786 <class name="ColorMatrixNode"
787 c:symbol-prefix="color_matrix_node"
788 c:type="GskColorMatrixNode"
789 parent="RenderNode"
790 glib:type-name="GskColorMatrixNode"
791 glib:get-type="gsk_color_matrix_node_get_type"
792 glib:fundamental="1">
793 <doc xml:space="preserve"
794 filename="gsk/gskrendernodeimpl.c"
795 line="5005">A render node controlling the color matrix of its single child node.</doc>
796 <constructor name="new" c:identifier="gsk_color_matrix_node_new">
797 <doc xml:space="preserve"
798 filename="gsk/gskrendernodeimpl.c"
799 line="5160">Creates a `GskRenderNode` that will drawn the @child with
800@color_matrix.
801
802In particular, the node will transform colors by applying
803
804 pixel = transpose(color_matrix) * pixel + color_offset
805
806for every pixel. The transformation operates on unpremultiplied
807colors, with color components ordered R, G, B, A.</doc>
808 <source-position filename="gsk/gskrendernode.h" line="436"/>
809 <return-value transfer-ownership="full">
810 <doc xml:space="preserve"
811 filename="gsk/gskrendernodeimpl.c"
812 line="5176">A new `GskRenderNode`</doc>
813 <type name="ColorMatrixNode" c:type="GskRenderNode*"/>
814 </return-value>
815 <parameters>
816 <parameter name="child" transfer-ownership="none">
817 <doc xml:space="preserve"
818 filename="gsk/gskrendernodeimpl.c"
819 line="5162">The node to draw</doc>
820 <type name="RenderNode" c:type="GskRenderNode*"/>
821 </parameter>
822 <parameter name="color_matrix" transfer-ownership="none">
823 <doc xml:space="preserve"
824 filename="gsk/gskrendernodeimpl.c"
825 line="5163">The matrix to apply</doc>
826 <type name="Graphene.Matrix" c:type="const graphene_matrix_t*"/>
827 </parameter>
828 <parameter name="color_offset" transfer-ownership="none">
829 <doc xml:space="preserve"
830 filename="gsk/gskrendernodeimpl.c"
831 line="5164">Values to add to the color</doc>
832 <type name="Graphene.Vec4" c:type="const graphene_vec4_t*"/>
833 </parameter>
834 </parameters>
835 </constructor>
836 <method name="get_child" c:identifier="gsk_color_matrix_node_get_child">
837 <doc xml:space="preserve"
838 filename="gsk/gskrendernodeimpl.c"
839 line="5203">Gets the child node that is getting its colors modified by the given @node.</doc>
840 <source-position filename="gsk/gskrendernode.h" line="440"/>
841 <return-value transfer-ownership="none">
842 <doc xml:space="preserve"
843 filename="gsk/gskrendernodeimpl.c"
844 line="5209">The child that is getting its colors modified</doc>
845 <type name="RenderNode" c:type="GskRenderNode*"/>
846 </return-value>
847 <parameters>
848 <instance-parameter name="node" transfer-ownership="none">
849 <doc xml:space="preserve"
850 filename="gsk/gskrendernodeimpl.c"
851 line="5205">a color matrix `GskRenderNode`</doc>
852 <type name="ColorMatrixNode" c:type="const GskRenderNode*"/>
853 </instance-parameter>
854 </parameters>
855 </method>
856 <method name="get_color_matrix"
857 c:identifier="gsk_color_matrix_node_get_color_matrix">
858 <doc xml:space="preserve"
859 filename="gsk/gskrendernodeimpl.c"
860 line="5219">Retrieves the color matrix used by the @node.</doc>
861 <source-position filename="gsk/gskrendernode.h" line="443"/>
862 <return-value transfer-ownership="none">
863 <doc xml:space="preserve"
864 filename="gsk/gskrendernodeimpl.c"
865 line="5225">a 4x4 color matrix</doc>
866 <type name="Graphene.Matrix" c:type="const graphene_matrix_t*"/>
867 </return-value>
868 <parameters>
869 <instance-parameter name="node" transfer-ownership="none">
870 <doc xml:space="preserve"
871 filename="gsk/gskrendernodeimpl.c"
872 line="5221">a color matrix `GskRenderNode`</doc>
873 <type name="ColorMatrixNode" c:type="const GskRenderNode*"/>
874 </instance-parameter>
875 </parameters>
876 </method>
877 <method name="get_color_offset"
878 c:identifier="gsk_color_matrix_node_get_color_offset">
879 <doc xml:space="preserve"
880 filename="gsk/gskrendernodeimpl.c"
881 line="5235">Retrieves the color offset used by the @node.</doc>
882 <source-position filename="gsk/gskrendernode.h" line="445"/>
883 <return-value transfer-ownership="none">
884 <doc xml:space="preserve"
885 filename="gsk/gskrendernodeimpl.c"
886 line="5241">a color vector</doc>
887 <type name="Graphene.Vec4" c:type="const graphene_vec4_t*"/>
888 </return-value>
889 <parameters>
890 <instance-parameter name="node" transfer-ownership="none">
891 <doc xml:space="preserve"
892 filename="gsk/gskrendernodeimpl.c"
893 line="5237">a color matrix `GskRenderNode`</doc>
894 <type name="ColorMatrixNode" c:type="const GskRenderNode*"/>
895 </instance-parameter>
896 </parameters>
897 </method>
898 </class>
899 <class name="ColorNode"
900 c:symbol-prefix="color_node"
901 c:type="GskColorNode"
902 parent="RenderNode"
903 glib:type-name="GskColorNode"
904 glib:get-type="gsk_color_node_get_type"
905 glib:fundamental="1">
906 <doc xml:space="preserve"
907 filename="gsk/gskrendernodeimpl.c"
908 line="158">A render node for a solid color.</doc>
909 <constructor name="new" c:identifier="gsk_color_node_new">
910 <doc xml:space="preserve"
911 filename="gsk/gskrendernodeimpl.c"
912 line="260">Creates a `GskRenderNode` that will render the color specified by @rgba into
913the area given by @bounds.</doc>
914 <source-position filename="gsk/gskrendernode.h" line="226"/>
915 <return-value transfer-ownership="full">
916 <doc xml:space="preserve"
917 filename="gsk/gskrendernodeimpl.c"
918 line="268">A new `GskRenderNode`</doc>
919 <type name="ColorNode" c:type="GskRenderNode*"/>
920 </return-value>
921 <parameters>
922 <parameter name="rgba" transfer-ownership="none">
923 <doc xml:space="preserve"
924 filename="gsk/gskrendernodeimpl.c"
925 line="262">a `GdkRGBA` specifying a color</doc>
926 <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
927 </parameter>
928 <parameter name="bounds" transfer-ownership="none">
929 <doc xml:space="preserve"
930 filename="gsk/gskrendernodeimpl.c"
931 line="263">the rectangle to render the color into</doc>
932 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
933 </parameter>
934 </parameters>
935 </constructor>
936 <method name="get_color" c:identifier="gsk_color_node_get_color">
937 <doc xml:space="preserve"
938 filename="gsk/gskrendernodeimpl.c"
939 line="220">Retrieves the color of the given @node.
940
941The value returned by this function will not be correct
942if the render node was created for a non-sRGB color.</doc>
943 <source-position filename="gsk/gskrendernode.h" line="229"/>
944 <return-value transfer-ownership="none">
945 <doc xml:space="preserve"
946 filename="gsk/gskrendernodeimpl.c"
947 line="229">the color of the node</doc>
948 <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
949 </return-value>
950 <parameters>
951 <instance-parameter name="node" transfer-ownership="none">
952 <doc xml:space="preserve"
953 filename="gsk/gskrendernodeimpl.c"
954 line="222">a `GskRenderNode`</doc>
955 <type name="ColorNode" c:type="const GskRenderNode*"/>
956 </instance-parameter>
957 </parameters>
958 </method>
959 </class>
960 <record name="ColorStop" c:type="GskColorStop">
961 <doc xml:space="preserve"
962 filename="gsk/gskrendernode.h"
963 line="41">A color stop in a gradient node.</doc>
964 <source-position filename="gsk/gskrendernode.h" line="52"/>
965 <field name="offset" writable="1">
966 <doc xml:space="preserve"
967 filename="gsk/gskrendernode.h"
968 line="43">the offset of the color stop</doc>
969 <type name="gfloat" c:type="float"/>
970 </field>
971 <field name="color" writable="1">
972 <doc xml:space="preserve"
973 filename="gsk/gskrendernode.h"
974 line="44">the color at the given offset</doc>
975 <type name="Gdk.RGBA" c:type="GdkRGBA"/>
976 </field>
977 </record>
978 <record name="ComponentTransfer"
979 c:type="GskComponentTransfer"
980 opaque="1"
981 version="4.20"
982 glib:type-name="GskComponentTransfer"
983 glib:get-type="gsk_component_transfer_get_type"
984 c:symbol-prefix="component_transfer">
985 <doc xml:space="preserve"
986 filename="gsk/gskcomponenttransfer.c"
987 line="24">Specifies a transfer function for a color component to be applied
988while rendering.
989
990The available functions include linear, piecewise-linear,
991gamma and step functions.
992
993Note that the transfer function is applied to un-premultiplied
994values, and all results are clamped to the [0, 1] range.</doc>
995 <source-position filename="gsk/gsktypes.h" line="37"/>
996 <constructor name="new_discrete"
997 c:identifier="gsk_component_transfer_new_discrete"
998 version="4.20">
999 <doc xml:space="preserve"
1000 filename="gsk/gskcomponenttransfer.c"
1001 line="184">Creates a new component transfer that applies
1002a step function.
1003
1004The new value is computed as
1005
1006 C' = values[k]
1007
1008where k is the smallest value such that
1009
1010 k / n <= C < (k + 1) / n
1011
1012<figure>
1013 <picture>
1014 <source srcset="discrete-dark.png" media="(prefers-color-scheme: dark)">
1015 <img alt="Component transfer: discrete" src="discrete-light.png">
1016 </picture>
1017</figure></doc>
1018 <source-position filename="gsk/gskcomponenttransfer.h" line="47"/>
1019 <return-value transfer-ownership="full">
1020 <doc xml:space="preserve"
1021 filename="gsk/gskcomponenttransfer.c"
1022 line="207">a new `GskComponentTransfer`</doc>
1023 <type name="ComponentTransfer" c:type="GskComponentTransfer*"/>
1024 </return-value>
1025 <parameters>
1026 <parameter name="n" transfer-ownership="none">
1027 <doc xml:space="preserve"
1028 filename="gsk/gskcomponenttransfer.c"
1029 line="186">Number of values</doc>
1030 <type name="guint" c:type="guint"/>
1031 </parameter>
1032 <parameter name="values" transfer-ownership="none">
1033 <doc xml:space="preserve"
1034 filename="gsk/gskcomponenttransfer.c"
1035 line="187">Values</doc>
1036 <array length="0" zero-terminated="0" c:type="float*">
1037 <type name="gfloat" c:type="float"/>
1038 </array>
1039 </parameter>
1040 </parameters>
1041 </constructor>
1042 <constructor name="new_gamma"
1043 c:identifier="gsk_component_transfer_new_gamma"
1044 version="4.20">
1045 <doc xml:space="preserve"
1046 filename="gsk/gskcomponenttransfer.c"
1047 line="143">Creates a new component transfer that applies
1048a gamma transform.
1049
1050The new value is computed as
1051
1052 C' = amp * pow (C, exp) + ofs
1053
1054<figure>
1055 <picture>
1056 <source srcset="gamma-dark.png" media="(prefers-color-scheme: dark)">
1057 <img alt="Component transfer: gamma" src="gamma-light.png">
1058 </picture>
1059</figure></doc>
1060 <source-position filename="gsk/gskcomponenttransfer.h" line="43"/>
1061 <return-value transfer-ownership="full">
1062 <doc xml:space="preserve"
1063 filename="gsk/gskcomponenttransfer.c"
1064 line="163">a new `GskComponentTransfer`</doc>
1065 <type name="ComponentTransfer" c:type="GskComponentTransfer*"/>
1066 </return-value>
1067 <parameters>
1068 <parameter name="amp" transfer-ownership="none">
1069 <doc xml:space="preserve"
1070 filename="gsk/gskcomponenttransfer.c"
1071 line="145">Amplitude</doc>
1072 <type name="gfloat" c:type="float"/>
1073 </parameter>
1074 <parameter name="exp" transfer-ownership="none">
1075 <doc xml:space="preserve"
1076 filename="gsk/gskcomponenttransfer.c"
1077 line="146">Exponent</doc>
1078 <type name="gfloat" c:type="float"/>
1079 </parameter>
1080 <parameter name="ofs" transfer-ownership="none">
1081 <doc xml:space="preserve"
1082 filename="gsk/gskcomponenttransfer.c"
1083 line="147">Offset</doc>
1084 <type name="gfloat" c:type="float"/>
1085 </parameter>
1086 </parameters>
1087 </constructor>
1088 <constructor name="new_identity"
1089 c:identifier="gsk_component_transfer_new_identity"
1090 version="4.20">
1091 <doc xml:space="preserve"
1092 filename="gsk/gskcomponenttransfer.c"
1093 line="41">Creates a new component transfer that doesn't
1094change the component value.
1095
1096<figure>
1097 <picture>
1098 <source srcset="identity-dark.png" media="(prefers-color-scheme: dark)">
1099 <img alt="Component transfer: identity" src="identity-light.png">
1100 </picture>
1101</figure></doc>
1102 <source-position filename="gsk/gskcomponenttransfer.h" line="36"/>
1103 <return-value transfer-ownership="full">
1104 <doc xml:space="preserve"
1105 filename="gsk/gskcomponenttransfer.c"
1106 line="54">a new `GskComponentTransfer`</doc>
1107 <type name="ComponentTransfer" c:type="GskComponentTransfer*"/>
1108 </return-value>
1109 </constructor>
1110 <constructor name="new_levels"
1111 c:identifier="gsk_component_transfer_new_levels"
1112 version="4.20">
1113 <doc xml:space="preserve"
1114 filename="gsk/gskcomponenttransfer.c"
1115 line="70">Creates a new component transfer that limits
1116the values of the component to `n` levels.
1117
1118The new value is computed as
1119
1120 C' = (floor (C * n) + 0.5) / n
1121
1122<figure>
1123 <picture>
1124 <source srcset="levels-dark.png" media="(prefers-color-scheme: dark)">
1125 <img alt="Component transfer: levels" src="levels-light.png">
1126 </picture>
1127</figure></doc>
1128 <source-position filename="gsk/gskcomponenttransfer.h" line="38"/>
1129 <return-value transfer-ownership="full">
1130 <doc xml:space="preserve"
1131 filename="gsk/gskcomponenttransfer.c"
1132 line="88">a new `GskComponentTransfer`</doc>
1133 <type name="ComponentTransfer" c:type="GskComponentTransfer*"/>
1134 </return-value>
1135 <parameters>
1136 <parameter name="n" transfer-ownership="none">
1137 <doc xml:space="preserve"
1138 filename="gsk/gskcomponenttransfer.c"
1139 line="72">Number of levels</doc>
1140 <type name="gfloat" c:type="float"/>
1141 </parameter>
1142 </parameters>
1143 </constructor>
1144 <constructor name="new_linear"
1145 c:identifier="gsk_component_transfer_new_linear"
1146 version="4.20">
1147 <doc xml:space="preserve"
1148 filename="gsk/gskcomponenttransfer.c"
1149 line="105">Creates a new component transfer that applies
1150a linear transform.
1151
1152The new value is computed as
1153
1154 C' = C * m + b
1155
1156<figure>
1157 <picture>
1158 <source srcset="linear-dark.png" media="(prefers-color-scheme: dark)">
1159 <img alt="Component transfer: linear" src="linear-light.png">
1160 </picture>
1161</figure></doc>
1162 <source-position filename="gsk/gskcomponenttransfer.h" line="40"/>
1163 <return-value transfer-ownership="full">
1164 <doc xml:space="preserve"
1165 filename="gsk/gskcomponenttransfer.c"
1166 line="124">a new `GskComponentTransfer`</doc>
1167 <type name="ComponentTransfer" c:type="GskComponentTransfer*"/>
1168 </return-value>
1169 <parameters>
1170 <parameter name="m" transfer-ownership="none">
1171 <doc xml:space="preserve"
1172 filename="gsk/gskcomponenttransfer.c"
1173 line="107">Slope</doc>
1174 <type name="gfloat" c:type="float"/>
1175 </parameter>
1176 <parameter name="b" transfer-ownership="none">
1177 <doc xml:space="preserve"
1178 filename="gsk/gskcomponenttransfer.c"
1179 line="108">Offset</doc>
1180 <type name="gfloat" c:type="float"/>
1181 </parameter>
1182 </parameters>
1183 </constructor>
1184 <constructor name="new_table"
1185 c:identifier="gsk_component_transfer_new_table"
1186 version="4.20">
1187 <doc xml:space="preserve"
1188 filename="gsk/gskcomponenttransfer.c"
1189 line="227">Creates a new component transfer that applies
1190a piecewise linear function.
1191
1192The new value is computed as
1193
1194 C' = values[k] + (C - k / (n - 1)) * n * (values[k + 1] - values[k])
1195
1196where k is the smallest value such that
1197
1198 k / (n - 1) <= C < (k + 1) / (n - 1)
1199
1200<figure>
1201 <picture>
1202 <source srcset="table-dark.png" media="(prefers-color-scheme: dark)">
1203 <img alt="Component transfer: table" src="table-light.png">
1204 </picture>
1205</figure></doc>
1206 <source-position filename="gsk/gskcomponenttransfer.h" line="50"/>
1207 <return-value transfer-ownership="full">
1208 <doc xml:space="preserve"
1209 filename="gsk/gskcomponenttransfer.c"
1210 line="250">a new `GskComponentTransfer`</doc>
1211 <type name="ComponentTransfer" c:type="GskComponentTransfer*"/>
1212 </return-value>
1213 <parameters>
1214 <parameter name="n" transfer-ownership="none">
1215 <doc xml:space="preserve"
1216 filename="gsk/gskcomponenttransfer.c"
1217 line="229">Number of values</doc>
1218 <type name="guint" c:type="guint"/>
1219 </parameter>
1220 <parameter name="values" transfer-ownership="none">
1221 <doc xml:space="preserve"
1222 filename="gsk/gskcomponenttransfer.c"
1223 line="230">Values</doc>
1224 <array length="0" zero-terminated="0" c:type="float*">
1225 <type name="gfloat" c:type="float"/>
1226 </array>
1227 </parameter>
1228 </parameters>
1229 </constructor>
1230 <method name="copy"
1231 c:identifier="gsk_component_transfer_copy"
1232 version="4.20">
1233 <doc xml:space="preserve"
1234 filename="gsk/gskcomponenttransfer.c"
1235 line="270">Creates a copy of @other.</doc>
1236 <source-position filename="gsk/gskcomponenttransfer.h" line="53"/>
1237 <return-value transfer-ownership="full">
1238 <doc xml:space="preserve"
1239 filename="gsk/gskcomponenttransfer.c"
1240 line="276">a newly allocated copy of @other</doc>
1241 <type name="ComponentTransfer" c:type="GskComponentTransfer*"/>
1242 </return-value>
1243 <parameters>
1244 <instance-parameter name="other" transfer-ownership="none">
1245 <doc xml:space="preserve"
1246 filename="gsk/gskcomponenttransfer.c"
1247 line="272">a component transfer</doc>
1248 <type name="ComponentTransfer"
1249 c:type="const GskComponentTransfer*"/>
1250 </instance-parameter>
1251 </parameters>
1252 </method>
1253 <method name="free"
1254 c:identifier="gsk_component_transfer_free"
1255 version="4.20">
1256 <doc xml:space="preserve"
1257 filename="gsk/gskcomponenttransfer.c"
1258 line="294">Frees a component transfer.</doc>
1259 <source-position filename="gsk/gskcomponenttransfer.h" line="55"/>
1260 <return-value transfer-ownership="none">
1261 <type name="none" c:type="void"/>
1262 </return-value>
1263 <parameters>
1264 <instance-parameter name="self" transfer-ownership="none">
1265 <doc xml:space="preserve"
1266 filename="gsk/gskcomponenttransfer.c"
1267 line="296">a component transfer</doc>
1268 <type name="ComponentTransfer" c:type="GskComponentTransfer*"/>
1269 </instance-parameter>
1270 </parameters>
1271 </method>
1272 <function name="equal"
1273 c:identifier="gsk_component_transfer_equal"
1274 version="4.20">
1275 <doc xml:space="preserve"
1276 filename="gsk/gskcomponenttransfer.c"
1277 line="313">Compares two component transfers for equality.</doc>
1278 <source-position filename="gsk/gskcomponenttransfer.h" line="57"/>
1279 <return-value transfer-ownership="none">
1280 <doc xml:space="preserve"
1281 filename="gsk/gskcomponenttransfer.c"
1282 line="320">true if @self and @other are equal</doc>
1283 <type name="gboolean" c:type="gboolean"/>
1284 </return-value>
1285 <parameters>
1286 <parameter name="self" transfer-ownership="none">
1287 <doc xml:space="preserve"
1288 filename="gsk/gskcomponenttransfer.c"
1289 line="315">a component transfer</doc>
1290 <type name="gpointer" c:type="gconstpointer"/>
1291 </parameter>
1292 <parameter name="other" transfer-ownership="none">
1293 <doc xml:space="preserve"
1294 filename="gsk/gskcomponenttransfer.c"
1295 line="316">another component transfer</doc>
1296 <type name="gpointer" c:type="gconstpointer"/>
1297 </parameter>
1298 </parameters>
1299 </function>
1300 </record>
1301 <class name="ComponentTransferNode"
1302 c:symbol-prefix="component_transfer_node"
1303 c:type="GskComponentTransferNode"
1304 version="4.20"
1305 parent="RenderNode"
1306 glib:type-name="GskComponentTransferNode"
1307 glib:get-type="gsk_component_transfer_node_get_type"
1308 glib:fundamental="1">
1309 <constructor name="new"
1310 c:identifier="gsk_component_transfer_node_new"
1311 version="4.20">
1312 <doc xml:space="preserve"
1313 filename="gsk/gskrendernodeimpl.c"
1314 line="8739">Creates a render node that will apply component
1315transfers to a child node.</doc>
1316 <source-position filename="gsk/gskrendernode.h" line="624"/>
1317 <return-value transfer-ownership="full">
1318 <doc xml:space="preserve"
1319 filename="gsk/gskrendernodeimpl.c"
1320 line="8750">A new `GskRenderNode`</doc>
1321 <type name="ComponentTransferNode" c:type="GskRenderNode*"/>
1322 </return-value>
1323 <parameters>
1324 <parameter name="child" transfer-ownership="none">
1325 <doc xml:space="preserve"
1326 filename="gsk/gskrendernodeimpl.c"
1327 line="8741">The child to apply component transfers to</doc>
1328 <type name="RenderNode" c:type="GskRenderNode*"/>
1329 </parameter>
1330 <parameter name="r" transfer-ownership="none">
1331 <doc xml:space="preserve"
1332 filename="gsk/gskrendernodeimpl.c"
1333 line="8742">transfer for the red component</doc>
1334 <type name="ComponentTransfer"
1335 c:type="const GskComponentTransfer*"/>
1336 </parameter>
1337 <parameter name="g" transfer-ownership="none">
1338 <doc xml:space="preserve"
1339 filename="gsk/gskrendernodeimpl.c"
1340 line="8743">transfer for the green component</doc>
1341 <type name="ComponentTransfer"
1342 c:type="const GskComponentTransfer*"/>
1343 </parameter>
1344 <parameter name="b" transfer-ownership="none">
1345 <doc xml:space="preserve"
1346 filename="gsk/gskrendernodeimpl.c"
1347 line="8744">transfer for the blue component</doc>
1348 <type name="ComponentTransfer"
1349 c:type="const GskComponentTransfer*"/>
1350 </parameter>
1351 <parameter name="a" transfer-ownership="none">
1352 <doc xml:space="preserve"
1353 filename="gsk/gskrendernodeimpl.c"
1354 line="8745">transfer for the alpha component</doc>
1355 <type name="ComponentTransfer"
1356 c:type="const GskComponentTransfer*"/>
1357 </parameter>
1358 </parameters>
1359 </constructor>
1360 <method name="get_child"
1361 c:identifier="gsk_component_transfer_node_get_child"
1362 version="4.20">
1363 <doc xml:space="preserve"
1364 filename="gsk/gskrendernodeimpl.c"
1365 line="8785">Gets the child node that is getting drawn by the given @node.</doc>
1366 <source-position filename="gsk/gskrendernode.h" line="630"/>
1367 <return-value transfer-ownership="none">
1368 <doc xml:space="preserve"
1369 filename="gsk/gskrendernodeimpl.c"
1370 line="8791">the child `GskRenderNode`</doc>
1371 <type name="RenderNode" c:type="GskRenderNode*"/>
1372 </return-value>
1373 <parameters>
1374 <instance-parameter name="node" transfer-ownership="none">
1375 <doc xml:space="preserve"
1376 filename="gsk/gskrendernodeimpl.c"
1377 line="8787">a debug `GskRenderNode`</doc>
1378 <type name="ComponentTransferNode" c:type="const GskRenderNode*"/>
1379 </instance-parameter>
1380 </parameters>
1381 </method>
1382 <method name="get_transfer"
1383 c:identifier="gsk_component_transfer_node_get_transfer"
1384 version="4.20">
1385 <doc xml:space="preserve"
1386 filename="gsk/gskrendernodeimpl.c"
1387 line="8803">Gets the component transfer for one of the components.</doc>
1388 <source-position filename="gsk/gskrendernode.h" line="633"/>
1389 <return-value transfer-ownership="none">
1390 <doc xml:space="preserve"
1391 filename="gsk/gskrendernodeimpl.c"
1392 line="8811">the `GskComponentTransfer`</doc>
1393 <type name="ComponentTransfer" c:type="const GskComponentTransfer*"/>
1394 </return-value>
1395 <parameters>
1396 <instance-parameter name="node" transfer-ownership="none">
1397 <doc xml:space="preserve"
1398 filename="gsk/gskrendernodeimpl.c"
1399 line="8805">a debug `GskRenderNode`</doc>
1400 <type name="ComponentTransferNode" c:type="const GskRenderNode*"/>
1401 </instance-parameter>
1402 <parameter name="component" transfer-ownership="none">
1403 <doc xml:space="preserve"
1404 filename="gsk/gskrendernodeimpl.c"
1405 line="8806">a value between 0 and 3 to indicate the red, green, blue
1406 or alpha component</doc>
1407 <type name="guint" c:type="guint"/>
1408 </parameter>
1409 </parameters>
1410 </method>
1411 </class>
1412 <class name="ConicGradientNode"
1413 c:symbol-prefix="conic_gradient_node"
1414 c:type="GskConicGradientNode"
1415 parent="RenderNode"
1416 glib:type-name="GskConicGradientNode"
1417 glib:get-type="gsk_conic_gradient_node_get_type"
1418 glib:fundamental="1">
1419 <doc xml:space="preserve"
1420 filename="gsk/gskrendernodeimpl.c"
1421 line="1662">A render node for a conic gradient.</doc>
1422 <constructor name="new" c:identifier="gsk_conic_gradient_node_new">
1423 <doc xml:space="preserve"
1424 filename="gsk/gskrendernodeimpl.c"
1425 line="1961">Creates a `GskRenderNode` that draws a conic gradient.
1426
1427The conic gradient
1428starts around @center in the direction of @rotation. A rotation of 0 means
1429that the gradient points up. Color stops are then added clockwise.</doc>
1430 <source-position filename="gsk/gskrendernode.h" line="280"/>
1431 <return-value transfer-ownership="full">
1432 <doc xml:space="preserve"
1433 filename="gsk/gskrendernodeimpl.c"
1434 line="1978">A new `GskRenderNode`</doc>
1435 <type name="ConicGradientNode" c:type="GskRenderNode*"/>
1436 </return-value>
1437 <parameters>
1438 <parameter name="bounds" transfer-ownership="none">
1439 <doc xml:space="preserve"
1440 filename="gsk/gskrendernodeimpl.c"
1441 line="1963">the bounds of the node</doc>
1442 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
1443 </parameter>
1444 <parameter name="center" transfer-ownership="none">
1445 <doc xml:space="preserve"
1446 filename="gsk/gskrendernodeimpl.c"
1447 line="1964">the center of the gradient</doc>
1448 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
1449 </parameter>
1450 <parameter name="rotation" transfer-ownership="none">
1451 <doc xml:space="preserve"
1452 filename="gsk/gskrendernodeimpl.c"
1453 line="1965">the rotation of the gradient in degrees</doc>
1454 <type name="gfloat" c:type="float"/>
1455 </parameter>
1456 <parameter name="color_stops" transfer-ownership="none">
1457 <doc xml:space="preserve"
1458 filename="gsk/gskrendernodeimpl.c"
1459 line="1966">a pointer to an array of
1460 `GskColorStop` defining the gradient. The offsets of all color stops
1461 must be increasing. The first stop's offset must be >= 0 and the last
1462 stop's offset must be <= 1.</doc>
1463 <array length="4" zero-terminated="0" c:type="const GskColorStop*">
1464 <type name="ColorStop" c:type="GskColorStop"/>
1465 </array>
1466 </parameter>
1467 <parameter name="n_color_stops" transfer-ownership="none">
1468 <doc xml:space="preserve"
1469 filename="gsk/gskrendernodeimpl.c"
1470 line="1970">the number of elements in @color_stops</doc>
1471 <type name="gsize" c:type="gsize"/>
1472 </parameter>
1473 </parameters>
1474 </constructor>
1475 <method name="get_angle"
1476 c:identifier="gsk_conic_gradient_node_get_angle"
1477 version="4.2">
1478 <doc xml:space="preserve"
1479 filename="gsk/gskrendernodeimpl.c"
1480 line="2154">Retrieves the angle for the gradient in radians, normalized in [0, 2 * PI].
1481
1482The angle is starting at the top and going clockwise, as expressed
1483in the css specification:
1484
1485 angle = 90 - gsk_conic_gradient_node_get_rotation()</doc>
1486 <source-position filename="gsk/gskrendernode.h" line="290"/>
1487 <return-value transfer-ownership="none">
1488 <doc xml:space="preserve"
1489 filename="gsk/gskrendernodeimpl.c"
1490 line="2165">the angle for the gradient</doc>
1491 <type name="gfloat" c:type="float"/>
1492 </return-value>
1493 <parameters>
1494 <instance-parameter name="node" transfer-ownership="none">
1495 <doc xml:space="preserve"
1496 filename="gsk/gskrendernodeimpl.c"
1497 line="2156">a `GskRenderNode` for a conic gradient</doc>
1498 <type name="ConicGradientNode" c:type="const GskRenderNode*"/>
1499 </instance-parameter>
1500 </parameters>
1501 </method>
1502 <method name="get_center"
1503 c:identifier="gsk_conic_gradient_node_get_center">
1504 <doc xml:space="preserve"
1505 filename="gsk/gskrendernodeimpl.c"
1506 line="2122">Retrieves the center pointer for the gradient.</doc>
1507 <source-position filename="gsk/gskrendernode.h" line="286"/>
1508 <return-value transfer-ownership="none">
1509 <doc xml:space="preserve"
1510 filename="gsk/gskrendernodeimpl.c"
1511 line="2128">the center point for the gradient</doc>
1512 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
1513 </return-value>
1514 <parameters>
1515 <instance-parameter name="node" transfer-ownership="none">
1516 <doc xml:space="preserve"
1517 filename="gsk/gskrendernodeimpl.c"
1518 line="2124">a `GskRenderNode` for a conic gradient</doc>
1519 <type name="ConicGradientNode" c:type="const GskRenderNode*"/>
1520 </instance-parameter>
1521 </parameters>
1522 </method>
1523 <method name="get_color_stops"
1524 c:identifier="gsk_conic_gradient_node_get_color_stops">
1525 <doc xml:space="preserve"
1526 filename="gsk/gskrendernodeimpl.c"
1527 line="2104">Retrieves the color stops in the gradient.</doc>
1528 <source-position filename="gsk/gskrendernode.h" line="294"/>
1529 <return-value transfer-ownership="none">
1530 <doc xml:space="preserve"
1531 filename="gsk/gskrendernodeimpl.c"
1532 line="2111">the color stops in the gradient</doc>
1533 <array length="0" zero-terminated="0" c:type="const GskColorStop*">
1534 <type name="ColorStop" c:type="GskColorStop"/>
1535 </array>
1536 </return-value>
1537 <parameters>
1538 <instance-parameter name="node" transfer-ownership="none">
1539 <doc xml:space="preserve"
1540 filename="gsk/gskrendernodeimpl.c"
1541 line="2106">a `GskRenderNode` for a conic gradient</doc>
1542 <type name="ConicGradientNode" c:type="const GskRenderNode*"/>
1543 </instance-parameter>
1544 <parameter name="n_stops"
1545 direction="out"
1546 caller-allocates="0"
1547 transfer-ownership="full"
1548 optional="1"
1549 allow-none="1">
1550 <doc xml:space="preserve"
1551 filename="gsk/gskrendernodeimpl.c"
1552 line="2107">the number of color stops in the returned array</doc>
1553 <type name="gsize" c:type="gsize*"/>
1554 </parameter>
1555 </parameters>
1556 </method>
1557 <method name="get_n_color_stops"
1558 c:identifier="gsk_conic_gradient_node_get_n_color_stops">
1559 <doc xml:space="preserve"
1560 filename="gsk/gskrendernodeimpl.c"
1561 line="2088">Retrieves the number of color stops in the gradient.</doc>
1562 <source-position filename="gsk/gskrendernode.h" line="292"/>
1563 <return-value transfer-ownership="none">
1564 <doc xml:space="preserve"
1565 filename="gsk/gskrendernodeimpl.c"
1566 line="2094">the number of color stops</doc>
1567 <type name="gsize" c:type="gsize"/>
1568 </return-value>
1569 <parameters>
1570 <instance-parameter name="node" transfer-ownership="none">
1571 <doc xml:space="preserve"
1572 filename="gsk/gskrendernodeimpl.c"
1573 line="2090">a `GskRenderNode` for a conic gradient</doc>
1574 <type name="ConicGradientNode" c:type="const GskRenderNode*"/>
1575 </instance-parameter>
1576 </parameters>
1577 </method>
1578 <method name="get_rotation"
1579 c:identifier="gsk_conic_gradient_node_get_rotation">
1580 <doc xml:space="preserve"
1581 filename="gsk/gskrendernodeimpl.c"
1582 line="2138">Retrieves the rotation for the gradient in degrees.</doc>
1583 <source-position filename="gsk/gskrendernode.h" line="288"/>
1584 <return-value transfer-ownership="none">
1585 <doc xml:space="preserve"
1586 filename="gsk/gskrendernodeimpl.c"
1587 line="2144">the rotation for the gradient</doc>
1588 <type name="gfloat" c:type="float"/>
1589 </return-value>
1590 <parameters>
1591 <instance-parameter name="node" transfer-ownership="none">
1592 <doc xml:space="preserve"
1593 filename="gsk/gskrendernodeimpl.c"
1594 line="2140">a `GskRenderNode` for a conic gradient</doc>
1595 <type name="ConicGradientNode" c:type="const GskRenderNode*"/>
1596 </instance-parameter>
1597 </parameters>
1598 </method>
1599 </class>
1600 <class name="ContainerNode"
1601 c:symbol-prefix="container_node"
1602 c:type="GskContainerNode"
1603 parent="RenderNode"
1604 glib:type-name="GskContainerNode"
1605 glib:get-type="gsk_container_node_get_type"
1606 glib:fundamental="1">
1607 <doc xml:space="preserve"
1608 filename="gsk/gskrendernodeimpl.c"
1609 line="4287">A render node that can contain other render nodes.</doc>
1610 <constructor name="new" c:identifier="gsk_container_node_new">
1611 <doc xml:space="preserve"
1612 filename="gsk/gskrendernodeimpl.c"
1613 line="4454">Creates a new `GskRenderNode` instance for holding the given @children.
1614
1615The new node will acquire a reference to each of the children.</doc>
1616 <source-position filename="gsk/gskrendernode.h" line="405"/>
1617 <return-value transfer-ownership="full">
1618 <doc xml:space="preserve"
1619 filename="gsk/gskrendernodeimpl.c"
1620 line="4463">the new `GskRenderNode`</doc>
1621 <type name="ContainerNode" c:type="GskRenderNode*"/>
1622 </return-value>
1623 <parameters>
1624 <parameter name="children" transfer-ownership="none">
1625 <doc xml:space="preserve"
1626 filename="gsk/gskrendernodeimpl.c"
1627 line="4456">The children of the node</doc>
1628 <array length="1" zero-terminated="0" c:type="GskRenderNode**">
1629 <type name="RenderNode" c:type="GskRenderNode*"/>
1630 </array>
1631 </parameter>
1632 <parameter name="n_children" transfer-ownership="none">
1633 <doc xml:space="preserve"
1634 filename="gsk/gskrendernodeimpl.c"
1635 line="4457">Number of children in the @children array</doc>
1636 <type name="guint" c:type="guint"/>
1637 </parameter>
1638 </parameters>
1639 </constructor>
1640 <method name="get_child" c:identifier="gsk_container_node_get_child">
1641 <doc xml:space="preserve"
1642 filename="gsk/gskrendernodeimpl.c"
1643 line="4540">Gets one of the children of @container.</doc>
1644 <source-position filename="gsk/gskrendernode.h" line="410"/>
1645 <return-value transfer-ownership="none">
1646 <doc xml:space="preserve"
1647 filename="gsk/gskrendernodeimpl.c"
1648 line="4547">the @idx'th child of @container</doc>
1649 <type name="RenderNode" c:type="GskRenderNode*"/>
1650 </return-value>
1651 <parameters>
1652 <instance-parameter name="node" transfer-ownership="none">
1653 <doc xml:space="preserve"
1654 filename="gsk/gskrendernodeimpl.c"
1655 line="4542">a container `GskRenderNode`</doc>
1656 <type name="ContainerNode" c:type="const GskRenderNode*"/>
1657 </instance-parameter>
1658 <parameter name="idx" transfer-ownership="none">
1659 <doc xml:space="preserve"
1660 filename="gsk/gskrendernodeimpl.c"
1661 line="4543">the position of the child to get</doc>
1662 <type name="guint" c:type="guint"/>
1663 </parameter>
1664 </parameters>
1665 </method>
1666 <method name="get_n_children"
1667 c:identifier="gsk_container_node_get_n_children">
1668 <doc xml:space="preserve"
1669 filename="gsk/gskrendernodeimpl.c"
1670 line="4524">Retrieves the number of direct children of @node.</doc>
1671 <source-position filename="gsk/gskrendernode.h" line="408"/>
1672 <return-value transfer-ownership="none">
1673 <doc xml:space="preserve"
1674 filename="gsk/gskrendernodeimpl.c"
1675 line="4530">the number of children of the `GskRenderNode`</doc>
1676 <type name="guint" c:type="guint"/>
1677 </return-value>
1678 <parameters>
1679 <instance-parameter name="node" transfer-ownership="none">
1680 <doc xml:space="preserve"
1681 filename="gsk/gskrendernodeimpl.c"
1682 line="4526">a container `GskRenderNode`</doc>
1683 <type name="ContainerNode" c:type="const GskRenderNode*"/>
1684 </instance-parameter>
1685 </parameters>
1686 </method>
1687 </class>
1688 <enumeration name="Corner"
1689 glib:type-name="GskCorner"
1690 glib:get-type="gsk_corner_get_type"
1691 c:type="GskCorner">
1692 <doc xml:space="preserve"
1693 filename="gsk/gskenums.h"
1694 line="208">The corner indices used by `GskRoundedRect`.</doc>
1695 <member name="top_left"
1696 value="0"
1697 c:identifier="GSK_CORNER_TOP_LEFT"
1698 glib:nick="top-left"
1699 glib:name="GSK_CORNER_TOP_LEFT">
1700 <doc xml:space="preserve"
1701 filename="gsk/gskenums.h"
1702 line="210">The top left corner</doc>
1703 </member>
1704 <member name="top_right"
1705 value="1"
1706 c:identifier="GSK_CORNER_TOP_RIGHT"
1707 glib:nick="top-right"
1708 glib:name="GSK_CORNER_TOP_RIGHT">
1709 <doc xml:space="preserve"
1710 filename="gsk/gskenums.h"
1711 line="211">The top right corner</doc>
1712 </member>
1713 <member name="bottom_right"
1714 value="2"
1715 c:identifier="GSK_CORNER_BOTTOM_RIGHT"
1716 glib:nick="bottom-right"
1717 glib:name="GSK_CORNER_BOTTOM_RIGHT">
1718 <doc xml:space="preserve"
1719 filename="gsk/gskenums.h"
1720 line="212">The bottom right corner</doc>
1721 </member>
1722 <member name="bottom_left"
1723 value="3"
1724 c:identifier="GSK_CORNER_BOTTOM_LEFT"
1725 glib:nick="bottom-left"
1726 glib:name="GSK_CORNER_BOTTOM_LEFT">
1727 <doc xml:space="preserve"
1728 filename="gsk/gskenums.h"
1729 line="213">The bottom left corner</doc>
1730 </member>
1731 </enumeration>
1732 <class name="CrossFadeNode"
1733 c:symbol-prefix="cross_fade_node"
1734 c:type="GskCrossFadeNode"
1735 parent="RenderNode"
1736 glib:type-name="GskCrossFadeNode"
1737 glib:get-type="gsk_cross_fade_node_get_type"
1738 glib:fundamental="1">
1739 <doc xml:space="preserve"
1740 filename="gsk/gskrendernodeimpl.c"
1741 line="6884">A render node cross fading between two child nodes.</doc>
1742 <constructor name="new" c:identifier="gsk_cross_fade_node_new">
1743 <doc xml:space="preserve"
1744 filename="gsk/gskrendernodeimpl.c"
1745 line="6980">Creates a `GskRenderNode` that will do a cross-fade between @start and @end.</doc>
1746 <source-position filename="gsk/gskrendernode.h" line="534"/>
1747 <return-value transfer-ownership="full">
1748 <doc xml:space="preserve"
1749 filename="gsk/gskrendernodeimpl.c"
1750 line="6989">A new `GskRenderNode`</doc>
1751 <type name="CrossFadeNode" c:type="GskRenderNode*"/>
1752 </return-value>
1753 <parameters>
1754 <parameter name="start" transfer-ownership="none">
1755 <doc xml:space="preserve"
1756 filename="gsk/gskrendernodeimpl.c"
1757 line="6982">The start node to be drawn</doc>
1758 <type name="RenderNode" c:type="GskRenderNode*"/>
1759 </parameter>
1760 <parameter name="end" transfer-ownership="none">
1761 <doc xml:space="preserve"
1762 filename="gsk/gskrendernodeimpl.c"
1763 line="6983">The node to be cross_fadeed onto the @start node</doc>
1764 <type name="RenderNode" c:type="GskRenderNode*"/>
1765 </parameter>
1766 <parameter name="progress" transfer-ownership="none">
1767 <doc xml:space="preserve"
1768 filename="gsk/gskrendernodeimpl.c"
1769 line="6984">How far the fade has progressed from start to end. The value will
1770 be clamped to the range [0 ... 1]</doc>
1771 <type name="gfloat" c:type="float"/>
1772 </parameter>
1773 </parameters>
1774 </constructor>
1775 <method name="get_end_child"
1776 c:identifier="gsk_cross_fade_node_get_end_child">
1777 <doc xml:space="preserve"
1778 filename="gsk/gskrendernodeimpl.c"
1779 line="7037">Retrieves the child `GskRenderNode` at the end of the cross-fade.</doc>
1780 <source-position filename="gsk/gskrendernode.h" line="540"/>
1781 <return-value transfer-ownership="none">
1782 <doc xml:space="preserve"
1783 filename="gsk/gskrendernodeimpl.c"
1784 line="7043">a `GskRenderNode`</doc>
1785 <type name="RenderNode" c:type="GskRenderNode*"/>
1786 </return-value>
1787 <parameters>
1788 <instance-parameter name="node" transfer-ownership="none">
1789 <doc xml:space="preserve"
1790 filename="gsk/gskrendernodeimpl.c"
1791 line="7039">a cross-fading `GskRenderNode`</doc>
1792 <type name="CrossFadeNode" c:type="const GskRenderNode*"/>
1793 </instance-parameter>
1794 </parameters>
1795 </method>
1796 <method name="get_progress"
1797 c:identifier="gsk_cross_fade_node_get_progress">
1798 <doc xml:space="preserve"
1799 filename="gsk/gskrendernodeimpl.c"
1800 line="7053">Retrieves the progress value of the cross fade.</doc>
1801 <source-position filename="gsk/gskrendernode.h" line="542"/>
1802 <return-value transfer-ownership="none">
1803 <doc xml:space="preserve"
1804 filename="gsk/gskrendernodeimpl.c"
1805 line="7059">the progress value, between 0 and 1</doc>
1806 <type name="gfloat" c:type="float"/>
1807 </return-value>
1808 <parameters>
1809 <instance-parameter name="node" transfer-ownership="none">
1810 <doc xml:space="preserve"
1811 filename="gsk/gskrendernodeimpl.c"
1812 line="7055">a cross-fading `GskRenderNode`</doc>
1813 <type name="CrossFadeNode" c:type="const GskRenderNode*"/>
1814 </instance-parameter>
1815 </parameters>
1816 </method>
1817 <method name="get_start_child"
1818 c:identifier="gsk_cross_fade_node_get_start_child">
1819 <doc xml:space="preserve"
1820 filename="gsk/gskrendernodeimpl.c"
1821 line="7021">Retrieves the child `GskRenderNode` at the beginning of the cross-fade.</doc>
1822 <source-position filename="gsk/gskrendernode.h" line="538"/>
1823 <return-value transfer-ownership="none">
1824 <doc xml:space="preserve"
1825 filename="gsk/gskrendernodeimpl.c"
1826 line="7027">a `GskRenderNode`</doc>
1827 <type name="RenderNode" c:type="GskRenderNode*"/>
1828 </return-value>
1829 <parameters>
1830 <instance-parameter name="node" transfer-ownership="none">
1831 <doc xml:space="preserve"
1832 filename="gsk/gskrendernodeimpl.c"
1833 line="7023">a cross-fading `GskRenderNode`</doc>
1834 <type name="CrossFadeNode" c:type="const GskRenderNode*"/>
1835 </instance-parameter>
1836 </parameters>
1837 </method>
1838 </class>
1839 <class name="DebugNode"
1840 c:symbol-prefix="debug_node"
1841 c:type="GskDebugNode"
1842 parent="RenderNode"
1843 glib:type-name="GskDebugNode"
1844 glib:get-type="gsk_debug_node_get_type"
1845 glib:fundamental="1">
1846 <doc xml:space="preserve"
1847 filename="gsk/gskrendernodeimpl.c"
1848 line="8031">A render node that emits a debugging message when drawing its
1849child node.</doc>
1850 <constructor name="new" c:identifier="gsk_debug_node_new">
1851 <doc xml:space="preserve"
1852 filename="gsk/gskrendernodeimpl.c"
1853 line="8112">Creates a `GskRenderNode` that will add debug information about
1854the given @child.
1855
1856Adding this node has no visual effect.</doc>
1857 <source-position filename="gsk/gskrendernode.h" line="216"/>
1858 <return-value transfer-ownership="full">
1859 <doc xml:space="preserve"
1860 filename="gsk/gskrendernodeimpl.c"
1861 line="8122">A new `GskRenderNode`</doc>
1862 <type name="DebugNode" c:type="GskRenderNode*"/>
1863 </return-value>
1864 <parameters>
1865 <parameter name="child" transfer-ownership="none">
1866 <doc xml:space="preserve"
1867 filename="gsk/gskrendernodeimpl.c"
1868 line="8114">The child to add debug info for</doc>
1869 <type name="RenderNode" c:type="GskRenderNode*"/>
1870 </parameter>
1871 <parameter name="message" transfer-ownership="full">
1872 <doc xml:space="preserve"
1873 filename="gsk/gskrendernodeimpl.c"
1874 line="8115">The debug message</doc>
1875 <type name="utf8" c:type="char*"/>
1876 </parameter>
1877 </parameters>
1878 </constructor>
1879 <method name="get_child" c:identifier="gsk_debug_node_get_child">
1880 <doc xml:space="preserve"
1881 filename="gsk/gskrendernodeimpl.c"
1882 line="8148">Gets the child node that is getting drawn by the given @node.</doc>
1883 <source-position filename="gsk/gskrendernode.h" line="219"/>
1884 <return-value transfer-ownership="none">
1885 <doc xml:space="preserve"
1886 filename="gsk/gskrendernodeimpl.c"
1887 line="8154">the child `GskRenderNode`</doc>
1888 <type name="RenderNode" c:type="GskRenderNode*"/>
1889 </return-value>
1890 <parameters>
1891 <instance-parameter name="node" transfer-ownership="none">
1892 <doc xml:space="preserve"
1893 filename="gsk/gskrendernodeimpl.c"
1894 line="8150">a debug `GskRenderNode`</doc>
1895 <type name="DebugNode" c:type="const GskRenderNode*"/>
1896 </instance-parameter>
1897 </parameters>
1898 </method>
1899 <method name="get_message" c:identifier="gsk_debug_node_get_message">
1900 <doc xml:space="preserve"
1901 filename="gsk/gskrendernodeimpl.c"
1902 line="8164">Gets the debug message that was set on this node</doc>
1903 <source-position filename="gsk/gskrendernode.h" line="221"/>
1904 <return-value transfer-ownership="none">
1905 <doc xml:space="preserve"
1906 filename="gsk/gskrendernodeimpl.c"
1907 line="8170">The debug message</doc>
1908 <type name="utf8" c:type="const char*"/>
1909 </return-value>
1910 <parameters>
1911 <instance-parameter name="node" transfer-ownership="none">
1912 <doc xml:space="preserve"
1913 filename="gsk/gskrendernodeimpl.c"
1914 line="8166">a debug `GskRenderNode`</doc>
1915 <type name="DebugNode" c:type="const GskRenderNode*"/>
1916 </instance-parameter>
1917 </parameters>
1918 </method>
1919 </class>
1920 <class name="FillNode"
1921 c:symbol-prefix="fill_node"
1922 c:type="GskFillNode"
1923 version="4.14"
1924 parent="RenderNode"
1925 glib:type-name="GskFillNode"
1926 glib:get-type="gsk_fill_node_get_type"
1927 glib:fundamental="1">
1928 <doc xml:space="preserve"
1929 filename="gsk/gskrendernodeimpl.c"
1930 line="5897">A render node filling the area given by [struct@Gsk.Path]
1931and [enum@Gsk.FillRule] with the child node.</doc>
1932 <constructor name="new" c:identifier="gsk_fill_node_new" version="4.14">
1933 <doc xml:space="preserve"
1934 filename="gsk/gskrendernodeimpl.c"
1935 line="5999">Creates a `GskRenderNode` that will fill the @child in the area
1936given by @path and @fill_rule.</doc>
1937 <source-position filename="gsk/gskrendernode.h" line="481"/>
1938 <return-value transfer-ownership="none">
1939 <doc xml:space="preserve"
1940 filename="gsk/gskrendernodeimpl.c"
1941 line="6008">A new `GskRenderNode`</doc>
1942 <type name="FillNode" c:type="GskRenderNode*"/>
1943 </return-value>
1944 <parameters>
1945 <parameter name="child" transfer-ownership="none">
1946 <doc xml:space="preserve"
1947 filename="gsk/gskrendernodeimpl.c"
1948 line="6001">The node to fill the area with</doc>
1949 <type name="RenderNode" c:type="GskRenderNode*"/>
1950 </parameter>
1951 <parameter name="path" transfer-ownership="none">
1952 <doc xml:space="preserve"
1953 filename="gsk/gskrendernodeimpl.c"
1954 line="6002">The path describing the area to fill</doc>
1955 <type name="Path" c:type="GskPath*"/>
1956 </parameter>
1957 <parameter name="fill_rule" transfer-ownership="none">
1958 <doc xml:space="preserve"
1959 filename="gsk/gskrendernodeimpl.c"
1960 line="6003">The fill rule to use</doc>
1961 <type name="FillRule" c:type="GskFillRule"/>
1962 </parameter>
1963 </parameters>
1964 </constructor>
1965 <method name="get_child"
1966 c:identifier="gsk_fill_node_get_child"
1967 version="4.14">
1968 <doc xml:space="preserve"
1969 filename="gsk/gskrendernodeimpl.c"
1970 line="6041">Gets the child node that is getting drawn by the given @node.</doc>
1971 <source-position filename="gsk/gskrendernode.h" line="485"/>
1972 <return-value transfer-ownership="none">
1973 <doc xml:space="preserve"
1974 filename="gsk/gskrendernodeimpl.c"
1975 line="6047">The child that is getting drawn</doc>
1976 <type name="RenderNode" c:type="GskRenderNode*"/>
1977 </return-value>
1978 <parameters>
1979 <instance-parameter name="node" transfer-ownership="none">
1980 <doc xml:space="preserve"
1981 filename="gsk/gskrendernodeimpl.c"
1982 line="6043">a fill `GskRenderNode`</doc>
1983 <type name="FillNode" c:type="const GskRenderNode*"/>
1984 </instance-parameter>
1985 </parameters>
1986 </method>
1987 <method name="get_fill_rule"
1988 c:identifier="gsk_fill_node_get_fill_rule"
1989 version="4.14">
1990 <doc xml:space="preserve"
1991 filename="gsk/gskrendernodeimpl.c"
1992 line="6082">Retrieves the fill rule used to determine how the path is filled.</doc>
1993 <source-position filename="gsk/gskrendernode.h" line="489"/>
1994 <return-value transfer-ownership="none">
1995 <doc xml:space="preserve"
1996 filename="gsk/gskrendernodeimpl.c"
1997 line="6088">a `GskFillRule`</doc>
1998 <type name="FillRule" c:type="GskFillRule"/>
1999 </return-value>
2000 <parameters>
2001 <instance-parameter name="node" transfer-ownership="none">
2002 <doc xml:space="preserve"
2003 filename="gsk/gskrendernodeimpl.c"
2004 line="6084">a fill `GskRenderNode`</doc>
2005 <type name="FillNode" c:type="const GskRenderNode*"/>
2006 </instance-parameter>
2007 </parameters>
2008 </method>
2009 <method name="get_path"
2010 c:identifier="gsk_fill_node_get_path"
2011 version="4.14">
2012 <doc xml:space="preserve"
2013 filename="gsk/gskrendernodeimpl.c"
2014 line="6061">Retrieves the path used to describe the area filled with the contents of
2015the @node.</doc>
2016 <source-position filename="gsk/gskrendernode.h" line="487"/>
2017 <return-value transfer-ownership="none">
2018 <doc xml:space="preserve"
2019 filename="gsk/gskrendernodeimpl.c"
2020 line="6068">a `GskPath`</doc>
2021 <type name="Path" c:type="GskPath*"/>
2022 </return-value>
2023 <parameters>
2024 <instance-parameter name="node" transfer-ownership="none">
2025 <doc xml:space="preserve"
2026 filename="gsk/gskrendernodeimpl.c"
2027 line="6063">a fill `GskRenderNode`</doc>
2028 <type name="FillNode" c:type="const GskRenderNode*"/>
2029 </instance-parameter>
2030 </parameters>
2031 </method>
2032 </class>
2033 <enumeration name="FillRule"
2034 version="4.14"
2035 glib:type-name="GskFillRule"
2036 glib:get-type="gsk_fill_rule_get_type"
2037 c:type="GskFillRule">
2038 <doc xml:space="preserve"
2039 filename="gsk/gskenums.h"
2040 line="224">Specifies how paths are filled.
2041
2042Whether or not a point is included in the fill is determined by taking
2043a ray from that point to infinity and looking at intersections with the
2044path. The ray can be in any direction, as long as it doesn't pass through
2045the end point of a segment or have a tricky intersection such as
2046intersecting tangent to the path.
2047
2048(Note that filling is not actually implemented in this way. This
2049is just a description of the rule that is applied.)
2050
2051New entries may be added in future versions.</doc>
2052 <member name="winding"
2053 value="0"
2054 c:identifier="GSK_FILL_RULE_WINDING"
2055 glib:nick="winding"
2056 glib:name="GSK_FILL_RULE_WINDING">
2057 <doc xml:space="preserve"
2058 filename="gsk/gskenums.h"
2059 line="226">If the path crosses the ray from
2060 left-to-right, counts +1. If the path crosses the ray
2061 from right to left, counts -1. (Left and right are determined
2062 from the perspective of looking along the ray from the starting
2063 point.) If the total count is non-zero, the point will be filled.</doc>
2064 </member>
2065 <member name="even_odd"
2066 value="1"
2067 c:identifier="GSK_FILL_RULE_EVEN_ODD"
2068 glib:nick="even-odd"
2069 glib:name="GSK_FILL_RULE_EVEN_ODD">
2070 <doc xml:space="preserve"
2071 filename="gsk/gskenums.h"
2072 line="231">Counts the total number of
2073 intersections, without regard to the orientation of the contour. If
2074 the total number of intersections is odd, the point will be
2075 filled.</doc>
2076 </member>
2077 </enumeration>
2078 <class name="GLRenderer"
2079 c:symbol-prefix="gl_renderer"
2080 c:type="GskGLRenderer"
2081 version="4.2"
2082 parent="Renderer"
2083 glib:type-name="GskGLRenderer"
2084 glib:get-type="gsk_gl_renderer_get_type"
2085 glib:type-struct="GLRendererClass">
2086 <doc xml:space="preserve"
2087 filename="gsk/gpu/gskglrenderer.c"
2088 line="17">Renders a GSK rendernode tree with OpenGL.
2089
2090See [class@Gsk.Renderer].</doc>
2091 <source-position filename="gsk/gpu/gskglrenderer.h" line="34"/>
2092 <constructor name="new" c:identifier="gsk_gl_renderer_new">
2093 <doc xml:space="preserve"
2094 filename="gsk/gpu/gskglrenderer.c"
2095 line="155">Creates an instance of the GL renderer.</doc>
2096 <source-position filename="gsk/gpu/gskglrenderer.h" line="37"/>
2097 <return-value transfer-ownership="full">
2098 <doc xml:space="preserve"
2099 filename="gsk/gpu/gskglrenderer.c"
2100 line="160">a GL renderer</doc>
2101 <type name="Renderer" c:type="GskRenderer*"/>
2102 </return-value>
2103 </constructor>
2104 </class>
2105 <record name="GLRendererClass"
2106 c:type="GskGLRendererClass"
2107 disguised="1"
2108 opaque="1"
2109 glib:is-gtype-struct-for="GLRenderer">
2110 <source-position filename="gsk/gpu/gskglrenderer.h" line="34"/>
2111 </record>
2112 <class name="GLShader"
2113 c:symbol-prefix="gl_shader"
2114 c:type="GskGLShader"
2115 deprecated="1"
2116 deprecated-version="4.16"
2117 parent="GObject.Object"
2118 glib:type-name="GskGLShader"
2119 glib:get-type="gsk_gl_shader_get_type"
2120 glib:type-struct="GLShaderClass">
2121 <doc xml:space="preserve"
2122 filename="gsk/gskglshader.c"
2123 line="19">Implements a fragment shader using GLSL.
2124
2125A fragment shader gets the coordinates being rendered as input and
2126produces the pixel values for that particular pixel. Additionally,
2127the shader can declare a set of other input arguments, called
2128uniforms (as they are uniform over all the calls to your shader in
2129each instance of use). A shader can also receive up to 4
2130textures that it can use as input when producing the pixel data.
2131
2132`GskGLShader` is usually used with gtk_snapshot_push_gl_shader()
2133to produce a [class@Gsk.GLShaderNode] in the rendering hierarchy,
2134and then its input textures are constructed by rendering the child
2135nodes to textures before rendering the shader node itself. (You can
2136pass texture nodes as children if you want to directly use a texture
2137as input).
2138
2139The actual shader code is GLSL code that gets combined with
2140some other code into the fragment shader. Since the exact
2141capabilities of the GPU driver differs between different OpenGL
2142drivers and hardware, GTK adds some defines that you can use
2143to ensure your GLSL code runs on as many drivers as it can.
2144
2145If the OpenGL driver is GLES, then the shader language version
2146is set to 100, and GSK_GLES will be defined in the shader.
2147
2148Otherwise, if the OpenGL driver does not support the 3.2 core profile,
2149then the shader will run with language version 110 for GL2 and 130 for GL3,
2150and GSK_LEGACY will be defined in the shader.
2151
2152If the OpenGL driver supports the 3.2 code profile, it will be used,
2153the shader language version is set to 150, and GSK_GL3 will be defined
2154in the shader.
2155
2156The main function the shader must implement is:
2157
2158```glsl
2159 void mainImage(out vec4 fragColor,
2160 in vec2 fragCoord,
2161 in vec2 resolution,
2162 in vec2 uv)
2163```
2164
2165Where the input @fragCoord is the coordinate of the pixel we're
2166currently rendering, relative to the boundary rectangle that was
2167specified in the `GskGLShaderNode`, and @resolution is the width and
2168height of that rectangle. This is in the typical GTK coordinate
2169system with the origin in the top left. @uv contains the u and v
2170coordinates that can be used to index a texture at the
2171corresponding point. These coordinates are in the [0..1]x[0..1]
2172region, with 0, 0 being in the lower left corder (which is typical
2173for OpenGL).
2174
2175The output @fragColor should be a RGBA color (with
2176premultiplied alpha) that will be used as the output for the
2177specified pixel location. Note that this output will be
2178automatically clipped to the clip region of the glshader node.
2179
2180In addition to the function arguments the shader can define
2181up to 4 uniforms for textures which must be called u_textureN
2182(i.e. u_texture1 to u_texture4) as well as any custom uniforms
2183you want of types int, uint, bool, float, vec2, vec3 or vec4.
2184
2185All textures sources contain premultiplied alpha colors, but if some
2186there are outer sources of colors there is a gsk_premultiply() helper
2187to compute premultiplication when needed.
2188
2189Note that GTK parses the uniform declarations, so each uniform has to
2190be on a line by itself with no other code, like so:
2191
2192```glsl
2193uniform float u_time;
2194uniform vec3 u_color;
2195uniform sampler2D u_texture1;
2196uniform sampler2D u_texture2;
2197```
2198
2199GTK uses the "gsk" namespace in the symbols it uses in the
2200shader, so your code should not use any symbols with the prefix gsk
2201or GSK. There are some helper functions declared that you can use:
2202
2203```glsl
2204vec4 GskTexture(sampler2D sampler, vec2 texCoords);
2205```
2206
2207This samples a texture (e.g. u_texture1) at the specified
2208coordinates, and contains some helper ifdefs to ensure that
2209it works on all OpenGL versions.
2210
2211You can compile the shader yourself using [method@Gsk.GLShader.compile],
2212otherwise the GSK renderer will do it when it handling the glshader
2213node. If errors occurs, the returned @error will include the glsl
2214sources, so you can see what GSK was passing to the compiler. You
2215can also set GSK_DEBUG=shaders in the environment to see the sources
2216and other relevant information about all shaders that GSK is handling.
2217
2218# An example shader
2219
2220```glsl
2221uniform float position;
2222uniform sampler2D u_texture1;
2223uniform sampler2D u_texture2;
2224
2225void mainImage(out vec4 fragColor,
2226 in vec2 fragCoord,
2227 in vec2 resolution,
2228 in vec2 uv) {
2229 vec4 source1 = GskTexture(u_texture1, uv);
2230 vec4 source2 = GskTexture(u_texture2, uv);
2231
2232 fragColor = position * source1 + (1.0 - position) * source2;
2233}
2234```</doc>
2235 <doc-deprecated xml:space="preserve">This feature was deprecated in GTK 4.16 after the new
2236rendering infrastructure introduced in 4.14 did not support it. The lack
2237of Vulkan integration would have made it a very hard feature to support.
2238If you want to use OpenGL directly, you should look at
2239[GtkGLArea](../gtk4/class.GLArea.html), which uses a different approach
2240and is still well-supported.</doc-deprecated>
2241 <source-position filename="gsk/gskglshader.h" line="49"/>
2242 <constructor name="new_from_bytes"
2243 c:identifier="gsk_gl_shader_new_from_bytes"
2244 deprecated="1"
2245 deprecated-version="4.16">
2246 <doc xml:space="preserve"
2247 filename="gsk/gskglshader.c"
2248 line="483">Creates a `GskGLShader` that will render pixels using the specified code.</doc>
2249 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2250 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2251 for OpenGL rendering.</doc-deprecated>
2252 <source-position filename="gsk/gskglshader.h" line="52"/>
2253 <return-value transfer-ownership="full">
2254 <doc xml:space="preserve"
2255 filename="gsk/gskglshader.c"
2256 line="489">A new `GskGLShader`</doc>
2257 <type name="GLShader" c:type="GskGLShader*"/>
2258 </return-value>
2259 <parameters>
2260 <parameter name="sourcecode" transfer-ownership="none">
2261 <doc xml:space="preserve"
2262 filename="gsk/gskglshader.c"
2263 line="485">GLSL sourcecode for the shader, as a `GBytes`</doc>
2264 <type name="GLib.Bytes" c:type="GBytes*"/>
2265 </parameter>
2266 </parameters>
2267 </constructor>
2268 <constructor name="new_from_resource"
2269 c:identifier="gsk_gl_shader_new_from_resource"
2270 deprecated="1"
2271 deprecated-version="4.16">
2272 <doc xml:space="preserve"
2273 filename="gsk/gskglshader.c"
2274 line="505">Creates a `GskGLShader` that will render pixels using the specified code.</doc>
2275 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2276 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2277 for OpenGL rendering.</doc-deprecated>
2278 <source-position filename="gsk/gskglshader.h" line="54"/>
2279 <return-value transfer-ownership="full">
2280 <doc xml:space="preserve"
2281 filename="gsk/gskglshader.c"
2282 line="512">A new `GskGLShader`</doc>
2283 <type name="GLShader" c:type="GskGLShader*"/>
2284 </return-value>
2285 <parameters>
2286 <parameter name="resource_path" transfer-ownership="none">
2287 <doc xml:space="preserve"
2288 filename="gsk/gskglshader.c"
2289 line="507">path to a resource that contains the GLSL sourcecode for
2290 the shader</doc>
2291 <type name="utf8" c:type="const char*"/>
2292 </parameter>
2293 </parameters>
2294 </constructor>
2295 <method name="compile"
2296 c:identifier="gsk_gl_shader_compile"
2297 deprecated="1"
2298 deprecated-version="4.16"
2299 throws="1">
2300 <doc xml:space="preserve"
2301 filename="gsk/gskglshader.c"
2302 line="528">Tries to compile the @shader for the given @renderer.
2303
2304If there is a problem, this function returns %FALSE and reports
2305an error. You should use this function before relying on the shader
2306for rendering and use a fallback with a simpler shader or without
2307shaders if it fails.
2308
2309Note that this will modify the rendering state (for example
2310change the current GL context) and requires the renderer to be
2311set up. This means that the widget has to be realized. Commonly you
2312want to call this from the realize signal of a widget, or during
2313widget snapshot.</doc>
2314 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2315 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2316 for OpenGL rendering.</doc-deprecated>
2317 <source-position filename="gsk/gskglshader.h" line="56"/>
2318 <return-value transfer-ownership="none">
2319 <doc xml:space="preserve"
2320 filename="gsk/gskglshader.c"
2321 line="547">%TRUE on success, %FALSE if an error occurred</doc>
2322 <type name="gboolean" c:type="gboolean"/>
2323 </return-value>
2324 <parameters>
2325 <instance-parameter name="shader" transfer-ownership="none">
2326 <doc xml:space="preserve"
2327 filename="gsk/gskglshader.c"
2328 line="530">a `GskGLShader`</doc>
2329 <type name="GLShader" c:type="GskGLShader*"/>
2330 </instance-parameter>
2331 <parameter name="renderer" transfer-ownership="none">
2332 <doc xml:space="preserve"
2333 filename="gsk/gskglshader.c"
2334 line="531">a `GskRenderer`</doc>
2335 <type name="Renderer" c:type="GskRenderer*"/>
2336 </parameter>
2337 </parameters>
2338 </method>
2339 <method name="find_uniform_by_name"
2340 c:identifier="gsk_gl_shader_find_uniform_by_name"
2341 deprecated="1"
2342 deprecated-version="4.16">
2343 <doc xml:space="preserve"
2344 filename="gsk/gskglshader.c"
2345 line="674">Looks for a uniform by the name @name, and returns the index
2346of the uniform, or -1 if it was not found.</doc>
2347 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2348 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2349 for OpenGL rendering.</doc-deprecated>
2350 <source-position filename="gsk/gskglshader.h" line="71"/>
2351 <return-value transfer-ownership="none">
2352 <doc xml:space="preserve"
2353 filename="gsk/gskglshader.c"
2354 line="682">The index of the uniform, or -1</doc>
2355 <type name="gint" c:type="int"/>
2356 </return-value>
2357 <parameters>
2358 <instance-parameter name="shader" transfer-ownership="none">
2359 <doc xml:space="preserve"
2360 filename="gsk/gskglshader.c"
2361 line="676">a `GskGLShader`</doc>
2362 <type name="GLShader" c:type="GskGLShader*"/>
2363 </instance-parameter>
2364 <parameter name="name" transfer-ownership="none">
2365 <doc xml:space="preserve"
2366 filename="gsk/gskglshader.c"
2367 line="677">uniform name</doc>
2368 <type name="utf8" c:type="const char*"/>
2369 </parameter>
2370 </parameters>
2371 </method>
2372 <method name="format_args"
2373 c:identifier="gsk_gl_shader_format_args"
2374 introspectable="0"
2375 deprecated="1"
2376 deprecated-version="4.16">
2377 <doc xml:space="preserve"
2378 filename="gsk/gskglshader.c"
2379 line="1141">Formats the uniform data as needed for feeding the named uniforms
2380values into the shader.
2381
2382The argument list is a list of pairs of names, and values for the types
2383that match the declared uniforms (i.e. double/int/guint/gboolean for
2384primitive values and `graphene_vecN_t *` for vecN uniforms).
2385
2386Any uniforms of the shader that are not included in the argument list
2387are zero-initialized.</doc>
2388 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2389 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2390 for OpenGL rendering.</doc-deprecated>
2391 <source-position filename="gsk/gskglshader.h" line="89"/>
2392 <return-value transfer-ownership="full">
2393 <doc xml:space="preserve"
2394 filename="gsk/gskglshader.c"
2395 line="1157">A newly allocated block of data which can be
2396 passed to [ctor@Gsk.GLShaderNode.new].</doc>
2397 <type name="GLib.Bytes" c:type="GBytes*"/>
2398 </return-value>
2399 <parameters>
2400 <instance-parameter name="shader" transfer-ownership="none">
2401 <doc xml:space="preserve"
2402 filename="gsk/gskglshader.c"
2403 line="1143">a `GskGLShader`</doc>
2404 <type name="GLShader" c:type="GskGLShader*"/>
2405 </instance-parameter>
2406 <parameter name="..." transfer-ownership="none">
2407 <doc xml:space="preserve"
2408 filename="gsk/gskglshader.c"
2409 line="1144">name-Value pairs for the uniforms of @shader, ending with
2410 a %NULL name</doc>
2411 <varargs/>
2412 </parameter>
2413 </parameters>
2414 </method>
2415 <method name="format_args_va"
2416 c:identifier="gsk_gl_shader_format_args_va"
2417 introspectable="0"
2418 deprecated="1"
2419 deprecated-version="4.16">
2420 <doc xml:space="preserve"
2421 filename="gsk/gskglshader.c"
2422 line="1051">Formats the uniform data as needed for feeding the named uniforms
2423values into the shader.
2424
2425The argument list is a list of pairs of names, and values for the
2426types that match the declared uniforms (i.e. double/int/guint/gboolean
2427for primitive values and `graphene_vecN_t *` for vecN uniforms).
2428
2429It is an error to pass a uniform name that is not declared by the shader.
2430
2431Any uniforms of the shader that are not included in the argument list
2432are zero-initialized.</doc>
2433 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2434 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2435 for OpenGL rendering.</doc-deprecated>
2436 <source-position filename="gsk/gskglshader.h" line="86"/>
2437 <return-value transfer-ownership="full">
2438 <doc xml:space="preserve"
2439 filename="gsk/gskglshader.c"
2440 line="1069">A newly allocated block of data which can be
2441 passed to [ctor@Gsk.GLShaderNode.new].</doc>
2442 <type name="GLib.Bytes" c:type="GBytes*"/>
2443 </return-value>
2444 <parameters>
2445 <instance-parameter name="shader" transfer-ownership="none">
2446 <doc xml:space="preserve"
2447 filename="gsk/gskglshader.c"
2448 line="1053">a `GskGLShader`</doc>
2449 <type name="GLShader" c:type="GskGLShader*"/>
2450 </instance-parameter>
2451 <parameter name="uniforms" transfer-ownership="none">
2452 <doc xml:space="preserve"
2453 filename="gsk/gskglshader.c"
2454 line="1054">name-Value pairs for the uniforms of @shader, ending
2455 with a %NULL name</doc>
2456 <type name="va_list" c:type="va_list"/>
2457 </parameter>
2458 </parameters>
2459 </method>
2460 <method name="get_arg_bool"
2461 c:identifier="gsk_gl_shader_get_arg_bool"
2462 deprecated="1"
2463 deprecated-version="4.16">
2464 <doc xml:space="preserve"
2465 filename="gsk/gskglshader.c"
2466 line="903">Gets the value of the uniform @idx in the @args block.
2467
2468The uniform must be of bool type.</doc>
2469 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2470 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2471 for OpenGL rendering.</doc-deprecated>
2472 <source-position filename="gsk/gskglshader.h" line="105"/>
2473 <return-value transfer-ownership="none">
2474 <doc xml:space="preserve"
2475 filename="gsk/gskglshader.c"
2476 line="913">The value</doc>
2477 <type name="gboolean" c:type="gboolean"/>
2478 </return-value>
2479 <parameters>
2480 <instance-parameter name="shader" transfer-ownership="none">
2481 <doc xml:space="preserve"
2482 filename="gsk/gskglshader.c"
2483 line="905">a `GskGLShader`</doc>
2484 <type name="GLShader" c:type="GskGLShader*"/>
2485 </instance-parameter>
2486 <parameter name="args" transfer-ownership="none">
2487 <doc xml:space="preserve"
2488 filename="gsk/gskglshader.c"
2489 line="906">uniform arguments</doc>
2490 <type name="GLib.Bytes" c:type="GBytes*"/>
2491 </parameter>
2492 <parameter name="idx" transfer-ownership="none">
2493 <doc xml:space="preserve"
2494 filename="gsk/gskglshader.c"
2495 line="907">index of the uniform</doc>
2496 <type name="gint" c:type="int"/>
2497 </parameter>
2498 </parameters>
2499 </method>
2500 <method name="get_arg_float"
2501 c:identifier="gsk_gl_shader_get_arg_float"
2502 deprecated="1"
2503 deprecated-version="4.16">
2504 <doc xml:space="preserve"
2505 filename="gsk/gskglshader.c"
2506 line="792">Gets the value of the uniform @idx in the @args block.
2507
2508The uniform must be of float type.</doc>
2509 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2510 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2511 for OpenGL rendering.</doc-deprecated>
2512 <source-position filename="gsk/gskglshader.h" line="93"/>
2513 <return-value transfer-ownership="none">
2514 <doc xml:space="preserve"
2515 filename="gsk/gskglshader.c"
2516 line="802">The value</doc>
2517 <type name="gfloat" c:type="float"/>
2518 </return-value>
2519 <parameters>
2520 <instance-parameter name="shader" transfer-ownership="none">
2521 <doc xml:space="preserve"
2522 filename="gsk/gskglshader.c"
2523 line="794">a `GskGLShader`</doc>
2524 <type name="GLShader" c:type="GskGLShader*"/>
2525 </instance-parameter>
2526 <parameter name="args" transfer-ownership="none">
2527 <doc xml:space="preserve"
2528 filename="gsk/gskglshader.c"
2529 line="795">uniform arguments</doc>
2530 <type name="GLib.Bytes" c:type="GBytes*"/>
2531 </parameter>
2532 <parameter name="idx" transfer-ownership="none">
2533 <doc xml:space="preserve"
2534 filename="gsk/gskglshader.c"
2535 line="796">index of the uniform</doc>
2536 <type name="gint" c:type="int"/>
2537 </parameter>
2538 </parameters>
2539 </method>
2540 <method name="get_arg_int"
2541 c:identifier="gsk_gl_shader_get_arg_int"
2542 deprecated="1"
2543 deprecated-version="4.16">
2544 <doc xml:space="preserve"
2545 filename="gsk/gskglshader.c"
2546 line="829">Gets the value of the uniform @idx in the @args block.
2547
2548The uniform must be of int type.</doc>
2549 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2550 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2551 for OpenGL rendering.</doc-deprecated>
2552 <source-position filename="gsk/gskglshader.h" line="97"/>
2553 <return-value transfer-ownership="none">
2554 <doc xml:space="preserve"
2555 filename="gsk/gskglshader.c"
2556 line="839">The value</doc>
2557 <type name="gint32" c:type="gint32"/>
2558 </return-value>
2559 <parameters>
2560 <instance-parameter name="shader" transfer-ownership="none">
2561 <doc xml:space="preserve"
2562 filename="gsk/gskglshader.c"
2563 line="831">a `GskGLShader`</doc>
2564 <type name="GLShader" c:type="GskGLShader*"/>
2565 </instance-parameter>
2566 <parameter name="args" transfer-ownership="none">
2567 <doc xml:space="preserve"
2568 filename="gsk/gskglshader.c"
2569 line="832">uniform arguments</doc>
2570 <type name="GLib.Bytes" c:type="GBytes*"/>
2571 </parameter>
2572 <parameter name="idx" transfer-ownership="none">
2573 <doc xml:space="preserve"
2574 filename="gsk/gskglshader.c"
2575 line="833">index of the uniform</doc>
2576 <type name="gint" c:type="int"/>
2577 </parameter>
2578 </parameters>
2579 </method>
2580 <method name="get_arg_uint"
2581 c:identifier="gsk_gl_shader_get_arg_uint"
2582 deprecated="1"
2583 deprecated-version="4.16">
2584 <doc xml:space="preserve"
2585 filename="gsk/gskglshader.c"
2586 line="866">Gets the value of the uniform @idx in the @args block.
2587
2588The uniform must be of uint type.</doc>
2589 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2590 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2591 for OpenGL rendering.</doc-deprecated>
2592 <source-position filename="gsk/gskglshader.h" line="101"/>
2593 <return-value transfer-ownership="none">
2594 <doc xml:space="preserve"
2595 filename="gsk/gskglshader.c"
2596 line="876">The value</doc>
2597 <type name="guint32" c:type="guint32"/>
2598 </return-value>
2599 <parameters>
2600 <instance-parameter name="shader" transfer-ownership="none">
2601 <doc xml:space="preserve"
2602 filename="gsk/gskglshader.c"
2603 line="868">a `GskGLShader`</doc>
2604 <type name="GLShader" c:type="GskGLShader*"/>
2605 </instance-parameter>
2606 <parameter name="args" transfer-ownership="none">
2607 <doc xml:space="preserve"
2608 filename="gsk/gskglshader.c"
2609 line="869">uniform arguments</doc>
2610 <type name="GLib.Bytes" c:type="GBytes*"/>
2611 </parameter>
2612 <parameter name="idx" transfer-ownership="none">
2613 <doc xml:space="preserve"
2614 filename="gsk/gskglshader.c"
2615 line="870">index of the uniform</doc>
2616 <type name="gint" c:type="int"/>
2617 </parameter>
2618 </parameters>
2619 </method>
2620 <method name="get_arg_vec2"
2621 c:identifier="gsk_gl_shader_get_arg_vec2"
2622 deprecated="1"
2623 deprecated-version="4.16">
2624 <doc xml:space="preserve"
2625 filename="gsk/gskglshader.c"
2626 line="940">Gets the value of the uniform @idx in the @args block.
2627
2628The uniform must be of vec2 type.</doc>
2629 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2630 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2631 for OpenGL rendering.</doc-deprecated>
2632 <source-position filename="gsk/gskglshader.h" line="109"/>
2633 <return-value transfer-ownership="none">
2634 <type name="none" c:type="void"/>
2635 </return-value>
2636 <parameters>
2637 <instance-parameter name="shader" transfer-ownership="none">
2638 <doc xml:space="preserve"
2639 filename="gsk/gskglshader.c"
2640 line="942">a `GskGLShader`</doc>
2641 <type name="GLShader" c:type="GskGLShader*"/>
2642 </instance-parameter>
2643 <parameter name="args" transfer-ownership="none">
2644 <doc xml:space="preserve"
2645 filename="gsk/gskglshader.c"
2646 line="943">uniform arguments</doc>
2647 <type name="GLib.Bytes" c:type="GBytes*"/>
2648 </parameter>
2649 <parameter name="idx" transfer-ownership="none">
2650 <doc xml:space="preserve"
2651 filename="gsk/gskglshader.c"
2652 line="944">index of the uniform</doc>
2653 <type name="gint" c:type="int"/>
2654 </parameter>
2655 <parameter name="out_value" transfer-ownership="none">
2656 <doc xml:space="preserve"
2657 filename="gsk/gskglshader.c"
2658 line="945">location to store the uniform value in</doc>
2659 <type name="Graphene.Vec2" c:type="graphene_vec2_t*"/>
2660 </parameter>
2661 </parameters>
2662 </method>
2663 <method name="get_arg_vec3"
2664 c:identifier="gsk_gl_shader_get_arg_vec3"
2665 deprecated="1"
2666 deprecated-version="4.16">
2667 <doc xml:space="preserve"
2668 filename="gsk/gskglshader.c"
2669 line="977">Gets the value of the uniform @idx in the @args block.
2670
2671The uniform must be of vec3 type.</doc>
2672 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2673 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2674 for OpenGL rendering.</doc-deprecated>
2675 <source-position filename="gsk/gskglshader.h" line="114"/>
2676 <return-value transfer-ownership="none">
2677 <type name="none" c:type="void"/>
2678 </return-value>
2679 <parameters>
2680 <instance-parameter name="shader" transfer-ownership="none">
2681 <doc xml:space="preserve"
2682 filename="gsk/gskglshader.c"
2683 line="979">a `GskGLShader`</doc>
2684 <type name="GLShader" c:type="GskGLShader*"/>
2685 </instance-parameter>
2686 <parameter name="args" transfer-ownership="none">
2687 <doc xml:space="preserve"
2688 filename="gsk/gskglshader.c"
2689 line="980">uniform arguments</doc>
2690 <type name="GLib.Bytes" c:type="GBytes*"/>
2691 </parameter>
2692 <parameter name="idx" transfer-ownership="none">
2693 <doc xml:space="preserve"
2694 filename="gsk/gskglshader.c"
2695 line="981">index of the uniform</doc>
2696 <type name="gint" c:type="int"/>
2697 </parameter>
2698 <parameter name="out_value" transfer-ownership="none">
2699 <doc xml:space="preserve"
2700 filename="gsk/gskglshader.c"
2701 line="982">location to store the uniform value in</doc>
2702 <type name="Graphene.Vec3" c:type="graphene_vec3_t*"/>
2703 </parameter>
2704 </parameters>
2705 </method>
2706 <method name="get_arg_vec4"
2707 c:identifier="gsk_gl_shader_get_arg_vec4"
2708 deprecated="1"
2709 deprecated-version="4.16">
2710 <doc xml:space="preserve"
2711 filename="gsk/gskglshader.c"
2712 line="1014">Gets the value of the uniform @idx in the @args block.
2713
2714The uniform must be of vec4 type.</doc>
2715 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2716 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2717 for OpenGL rendering.</doc-deprecated>
2718 <source-position filename="gsk/gskglshader.h" line="119"/>
2719 <return-value transfer-ownership="none">
2720 <type name="none" c:type="void"/>
2721 </return-value>
2722 <parameters>
2723 <instance-parameter name="shader" transfer-ownership="none">
2724 <doc xml:space="preserve"
2725 filename="gsk/gskglshader.c"
2726 line="1016">a `GskGLShader`</doc>
2727 <type name="GLShader" c:type="GskGLShader*"/>
2728 </instance-parameter>
2729 <parameter name="args" transfer-ownership="none">
2730 <doc xml:space="preserve"
2731 filename="gsk/gskglshader.c"
2732 line="1017">uniform arguments</doc>
2733 <type name="GLib.Bytes" c:type="GBytes*"/>
2734 </parameter>
2735 <parameter name="idx" transfer-ownership="none">
2736 <doc xml:space="preserve"
2737 filename="gsk/gskglshader.c"
2738 line="1018">index of the uniform</doc>
2739 <type name="gint" c:type="int"/>
2740 </parameter>
2741 <parameter name="out_value" transfer-ownership="none">
2742 <doc xml:space="preserve"
2743 filename="gsk/gskglshader.c"
2744 line="1019">location to store set the uniform value in</doc>
2745 <type name="Graphene.Vec4" c:type="graphene_vec4_t*"/>
2746 </parameter>
2747 </parameters>
2748 </method>
2749 <method name="get_args_size"
2750 c:identifier="gsk_gl_shader_get_args_size"
2751 deprecated="1"
2752 deprecated-version="4.16">
2753 <doc xml:space="preserve"
2754 filename="gsk/gskglshader.c"
2755 line="758">Get the size of the data block used to specify arguments for this shader.</doc>
2756 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2757 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2758 for OpenGL rendering.</doc-deprecated>
2759 <source-position filename="gsk/gskglshader.h" line="80"/>
2760 <return-value transfer-ownership="none">
2761 <doc xml:space="preserve"
2762 filename="gsk/gskglshader.c"
2763 line="764">The size of the data block</doc>
2764 <type name="gsize" c:type="gsize"/>
2765 </return-value>
2766 <parameters>
2767 <instance-parameter name="shader" transfer-ownership="none">
2768 <doc xml:space="preserve"
2769 filename="gsk/gskglshader.c"
2770 line="760">a `GskGLShader`</doc>
2771 <type name="GLShader" c:type="GskGLShader*"/>
2772 </instance-parameter>
2773 </parameters>
2774 </method>
2775 <method name="get_n_textures"
2776 c:identifier="gsk_gl_shader_get_n_textures"
2777 deprecated="1"
2778 deprecated-version="4.16">
2779 <doc xml:space="preserve"
2780 filename="gsk/gskglshader.c"
2781 line="607">Returns the number of textures that the shader requires.
2782
2783This can be used to check that the a passed shader works
2784in your usecase. It is determined by looking at the highest
2785u_textureN value that the shader defines.</doc>
2786 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2787 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2788 for OpenGL rendering.</doc-deprecated>
2789 <source-position filename="gsk/gskglshader.h" line="64"/>
2790 <return-value transfer-ownership="none">
2791 <doc xml:space="preserve"
2792 filename="gsk/gskglshader.c"
2793 line="617">The number of texture inputs required by @shader</doc>
2794 <type name="gint" c:type="int"/>
2795 </return-value>
2796 <parameters>
2797 <instance-parameter name="shader" transfer-ownership="none">
2798 <doc xml:space="preserve"
2799 filename="gsk/gskglshader.c"
2800 line="609">a `GskGLShader`</doc>
2801 <type name="GLShader" c:type="GskGLShader*"/>
2802 </instance-parameter>
2803 </parameters>
2804 </method>
2805 <method name="get_n_uniforms"
2806 c:identifier="gsk_gl_shader_get_n_uniforms"
2807 deprecated="1"
2808 deprecated-version="4.16">
2809 <doc xml:space="preserve"
2810 filename="gsk/gskglshader.c"
2811 line="631">Get the number of declared uniforms for this shader.</doc>
2812 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2813 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2814 for OpenGL rendering.</doc-deprecated>
2815 <source-position filename="gsk/gskglshader.h" line="66"/>
2816 <return-value transfer-ownership="none">
2817 <doc xml:space="preserve"
2818 filename="gsk/gskglshader.c"
2819 line="637">The number of declared uniforms</doc>
2820 <type name="gint" c:type="int"/>
2821 </return-value>
2822 <parameters>
2823 <instance-parameter name="shader" transfer-ownership="none">
2824 <doc xml:space="preserve"
2825 filename="gsk/gskglshader.c"
2826 line="633">a `GskGLShader`</doc>
2827 <type name="GLShader" c:type="GskGLShader*"/>
2828 </instance-parameter>
2829 </parameters>
2830 </method>
2831 <method name="get_resource"
2832 c:identifier="gsk_gl_shader_get_resource"
2833 glib:get-property="resource"
2834 deprecated="1"
2835 deprecated-version="4.16">
2836 <doc xml:space="preserve"
2837 filename="gsk/gskglshader.c"
2838 line="586">Gets the resource path for the GLSL sourcecode being used
2839to render this shader.</doc>
2840 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2841 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2842 for OpenGL rendering.</doc-deprecated>
2843 <source-position filename="gsk/gskglshader.h" line="62"/>
2844 <return-value transfer-ownership="none" nullable="1">
2845 <doc xml:space="preserve"
2846 filename="gsk/gskglshader.c"
2847 line="593">The resource path for the shader</doc>
2848 <type name="utf8" c:type="const char*"/>
2849 </return-value>
2850 <parameters>
2851 <instance-parameter name="shader" transfer-ownership="none">
2852 <doc xml:space="preserve"
2853 filename="gsk/gskglshader.c"
2854 line="588">a `GskGLShader`</doc>
2855 <type name="GLShader" c:type="GskGLShader*"/>
2856 </instance-parameter>
2857 </parameters>
2858 </method>
2859 <method name="get_source"
2860 c:identifier="gsk_gl_shader_get_source"
2861 glib:get-property="source"
2862 deprecated="1"
2863 deprecated-version="4.16">
2864 <doc xml:space="preserve"
2865 filename="gsk/gskglshader.c"
2866 line="566">Gets the GLSL sourcecode being used to render this shader.</doc>
2867 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2868 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2869 for OpenGL rendering.</doc-deprecated>
2870 <source-position filename="gsk/gskglshader.h" line="60"/>
2871 <return-value transfer-ownership="none">
2872 <doc xml:space="preserve"
2873 filename="gsk/gskglshader.c"
2874 line="572">The source code for the shader</doc>
2875 <type name="GLib.Bytes" c:type="GBytes*"/>
2876 </return-value>
2877 <parameters>
2878 <instance-parameter name="shader" transfer-ownership="none">
2879 <doc xml:space="preserve"
2880 filename="gsk/gskglshader.c"
2881 line="568">a `GskGLShader`</doc>
2882 <type name="GLShader" c:type="GskGLShader*"/>
2883 </instance-parameter>
2884 </parameters>
2885 </method>
2886 <method name="get_uniform_name"
2887 c:identifier="gsk_gl_shader_get_uniform_name"
2888 deprecated="1"
2889 deprecated-version="4.16">
2890 <doc xml:space="preserve"
2891 filename="gsk/gskglshader.c"
2892 line="651">Get the name of the declared uniform for this shader at index @idx.</doc>
2893 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2894 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2895 for OpenGL rendering.</doc-deprecated>
2896 <source-position filename="gsk/gskglshader.h" line="68"/>
2897 <return-value transfer-ownership="none">
2898 <doc xml:space="preserve"
2899 filename="gsk/gskglshader.c"
2900 line="658">The name of the declared uniform</doc>
2901 <type name="utf8" c:type="const char*"/>
2902 </return-value>
2903 <parameters>
2904 <instance-parameter name="shader" transfer-ownership="none">
2905 <doc xml:space="preserve"
2906 filename="gsk/gskglshader.c"
2907 line="653">a `GskGLShader`</doc>
2908 <type name="GLShader" c:type="GskGLShader*"/>
2909 </instance-parameter>
2910 <parameter name="idx" transfer-ownership="none">
2911 <doc xml:space="preserve"
2912 filename="gsk/gskglshader.c"
2913 line="654">index of the uniform</doc>
2914 <type name="gint" c:type="int"/>
2915 </parameter>
2916 </parameters>
2917 </method>
2918 <method name="get_uniform_offset"
2919 c:identifier="gsk_gl_shader_get_uniform_offset"
2920 deprecated="1"
2921 deprecated-version="4.16">
2922 <doc xml:space="preserve"
2923 filename="gsk/gskglshader.c"
2924 line="727">Get the offset into the data block where data for this uniforms is stored.</doc>
2925 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2926 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2927 for OpenGL rendering.</doc-deprecated>
2928 <source-position filename="gsk/gskglshader.h" line="77"/>
2929 <return-value transfer-ownership="none">
2930 <doc xml:space="preserve"
2931 filename="gsk/gskglshader.c"
2932 line="734">The data offset</doc>
2933 <type name="gint" c:type="int"/>
2934 </return-value>
2935 <parameters>
2936 <instance-parameter name="shader" transfer-ownership="none">
2937 <doc xml:space="preserve"
2938 filename="gsk/gskglshader.c"
2939 line="729">a `GskGLShader`</doc>
2940 <type name="GLShader" c:type="GskGLShader*"/>
2941 </instance-parameter>
2942 <parameter name="idx" transfer-ownership="none">
2943 <doc xml:space="preserve"
2944 filename="gsk/gskglshader.c"
2945 line="730">index of the uniform</doc>
2946 <type name="gint" c:type="int"/>
2947 </parameter>
2948 </parameters>
2949 </method>
2950 <method name="get_uniform_type"
2951 c:identifier="gsk_gl_shader_get_uniform_type"
2952 deprecated="1"
2953 deprecated-version="4.16">
2954 <doc xml:space="preserve"
2955 filename="gsk/gskglshader.c"
2956 line="704">Get the type of the declared uniform for this shader at index @idx.</doc>
2957 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
2958 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
2959 for OpenGL rendering.</doc-deprecated>
2960 <source-position filename="gsk/gskglshader.h" line="74"/>
2961 <return-value transfer-ownership="none">
2962 <doc xml:space="preserve"
2963 filename="gsk/gskglshader.c"
2964 line="711">The type of the declared uniform</doc>
2965 <type name="GLUniformType" c:type="GskGLUniformType"/>
2966 </return-value>
2967 <parameters>
2968 <instance-parameter name="shader" transfer-ownership="none">
2969 <doc xml:space="preserve"
2970 filename="gsk/gskglshader.c"
2971 line="706">a `GskGLShader`</doc>
2972 <type name="GLShader" c:type="GskGLShader*"/>
2973 </instance-parameter>
2974 <parameter name="idx" transfer-ownership="none">
2975 <doc xml:space="preserve"
2976 filename="gsk/gskglshader.c"
2977 line="707">index of the uniform</doc>
2978 <type name="gint" c:type="int"/>
2979 </parameter>
2980 </parameters>
2981 </method>
2982 <property name="resource"
2983 writable="1"
2984 construct-only="1"
2985 transfer-ownership="none"
2986 getter="get_resource"
2987 default-value="NULL">
2988 <doc xml:space="preserve"
2989 filename="gsk/gskglshader.c"
2990 line="459">Resource containing the source code for the shader.
2991
2992If the shader source is not coming from a resource, this
2993will be %NULL.</doc>
2994 <type name="utf8" c:type="gchar*"/>
2995 </property>
2996 <property name="source"
2997 writable="1"
2998 construct-only="1"
2999 transfer-ownership="none"
3000 getter="get_source">
3001 <doc xml:space="preserve"
3002 filename="gsk/gskglshader.c"
3003 line="447">The source code for the shader, as a `GBytes`.</doc>
3004 <type name="GLib.Bytes"/>
3005 </property>
3006 </class>
3007 <record name="GLShaderClass"
3008 c:type="GskGLShaderClass"
3009 glib:is-gtype-struct-for="GLShader">
3010 <source-position filename="gsk/gskglshader.h" line="49"/>
3011 <field name="parent_class">
3012 <type name="GObject.ObjectClass" c:type="GObjectClass"/>
3013 </field>
3014 </record>
3015 <class name="GLShaderNode"
3016 c:symbol-prefix="gl_shader_node"
3017 c:type="GskGLShaderNode"
3018 parent="RenderNode"
3019 glib:type-name="GskGLShaderNode"
3020 glib:get-type="gsk_gl_shader_node_get_type"
3021 glib:fundamental="1">
3022 <doc xml:space="preserve"
3023 filename="gsk/gskrendernodeimpl.c"
3024 line="8184">A render node using a GL shader when drawing its children nodes.</doc>
3025 <constructor name="new"
3026 c:identifier="gsk_gl_shader_node_new"
3027 deprecated="1"
3028 deprecated-version="4.16">
3029 <doc xml:space="preserve"
3030 filename="gsk/gskrendernodeimpl.c"
3031 line="8267">Creates a `GskRenderNode` that will render the given @shader into the
3032area given by @bounds.
3033
3034The @args is a block of data to use for uniform input, as per types and
3035offsets defined by the @shader. Normally this is generated by
3036[method@Gsk.GLShader.format_args] or [struct@Gsk.ShaderArgsBuilder].
3037
3038See [class@Gsk.GLShader] for details about how the shader should be written.
3039
3040All the children will be rendered into textures (if they aren't already
3041`GskTextureNodes`, which will be used directly). These textures will be
3042sent as input to the shader.
3043
3044If the renderer doesn't support GL shaders, or if there is any problem
3045when compiling the shader, then the node will draw pink. You should use
3046[method@Gsk.GLShader.compile] to ensure the @shader will work for the
3047renderer before using it.</doc>
3048 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
3049 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
3050 for OpenGL rendering.</doc-deprecated>
3051 <source-position filename="gsk/gskrendernode.h" line="593"/>
3052 <return-value transfer-ownership="full">
3053 <doc xml:space="preserve"
3054 filename="gsk/gskrendernodeimpl.c"
3055 line="8295">A new `GskRenderNode`</doc>
3056 <type name="GLShaderNode" c:type="GskRenderNode*"/>
3057 </return-value>
3058 <parameters>
3059 <parameter name="shader" transfer-ownership="none">
3060 <doc xml:space="preserve"
3061 filename="gsk/gskrendernodeimpl.c"
3062 line="8269">the `GskGLShader`</doc>
3063 <type name="GLShader" c:type="GskGLShader*"/>
3064 </parameter>
3065 <parameter name="bounds" transfer-ownership="none">
3066 <doc xml:space="preserve"
3067 filename="gsk/gskrendernodeimpl.c"
3068 line="8270">the rectangle to render the shader into</doc>
3069 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
3070 </parameter>
3071 <parameter name="args" transfer-ownership="none">
3072 <doc xml:space="preserve"
3073 filename="gsk/gskrendernodeimpl.c"
3074 line="8271">Arguments for the uniforms</doc>
3075 <type name="GLib.Bytes" c:type="GBytes*"/>
3076 </parameter>
3077 <parameter name="children"
3078 transfer-ownership="none"
3079 nullable="1"
3080 allow-none="1">
3081 <doc xml:space="preserve"
3082 filename="gsk/gskrendernodeimpl.c"
3083 line="8272">array of child nodes,
3084 these will be rendered to textures and used as input.</doc>
3085 <array length="4" zero-terminated="0" c:type="GskRenderNode**">
3086 <type name="RenderNode" c:type="GskRenderNode*"/>
3087 </array>
3088 </parameter>
3089 <parameter name="n_children" transfer-ownership="none">
3090 <doc xml:space="preserve"
3091 filename="gsk/gskrendernodeimpl.c"
3092 line="8274">Length of @children (currently the GL backend supports
3093 up to 4 children)</doc>
3094 <type name="guint" c:type="guint"/>
3095 </parameter>
3096 </parameters>
3097 </constructor>
3098 <method name="get_args"
3099 c:identifier="gsk_gl_shader_node_get_args"
3100 deprecated="1"
3101 deprecated-version="4.16">
3102 <doc xml:space="preserve"
3103 filename="gsk/gskrendernodeimpl.c"
3104 line="8402">Gets args for the node.</doc>
3105 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
3106 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
3107 for OpenGL rendering.</doc-deprecated>
3108 <source-position filename="gsk/gskrendernode.h" line="604"/>
3109 <return-value transfer-ownership="none">
3110 <doc xml:space="preserve"
3111 filename="gsk/gskrendernodeimpl.c"
3112 line="8408">A `GBytes` with the uniform arguments</doc>
3113 <type name="GLib.Bytes" c:type="GBytes*"/>
3114 </return-value>
3115 <parameters>
3116 <instance-parameter name="node" transfer-ownership="none">
3117 <doc xml:space="preserve"
3118 filename="gsk/gskrendernodeimpl.c"
3119 line="8404">a `GskRenderNode` for a gl shader</doc>
3120 <type name="GLShaderNode" c:type="const GskRenderNode*"/>
3121 </instance-parameter>
3122 </parameters>
3123 </method>
3124 <method name="get_child"
3125 c:identifier="gsk_gl_shader_node_get_child"
3126 deprecated="1"
3127 deprecated-version="4.16">
3128 <doc xml:space="preserve"
3129 filename="gsk/gskrendernodeimpl.c"
3130 line="8364">Gets one of the children.</doc>
3131 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
3132 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
3133 for OpenGL rendering.</doc-deprecated>
3134 <source-position filename="gsk/gskrendernode.h" line="601"/>
3135 <return-value transfer-ownership="none">
3136 <doc xml:space="preserve"
3137 filename="gsk/gskrendernodeimpl.c"
3138 line="8371">the @idx'th child of @node</doc>
3139 <type name="RenderNode" c:type="GskRenderNode*"/>
3140 </return-value>
3141 <parameters>
3142 <instance-parameter name="node" transfer-ownership="none">
3143 <doc xml:space="preserve"
3144 filename="gsk/gskrendernodeimpl.c"
3145 line="8366">a `GskRenderNode` for a gl shader</doc>
3146 <type name="GLShaderNode" c:type="const GskRenderNode*"/>
3147 </instance-parameter>
3148 <parameter name="idx" transfer-ownership="none">
3149 <doc xml:space="preserve"
3150 filename="gsk/gskrendernodeimpl.c"
3151 line="8367">the position of the child to get</doc>
3152 <type name="guint" c:type="guint"/>
3153 </parameter>
3154 </parameters>
3155 </method>
3156 <method name="get_n_children"
3157 c:identifier="gsk_gl_shader_node_get_n_children"
3158 deprecated="1"
3159 deprecated-version="4.16">
3160 <doc xml:space="preserve"
3161 filename="gsk/gskrendernodeimpl.c"
3162 line="8344">Returns the number of children</doc>
3163 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
3164 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
3165 for OpenGL rendering.</doc-deprecated>
3166 <source-position filename="gsk/gskrendernode.h" line="599"/>
3167 <return-value transfer-ownership="none">
3168 <doc xml:space="preserve"
3169 filename="gsk/gskrendernodeimpl.c"
3170 line="8350">The number of children</doc>
3171 <type name="guint" c:type="guint"/>
3172 </return-value>
3173 <parameters>
3174 <instance-parameter name="node" transfer-ownership="none">
3175 <doc xml:space="preserve"
3176 filename="gsk/gskrendernodeimpl.c"
3177 line="8346">a `GskRenderNode` for a gl shader</doc>
3178 <type name="GLShaderNode" c:type="const GskRenderNode*"/>
3179 </instance-parameter>
3180 </parameters>
3181 </method>
3182 <method name="get_shader" c:identifier="gsk_gl_shader_node_get_shader">
3183 <doc xml:space="preserve"
3184 filename="gsk/gskrendernodeimpl.c"
3185 line="8386">Gets shader code for the node.</doc>
3186 <source-position filename="gsk/gskrendernode.h" line="606"/>
3187 <return-value transfer-ownership="none">
3188 <doc xml:space="preserve"
3189 filename="gsk/gskrendernodeimpl.c"
3190 line="8392">the `GskGLShader` shader</doc>
3191 <type name="GLShader" c:type="GskGLShader*"/>
3192 </return-value>
3193 <parameters>
3194 <instance-parameter name="node" transfer-ownership="none">
3195 <doc xml:space="preserve"
3196 filename="gsk/gskrendernodeimpl.c"
3197 line="8388">a `GskRenderNode` for a gl shader</doc>
3198 <type name="GLShaderNode" c:type="const GskRenderNode*"/>
3199 </instance-parameter>
3200 </parameters>
3201 </method>
3202 </class>
3203 <enumeration name="GLUniformType"
3204 deprecated="1"
3205 deprecated-version="4.16"
3206 glib:type-name="GskGLUniformType"
3207 glib:get-type="gsk_gl_uniform_type_get_type"
3208 c:type="GskGLUniformType">
3209 <doc xml:space="preserve"
3210 filename="gsk/gskenums.h"
3211 line="436">Defines the types of the uniforms that `GskGLShaders` declare.
3212
3213It defines both what the type is called in the GLSL shader
3214code, and what the corresponding C type is on the Gtk side.</doc>
3215 <member name="none"
3216 value="0"
3217 c:identifier="GSK_GL_UNIFORM_TYPE_NONE"
3218 glib:nick="none"
3219 glib:name="GSK_GL_UNIFORM_TYPE_NONE">
3220 <doc xml:space="preserve"
3221 filename="gsk/gskenums.h"
3222 line="438">No type, used for uninitialized or unspecified values.</doc>
3223 </member>
3224 <member name="float"
3225 value="1"
3226 c:identifier="GSK_GL_UNIFORM_TYPE_FLOAT"
3227 glib:nick="float"
3228 glib:name="GSK_GL_UNIFORM_TYPE_FLOAT">
3229 <doc xml:space="preserve"
3230 filename="gsk/gskenums.h"
3231 line="439">A float uniform</doc>
3232 </member>
3233 <member name="int"
3234 value="2"
3235 c:identifier="GSK_GL_UNIFORM_TYPE_INT"
3236 glib:nick="int"
3237 glib:name="GSK_GL_UNIFORM_TYPE_INT">
3238 <doc xml:space="preserve"
3239 filename="gsk/gskenums.h"
3240 line="440">A GLSL int / gint32 uniform</doc>
3241 </member>
3242 <member name="uint"
3243 value="3"
3244 c:identifier="GSK_GL_UNIFORM_TYPE_UINT"
3245 glib:nick="uint"
3246 glib:name="GSK_GL_UNIFORM_TYPE_UINT">
3247 <doc xml:space="preserve"
3248 filename="gsk/gskenums.h"
3249 line="441">A GLSL uint / guint32 uniform</doc>
3250 </member>
3251 <member name="bool"
3252 value="4"
3253 c:identifier="GSK_GL_UNIFORM_TYPE_BOOL"
3254 glib:nick="bool"
3255 glib:name="GSK_GL_UNIFORM_TYPE_BOOL">
3256 <doc xml:space="preserve"
3257 filename="gsk/gskenums.h"
3258 line="442">A GLSL bool / gboolean uniform</doc>
3259 </member>
3260 <member name="vec2"
3261 value="5"
3262 c:identifier="GSK_GL_UNIFORM_TYPE_VEC2"
3263 glib:nick="vec2"
3264 glib:name="GSK_GL_UNIFORM_TYPE_VEC2">
3265 <doc xml:space="preserve"
3266 filename="gsk/gskenums.h"
3267 line="443">A GLSL vec2 / graphene_vec2_t uniform</doc>
3268 </member>
3269 <member name="vec3"
3270 value="6"
3271 c:identifier="GSK_GL_UNIFORM_TYPE_VEC3"
3272 glib:nick="vec3"
3273 glib:name="GSK_GL_UNIFORM_TYPE_VEC3">
3274 <doc xml:space="preserve"
3275 filename="gsk/gskenums.h"
3276 line="444">A GLSL vec3 / graphene_vec3_t uniform</doc>
3277 </member>
3278 <member name="vec4"
3279 value="7"
3280 c:identifier="GSK_GL_UNIFORM_TYPE_VEC4"
3281 glib:nick="vec4"
3282 glib:name="GSK_GL_UNIFORM_TYPE_VEC4">
3283 <doc xml:space="preserve"
3284 filename="gsk/gskenums.h"
3285 line="445">A GLSL vec4 / graphene_vec4_t uniform</doc>
3286 </member>
3287 </enumeration>
3288 <function-macro name="GL_RENDERER"
3289 c:identifier="GSK_GL_RENDERER"
3290 introspectable="0">
3291 <source-position filename="gsk/gpu/gskglrenderer.h" line="27"/>
3292 <parameters>
3293 <parameter name="obj">
3294 </parameter>
3295 </parameters>
3296 </function-macro>
3297 <function-macro name="GL_RENDERER_CLASS"
3298 c:identifier="GSK_GL_RENDERER_CLASS"
3299 introspectable="0">
3300 <source-position filename="gsk/gpu/gskglrenderer.h" line="29"/>
3301 <parameters>
3302 <parameter name="klass">
3303 </parameter>
3304 </parameters>
3305 </function-macro>
3306 <function-macro name="GL_RENDERER_GET_CLASS"
3307 c:identifier="GSK_GL_RENDERER_GET_CLASS"
3308 introspectable="0">
3309 <source-position filename="gsk/gpu/gskglrenderer.h" line="31"/>
3310 <parameters>
3311 <parameter name="obj">
3312 </parameter>
3313 </parameters>
3314 </function-macro>
3315 <function-macro name="IS_BROADWAY_RENDERER"
3316 c:identifier="GSK_IS_BROADWAY_RENDERER"
3317 introspectable="0">
3318 <source-position filename="gsk/broadway/gskbroadwayrenderer.h"
3319 line="32"/>
3320 <parameters>
3321 <parameter name="obj">
3322 </parameter>
3323 </parameters>
3324 </function-macro>
3325 <function-macro name="IS_BROADWAY_RENDERER_CLASS"
3326 c:identifier="GSK_IS_BROADWAY_RENDERER_CLASS"
3327 introspectable="0">
3328 <source-position filename="gsk/broadway/gskbroadwayrenderer.h"
3329 line="34"/>
3330 <parameters>
3331 <parameter name="klass">
3332 </parameter>
3333 </parameters>
3334 </function-macro>
3335 <function-macro name="IS_CAIRO_RENDERER"
3336 c:identifier="GSK_IS_CAIRO_RENDERER"
3337 introspectable="0">
3338 <source-position filename="gsk/gskcairorenderer.h" line="35"/>
3339 <parameters>
3340 <parameter name="obj">
3341 </parameter>
3342 </parameters>
3343 </function-macro>
3344 <function-macro name="IS_CAIRO_RENDERER_CLASS"
3345 c:identifier="GSK_IS_CAIRO_RENDERER_CLASS"
3346 introspectable="0">
3347 <source-position filename="gsk/gskcairorenderer.h" line="37"/>
3348 <parameters>
3349 <parameter name="klass">
3350 </parameter>
3351 </parameters>
3352 </function-macro>
3353 <function-macro name="IS_GL_RENDERER"
3354 c:identifier="GSK_IS_GL_RENDERER"
3355 introspectable="0">
3356 <source-position filename="gsk/gpu/gskglrenderer.h" line="28"/>
3357 <parameters>
3358 <parameter name="obj">
3359 </parameter>
3360 </parameters>
3361 </function-macro>
3362 <function-macro name="IS_GL_RENDERER_CLASS"
3363 c:identifier="GSK_IS_GL_RENDERER_CLASS"
3364 introspectable="0">
3365 <source-position filename="gsk/gpu/gskglrenderer.h" line="30"/>
3366 <parameters>
3367 <parameter name="klass">
3368 </parameter>
3369 </parameters>
3370 </function-macro>
3371 <function-macro name="IS_RENDERER"
3372 c:identifier="GSK_IS_RENDERER"
3373 introspectable="0">
3374 <source-position filename="gsk/gskrenderer.h" line="33"/>
3375 <parameters>
3376 <parameter name="obj">
3377 </parameter>
3378 </parameters>
3379 </function-macro>
3380 <function-macro name="IS_RENDER_NODE"
3381 c:identifier="GSK_IS_RENDER_NODE"
3382 introspectable="0">
3383 <source-position filename="gsk/gskrendernode.h" line="34"/>
3384 <parameters>
3385 <parameter name="obj">
3386 </parameter>
3387 </parameters>
3388 </function-macro>
3389 <function-macro name="IS_VULKAN_RENDERER"
3390 c:identifier="GSK_IS_VULKAN_RENDERER"
3391 introspectable="0">
3392 <source-position filename="gsk/gpu/gskvulkanrenderer.h" line="28"/>
3393 <parameters>
3394 <parameter name="obj">
3395 </parameter>
3396 </parameters>
3397 </function-macro>
3398 <function-macro name="IS_VULKAN_RENDERER_CLASS"
3399 c:identifier="GSK_IS_VULKAN_RENDERER_CLASS"
3400 introspectable="0">
3401 <source-position filename="gsk/gpu/gskvulkanrenderer.h" line="30"/>
3402 <parameters>
3403 <parameter name="klass">
3404 </parameter>
3405 </parameters>
3406 </function-macro>
3407 <class name="InsetShadowNode"
3408 c:symbol-prefix="inset_shadow_node"
3409 c:type="GskInsetShadowNode"
3410 parent="RenderNode"
3411 glib:type-name="GskInsetShadowNode"
3412 glib:get-type="gsk_inset_shadow_node_get_type"
3413 glib:fundamental="1">
3414 <doc xml:space="preserve"
3415 filename="gsk/gskrendernodeimpl.c"
3416 line="3050">A render node for an inset shadow.</doc>
3417 <constructor name="new" c:identifier="gsk_inset_shadow_node_new">
3418 <doc xml:space="preserve"
3419 filename="gsk/gskrendernodeimpl.c"
3420 line="3489">Creates a `GskRenderNode` that will render an inset shadow
3421into the box given by @outline.</doc>
3422 <source-position filename="gsk/gskrendernode.h" line="352"/>
3423 <return-value transfer-ownership="full">
3424 <doc xml:space="preserve"
3425 filename="gsk/gskrendernodeimpl.c"
3426 line="3501">A new `GskRenderNode`</doc>
3427 <type name="InsetShadowNode" c:type="GskRenderNode*"/>
3428 </return-value>
3429 <parameters>
3430 <parameter name="outline" transfer-ownership="none">
3431 <doc xml:space="preserve"
3432 filename="gsk/gskrendernodeimpl.c"
3433 line="3491">outline of the region containing the shadow</doc>
3434 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
3435 </parameter>
3436 <parameter name="color" transfer-ownership="none">
3437 <doc xml:space="preserve"
3438 filename="gsk/gskrendernodeimpl.c"
3439 line="3492">color of the shadow</doc>
3440 <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
3441 </parameter>
3442 <parameter name="dx" transfer-ownership="none">
3443 <doc xml:space="preserve"
3444 filename="gsk/gskrendernodeimpl.c"
3445 line="3493">horizontal offset of shadow</doc>
3446 <type name="gfloat" c:type="float"/>
3447 </parameter>
3448 <parameter name="dy" transfer-ownership="none">
3449 <doc xml:space="preserve"
3450 filename="gsk/gskrendernodeimpl.c"
3451 line="3494">vertical offset of shadow</doc>
3452 <type name="gfloat" c:type="float"/>
3453 </parameter>
3454 <parameter name="spread" transfer-ownership="none">
3455 <doc xml:space="preserve"
3456 filename="gsk/gskrendernodeimpl.c"
3457 line="3495">how far the shadow spreads towards the inside</doc>
3458 <type name="gfloat" c:type="float"/>
3459 </parameter>
3460 <parameter name="blur_radius" transfer-ownership="none">
3461 <doc xml:space="preserve"
3462 filename="gsk/gskrendernodeimpl.c"
3463 line="3496">how much blur to apply to the shadow</doc>
3464 <type name="gfloat" c:type="float"/>
3465 </parameter>
3466 </parameters>
3467 </constructor>
3468 <method name="get_blur_radius"
3469 c:identifier="gsk_inset_shadow_node_get_blur_radius">
3470 <doc xml:space="preserve"
3471 filename="gsk/gskrendernodeimpl.c"
3472 line="3683">Retrieves the blur radius to apply to the shadow.</doc>
3473 <source-position filename="gsk/gskrendernode.h" line="369"/>
3474 <return-value transfer-ownership="none">
3475 <doc xml:space="preserve"
3476 filename="gsk/gskrendernodeimpl.c"
3477 line="3689">the blur radius, in pixels</doc>
3478 <type name="gfloat" c:type="float"/>
3479 </return-value>
3480 <parameters>
3481 <instance-parameter name="node" transfer-ownership="none">
3482 <doc xml:space="preserve"
3483 filename="gsk/gskrendernodeimpl.c"
3484 line="3685">a `GskRenderNode` for an inset shadow</doc>
3485 <type name="InsetShadowNode" c:type="const GskRenderNode*"/>
3486 </instance-parameter>
3487 </parameters>
3488 </method>
3489 <method name="get_color" c:identifier="gsk_inset_shadow_node_get_color">
3490 <doc xml:space="preserve"
3491 filename="gsk/gskrendernodeimpl.c"
3492 line="3583">Retrieves the color of the inset shadow.
3493
3494The value returned by this function will not be correct
3495if the render node was created for a non-sRGB color.</doc>
3496 <source-position filename="gsk/gskrendernode.h" line="361"/>
3497 <return-value transfer-ownership="none">
3498 <doc xml:space="preserve"
3499 filename="gsk/gskrendernodeimpl.c"
3500 line="3592">the color of the shadow</doc>
3501 <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
3502 </return-value>
3503 <parameters>
3504 <instance-parameter name="node" transfer-ownership="none">
3505 <doc xml:space="preserve"
3506 filename="gsk/gskrendernodeimpl.c"
3507 line="3585">a `GskRenderNode` for an inset shadow</doc>
3508 <type name="InsetShadowNode" c:type="const GskRenderNode*"/>
3509 </instance-parameter>
3510 </parameters>
3511 </method>
3512 <method name="get_dx" c:identifier="gsk_inset_shadow_node_get_dx">
3513 <doc xml:space="preserve"
3514 filename="gsk/gskrendernodeimpl.c"
3515 line="3619">Retrieves the horizontal offset of the inset shadow.</doc>
3516 <source-position filename="gsk/gskrendernode.h" line="363"/>
3517 <return-value transfer-ownership="none">
3518 <doc xml:space="preserve"
3519 filename="gsk/gskrendernodeimpl.c"
3520 line="3625">an offset, in pixels</doc>
3521 <type name="gfloat" c:type="float"/>
3522 </return-value>
3523 <parameters>
3524 <instance-parameter name="node" transfer-ownership="none">
3525 <doc xml:space="preserve"
3526 filename="gsk/gskrendernodeimpl.c"
3527 line="3621">a `GskRenderNode` for an inset shadow</doc>
3528 <type name="InsetShadowNode" c:type="const GskRenderNode*"/>
3529 </instance-parameter>
3530 </parameters>
3531 </method>
3532 <method name="get_dy" c:identifier="gsk_inset_shadow_node_get_dy">
3533 <doc xml:space="preserve"
3534 filename="gsk/gskrendernodeimpl.c"
3535 line="3635">Retrieves the vertical offset of the inset shadow.</doc>
3536 <source-position filename="gsk/gskrendernode.h" line="365"/>
3537 <return-value transfer-ownership="none">
3538 <doc xml:space="preserve"
3539 filename="gsk/gskrendernodeimpl.c"
3540 line="3641">an offset, in pixels</doc>
3541 <type name="gfloat" c:type="float"/>
3542 </return-value>
3543 <parameters>
3544 <instance-parameter name="node" transfer-ownership="none">
3545 <doc xml:space="preserve"
3546 filename="gsk/gskrendernodeimpl.c"
3547 line="3637">a `GskRenderNode` for an inset shadow</doc>
3548 <type name="InsetShadowNode" c:type="const GskRenderNode*"/>
3549 </instance-parameter>
3550 </parameters>
3551 </method>
3552 <method name="get_outline"
3553 c:identifier="gsk_inset_shadow_node_get_outline">
3554 <doc xml:space="preserve"
3555 filename="gsk/gskrendernodeimpl.c"
3556 line="3567">Retrieves the outline rectangle of the inset shadow.</doc>
3557 <source-position filename="gsk/gskrendernode.h" line="359"/>
3558 <return-value transfer-ownership="none">
3559 <doc xml:space="preserve"
3560 filename="gsk/gskrendernodeimpl.c"
3561 line="3573">a rounded rectangle</doc>
3562 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
3563 </return-value>
3564 <parameters>
3565 <instance-parameter name="node" transfer-ownership="none">
3566 <doc xml:space="preserve"
3567 filename="gsk/gskrendernodeimpl.c"
3568 line="3569">a `GskRenderNode` for an inset shadow</doc>
3569 <type name="InsetShadowNode" c:type="const GskRenderNode*"/>
3570 </instance-parameter>
3571 </parameters>
3572 </method>
3573 <method name="get_spread"
3574 c:identifier="gsk_inset_shadow_node_get_spread">
3575 <doc xml:space="preserve"
3576 filename="gsk/gskrendernodeimpl.c"
3577 line="3667">Retrieves how much the shadow spreads inwards.</doc>
3578 <source-position filename="gsk/gskrendernode.h" line="367"/>
3579 <return-value transfer-ownership="none">
3580 <doc xml:space="preserve"
3581 filename="gsk/gskrendernodeimpl.c"
3582 line="3673">the size of the shadow, in pixels</doc>
3583 <type name="gfloat" c:type="float"/>
3584 </return-value>
3585 <parameters>
3586 <instance-parameter name="node" transfer-ownership="none">
3587 <doc xml:space="preserve"
3588 filename="gsk/gskrendernodeimpl.c"
3589 line="3669">a `GskRenderNode` for an inset shadow</doc>
3590 <type name="InsetShadowNode" c:type="const GskRenderNode*"/>
3591 </instance-parameter>
3592 </parameters>
3593 </method>
3594 </class>
3595 <enumeration name="LineCap"
3596 version="4.14"
3597 glib:type-name="GskLineCap"
3598 glib:get-type="gsk_line_cap_get_type"
3599 c:type="GskLineCap">
3600 <doc xml:space="preserve"
3601 filename="gsk/gskenums.h"
3602 line="256">Specifies how to render the start and end points of contours or
3603dashes when stroking.
3604
3605The default line cap style is `GSK_LINE_CAP_BUTT`.
3606
3607New entries may be added in future versions.
3608
3609<figure>
3610 <picture>
3611 <source srcset="caps-dark.png" media="(prefers-color-scheme: dark)">
3612 <img alt="Line Cap Styles" src="caps-light.png">
3613 </picture>
3614 <figcaption>GSK_LINE_CAP_BUTT, GSK_LINE_CAP_ROUND, GSK_LINE_CAP_SQUARE</figcaption>
3615</figure></doc>
3616 <member name="butt"
3617 value="0"
3618 c:identifier="GSK_LINE_CAP_BUTT"
3619 glib:nick="butt"
3620 glib:name="GSK_LINE_CAP_BUTT">
3621 <doc xml:space="preserve"
3622 filename="gsk/gskenums.h"
3623 line="258">Start and stop the line exactly at the start
3624 and end point</doc>
3625 </member>
3626 <member name="round"
3627 value="1"
3628 c:identifier="GSK_LINE_CAP_ROUND"
3629 glib:nick="round"
3630 glib:name="GSK_LINE_CAP_ROUND">
3631 <doc xml:space="preserve"
3632 filename="gsk/gskenums.h"
3633 line="260">Use a round ending, the center of the circle
3634 is the start or end point</doc>
3635 </member>
3636 <member name="square"
3637 value="2"
3638 c:identifier="GSK_LINE_CAP_SQUARE"
3639 glib:nick="square"
3640 glib:name="GSK_LINE_CAP_SQUARE">
3641 <doc xml:space="preserve"
3642 filename="gsk/gskenums.h"
3643 line="262">use squared ending, the center of the square
3644 is the start or end point</doc>
3645 </member>
3646 </enumeration>
3647 <enumeration name="LineJoin"
3648 version="4.14"
3649 glib:type-name="GskLineJoin"
3650 glib:get-type="gsk_line_join_get_type"
3651 c:type="GskLineJoin">
3652 <doc xml:space="preserve"
3653 filename="gsk/gskenums.h"
3654 line="288">Specifies how to render the junction of two lines when stroking.
3655
3656The default line join style is `GSK_LINE_JOIN_MITER`.
3657
3658New entries may be added in future versions.
3659
3660<figure>
3661 <picture>
3662 <source srcset="join-dark.png" media="(prefers-color-scheme: dark)">
3663 <img alt="Line Join Styles" src="join-light.png">
3664 </picture>
3665 <figcaption>GSK_LINE_JOINT_MITER, GSK_LINE_JOINT_ROUND, GSK_LINE_JOIN_BEVEL</figcaption>
3666</figure></doc>
3667 <member name="miter"
3668 value="0"
3669 c:identifier="GSK_LINE_JOIN_MITER"
3670 glib:nick="miter"
3671 glib:name="GSK_LINE_JOIN_MITER">
3672 <doc xml:space="preserve"
3673 filename="gsk/gskenums.h"
3674 line="290">Use a sharp angled corner</doc>
3675 </member>
3676 <member name="round"
3677 value="1"
3678 c:identifier="GSK_LINE_JOIN_ROUND"
3679 glib:nick="round"
3680 glib:name="GSK_LINE_JOIN_ROUND">
3681 <doc xml:space="preserve"
3682 filename="gsk/gskenums.h"
3683 line="291">Use a round join, the center of the circle is
3684 the join point</doc>
3685 </member>
3686 <member name="bevel"
3687 value="2"
3688 c:identifier="GSK_LINE_JOIN_BEVEL"
3689 glib:nick="bevel"
3690 glib:name="GSK_LINE_JOIN_BEVEL">
3691 <doc xml:space="preserve"
3692 filename="gsk/gskenums.h"
3693 line="293">use a cut-off join, the join is cut off at half
3694 the line width from the joint point</doc>
3695 </member>
3696 </enumeration>
3697 <class name="LinearGradientNode"
3698 c:symbol-prefix="linear_gradient_node"
3699 c:type="GskLinearGradientNode"
3700 parent="RenderNode"
3701 glib:type-name="GskLinearGradientNode"
3702 glib:get-type="gsk_linear_gradient_node_get_type"
3703 glib:fundamental="1">
3704 <doc xml:space="preserve"
3705 filename="gsk/gskrendernodeimpl.c"
3706 line="432">A render node for a linear gradient.</doc>
3707 <constructor name="new" c:identifier="gsk_linear_gradient_node_new">
3708 <doc xml:space="preserve"
3709 filename="gsk/gskrendernodeimpl.c"
3710 line="725">Creates a `GskRenderNode` that will create a linear gradient from the given
3711points and color stops, and render that into the area given by @bounds.</doc>
3712 <source-position filename="gsk/gskrendernode.h" line="253"/>
3713 <return-value transfer-ownership="full">
3714 <doc xml:space="preserve"
3715 filename="gsk/gskrendernodeimpl.c"
3716 line="739">A new `GskRenderNode`</doc>
3717 <type name="LinearGradientNode" c:type="GskRenderNode*"/>
3718 </return-value>
3719 <parameters>
3720 <parameter name="bounds" transfer-ownership="none">
3721 <doc xml:space="preserve"
3722 filename="gsk/gskrendernodeimpl.c"
3723 line="727">the rectangle to render the linear gradient into</doc>
3724 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
3725 </parameter>
3726 <parameter name="start" transfer-ownership="none">
3727 <doc xml:space="preserve"
3728 filename="gsk/gskrendernodeimpl.c"
3729 line="728">the point at which the linear gradient will begin</doc>
3730 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
3731 </parameter>
3732 <parameter name="end" transfer-ownership="none">
3733 <doc xml:space="preserve"
3734 filename="gsk/gskrendernodeimpl.c"
3735 line="729">the point at which the linear gradient will finish</doc>
3736 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
3737 </parameter>
3738 <parameter name="color_stops" transfer-ownership="none">
3739 <doc xml:space="preserve"
3740 filename="gsk/gskrendernodeimpl.c"
3741 line="730">a pointer to an array of
3742 `GskColorStop` defining the gradient. The offsets of all color stops
3743 must be increasing. The first stop's offset must be >= 0 and the last
3744 stop's offset must be <= 1.</doc>
3745 <array length="4" zero-terminated="0" c:type="const GskColorStop*">
3746 <type name="ColorStop" c:type="GskColorStop"/>
3747 </array>
3748 </parameter>
3749 <parameter name="n_color_stops" transfer-ownership="none">
3750 <doc xml:space="preserve"
3751 filename="gsk/gskrendernodeimpl.c"
3752 line="734">the number of elements in @color_stops</doc>
3753 <type name="gsize" c:type="gsize"/>
3754 </parameter>
3755 </parameters>
3756 </constructor>
3757 <method name="get_color_stops"
3758 c:identifier="gsk_linear_gradient_node_get_color_stops">
3759 <doc xml:space="preserve"
3760 filename="gsk/gskrendernodeimpl.c"
3761 line="1007">Retrieves the color stops in the gradient.</doc>
3762 <source-position filename="gsk/gskrendernode.h" line="265"/>
3763 <return-value transfer-ownership="none">
3764 <doc xml:space="preserve"
3765 filename="gsk/gskrendernodeimpl.c"
3766 line="1014">the color stops in the gradient</doc>
3767 <array length="0" zero-terminated="0" c:type="const GskColorStop*">
3768 <type name="ColorStop" c:type="GskColorStop"/>
3769 </array>
3770 </return-value>
3771 <parameters>
3772 <instance-parameter name="node" transfer-ownership="none">
3773 <doc xml:space="preserve"
3774 filename="gsk/gskrendernodeimpl.c"
3775 line="1009">a `GskRenderNode` for a linear gradient</doc>
3776 <type name="LinearGradientNode" c:type="const GskRenderNode*"/>
3777 </instance-parameter>
3778 <parameter name="n_stops"
3779 direction="out"
3780 caller-allocates="0"
3781 transfer-ownership="full"
3782 optional="1"
3783 allow-none="1">
3784 <doc xml:space="preserve"
3785 filename="gsk/gskrendernodeimpl.c"
3786 line="1010">the number of color stops in the returned array</doc>
3787 <type name="gsize" c:type="gsize*"/>
3788 </parameter>
3789 </parameters>
3790 </method>
3791 <method name="get_end" c:identifier="gsk_linear_gradient_node_get_end">
3792 <doc xml:space="preserve"
3793 filename="gsk/gskrendernodeimpl.c"
3794 line="975">Retrieves the final point of the linear gradient.</doc>
3795 <source-position filename="gsk/gskrendernode.h" line="261"/>
3796 <return-value transfer-ownership="none">
3797 <doc xml:space="preserve"
3798 filename="gsk/gskrendernodeimpl.c"
3799 line="981">the final point</doc>
3800 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
3801 </return-value>
3802 <parameters>
3803 <instance-parameter name="node" transfer-ownership="none">
3804 <doc xml:space="preserve"
3805 filename="gsk/gskrendernodeimpl.c"
3806 line="977">a `GskRenderNode` for a linear gradient</doc>
3807 <type name="LinearGradientNode" c:type="const GskRenderNode*"/>
3808 </instance-parameter>
3809 </parameters>
3810 </method>
3811 <method name="get_n_color_stops"
3812 c:identifier="gsk_linear_gradient_node_get_n_color_stops">
3813 <doc xml:space="preserve"
3814 filename="gsk/gskrendernodeimpl.c"
3815 line="991">Retrieves the number of color stops in the gradient.</doc>
3816 <source-position filename="gsk/gskrendernode.h" line="263"/>
3817 <return-value transfer-ownership="none">
3818 <doc xml:space="preserve"
3819 filename="gsk/gskrendernodeimpl.c"
3820 line="997">the number of color stops</doc>
3821 <type name="gsize" c:type="gsize"/>
3822 </return-value>
3823 <parameters>
3824 <instance-parameter name="node" transfer-ownership="none">
3825 <doc xml:space="preserve"
3826 filename="gsk/gskrendernodeimpl.c"
3827 line="993">a `GskRenderNode` for a linear gradient</doc>
3828 <type name="LinearGradientNode" c:type="const GskRenderNode*"/>
3829 </instance-parameter>
3830 </parameters>
3831 </method>
3832 <method name="get_start"
3833 c:identifier="gsk_linear_gradient_node_get_start">
3834 <doc xml:space="preserve"
3835 filename="gsk/gskrendernodeimpl.c"
3836 line="959">Retrieves the initial point of the linear gradient.</doc>
3837 <source-position filename="gsk/gskrendernode.h" line="259"/>
3838 <return-value transfer-ownership="none">
3839 <doc xml:space="preserve"
3840 filename="gsk/gskrendernodeimpl.c"
3841 line="965">the initial point</doc>
3842 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
3843 </return-value>
3844 <parameters>
3845 <instance-parameter name="node" transfer-ownership="none">
3846 <doc xml:space="preserve"
3847 filename="gsk/gskrendernodeimpl.c"
3848 line="961">a `GskRenderNode` for a linear gradient</doc>
3849 <type name="LinearGradientNode" c:type="const GskRenderNode*"/>
3850 </instance-parameter>
3851 </parameters>
3852 </method>
3853 </class>
3854 <enumeration name="MaskMode"
3855 version="4.10"
3856 glib:type-name="GskMaskMode"
3857 glib:get-type="gsk_mask_mode_get_type"
3858 c:type="GskMaskMode">
3859 <doc xml:space="preserve"
3860 filename="gsk/gskenums.h"
3861 line="466">The mask modes available for mask nodes.</doc>
3862 <member name="alpha"
3863 value="0"
3864 c:identifier="GSK_MASK_MODE_ALPHA"
3865 glib:nick="alpha"
3866 glib:name="GSK_MASK_MODE_ALPHA">
3867 <doc xml:space="preserve"
3868 filename="gsk/gskenums.h"
3869 line="468">Use the alpha channel of the mask</doc>
3870 </member>
3871 <member name="inverted_alpha"
3872 value="1"
3873 c:identifier="GSK_MASK_MODE_INVERTED_ALPHA"
3874 glib:nick="inverted-alpha"
3875 glib:name="GSK_MASK_MODE_INVERTED_ALPHA">
3876 <doc xml:space="preserve"
3877 filename="gsk/gskenums.h"
3878 line="469">Use the inverted alpha channel of the mask</doc>
3879 </member>
3880 <member name="luminance"
3881 value="2"
3882 c:identifier="GSK_MASK_MODE_LUMINANCE"
3883 glib:nick="luminance"
3884 glib:name="GSK_MASK_MODE_LUMINANCE">
3885 <doc xml:space="preserve"
3886 filename="gsk/gskenums.h"
3887 line="470">Use the luminance of the mask,
3888 multiplied by mask alpha</doc>
3889 </member>
3890 <member name="inverted_luminance"
3891 value="3"
3892 c:identifier="GSK_MASK_MODE_INVERTED_LUMINANCE"
3893 glib:nick="inverted-luminance"
3894 glib:name="GSK_MASK_MODE_INVERTED_LUMINANCE">
3895 <doc xml:space="preserve"
3896 filename="gsk/gskenums.h"
3897 line="472">Use the inverted luminance of the mask,
3898 multiplied by mask alpha</doc>
3899 </member>
3900 </enumeration>
3901 <class name="MaskNode"
3902 c:symbol-prefix="mask_node"
3903 c:type="GskMaskNode"
3904 version="4.10"
3905 parent="RenderNode"
3906 glib:type-name="GskMaskNode"
3907 glib:get-type="gsk_mask_node_get_type"
3908 glib:fundamental="1">
3909 <doc xml:space="preserve"
3910 filename="gsk/gskrendernodeimpl.c"
3911 line="7770">A render node masking one child node with another.</doc>
3912 <constructor name="new" c:identifier="gsk_mask_node_new" version="4.10">
3913 <doc xml:space="preserve"
3914 filename="gsk/gskrendernodeimpl.c"
3915 line="7927">Creates a `GskRenderNode` that will mask a given node by another.
3916
3917The @mask_mode determines how the 'mask values' are derived from
3918the colors of the @mask. Applying the mask consists of multiplying
3919the 'mask value' with the alpha of the source.</doc>
3920 <source-position filename="gsk/gskrendernode.h" line="578"/>
3921 <return-value transfer-ownership="full">
3922 <doc xml:space="preserve"
3923 filename="gsk/gskrendernodeimpl.c"
3924 line="7939">A new `GskRenderNode`</doc>
3925 <type name="MaskNode" c:type="GskRenderNode*"/>
3926 </return-value>
3927 <parameters>
3928 <parameter name="source" transfer-ownership="none">
3929 <doc xml:space="preserve"
3930 filename="gsk/gskrendernodeimpl.c"
3931 line="7929">The source node to be drawn</doc>
3932 <type name="RenderNode" c:type="GskRenderNode*"/>
3933 </parameter>
3934 <parameter name="mask" transfer-ownership="none">
3935 <doc xml:space="preserve"
3936 filename="gsk/gskrendernodeimpl.c"
3937 line="7930">The node to be used as mask</doc>
3938 <type name="RenderNode" c:type="GskRenderNode*"/>
3939 </parameter>
3940 <parameter name="mask_mode" transfer-ownership="none">
3941 <doc xml:space="preserve"
3942 filename="gsk/gskrendernodeimpl.c"
3943 line="7931">The mask mode to use</doc>
3944 <type name="MaskMode" c:type="GskMaskMode"/>
3945 </parameter>
3946 </parameters>
3947 </constructor>
3948 <method name="get_mask"
3949 c:identifier="gsk_mask_node_get_mask"
3950 version="4.10">
3951 <doc xml:space="preserve"
3952 filename="gsk/gskrendernodeimpl.c"
3953 line="7990">Retrieves the mask `GskRenderNode` child of the @node.</doc>
3954 <source-position filename="gsk/gskrendernode.h" line="584"/>
3955 <return-value transfer-ownership="none">
3956 <doc xml:space="preserve"
3957 filename="gsk/gskrendernodeimpl.c"
3958 line="7996">the mask child node</doc>
3959 <type name="RenderNode" c:type="GskRenderNode*"/>
3960 </return-value>
3961 <parameters>
3962 <instance-parameter name="node" transfer-ownership="none">
3963 <doc xml:space="preserve"
3964 filename="gsk/gskrendernodeimpl.c"
3965 line="7992">a mask `GskRenderNode`</doc>
3966 <type name="MaskNode" c:type="const GskRenderNode*"/>
3967 </instance-parameter>
3968 </parameters>
3969 </method>
3970 <method name="get_mask_mode"
3971 c:identifier="gsk_mask_node_get_mask_mode"
3972 version="4.10">
3973 <doc xml:space="preserve"
3974 filename="gsk/gskrendernodeimpl.c"
3975 line="8010">Retrieves the mask mode used by @node.</doc>
3976 <source-position filename="gsk/gskrendernode.h" line="586"/>
3977 <return-value transfer-ownership="none">
3978 <doc xml:space="preserve"
3979 filename="gsk/gskrendernodeimpl.c"
3980 line="8016">the mask mode</doc>
3981 <type name="MaskMode" c:type="GskMaskMode"/>
3982 </return-value>
3983 <parameters>
3984 <instance-parameter name="node" transfer-ownership="none">
3985 <doc xml:space="preserve"
3986 filename="gsk/gskrendernodeimpl.c"
3987 line="8012">a blending `GskRenderNode`</doc>
3988 <type name="MaskNode" c:type="const GskRenderNode*"/>
3989 </instance-parameter>
3990 </parameters>
3991 </method>
3992 <method name="get_source"
3993 c:identifier="gsk_mask_node_get_source"
3994 version="4.10">
3995 <doc xml:space="preserve"
3996 filename="gsk/gskrendernodeimpl.c"
3997 line="7970">Retrieves the source `GskRenderNode` child of the @node.</doc>
3998 <source-position filename="gsk/gskrendernode.h" line="582"/>
3999 <return-value transfer-ownership="none">
4000 <doc xml:space="preserve"
4001 filename="gsk/gskrendernodeimpl.c"
4002 line="7976">the source child node</doc>
4003 <type name="RenderNode" c:type="GskRenderNode*"/>
4004 </return-value>
4005 <parameters>
4006 <instance-parameter name="node" transfer-ownership="none">
4007 <doc xml:space="preserve"
4008 filename="gsk/gskrendernodeimpl.c"
4009 line="7972">a mask `GskRenderNode`</doc>
4010 <type name="MaskNode" c:type="const GskRenderNode*"/>
4011 </instance-parameter>
4012 </parameters>
4013 </method>
4014 </class>
4015 <class name="NglRenderer"
4016 c:symbol-prefix="ngl_renderer"
4017 parent="Renderer"
4018 glib:type-name="GskNglRenderer"
4019 glib:get-type="gsk_ngl_renderer_get_type">
4020 <doc xml:space="preserve"
4021 filename="gsk/gpu/gskglrenderer.c"
4022 line="168">A GL based renderer.
4023
4024See [class@Gsk.Renderer].</doc>
4025 <constructor name="new"
4026 c:identifier="gsk_ngl_renderer_new"
4027 deprecated="1"
4028 deprecated-version="4.18">
4029 <doc xml:space="preserve"
4030 filename="gsk/gpu/gskglrenderer.c"
4031 line="209">Same as gsk_gl_renderer_new().</doc>
4032 <doc-deprecated xml:space="preserve">Use gsk_gl_renderer_new()</doc-deprecated>
4033 <source-position filename="gsk/gpu/gskglrenderer.h" line="46"/>
4034 <return-value transfer-ownership="full">
4035 <doc xml:space="preserve"
4036 filename="gsk/gpu/gskglrenderer.c"
4037 line="214">a GL renderer</doc>
4038 <type name="Renderer" c:type="GskRenderer*"/>
4039 </return-value>
4040 </constructor>
4041 </class>
4042 <class name="OpacityNode"
4043 c:symbol-prefix="opacity_node"
4044 c:type="GskOpacityNode"
4045 parent="RenderNode"
4046 glib:type-name="GskOpacityNode"
4047 glib:get-type="gsk_opacity_node_get_type"
4048 glib:fundamental="1">
4049 <doc xml:space="preserve"
4050 filename="gsk/gskrendernodeimpl.c"
4051 line="4864">A render node controlling the opacity of its single child node.</doc>
4052 <constructor name="new" c:identifier="gsk_opacity_node_new">
4053 <doc xml:space="preserve"
4054 filename="gsk/gskrendernodeimpl.c"
4055 line="4937">Creates a `GskRenderNode` that will drawn the @child with reduced
4056@opacity.</doc>
4057 <source-position filename="gsk/gskrendernode.h" line="426"/>
4058 <return-value transfer-ownership="full">
4059 <doc xml:space="preserve"
4060 filename="gsk/gskrendernodeimpl.c"
4061 line="4945">A new `GskRenderNode`</doc>
4062 <type name="OpacityNode" c:type="GskRenderNode*"/>
4063 </return-value>
4064 <parameters>
4065 <parameter name="child" transfer-ownership="none">
4066 <doc xml:space="preserve"
4067 filename="gsk/gskrendernodeimpl.c"
4068 line="4939">The node to draw</doc>
4069 <type name="RenderNode" c:type="GskRenderNode*"/>
4070 </parameter>
4071 <parameter name="opacity" transfer-ownership="none">
4072 <doc xml:space="preserve"
4073 filename="gsk/gskrendernodeimpl.c"
4074 line="4940">The opacity to apply</doc>
4075 <type name="gfloat" c:type="float"/>
4076 </parameter>
4077 </parameters>
4078 </constructor>
4079 <method name="get_child" c:identifier="gsk_opacity_node_get_child">
4080 <doc xml:space="preserve"
4081 filename="gsk/gskrendernodeimpl.c"
4082 line="4970">Gets the child node that is getting opacityed by the given @node.</doc>
4083 <source-position filename="gsk/gskrendernode.h" line="429"/>
4084 <return-value transfer-ownership="none">
4085 <doc xml:space="preserve"
4086 filename="gsk/gskrendernodeimpl.c"
4087 line="4976">The child that is getting opacityed</doc>
4088 <type name="RenderNode" c:type="GskRenderNode*"/>
4089 </return-value>
4090 <parameters>
4091 <instance-parameter name="node" transfer-ownership="none">
4092 <doc xml:space="preserve"
4093 filename="gsk/gskrendernodeimpl.c"
4094 line="4972">a `GskRenderNode` for an opacity</doc>
4095 <type name="OpacityNode" c:type="const GskRenderNode*"/>
4096 </instance-parameter>
4097 </parameters>
4098 </method>
4099 <method name="get_opacity" c:identifier="gsk_opacity_node_get_opacity">
4100 <doc xml:space="preserve"
4101 filename="gsk/gskrendernodeimpl.c"
4102 line="4986">Gets the transparency factor for an opacity node.</doc>
4103 <source-position filename="gsk/gskrendernode.h" line="431"/>
4104 <return-value transfer-ownership="none">
4105 <doc xml:space="preserve"
4106 filename="gsk/gskrendernodeimpl.c"
4107 line="4992">the opacity factor</doc>
4108 <type name="gfloat" c:type="float"/>
4109 </return-value>
4110 <parameters>
4111 <instance-parameter name="node" transfer-ownership="none">
4112 <doc xml:space="preserve"
4113 filename="gsk/gskrendernodeimpl.c"
4114 line="4988">a `GskRenderNode` for an opacity</doc>
4115 <type name="OpacityNode" c:type="const GskRenderNode*"/>
4116 </instance-parameter>
4117 </parameters>
4118 </method>
4119 </class>
4120 <class name="OutsetShadowNode"
4121 c:symbol-prefix="outset_shadow_node"
4122 c:type="GskOutsetShadowNode"
4123 parent="RenderNode"
4124 glib:type-name="GskOutsetShadowNode"
4125 glib:get-type="gsk_outset_shadow_node_get_type"
4126 glib:fundamental="1">
4127 <doc xml:space="preserve"
4128 filename="gsk/gskrendernodeimpl.c"
4129 line="3702">A render node for an outset shadow.</doc>
4130 <constructor name="new" c:identifier="gsk_outset_shadow_node_new">
4131 <doc xml:space="preserve"
4132 filename="gsk/gskrendernodeimpl.c"
4133 line="3884">Creates a `GskRenderNode` that will render an outset shadow
4134around the box given by @outline.</doc>
4135 <source-position filename="gsk/gskrendernode.h" line="374"/>
4136 <return-value transfer-ownership="full">
4137 <doc xml:space="preserve"
4138 filename="gsk/gskrendernodeimpl.c"
4139 line="3896">A new `GskRenderNode`</doc>
4140 <type name="OutsetShadowNode" c:type="GskRenderNode*"/>
4141 </return-value>
4142 <parameters>
4143 <parameter name="outline" transfer-ownership="none">
4144 <doc xml:space="preserve"
4145 filename="gsk/gskrendernodeimpl.c"
4146 line="3886">outline of the region surrounded by shadow</doc>
4147 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
4148 </parameter>
4149 <parameter name="color" transfer-ownership="none">
4150 <doc xml:space="preserve"
4151 filename="gsk/gskrendernodeimpl.c"
4152 line="3887">color of the shadow</doc>
4153 <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
4154 </parameter>
4155 <parameter name="dx" transfer-ownership="none">
4156 <doc xml:space="preserve"
4157 filename="gsk/gskrendernodeimpl.c"
4158 line="3888">horizontal offset of shadow</doc>
4159 <type name="gfloat" c:type="float"/>
4160 </parameter>
4161 <parameter name="dy" transfer-ownership="none">
4162 <doc xml:space="preserve"
4163 filename="gsk/gskrendernodeimpl.c"
4164 line="3889">vertical offset of shadow</doc>
4165 <type name="gfloat" c:type="float"/>
4166 </parameter>
4167 <parameter name="spread" transfer-ownership="none">
4168 <doc xml:space="preserve"
4169 filename="gsk/gskrendernodeimpl.c"
4170 line="3890">how far the shadow spreads towards the inside</doc>
4171 <type name="gfloat" c:type="float"/>
4172 </parameter>
4173 <parameter name="blur_radius" transfer-ownership="none">
4174 <doc xml:space="preserve"
4175 filename="gsk/gskrendernodeimpl.c"
4176 line="3891">how much blur to apply to the shadow</doc>
4177 <type name="gfloat" c:type="float"/>
4178 </parameter>
4179 </parameters>
4180 </constructor>
4181 <method name="get_blur_radius"
4182 c:identifier="gsk_outset_shadow_node_get_blur_radius">
4183 <doc xml:space="preserve"
4184 filename="gsk/gskrendernodeimpl.c"
4185 line="4084">Retrieves the blur radius of the shadow.</doc>
4186 <source-position filename="gsk/gskrendernode.h" line="391"/>
4187 <return-value transfer-ownership="none">
4188 <doc xml:space="preserve"
4189 filename="gsk/gskrendernodeimpl.c"
4190 line="4090">the blur radius, in pixels</doc>
4191 <type name="gfloat" c:type="float"/>
4192 </return-value>
4193 <parameters>
4194 <instance-parameter name="node" transfer-ownership="none">
4195 <doc xml:space="preserve"
4196 filename="gsk/gskrendernodeimpl.c"
4197 line="4086">a `GskRenderNode` for an outset shadow</doc>
4198 <type name="OutsetShadowNode" c:type="const GskRenderNode*"/>
4199 </instance-parameter>
4200 </parameters>
4201 </method>
4202 <method name="get_color" c:identifier="gsk_outset_shadow_node_get_color">
4203 <doc xml:space="preserve"
4204 filename="gsk/gskrendernodeimpl.c"
4205 line="3984">Retrieves the color of the outset shadow.
4206
4207The value returned by this function will not be correct
4208if the render node was created for a non-sRGB color.</doc>
4209 <source-position filename="gsk/gskrendernode.h" line="383"/>
4210 <return-value transfer-ownership="none">
4211 <doc xml:space="preserve"
4212 filename="gsk/gskrendernodeimpl.c"
4213 line="3993">a color</doc>
4214 <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
4215 </return-value>
4216 <parameters>
4217 <instance-parameter name="node" transfer-ownership="none">
4218 <doc xml:space="preserve"
4219 filename="gsk/gskrendernodeimpl.c"
4220 line="3986">a `GskRenderNode` for an outset shadow</doc>
4221 <type name="OutsetShadowNode" c:type="const GskRenderNode*"/>
4222 </instance-parameter>
4223 </parameters>
4224 </method>
4225 <method name="get_dx" c:identifier="gsk_outset_shadow_node_get_dx">
4226 <doc xml:space="preserve"
4227 filename="gsk/gskrendernodeimpl.c"
4228 line="4020">Retrieves the horizontal offset of the outset shadow.</doc>
4229 <source-position filename="gsk/gskrendernode.h" line="385"/>
4230 <return-value transfer-ownership="none">
4231 <doc xml:space="preserve"
4232 filename="gsk/gskrendernodeimpl.c"
4233 line="4026">an offset, in pixels</doc>
4234 <type name="gfloat" c:type="float"/>
4235 </return-value>
4236 <parameters>
4237 <instance-parameter name="node" transfer-ownership="none">
4238 <doc xml:space="preserve"
4239 filename="gsk/gskrendernodeimpl.c"
4240 line="4022">a `GskRenderNode` for an outset shadow</doc>
4241 <type name="OutsetShadowNode" c:type="const GskRenderNode*"/>
4242 </instance-parameter>
4243 </parameters>
4244 </method>
4245 <method name="get_dy" c:identifier="gsk_outset_shadow_node_get_dy">
4246 <doc xml:space="preserve"
4247 filename="gsk/gskrendernodeimpl.c"
4248 line="4036">Retrieves the vertical offset of the outset shadow.</doc>
4249 <source-position filename="gsk/gskrendernode.h" line="387"/>
4250 <return-value transfer-ownership="none">
4251 <doc xml:space="preserve"
4252 filename="gsk/gskrendernodeimpl.c"
4253 line="4042">an offset, in pixels</doc>
4254 <type name="gfloat" c:type="float"/>
4255 </return-value>
4256 <parameters>
4257 <instance-parameter name="node" transfer-ownership="none">
4258 <doc xml:space="preserve"
4259 filename="gsk/gskrendernodeimpl.c"
4260 line="4038">a `GskRenderNode` for an outset shadow</doc>
4261 <type name="OutsetShadowNode" c:type="const GskRenderNode*"/>
4262 </instance-parameter>
4263 </parameters>
4264 </method>
4265 <method name="get_outline"
4266 c:identifier="gsk_outset_shadow_node_get_outline">
4267 <doc xml:space="preserve"
4268 filename="gsk/gskrendernodeimpl.c"
4269 line="3968">Retrieves the outline rectangle of the outset shadow.</doc>
4270 <source-position filename="gsk/gskrendernode.h" line="381"/>
4271 <return-value transfer-ownership="none">
4272 <doc xml:space="preserve"
4273 filename="gsk/gskrendernodeimpl.c"
4274 line="3974">a rounded rectangle</doc>
4275 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
4276 </return-value>
4277 <parameters>
4278 <instance-parameter name="node" transfer-ownership="none">
4279 <doc xml:space="preserve"
4280 filename="gsk/gskrendernodeimpl.c"
4281 line="3970">a `GskRenderNode` for an outset shadow</doc>
4282 <type name="OutsetShadowNode" c:type="const GskRenderNode*"/>
4283 </instance-parameter>
4284 </parameters>
4285 </method>
4286 <method name="get_spread"
4287 c:identifier="gsk_outset_shadow_node_get_spread">
4288 <doc xml:space="preserve"
4289 filename="gsk/gskrendernodeimpl.c"
4290 line="4068">Retrieves how much the shadow spreads outwards.</doc>
4291 <source-position filename="gsk/gskrendernode.h" line="389"/>
4292 <return-value transfer-ownership="none">
4293 <doc xml:space="preserve"
4294 filename="gsk/gskrendernodeimpl.c"
4295 line="4074">the size of the shadow, in pixels</doc>
4296 <type name="gfloat" c:type="float"/>
4297 </return-value>
4298 <parameters>
4299 <instance-parameter name="node" transfer-ownership="none">
4300 <doc xml:space="preserve"
4301 filename="gsk/gskrendernodeimpl.c"
4302 line="4070">a `GskRenderNode` for an outset shadow</doc>
4303 <type name="OutsetShadowNode" c:type="const GskRenderNode*"/>
4304 </instance-parameter>
4305 </parameters>
4306 </method>
4307 </class>
4308 <callback name="ParseErrorFunc" c:type="GskParseErrorFunc">
4309 <doc xml:space="preserve"
4310 filename="gsk/gskrendernode.h"
4311 line="92">Type of callback that is called when an error occurs
4312during node deserialization.</doc>
4313 <source-position filename="gsk/gskrendernode.h" line="102"/>
4314 <return-value transfer-ownership="none">
4315 <type name="none" c:type="void"/>
4316 </return-value>
4317 <parameters>
4318 <parameter name="start" transfer-ownership="none">
4319 <doc xml:space="preserve"
4320 filename="gsk/gskrendernode.h"
4321 line="94">start of the error location</doc>
4322 <type name="ParseLocation" c:type="const GskParseLocation*"/>
4323 </parameter>
4324 <parameter name="end" transfer-ownership="none">
4325 <doc xml:space="preserve"
4326 filename="gsk/gskrendernode.h"
4327 line="95">end of the error location</doc>
4328 <type name="ParseLocation" c:type="const GskParseLocation*"/>
4329 </parameter>
4330 <parameter name="error" transfer-ownership="none">
4331 <doc xml:space="preserve"
4332 filename="gsk/gskrendernode.h"
4333 line="96">the error</doc>
4334 <type name="GLib.Error" c:type="const GError*"/>
4335 </parameter>
4336 <parameter name="user_data"
4337 transfer-ownership="none"
4338 nullable="1"
4339 allow-none="1"
4340 closure="3">
4341 <doc xml:space="preserve"
4342 filename="gsk/gskrendernode.h"
4343 line="97">user data</doc>
4344 <type name="gpointer" c:type="gpointer"/>
4345 </parameter>
4346 </parameters>
4347 </callback>
4348 <record name="ParseLocation" c:type="GskParseLocation">
4349 <doc xml:space="preserve"
4350 filename="gsk/gskrendernode.h"
4351 line="73">A location in a parse buffer.</doc>
4352 <source-position filename="gsk/gskrendernode.h" line="90"/>
4353 <field name="bytes" writable="1">
4354 <doc xml:space="preserve"
4355 filename="gsk/gskrendernode.h"
4356 line="75">the offset of the location in the parse buffer, as bytes</doc>
4357 <type name="gsize" c:type="gsize"/>
4358 </field>
4359 <field name="chars" writable="1">
4360 <doc xml:space="preserve"
4361 filename="gsk/gskrendernode.h"
4362 line="76">the offset of the location in the parse buffer, as characters</doc>
4363 <type name="gsize" c:type="gsize"/>
4364 </field>
4365 <field name="lines" writable="1">
4366 <doc xml:space="preserve"
4367 filename="gsk/gskrendernode.h"
4368 line="77">the line of the location in the parse buffer</doc>
4369 <type name="gsize" c:type="gsize"/>
4370 </field>
4371 <field name="line_bytes" writable="1">
4372 <doc xml:space="preserve"
4373 filename="gsk/gskrendernode.h"
4374 line="78">the position in the line, as bytes</doc>
4375 <type name="gsize" c:type="gsize"/>
4376 </field>
4377 <field name="line_chars" writable="1">
4378 <doc xml:space="preserve"
4379 filename="gsk/gskrendernode.h"
4380 line="79">the position in the line, as characters</doc>
4381 <type name="gsize" c:type="gsize"/>
4382 </field>
4383 </record>
4384 <record name="Path"
4385 c:type="GskPath"
4386 opaque="1"
4387 version="4.14"
4388 glib:type-name="GskPath"
4389 glib:get-type="gsk_path_get_type"
4390 c:symbol-prefix="path">
4391 <doc xml:space="preserve"
4392 filename="gsk/gskpath.c"
4393 line="29">Describes lines and curves that are more complex than simple rectangles.
4394
4395Paths can used for rendering (filling or stroking) and for animations
4396(e.g. as trajectories).
4397
4398`GskPath` is an immutable, opaque, reference-counted struct.
4399After creation, you cannot change the types it represents. Instead,
4400new `GskPath` objects have to be created. The [struct@Gsk.PathBuilder]
4401structure is meant to help in this endeavor.
4402
4403Conceptually, a path consists of zero or more contours (continuous, connected
4404curves), each of which may or may not be closed. Contours are typically
4405constructed from Bézier segments.
4406
4407<picture>
4408 <source srcset="path-dark.png" media="(prefers-color-scheme: dark)">
4409 <img alt="A Path" src="path-light.png">
4410</picture></doc>
4411 <source-position filename="gsk/gsktypes.h" line="28"/>
4412 <method name="foreach" c:identifier="gsk_path_foreach" version="4.14">
4413 <doc xml:space="preserve"
4414 filename="gsk/gskpath.c"
4415 line="609">Calls @func for every operation of the path.
4416
4417Note that this may only approximate @self, because paths can contain
4418optimizations for various specialized contours, and depending on the
4419@flags, the path may be decomposed into simpler curves than the ones
4420that it contained originally.
4421
4422This function serves two purposes:
4423
4424- When the @flags allow everything, it provides access to the raw,
4425 unmodified data of the path.
4426- When the @flags disallow certain operations, it provides
4427 an approximation of the path using just the allowed operations.</doc>
4428 <source-position filename="gsk/gskpath.h" line="141"/>
4429 <return-value transfer-ownership="none">
4430 <doc xml:space="preserve"
4431 filename="gsk/gskpath.c"
4432 line="630">false if @func returned false, true otherwise.</doc>
4433 <type name="gboolean" c:type="gboolean"/>
4434 </return-value>
4435 <parameters>
4436 <instance-parameter name="self" transfer-ownership="none">
4437 <doc xml:space="preserve"
4438 filename="gsk/gskpath.c"
4439 line="611">a path</doc>
4440 <type name="Path" c:type="GskPath*"/>
4441 </instance-parameter>
4442 <parameter name="flags" transfer-ownership="none">
4443 <doc xml:space="preserve"
4444 filename="gsk/gskpath.c"
4445 line="612">flags to pass to the foreach function</doc>
4446 <type name="PathForeachFlags" c:type="GskPathForeachFlags"/>
4447 </parameter>
4448 <parameter name="func"
4449 transfer-ownership="none"
4450 scope="call"
4451 closure="2">
4452 <doc xml:space="preserve"
4453 filename="gsk/gskpath.c"
4454 line="613">the function to call for operations</doc>
4455 <type name="PathForeachFunc" c:type="GskPathForeachFunc"/>
4456 </parameter>
4457 <parameter name="user_data"
4458 transfer-ownership="none"
4459 nullable="1"
4460 allow-none="1">
4461 <doc xml:space="preserve"
4462 filename="gsk/gskpath.c"
4463 line="614">user data passed to @func</doc>
4464 <type name="gpointer" c:type="gpointer"/>
4465 </parameter>
4466 </parameters>
4467 </method>
4468 <method name="foreach_intersection"
4469 c:identifier="gsk_path_foreach_intersection"
4470 version="4.20">
4471 <doc xml:space="preserve"
4472 filename="gsk/gskpathintersect.c"
4473 line="696">Finds intersections between two paths.
4474
4475This function finds intersections between @path1 and @path2,
4476and calls @func for each of them, in increasing order for @path1.
4477
4478If @path2 is not provided or equal to @path1, the function finds
4479non-trivial self-intersections of @path1.
4480
4481When segments of the paths coincide, the callback is called once
4482for the start of the segment, with @GSK_PATH_INTERSECTION_START, and
4483once for the end of the segment, with @GSK_PATH_INTERSECTION_END.
4484Note that other intersections may occur between the start and end
4485of such a segment.
4486
4487If @func returns `FALSE`, the iteration is stopped.</doc>
4488 <source-position filename="gsk/gskpath.h" line="192"/>
4489 <return-value transfer-ownership="none">
4490 <doc xml:space="preserve"
4491 filename="gsk/gskpathintersect.c"
4492 line="719">`FALSE` if @func returned FALSE`, `TRUE` otherwise.</doc>
4493 <type name="gboolean" c:type="gboolean"/>
4494 </return-value>
4495 <parameters>
4496 <instance-parameter name="path1" transfer-ownership="none">
4497 <doc xml:space="preserve"
4498 filename="gsk/gskpathintersect.c"
4499 line="698">the first path</doc>
4500 <type name="Path" c:type="GskPath*"/>
4501 </instance-parameter>
4502 <parameter name="path2"
4503 transfer-ownership="none"
4504 nullable="1"
4505 allow-none="1">
4506 <doc xml:space="preserve"
4507 filename="gsk/gskpathintersect.c"
4508 line="699">the second path</doc>
4509 <type name="Path" c:type="GskPath*"/>
4510 </parameter>
4511 <parameter name="func"
4512 transfer-ownership="none"
4513 scope="call"
4514 closure="2">
4515 <doc xml:space="preserve"
4516 filename="gsk/gskpathintersect.c"
4517 line="700">the function to call for intersections</doc>
4518 <type name="PathIntersectionFunc"
4519 c:type="GskPathIntersectionFunc"/>
4520 </parameter>
4521 <parameter name="user_data"
4522 transfer-ownership="none"
4523 nullable="1"
4524 allow-none="1">
4525 <doc xml:space="preserve"
4526 filename="gsk/gskpathintersect.c"
4527 line="701">user data passed to @func</doc>
4528 <type name="gpointer" c:type="gpointer"/>
4529 </parameter>
4530 </parameters>
4531 </method>
4532 <method name="get_bounds"
4533 c:identifier="gsk_path_get_bounds"
4534 version="4.14">
4535 <doc xml:space="preserve"
4536 filename="gsk/gskpath.c"
4537 line="346">Computes the bounds of the given path.
4538
4539The returned bounds may be larger than necessary, because this
4540function aims to be fast, not accurate. The bounds are guaranteed
4541to contain the path.
4542
4543It is possible that the returned rectangle has 0 width and/or height.
4544This can happen when the path only describes a point or an
4545axis-aligned line.
4546
4547If the path is empty, false is returned and @bounds are set to
4548graphene_rect_zero(). This is different from the case where the path
4549is a single point at the origin, where the @bounds will also be set to
4550the zero rectangle but true will be returned.</doc>
4551 <source-position filename="gsk/gskpath.h" line="113"/>
4552 <return-value transfer-ownership="none">
4553 <doc xml:space="preserve"
4554 filename="gsk/gskpath.c"
4555 line="366">true if the path has bounds, false if the path is known
4556 to be empty and have no bounds</doc>
4557 <type name="gboolean" c:type="gboolean"/>
4558 </return-value>
4559 <parameters>
4560 <instance-parameter name="self" transfer-ownership="none">
4561 <doc xml:space="preserve"
4562 filename="gsk/gskpath.c"
4563 line="348">a path</doc>
4564 <type name="Path" c:type="GskPath*"/>
4565 </instance-parameter>
4566 <parameter name="bounds"
4567 direction="out"
4568 caller-allocates="1"
4569 transfer-ownership="none">
4570 <doc xml:space="preserve"
4571 filename="gsk/gskpath.c"
4572 line="349">return location for the bounds</doc>
4573 <type name="Graphene.Rect" c:type="graphene_rect_t*"/>
4574 </parameter>
4575 </parameters>
4576 </method>
4577 <method name="get_closest_point"
4578 c:identifier="gsk_path_get_closest_point"
4579 version="4.14">
4580 <doc xml:space="preserve"
4581 filename="gsk/gskpath.c"
4582 line="553">Computes the closest point on the path to the given point.
4583
4584If there is no point closer than the given threshold,
4585false is returned.</doc>
4586 <source-position filename="gsk/gskpath.h" line="134"/>
4587 <return-value transfer-ownership="none">
4588 <doc xml:space="preserve"
4589 filename="gsk/gskpath.c"
4590 line="566">true if @point was set to the closest point
4591 on @self, false if no point is closer than @threshold</doc>
4592 <type name="gboolean" c:type="gboolean"/>
4593 </return-value>
4594 <parameters>
4595 <instance-parameter name="self" transfer-ownership="none">
4596 <doc xml:space="preserve"
4597 filename="gsk/gskpath.c"
4598 line="555">a path</doc>
4599 <type name="Path" c:type="GskPath*"/>
4600 </instance-parameter>
4601 <parameter name="point" transfer-ownership="none">
4602 <doc xml:space="preserve"
4603 filename="gsk/gskpath.c"
4604 line="556">the point</doc>
4605 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
4606 </parameter>
4607 <parameter name="threshold" transfer-ownership="none">
4608 <doc xml:space="preserve"
4609 filename="gsk/gskpath.c"
4610 line="557">maximum allowed distance</doc>
4611 <type name="gfloat" c:type="float"/>
4612 </parameter>
4613 <parameter name="result"
4614 direction="out"
4615 caller-allocates="1"
4616 transfer-ownership="none">
4617 <doc xml:space="preserve"
4618 filename="gsk/gskpath.c"
4619 line="558">return location for the closest point</doc>
4620 <type name="PathPoint" c:type="GskPathPoint*"/>
4621 </parameter>
4622 <parameter name="distance"
4623 direction="out"
4624 caller-allocates="0"
4625 transfer-ownership="full"
4626 optional="1"
4627 allow-none="1">
4628 <doc xml:space="preserve"
4629 filename="gsk/gskpath.c"
4630 line="559">return location for the distance</doc>
4631 <type name="gfloat" c:type="float*"/>
4632 </parameter>
4633 </parameters>
4634 </method>
4635 <method name="get_end_point"
4636 c:identifier="gsk_path_get_end_point"
4637 version="4.14">
4638 <doc xml:space="preserve"
4639 filename="gsk/gskpath.c"
4640 line="522">Gets the end point of the path.
4641
4642An empty path has no points, so false
4643is returned in this case.</doc>
4644 <source-position filename="gsk/gskpath.h" line="130"/>
4645 <return-value transfer-ownership="none">
4646 <doc xml:space="preserve"
4647 filename="gsk/gskpath.c"
4648 line="532">true if @result was filled</doc>
4649 <type name="gboolean" c:type="gboolean"/>
4650 </return-value>
4651 <parameters>
4652 <instance-parameter name="self" transfer-ownership="none">
4653 <doc xml:space="preserve"
4654 filename="gsk/gskpath.c"
4655 line="524">a path</doc>
4656 <type name="Path" c:type="GskPath*"/>
4657 </instance-parameter>
4658 <parameter name="result"
4659 direction="out"
4660 caller-allocates="1"
4661 transfer-ownership="none">
4662 <doc xml:space="preserve"
4663 filename="gsk/gskpath.c"
4664 line="525">return location for point</doc>
4665 <type name="PathPoint" c:type="GskPathPoint*"/>
4666 </parameter>
4667 </parameters>
4668 </method>
4669 <method name="get_start_point"
4670 c:identifier="gsk_path_get_start_point"
4671 version="4.14">
4672 <doc xml:space="preserve"
4673 filename="gsk/gskpath.c"
4674 line="487">Gets the start point of the path.
4675
4676An empty path has no points, so false
4677is returned in this case.</doc>
4678 <source-position filename="gsk/gskpath.h" line="127"/>
4679 <return-value transfer-ownership="none">
4680 <doc xml:space="preserve"
4681 filename="gsk/gskpath.c"
4682 line="497">true if @result was filled</doc>
4683 <type name="gboolean" c:type="gboolean"/>
4684 </return-value>
4685 <parameters>
4686 <instance-parameter name="self" transfer-ownership="none">
4687 <doc xml:space="preserve"
4688 filename="gsk/gskpath.c"
4689 line="489">a path</doc>
4690 <type name="Path" c:type="GskPath*"/>
4691 </instance-parameter>
4692 <parameter name="result"
4693 direction="out"
4694 caller-allocates="1"
4695 transfer-ownership="none">
4696 <doc xml:space="preserve"
4697 filename="gsk/gskpath.c"
4698 line="490">return location for point</doc>
4699 <type name="PathPoint" c:type="GskPathPoint*"/>
4700 </parameter>
4701 </parameters>
4702 </method>
4703 <method name="get_stroke_bounds"
4704 c:identifier="gsk_path_get_stroke_bounds"
4705 version="4.14">
4706 <doc xml:space="preserve"
4707 filename="gsk/gskpath.c"
4708 line="401">Computes the bounds for stroking the given path with the
4709given parameters.
4710
4711The returned bounds may be larger than necessary, because this
4712function aims to be fast, not accurate. The bounds are guaranteed
4713to contain the area affected by the stroke, including protrusions
4714like miters.</doc>
4715 <source-position filename="gsk/gskpath.h" line="117"/>
4716 <return-value transfer-ownership="none">
4717 <doc xml:space="preserve"
4718 filename="gsk/gskpath.c"
4719 line="415">true if the path has bounds, false if the path is known
4720 to be empty and have no bounds.</doc>
4721 <type name="gboolean" c:type="gboolean"/>
4722 </return-value>
4723 <parameters>
4724 <instance-parameter name="self" transfer-ownership="none">
4725 <doc xml:space="preserve"
4726 filename="gsk/gskpath.c"
4727 line="403">a path</doc>
4728 <type name="Path" c:type="GskPath*"/>
4729 </instance-parameter>
4730 <parameter name="stroke" transfer-ownership="none">
4731 <doc xml:space="preserve"
4732 filename="gsk/gskpath.c"
4733 line="404">stroke parameters</doc>
4734 <type name="Stroke" c:type="const GskStroke*"/>
4735 </parameter>
4736 <parameter name="bounds"
4737 direction="out"
4738 caller-allocates="1"
4739 transfer-ownership="none">
4740 <doc xml:space="preserve"
4741 filename="gsk/gskpath.c"
4742 line="405">the bounds to fill in</doc>
4743 <type name="Graphene.Rect" c:type="graphene_rect_t*"/>
4744 </parameter>
4745 </parameters>
4746 </method>
4747 <method name="in_fill" c:identifier="gsk_path_in_fill" version="4.14">
4748 <doc xml:space="preserve"
4749 filename="gsk/gskpath.c"
4750 line="451">Returns whether a point is inside the fill area of a path.
4751
4752Note that this function assumes that filling a contour
4753implicitly closes it.</doc>
4754 <source-position filename="gsk/gskpath.h" line="122"/>
4755 <return-value transfer-ownership="none">
4756 <doc xml:space="preserve"
4757 filename="gsk/gskpath.c"
4758 line="462">true if @point is inside</doc>
4759 <type name="gboolean" c:type="gboolean"/>
4760 </return-value>
4761 <parameters>
4762 <instance-parameter name="self" transfer-ownership="none">
4763 <doc xml:space="preserve"
4764 filename="gsk/gskpath.c"
4765 line="453">a path</doc>
4766 <type name="Path" c:type="GskPath*"/>
4767 </instance-parameter>
4768 <parameter name="point" transfer-ownership="none">
4769 <doc xml:space="preserve"
4770 filename="gsk/gskpath.c"
4771 line="454">the point to test</doc>
4772 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
4773 </parameter>
4774 <parameter name="fill_rule" transfer-ownership="none">
4775 <doc xml:space="preserve"
4776 filename="gsk/gskpath.c"
4777 line="455">the fill rule to follow</doc>
4778 <type name="FillRule" c:type="GskFillRule"/>
4779 </parameter>
4780 </parameters>
4781 </method>
4782 <method name="is_closed"
4783 c:identifier="gsk_path_is_closed"
4784 version="4.14">
4785 <doc xml:space="preserve"
4786 filename="gsk/gskpath.c"
4787 line="324">Returns if the path represents a single closed contour.</doc>
4788 <source-position filename="gsk/gskpath.h" line="110"/>
4789 <return-value transfer-ownership="none">
4790 <doc xml:space="preserve"
4791 filename="gsk/gskpath.c"
4792 line="330">true if the path is closed</doc>
4793 <type name="gboolean" c:type="gboolean"/>
4794 </return-value>
4795 <parameters>
4796 <instance-parameter name="self" transfer-ownership="none">
4797 <doc xml:space="preserve"
4798 filename="gsk/gskpath.c"
4799 line="326">a path</doc>
4800 <type name="Path" c:type="GskPath*"/>
4801 </instance-parameter>
4802 </parameters>
4803 </method>
4804 <method name="is_empty" c:identifier="gsk_path_is_empty" version="4.14">
4805 <doc xml:space="preserve"
4806 filename="gsk/gskpath.c"
4807 line="306">Checks if the path is empty, i.e. contains no lines or curves.</doc>
4808 <source-position filename="gsk/gskpath.h" line="107"/>
4809 <return-value transfer-ownership="none">
4810 <doc xml:space="preserve"
4811 filename="gsk/gskpath.c"
4812 line="312">true if the path is empty</doc>
4813 <type name="gboolean" c:type="gboolean"/>
4814 </return-value>
4815 <parameters>
4816 <instance-parameter name="self" transfer-ownership="none">
4817 <doc xml:space="preserve"
4818 filename="gsk/gskpath.c"
4819 line="308">a path</doc>
4820 <type name="Path" c:type="GskPath*"/>
4821 </instance-parameter>
4822 </parameters>
4823 </method>
4824 <method name="print" c:identifier="gsk_path_print" version="4.14">
4825 <doc xml:space="preserve"
4826 filename="gsk/gskpath.c"
4827 line="182">Converts the path into a human-readable representation.
4828
4829The string is compatible with (a superset of)
4830[SVG path syntax](https://www.w3.org/TR/SVG11/paths.html#PathData),
4831see [func@Gsk.Path.parse] for a summary of the syntax.</doc>
4832 <source-position filename="gsk/gskpath.h" line="94"/>
4833 <return-value transfer-ownership="none">
4834 <type name="none" c:type="void"/>
4835 </return-value>
4836 <parameters>
4837 <instance-parameter name="self" transfer-ownership="none">
4838 <doc xml:space="preserve"
4839 filename="gsk/gskpath.c"
4840 line="184">a path</doc>
4841 <type name="Path" c:type="GskPath*"/>
4842 </instance-parameter>
4843 <parameter name="string" transfer-ownership="none">
4844 <doc xml:space="preserve"
4845 filename="gsk/gskpath.c"
4846 line="185">the string to print into</doc>
4847 <type name="GLib.String" c:type="GString*"/>
4848 </parameter>
4849 </parameters>
4850 </method>
4851 <method name="ref" c:identifier="gsk_path_ref" version="4.14">
4852 <doc xml:space="preserve"
4853 filename="gsk/gskpath.c"
4854 line="139">Increases the reference count of a path by one.</doc>
4855 <source-position filename="gsk/gskpath.h" line="89"/>
4856 <return-value transfer-ownership="full">
4857 <doc xml:space="preserve"
4858 filename="gsk/gskpath.c"
4859 line="145">the passed in `GskPath`</doc>
4860 <type name="Path" c:type="GskPath*"/>
4861 </return-value>
4862 <parameters>
4863 <instance-parameter name="self" transfer-ownership="none">
4864 <doc xml:space="preserve"
4865 filename="gsk/gskpath.c"
4866 line="141">a path</doc>
4867 <type name="Path" c:type="GskPath*"/>
4868 </instance-parameter>
4869 </parameters>
4870 </method>
4871 <method name="to_cairo" c:identifier="gsk_path_to_cairo" version="4.14">
4872 <doc xml:space="preserve"
4873 filename="gsk/gskpath.c"
4874 line="277">Appends the path to a cairo context for drawing with Cairo.
4875
4876This may cause some suboptimal conversions to be performed as
4877Cairo does not support all features of `GskPath`.
4878
4879This function does not clear the existing Cairo path. Call
4880cairo_new_path() if you want this.</doc>
4881 <source-position filename="gsk/gskpath.h" line="103"/>
4882 <return-value transfer-ownership="none">
4883 <type name="none" c:type="void"/>
4884 </return-value>
4885 <parameters>
4886 <instance-parameter name="self" transfer-ownership="none">
4887 <doc xml:space="preserve"
4888 filename="gsk/gskpath.c"
4889 line="279">a path</doc>
4890 <type name="Path" c:type="GskPath*"/>
4891 </instance-parameter>
4892 <parameter name="cr" transfer-ownership="none">
4893 <doc xml:space="preserve"
4894 filename="gsk/gskpath.c"
4895 line="280">a cairo context</doc>
4896 <type name="cairo.Context" c:type="cairo_t*"/>
4897 </parameter>
4898 </parameters>
4899 </method>
4900 <method name="to_string"
4901 c:identifier="gsk_path_to_string"
4902 version="4.14">
4903 <doc xml:space="preserve"
4904 filename="gsk/gskpath.c"
4905 line="212">Converts the path into a human-readable string.
4906
4907You can use this function in a debugger to get a quick overview
4908of the path.
4909
4910This is a wrapper around [method@Gsk.Path.print], see that function
4911for details.</doc>
4912 <source-position filename="gsk/gskpath.h" line="97"/>
4913 <return-value transfer-ownership="full">
4914 <doc xml:space="preserve"
4915 filename="gsk/gskpath.c"
4916 line="224">a new string for @self</doc>
4917 <type name="utf8" c:type="char*"/>
4918 </return-value>
4919 <parameters>
4920 <instance-parameter name="self" transfer-ownership="none">
4921 <doc xml:space="preserve"
4922 filename="gsk/gskpath.c"
4923 line="214">a path</doc>
4924 <type name="Path" c:type="GskPath*"/>
4925 </instance-parameter>
4926 </parameters>
4927 </method>
4928 <method name="unref" c:identifier="gsk_path_unref" version="4.14">
4929 <doc xml:space="preserve"
4930 filename="gsk/gskpath.c"
4931 line="159">Decreases the reference count of a path by one.
4932
4933If the resulting reference count is zero, frees the path.</doc>
4934 <source-position filename="gsk/gskpath.h" line="91"/>
4935 <return-value transfer-ownership="none">
4936 <type name="none" c:type="void"/>
4937 </return-value>
4938 <parameters>
4939 <instance-parameter name="self" transfer-ownership="none">
4940 <doc xml:space="preserve"
4941 filename="gsk/gskpath.c"
4942 line="161">a path</doc>
4943 <type name="Path" c:type="GskPath*"/>
4944 </instance-parameter>
4945 </parameters>
4946 </method>
4947 <function name="parse" c:identifier="gsk_path_parse" version="4.14">
4948 <doc xml:space="preserve"
4949 filename="gsk/gskpathparser.c"
4950 line="358">Constructs a path from a serialized form.
4951
4952The string is expected to be in (a superset of)
4953[SVG path syntax](https://www.w3.org/TR/SVG11/paths.html#PathData),
4954as e.g. produced by [method@Gsk.Path.to_string].
4955
4956A high-level summary of the syntax:
4957
4958- `M x y` Move to `(x, y)`
4959- `L x y` Add a line from the current point to `(x, y)`
4960- `Q x1 y1 x2 y2` Add a quadratic Bézier from the current point to `(x2, y2)`, with control point `(x1, y1)`
4961- `C x1 y1 x2 y2 x3 y3` Add a cubic Bézier from the current point to `(x3, y3)`, with control points `(x1, y1)` and `(x2, y2)`
4962- `Z` Close the contour by drawing a line back to the start point
4963- `H x` Add a horizontal line from the current point to the given x value
4964- `V y` Add a vertical line from the current point to the given y value
4965- `T x2 y2` Add a quadratic Bézier, using the reflection of the previous segments' control point as control point
4966- `S x2 y2 x3 y3` Add a cubic Bézier, using the reflection of the previous segments' second control point as first control point
4967- `A rx ry r l s x y` Add an elliptical arc from the current point to `(x, y)` with radii rx and ry. See the SVG documentation for how the other parameters influence the arc.
4968- `O x1 y1 x2 y2 w` Add a rational quadratic Bézier from the current point to `(x2, y2)` with control point `(x1, y1)` and weight `w`.
4969
4970All the commands have lowercase variants that interpret coordinates
4971relative to the current point.
4972
4973The `O` command is an extension that is not supported in SVG.</doc>
4974 <source-position filename="gsk/gskpath.h" line="100"/>
4975 <return-value transfer-ownership="full" nullable="1">
4976 <doc xml:space="preserve"
4977 filename="gsk/gskpathparser.c"
4978 line="387">a new `GskPath`, or `NULL` if @string could not be parsed</doc>
4979 <type name="Path" c:type="GskPath*"/>
4980 </return-value>
4981 <parameters>
4982 <parameter name="string" transfer-ownership="none">
4983 <doc xml:space="preserve"
4984 filename="gsk/gskpathparser.c"
4985 line="360">a string</doc>
4986 <type name="utf8" c:type="const char*"/>
4987 </parameter>
4988 </parameters>
4989 </function>
4990 </record>
4991 <record name="PathBuilder"
4992 c:type="GskPathBuilder"
4993 opaque="1"
4994 version="4.14"
4995 glib:type-name="GskPathBuilder"
4996 glib:get-type="gsk_path_builder_get_type"
4997 c:symbol-prefix="path_builder">
4998 <doc xml:space="preserve"
4999 filename="gsk/gskpathbuilder.c"
5000 line="31">Constructs `GskPath` objects.
5001
5002A path is constructed like this:
5003
5004```c
5005GskPath *
5006construct_path (void)
5007{
5008 GskPathBuilder *builder;
5009
5010 builder = gsk_path_builder_new ();
5011
5012 // add contours to the path here
5013
5014 return gsk_path_builder_free_to_path (builder);
5015```
5016
5017Adding contours to the path can be done in two ways.
5018The easiest option is to use the `gsk_path_builder_add_*` group
5019of functions that add predefined contours to the current path,
5020either common shapes like [method@Gsk.PathBuilder.add_circle]
5021or by adding from other paths like [method@Gsk.PathBuilder.add_path].
5022
5023The `gsk_path_builder_add_*` methods always add complete contours,
5024and do not use or modify the current point.
5025
5026The other option is to define each line and curve manually with
5027the `gsk_path_builder_*_to` group of functions. You start with
5028a call to [method@Gsk.PathBuilder.move_to] to set the starting point
5029and then use multiple calls to any of the drawing functions to
5030move the pen along the plane. Once you are done, you can call
5031[method@Gsk.PathBuilder.close] to close the path by connecting it
5032back with a line to the starting point.
5033
5034This is similar to how paths are drawn in Cairo.
5035
5036Note that `GskPathBuilder` will reduce the degree of added Bézier
5037curves as much as possible, to simplify rendering.</doc>
5038 <source-position filename="gsk/gsktypes.h" line="29"/>
5039 <constructor name="new"
5040 c:identifier="gsk_path_builder_new"
5041 version="4.14">
5042 <doc xml:space="preserve"
5043 filename="gsk/gskpathbuilder.c"
5044 line="94">Create a new `GskPathBuilder` object.
5045
5046The resulting builder would create an empty `GskPath`.
5047Use addition functions to add types to it.</doc>
5048 <source-position filename="gsk/gskpathbuilder.h" line="38"/>
5049 <return-value transfer-ownership="full">
5050 <doc xml:space="preserve"
5051 filename="gsk/gskpathbuilder.c"
5052 line="102">a new `GskPathBuilder`</doc>
5053 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5054 </return-value>
5055 </constructor>
5056 <method name="add_cairo_path"
5057 c:identifier="gsk_path_builder_add_cairo_path"
5058 version="4.14">
5059 <doc xml:space="preserve"
5060 filename="gsk/gskpathbuilder.c"
5061 line="386">Adds a Cairo path to the builder.
5062
5063You can use cairo_copy_path() to access the path
5064from a Cairo context.</doc>
5065 <source-position filename="gsk/gskpathbuilder.h" line="58"/>
5066 <return-value transfer-ownership="none">
5067 <type name="none" c:type="void"/>
5068 </return-value>
5069 <parameters>
5070 <instance-parameter name="self" transfer-ownership="none">
5071 <doc xml:space="preserve"
5072 filename="gsk/gskpathbuilder.c"
5073 line="388">a path builder</doc>
5074 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5075 </instance-parameter>
5076 <parameter name="path" transfer-ownership="none">
5077 <doc xml:space="preserve"
5078 filename="gsk/gskpathbuilder.c"
5079 line="389">a path</doc>
5080 <type name="cairo.Path" c:type="const cairo_path_t*"/>
5081 </parameter>
5082 </parameters>
5083 </method>
5084 <method name="add_circle"
5085 c:identifier="gsk_path_builder_add_circle"
5086 version="4.14">
5087 <doc xml:space="preserve"
5088 filename="gsk/gskpathbuilder.c"
5089 line="492">Adds a circle as a new contour.
5090
5091The path is going around the circle in clockwise direction.
5092
5093If @radius is zero, the contour will be a closed point.</doc>
5094 <source-position filename="gsk/gskpathbuilder.h" line="71"/>
5095 <return-value transfer-ownership="none">
5096 <type name="none" c:type="void"/>
5097 </return-value>
5098 <parameters>
5099 <instance-parameter name="self" transfer-ownership="none">
5100 <doc xml:space="preserve"
5101 filename="gsk/gskpathbuilder.c"
5102 line="494">a path builder</doc>
5103 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5104 </instance-parameter>
5105 <parameter name="center" transfer-ownership="none">
5106 <doc xml:space="preserve"
5107 filename="gsk/gskpathbuilder.c"
5108 line="495">the center of the circle</doc>
5109 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
5110 </parameter>
5111 <parameter name="radius" transfer-ownership="none">
5112 <doc xml:space="preserve"
5113 filename="gsk/gskpathbuilder.c"
5114 line="496">the radius of the circle</doc>
5115 <type name="gfloat" c:type="float"/>
5116 </parameter>
5117 </parameters>
5118 </method>
5119 <method name="add_layout"
5120 c:identifier="gsk_path_builder_add_layout"
5121 version="4.14">
5122 <doc xml:space="preserve"
5123 filename="gsk/gskpathbuilder.c"
5124 line="1559">Adds the outlines for the glyphs in @layout to the builder.</doc>
5125 <source-position filename="gsk/gskpathbuilder.h" line="61"/>
5126 <return-value transfer-ownership="none">
5127 <type name="none" c:type="void"/>
5128 </return-value>
5129 <parameters>
5130 <instance-parameter name="self" transfer-ownership="none">
5131 <doc xml:space="preserve"
5132 filename="gsk/gskpathbuilder.c"
5133 line="1561">a path builder</doc>
5134 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5135 </instance-parameter>
5136 <parameter name="layout" transfer-ownership="none">
5137 <doc xml:space="preserve"
5138 filename="gsk/gskpathbuilder.c"
5139 line="1562">the pango layout to add</doc>
5140 <type name="Pango.Layout" c:type="PangoLayout*"/>
5141 </parameter>
5142 </parameters>
5143 </method>
5144 <method name="add_path"
5145 c:identifier="gsk_path_builder_add_path"
5146 version="4.14">
5147 <doc xml:space="preserve"
5148 filename="gsk/gskpathbuilder.c"
5149 line="338">Appends all of @path to the builder.</doc>
5150 <source-position filename="gsk/gskpathbuilder.h" line="52"/>
5151 <return-value transfer-ownership="none">
5152 <type name="none" c:type="void"/>
5153 </return-value>
5154 <parameters>
5155 <instance-parameter name="self" transfer-ownership="none">
5156 <doc xml:space="preserve"
5157 filename="gsk/gskpathbuilder.c"
5158 line="340">a path builder</doc>
5159 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5160 </instance-parameter>
5161 <parameter name="path" transfer-ownership="none">
5162 <doc xml:space="preserve"
5163 filename="gsk/gskpathbuilder.c"
5164 line="341">the path to append</doc>
5165 <type name="Path" c:type="GskPath*"/>
5166 </parameter>
5167 </parameters>
5168 </method>
5169 <method name="add_rect"
5170 c:identifier="gsk_path_builder_add_rect"
5171 version="4.14">
5172 <doc xml:space="preserve"
5173 filename="gsk/gskpathbuilder.c"
5174 line="444">Adds a rectangle as a new contour.
5175
5176The path is going around the rectangle in clockwise direction.
5177
5178If the the width or height are 0, the path will be a closed
5179horizontal or vertical line. If both are 0, it'll be a closed dot.</doc>
5180 <source-position filename="gsk/gskpathbuilder.h" line="65"/>
5181 <return-value transfer-ownership="none">
5182 <type name="none" c:type="void"/>
5183 </return-value>
5184 <parameters>
5185 <instance-parameter name="self" transfer-ownership="none">
5186 <doc xml:space="preserve"
5187 filename="gsk/gskpathbuilder.c"
5188 line="446">a path builder</doc>
5189 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5190 </instance-parameter>
5191 <parameter name="rect" transfer-ownership="none">
5192 <doc xml:space="preserve"
5193 filename="gsk/gskpathbuilder.c"
5194 line="447">the rectangle to create a path for</doc>
5195 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
5196 </parameter>
5197 </parameters>
5198 </method>
5199 <method name="add_reverse_path"
5200 c:identifier="gsk_path_builder_add_reverse_path"
5201 version="4.14">
5202 <doc xml:space="preserve"
5203 filename="gsk/gskpathbuilder.c"
5204 line="362">Appends all of @path to the builder, in reverse order.</doc>
5205 <source-position filename="gsk/gskpathbuilder.h" line="55"/>
5206 <return-value transfer-ownership="none">
5207 <type name="none" c:type="void"/>
5208 </return-value>
5209 <parameters>
5210 <instance-parameter name="self" transfer-ownership="none">
5211 <doc xml:space="preserve"
5212 filename="gsk/gskpathbuilder.c"
5213 line="364">a path builder</doc>
5214 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5215 </instance-parameter>
5216 <parameter name="path" transfer-ownership="none">
5217 <doc xml:space="preserve"
5218 filename="gsk/gskpathbuilder.c"
5219 line="365">the path to append</doc>
5220 <type name="Path" c:type="GskPath*"/>
5221 </parameter>
5222 </parameters>
5223 </method>
5224 <method name="add_rounded_rect"
5225 c:identifier="gsk_path_builder_add_rounded_rect"
5226 version="4.14">
5227 <doc xml:space="preserve"
5228 filename="gsk/gskpathbuilder.c"
5229 line="471">Adds a rounded rectangle as a new contour.
5230
5231The path is going around the rectangle in clockwise direction.</doc>
5232 <source-position filename="gsk/gskpathbuilder.h" line="68"/>
5233 <return-value transfer-ownership="none">
5234 <type name="none" c:type="void"/>
5235 </return-value>
5236 <parameters>
5237 <instance-parameter name="self" transfer-ownership="none">
5238 <doc xml:space="preserve"
5239 filename="gsk/gskpathbuilder.c"
5240 line="473">a path builder</doc>
5241 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5242 </instance-parameter>
5243 <parameter name="rect" transfer-ownership="none">
5244 <doc xml:space="preserve"
5245 filename="gsk/gskpathbuilder.c"
5246 line="474">the rounded rect</doc>
5247 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
5248 </parameter>
5249 </parameters>
5250 </method>
5251 <method name="add_segment"
5252 c:identifier="gsk_path_builder_add_segment"
5253 version="4.14">
5254 <doc xml:space="preserve"
5255 filename="gsk/gskpathbuilder.c"
5256 line="1589">Adds a segment of a path to the builder.
5257
5258If @start is equal to or after @end, the path will first add the
5259segment from @start to the end of the path, and then add the segment
5260from the beginning to @end. If the path is closed, these segments
5261will be connected.
5262
5263Note that this method always adds a path with the given start point
5264and end point. To add a closed path, use [method@Gsk.PathBuilder.add_path].</doc>
5265 <source-position filename="gsk/gskpathbuilder.h" line="75"/>
5266 <return-value transfer-ownership="none">
5267 <type name="none" c:type="void"/>
5268 </return-value>
5269 <parameters>
5270 <instance-parameter name="self" transfer-ownership="none">
5271 <doc xml:space="preserve"
5272 filename="gsk/gskpathbuilder.c"
5273 line="1591">a path builder</doc>
5274 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5275 </instance-parameter>
5276 <parameter name="path" transfer-ownership="none">
5277 <doc xml:space="preserve"
5278 filename="gsk/gskpathbuilder.c"
5279 line="1592">the path to take the segment to</doc>
5280 <type name="Path" c:type="GskPath*"/>
5281 </parameter>
5282 <parameter name="start" transfer-ownership="none">
5283 <doc xml:space="preserve"
5284 filename="gsk/gskpathbuilder.c"
5285 line="1593">the point on @path to start at</doc>
5286 <type name="PathPoint" c:type="const GskPathPoint*"/>
5287 </parameter>
5288 <parameter name="end" transfer-ownership="none">
5289 <doc xml:space="preserve"
5290 filename="gsk/gskpathbuilder.c"
5291 line="1594">the point on @path to end at</doc>
5292 <type name="PathPoint" c:type="const GskPathPoint*"/>
5293 </parameter>
5294 </parameters>
5295 </method>
5296 <method name="arc_to"
5297 c:identifier="gsk_path_builder_arc_to"
5298 version="4.14">
5299 <doc xml:space="preserve"
5300 filename="gsk/gskpathbuilder.c"
5301 line="1087">Adds an elliptical arc from the current point to @x2, @y2
5302with @x1, @y1 determining the tangent directions.
5303
5304After this, @x2, @y2 will be the new current point.
5305
5306Note: Two points and their tangents do not determine
5307a unique ellipse, so GSK just picks one. If you need more
5308precise control, use [method@Gsk.PathBuilder.conic_to]
5309or [method@Gsk.PathBuilder.svg_arc_to].
5310
5311<picture>
5312 <source srcset="arc-dark.png" media="(prefers-color-scheme: dark)">
5313 <img alt="Arc To" src="arc-light.png">
5314</picture></doc>
5315 <source-position filename="gsk/gskpathbuilder.h" line="140"/>
5316 <return-value transfer-ownership="none">
5317 <type name="none" c:type="void"/>
5318 </return-value>
5319 <parameters>
5320 <instance-parameter name="self" transfer-ownership="none">
5321 <doc xml:space="preserve"
5322 filename="gsk/gskpathbuilder.c"
5323 line="1089">a path builder</doc>
5324 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5325 </instance-parameter>
5326 <parameter name="x1" transfer-ownership="none">
5327 <doc xml:space="preserve"
5328 filename="gsk/gskpathbuilder.c"
5329 line="1090">x coordinate of first control point</doc>
5330 <type name="gfloat" c:type="float"/>
5331 </parameter>
5332 <parameter name="y1" transfer-ownership="none">
5333 <doc xml:space="preserve"
5334 filename="gsk/gskpathbuilder.c"
5335 line="1091">y coordinate of first control point</doc>
5336 <type name="gfloat" c:type="float"/>
5337 </parameter>
5338 <parameter name="x2" transfer-ownership="none">
5339 <doc xml:space="preserve"
5340 filename="gsk/gskpathbuilder.c"
5341 line="1092">x coordinate of second control point</doc>
5342 <type name="gfloat" c:type="float"/>
5343 </parameter>
5344 <parameter name="y2" transfer-ownership="none">
5345 <doc xml:space="preserve"
5346 filename="gsk/gskpathbuilder.c"
5347 line="1093">y coordinate of second control point</doc>
5348 <type name="gfloat" c:type="float"/>
5349 </parameter>
5350 </parameters>
5351 </method>
5352 <method name="close"
5353 c:identifier="gsk_path_builder_close"
5354 version="4.14">
5355 <doc xml:space="preserve"
5356 filename="gsk/gskpathbuilder.c"
5357 line="1157">Ends the current contour with a line back to the start point.
5358
5359Note that this is different from calling [method@Gsk.PathBuilder.line_to]
5360with the start point in that the contour will be closed. A closed
5361contour behaves differently from an open one. When stroking, its
5362start and end point are considered connected, so they will be
5363joined via the line join, and not ended with line caps.</doc>
5364 <source-position filename="gsk/gskpathbuilder.h" line="188"/>
5365 <return-value transfer-ownership="none">
5366 <type name="none" c:type="void"/>
5367 </return-value>
5368 <parameters>
5369 <instance-parameter name="self" transfer-ownership="none">
5370 <doc xml:space="preserve"
5371 filename="gsk/gskpathbuilder.c"
5372 line="1159">a path builder</doc>
5373 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5374 </instance-parameter>
5375 </parameters>
5376 </method>
5377 <method name="conic_to"
5378 c:identifier="gsk_path_builder_conic_to"
5379 version="4.14">
5380 <doc xml:space="preserve"
5381 filename="gsk/gskpathbuilder.c"
5382 line="955">Adds a [conic curve](https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline)
5383from the current point to @x2, @y2 with the given @weight and @x1, @y1 as the
5384control point.
5385
5386The weight determines how strongly the curve is pulled towards the control point.
5387A conic with weight 1 is identical to a quadratic Bézier curve with the same points.
5388
5389Conic curves can be used to draw ellipses and circles. They are also known as
5390rational quadratic Bézier curves.
5391
5392After this, @x2, @y2 will be the new current point.
5393
5394<picture>
5395 <source srcset="conic-dark.png" media="(prefers-color-scheme: dark)">
5396 <img alt="Conic To" src="conic-light.png">
5397</picture></doc>
5398 <source-position filename="gsk/gskpathbuilder.h" line="125"/>
5399 <return-value transfer-ownership="none">
5400 <type name="none" c:type="void"/>
5401 </return-value>
5402 <parameters>
5403 <instance-parameter name="self" transfer-ownership="none">
5404 <doc xml:space="preserve"
5405 filename="gsk/gskpathbuilder.c"
5406 line="957">a path builder</doc>
5407 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5408 </instance-parameter>
5409 <parameter name="x1" transfer-ownership="none">
5410 <doc xml:space="preserve"
5411 filename="gsk/gskpathbuilder.c"
5412 line="958">x coordinate of control point</doc>
5413 <type name="gfloat" c:type="float"/>
5414 </parameter>
5415 <parameter name="y1" transfer-ownership="none">
5416 <doc xml:space="preserve"
5417 filename="gsk/gskpathbuilder.c"
5418 line="959">y coordinate of control point</doc>
5419 <type name="gfloat" c:type="float"/>
5420 </parameter>
5421 <parameter name="x2" transfer-ownership="none">
5422 <doc xml:space="preserve"
5423 filename="gsk/gskpathbuilder.c"
5424 line="960">x coordinate of the end of the curve</doc>
5425 <type name="gfloat" c:type="float"/>
5426 </parameter>
5427 <parameter name="y2" transfer-ownership="none">
5428 <doc xml:space="preserve"
5429 filename="gsk/gskpathbuilder.c"
5430 line="961">y coordinate of the end of the curve</doc>
5431 <type name="gfloat" c:type="float"/>
5432 </parameter>
5433 <parameter name="weight" transfer-ownership="none">
5434 <doc xml:space="preserve"
5435 filename="gsk/gskpathbuilder.c"
5436 line="962">weight of the control point, must be greater than zero</doc>
5437 <type name="gfloat" c:type="float"/>
5438 </parameter>
5439 </parameters>
5440 </method>
5441 <method name="cubic_to"
5442 c:identifier="gsk_path_builder_cubic_to"
5443 version="4.14">
5444 <doc xml:space="preserve"
5445 filename="gsk/gskpathbuilder.c"
5446 line="802">Adds a [cubic Bézier curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)
5447from the current point to @x3, @y3 with @x1, @y1 and @x2, @y2 as the control
5448points.
5449
5450After this, @x3, @y3 will be the new current point.
5451
5452<picture>
5453 <source srcset="cubic-dark.png" media="(prefers-color-scheme: dark)">
5454 <img alt="Cubic To" src="cubic-light.png">
5455</picture></doc>
5456 <source-position filename="gsk/gskpathbuilder.h" line="108"/>
5457 <return-value transfer-ownership="none">
5458 <type name="none" c:type="void"/>
5459 </return-value>
5460 <parameters>
5461 <instance-parameter name="self" transfer-ownership="none">
5462 <doc xml:space="preserve"
5463 filename="gsk/gskpathbuilder.c"
5464 line="804">a path builder</doc>
5465 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5466 </instance-parameter>
5467 <parameter name="x1" transfer-ownership="none">
5468 <doc xml:space="preserve"
5469 filename="gsk/gskpathbuilder.c"
5470 line="805">x coordinate of first control point</doc>
5471 <type name="gfloat" c:type="float"/>
5472 </parameter>
5473 <parameter name="y1" transfer-ownership="none">
5474 <doc xml:space="preserve"
5475 filename="gsk/gskpathbuilder.c"
5476 line="806">y coordinate of first control point</doc>
5477 <type name="gfloat" c:type="float"/>
5478 </parameter>
5479 <parameter name="x2" transfer-ownership="none">
5480 <doc xml:space="preserve"
5481 filename="gsk/gskpathbuilder.c"
5482 line="807">x coordinate of second control point</doc>
5483 <type name="gfloat" c:type="float"/>
5484 </parameter>
5485 <parameter name="y2" transfer-ownership="none">
5486 <doc xml:space="preserve"
5487 filename="gsk/gskpathbuilder.c"
5488 line="808">y coordinate of second control point</doc>
5489 <type name="gfloat" c:type="float"/>
5490 </parameter>
5491 <parameter name="x3" transfer-ownership="none">
5492 <doc xml:space="preserve"
5493 filename="gsk/gskpathbuilder.c"
5494 line="809">x coordinate of the end of the curve</doc>
5495 <type name="gfloat" c:type="float"/>
5496 </parameter>
5497 <parameter name="y3" transfer-ownership="none">
5498 <doc xml:space="preserve"
5499 filename="gsk/gskpathbuilder.c"
5500 line="810">y coordinate of the end of the curve</doc>
5501 <type name="gfloat" c:type="float"/>
5502 </parameter>
5503 </parameters>
5504 </method>
5505 <method name="free_to_path"
5506 c:identifier="gsk_path_builder_free_to_path"
5507 version="4.14"
5508 introspectable="0">
5509 <doc xml:space="preserve"
5510 filename="gsk/gskpathbuilder.c"
5511 line="242">Creates a new path from the current state of the
5512builder, and unrefs the builder.</doc>
5513 <source-position filename="gsk/gskpathbuilder.h" line="44"/>
5514 <return-value transfer-ownership="full">
5515 <doc xml:space="preserve"
5516 filename="gsk/gskpathbuilder.c"
5517 line="249">the newly created path
5518 with all the contours added to the builder</doc>
5519 <type name="Path" c:type="GskPath*"/>
5520 </return-value>
5521 <parameters>
5522 <instance-parameter name="self" transfer-ownership="none">
5523 <doc xml:space="preserve"
5524 filename="gsk/gskpathbuilder.c"
5525 line="244">a path builder</doc>
5526 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5527 </instance-parameter>
5528 </parameters>
5529 </method>
5530 <method name="get_current_point"
5531 c:identifier="gsk_path_builder_get_current_point"
5532 version="4.14">
5533 <doc xml:space="preserve"
5534 filename="gsk/gskpathbuilder.c"
5535 line="313">Gets the current point.
5536
5537The current point is used for relative drawing commands and
5538updated after every operation.
5539
5540When the builder is created, the default current point is set
5541to `0, 0`. Note that this is different from cairo, which starts
5542out without a current point.</doc>
5543 <source-position filename="gsk/gskpathbuilder.h" line="49"/>
5544 <return-value transfer-ownership="none">
5545 <doc xml:space="preserve"
5546 filename="gsk/gskpathbuilder.c"
5547 line="326">the current point</doc>
5548 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
5549 </return-value>
5550 <parameters>
5551 <instance-parameter name="self" transfer-ownership="none">
5552 <doc xml:space="preserve"
5553 filename="gsk/gskpathbuilder.c"
5554 line="315">a path builder</doc>
5555 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5556 </instance-parameter>
5557 </parameters>
5558 </method>
5559 <method name="html_arc_to"
5560 c:identifier="gsk_path_builder_html_arc_to"
5561 version="4.14">
5562 <doc xml:space="preserve"
5563 filename="gsk/gskpathbuilder.c"
5564 line="1461">Implements arc-to according to the HTML Canvas spec.
5565
5566A convenience function that implements the
5567[HTML arc_to](https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-arcto-dev)
5568functionality.
5569
5570After this, the current point will be the point where
5571the circle with the given radius touches the line from
5572@x1, @y1 to @x2, @y2.</doc>
5573 <source-position filename="gsk/gskpathbuilder.h" line="173"/>
5574 <return-value transfer-ownership="none">
5575 <type name="none" c:type="void"/>
5576 </return-value>
5577 <parameters>
5578 <instance-parameter name="self" transfer-ownership="none">
5579 <doc xml:space="preserve"
5580 filename="gsk/gskpathbuilder.c"
5581 line="1463">a path builder</doc>
5582 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5583 </instance-parameter>
5584 <parameter name="x1" transfer-ownership="none">
5585 <doc xml:space="preserve"
5586 filename="gsk/gskpathbuilder.c"
5587 line="1464">x coordinate of first control point</doc>
5588 <type name="gfloat" c:type="float"/>
5589 </parameter>
5590 <parameter name="y1" transfer-ownership="none">
5591 <doc xml:space="preserve"
5592 filename="gsk/gskpathbuilder.c"
5593 line="1465">y coordinate of first control point</doc>
5594 <type name="gfloat" c:type="float"/>
5595 </parameter>
5596 <parameter name="x2" transfer-ownership="none">
5597 <doc xml:space="preserve"
5598 filename="gsk/gskpathbuilder.c"
5599 line="1466">x coordinate of second control point</doc>
5600 <type name="gfloat" c:type="float"/>
5601 </parameter>
5602 <parameter name="y2" transfer-ownership="none">
5603 <doc xml:space="preserve"
5604 filename="gsk/gskpathbuilder.c"
5605 line="1467">y coordinate of second control point</doc>
5606 <type name="gfloat" c:type="float"/>
5607 </parameter>
5608 <parameter name="radius" transfer-ownership="none">
5609 <doc xml:space="preserve"
5610 filename="gsk/gskpathbuilder.c"
5611 line="1468">radius of the circle</doc>
5612 <type name="gfloat" c:type="float"/>
5613 </parameter>
5614 </parameters>
5615 </method>
5616 <method name="line_to"
5617 c:identifier="gsk_path_builder_line_to"
5618 version="4.14">
5619 <doc xml:space="preserve"
5620 filename="gsk/gskpathbuilder.c"
5621 line="571">Draws a line from the current point to @x, @y and makes it
5622the new current point.
5623
5624<picture>
5625 <source srcset="line-dark.png" media="(prefers-color-scheme: dark)">
5626 <img alt="Line To" src="line-light.png">
5627</picture></doc>
5628 <source-position filename="gsk/gskpathbuilder.h" line="88"/>
5629 <return-value transfer-ownership="none">
5630 <type name="none" c:type="void"/>
5631 </return-value>
5632 <parameters>
5633 <instance-parameter name="self" transfer-ownership="none">
5634 <doc xml:space="preserve"
5635 filename="gsk/gskpathbuilder.c"
5636 line="573">a path builder</doc>
5637 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5638 </instance-parameter>
5639 <parameter name="x" transfer-ownership="none">
5640 <doc xml:space="preserve"
5641 filename="gsk/gskpathbuilder.c"
5642 line="574">x coordinate</doc>
5643 <type name="gfloat" c:type="float"/>
5644 </parameter>
5645 <parameter name="y" transfer-ownership="none">
5646 <doc xml:space="preserve"
5647 filename="gsk/gskpathbuilder.c"
5648 line="575">y coordinate</doc>
5649 <type name="gfloat" c:type="float"/>
5650 </parameter>
5651 </parameters>
5652 </method>
5653 <method name="move_to"
5654 c:identifier="gsk_path_builder_move_to"
5655 version="4.14">
5656 <doc xml:space="preserve"
5657 filename="gsk/gskpathbuilder.c"
5658 line="518">Starts a new contour by placing the pen at @x, @y.
5659
5660If this function is called twice in succession, the first
5661call will result in a contour made up of a single point.
5662The second call will start a new contour.</doc>
5663 <source-position filename="gsk/gskpathbuilder.h" line="80"/>
5664 <return-value transfer-ownership="none">
5665 <type name="none" c:type="void"/>
5666 </return-value>
5667 <parameters>
5668 <instance-parameter name="self" transfer-ownership="none">
5669 <doc xml:space="preserve"
5670 filename="gsk/gskpathbuilder.c"
5671 line="520">a path builder</doc>
5672 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5673 </instance-parameter>
5674 <parameter name="x" transfer-ownership="none">
5675 <doc xml:space="preserve"
5676 filename="gsk/gskpathbuilder.c"
5677 line="521">x coordinate</doc>
5678 <type name="gfloat" c:type="float"/>
5679 </parameter>
5680 <parameter name="y" transfer-ownership="none">
5681 <doc xml:space="preserve"
5682 filename="gsk/gskpathbuilder.c"
5683 line="522">y coordinate</doc>
5684 <type name="gfloat" c:type="float"/>
5685 </parameter>
5686 </parameters>
5687 </method>
5688 <method name="quad_to"
5689 c:identifier="gsk_path_builder_quad_to"
5690 version="4.14">
5691 <doc xml:space="preserve"
5692 filename="gsk/gskpathbuilder.c"
5693 line="665">Adds a [quadratic Bézier curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)
5694from the current point to @x2, @y2 with @x1, @y1 as the control point.
5695
5696After this, @x2, @y2 will be the new current point.
5697
5698<picture>
5699 <source srcset="quad-dark.png" media="(prefers-color-scheme: dark)">
5700 <img alt="Quad To" src="quad-light.png">
5701</picture></doc>
5702 <source-position filename="gsk/gskpathbuilder.h" line="96"/>
5703 <return-value transfer-ownership="none">
5704 <type name="none" c:type="void"/>
5705 </return-value>
5706 <parameters>
5707 <instance-parameter name="self" transfer-ownership="none">
5708 <doc xml:space="preserve"
5709 filename="gsk/gskpathbuilder.c"
5710 line="667">a path builder</doc>
5711 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5712 </instance-parameter>
5713 <parameter name="x1" transfer-ownership="none">
5714 <doc xml:space="preserve"
5715 filename="gsk/gskpathbuilder.c"
5716 line="668">x coordinate of control point</doc>
5717 <type name="gfloat" c:type="float"/>
5718 </parameter>
5719 <parameter name="y1" transfer-ownership="none">
5720 <doc xml:space="preserve"
5721 filename="gsk/gskpathbuilder.c"
5722 line="669">y coordinate of control point</doc>
5723 <type name="gfloat" c:type="float"/>
5724 </parameter>
5725 <parameter name="x2" transfer-ownership="none">
5726 <doc xml:space="preserve"
5727 filename="gsk/gskpathbuilder.c"
5728 line="670">x coordinate of the end of the curve</doc>
5729 <type name="gfloat" c:type="float"/>
5730 </parameter>
5731 <parameter name="y2" transfer-ownership="none">
5732 <doc xml:space="preserve"
5733 filename="gsk/gskpathbuilder.c"
5734 line="671">y coordinate of the end of the curve</doc>
5735 <type name="gfloat" c:type="float"/>
5736 </parameter>
5737 </parameters>
5738 </method>
5739 <method name="ref" c:identifier="gsk_path_builder_ref" version="4.14">
5740 <doc xml:space="preserve"
5741 filename="gsk/gskpathbuilder.c"
5742 line="123">Acquires a reference on the given builder.
5743
5744This function is intended primarily for language bindings.
5745`GskPathBuilder` objects should not be kept around.</doc>
5746 <source-position filename="gsk/gskpathbuilder.h" line="40"/>
5747 <return-value transfer-ownership="none">
5748 <doc xml:space="preserve"
5749 filename="gsk/gskpathbuilder.c"
5750 line="132">the given path builder with
5751 its reference count increased</doc>
5752 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5753 </return-value>
5754 <parameters>
5755 <instance-parameter name="self" transfer-ownership="none">
5756 <doc xml:space="preserve"
5757 filename="gsk/gskpathbuilder.c"
5758 line="125">a path builder</doc>
5759 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5760 </instance-parameter>
5761 </parameters>
5762 </method>
5763 <method name="rel_arc_to"
5764 c:identifier="gsk_path_builder_rel_arc_to"
5765 version="4.14">
5766 <doc xml:space="preserve"
5767 filename="gsk/gskpathbuilder.c"
5768 line="1124">Adds an elliptical arc from the current point to @x2, @y2
5769with @x1, @y1 determining the tangent directions.
5770
5771All coordinates are given relative to the current point.
5772
5773This is the relative version of [method@Gsk.PathBuilder.arc_to].</doc>
5774 <source-position filename="gsk/gskpathbuilder.h" line="147"/>
5775 <return-value transfer-ownership="none">
5776 <type name="none" c:type="void"/>
5777 </return-value>
5778 <parameters>
5779 <instance-parameter name="self" transfer-ownership="none">
5780 <doc xml:space="preserve"
5781 filename="gsk/gskpathbuilder.c"
5782 line="1126">a path builder</doc>
5783 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5784 </instance-parameter>
5785 <parameter name="x1" transfer-ownership="none">
5786 <doc xml:space="preserve"
5787 filename="gsk/gskpathbuilder.c"
5788 line="1127">x coordinate of first control point</doc>
5789 <type name="gfloat" c:type="float"/>
5790 </parameter>
5791 <parameter name="y1" transfer-ownership="none">
5792 <doc xml:space="preserve"
5793 filename="gsk/gskpathbuilder.c"
5794 line="1128">y coordinate of first control point</doc>
5795 <type name="gfloat" c:type="float"/>
5796 </parameter>
5797 <parameter name="x2" transfer-ownership="none">
5798 <doc xml:space="preserve"
5799 filename="gsk/gskpathbuilder.c"
5800 line="1129">x coordinate of second control point</doc>
5801 <type name="gfloat" c:type="float"/>
5802 </parameter>
5803 <parameter name="y2" transfer-ownership="none">
5804 <doc xml:space="preserve"
5805 filename="gsk/gskpathbuilder.c"
5806 line="1130">y coordinate of second control point</doc>
5807 <type name="gfloat" c:type="float"/>
5808 </parameter>
5809 </parameters>
5810 </method>
5811 <method name="rel_conic_to"
5812 c:identifier="gsk_path_builder_rel_conic_to"
5813 version="4.14">
5814 <doc xml:space="preserve"
5815 filename="gsk/gskpathbuilder.c"
5816 line="1049">Adds a [conic curve](https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline)
5817from the current point to @x2, @y2 with the given @weight and @x1, @y1 as the
5818control point.
5819
5820All coordinates are given relative to the current point.
5821
5822This is the relative version of [method@Gsk.PathBuilder.conic_to].</doc>
5823 <source-position filename="gsk/gskpathbuilder.h" line="132"/>
5824 <return-value transfer-ownership="none">
5825 <type name="none" c:type="void"/>
5826 </return-value>
5827 <parameters>
5828 <instance-parameter name="self" transfer-ownership="none">
5829 <doc xml:space="preserve"
5830 filename="gsk/gskpathbuilder.c"
5831 line="1051">a path builder</doc>
5832 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5833 </instance-parameter>
5834 <parameter name="x1" transfer-ownership="none">
5835 <doc xml:space="preserve"
5836 filename="gsk/gskpathbuilder.c"
5837 line="1052">x offset of control point</doc>
5838 <type name="gfloat" c:type="float"/>
5839 </parameter>
5840 <parameter name="y1" transfer-ownership="none">
5841 <doc xml:space="preserve"
5842 filename="gsk/gskpathbuilder.c"
5843 line="1053">y offset of control point</doc>
5844 <type name="gfloat" c:type="float"/>
5845 </parameter>
5846 <parameter name="x2" transfer-ownership="none">
5847 <doc xml:space="preserve"
5848 filename="gsk/gskpathbuilder.c"
5849 line="1054">x offset of the end of the curve</doc>
5850 <type name="gfloat" c:type="float"/>
5851 </parameter>
5852 <parameter name="y2" transfer-ownership="none">
5853 <doc xml:space="preserve"
5854 filename="gsk/gskpathbuilder.c"
5855 line="1055">y offset of the end of the curve</doc>
5856 <type name="gfloat" c:type="float"/>
5857 </parameter>
5858 <parameter name="weight" transfer-ownership="none">
5859 <doc xml:space="preserve"
5860 filename="gsk/gskpathbuilder.c"
5861 line="1056">weight of the curve, must be greater than zero</doc>
5862 <type name="gfloat" c:type="float"/>
5863 </parameter>
5864 </parameters>
5865 </method>
5866 <method name="rel_cubic_to"
5867 c:identifier="gsk_path_builder_rel_cubic_to"
5868 version="4.14">
5869 <doc xml:space="preserve"
5870 filename="gsk/gskpathbuilder.c"
5871 line="915">Adds a [cubic Bézier curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)
5872from the current point to @x3, @y3 with @x1, @y1 and @x2, @y2 as the control
5873points.
5874
5875All coordinates are given relative to the current point.
5876
5877This is the relative version of [method@Gsk.PathBuilder.cubic_to].</doc>
5878 <source-position filename="gsk/gskpathbuilder.h" line="116"/>
5879 <return-value transfer-ownership="none">
5880 <type name="none" c:type="void"/>
5881 </return-value>
5882 <parameters>
5883 <instance-parameter name="self" transfer-ownership="none">
5884 <doc xml:space="preserve"
5885 filename="gsk/gskpathbuilder.c"
5886 line="917">a path builder</doc>
5887 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5888 </instance-parameter>
5889 <parameter name="x1" transfer-ownership="none">
5890 <doc xml:space="preserve"
5891 filename="gsk/gskpathbuilder.c"
5892 line="918">x offset of first control point</doc>
5893 <type name="gfloat" c:type="float"/>
5894 </parameter>
5895 <parameter name="y1" transfer-ownership="none">
5896 <doc xml:space="preserve"
5897 filename="gsk/gskpathbuilder.c"
5898 line="919">y offset of first control point</doc>
5899 <type name="gfloat" c:type="float"/>
5900 </parameter>
5901 <parameter name="x2" transfer-ownership="none">
5902 <doc xml:space="preserve"
5903 filename="gsk/gskpathbuilder.c"
5904 line="920">x offset of second control point</doc>
5905 <type name="gfloat" c:type="float"/>
5906 </parameter>
5907 <parameter name="y2" transfer-ownership="none">
5908 <doc xml:space="preserve"
5909 filename="gsk/gskpathbuilder.c"
5910 line="921">y offset of second control point</doc>
5911 <type name="gfloat" c:type="float"/>
5912 </parameter>
5913 <parameter name="x3" transfer-ownership="none">
5914 <doc xml:space="preserve"
5915 filename="gsk/gskpathbuilder.c"
5916 line="922">x offset of the end of the curve</doc>
5917 <type name="gfloat" c:type="float"/>
5918 </parameter>
5919 <parameter name="y3" transfer-ownership="none">
5920 <doc xml:space="preserve"
5921 filename="gsk/gskpathbuilder.c"
5922 line="923">y offset of the end of the curve</doc>
5923 <type name="gfloat" c:type="float"/>
5924 </parameter>
5925 </parameters>
5926 </method>
5927 <method name="rel_html_arc_to"
5928 c:identifier="gsk_path_builder_rel_html_arc_to"
5929 version="4.14">
5930 <doc xml:space="preserve"
5931 filename="gsk/gskpathbuilder.c"
5932 line="1526">Implements arc-to according to the HTML Canvas spec.
5933
5934All coordinates are given relative to the current point.
5935
5936This is the relative version of [method@Gsk.PathBuilder.html_arc_to].</doc>
5937 <source-position filename="gsk/gskpathbuilder.h" line="180"/>
5938 <return-value transfer-ownership="none">
5939 <type name="none" c:type="void"/>
5940 </return-value>
5941 <parameters>
5942 <instance-parameter name="self" transfer-ownership="none">
5943 <doc xml:space="preserve"
5944 filename="gsk/gskpathbuilder.c"
5945 line="1528">a path builder</doc>
5946 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5947 </instance-parameter>
5948 <parameter name="x1" transfer-ownership="none">
5949 <doc xml:space="preserve"
5950 filename="gsk/gskpathbuilder.c"
5951 line="1529">x coordinate of first control point</doc>
5952 <type name="gfloat" c:type="float"/>
5953 </parameter>
5954 <parameter name="y1" transfer-ownership="none">
5955 <doc xml:space="preserve"
5956 filename="gsk/gskpathbuilder.c"
5957 line="1530">y coordinate of first control point</doc>
5958 <type name="gfloat" c:type="float"/>
5959 </parameter>
5960 <parameter name="x2" transfer-ownership="none">
5961 <doc xml:space="preserve"
5962 filename="gsk/gskpathbuilder.c"
5963 line="1531">x coordinate of second control point</doc>
5964 <type name="gfloat" c:type="float"/>
5965 </parameter>
5966 <parameter name="y2" transfer-ownership="none">
5967 <doc xml:space="preserve"
5968 filename="gsk/gskpathbuilder.c"
5969 line="1532">y coordinate of second control point</doc>
5970 <type name="gfloat" c:type="float"/>
5971 </parameter>
5972 <parameter name="radius" transfer-ownership="none">
5973 <doc xml:space="preserve"
5974 filename="gsk/gskpathbuilder.c"
5975 line="1533">radius of the circle</doc>
5976 <type name="gfloat" c:type="float"/>
5977 </parameter>
5978 </parameters>
5979 </method>
5980 <method name="rel_line_to"
5981 c:identifier="gsk_path_builder_rel_line_to"
5982 version="4.14">
5983 <doc xml:space="preserve"
5984 filename="gsk/gskpathbuilder.c"
5985 line="606">Draws a line from the current point to a point offset from it
5986by @x, @y and makes it the new current point.
5987
5988This is the relative version of [method@Gsk.PathBuilder.line_to].</doc>
5989 <source-position filename="gsk/gskpathbuilder.h" line="92"/>
5990 <return-value transfer-ownership="none">
5991 <type name="none" c:type="void"/>
5992 </return-value>
5993 <parameters>
5994 <instance-parameter name="self" transfer-ownership="none">
5995 <doc xml:space="preserve"
5996 filename="gsk/gskpathbuilder.c"
5997 line="608">a path builder</doc>
5998 <type name="PathBuilder" c:type="GskPathBuilder*"/>
5999 </instance-parameter>
6000 <parameter name="x" transfer-ownership="none">
6001 <doc xml:space="preserve"
6002 filename="gsk/gskpathbuilder.c"
6003 line="609">x offset</doc>
6004 <type name="gfloat" c:type="float"/>
6005 </parameter>
6006 <parameter name="y" transfer-ownership="none">
6007 <doc xml:space="preserve"
6008 filename="gsk/gskpathbuilder.c"
6009 line="610">y offset</doc>
6010 <type name="gfloat" c:type="float"/>
6011 </parameter>
6012 </parameters>
6013 </method>
6014 <method name="rel_move_to"
6015 c:identifier="gsk_path_builder_rel_move_to"
6016 version="4.14">
6017 <doc xml:space="preserve"
6018 filename="gsk/gskpathbuilder.c"
6019 line="546">Starts a new contour by placing the pen at @x, @y
6020relative to the current point.
6021
6022This is the relative version of [method@Gsk.PathBuilder.move_to].</doc>
6023 <source-position filename="gsk/gskpathbuilder.h" line="84"/>
6024 <return-value transfer-ownership="none">
6025 <type name="none" c:type="void"/>
6026 </return-value>
6027 <parameters>
6028 <instance-parameter name="self" transfer-ownership="none">
6029 <doc xml:space="preserve"
6030 filename="gsk/gskpathbuilder.c"
6031 line="548">a path builder</doc>
6032 <type name="PathBuilder" c:type="GskPathBuilder*"/>
6033 </instance-parameter>
6034 <parameter name="x" transfer-ownership="none">
6035 <doc xml:space="preserve"
6036 filename="gsk/gskpathbuilder.c"
6037 line="549">x offset</doc>
6038 <type name="gfloat" c:type="float"/>
6039 </parameter>
6040 <parameter name="y" transfer-ownership="none">
6041 <doc xml:space="preserve"
6042 filename="gsk/gskpathbuilder.c"
6043 line="550">y offset</doc>
6044 <type name="gfloat" c:type="float"/>
6045 </parameter>
6046 </parameters>
6047 </method>
6048 <method name="rel_quad_to"
6049 c:identifier="gsk_path_builder_rel_quad_to"
6050 version="4.14">
6051 <doc xml:space="preserve"
6052 filename="gsk/gskpathbuilder.c"
6053 line="737">Adds a [quadratic Bézier curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)
6054from the current point to @x2, @y2 with @x1, @y1 the control point.
6055
6056All coordinates are given relative to the current point.
6057
6058This is the relative version of [method@Gsk.PathBuilder.quad_to].</doc>
6059 <source-position filename="gsk/gskpathbuilder.h" line="102"/>
6060 <return-value transfer-ownership="none">
6061 <type name="none" c:type="void"/>
6062 </return-value>
6063 <parameters>
6064 <instance-parameter name="self" transfer-ownership="none">
6065 <doc xml:space="preserve"
6066 filename="gsk/gskpathbuilder.c"
6067 line="739">a path builder</doc>
6068 <type name="PathBuilder" c:type="GskPathBuilder*"/>
6069 </instance-parameter>
6070 <parameter name="x1" transfer-ownership="none">
6071 <doc xml:space="preserve"
6072 filename="gsk/gskpathbuilder.c"
6073 line="740">x offset of control point</doc>
6074 <type name="gfloat" c:type="float"/>
6075 </parameter>
6076 <parameter name="y1" transfer-ownership="none">
6077 <doc xml:space="preserve"
6078 filename="gsk/gskpathbuilder.c"
6079 line="741">y offset of control point</doc>
6080 <type name="gfloat" c:type="float"/>
6081 </parameter>
6082 <parameter name="x2" transfer-ownership="none">
6083 <doc xml:space="preserve"
6084 filename="gsk/gskpathbuilder.c"
6085 line="742">x offset of the end of the curve</doc>
6086 <type name="gfloat" c:type="float"/>
6087 </parameter>
6088 <parameter name="y2" transfer-ownership="none">
6089 <doc xml:space="preserve"
6090 filename="gsk/gskpathbuilder.c"
6091 line="743">y offset of the end of the curve</doc>
6092 <type name="gfloat" c:type="float"/>
6093 </parameter>
6094 </parameters>
6095 </method>
6096 <method name="rel_svg_arc_to"
6097 c:identifier="gsk_path_builder_rel_svg_arc_to"
6098 version="4.14">
6099 <doc xml:space="preserve"
6100 filename="gsk/gskpathbuilder.c"
6101 line="1387">Implements arc-to according to the SVG spec.
6102
6103All coordinates are given relative to the current point.
6104
6105This is the relative version of [method@Gsk.PathBuilder.svg_arc_to].</doc>
6106 <source-position filename="gsk/gskpathbuilder.h" line="163"/>
6107 <return-value transfer-ownership="none">
6108 <type name="none" c:type="void"/>
6109 </return-value>
6110 <parameters>
6111 <instance-parameter name="self" transfer-ownership="none">
6112 <doc xml:space="preserve"
6113 filename="gsk/gskpathbuilder.c"
6114 line="1389">a path builder</doc>
6115 <type name="PathBuilder" c:type="GskPathBuilder*"/>
6116 </instance-parameter>
6117 <parameter name="rx" transfer-ownership="none">
6118 <doc xml:space="preserve"
6119 filename="gsk/gskpathbuilder.c"
6120 line="1390">x radius</doc>
6121 <type name="gfloat" c:type="float"/>
6122 </parameter>
6123 <parameter name="ry" transfer-ownership="none">
6124 <doc xml:space="preserve"
6125 filename="gsk/gskpathbuilder.c"
6126 line="1391">y radius</doc>
6127 <type name="gfloat" c:type="float"/>
6128 </parameter>
6129 <parameter name="x_axis_rotation" transfer-ownership="none">
6130 <doc xml:space="preserve"
6131 filename="gsk/gskpathbuilder.c"
6132 line="1392">the rotation of the ellipsis</doc>
6133 <type name="gfloat" c:type="float"/>
6134 </parameter>
6135 <parameter name="large_arc" transfer-ownership="none">
6136 <doc xml:space="preserve"
6137 filename="gsk/gskpathbuilder.c"
6138 line="1393">whether to add the large arc</doc>
6139 <type name="gboolean" c:type="gboolean"/>
6140 </parameter>
6141 <parameter name="positive_sweep" transfer-ownership="none">
6142 <doc xml:space="preserve"
6143 filename="gsk/gskpathbuilder.c"
6144 line="1394">whether to sweep in the positive direction</doc>
6145 <type name="gboolean" c:type="gboolean"/>
6146 </parameter>
6147 <parameter name="x" transfer-ownership="none">
6148 <doc xml:space="preserve"
6149 filename="gsk/gskpathbuilder.c"
6150 line="1395">x coordinate of the endpoint</doc>
6151 <type name="gfloat" c:type="float"/>
6152 </parameter>
6153 <parameter name="y" transfer-ownership="none">
6154 <doc xml:space="preserve"
6155 filename="gsk/gskpathbuilder.c"
6156 line="1396">y coordinate of the endpoint</doc>
6157 <type name="gfloat" c:type="float"/>
6158 </parameter>
6159 </parameters>
6160 </method>
6161 <method name="svg_arc_to"
6162 c:identifier="gsk_path_builder_svg_arc_to"
6163 version="4.14">
6164 <doc xml:space="preserve"
6165 filename="gsk/gskpathbuilder.c"
6166 line="1234">Implements arc-to according to the SVG spec.
6167
6168A convenience function that implements the
6169[SVG arc_to](https://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands)
6170functionality.
6171
6172After this, @x, @y will be the new current point.</doc>
6173 <source-position filename="gsk/gskpathbuilder.h" line="154"/>
6174 <return-value transfer-ownership="none">
6175 <type name="none" c:type="void"/>
6176 </return-value>
6177 <parameters>
6178 <instance-parameter name="self" transfer-ownership="none">
6179 <doc xml:space="preserve"
6180 filename="gsk/gskpathbuilder.c"
6181 line="1236">a path builder</doc>
6182 <type name="PathBuilder" c:type="GskPathBuilder*"/>
6183 </instance-parameter>
6184 <parameter name="rx" transfer-ownership="none">
6185 <doc xml:space="preserve"
6186 filename="gsk/gskpathbuilder.c"
6187 line="1237">x radius</doc>
6188 <type name="gfloat" c:type="float"/>
6189 </parameter>
6190 <parameter name="ry" transfer-ownership="none">
6191 <doc xml:space="preserve"
6192 filename="gsk/gskpathbuilder.c"
6193 line="1238">y radius</doc>
6194 <type name="gfloat" c:type="float"/>
6195 </parameter>
6196 <parameter name="x_axis_rotation" transfer-ownership="none">
6197 <doc xml:space="preserve"
6198 filename="gsk/gskpathbuilder.c"
6199 line="1239">the rotation of the ellipsis</doc>
6200 <type name="gfloat" c:type="float"/>
6201 </parameter>
6202 <parameter name="large_arc" transfer-ownership="none">
6203 <doc xml:space="preserve"
6204 filename="gsk/gskpathbuilder.c"
6205 line="1240">whether to add the large arc</doc>
6206 <type name="gboolean" c:type="gboolean"/>
6207 </parameter>
6208 <parameter name="positive_sweep" transfer-ownership="none">
6209 <doc xml:space="preserve"
6210 filename="gsk/gskpathbuilder.c"
6211 line="1241">whether to sweep in the positive direction</doc>
6212 <type name="gboolean" c:type="gboolean"/>
6213 </parameter>
6214 <parameter name="x" transfer-ownership="none">
6215 <doc xml:space="preserve"
6216 filename="gsk/gskpathbuilder.c"
6217 line="1242">x coordinate of the endpoint</doc>
6218 <type name="gfloat" c:type="float"/>
6219 </parameter>
6220 <parameter name="y" transfer-ownership="none">
6221 <doc xml:space="preserve"
6222 filename="gsk/gskpathbuilder.c"
6223 line="1243">y coordinate of the endpoint</doc>
6224 <type name="gfloat" c:type="float"/>
6225 </parameter>
6226 </parameters>
6227 </method>
6228 <method name="to_path"
6229 c:identifier="gsk_path_builder_to_path"
6230 version="4.14">
6231 <doc xml:space="preserve"
6232 filename="gsk/gskpathbuilder.c"
6233 line="268">Creates a new path from the given builder.
6234
6235The given `GskPathBuilder` is reset once this function returns;
6236you cannot call this function multiple times on the same builder
6237instance.
6238
6239This function is intended primarily for language bindings.
6240C code should use [method@Gsk.PathBuilder.free_to_path].</doc>
6241 <source-position filename="gsk/gskpathbuilder.h" line="46"/>
6242 <return-value transfer-ownership="full">
6243 <doc xml:space="preserve"
6244 filename="gsk/gskpathbuilder.c"
6245 line="281">the newly created path
6246 with all the contours added to the builder</doc>
6247 <type name="Path" c:type="GskPath*"/>
6248 </return-value>
6249 <parameters>
6250 <instance-parameter name="self" transfer-ownership="none">
6251 <doc xml:space="preserve"
6252 filename="gsk/gskpathbuilder.c"
6253 line="270">a path builder</doc>
6254 <type name="PathBuilder" c:type="GskPathBuilder*"/>
6255 </instance-parameter>
6256 </parameters>
6257 </method>
6258 <method name="unref"
6259 c:identifier="gsk_path_builder_unref"
6260 version="4.14">
6261 <doc xml:space="preserve"
6262 filename="gsk/gskpathbuilder.c"
6263 line="217">Releases a reference on the given builder.</doc>
6264 <source-position filename="gsk/gskpathbuilder.h" line="42"/>
6265 <return-value transfer-ownership="none">
6266 <type name="none" c:type="void"/>
6267 </return-value>
6268 <parameters>
6269 <instance-parameter name="self" transfer-ownership="none">
6270 <doc xml:space="preserve"
6271 filename="gsk/gskpathbuilder.c"
6272 line="219">a path builder</doc>
6273 <type name="PathBuilder" c:type="GskPathBuilder*"/>
6274 </instance-parameter>
6275 </parameters>
6276 </method>
6277 </record>
6278 <enumeration name="PathDirection"
6279 version="4.14"
6280 glib:type-name="GskPathDirection"
6281 glib:get-type="gsk_path_direction_get_type"
6282 c:type="GskPathDirection">
6283 <doc xml:space="preserve"
6284 filename="gsk/gskenums.h"
6285 line="350">Used to pick one of the four tangents at a given point on the path.
6286
6287Note that the directions for @GSK_PATH_FROM_START/@GSK_PATH_TO_END and
6288@GSK_PATH_TO_START/@GSK_PATH_FROM_END will coincide for smooth points.
6289Only sharp turns will exhibit four different directions.
6290
6291<picture>
6292 <source srcset="directions-dark.png" media="(prefers-color-scheme: dark)">
6293 <img alt="Path Tangents" src="directions-light.png">
6294</picture></doc>
6295 <member name="from_start"
6296 value="0"
6297 c:identifier="GSK_PATH_FROM_START"
6298 glib:nick="from-start"
6299 glib:name="GSK_PATH_FROM_START">
6300 <doc xml:space="preserve"
6301 filename="gsk/gskenums.h"
6302 line="352">The tangent in path direction of the incoming side
6303 of the path</doc>
6304 </member>
6305 <member name="to_start"
6306 value="1"
6307 c:identifier="GSK_PATH_TO_START"
6308 glib:nick="to-start"
6309 glib:name="GSK_PATH_TO_START">
6310 <doc xml:space="preserve"
6311 filename="gsk/gskenums.h"
6312 line="354">The tangent against path direction of the incoming side
6313 of the path</doc>
6314 </member>
6315 <member name="to_end"
6316 value="2"
6317 c:identifier="GSK_PATH_TO_END"
6318 glib:nick="to-end"
6319 glib:name="GSK_PATH_TO_END">
6320 <doc xml:space="preserve"
6321 filename="gsk/gskenums.h"
6322 line="356">The tangent in path direction of the outgoing side
6323 of the path</doc>
6324 </member>
6325 <member name="from_end"
6326 value="3"
6327 c:identifier="GSK_PATH_FROM_END"
6328 glib:nick="from-end"
6329 glib:name="GSK_PATH_FROM_END">
6330 <doc xml:space="preserve"
6331 filename="gsk/gskenums.h"
6332 line="358">The tangent against path direction of the outgoing
6333 side of the path</doc>
6334 </member>
6335 </enumeration>
6336 <bitfield name="PathForeachFlags"
6337 version="4.14"
6338 glib:type-name="GskPathForeachFlags"
6339 glib:get-type="gsk_path_foreach_flags_get_type"
6340 c:type="GskPathForeachFlags">
6341 <doc xml:space="preserve"
6342 filename="gsk/gskpath.h"
6343 line="31">Flags that can be passed to gsk_path_foreach() to influence what
6344kinds of operations the path is decomposed into.
6345
6346By default, [method@Gsk.Path.foreach] will only emit a path with all
6347operations flattened to straight lines to allow for maximum compatibility.
6348The only operations emitted will be `GSK_PATH_MOVE`, `GSK_PATH_LINE` and
6349`GSK_PATH_CLOSE`.</doc>
6350 <member name="only_lines"
6351 value="0"
6352 c:identifier="GSK_PATH_FOREACH_ALLOW_ONLY_LINES"
6353 glib:nick="only-lines"
6354 glib:name="GSK_PATH_FOREACH_ALLOW_ONLY_LINES">
6355 <doc xml:space="preserve"
6356 filename="gsk/gskpath.h"
6357 line="33">The default behavior, only allow lines.</doc>
6358 </member>
6359 <member name="quad"
6360 value="1"
6361 c:identifier="GSK_PATH_FOREACH_ALLOW_QUAD"
6362 glib:nick="quad"
6363 glib:name="GSK_PATH_FOREACH_ALLOW_QUAD">
6364 <doc xml:space="preserve"
6365 filename="gsk/gskpath.h"
6366 line="34">Allow emission of `GSK_PATH_QUAD` operations</doc>
6367 </member>
6368 <member name="cubic"
6369 value="2"
6370 c:identifier="GSK_PATH_FOREACH_ALLOW_CUBIC"
6371 glib:nick="cubic"
6372 glib:name="GSK_PATH_FOREACH_ALLOW_CUBIC">
6373 <doc xml:space="preserve"
6374 filename="gsk/gskpath.h"
6375 line="35">Allow emission of `GSK_PATH_CUBIC` operations.</doc>
6376 </member>
6377 <member name="conic"
6378 value="4"
6379 c:identifier="GSK_PATH_FOREACH_ALLOW_CONIC"
6380 glib:nick="conic"
6381 glib:name="GSK_PATH_FOREACH_ALLOW_CONIC">
6382 <doc xml:space="preserve"
6383 filename="gsk/gskpath.h"
6384 line="36">Allow emission of `GSK_PATH_CONIC` operations.</doc>
6385 </member>
6386 </bitfield>
6387 <callback name="PathForeachFunc" c:type="GskPathForeachFunc">
6388 <doc xml:space="preserve"
6389 filename="gsk/gskpath.h"
6390 line="56">Type of the callback to iterate through the operations of a path.
6391
6392For each operation, the callback is given the @op itself, the points
6393that the operation is applied to in @pts, and a @weight for conic
6394curves. The @n_pts argument is somewhat redundant, since the number
6395of points can be inferred from the operation.
6396
6397Each contour of the path starts with a @GSK_PATH_MOVE operation.
6398Closed contours end with a @GSK_PATH_CLOSE operation.</doc>
6399 <source-position filename="gsk/gskpath.h" line="77"/>
6400 <return-value transfer-ownership="none">
6401 <doc xml:space="preserve"
6402 filename="gsk/gskpath.h"
6403 line="74">%TRUE to continue iterating the path, %FALSE to
6404 immediately abort and not call the function again.</doc>
6405 <type name="gboolean" c:type="gboolean"/>
6406 </return-value>
6407 <parameters>
6408 <parameter name="op" transfer-ownership="none">
6409 <doc xml:space="preserve"
6410 filename="gsk/gskpath.h"
6411 line="58">The operation</doc>
6412 <type name="PathOperation" c:type="GskPathOperation"/>
6413 </parameter>
6414 <parameter name="pts" transfer-ownership="none">
6415 <doc xml:space="preserve"
6416 filename="gsk/gskpath.h"
6417 line="59">The points of the operation</doc>
6418 <array length="2"
6419 zero-terminated="0"
6420 c:type="const graphene_point_t*">
6421 <type name="Graphene.Point" c:type="graphene_point_t"/>
6422 </array>
6423 </parameter>
6424 <parameter name="n_pts" transfer-ownership="none">
6425 <doc xml:space="preserve"
6426 filename="gsk/gskpath.h"
6427 line="60">The number of points</doc>
6428 <type name="gsize" c:type="gsize"/>
6429 </parameter>
6430 <parameter name="weight" transfer-ownership="none">
6431 <doc xml:space="preserve"
6432 filename="gsk/gskpath.h"
6433 line="61">The weight for conic curves, or unused if not a conic curve</doc>
6434 <type name="gfloat" c:type="float"/>
6435 </parameter>
6436 <parameter name="user_data"
6437 transfer-ownership="none"
6438 nullable="1"
6439 allow-none="1"
6440 closure="4">
6441 <doc xml:space="preserve"
6442 filename="gsk/gskpath.h"
6443 line="62">The user data provided with the function</doc>
6444 <type name="gpointer" c:type="gpointer"/>
6445 </parameter>
6446 </parameters>
6447 </callback>
6448 <enumeration name="PathIntersection"
6449 version="4.20"
6450 glib:type-name="GskPathIntersection"
6451 glib:get-type="gsk_path_intersection_get_type"
6452 c:type="GskPathIntersection">
6453 <doc xml:space="preserve"
6454 filename="gsk/gskpath.h"
6455 line="146">The values of this enumeration classify intersections
6456between paths.</doc>
6457 <member name="none"
6458 value="0"
6459 c:identifier="GSK_PATH_INTERSECTION_NONE"
6460 glib:nick="none"
6461 glib:name="GSK_PATH_INTERSECTION_NONE">
6462 <doc xml:space="preserve"
6463 filename="gsk/gskpath.h"
6464 line="148">No intersection</doc>
6465 </member>
6466 <member name="normal"
6467 value="1"
6468 c:identifier="GSK_PATH_INTERSECTION_NORMAL"
6469 glib:nick="normal"
6470 glib:name="GSK_PATH_INTERSECTION_NORMAL">
6471 <doc xml:space="preserve"
6472 filename="gsk/gskpath.h"
6473 line="149">A normal intersection, where the two paths
6474 cross each other</doc>
6475 </member>
6476 <member name="start"
6477 value="2"
6478 c:identifier="GSK_PATH_INTERSECTION_START"
6479 glib:nick="start"
6480 glib:name="GSK_PATH_INTERSECTION_START">
6481 <doc xml:space="preserve"
6482 filename="gsk/gskpath.h"
6483 line="151">The start of a segment where the two paths coincide</doc>
6484 </member>
6485 <member name="end"
6486 value="3"
6487 c:identifier="GSK_PATH_INTERSECTION_END"
6488 glib:nick="end"
6489 glib:name="GSK_PATH_INTERSECTION_END">
6490 <doc xml:space="preserve"
6491 filename="gsk/gskpath.h"
6492 line="152">The end of a segment where the two paths coincide</doc>
6493 </member>
6494 </enumeration>
6495 <callback name="PathIntersectionFunc"
6496 c:type="GskPathIntersectionFunc"
6497 version="4.20">
6498 <doc xml:space="preserve"
6499 filename="gsk/gskpath.h"
6500 line="167">Prototype of the callback to iterate through the
6501intersections of two paths.</doc>
6502 <source-position filename="gsk/gskpath.h" line="184"/>
6503 <return-value transfer-ownership="none">
6504 <doc xml:space="preserve"
6505 filename="gsk/gskpath.h"
6506 line="179">true to continue iterating, false to
6507 stop the iteration and not call the function again</doc>
6508 <type name="gboolean" c:type="gboolean"/>
6509 </return-value>
6510 <parameters>
6511 <parameter name="path1" transfer-ownership="none">
6512 <doc xml:space="preserve"
6513 filename="gsk/gskpath.h"
6514 line="169">the first path</doc>
6515 <type name="Path" c:type="GskPath*"/>
6516 </parameter>
6517 <parameter name="point1" transfer-ownership="none">
6518 <doc xml:space="preserve"
6519 filename="gsk/gskpath.h"
6520 line="170">the intersection as point on @path1</doc>
6521 <type name="PathPoint" c:type="const GskPathPoint*"/>
6522 </parameter>
6523 <parameter name="path2" transfer-ownership="none">
6524 <doc xml:space="preserve"
6525 filename="gsk/gskpath.h"
6526 line="171">the second path</doc>
6527 <type name="Path" c:type="GskPath*"/>
6528 </parameter>
6529 <parameter name="point2" transfer-ownership="none">
6530 <doc xml:space="preserve"
6531 filename="gsk/gskpath.h"
6532 line="172">the intersection as point on @path2</doc>
6533 <type name="PathPoint" c:type="const GskPathPoint*"/>
6534 </parameter>
6535 <parameter name="kind" transfer-ownership="none">
6536 <doc xml:space="preserve"
6537 filename="gsk/gskpath.h"
6538 line="173">the nature of the intersection</doc>
6539 <type name="PathIntersection" c:type="GskPathIntersection"/>
6540 </parameter>
6541 <parameter name="user_data"
6542 transfer-ownership="none"
6543 nullable="1"
6544 allow-none="1"
6545 closure="5">
6546 <doc xml:space="preserve"
6547 filename="gsk/gskpath.h"
6548 line="174">user data</doc>
6549 <type name="gpointer" c:type="gpointer"/>
6550 </parameter>
6551 </parameters>
6552 </callback>
6553 <record name="PathMeasure"
6554 c:type="GskPathMeasure"
6555 opaque="1"
6556 version="4.14"
6557 glib:type-name="GskPathMeasure"
6558 glib:get-type="gsk_path_measure_get_type"
6559 c:symbol-prefix="path_measure">
6560 <doc xml:space="preserve"
6561 filename="gsk/gskpathmeasure.c"
6562 line="29">Performs measurements on paths such as determining the length of the path.
6563
6564Many measuring operations require sampling the path length
6565at intermediate points. Therefore, a `GskPathMeasure` has
6566a tolerance that determines what precision is required
6567for such approximations.
6568
6569A `GskPathMeasure` struct is a reference counted struct
6570and should be treated as opaque.</doc>
6571 <source-position filename="gsk/gsktypes.h" line="30"/>
6572 <constructor name="new"
6573 c:identifier="gsk_path_measure_new"
6574 version="4.14">
6575 <doc xml:space="preserve"
6576 filename="gsk/gskpathmeasure.c"
6577 line="70">Creates a measure object for the given @path with the
6578default tolerance.</doc>
6579 <source-position filename="gsk/gskpathmeasure.h" line="37"/>
6580 <return-value transfer-ownership="full">
6581 <doc xml:space="preserve"
6582 filename="gsk/gskpathmeasure.c"
6583 line="77">a new `GskPathMeasure` representing @path</doc>
6584 <type name="PathMeasure" c:type="GskPathMeasure*"/>
6585 </return-value>
6586 <parameters>
6587 <parameter name="path" transfer-ownership="none">
6588 <doc xml:space="preserve"
6589 filename="gsk/gskpathmeasure.c"
6590 line="72">the path to measure</doc>
6591 <type name="Path" c:type="GskPath*"/>
6592 </parameter>
6593 </parameters>
6594 </constructor>
6595 <constructor name="new_with_tolerance"
6596 c:identifier="gsk_path_measure_new_with_tolerance"
6597 version="4.14">
6598 <doc xml:space="preserve"
6599 filename="gsk/gskpathmeasure.c"
6600 line="87">Creates a measure object for the given @path and @tolerance.</doc>
6601 <source-position filename="gsk/gskpathmeasure.h" line="39"/>
6602 <return-value transfer-ownership="full">
6603 <doc xml:space="preserve"
6604 filename="gsk/gskpathmeasure.c"
6605 line="94">a new `GskPathMeasure` representing @path</doc>
6606 <type name="PathMeasure" c:type="GskPathMeasure*"/>
6607 </return-value>
6608 <parameters>
6609 <parameter name="path" transfer-ownership="none">
6610 <doc xml:space="preserve"
6611 filename="gsk/gskpathmeasure.c"
6612 line="89">the path to measure</doc>
6613 <type name="Path" c:type="GskPath*"/>
6614 </parameter>
6615 <parameter name="tolerance" transfer-ownership="none">
6616 <doc xml:space="preserve"
6617 filename="gsk/gskpathmeasure.c"
6618 line="90">the tolerance for measuring operations</doc>
6619 <type name="gfloat" c:type="float"/>
6620 </parameter>
6621 </parameters>
6622 </constructor>
6623 <method name="get_length"
6624 c:identifier="gsk_path_measure_get_length"
6625 version="4.14">
6626 <doc xml:space="preserve"
6627 filename="gsk/gskpathmeasure.c"
6628 line="212">Gets the length of the path being measured.
6629
6630The length is cached, so this function does not do any work.</doc>
6631 <source-position filename="gsk/gskpathmeasure.h" line="53"/>
6632 <return-value transfer-ownership="none">
6633 <doc xml:space="preserve"
6634 filename="gsk/gskpathmeasure.c"
6635 line="220">the length of the path measured by @self</doc>
6636 <type name="gfloat" c:type="float"/>
6637 </return-value>
6638 <parameters>
6639 <instance-parameter name="self" transfer-ownership="none">
6640 <doc xml:space="preserve"
6641 filename="gsk/gskpathmeasure.c"
6642 line="214">a path measure</doc>
6643 <type name="PathMeasure" c:type="GskPathMeasure*"/>
6644 </instance-parameter>
6645 </parameters>
6646 </method>
6647 <method name="get_path"
6648 c:identifier="gsk_path_measure_get_path"
6649 version="4.14">
6650 <doc xml:space="preserve"
6651 filename="gsk/gskpathmeasure.c"
6652 line="180">Returns the path that the measure was created for.</doc>
6653 <source-position filename="gsk/gskpathmeasure.h" line="48"/>
6654 <return-value transfer-ownership="none">
6655 <doc xml:space="preserve"
6656 filename="gsk/gskpathmeasure.c"
6657 line="186">the path of @self</doc>
6658 <type name="Path" c:type="GskPath*"/>
6659 </return-value>
6660 <parameters>
6661 <instance-parameter name="self" transfer-ownership="none">
6662 <doc xml:space="preserve"
6663 filename="gsk/gskpathmeasure.c"
6664 line="182">a path measure</doc>
6665 <type name="PathMeasure" c:type="GskPathMeasure*"/>
6666 </instance-parameter>
6667 </parameters>
6668 </method>
6669 <method name="get_point"
6670 c:identifier="gsk_path_measure_get_point"
6671 version="4.14">
6672 <doc xml:space="preserve"
6673 filename="gsk/gskpathmeasure.c"
6674 line="242">Gets the point at the given distance into the path.
6675
6676An empty path has no points, so false is returned in that case.</doc>
6677 <source-position filename="gsk/gskpathmeasure.h" line="56"/>
6678 <return-value transfer-ownership="none">
6679 <doc xml:space="preserve"
6680 filename="gsk/gskpathmeasure.c"
6681 line="252">true if @result was set</doc>
6682 <type name="gboolean" c:type="gboolean"/>
6683 </return-value>
6684 <parameters>
6685 <instance-parameter name="self" transfer-ownership="none">
6686 <doc xml:space="preserve"
6687 filename="gsk/gskpathmeasure.c"
6688 line="244">a path measure</doc>
6689 <type name="PathMeasure" c:type="GskPathMeasure*"/>
6690 </instance-parameter>
6691 <parameter name="distance" transfer-ownership="none">
6692 <doc xml:space="preserve"
6693 filename="gsk/gskpathmeasure.c"
6694 line="245">the distance</doc>
6695 <type name="gfloat" c:type="float"/>
6696 </parameter>
6697 <parameter name="result"
6698 direction="out"
6699 caller-allocates="1"
6700 transfer-ownership="none">
6701 <doc xml:space="preserve"
6702 filename="gsk/gskpathmeasure.c"
6703 line="246">return location for the point</doc>
6704 <type name="PathPoint" c:type="GskPathPoint*"/>
6705 </parameter>
6706 </parameters>
6707 </method>
6708 <method name="get_tolerance"
6709 c:identifier="gsk_path_measure_get_tolerance"
6710 version="4.14">
6711 <doc xml:space="preserve"
6712 filename="gsk/gskpathmeasure.c"
6713 line="196">Returns the tolerance that the measure was created with.</doc>
6714 <source-position filename="gsk/gskpathmeasure.h" line="50"/>
6715 <return-value transfer-ownership="none">
6716 <doc xml:space="preserve"
6717 filename="gsk/gskpathmeasure.c"
6718 line="202">the tolerance of @self</doc>
6719 <type name="gfloat" c:type="float"/>
6720 </return-value>
6721 <parameters>
6722 <instance-parameter name="self" transfer-ownership="none">
6723 <doc xml:space="preserve"
6724 filename="gsk/gskpathmeasure.c"
6725 line="198">a path measure</doc>
6726 <type name="PathMeasure" c:type="GskPathMeasure*"/>
6727 </instance-parameter>
6728 </parameters>
6729 </method>
6730 <method name="ref" c:identifier="gsk_path_measure_ref" version="4.14">
6731 <doc xml:space="preserve"
6732 filename="gsk/gskpathmeasure.c"
6733 line="128">Increases the reference count of a `GskPathMeasure` by one.</doc>
6734 <source-position filename="gsk/gskpathmeasure.h" line="43"/>
6735 <return-value transfer-ownership="full">
6736 <doc xml:space="preserve"
6737 filename="gsk/gskpathmeasure.c"
6738 line="134">the passed in `GskPathMeasure`.</doc>
6739 <type name="PathMeasure" c:type="GskPathMeasure*"/>
6740 </return-value>
6741 <parameters>
6742 <instance-parameter name="self" transfer-ownership="none">
6743 <doc xml:space="preserve"
6744 filename="gsk/gskpathmeasure.c"
6745 line="130">a path measure</doc>
6746 <type name="PathMeasure" c:type="GskPathMeasure*"/>
6747 </instance-parameter>
6748 </parameters>
6749 </method>
6750 <method name="unref"
6751 c:identifier="gsk_path_measure_unref"
6752 version="4.14">
6753 <doc xml:space="preserve"
6754 filename="gsk/gskpathmeasure.c"
6755 line="148">Decreases the reference count of a `GskPathMeasure` by one.
6756
6757If the resulting reference count is zero, frees the object.</doc>
6758 <source-position filename="gsk/gskpathmeasure.h" line="45"/>
6759 <return-value transfer-ownership="none">
6760 <type name="none" c:type="void"/>
6761 </return-value>
6762 <parameters>
6763 <instance-parameter name="self" transfer-ownership="none">
6764 <doc xml:space="preserve"
6765 filename="gsk/gskpathmeasure.c"
6766 line="150">a path measure</doc>
6767 <type name="PathMeasure" c:type="GskPathMeasure*"/>
6768 </instance-parameter>
6769 </parameters>
6770 </method>
6771 </record>
6772 <enumeration name="PathOperation"
6773 version="4.14"
6774 glib:type-name="GskPathOperation"
6775 glib:get-type="gsk_path_operation_get_type"
6776 c:type="GskPathOperation">
6777 <doc xml:space="preserve"
6778 filename="gsk/gskenums.h"
6779 line="318">Describes the segments of a `GskPath`.
6780
6781More values may be added in the future.</doc>
6782 <member name="move"
6783 value="0"
6784 c:identifier="GSK_PATH_MOVE"
6785 glib:nick="move"
6786 glib:name="GSK_PATH_MOVE">
6787 <doc xml:space="preserve"
6788 filename="gsk/gskenums.h"
6789 line="320">A move-to operation, with 1 point describing the target point.</doc>
6790 </member>
6791 <member name="close"
6792 value="1"
6793 c:identifier="GSK_PATH_CLOSE"
6794 glib:nick="close"
6795 glib:name="GSK_PATH_CLOSE">
6796 <doc xml:space="preserve"
6797 filename="gsk/gskenums.h"
6798 line="321">A close operation ending the current contour with a line back
6799 to the starting point. Two points describe the start and end of the line.</doc>
6800 </member>
6801 <member name="line"
6802 value="2"
6803 c:identifier="GSK_PATH_LINE"
6804 glib:nick="line"
6805 glib:name="GSK_PATH_LINE">
6806 <doc xml:space="preserve"
6807 filename="gsk/gskenums.h"
6808 line="323">A line-to operation, with 2 points describing the start and
6809 end point of a straight line.</doc>
6810 </member>
6811 <member name="quad"
6812 value="3"
6813 c:identifier="GSK_PATH_QUAD"
6814 glib:nick="quad"
6815 glib:name="GSK_PATH_QUAD">
6816 <doc xml:space="preserve"
6817 filename="gsk/gskenums.h"
6818 line="325">A curve-to operation describing a quadratic Bézier curve
6819 with 3 points describing the start point, the control point and the end
6820 point of the curve.</doc>
6821 </member>
6822 <member name="cubic"
6823 value="4"
6824 c:identifier="GSK_PATH_CUBIC"
6825 glib:nick="cubic"
6826 glib:name="GSK_PATH_CUBIC">
6827 <doc xml:space="preserve"
6828 filename="gsk/gskenums.h"
6829 line="328">A curve-to operation describing a cubic Bézier curve with 4
6830 points describing the start point, the two control points and the end point
6831 of the curve.</doc>
6832 </member>
6833 <member name="conic"
6834 value="5"
6835 c:identifier="GSK_PATH_CONIC"
6836 glib:nick="conic"
6837 glib:name="GSK_PATH_CONIC">
6838 <doc xml:space="preserve"
6839 filename="gsk/gskenums.h"
6840 line="331">A rational quadratic Bézier curve with 3 points describing
6841 the start point, control point and end point of the curve. A weight for the
6842 curve will be passed, too.</doc>
6843 </member>
6844 </enumeration>
6845 <record name="PathPoint"
6846 c:type="GskPathPoint"
6847 version="4.14"
6848 glib:type-name="GskPathPoint"
6849 glib:get-type="gsk_path_point_get_type"
6850 c:symbol-prefix="path_point">
6851 <doc xml:space="preserve"
6852 filename="gsk/gskpathpoint.c"
6853 line="30">Represents a point on a path.
6854
6855It can be queried for properties of the path at that point,
6856such as its tangent or its curvature.
6857
6858To obtain a `GskPathPoint`, use [method@Gsk.Path.get_closest_point],
6859[method@Gsk.Path.get_start_point], [method@Gsk.Path.get_end_point]
6860or [method@Gsk.PathMeasure.get_point].
6861
6862Note that `GskPathPoint` structs are meant to be stack-allocated,
6863and don't hold a reference to the path object they are obtained from.
6864It is the callers responsibility to keep a reference to the path
6865as long as the `GskPathPoint` is used.</doc>
6866 <source-position filename="gsk/gskpathpoint.h" line="47"/>
6867 <union>
6868 <source-position filename="gsk/gskpathpoint.h" line="46"/>
6869 <record>
6870 <source-position filename="gsk/gskpathpoint.h" line="43"/>
6871 <field name="contour" writable="1">
6872 <type name="gsize" c:type="gsize"/>
6873 </field>
6874 <field name="idx" writable="1">
6875 <type name="gsize" c:type="gsize"/>
6876 </field>
6877 <field name="t" writable="1">
6878 <type name="gfloat" c:type="float"/>
6879 </field>
6880 </record>
6881 <field name="padding" writable="1">
6882 <array zero-terminated="0" fixed-size="8">
6883 <type name="gpointer" c:type="gpointer"/>
6884 </array>
6885 </field>
6886 <field name="alignment" writable="1">
6887 <type name="Graphene.Vec4" c:type="graphene_vec4_t"/>
6888 </field>
6889 </union>
6890 <method name="compare"
6891 c:identifier="gsk_path_point_compare"
6892 version="4.14">
6893 <doc xml:space="preserve"
6894 filename="gsk/gskpathpoint.c"
6895 line="123">Returns whether @point1 is before or after @point2.</doc>
6896 <source-position filename="gsk/gskpathpoint.h" line="63"/>
6897 <return-value transfer-ownership="none">
6898 <doc xml:space="preserve"
6899 filename="gsk/gskpathpoint.c"
6900 line="130">-1 if @point1 is before @point2,
6901 1 if @point1 is after @point2,
6902 0 if they are equal</doc>
6903 <type name="gint" c:type="int"/>
6904 </return-value>
6905 <parameters>
6906 <instance-parameter name="point1" transfer-ownership="none">
6907 <doc xml:space="preserve"
6908 filename="gsk/gskpathpoint.c"
6909 line="125">a path point</doc>
6910 <type name="PathPoint" c:type="const GskPathPoint*"/>
6911 </instance-parameter>
6912 <parameter name="point2" transfer-ownership="none">
6913 <doc xml:space="preserve"
6914 filename="gsk/gskpathpoint.c"
6915 line="126">another path point</doc>
6916 <type name="PathPoint" c:type="const GskPathPoint*"/>
6917 </parameter>
6918 </parameters>
6919 </method>
6920 <method name="copy" c:identifier="gsk_path_point_copy" version="4.14">
6921 <doc xml:space="preserve"
6922 filename="gsk/gskpathpoint.c"
6923 line="54">Copies a path point.</doc>
6924 <source-position filename="gsk/gskpathpoint.h" line="53"/>
6925 <return-value transfer-ownership="full">
6926 <doc xml:space="preserve"
6927 filename="gsk/gskpathpoint.c"
6928 line="60">the copied point</doc>
6929 <type name="PathPoint" c:type="GskPathPoint*"/>
6930 </return-value>
6931 <parameters>
6932 <instance-parameter name="point" transfer-ownership="none">
6933 <doc xml:space="preserve"
6934 filename="gsk/gskpathpoint.c"
6935 line="56">a path point</doc>
6936 <type name="PathPoint" c:type="GskPathPoint*"/>
6937 </instance-parameter>
6938 </parameters>
6939 </method>
6940 <method name="equal" c:identifier="gsk_path_point_equal" version="4.14">
6941 <doc xml:space="preserve"
6942 filename="gsk/gskpathpoint.c"
6943 line="90">Returns whether the two path points refer to the same
6944location on all paths.
6945
6946Note that the start- and endpoint of a closed contour
6947will compare nonequal according to this definition.
6948Use [method@Gsk.Path.is_closed] to find out if the
6949start- and endpoint of a concrete path refer to the
6950same location.</doc>
6951 <source-position filename="gsk/gskpathpoint.h" line="59"/>
6952 <return-value transfer-ownership="none">
6953 <doc xml:space="preserve"
6954 filename="gsk/gskpathpoint.c"
6955 line="104">true if @point1 and @point2 are equal</doc>
6956 <type name="gboolean" c:type="gboolean"/>
6957 </return-value>
6958 <parameters>
6959 <instance-parameter name="point1" transfer-ownership="none">
6960 <doc xml:space="preserve"
6961 filename="gsk/gskpathpoint.c"
6962 line="92">a path point</doc>
6963 <type name="PathPoint" c:type="const GskPathPoint*"/>
6964 </instance-parameter>
6965 <parameter name="point2" transfer-ownership="none">
6966 <doc xml:space="preserve"
6967 filename="gsk/gskpathpoint.c"
6968 line="93">another path point</doc>
6969 <type name="PathPoint" c:type="const GskPathPoint*"/>
6970 </parameter>
6971 </parameters>
6972 </method>
6973 <method name="free" c:identifier="gsk_path_point_free" version="4.14">
6974 <doc xml:space="preserve"
6975 filename="gsk/gskpathpoint.c"
6976 line="76">Frees a path point copied by [method@Gsk.PathPoint.copy].</doc>
6977 <source-position filename="gsk/gskpathpoint.h" line="56"/>
6978 <return-value transfer-ownership="none">
6979 <type name="none" c:type="void"/>
6980 </return-value>
6981 <parameters>
6982 <instance-parameter name="point" transfer-ownership="none">
6983 <doc xml:space="preserve"
6984 filename="gsk/gskpathpoint.c"
6985 line="78">a path point</doc>
6986 <type name="PathPoint" c:type="GskPathPoint*"/>
6987 </instance-parameter>
6988 </parameters>
6989 </method>
6990 <method name="get_curvature"
6991 c:identifier="gsk_path_point_get_curvature"
6992 version="4.14">
6993 <doc xml:space="preserve"
6994 filename="gsk/gskpathpoint.c"
6995 line="259">Calculates the curvature of the path at the point.
6996
6997Optionally, returns the center of the osculating circle as well.
6998The curvature is the inverse of the radius of the osculating circle.
6999
7000Lines have a curvature of zero (indicating an osculating circle of
7001infinite radius). In this case, the @center is not modified.
7002
7003Circles with a radius of zero have `INFINITY` as curvature
7004
7005Note that certain points on a path may not have a single curvature,
7006such as sharp turns. At such points, there are two curvatures — the
7007(limit of) the curvature of the path going into the point, and the
7008(limit of) the curvature of the path coming out of it. The @direction
7009argument lets you choose which one to get.
7010
7011<picture>
7012 <source srcset="curvature-dark.png" media="(prefers-color-scheme: dark)">
7013 <img alt="Osculating circle" src="curvature-light.png">
7014</picture></doc>
7015 <source-position filename="gsk/gskpathpoint.h" line="83"/>
7016 <return-value transfer-ownership="none">
7017 <doc xml:space="preserve"
7018 filename="gsk/gskpathpoint.c"
7019 line="288">the curvature of the path at the given point</doc>
7020 <type name="gfloat" c:type="float"/>
7021 </return-value>
7022 <parameters>
7023 <instance-parameter name="point" transfer-ownership="none">
7024 <doc xml:space="preserve"
7025 filename="gsk/gskpathpoint.c"
7026 line="261">a path point</doc>
7027 <type name="PathPoint" c:type="const GskPathPoint*"/>
7028 </instance-parameter>
7029 <parameter name="path" transfer-ownership="none">
7030 <doc xml:space="preserve"
7031 filename="gsk/gskpathpoint.c"
7032 line="262">the path that @point is on</doc>
7033 <type name="Path" c:type="GskPath*"/>
7034 </parameter>
7035 <parameter name="direction" transfer-ownership="none">
7036 <doc xml:space="preserve"
7037 filename="gsk/gskpathpoint.c"
7038 line="263">the direction for which to return the curvature</doc>
7039 <type name="PathDirection" c:type="GskPathDirection"/>
7040 </parameter>
7041 <parameter name="center"
7042 direction="out"
7043 caller-allocates="1"
7044 transfer-ownership="none"
7045 nullable="1">
7046 <doc xml:space="preserve"
7047 filename="gsk/gskpathpoint.c"
7048 line="264">return location for
7049 the center of the osculating circle</doc>
7050 <type name="Graphene.Point" c:type="graphene_point_t*"/>
7051 </parameter>
7052 </parameters>
7053 </method>
7054 <method name="get_distance"
7055 c:identifier="gsk_path_point_get_distance"
7056 version="4.14">
7057 <doc xml:space="preserve"
7058 filename="gsk/gskpathmeasure.c"
7059 line="295">Returns the distance from the beginning of the path
7060to the point.</doc>
7061 <source-position filename="gsk/gskpathpoint.h" line="89"/>
7062 <return-value transfer-ownership="none">
7063 <doc xml:space="preserve"
7064 filename="gsk/gskpathmeasure.c"
7065 line="303">the distance of @point</doc>
7066 <type name="gfloat" c:type="float"/>
7067 </return-value>
7068 <parameters>
7069 <instance-parameter name="point" transfer-ownership="none">
7070 <doc xml:space="preserve"
7071 filename="gsk/gskpathmeasure.c"
7072 line="297">a point on the path</doc>
7073 <type name="PathPoint" c:type="const GskPathPoint*"/>
7074 </instance-parameter>
7075 <parameter name="measure" transfer-ownership="none">
7076 <doc xml:space="preserve"
7077 filename="gsk/gskpathmeasure.c"
7078 line="298">a path measure for the path</doc>
7079 <type name="PathMeasure" c:type="GskPathMeasure*"/>
7080 </parameter>
7081 </parameters>
7082 </method>
7083 <method name="get_position"
7084 c:identifier="gsk_path_point_get_position"
7085 version="4.14">
7086 <doc xml:space="preserve"
7087 filename="gsk/gskpathpoint.c"
7088 line="159">Gets the position of the point.</doc>
7089 <source-position filename="gsk/gskpathpoint.h" line="67"/>
7090 <return-value transfer-ownership="none">
7091 <type name="none" c:type="void"/>
7092 </return-value>
7093 <parameters>
7094 <instance-parameter name="point" transfer-ownership="none">
7095 <doc xml:space="preserve"
7096 filename="gsk/gskpathpoint.c"
7097 line="161">a path point</doc>
7098 <type name="PathPoint" c:type="const GskPathPoint*"/>
7099 </instance-parameter>
7100 <parameter name="path" transfer-ownership="none">
7101 <doc xml:space="preserve"
7102 filename="gsk/gskpathpoint.c"
7103 line="162">the path that @point is on</doc>
7104 <type name="Path" c:type="GskPath*"/>
7105 </parameter>
7106 <parameter name="position"
7107 direction="out"
7108 caller-allocates="1"
7109 transfer-ownership="none">
7110 <doc xml:space="preserve"
7111 filename="gsk/gskpathpoint.c"
7112 line="163">Return location for
7113 the coordinates of the point</doc>
7114 <type name="Graphene.Point" c:type="graphene_point_t*"/>
7115 </parameter>
7116 </parameters>
7117 </method>
7118 <method name="get_rotation"
7119 c:identifier="gsk_path_point_get_rotation"
7120 version="4.14">
7121 <doc xml:space="preserve"
7122 filename="gsk/gskpathpoint.c"
7123 line="226">Gets the direction of the tangent at a given point.
7124
7125This is a convenience variant of [method@Gsk.PathPoint.get_tangent]
7126that returns the angle between the tangent and the X axis. The angle
7127can e.g. be used in
7128[gtk_snapshot_rotate()](../gtk4/method.Snapshot.rotate.html).</doc>
7129 <source-position filename="gsk/gskpathpoint.h" line="78"/>
7130 <return-value transfer-ownership="none">
7131 <doc xml:space="preserve"
7132 filename="gsk/gskpathpoint.c"
7133 line="239">the angle between the tangent and the X axis, in degrees</doc>
7134 <type name="gfloat" c:type="float"/>
7135 </return-value>
7136 <parameters>
7137 <instance-parameter name="point" transfer-ownership="none">
7138 <doc xml:space="preserve"
7139 filename="gsk/gskpathpoint.c"
7140 line="228">a path point</doc>
7141 <type name="PathPoint" c:type="const GskPathPoint*"/>
7142 </instance-parameter>
7143 <parameter name="path" transfer-ownership="none">
7144 <doc xml:space="preserve"
7145 filename="gsk/gskpathpoint.c"
7146 line="229">the path that @point is on</doc>
7147 <type name="Path" c:type="GskPath*"/>
7148 </parameter>
7149 <parameter name="direction" transfer-ownership="none">
7150 <doc xml:space="preserve"
7151 filename="gsk/gskpathpoint.c"
7152 line="230">the direction for which to return the rotation</doc>
7153 <type name="PathDirection" c:type="GskPathDirection"/>
7154 </parameter>
7155 </parameters>
7156 </method>
7157 <method name="get_tangent"
7158 c:identifier="gsk_path_point_get_tangent"
7159 version="4.14">
7160 <doc xml:space="preserve"
7161 filename="gsk/gskpathpoint.c"
7162 line="185">Gets the tangent of the path at the point.
7163
7164Note that certain points on a path may not have a single
7165tangent, such as sharp turns. At such points, there are
7166two tangents — the direction of the path going into the
7167point, and the direction coming out of it. The @direction
7168argument lets you choose which one to get.
7169
7170If the path is just a single point (e.g. a circle with
7171radius zero), then the tangent is set to `0, 0`.
7172
7173If you want to orient something in the direction of the
7174path, [method@Gsk.PathPoint.get_rotation] may be more
7175convenient to use.</doc>
7176 <source-position filename="gsk/gskpathpoint.h" line="72"/>
7177 <return-value transfer-ownership="none">
7178 <type name="none" c:type="void"/>
7179 </return-value>
7180 <parameters>
7181 <instance-parameter name="point" transfer-ownership="none">
7182 <doc xml:space="preserve"
7183 filename="gsk/gskpathpoint.c"
7184 line="187">a path point</doc>
7185 <type name="PathPoint" c:type="const GskPathPoint*"/>
7186 </instance-parameter>
7187 <parameter name="path" transfer-ownership="none">
7188 <doc xml:space="preserve"
7189 filename="gsk/gskpathpoint.c"
7190 line="188">the path that @point is on</doc>
7191 <type name="Path" c:type="GskPath*"/>
7192 </parameter>
7193 <parameter name="direction" transfer-ownership="none">
7194 <doc xml:space="preserve"
7195 filename="gsk/gskpathpoint.c"
7196 line="189">the direction for which to return the tangent</doc>
7197 <type name="PathDirection" c:type="GskPathDirection"/>
7198 </parameter>
7199 <parameter name="tangent"
7200 direction="out"
7201 caller-allocates="1"
7202 transfer-ownership="none">
7203 <doc xml:space="preserve"
7204 filename="gsk/gskpathpoint.c"
7205 line="190">Return location for
7206 the tangent at the point</doc>
7207 <type name="Graphene.Vec2" c:type="graphene_vec2_t*"/>
7208 </parameter>
7209 </parameters>
7210 </method>
7211 </record>
7212 <function-macro name="RENDERER"
7213 c:identifier="GSK_RENDERER"
7214 introspectable="0">
7215 <source-position filename="gsk/gskrenderer.h" line="32"/>
7216 <parameters>
7217 <parameter name="obj">
7218 </parameter>
7219 </parameters>
7220 </function-macro>
7221 <function-macro name="ROUNDED_RECT_INIT"
7222 c:identifier="GSK_ROUNDED_RECT_INIT"
7223 introspectable="0">
7224 <doc xml:space="preserve"
7225 filename="gsk/gskroundedrect.h"
7226 line="29">Initializes a `GskRoundedRect` when declaring it.
7227
7228All corner sizes will be initialized to 0.</doc>
7229 <source-position filename="gsk/gskroundedrect.h" line="40"/>
7230 <parameters>
7231 <parameter name="_x">
7232 <doc xml:space="preserve"
7233 filename="gsk/gskroundedrect.h"
7234 line="31">the X coordinate of the origin</doc>
7235 </parameter>
7236 <parameter name="_y">
7237 <doc xml:space="preserve"
7238 filename="gsk/gskroundedrect.h"
7239 line="32">the Y coordinate of the origin</doc>
7240 </parameter>
7241 <parameter name="_w">
7242 <doc xml:space="preserve"
7243 filename="gsk/gskroundedrect.h"
7244 line="33">the width</doc>
7245 </parameter>
7246 <parameter name="_h">
7247 <doc xml:space="preserve"
7248 filename="gsk/gskroundedrect.h"
7249 line="34">the height</doc>
7250 </parameter>
7251 </parameters>
7252 </function-macro>
7253 <class name="RadialGradientNode"
7254 c:symbol-prefix="radial_gradient_node"
7255 c:type="GskRadialGradientNode"
7256 parent="RenderNode"
7257 glib:type-name="GskRadialGradientNode"
7258 glib:get-type="gsk_radial_gradient_node_get_type"
7259 glib:fundamental="1">
7260 <doc xml:space="preserve"
7261 filename="gsk/gskrendernodeimpl.c"
7262 line="1098">A render node for a radial gradient.</doc>
7263 <constructor name="new" c:identifier="gsk_radial_gradient_node_new">
7264 <doc xml:space="preserve"
7265 filename="gsk/gskrendernodeimpl.c"
7266 line="1251">Creates a `GskRenderNode` that draws a radial gradient.
7267
7268The radial gradient
7269starts around @center. The size of the gradient is dictated by @hradius
7270in horizontal orientation and by @vradius in vertical orientation.</doc>
7271 <source-position filename="gsk/gskrendernode.h" line="300"/>
7272 <return-value transfer-ownership="full">
7273 <doc xml:space="preserve"
7274 filename="gsk/gskrendernodeimpl.c"
7275 line="1271">A new `GskRenderNode`</doc>
7276 <type name="RadialGradientNode" c:type="GskRenderNode*"/>
7277 </return-value>
7278 <parameters>
7279 <parameter name="bounds" transfer-ownership="none">
7280 <doc xml:space="preserve"
7281 filename="gsk/gskrendernodeimpl.c"
7282 line="1253">the bounds of the node</doc>
7283 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
7284 </parameter>
7285 <parameter name="center" transfer-ownership="none">
7286 <doc xml:space="preserve"
7287 filename="gsk/gskrendernodeimpl.c"
7288 line="1254">the center of the gradient</doc>
7289 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
7290 </parameter>
7291 <parameter name="hradius" transfer-ownership="none">
7292 <doc xml:space="preserve"
7293 filename="gsk/gskrendernodeimpl.c"
7294 line="1255">the horizontal radius</doc>
7295 <type name="gfloat" c:type="float"/>
7296 </parameter>
7297 <parameter name="vradius" transfer-ownership="none">
7298 <doc xml:space="preserve"
7299 filename="gsk/gskrendernodeimpl.c"
7300 line="1256">the vertical radius</doc>
7301 <type name="gfloat" c:type="float"/>
7302 </parameter>
7303 <parameter name="start" transfer-ownership="none">
7304 <doc xml:space="preserve"
7305 filename="gsk/gskrendernodeimpl.c"
7306 line="1257">a percentage >= 0 that defines the start of the gradient around @center</doc>
7307 <type name="gfloat" c:type="float"/>
7308 </parameter>
7309 <parameter name="end" transfer-ownership="none">
7310 <doc xml:space="preserve"
7311 filename="gsk/gskrendernodeimpl.c"
7312 line="1258">a percentage >= 0 that defines the end of the gradient around @center</doc>
7313 <type name="gfloat" c:type="float"/>
7314 </parameter>
7315 <parameter name="color_stops" transfer-ownership="none">
7316 <doc xml:space="preserve"
7317 filename="gsk/gskrendernodeimpl.c"
7318 line="1259">a pointer to an array of
7319 `GskColorStop` defining the gradient. The offsets of all color stops
7320 must be increasing. The first stop's offset must be >= 0 and the last
7321 stop's offset must be <= 1.</doc>
7322 <array length="7" zero-terminated="0" c:type="const GskColorStop*">
7323 <type name="ColorStop" c:type="GskColorStop"/>
7324 </array>
7325 </parameter>
7326 <parameter name="n_color_stops" transfer-ownership="none">
7327 <doc xml:space="preserve"
7328 filename="gsk/gskrendernodeimpl.c"
7329 line="1263">the number of elements in @color_stops</doc>
7330 <type name="gsize" c:type="gsize"/>
7331 </parameter>
7332 </parameters>
7333 </constructor>
7334 <method name="get_center"
7335 c:identifier="gsk_radial_gradient_node_get_center">
7336 <doc xml:space="preserve"
7337 filename="gsk/gskrendernodeimpl.c"
7338 line="1579">Retrieves the center pointer for the gradient.</doc>
7339 <source-position filename="gsk/gskrendernode.h" line="314"/>
7340 <return-value transfer-ownership="none">
7341 <doc xml:space="preserve"
7342 filename="gsk/gskrendernodeimpl.c"
7343 line="1585">the center point for the gradient</doc>
7344 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
7345 </return-value>
7346 <parameters>
7347 <instance-parameter name="node" transfer-ownership="none">
7348 <doc xml:space="preserve"
7349 filename="gsk/gskrendernodeimpl.c"
7350 line="1581">a `GskRenderNode` for a radial gradient</doc>
7351 <type name="RadialGradientNode" c:type="const GskRenderNode*"/>
7352 </instance-parameter>
7353 </parameters>
7354 </method>
7355 <method name="get_color_stops"
7356 c:identifier="gsk_radial_gradient_node_get_color_stops">
7357 <doc xml:space="preserve"
7358 filename="gsk/gskrendernodeimpl.c"
7359 line="1561">Retrieves the color stops in the gradient.</doc>
7360 <source-position filename="gsk/gskrendernode.h" line="311"/>
7361 <return-value transfer-ownership="none">
7362 <doc xml:space="preserve"
7363 filename="gsk/gskrendernodeimpl.c"
7364 line="1568">the color stops in the gradient</doc>
7365 <array length="0" zero-terminated="0" c:type="const GskColorStop*">
7366 <type name="ColorStop" c:type="GskColorStop"/>
7367 </array>
7368 </return-value>
7369 <parameters>
7370 <instance-parameter name="node" transfer-ownership="none">
7371 <doc xml:space="preserve"
7372 filename="gsk/gskrendernodeimpl.c"
7373 line="1563">a `GskRenderNode` for a radial gradient</doc>
7374 <type name="RadialGradientNode" c:type="const GskRenderNode*"/>
7375 </instance-parameter>
7376 <parameter name="n_stops"
7377 direction="out"
7378 caller-allocates="0"
7379 transfer-ownership="full"
7380 optional="1"
7381 allow-none="1">
7382 <doc xml:space="preserve"
7383 filename="gsk/gskrendernodeimpl.c"
7384 line="1564">the number of color stops in the returned array</doc>
7385 <type name="gsize" c:type="gsize*"/>
7386 </parameter>
7387 </parameters>
7388 </method>
7389 <method name="get_end" c:identifier="gsk_radial_gradient_node_get_end">
7390 <doc xml:space="preserve"
7391 filename="gsk/gskrendernodeimpl.c"
7392 line="1643">Retrieves the end value for the gradient.</doc>
7393 <source-position filename="gsk/gskrendernode.h" line="322"/>
7394 <return-value transfer-ownership="none">
7395 <doc xml:space="preserve"
7396 filename="gsk/gskrendernodeimpl.c"
7397 line="1649">the end value for the gradient</doc>
7398 <type name="gfloat" c:type="float"/>
7399 </return-value>
7400 <parameters>
7401 <instance-parameter name="node" transfer-ownership="none">
7402 <doc xml:space="preserve"
7403 filename="gsk/gskrendernodeimpl.c"
7404 line="1645">a `GskRenderNode` for a radial gradient</doc>
7405 <type name="RadialGradientNode" c:type="const GskRenderNode*"/>
7406 </instance-parameter>
7407 </parameters>
7408 </method>
7409 <method name="get_hradius"
7410 c:identifier="gsk_radial_gradient_node_get_hradius">
7411 <doc xml:space="preserve"
7412 filename="gsk/gskrendernodeimpl.c"
7413 line="1595">Retrieves the horizontal radius for the gradient.</doc>
7414 <source-position filename="gsk/gskrendernode.h" line="316"/>
7415 <return-value transfer-ownership="none">
7416 <doc xml:space="preserve"
7417 filename="gsk/gskrendernodeimpl.c"
7418 line="1601">the horizontal radius for the gradient</doc>
7419 <type name="gfloat" c:type="float"/>
7420 </return-value>
7421 <parameters>
7422 <instance-parameter name="node" transfer-ownership="none">
7423 <doc xml:space="preserve"
7424 filename="gsk/gskrendernodeimpl.c"
7425 line="1597">a `GskRenderNode` for a radial gradient</doc>
7426 <type name="RadialGradientNode" c:type="const GskRenderNode*"/>
7427 </instance-parameter>
7428 </parameters>
7429 </method>
7430 <method name="get_n_color_stops"
7431 c:identifier="gsk_radial_gradient_node_get_n_color_stops">
7432 <doc xml:space="preserve"
7433 filename="gsk/gskrendernodeimpl.c"
7434 line="1545">Retrieves the number of color stops in the gradient.</doc>
7435 <source-position filename="gsk/gskrendernode.h" line="309"/>
7436 <return-value transfer-ownership="none">
7437 <doc xml:space="preserve"
7438 filename="gsk/gskrendernodeimpl.c"
7439 line="1551">the number of color stops</doc>
7440 <type name="gsize" c:type="gsize"/>
7441 </return-value>
7442 <parameters>
7443 <instance-parameter name="node" transfer-ownership="none">
7444 <doc xml:space="preserve"
7445 filename="gsk/gskrendernodeimpl.c"
7446 line="1547">a `GskRenderNode` for a radial gradient</doc>
7447 <type name="RadialGradientNode" c:type="const GskRenderNode*"/>
7448 </instance-parameter>
7449 </parameters>
7450 </method>
7451 <method name="get_start"
7452 c:identifier="gsk_radial_gradient_node_get_start">
7453 <doc xml:space="preserve"
7454 filename="gsk/gskrendernodeimpl.c"
7455 line="1627">Retrieves the start value for the gradient.</doc>
7456 <source-position filename="gsk/gskrendernode.h" line="320"/>
7457 <return-value transfer-ownership="none">
7458 <doc xml:space="preserve"
7459 filename="gsk/gskrendernodeimpl.c"
7460 line="1633">the start value for the gradient</doc>
7461 <type name="gfloat" c:type="float"/>
7462 </return-value>
7463 <parameters>
7464 <instance-parameter name="node" transfer-ownership="none">
7465 <doc xml:space="preserve"
7466 filename="gsk/gskrendernodeimpl.c"
7467 line="1629">a `GskRenderNode` for a radial gradient</doc>
7468 <type name="RadialGradientNode" c:type="const GskRenderNode*"/>
7469 </instance-parameter>
7470 </parameters>
7471 </method>
7472 <method name="get_vradius"
7473 c:identifier="gsk_radial_gradient_node_get_vradius">
7474 <doc xml:space="preserve"
7475 filename="gsk/gskrendernodeimpl.c"
7476 line="1611">Retrieves the vertical radius for the gradient.</doc>
7477 <source-position filename="gsk/gskrendernode.h" line="318"/>
7478 <return-value transfer-ownership="none">
7479 <doc xml:space="preserve"
7480 filename="gsk/gskrendernodeimpl.c"
7481 line="1617">the vertical radius for the gradient</doc>
7482 <type name="gfloat" c:type="float"/>
7483 </return-value>
7484 <parameters>
7485 <instance-parameter name="node" transfer-ownership="none">
7486 <doc xml:space="preserve"
7487 filename="gsk/gskrendernodeimpl.c"
7488 line="1613">a `GskRenderNode` for a radial gradient</doc>
7489 <type name="RadialGradientNode" c:type="const GskRenderNode*"/>
7490 </instance-parameter>
7491 </parameters>
7492 </method>
7493 </class>
7494 <class name="RenderNode"
7495 c:symbol-prefix="render_node"
7496 c:type="GskRenderNode"
7497 abstract="1"
7498 glib:type-name="GskRenderNode"
7499 glib:get-type="gsk_render_node_get_type"
7500 glib:fundamental="1"
7501 glib:ref-func="gsk_render_node_ref"
7502 glib:unref-func="gsk_render_node_unref"
7503 glib:set-value-func="gsk_value_set_render_node"
7504 glib:get-value-func="gsk_value_get_render_node">
7505 <doc xml:space="preserve"
7506 filename="gsk/gskrendernode.c"
7507 line="19">The basic block in a scene graph to be rendered using [class@Gsk.Renderer].
7508
7509Each node has a parent, except the top-level node; each node may have
7510children nodes.
7511
7512Each node has an associated drawing surface, which has the size of
7513the rectangle set when creating it.
7514
7515Render nodes are meant to be transient; once they have been associated
7516to a [class@Gsk.Renderer] it's safe to release any reference you have on
7517them. All [class@Gsk.RenderNode]s are immutable, you can only specify their
7518properties during construction.</doc>
7519 <function name="deserialize" c:identifier="gsk_render_node_deserialize">
7520 <doc xml:space="preserve"
7521 filename="gsk/gskrendernode.c"
7522 line="677">Loads data previously created via [method@Gsk.RenderNode.serialize].
7523
7524For a discussion of the supported format, see that function.</doc>
7525 <source-position filename="gsk/gskrendernode.h" line="140"/>
7526 <return-value transfer-ownership="full" nullable="1">
7527 <doc xml:space="preserve"
7528 filename="gsk/gskrendernode.c"
7529 line="687">a new render node</doc>
7530 <type name="RenderNode" c:type="GskRenderNode*"/>
7531 </return-value>
7532 <parameters>
7533 <parameter name="bytes" transfer-ownership="none">
7534 <doc xml:space="preserve"
7535 filename="gsk/gskrendernode.c"
7536 line="679">the bytes containing the data</doc>
7537 <type name="GLib.Bytes" c:type="GBytes*"/>
7538 </parameter>
7539 <parameter name="error_func"
7540 transfer-ownership="none"
7541 nullable="1"
7542 allow-none="1"
7543 scope="call"
7544 closure="2">
7545 <doc xml:space="preserve"
7546 filename="gsk/gskrendernode.c"
7547 line="680">callback on parsing errors</doc>
7548 <type name="ParseErrorFunc" c:type="GskParseErrorFunc"/>
7549 </parameter>
7550 <parameter name="user_data"
7551 transfer-ownership="none"
7552 nullable="1"
7553 allow-none="1">
7554 <doc xml:space="preserve"
7555 filename="gsk/gskrendernode.c"
7556 line="681">user_data for @error_func</doc>
7557 <type name="gpointer" c:type="gpointer"/>
7558 </parameter>
7559 </parameters>
7560 </function>
7561 <method name="draw" c:identifier="gsk_render_node_draw">
7562 <doc xml:space="preserve"
7563 filename="gsk/gskrendernode.c"
7564 line="429">Draws the contents of a render node on a cairo context.
7565
7566Typically, you'll use this function to implement fallback rendering
7567of render nodes on an intermediate Cairo context, instead of using
7568the drawing context associated to a [class@Gdk.Surface]'s rendering buffer.
7569
7570For advanced nodes that cannot be supported using Cairo, in particular
7571for nodes doing 3D operations, this function may fail.</doc>
7572 <source-position filename="gsk/gskrendernode.h" line="130"/>
7573 <return-value transfer-ownership="none">
7574 <type name="none" c:type="void"/>
7575 </return-value>
7576 <parameters>
7577 <instance-parameter name="node" transfer-ownership="none">
7578 <doc xml:space="preserve"
7579 filename="gsk/gskrendernode.c"
7580 line="431">a render node</doc>
7581 <type name="RenderNode" c:type="GskRenderNode*"/>
7582 </instance-parameter>
7583 <parameter name="cr" transfer-ownership="none">
7584 <doc xml:space="preserve"
7585 filename="gsk/gskrendernode.c"
7586 line="432">cairo context to draw to</doc>
7587 <type name="cairo.Context" c:type="cairo_t*"/>
7588 </parameter>
7589 </parameters>
7590 </method>
7591 <method name="get_bounds" c:identifier="gsk_render_node_get_bounds">
7592 <doc xml:space="preserve"
7593 filename="gsk/gskrendernode.c"
7594 line="348">Retrieves the boundaries of the @node.
7595
7596The node will not draw outside of its boundaries.</doc>
7597 <source-position filename="gsk/gskrendernode.h" line="122"/>
7598 <return-value transfer-ownership="none">
7599 <type name="none" c:type="void"/>
7600 </return-value>
7601 <parameters>
7602 <instance-parameter name="node" transfer-ownership="none">
7603 <doc xml:space="preserve"
7604 filename="gsk/gskrendernode.c"
7605 line="350">a render node</doc>
7606 <type name="RenderNode" c:type="GskRenderNode*"/>
7607 </instance-parameter>
7608 <parameter name="bounds"
7609 direction="out"
7610 caller-allocates="1"
7611 transfer-ownership="none">
7612 <doc xml:space="preserve"
7613 filename="gsk/gskrendernode.c"
7614 line="351">return location for the boundaries</doc>
7615 <type name="Graphene.Rect" c:type="graphene_rect_t*"/>
7616 </parameter>
7617 </parameters>
7618 </method>
7619 <method name="get_node_type"
7620 c:identifier="gsk_render_node_get_node_type">
7621 <doc xml:space="preserve"
7622 filename="gsk/gskrendernode.c"
7623 line="332">Returns the type of the render node.</doc>
7624 <source-position filename="gsk/gskrendernode.h" line="119"/>
7625 <return-value transfer-ownership="none">
7626 <doc xml:space="preserve"
7627 filename="gsk/gskrendernode.c"
7628 line="338">the type of @node</doc>
7629 <type name="RenderNodeType" c:type="GskRenderNodeType"/>
7630 </return-value>
7631 <parameters>
7632 <instance-parameter name="node" transfer-ownership="none">
7633 <doc xml:space="preserve"
7634 filename="gsk/gskrendernode.c"
7635 line="334">a render node</doc>
7636 <type name="RenderNode" c:type="const GskRenderNode*"/>
7637 </instance-parameter>
7638 </parameters>
7639 </method>
7640 <method name="get_opaque_rect"
7641 c:identifier="gsk_render_node_get_opaque_rect"
7642 version="4.16">
7643 <doc xml:space="preserve"
7644 filename="gsk/gskrendernode.c"
7645 line="604">Gets an opaque rectangle inside the node that GTK can determine to
7646be fully opaque.
7647
7648There is no guarantee that this is indeed the largest opaque rectangle or
7649that regions outside the rectangle are not opaque. This function is a best
7650effort with that goal.
7651
7652The rectangle will be fully contained in the bounds of the node.</doc>
7653 <source-position filename="gsk/gskrendernode.h" line="126"/>
7654 <return-value transfer-ownership="none">
7655 <doc xml:space="preserve"
7656 filename="gsk/gskrendernode.c"
7657 line="618">true if part or all of the rendernode is opaque, false if no
7658 opaque region could be found.</doc>
7659 <type name="gboolean" c:type="gboolean"/>
7660 </return-value>
7661 <parameters>
7662 <instance-parameter name="self" transfer-ownership="none">
7663 <doc xml:space="preserve"
7664 filename="gsk/gskrendernode.c"
7665 line="606">a render node</doc>
7666 <type name="RenderNode" c:type="GskRenderNode*"/>
7667 </instance-parameter>
7668 <parameter name="out_opaque"
7669 direction="out"
7670 caller-allocates="1"
7671 transfer-ownership="none">
7672 <doc xml:space="preserve"
7673 filename="gsk/gskrendernode.c"
7674 line="607">return location for the opaque rect</doc>
7675 <type name="Graphene.Rect" c:type="graphene_rect_t*"/>
7676 </parameter>
7677 </parameters>
7678 </method>
7679 <method name="ref" c:identifier="gsk_render_node_ref">
7680 <doc xml:space="preserve"
7681 filename="gsk/gskrendernode.c"
7682 line="290">Acquires a reference on the given `GskRenderNode`.</doc>
7683 <source-position filename="gsk/gskrendernode.h" line="114"/>
7684 <return-value transfer-ownership="full">
7685 <doc xml:space="preserve"
7686 filename="gsk/gskrendernode.c"
7687 line="296">the render node with an additional reference</doc>
7688 <type name="RenderNode" c:type="GskRenderNode*"/>
7689 </return-value>
7690 <parameters>
7691 <instance-parameter name="node" transfer-ownership="none">
7692 <doc xml:space="preserve"
7693 filename="gsk/gskrendernode.c"
7694 line="292">a render node</doc>
7695 <type name="RenderNode" c:type="GskRenderNode*"/>
7696 </instance-parameter>
7697 </parameters>
7698 </method>
7699 <method name="serialize" c:identifier="gsk_render_node_serialize">
7700 <doc xml:space="preserve"
7701 filename="gsk/gskrendernodeparser.c"
7702 line="6087">Serializes the @node for later deserialization via
7703gsk_render_node_deserialize(). No guarantees are made about the format
7704used other than that the same version of GTK will be able to deserialize
7705the result of a call to gsk_render_node_serialize() and
7706gsk_render_node_deserialize() will correctly reject files it cannot open
7707that were created with previous versions of GTK.
7708
7709The intended use of this functions is testing, benchmarking and debugging.
7710The format is not meant as a permanent storage format.</doc>
7711 <source-position filename="gsk/gskrendernode.h" line="134"/>
7712 <return-value transfer-ownership="full">
7713 <doc xml:space="preserve"
7714 filename="gsk/gskrendernodeparser.c"
7715 line="6101">a `GBytes` representing the node.</doc>
7716 <type name="GLib.Bytes" c:type="GBytes*"/>
7717 </return-value>
7718 <parameters>
7719 <instance-parameter name="node" transfer-ownership="none">
7720 <doc xml:space="preserve"
7721 filename="gsk/gskrendernodeparser.c"
7722 line="6089">a `GskRenderNode`</doc>
7723 <type name="RenderNode" c:type="GskRenderNode*"/>
7724 </instance-parameter>
7725 </parameters>
7726 </method>
7727 <method name="unref" c:identifier="gsk_render_node_unref">
7728 <doc xml:space="preserve"
7729 filename="gsk/gskrendernode.c"
7730 line="314">Releases a reference on the given `GskRenderNode`.
7731
7732If the reference was the last, the resources associated to the @node are
7733freed.</doc>
7734 <source-position filename="gsk/gskrendernode.h" line="116"/>
7735 <return-value transfer-ownership="none">
7736 <type name="none" c:type="void"/>
7737 </return-value>
7738 <parameters>
7739 <instance-parameter name="node" transfer-ownership="full">
7740 <doc xml:space="preserve"
7741 filename="gsk/gskrendernode.c"
7742 line="316">a render node</doc>
7743 <type name="RenderNode" c:type="GskRenderNode*"/>
7744 </instance-parameter>
7745 </parameters>
7746 </method>
7747 <method name="write_to_file"
7748 c:identifier="gsk_render_node_write_to_file"
7749 throws="1">
7750 <doc xml:space="preserve"
7751 filename="gsk/gskrendernode.c"
7752 line="639">This function is equivalent to calling [method@Gsk.RenderNode.serialize]
7753followed by [func@GLib.file_set_contents].
7754
7755See those two functions for details on the arguments.
7756
7757It is mostly intended for use inside a debugger to quickly dump a render
7758node to a file for later inspection.</doc>
7759 <source-position filename="gsk/gskrendernode.h" line="136"/>
7760 <return-value transfer-ownership="none">
7761 <doc xml:space="preserve"
7762 filename="gsk/gskrendernode.c"
7763 line="653">true if saving was successful</doc>
7764 <type name="gboolean" c:type="gboolean"/>
7765 </return-value>
7766 <parameters>
7767 <instance-parameter name="node" transfer-ownership="none">
7768 <doc xml:space="preserve"
7769 filename="gsk/gskrendernode.c"
7770 line="641">a render node</doc>
7771 <type name="RenderNode" c:type="GskRenderNode*"/>
7772 </instance-parameter>
7773 <parameter name="filename" transfer-ownership="none">
7774 <doc xml:space="preserve"
7775 filename="gsk/gskrendernode.c"
7776 line="642">the file to save it to</doc>
7777 <type name="filename" c:type="const char*"/>
7778 </parameter>
7779 </parameters>
7780 </method>
7781 </class>
7782 <enumeration name="RenderNodeType"
7783 glib:type-name="GskRenderNodeType"
7784 glib:get-type="gsk_render_node_type_get_type"
7785 c:type="GskRenderNodeType">
7786 <doc xml:space="preserve"
7787 filename="gsk/gskenums.h"
7788 line="24">The type of a node determines what the node is rendering.</doc>
7789 <member name="not_a_render_node"
7790 value="0"
7791 c:identifier="GSK_NOT_A_RENDER_NODE"
7792 glib:nick="not-a-render-node"
7793 glib:name="GSK_NOT_A_RENDER_NODE">
7794 <doc xml:space="preserve"
7795 filename="gsk/gskenums.h"
7796 line="26">Error type. No node will ever have this type.</doc>
7797 </member>
7798 <member name="container_node"
7799 value="1"
7800 c:identifier="GSK_CONTAINER_NODE"
7801 glib:nick="container-node"
7802 glib:name="GSK_CONTAINER_NODE">
7803 <doc xml:space="preserve"
7804 filename="gsk/gskenums.h"
7805 line="27">A node containing a stack of children</doc>
7806 </member>
7807 <member name="cairo_node"
7808 value="2"
7809 c:identifier="GSK_CAIRO_NODE"
7810 glib:nick="cairo-node"
7811 glib:name="GSK_CAIRO_NODE">
7812 <doc xml:space="preserve"
7813 filename="gsk/gskenums.h"
7814 line="28">A node drawing a `cairo_surface_t`</doc>
7815 </member>
7816 <member name="color_node"
7817 value="3"
7818 c:identifier="GSK_COLOR_NODE"
7819 glib:nick="color-node"
7820 glib:name="GSK_COLOR_NODE">
7821 <doc xml:space="preserve"
7822 filename="gsk/gskenums.h"
7823 line="29">A node drawing a single color rectangle</doc>
7824 </member>
7825 <member name="linear_gradient_node"
7826 value="4"
7827 c:identifier="GSK_LINEAR_GRADIENT_NODE"
7828 glib:nick="linear-gradient-node"
7829 glib:name="GSK_LINEAR_GRADIENT_NODE">
7830 <doc xml:space="preserve"
7831 filename="gsk/gskenums.h"
7832 line="30">A node drawing a linear gradient</doc>
7833 </member>
7834 <member name="repeating_linear_gradient_node"
7835 value="5"
7836 c:identifier="GSK_REPEATING_LINEAR_GRADIENT_NODE"
7837 glib:nick="repeating-linear-gradient-node"
7838 glib:name="GSK_REPEATING_LINEAR_GRADIENT_NODE">
7839 <doc xml:space="preserve"
7840 filename="gsk/gskenums.h"
7841 line="31">A node drawing a repeating linear gradient</doc>
7842 </member>
7843 <member name="radial_gradient_node"
7844 value="6"
7845 c:identifier="GSK_RADIAL_GRADIENT_NODE"
7846 glib:nick="radial-gradient-node"
7847 glib:name="GSK_RADIAL_GRADIENT_NODE">
7848 <doc xml:space="preserve"
7849 filename="gsk/gskenums.h"
7850 line="32">A node drawing a radial gradient</doc>
7851 </member>
7852 <member name="repeating_radial_gradient_node"
7853 value="7"
7854 c:identifier="GSK_REPEATING_RADIAL_GRADIENT_NODE"
7855 glib:nick="repeating-radial-gradient-node"
7856 glib:name="GSK_REPEATING_RADIAL_GRADIENT_NODE">
7857 <doc xml:space="preserve"
7858 filename="gsk/gskenums.h"
7859 line="33">A node drawing a repeating radial gradient</doc>
7860 </member>
7861 <member name="conic_gradient_node"
7862 value="8"
7863 c:identifier="GSK_CONIC_GRADIENT_NODE"
7864 glib:nick="conic-gradient-node"
7865 glib:name="GSK_CONIC_GRADIENT_NODE">
7866 <doc xml:space="preserve"
7867 filename="gsk/gskenums.h"
7868 line="34">A node drawing a conic gradient</doc>
7869 </member>
7870 <member name="border_node"
7871 value="9"
7872 c:identifier="GSK_BORDER_NODE"
7873 glib:nick="border-node"
7874 glib:name="GSK_BORDER_NODE">
7875 <doc xml:space="preserve"
7876 filename="gsk/gskenums.h"
7877 line="35">A node stroking a border around an area</doc>
7878 </member>
7879 <member name="texture_node"
7880 value="10"
7881 c:identifier="GSK_TEXTURE_NODE"
7882 glib:nick="texture-node"
7883 glib:name="GSK_TEXTURE_NODE">
7884 <doc xml:space="preserve"
7885 filename="gsk/gskenums.h"
7886 line="36">A node drawing a `GdkTexture`</doc>
7887 </member>
7888 <member name="inset_shadow_node"
7889 value="11"
7890 c:identifier="GSK_INSET_SHADOW_NODE"
7891 glib:nick="inset-shadow-node"
7892 glib:name="GSK_INSET_SHADOW_NODE">
7893 <doc xml:space="preserve"
7894 filename="gsk/gskenums.h"
7895 line="37">A node drawing an inset shadow</doc>
7896 </member>
7897 <member name="outset_shadow_node"
7898 value="12"
7899 c:identifier="GSK_OUTSET_SHADOW_NODE"
7900 glib:nick="outset-shadow-node"
7901 glib:name="GSK_OUTSET_SHADOW_NODE">
7902 <doc xml:space="preserve"
7903 filename="gsk/gskenums.h"
7904 line="38">A node drawing an outset shadow</doc>
7905 </member>
7906 <member name="transform_node"
7907 value="13"
7908 c:identifier="GSK_TRANSFORM_NODE"
7909 glib:nick="transform-node"
7910 glib:name="GSK_TRANSFORM_NODE">
7911 <doc xml:space="preserve"
7912 filename="gsk/gskenums.h"
7913 line="39">A node that renders its child after applying a matrix transform</doc>
7914 </member>
7915 <member name="opacity_node"
7916 value="14"
7917 c:identifier="GSK_OPACITY_NODE"
7918 glib:nick="opacity-node"
7919 glib:name="GSK_OPACITY_NODE">
7920 <doc xml:space="preserve"
7921 filename="gsk/gskenums.h"
7922 line="40">A node that changes the opacity of its child</doc>
7923 </member>
7924 <member name="color_matrix_node"
7925 value="15"
7926 c:identifier="GSK_COLOR_MATRIX_NODE"
7927 glib:nick="color-matrix-node"
7928 glib:name="GSK_COLOR_MATRIX_NODE">
7929 <doc xml:space="preserve"
7930 filename="gsk/gskenums.h"
7931 line="41">A node that applies a color matrix to every pixel</doc>
7932 </member>
7933 <member name="repeat_node"
7934 value="16"
7935 c:identifier="GSK_REPEAT_NODE"
7936 glib:nick="repeat-node"
7937 glib:name="GSK_REPEAT_NODE">
7938 <doc xml:space="preserve"
7939 filename="gsk/gskenums.h"
7940 line="42">A node that repeats the child's contents</doc>
7941 </member>
7942 <member name="clip_node"
7943 value="17"
7944 c:identifier="GSK_CLIP_NODE"
7945 glib:nick="clip-node"
7946 glib:name="GSK_CLIP_NODE">
7947 <doc xml:space="preserve"
7948 filename="gsk/gskenums.h"
7949 line="43">A node that clips its child to a rectangular area</doc>
7950 </member>
7951 <member name="rounded_clip_node"
7952 value="18"
7953 c:identifier="GSK_ROUNDED_CLIP_NODE"
7954 glib:nick="rounded-clip-node"
7955 glib:name="GSK_ROUNDED_CLIP_NODE">
7956 <doc xml:space="preserve"
7957 filename="gsk/gskenums.h"
7958 line="44">A node that clips its child to a rounded rectangle</doc>
7959 </member>
7960 <member name="shadow_node"
7961 value="19"
7962 c:identifier="GSK_SHADOW_NODE"
7963 glib:nick="shadow-node"
7964 glib:name="GSK_SHADOW_NODE">
7965 <doc xml:space="preserve"
7966 filename="gsk/gskenums.h"
7967 line="45">A node that draws a shadow below its child</doc>
7968 </member>
7969 <member name="blend_node"
7970 value="20"
7971 c:identifier="GSK_BLEND_NODE"
7972 glib:nick="blend-node"
7973 glib:name="GSK_BLEND_NODE">
7974 <doc xml:space="preserve"
7975 filename="gsk/gskenums.h"
7976 line="46">A node that blends two children together</doc>
7977 </member>
7978 <member name="cross_fade_node"
7979 value="21"
7980 c:identifier="GSK_CROSS_FADE_NODE"
7981 glib:nick="cross-fade-node"
7982 glib:name="GSK_CROSS_FADE_NODE">
7983 <doc xml:space="preserve"
7984 filename="gsk/gskenums.h"
7985 line="47">A node that cross-fades between two children</doc>
7986 </member>
7987 <member name="text_node"
7988 value="22"
7989 c:identifier="GSK_TEXT_NODE"
7990 glib:nick="text-node"
7991 glib:name="GSK_TEXT_NODE">
7992 <doc xml:space="preserve"
7993 filename="gsk/gskenums.h"
7994 line="48">A node containing a glyph string</doc>
7995 </member>
7996 <member name="blur_node"
7997 value="23"
7998 c:identifier="GSK_BLUR_NODE"
7999 glib:nick="blur-node"
8000 glib:name="GSK_BLUR_NODE">
8001 <doc xml:space="preserve"
8002 filename="gsk/gskenums.h"
8003 line="49">A node that applies a blur</doc>
8004 </member>
8005 <member name="debug_node"
8006 value="24"
8007 c:identifier="GSK_DEBUG_NODE"
8008 glib:nick="debug-node"
8009 glib:name="GSK_DEBUG_NODE">
8010 <doc xml:space="preserve"
8011 filename="gsk/gskenums.h"
8012 line="50">Debug information that does not affect the rendering</doc>
8013 </member>
8014 <member name="gl_shader_node"
8015 value="25"
8016 c:identifier="GSK_GL_SHADER_NODE"
8017 glib:nick="gl-shader-node"
8018 glib:name="GSK_GL_SHADER_NODE">
8019 <doc xml:space="preserve"
8020 filename="gsk/gskenums.h"
8021 line="51">A node that uses OpenGL fragment shaders to render</doc>
8022 </member>
8023 <member name="texture_scale_node"
8024 value="26"
8025 c:identifier="GSK_TEXTURE_SCALE_NODE"
8026 version="4.10"
8027 glib:nick="texture-scale-node"
8028 glib:name="GSK_TEXTURE_SCALE_NODE">
8029 <doc xml:space="preserve"
8030 filename="gsk/gskenums.h"
8031 line="56">A node drawing a `GdkTexture` scaled and filtered.</doc>
8032 </member>
8033 <member name="mask_node"
8034 value="27"
8035 c:identifier="GSK_MASK_NODE"
8036 version="4.10"
8037 glib:nick="mask-node"
8038 glib:name="GSK_MASK_NODE">
8039 <doc xml:space="preserve"
8040 filename="gsk/gskenums.h"
8041 line="64">A node that masks one child with another.</doc>
8042 </member>
8043 <member name="fill_node"
8044 value="28"
8045 c:identifier="GSK_FILL_NODE"
8046 version="4.14"
8047 glib:nick="fill-node"
8048 glib:name="GSK_FILL_NODE">
8049 <doc xml:space="preserve"
8050 filename="gsk/gskenums.h"
8051 line="80">A node that fills a path.</doc>
8052 </member>
8053 <member name="stroke_node"
8054 value="29"
8055 c:identifier="GSK_STROKE_NODE"
8056 version="4.14"
8057 glib:nick="stroke-node"
8058 glib:name="GSK_STROKE_NODE">
8059 <doc xml:space="preserve"
8060 filename="gsk/gskenums.h"
8061 line="72">A node that strokes a path.</doc>
8062 </member>
8063 <member name="subsurface_node"
8064 value="30"
8065 c:identifier="GSK_SUBSURFACE_NODE"
8066 version="4.14"
8067 glib:nick="subsurface-node"
8068 glib:name="GSK_SUBSURFACE_NODE">
8069 <doc xml:space="preserve"
8070 filename="gsk/gskenums.h"
8071 line="88">A node that possibly redirects part of the scene graph to a subsurface.</doc>
8072 </member>
8073 <member name="component_transfer_node"
8074 value="31"
8075 c:identifier="GSK_COMPONENT_TRANSFER_NODE"
8076 version="4.20"
8077 glib:nick="component-transfer-node"
8078 glib:name="GSK_COMPONENT_TRANSFER_NODE">
8079 <doc xml:space="preserve"
8080 filename="gsk/gskenums.h"
8081 line="96">A node that applies some function to each color component.</doc>
8082 </member>
8083 </enumeration>
8084 <class name="Renderer"
8085 c:symbol-prefix="renderer"
8086 c:type="GskRenderer"
8087 parent="GObject.Object"
8088 abstract="1"
8089 glib:type-name="GskRenderer"
8090 glib:get-type="gsk_renderer_get_type"
8091 glib:type-struct="RendererClass">
8092 <doc xml:space="preserve"
8093 filename="gsk/gskrenderer.c"
8094 line="18">Renders a scene graph defined via a tree of [class@Gsk.RenderNode] instances.
8095
8096Typically you will use a `GskRenderer` instance to repeatedly call
8097[method@Gsk.Renderer.render] to update the contents of its associated
8098[class@Gdk.Surface].
8099
8100It is necessary to realize a `GskRenderer` instance using
8101[method@Gsk.Renderer.realize] before calling [method@Gsk.Renderer.render],
8102in order to create the appropriate windowing system resources needed
8103to render the scene.</doc>
8104 <source-position filename="gsk/gskrenderer.h" line="35"/>
8105 <constructor name="new_for_surface"
8106 c:identifier="gsk_renderer_new_for_surface">
8107 <doc xml:space="preserve"
8108 filename="gsk/gskrenderer.c"
8109 line="766">Creates an appropriate `GskRenderer` instance for the given surface.
8110
8111If the `GSK_RENDERER` environment variable is set, GSK will
8112try that renderer first, before trying the backend-specific
8113default. The ultimate fallback is the cairo renderer.
8114
8115The renderer will be realized before it is returned.</doc>
8116 <source-position filename="gsk/gskrenderer.h" line="41"/>
8117 <return-value transfer-ownership="full" nullable="1">
8118 <doc xml:space="preserve"
8119 filename="gsk/gskrenderer.c"
8120 line="778">the realized renderer</doc>
8121 <type name="Renderer" c:type="GskRenderer*"/>
8122 </return-value>
8123 <parameters>
8124 <parameter name="surface" transfer-ownership="none">
8125 <doc xml:space="preserve"
8126 filename="gsk/gskrenderer.c"
8127 line="768">a surface</doc>
8128 <type name="Gdk.Surface" c:type="GdkSurface*"/>
8129 </parameter>
8130 </parameters>
8131 </constructor>
8132 <method name="get_surface"
8133 c:identifier="gsk_renderer_get_surface"
8134 glib:get-property="surface">
8135 <doc xml:space="preserve"
8136 filename="gsk/gskrenderer.c"
8137 line="204">Retrieves the surface that the renderer is associated with.
8138
8139If the renderer has not been realized yet, `NULL` will be returned.</doc>
8140 <source-position filename="gsk/gskrenderer.h" line="44"/>
8141 <return-value transfer-ownership="none" nullable="1">
8142 <doc xml:space="preserve"
8143 filename="gsk/gskrenderer.c"
8144 line="212">the surface</doc>
8145 <type name="Gdk.Surface" c:type="GdkSurface*"/>
8146 </return-value>
8147 <parameters>
8148 <instance-parameter name="renderer" transfer-ownership="none">
8149 <doc xml:space="preserve"
8150 filename="gsk/gskrenderer.c"
8151 line="206">a renderer</doc>
8152 <type name="Renderer" c:type="GskRenderer*"/>
8153 </instance-parameter>
8154 </parameters>
8155 </method>
8156 <method name="is_realized"
8157 c:identifier="gsk_renderer_is_realized"
8158 glib:get-property="realized">
8159 <doc xml:space="preserve"
8160 filename="gsk/gskrenderer.c"
8161 line="224">Checks whether the renderer is realized or not.</doc>
8162 <source-position filename="gsk/gskrenderer.h" line="57"/>
8163 <return-value transfer-ownership="none">
8164 <doc xml:space="preserve"
8165 filename="gsk/gskrenderer.c"
8166 line="230">true if the renderer was realized, false otherwise</doc>
8167 <type name="gboolean" c:type="gboolean"/>
8168 </return-value>
8169 <parameters>
8170 <instance-parameter name="renderer" transfer-ownership="none">
8171 <doc xml:space="preserve"
8172 filename="gsk/gskrenderer.c"
8173 line="226">a renderer</doc>
8174 <type name="Renderer" c:type="GskRenderer*"/>
8175 </instance-parameter>
8176 </parameters>
8177 </method>
8178 <method name="realize" c:identifier="gsk_renderer_realize" throws="1">
8179 <doc xml:space="preserve"
8180 filename="gsk/gskrenderer.c"
8181 line="271">Creates the resources needed by the renderer.
8182
8183Since GTK 4.6, the surface may be `NULL`, which allows using
8184renderers without having to create a surface. Since GTK 4.14,
8185it is recommended to use [method@Gsk.Renderer.realize_for_display]
8186for this case.
8187
8188Note that it is mandatory to call [method@Gsk.Renderer.unrealize]
8189before destroying the renderer.</doc>
8190 <source-position filename="gsk/gskrenderer.h" line="47"/>
8191 <return-value transfer-ownership="none">
8192 <doc xml:space="preserve"
8193 filename="gsk/gskrenderer.c"
8194 line="287">whether the renderer was successfully realized</doc>
8195 <type name="gboolean" c:type="gboolean"/>
8196 </return-value>
8197 <parameters>
8198 <instance-parameter name="renderer" transfer-ownership="none">
8199 <doc xml:space="preserve"
8200 filename="gsk/gskrenderer.c"
8201 line="273">a renderer</doc>
8202 <type name="Renderer" c:type="GskRenderer*"/>
8203 </instance-parameter>
8204 <parameter name="surface"
8205 transfer-ownership="none"
8206 nullable="1"
8207 allow-none="1">
8208 <doc xml:space="preserve"
8209 filename="gsk/gskrenderer.c"
8210 line="274">the surface that renderer will be used on</doc>
8211 <type name="Gdk.Surface" c:type="GdkSurface*"/>
8212 </parameter>
8213 </parameters>
8214 </method>
8215 <method name="realize_for_display"
8216 c:identifier="gsk_renderer_realize_for_display"
8217 version="4.14"
8218 throws="1">
8219 <doc xml:space="preserve"
8220 filename="gsk/gskrenderer.c"
8221 line="317">Creates the resources needed by the renderer.
8222
8223Note that it is mandatory to call [method@Gsk.Renderer.unrealize]
8224before destroying the renderer.</doc>
8225 <source-position filename="gsk/gskrenderer.h" line="51"/>
8226 <return-value transfer-ownership="none">
8227 <doc xml:space="preserve"
8228 filename="gsk/gskrenderer.c"
8229 line="328">whether the renderer was successfully realized</doc>
8230 <type name="gboolean" c:type="gboolean"/>
8231 </return-value>
8232 <parameters>
8233 <instance-parameter name="renderer" transfer-ownership="none">
8234 <doc xml:space="preserve"
8235 filename="gsk/gskrenderer.c"
8236 line="319">a renderer</doc>
8237 <type name="Renderer" c:type="GskRenderer*"/>
8238 </instance-parameter>
8239 <parameter name="display" transfer-ownership="none">
8240 <doc xml:space="preserve"
8241 filename="gsk/gskrenderer.c"
8242 line="320">the display that the renderer will be used on</doc>
8243 <type name="Gdk.Display" c:type="GdkDisplay*"/>
8244 </parameter>
8245 </parameters>
8246 </method>
8247 <method name="render" c:identifier="gsk_renderer_render">
8248 <doc xml:space="preserve"
8249 filename="gsk/gskrenderer.c"
8250 line="419">Renders the scene graph, described by a tree of `GskRenderNode` instances
8251to the renderer's surface, ensuring that the given region gets redrawn.
8252
8253If the renderer has no associated surface, this function does nothing.
8254
8255Renderers must ensure that changes of the contents given by the @root
8256node as well as the area given by @region are redrawn. They are however
8257free to not redraw any pixel outside of @region if they can guarantee that
8258it didn't change.
8259
8260The renderer will acquire a reference on the `GskRenderNode` tree while
8261the rendering is in progress.</doc>
8262 <source-position filename="gsk/gskrenderer.h" line="65"/>
8263 <return-value transfer-ownership="none">
8264 <type name="none" c:type="void"/>
8265 </return-value>
8266 <parameters>
8267 <instance-parameter name="renderer" transfer-ownership="none">
8268 <doc xml:space="preserve"
8269 filename="gsk/gskrenderer.c"
8270 line="421">a realized renderer</doc>
8271 <type name="Renderer" c:type="GskRenderer*"/>
8272 </instance-parameter>
8273 <parameter name="root" transfer-ownership="none">
8274 <doc xml:space="preserve"
8275 filename="gsk/gskrenderer.c"
8276 line="422">the render node to render</doc>
8277 <type name="RenderNode" c:type="GskRenderNode*"/>
8278 </parameter>
8279 <parameter name="region"
8280 transfer-ownership="none"
8281 nullable="1"
8282 allow-none="1">
8283 <doc xml:space="preserve"
8284 filename="gsk/gskrenderer.c"
8285 line="423">the `cairo_region_t` that must be redrawn or `NULL`
8286 for the whole surface</doc>
8287 <type name="cairo.Region" c:type="const cairo_region_t*"/>
8288 </parameter>
8289 </parameters>
8290 </method>
8291 <method name="render_texture" c:identifier="gsk_renderer_render_texture">
8292 <doc xml:space="preserve"
8293 filename="gsk/gskrenderer.c"
8294 line="376">Renders a scene graph, described by a tree of `GskRenderNode` instances,
8295to a texture.
8296
8297The renderer will acquire a reference on the `GskRenderNode` tree while
8298the rendering is in progress.
8299
8300If you want to apply any transformations to @root, you should put it into a
8301transform node and pass that node instead.</doc>
8302 <source-position filename="gsk/gskrenderer.h" line="60"/>
8303 <return-value transfer-ownership="full">
8304 <doc xml:space="preserve"
8305 filename="gsk/gskrenderer.c"
8306 line="391">a texture with the rendered contents of @root</doc>
8307 <type name="Gdk.Texture" c:type="GdkTexture*"/>
8308 </return-value>
8309 <parameters>
8310 <instance-parameter name="renderer" transfer-ownership="none">
8311 <doc xml:space="preserve"
8312 filename="gsk/gskrenderer.c"
8313 line="378">a realized renderer</doc>
8314 <type name="Renderer" c:type="GskRenderer*"/>
8315 </instance-parameter>
8316 <parameter name="root" transfer-ownership="none">
8317 <doc xml:space="preserve"
8318 filename="gsk/gskrenderer.c"
8319 line="379">the render node to render</doc>
8320 <type name="RenderNode" c:type="GskRenderNode*"/>
8321 </parameter>
8322 <parameter name="viewport"
8323 transfer-ownership="none"
8324 nullable="1"
8325 allow-none="1">
8326 <doc xml:space="preserve"
8327 filename="gsk/gskrenderer.c"
8328 line="380">the section to draw or `NULL` to use @root's bounds</doc>
8329 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
8330 </parameter>
8331 </parameters>
8332 </method>
8333 <method name="unrealize" c:identifier="gsk_renderer_unrealize">
8334 <doc xml:space="preserve"
8335 filename="gsk/gskrenderer.c"
8336 line="345">Releases all the resources created by [method@Gsk.Renderer.realize].</doc>
8337 <source-position filename="gsk/gskrenderer.h" line="55"/>
8338 <return-value transfer-ownership="none">
8339 <type name="none" c:type="void"/>
8340 </return-value>
8341 <parameters>
8342 <instance-parameter name="renderer" transfer-ownership="none">
8343 <doc xml:space="preserve"
8344 filename="gsk/gskrenderer.c"
8345 line="347">a renderer</doc>
8346 <type name="Renderer" c:type="GskRenderer*"/>
8347 </instance-parameter>
8348 </parameters>
8349 </method>
8350 <property name="realized"
8351 transfer-ownership="none"
8352 getter="is_realized"
8353 default-value="FALSE">
8354 <doc xml:space="preserve"
8355 filename="gsk/gskrenderer.c"
8356 line="173">Whether the renderer has been associated with a surface or draw context.</doc>
8357 <type name="gboolean" c:type="gboolean"/>
8358 </property>
8359 <property name="surface" transfer-ownership="none" getter="get_surface">
8360 <doc xml:space="preserve"
8361 filename="gsk/gskrenderer.c"
8362 line="183">The surface associated with renderer.</doc>
8363 <type name="Gdk.Surface"/>
8364 </property>
8365 </class>
8366 <record name="RendererClass"
8367 c:type="GskRendererClass"
8368 disguised="1"
8369 opaque="1"
8370 glib:is-gtype-struct-for="Renderer">
8371 <source-position filename="gsk/gskrenderer.h" line="35"/>
8372 </record>
8373 <class name="RepeatNode"
8374 c:symbol-prefix="repeat_node"
8375 c:type="GskRepeatNode"
8376 parent="RenderNode"
8377 glib:type-name="GskRepeatNode"
8378 glib:get-type="gsk_repeat_node_get_type"
8379 glib:fundamental="1">
8380 <doc xml:space="preserve"
8381 filename="gsk/gskrendernodeimpl.c"
8382 line="5254">A render node repeating its single child node.</doc>
8383 <constructor name="new" c:identifier="gsk_repeat_node_new">
8384 <doc xml:space="preserve"
8385 filename="gsk/gskrendernodeimpl.c"
8386 line="5463">Creates a `GskRenderNode` that will repeat the drawing of @child across
8387the given @bounds.</doc>
8388 <source-position filename="gsk/gskrendernode.h" line="450"/>
8389 <return-value transfer-ownership="full">
8390 <doc xml:space="preserve"
8391 filename="gsk/gskrendernodeimpl.c"
8392 line="5473">A new `GskRenderNode`</doc>
8393 <type name="RepeatNode" c:type="GskRenderNode*"/>
8394 </return-value>
8395 <parameters>
8396 <parameter name="bounds" transfer-ownership="none">
8397 <doc xml:space="preserve"
8398 filename="gsk/gskrendernodeimpl.c"
8399 line="5465">The bounds of the area to be painted</doc>
8400 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
8401 </parameter>
8402 <parameter name="child" transfer-ownership="none">
8403 <doc xml:space="preserve"
8404 filename="gsk/gskrendernodeimpl.c"
8405 line="5466">The child to repeat</doc>
8406 <type name="RenderNode" c:type="GskRenderNode*"/>
8407 </parameter>
8408 <parameter name="child_bounds"
8409 transfer-ownership="none"
8410 nullable="1"
8411 allow-none="1">
8412 <doc xml:space="preserve"
8413 filename="gsk/gskrendernodeimpl.c"
8414 line="5467">The area of the child to repeat or %NULL to
8415 use the child's bounds</doc>
8416 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
8417 </parameter>
8418 </parameters>
8419 </constructor>
8420 <method name="get_child" c:identifier="gsk_repeat_node_get_child">
8421 <doc xml:space="preserve"
8422 filename="gsk/gskrendernodeimpl.c"
8423 line="5513">Retrieves the child of @node.</doc>
8424 <source-position filename="gsk/gskrendernode.h" line="454"/>
8425 <return-value transfer-ownership="none">
8426 <doc xml:space="preserve"
8427 filename="gsk/gskrendernodeimpl.c"
8428 line="5519">a `GskRenderNode`</doc>
8429 <type name="RenderNode" c:type="GskRenderNode*"/>
8430 </return-value>
8431 <parameters>
8432 <instance-parameter name="node" transfer-ownership="none">
8433 <doc xml:space="preserve"
8434 filename="gsk/gskrendernodeimpl.c"
8435 line="5515">a repeat `GskRenderNode`</doc>
8436 <type name="RepeatNode" c:type="const GskRenderNode*"/>
8437 </instance-parameter>
8438 </parameters>
8439 </method>
8440 <method name="get_child_bounds"
8441 c:identifier="gsk_repeat_node_get_child_bounds">
8442 <doc xml:space="preserve"
8443 filename="gsk/gskrendernodeimpl.c"
8444 line="5529">Retrieves the bounding rectangle of the child of @node.</doc>
8445 <source-position filename="gsk/gskrendernode.h" line="456"/>
8446 <return-value transfer-ownership="none">
8447 <doc xml:space="preserve"
8448 filename="gsk/gskrendernodeimpl.c"
8449 line="5535">a bounding rectangle</doc>
8450 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
8451 </return-value>
8452 <parameters>
8453 <instance-parameter name="node" transfer-ownership="none">
8454 <doc xml:space="preserve"
8455 filename="gsk/gskrendernodeimpl.c"
8456 line="5531">a repeat `GskRenderNode`</doc>
8457 <type name="RepeatNode" c:type="const GskRenderNode*"/>
8458 </instance-parameter>
8459 </parameters>
8460 </method>
8461 </class>
8462 <class name="RepeatingLinearGradientNode"
8463 c:symbol-prefix="repeating_linear_gradient_node"
8464 c:type="GskRepeatingLinearGradientNode"
8465 parent="RenderNode"
8466 glib:type-name="GskRepeatingLinearGradientNode"
8467 glib:get-type="gsk_repeating_linear_gradient_node_get_type"
8468 glib:fundamental="1">
8469 <doc xml:space="preserve"
8470 filename="gsk/gskrendernodeimpl.c"
8471 line="426">A render node for a repeating linear gradient.</doc>
8472 <constructor name="new"
8473 c:identifier="gsk_repeating_linear_gradient_node_new">
8474 <doc xml:space="preserve"
8475 filename="gsk/gskrendernodeimpl.c"
8476 line="841">Creates a `GskRenderNode` that will create a repeating linear gradient
8477from the given points and color stops, and render that into the area
8478given by @bounds.</doc>
8479 <source-position filename="gsk/gskrendernode.h" line="271"/>
8480 <return-value transfer-ownership="full">
8481 <doc xml:space="preserve"
8482 filename="gsk/gskrendernodeimpl.c"
8483 line="856">A new `GskRenderNode`</doc>
8484 <type name="RepeatingLinearGradientNode" c:type="GskRenderNode*"/>
8485 </return-value>
8486 <parameters>
8487 <parameter name="bounds" transfer-ownership="none">
8488 <doc xml:space="preserve"
8489 filename="gsk/gskrendernodeimpl.c"
8490 line="843">the rectangle to render the linear gradient into</doc>
8491 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
8492 </parameter>
8493 <parameter name="start" transfer-ownership="none">
8494 <doc xml:space="preserve"
8495 filename="gsk/gskrendernodeimpl.c"
8496 line="844">the point at which the linear gradient will begin</doc>
8497 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
8498 </parameter>
8499 <parameter name="end" transfer-ownership="none">
8500 <doc xml:space="preserve"
8501 filename="gsk/gskrendernodeimpl.c"
8502 line="845">the point at which the linear gradient will finish</doc>
8503 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
8504 </parameter>
8505 <parameter name="color_stops" transfer-ownership="none">
8506 <doc xml:space="preserve"
8507 filename="gsk/gskrendernodeimpl.c"
8508 line="846">a pointer to an array of
8509`GskColorStop` defining the gradient. The offsets of all color stops
8510 must be increasing. The first stop's offset must be >= 0 and the last
8511 stop's offset must be <= 1.</doc>
8512 <array length="4" zero-terminated="0" c:type="const GskColorStop*">
8513 <type name="ColorStop" c:type="GskColorStop"/>
8514 </array>
8515 </parameter>
8516 <parameter name="n_color_stops" transfer-ownership="none">
8517 <doc xml:space="preserve"
8518 filename="gsk/gskrendernodeimpl.c"
8519 line="850">the number of elements in @color_stops</doc>
8520 <type name="gsize" c:type="gsize"/>
8521 </parameter>
8522 </parameters>
8523 </constructor>
8524 </class>
8525 <class name="RepeatingRadialGradientNode"
8526 c:symbol-prefix="repeating_radial_gradient_node"
8527 c:type="GskRepeatingRadialGradientNode"
8528 parent="RenderNode"
8529 glib:type-name="GskRepeatingRadialGradientNode"
8530 glib:get-type="gsk_repeating_radial_gradient_node_get_type"
8531 glib:fundamental="1">
8532 <doc xml:space="preserve"
8533 filename="gsk/gskrendernodeimpl.c"
8534 line="1092">A render node for a repeating radial gradient.</doc>
8535 <constructor name="new"
8536 c:identifier="gsk_repeating_radial_gradient_node_new">
8537 <doc xml:space="preserve"
8538 filename="gsk/gskrendernodeimpl.c"
8539 line="1398">Creates a `GskRenderNode` that draws a repeating radial gradient.
8540
8541The radial gradient starts around @center. The size of the gradient
8542is dictated by @hradius in horizontal orientation and by @vradius
8543in vertical orientation.</doc>
8544 <source-position filename="gsk/gskrendernode.h" line="327"/>
8545 <return-value transfer-ownership="full">
8546 <doc xml:space="preserve"
8547 filename="gsk/gskrendernodeimpl.c"
8548 line="1418">A new `GskRenderNode`</doc>
8549 <type name="RepeatingRadialGradientNode" c:type="GskRenderNode*"/>
8550 </return-value>
8551 <parameters>
8552 <parameter name="bounds" transfer-ownership="none">
8553 <doc xml:space="preserve"
8554 filename="gsk/gskrendernodeimpl.c"
8555 line="1400">the bounds of the node</doc>
8556 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
8557 </parameter>
8558 <parameter name="center" transfer-ownership="none">
8559 <doc xml:space="preserve"
8560 filename="gsk/gskrendernodeimpl.c"
8561 line="1401">the center of the gradient</doc>
8562 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
8563 </parameter>
8564 <parameter name="hradius" transfer-ownership="none">
8565 <doc xml:space="preserve"
8566 filename="gsk/gskrendernodeimpl.c"
8567 line="1402">the horizontal radius</doc>
8568 <type name="gfloat" c:type="float"/>
8569 </parameter>
8570 <parameter name="vradius" transfer-ownership="none">
8571 <doc xml:space="preserve"
8572 filename="gsk/gskrendernodeimpl.c"
8573 line="1403">the vertical radius</doc>
8574 <type name="gfloat" c:type="float"/>
8575 </parameter>
8576 <parameter name="start" transfer-ownership="none">
8577 <doc xml:space="preserve"
8578 filename="gsk/gskrendernodeimpl.c"
8579 line="1404">a percentage >= 0 that defines the start of the gradient around @center</doc>
8580 <type name="gfloat" c:type="float"/>
8581 </parameter>
8582 <parameter name="end" transfer-ownership="none">
8583 <doc xml:space="preserve"
8584 filename="gsk/gskrendernodeimpl.c"
8585 line="1405">a percentage >= 0 that defines the end of the gradient around @center</doc>
8586 <type name="gfloat" c:type="float"/>
8587 </parameter>
8588 <parameter name="color_stops" transfer-ownership="none">
8589 <doc xml:space="preserve"
8590 filename="gsk/gskrendernodeimpl.c"
8591 line="1406">a pointer to an array of
8592 `GskColorStop` defining the gradient. The offsets of all color stops
8593 must be increasing. The first stop's offset must be >= 0 and the last
8594 stop's offset must be <= 1.</doc>
8595 <array length="7" zero-terminated="0" c:type="const GskColorStop*">
8596 <type name="ColorStop" c:type="GskColorStop"/>
8597 </array>
8598 </parameter>
8599 <parameter name="n_color_stops" transfer-ownership="none">
8600 <doc xml:space="preserve"
8601 filename="gsk/gskrendernodeimpl.c"
8602 line="1410">the number of elements in @color_stops</doc>
8603 <type name="gsize" c:type="gsize"/>
8604 </parameter>
8605 </parameters>
8606 </constructor>
8607 </class>
8608 <class name="RoundedClipNode"
8609 c:symbol-prefix="rounded_clip_node"
8610 c:type="GskRoundedClipNode"
8611 parent="RenderNode"
8612 glib:type-name="GskRoundedClipNode"
8613 glib:get-type="gsk_rounded_clip_node_get_type"
8614 glib:fundamental="1">
8615 <doc xml:space="preserve"
8616 filename="gsk/gskrendernodeimpl.c"
8617 line="5714">A render node applying a rounded rectangle clip to its single child.</doc>
8618 <constructor name="new" c:identifier="gsk_rounded_clip_node_new">
8619 <doc xml:space="preserve"
8620 filename="gsk/gskrendernodeimpl.c"
8621 line="5828">Creates a `GskRenderNode` that will clip the @child to the area
8622given by @clip.</doc>
8623 <source-position filename="gsk/gskrendernode.h" line="471"/>
8624 <return-value transfer-ownership="full">
8625 <doc xml:space="preserve"
8626 filename="gsk/gskrendernodeimpl.c"
8627 line="5836">A new `GskRenderNode`</doc>
8628 <type name="RoundedClipNode" c:type="GskRenderNode*"/>
8629 </return-value>
8630 <parameters>
8631 <parameter name="child" transfer-ownership="none">
8632 <doc xml:space="preserve"
8633 filename="gsk/gskrendernodeimpl.c"
8634 line="5830">The node to draw</doc>
8635 <type name="RenderNode" c:type="GskRenderNode*"/>
8636 </parameter>
8637 <parameter name="clip" transfer-ownership="none">
8638 <doc xml:space="preserve"
8639 filename="gsk/gskrendernodeimpl.c"
8640 line="5831">The clip to apply</doc>
8641 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
8642 </parameter>
8643 </parameters>
8644 </constructor>
8645 <method name="get_child" c:identifier="gsk_rounded_clip_node_get_child">
8646 <doc xml:space="preserve"
8647 filename="gsk/gskrendernodeimpl.c"
8648 line="5862">Gets the child node that is getting clipped by the given @node.</doc>
8649 <source-position filename="gsk/gskrendernode.h" line="474"/>
8650 <return-value transfer-ownership="none">
8651 <doc xml:space="preserve"
8652 filename="gsk/gskrendernodeimpl.c"
8653 line="5868">The child that is getting clipped</doc>
8654 <type name="RenderNode" c:type="GskRenderNode*"/>
8655 </return-value>
8656 <parameters>
8657 <instance-parameter name="node" transfer-ownership="none">
8658 <doc xml:space="preserve"
8659 filename="gsk/gskrendernodeimpl.c"
8660 line="5864">a rounded clip `GskRenderNode`</doc>
8661 <type name="RoundedClipNode" c:type="const GskRenderNode*"/>
8662 </instance-parameter>
8663 </parameters>
8664 </method>
8665 <method name="get_clip" c:identifier="gsk_rounded_clip_node_get_clip">
8666 <doc xml:space="preserve"
8667 filename="gsk/gskrendernodeimpl.c"
8668 line="5878">Retrieves the rounded rectangle used to clip the contents of the @node.</doc>
8669 <source-position filename="gsk/gskrendernode.h" line="476"/>
8670 <return-value transfer-ownership="none">
8671 <doc xml:space="preserve"
8672 filename="gsk/gskrendernodeimpl.c"
8673 line="5884">a rounded rectangle</doc>
8674 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
8675 </return-value>
8676 <parameters>
8677 <instance-parameter name="node" transfer-ownership="none">
8678 <doc xml:space="preserve"
8679 filename="gsk/gskrendernodeimpl.c"
8680 line="5880">a rounded clip `GskRenderNode`</doc>
8681 <type name="RoundedClipNode" c:type="const GskRenderNode*"/>
8682 </instance-parameter>
8683 </parameters>
8684 </method>
8685 </class>
8686 <record name="RoundedRect" c:type="GskRoundedRect">
8687 <doc xml:space="preserve"
8688 filename="gsk/gskroundedrect.c"
8689 line="19">A rectangular region with rounded corners.
8690
8691Application code should normalize rectangles using
8692[method@Gsk.RoundedRect.normalize]; this function will ensure that
8693the bounds of the rectangle are normalized and ensure that the corner
8694values are positive and the corners do not overlap.
8695
8696All functions taking a `GskRoundedRect` as an argument will internally
8697operate on a normalized copy; all functions returning a `GskRoundedRect`
8698will always return a normalized one.
8699
8700The algorithm used for normalizing corner sizes is described in
8701[the CSS specification](https://drafts.csswg.org/css-backgrounds-3/#border-radius).</doc>
8702 <source-position filename="gsk/gskroundedrect.h" line="53"/>
8703 <field name="bounds" writable="1">
8704 <doc xml:space="preserve"
8705 filename="gsk/gskroundedrect.c"
8706 line="21">the bounds of the rectangle</doc>
8707 <type name="Graphene.Rect" c:type="graphene_rect_t"/>
8708 </field>
8709 <field name="corner" writable="1">
8710 <doc xml:space="preserve"
8711 filename="gsk/gskroundedrect.c"
8712 line="22">the size of the 4 rounded corners</doc>
8713 <array zero-terminated="0" fixed-size="4">
8714 <type name="Graphene.Size" c:type="graphene_size_t"/>
8715 </array>
8716 </field>
8717 <method name="contains_point"
8718 c:identifier="gsk_rounded_rect_contains_point">
8719 <doc xml:space="preserve"
8720 filename="gsk/gskroundedrect.c"
8721 line="483">Checks if the given point is inside the rounded rectangle.</doc>
8722 <source-position filename="gsk/gskroundedrect.h" line="87"/>
8723 <return-value transfer-ownership="none">
8724 <doc xml:space="preserve"
8725 filename="gsk/gskroundedrect.c"
8726 line="490">true if the point is inside the rounded rectangle</doc>
8727 <type name="gboolean" c:type="gboolean"/>
8728 </return-value>
8729 <parameters>
8730 <instance-parameter name="self" transfer-ownership="none">
8731 <doc xml:space="preserve"
8732 filename="gsk/gskroundedrect.c"
8733 line="485">a rounded rectangle</doc>
8734 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
8735 </instance-parameter>
8736 <parameter name="point" transfer-ownership="none">
8737 <doc xml:space="preserve"
8738 filename="gsk/gskroundedrect.c"
8739 line="486">the point to check</doc>
8740 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
8741 </parameter>
8742 </parameters>
8743 </method>
8744 <method name="contains_rect"
8745 c:identifier="gsk_rounded_rect_contains_rect">
8746 <doc xml:space="preserve"
8747 filename="gsk/gskroundedrect.c"
8748 line="499">Checks if the given rectangle is contained inside the rounded rectangle.</doc>
8749 <source-position filename="gsk/gskroundedrect.h" line="90"/>
8750 <return-value transfer-ownership="none">
8751 <doc xml:space="preserve"
8752 filename="gsk/gskroundedrect.c"
8753 line="506">true if the @rect is fully contained inside the rounded rectangle</doc>
8754 <type name="gboolean" c:type="gboolean"/>
8755 </return-value>
8756 <parameters>
8757 <instance-parameter name="self" transfer-ownership="none">
8758 <doc xml:space="preserve"
8759 filename="gsk/gskroundedrect.c"
8760 line="501">a rounded rectangle</doc>
8761 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
8762 </instance-parameter>
8763 <parameter name="rect" transfer-ownership="none">
8764 <doc xml:space="preserve"
8765 filename="gsk/gskroundedrect.c"
8766 line="502">the rectangle to check</doc>
8767 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
8768 </parameter>
8769 </parameters>
8770 </method>
8771 <method name="init" c:identifier="gsk_rounded_rect_init">
8772 <doc xml:space="preserve"
8773 filename="gsk/gskroundedrect.c"
8774 line="95">Initializes a rounded rectangle with the given values.
8775
8776This function will implicitly normalize the rounded rectangle
8777before returning.</doc>
8778 <source-position filename="gsk/gskroundedrect.h" line="56"/>
8779 <return-value transfer-ownership="none">
8780 <doc xml:space="preserve"
8781 filename="gsk/gskroundedrect.c"
8782 line="109">the initialized rounded rectangle</doc>
8783 <type name="RoundedRect" c:type="GskRoundedRect*"/>
8784 </return-value>
8785 <parameters>
8786 <instance-parameter name="self" transfer-ownership="none">
8787 <doc xml:space="preserve"
8788 filename="gsk/gskroundedrect.c"
8789 line="97">the rounded rectangle to initialize</doc>
8790 <type name="RoundedRect" c:type="GskRoundedRect*"/>
8791 </instance-parameter>
8792 <parameter name="bounds" transfer-ownership="none">
8793 <doc xml:space="preserve"
8794 filename="gsk/gskroundedrect.c"
8795 line="98">a `graphene_rect_t` describing the bounds</doc>
8796 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
8797 </parameter>
8798 <parameter name="top_left" transfer-ownership="none">
8799 <doc xml:space="preserve"
8800 filename="gsk/gskroundedrect.c"
8801 line="99">the rounding radius of the top left corner</doc>
8802 <type name="Graphene.Size" c:type="const graphene_size_t*"/>
8803 </parameter>
8804 <parameter name="top_right" transfer-ownership="none">
8805 <doc xml:space="preserve"
8806 filename="gsk/gskroundedrect.c"
8807 line="100">the rounding radius of the top right corner</doc>
8808 <type name="Graphene.Size" c:type="const graphene_size_t*"/>
8809 </parameter>
8810 <parameter name="bottom_right" transfer-ownership="none">
8811 <doc xml:space="preserve"
8812 filename="gsk/gskroundedrect.c"
8813 line="101">the rounding radius of the bottom right corner</doc>
8814 <type name="Graphene.Size" c:type="const graphene_size_t*"/>
8815 </parameter>
8816 <parameter name="bottom_left" transfer-ownership="none">
8817 <doc xml:space="preserve"
8818 filename="gsk/gskroundedrect.c"
8819 line="102">the rounding radius of the bottom left corner</doc>
8820 <type name="Graphene.Size" c:type="const graphene_size_t*"/>
8821 </parameter>
8822 </parameters>
8823 </method>
8824 <method name="init_copy" c:identifier="gsk_rounded_rect_init_copy">
8825 <doc xml:space="preserve"
8826 filename="gsk/gskroundedrect.c"
8827 line="130">Initializes a rounded rectangle with a copy.
8828
8829This function will not normalize the rounded rectangle,
8830so make sure the source is normalized.</doc>
8831 <source-position filename="gsk/gskroundedrect.h" line="63"/>
8832 <return-value transfer-ownership="none">
8833 <doc xml:space="preserve"
8834 filename="gsk/gskroundedrect.c"
8835 line="140">the initialized rounded rectangle</doc>
8836 <type name="RoundedRect" c:type="GskRoundedRect*"/>
8837 </return-value>
8838 <parameters>
8839 <instance-parameter name="self" transfer-ownership="none">
8840 <doc xml:space="preserve"
8841 filename="gsk/gskroundedrect.c"
8842 line="132">the rounded rectangle to initialize</doc>
8843 <type name="RoundedRect" c:type="GskRoundedRect*"/>
8844 </instance-parameter>
8845 <parameter name="src" transfer-ownership="none">
8846 <doc xml:space="preserve"
8847 filename="gsk/gskroundedrect.c"
8848 line="133">another rounded rectangle</doc>
8849 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
8850 </parameter>
8851 </parameters>
8852 </method>
8853 <method name="init_from_rect"
8854 c:identifier="gsk_rounded_rect_init_from_rect">
8855 <doc xml:space="preserve"
8856 filename="gsk/gskroundedrect.c"
8857 line="151">Initializes a rounded rectangle to the given bounds
8858and sets the radius of all four corners equally.</doc>
8859 <source-position filename="gsk/gskroundedrect.h" line="66"/>
8860 <return-value transfer-ownership="none">
8861 <doc xml:space="preserve"
8862 filename="gsk/gskroundedrect.c"
8863 line="160">the initialized rounded rectangle</doc>
8864 <type name="RoundedRect" c:type="GskRoundedRect*"/>
8865 </return-value>
8866 <parameters>
8867 <instance-parameter name="self" transfer-ownership="none">
8868 <doc xml:space="preserve"
8869 filename="gsk/gskroundedrect.c"
8870 line="153">the rounded rectangle to initialize</doc>
8871 <type name="RoundedRect" c:type="GskRoundedRect*"/>
8872 </instance-parameter>
8873 <parameter name="bounds" transfer-ownership="none">
8874 <doc xml:space="preserve"
8875 filename="gsk/gskroundedrect.c"
8876 line="154">a `graphene_rect_t`</doc>
8877 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
8878 </parameter>
8879 <parameter name="radius" transfer-ownership="none">
8880 <doc xml:space="preserve"
8881 filename="gsk/gskroundedrect.c"
8882 line="155">the border radius</doc>
8883 <type name="gfloat" c:type="float"/>
8884 </parameter>
8885 </parameters>
8886 </method>
8887 <method name="intersects_rect"
8888 c:identifier="gsk_rounded_rect_intersects_rect">
8889 <doc xml:space="preserve"
8890 filename="gsk/gskroundedrect.c"
8891 line="556">Checks if part a rectangle is contained
8892inside the rounded rectangle.</doc>
8893 <source-position filename="gsk/gskroundedrect.h" line="93"/>
8894 <return-value transfer-ownership="none">
8895 <doc xml:space="preserve"
8896 filename="gsk/gskroundedrect.c"
8897 line="564">true if the @rect intersects with the rounded rectangle</doc>
8898 <type name="gboolean" c:type="gboolean"/>
8899 </return-value>
8900 <parameters>
8901 <instance-parameter name="self" transfer-ownership="none">
8902 <doc xml:space="preserve"
8903 filename="gsk/gskroundedrect.c"
8904 line="558">a rounded rectangle</doc>
8905 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
8906 </instance-parameter>
8907 <parameter name="rect" transfer-ownership="none">
8908 <doc xml:space="preserve"
8909 filename="gsk/gskroundedrect.c"
8910 line="559">the rectangle to check</doc>
8911 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
8912 </parameter>
8913 </parameters>
8914 </method>
8915 <method name="is_rectilinear"
8916 c:identifier="gsk_rounded_rect_is_rectilinear">
8917 <doc xml:space="preserve"
8918 filename="gsk/gskroundedrect.c"
8919 line="395">Checks if all corners of a rounded rectangle are right angles
8920and the rectangle covers all of its bounds.
8921
8922This information can be used to decide if [ctor@Gsk.ClipNode.new]
8923or [ctor@Gsk.RoundedClipNode.new] should be called.</doc>
8924 <source-position filename="gsk/gskroundedrect.h" line="85"/>
8925 <return-value transfer-ownership="none">
8926 <doc xml:space="preserve"
8927 filename="gsk/gskroundedrect.c"
8928 line="405">true if the rounded rectangle is rectilinear</doc>
8929 <type name="gboolean" c:type="gboolean"/>
8930 </return-value>
8931 <parameters>
8932 <instance-parameter name="self" transfer-ownership="none">
8933 <doc xml:space="preserve"
8934 filename="gsk/gskroundedrect.c"
8935 line="397">the rounded rectangle to check</doc>
8936 <type name="RoundedRect" c:type="const GskRoundedRect*"/>
8937 </instance-parameter>
8938 </parameters>
8939 </method>
8940 <method name="normalize" c:identifier="gsk_rounded_rect_normalize">
8941 <doc xml:space="preserve"
8942 filename="gsk/gskroundedrect.c"
8943 line="172">Normalizes a rounded rectangle.
8944
8945This function will ensure that the bounds of the rounded rectangle
8946are normalized and ensure that the corner values are positive
8947and the corners do not overlap.</doc>
8948 <source-position filename="gsk/gskroundedrect.h" line="71"/>
8949 <return-value transfer-ownership="none">
8950 <doc xml:space="preserve"
8951 filename="gsk/gskroundedrect.c"
8952 line="182">the normalized rounded rectangle</doc>
8953 <type name="RoundedRect" c:type="GskRoundedRect*"/>
8954 </return-value>
8955 <parameters>
8956 <instance-parameter name="self" transfer-ownership="none">
8957 <doc xml:space="preserve"
8958 filename="gsk/gskroundedrect.c"
8959 line="174">a rounded rectangle</doc>
8960 <type name="RoundedRect" c:type="GskRoundedRect*"/>
8961 </instance-parameter>
8962 </parameters>
8963 </method>
8964 <method name="offset" c:identifier="gsk_rounded_rect_offset">
8965 <doc xml:space="preserve"
8966 filename="gsk/gskroundedrect.c"
8967 line="192">Offsets the rounded rectangle's origin by @dx and @dy.
8968
8969The size and corners of the rounded rectangle are unchanged.</doc>
8970 <source-position filename="gsk/gskroundedrect.h" line="74"/>
8971 <return-value transfer-ownership="none">
8972 <doc xml:space="preserve"
8973 filename="gsk/gskroundedrect.c"
8974 line="202">the offset rounded rectangle</doc>
8975 <type name="RoundedRect" c:type="GskRoundedRect*"/>
8976 </return-value>
8977 <parameters>
8978 <instance-parameter name="self" transfer-ownership="none">
8979 <doc xml:space="preserve"
8980 filename="gsk/gskroundedrect.c"
8981 line="194">a rounded rectangle</doc>
8982 <type name="RoundedRect" c:type="GskRoundedRect*"/>
8983 </instance-parameter>
8984 <parameter name="dx" transfer-ownership="none">
8985 <doc xml:space="preserve"
8986 filename="gsk/gskroundedrect.c"
8987 line="195">the horizontal offset</doc>
8988 <type name="gfloat" c:type="float"/>
8989 </parameter>
8990 <parameter name="dy" transfer-ownership="none">
8991 <doc xml:space="preserve"
8992 filename="gsk/gskroundedrect.c"
8993 line="196">the vertical offset</doc>
8994 <type name="gfloat" c:type="float"/>
8995 </parameter>
8996 </parameters>
8997 </method>
8998 <method name="shrink" c:identifier="gsk_rounded_rect_shrink">
8999 <doc xml:space="preserve"
9000 filename="gsk/gskroundedrect.c"
9001 line="240">Shrinks (or grows) a rounded rectangle by moving the 4 sides
9002according to the offsets given.
9003
9004The corner radii will be changed in a way that tries to keep
9005the center of the corner circle intact. This emulates CSS behavior.
9006
9007This function also works for growing rounded rectangles
9008if you pass negative values for the @top, @right, @bottom or @left.</doc>
9009 <source-position filename="gsk/gskroundedrect.h" line="78"/>
9010 <return-value transfer-ownership="none">
9011 <doc xml:space="preserve"
9012 filename="gsk/gskroundedrect.c"
9013 line="257">the resized rounded rectangle</doc>
9014 <type name="RoundedRect" c:type="GskRoundedRect*"/>
9015 </return-value>
9016 <parameters>
9017 <instance-parameter name="self" transfer-ownership="none">
9018 <doc xml:space="preserve"
9019 filename="gsk/gskroundedrect.c"
9020 line="242">the rounded rectangle to shrink or grow</doc>
9021 <type name="RoundedRect" c:type="GskRoundedRect*"/>
9022 </instance-parameter>
9023 <parameter name="top" transfer-ownership="none">
9024 <doc xml:space="preserve"
9025 filename="gsk/gskroundedrect.c"
9026 line="243">how far to move the top side downwards</doc>
9027 <type name="gfloat" c:type="float"/>
9028 </parameter>
9029 <parameter name="right" transfer-ownership="none">
9030 <doc xml:space="preserve"
9031 filename="gsk/gskroundedrect.c"
9032 line="244">how far to move the right side to the left</doc>
9033 <type name="gfloat" c:type="float"/>
9034 </parameter>
9035 <parameter name="bottom" transfer-ownership="none">
9036 <doc xml:space="preserve"
9037 filename="gsk/gskroundedrect.c"
9038 line="245">how far to move the bottom side upwards</doc>
9039 <type name="gfloat" c:type="float"/>
9040 </parameter>
9041 <parameter name="left" transfer-ownership="none">
9042 <doc xml:space="preserve"
9043 filename="gsk/gskroundedrect.c"
9044 line="246">how far to move the left side to the right</doc>
9045 <type name="gfloat" c:type="float"/>
9046 </parameter>
9047 </parameters>
9048 </method>
9049 </record>
9050 <enumeration name="ScalingFilter"
9051 glib:type-name="GskScalingFilter"
9052 glib:get-type="gsk_scaling_filter_get_type"
9053 c:type="GskScalingFilter">
9054 <doc xml:space="preserve"
9055 filename="gsk/gskenums.h"
9056 line="139">The filters used when scaling texture data.
9057
9058The actual implementation of each filter is deferred to the
9059rendering pipeline.</doc>
9060 <member name="linear"
9061 value="0"
9062 c:identifier="GSK_SCALING_FILTER_LINEAR"
9063 glib:nick="linear"
9064 glib:name="GSK_SCALING_FILTER_LINEAR">
9065 <doc xml:space="preserve"
9066 filename="gsk/gskenums.h"
9067 line="141">linear interpolation filter</doc>
9068 </member>
9069 <member name="nearest"
9070 value="1"
9071 c:identifier="GSK_SCALING_FILTER_NEAREST"
9072 glib:nick="nearest"
9073 glib:name="GSK_SCALING_FILTER_NEAREST">
9074 <doc xml:space="preserve"
9075 filename="gsk/gskenums.h"
9076 line="142">nearest neighbor interpolation filter</doc>
9077 </member>
9078 <member name="trilinear"
9079 value="2"
9080 c:identifier="GSK_SCALING_FILTER_TRILINEAR"
9081 glib:nick="trilinear"
9082 glib:name="GSK_SCALING_FILTER_TRILINEAR">
9083 <doc xml:space="preserve"
9084 filename="gsk/gskenums.h"
9085 line="143">linear interpolation along each axis,
9086 plus mipmap generation, with linear interpolation along the mipmap
9087 levels</doc>
9088 </member>
9089 </enumeration>
9090 <enumeration name="SerializationError"
9091 glib:type-name="GskSerializationError"
9092 glib:get-type="gsk_serialization_error_get_type"
9093 c:type="GskSerializationError"
9094 glib:error-domain="gsk-serialization-error-quark">
9095 <doc xml:space="preserve"
9096 filename="gsk/gskenums.h"
9097 line="381">Errors that can happen during (de)serialization.</doc>
9098 <member name="unsupported_format"
9099 value="0"
9100 c:identifier="GSK_SERIALIZATION_UNSUPPORTED_FORMAT"
9101 glib:nick="unsupported-format"
9102 glib:name="GSK_SERIALIZATION_UNSUPPORTED_FORMAT">
9103 <doc xml:space="preserve"
9104 filename="gsk/gskenums.h"
9105 line="383">The format can not be identified</doc>
9106 </member>
9107 <member name="unsupported_version"
9108 value="1"
9109 c:identifier="GSK_SERIALIZATION_UNSUPPORTED_VERSION"
9110 glib:nick="unsupported-version"
9111 glib:name="GSK_SERIALIZATION_UNSUPPORTED_VERSION">
9112 <doc xml:space="preserve"
9113 filename="gsk/gskenums.h"
9114 line="384">The version of the data is not
9115 understood</doc>
9116 </member>
9117 <member name="invalid_data"
9118 value="2"
9119 c:identifier="GSK_SERIALIZATION_INVALID_DATA"
9120 glib:nick="invalid-data"
9121 glib:name="GSK_SERIALIZATION_INVALID_DATA">
9122 <doc xml:space="preserve"
9123 filename="gsk/gskenums.h"
9124 line="386">The given data may not exist in
9125 a proper serialization</doc>
9126 </member>
9127 <function name="quark" c:identifier="gsk_serialization_error_quark">
9128 <doc xml:space="preserve"
9129 filename="gsk/gskrendernode.c"
9130 line="53">Registers an error quark for [class@Gsk.RenderNode] errors.</doc>
9131 <return-value transfer-ownership="none">
9132 <doc xml:space="preserve"
9133 filename="gsk/gskrendernode.c"
9134 line="58">the error quark</doc>
9135 <type name="GLib.Quark" c:type="GQuark"/>
9136 </return-value>
9137 </function>
9138 </enumeration>
9139 <record name="ShaderArgsBuilder"
9140 c:type="GskShaderArgsBuilder"
9141 opaque="1"
9142 deprecated="1"
9143 deprecated-version="4.16"
9144 glib:type-name="GskShaderArgsBuilder"
9145 glib:get-type="gsk_shader_args_builder_get_type"
9146 c:symbol-prefix="shader_args_builder">
9147 <doc xml:space="preserve"
9148 filename="gsk/gskglshader.h"
9149 line="36">Builds the uniforms data for a `GskGLShader`.</doc>
9150 <source-position filename="gsk/gskglshader.h" line="44"/>
9151 <constructor name="new"
9152 c:identifier="gsk_shader_args_builder_new"
9153 deprecated="1"
9154 deprecated-version="4.16">
9155 <doc xml:space="preserve"
9156 filename="gsk/gskglshader.c"
9157 line="1189">Allocates a builder that can be used to construct a new uniform data
9158chunk.</doc>
9159 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9160 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9161 for OpenGL rendering.</doc-deprecated>
9162 <source-position filename="gsk/gskglshader.h" line="128"/>
9163 <return-value transfer-ownership="full">
9164 <doc xml:space="preserve"
9165 filename="gsk/gskglshader.c"
9166 line="1197">The newly allocated builder, free with
9167 [method@Gsk.ShaderArgsBuilder.unref]</doc>
9168 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9169 </return-value>
9170 <parameters>
9171 <parameter name="shader" transfer-ownership="none">
9172 <doc xml:space="preserve"
9173 filename="gsk/gskglshader.c"
9174 line="1191">a `GskGLShader`</doc>
9175 <type name="GLShader" c:type="GskGLShader*"/>
9176 </parameter>
9177 <parameter name="initial_values"
9178 transfer-ownership="none"
9179 nullable="1"
9180 allow-none="1">
9181 <doc xml:space="preserve"
9182 filename="gsk/gskglshader.c"
9183 line="1192">optional `GBytes` with initial values</doc>
9184 <type name="GLib.Bytes" c:type="GBytes*"/>
9185 </parameter>
9186 </parameters>
9187 </constructor>
9188 <method name="free_to_args"
9189 c:identifier="gsk_shader_args_builder_free_to_args"
9190 introspectable="0"
9191 deprecated="1"
9192 deprecated-version="4.16">
9193 <doc xml:space="preserve"
9194 filename="gsk/gskglshader.c"
9195 line="1255">Creates a new `GBytes` args from the current state of the
9196given @builder, and frees the @builder instance.
9197
9198Any uniforms of the shader that have not been explicitly set
9199on the @builder are zero-initialized.</doc>
9200 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9201 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9202 for OpenGL rendering.</doc-deprecated>
9203 <source-position filename="gsk/gskglshader.h" line="133"/>
9204 <return-value transfer-ownership="full">
9205 <doc xml:space="preserve"
9206 filename="gsk/gskglshader.c"
9207 line="1265">the newly allocated buffer with
9208 all the args added to @builder</doc>
9209 <type name="GLib.Bytes" c:type="GBytes*"/>
9210 </return-value>
9211 <parameters>
9212 <instance-parameter name="builder" transfer-ownership="none">
9213 <doc xml:space="preserve"
9214 filename="gsk/gskglshader.c"
9215 line="1257">a `GskShaderArgsBuilder`</doc>
9216 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9217 </instance-parameter>
9218 </parameters>
9219 </method>
9220 <method name="ref"
9221 c:identifier="gsk_shader_args_builder_ref"
9222 deprecated="1"
9223 deprecated-version="4.16">
9224 <doc xml:space="preserve"
9225 filename="gsk/gskglshader.c"
9226 line="1315">Increases the reference count of a `GskShaderArgsBuilder` by one.</doc>
9227 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9228 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9229 for OpenGL rendering.</doc-deprecated>
9230 <source-position filename="gsk/gskglshader.h" line="135"/>
9231 <return-value transfer-ownership="full">
9232 <doc xml:space="preserve"
9233 filename="gsk/gskglshader.c"
9234 line="1321">the passed in `GskShaderArgsBuilder`</doc>
9235 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9236 </return-value>
9237 <parameters>
9238 <instance-parameter name="builder" transfer-ownership="none">
9239 <doc xml:space="preserve"
9240 filename="gsk/gskglshader.c"
9241 line="1317">a `GskShaderArgsBuilder`</doc>
9242 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9243 </instance-parameter>
9244 </parameters>
9245 </method>
9246 <method name="set_bool"
9247 c:identifier="gsk_shader_args_builder_set_bool"
9248 deprecated="1"
9249 deprecated-version="4.16">
9250 <doc xml:space="preserve"
9251 filename="gsk/gskglshader.c"
9252 line="1428">Sets the value of the uniform @idx.
9253
9254The uniform must be of bool type.</doc>
9255 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9256 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9257 for OpenGL rendering.</doc-deprecated>
9258 <source-position filename="gsk/gskglshader.h" line="152"/>
9259 <return-value transfer-ownership="none">
9260 <type name="none" c:type="void"/>
9261 </return-value>
9262 <parameters>
9263 <instance-parameter name="builder" transfer-ownership="none">
9264 <doc xml:space="preserve"
9265 filename="gsk/gskglshader.c"
9266 line="1430">a `GskShaderArgsBuilder`</doc>
9267 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9268 </instance-parameter>
9269 <parameter name="idx" transfer-ownership="none">
9270 <doc xml:space="preserve"
9271 filename="gsk/gskglshader.c"
9272 line="1431">index of the uniform</doc>
9273 <type name="gint" c:type="int"/>
9274 </parameter>
9275 <parameter name="value" transfer-ownership="none">
9276 <doc xml:space="preserve"
9277 filename="gsk/gskglshader.c"
9278 line="1432">value to set the uniform to</doc>
9279 <type name="gboolean" c:type="gboolean"/>
9280 </parameter>
9281 </parameters>
9282 </method>
9283 <method name="set_float"
9284 c:identifier="gsk_shader_args_builder_set_float">
9285 <doc xml:space="preserve"
9286 filename="gsk/gskglshader.c"
9287 line="1336">Sets the value of the uniform @idx.
9288
9289The uniform must be of float type.</doc>
9290 <source-position filename="gsk/gskglshader.h" line="140"/>
9291 <return-value transfer-ownership="none">
9292 <type name="none" c:type="void"/>
9293 </return-value>
9294 <parameters>
9295 <instance-parameter name="builder" transfer-ownership="none">
9296 <doc xml:space="preserve"
9297 filename="gsk/gskglshader.c"
9298 line="1338">a `GskShaderArgsBuilder`</doc>
9299 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9300 </instance-parameter>
9301 <parameter name="idx" transfer-ownership="none">
9302 <doc xml:space="preserve"
9303 filename="gsk/gskglshader.c"
9304 line="1339">index of the uniform</doc>
9305 <type name="gint" c:type="int"/>
9306 </parameter>
9307 <parameter name="value" transfer-ownership="none">
9308 <doc xml:space="preserve"
9309 filename="gsk/gskglshader.c"
9310 line="1340">value to set the uniform to</doc>
9311 <type name="gfloat" c:type="float"/>
9312 </parameter>
9313 </parameters>
9314 </method>
9315 <method name="set_int"
9316 c:identifier="gsk_shader_args_builder_set_int"
9317 deprecated="1"
9318 deprecated-version="4.16">
9319 <doc xml:space="preserve"
9320 filename="gsk/gskglshader.c"
9321 line="1364">Sets the value of the uniform @idx.
9322
9323The uniform must be of int type.</doc>
9324 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9325 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9326 for OpenGL rendering.</doc-deprecated>
9327 <source-position filename="gsk/gskglshader.h" line="144"/>
9328 <return-value transfer-ownership="none">
9329 <type name="none" c:type="void"/>
9330 </return-value>
9331 <parameters>
9332 <instance-parameter name="builder" transfer-ownership="none">
9333 <doc xml:space="preserve"
9334 filename="gsk/gskglshader.c"
9335 line="1366">a `GskShaderArgsBuilder`</doc>
9336 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9337 </instance-parameter>
9338 <parameter name="idx" transfer-ownership="none">
9339 <doc xml:space="preserve"
9340 filename="gsk/gskglshader.c"
9341 line="1367">index of the uniform</doc>
9342 <type name="gint" c:type="int"/>
9343 </parameter>
9344 <parameter name="value" transfer-ownership="none">
9345 <doc xml:space="preserve"
9346 filename="gsk/gskglshader.c"
9347 line="1368">value to set the uniform to</doc>
9348 <type name="gint32" c:type="gint32"/>
9349 </parameter>
9350 </parameters>
9351 </method>
9352 <method name="set_uint"
9353 c:identifier="gsk_shader_args_builder_set_uint"
9354 deprecated="1"
9355 deprecated-version="4.16">
9356 <doc xml:space="preserve"
9357 filename="gsk/gskglshader.c"
9358 line="1396">Sets the value of the uniform @idx.
9359
9360The uniform must be of uint type.</doc>
9361 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9362 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9363 for OpenGL rendering.</doc-deprecated>
9364 <source-position filename="gsk/gskglshader.h" line="148"/>
9365 <return-value transfer-ownership="none">
9366 <type name="none" c:type="void"/>
9367 </return-value>
9368 <parameters>
9369 <instance-parameter name="builder" transfer-ownership="none">
9370 <doc xml:space="preserve"
9371 filename="gsk/gskglshader.c"
9372 line="1398">a `GskShaderArgsBuilder`</doc>
9373 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9374 </instance-parameter>
9375 <parameter name="idx" transfer-ownership="none">
9376 <doc xml:space="preserve"
9377 filename="gsk/gskglshader.c"
9378 line="1399">index of the uniform</doc>
9379 <type name="gint" c:type="int"/>
9380 </parameter>
9381 <parameter name="value" transfer-ownership="none">
9382 <doc xml:space="preserve"
9383 filename="gsk/gskglshader.c"
9384 line="1400">value to set the uniform to</doc>
9385 <type name="guint32" c:type="guint32"/>
9386 </parameter>
9387 </parameters>
9388 </method>
9389 <method name="set_vec2"
9390 c:identifier="gsk_shader_args_builder_set_vec2"
9391 deprecated="1"
9392 deprecated-version="4.16">
9393 <doc xml:space="preserve"
9394 filename="gsk/gskglshader.c"
9395 line="1460">Sets the value of the uniform @idx.
9396
9397The uniform must be of vec2 type.</doc>
9398 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9399 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9400 for OpenGL rendering.</doc-deprecated>
9401 <source-position filename="gsk/gskglshader.h" line="156"/>
9402 <return-value transfer-ownership="none">
9403 <type name="none" c:type="void"/>
9404 </return-value>
9405 <parameters>
9406 <instance-parameter name="builder" transfer-ownership="none">
9407 <doc xml:space="preserve"
9408 filename="gsk/gskglshader.c"
9409 line="1462">A `GskShaderArgsBuilder`</doc>
9410 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9411 </instance-parameter>
9412 <parameter name="idx" transfer-ownership="none">
9413 <doc xml:space="preserve"
9414 filename="gsk/gskglshader.c"
9415 line="1463">index of the uniform</doc>
9416 <type name="gint" c:type="int"/>
9417 </parameter>
9418 <parameter name="value" transfer-ownership="none">
9419 <doc xml:space="preserve"
9420 filename="gsk/gskglshader.c"
9421 line="1464">value to set the uniform too</doc>
9422 <type name="Graphene.Vec2" c:type="const graphene_vec2_t*"/>
9423 </parameter>
9424 </parameters>
9425 </method>
9426 <method name="set_vec3"
9427 c:identifier="gsk_shader_args_builder_set_vec3"
9428 deprecated="1"
9429 deprecated-version="4.16">
9430 <doc xml:space="preserve"
9431 filename="gsk/gskglshader.c"
9432 line="1492">Sets the value of the uniform @idx.
9433
9434The uniform must be of vec3 type.</doc>
9435 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9436 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9437 for OpenGL rendering.</doc-deprecated>
9438 <source-position filename="gsk/gskglshader.h" line="160"/>
9439 <return-value transfer-ownership="none">
9440 <type name="none" c:type="void"/>
9441 </return-value>
9442 <parameters>
9443 <instance-parameter name="builder" transfer-ownership="none">
9444 <doc xml:space="preserve"
9445 filename="gsk/gskglshader.c"
9446 line="1494">a `GskShaderArgsBuilder`</doc>
9447 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9448 </instance-parameter>
9449 <parameter name="idx" transfer-ownership="none">
9450 <doc xml:space="preserve"
9451 filename="gsk/gskglshader.c"
9452 line="1495">index of the uniform</doc>
9453 <type name="gint" c:type="int"/>
9454 </parameter>
9455 <parameter name="value" transfer-ownership="none">
9456 <doc xml:space="preserve"
9457 filename="gsk/gskglshader.c"
9458 line="1496">value to set the uniform too</doc>
9459 <type name="Graphene.Vec3" c:type="const graphene_vec3_t*"/>
9460 </parameter>
9461 </parameters>
9462 </method>
9463 <method name="set_vec4"
9464 c:identifier="gsk_shader_args_builder_set_vec4"
9465 deprecated="1"
9466 deprecated-version="4.16">
9467 <doc xml:space="preserve"
9468 filename="gsk/gskglshader.c"
9469 line="1524">Sets the value of the uniform @idx.
9470
9471The uniform must be of vec4 type.</doc>
9472 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9473 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9474 for OpenGL rendering.</doc-deprecated>
9475 <source-position filename="gsk/gskglshader.h" line="164"/>
9476 <return-value transfer-ownership="none">
9477 <type name="none" c:type="void"/>
9478 </return-value>
9479 <parameters>
9480 <instance-parameter name="builder" transfer-ownership="none">
9481 <doc xml:space="preserve"
9482 filename="gsk/gskglshader.c"
9483 line="1526">a `GskShaderArgsBuilder`</doc>
9484 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9485 </instance-parameter>
9486 <parameter name="idx" transfer-ownership="none">
9487 <doc xml:space="preserve"
9488 filename="gsk/gskglshader.c"
9489 line="1527">index of the uniform</doc>
9490 <type name="gint" c:type="int"/>
9491 </parameter>
9492 <parameter name="value" transfer-ownership="none">
9493 <doc xml:space="preserve"
9494 filename="gsk/gskglshader.c"
9495 line="1528">value to set the uniform too</doc>
9496 <type name="Graphene.Vec4" c:type="const graphene_vec4_t*"/>
9497 </parameter>
9498 </parameters>
9499 </method>
9500 <method name="to_args"
9501 c:identifier="gsk_shader_args_builder_to_args"
9502 deprecated="1"
9503 deprecated-version="4.16">
9504 <doc xml:space="preserve"
9505 filename="gsk/gskglshader.c"
9506 line="1225">Creates a new `GBytes` args from the current state of the
9507given @builder.
9508
9509Any uniforms of the shader that have not been explicitly set on
9510the @builder are zero-initialized.
9511
9512The given `GskShaderArgsBuilder` is reset once this function returns;
9513you cannot call this function multiple times on the same @builder instance.
9514
9515This function is intended primarily for bindings. C code should use
9516[method@Gsk.ShaderArgsBuilder.free_to_args].</doc>
9517 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9518 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9519 for OpenGL rendering.</doc-deprecated>
9520 <source-position filename="gsk/gskglshader.h" line="131"/>
9521 <return-value transfer-ownership="full">
9522 <doc xml:space="preserve"
9523 filename="gsk/gskglshader.c"
9524 line="1241">the newly allocated buffer with
9525 all the args added to @builder</doc>
9526 <type name="GLib.Bytes" c:type="GBytes*"/>
9527 </return-value>
9528 <parameters>
9529 <instance-parameter name="builder" transfer-ownership="none">
9530 <doc xml:space="preserve"
9531 filename="gsk/gskglshader.c"
9532 line="1227">a `GskShaderArgsBuilder`</doc>
9533 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9534 </instance-parameter>
9535 </parameters>
9536 </method>
9537 <method name="unref"
9538 c:identifier="gsk_shader_args_builder_unref"
9539 deprecated="1"
9540 deprecated-version="4.16">
9541 <doc xml:space="preserve"
9542 filename="gsk/gskglshader.c"
9543 line="1287">Decreases the reference count of a `GskShaderArgBuilder` by one.
9544
9545If the resulting reference count is zero, frees the builder.</doc>
9546 <doc-deprecated xml:space="preserve">GTK's new Vulkan-focused rendering
9547 does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
9548 for OpenGL rendering.</doc-deprecated>
9549 <source-position filename="gsk/gskglshader.h" line="137"/>
9550 <return-value transfer-ownership="none">
9551 <type name="none" c:type="void"/>
9552 </return-value>
9553 <parameters>
9554 <instance-parameter name="builder" transfer-ownership="none">
9555 <doc xml:space="preserve"
9556 filename="gsk/gskglshader.c"
9557 line="1289">a `GskShaderArgsBuilder`</doc>
9558 <type name="ShaderArgsBuilder" c:type="GskShaderArgsBuilder*"/>
9559 </instance-parameter>
9560 </parameters>
9561 </method>
9562 </record>
9563 <record name="Shadow" c:type="GskShadow">
9564 <doc xml:space="preserve"
9565 filename="gsk/gskrendernode.h"
9566 line="54">The shadow parameters in a shadow node.</doc>
9567 <source-position filename="gsk/gskrendernode.h" line="69"/>
9568 <field name="color" writable="1">
9569 <doc xml:space="preserve"
9570 filename="gsk/gskrendernode.h"
9571 line="56">the color of the shadow</doc>
9572 <type name="Gdk.RGBA" c:type="GdkRGBA"/>
9573 </field>
9574 <field name="dx" writable="1">
9575 <doc xml:space="preserve"
9576 filename="gsk/gskrendernode.h"
9577 line="57">the horizontal offset of the shadow</doc>
9578 <type name="gfloat" c:type="float"/>
9579 </field>
9580 <field name="dy" writable="1">
9581 <doc xml:space="preserve"
9582 filename="gsk/gskrendernode.h"
9583 line="58">the vertical offset of the shadow</doc>
9584 <type name="gfloat" c:type="float"/>
9585 </field>
9586 <field name="radius" writable="1">
9587 <doc xml:space="preserve"
9588 filename="gsk/gskrendernode.h"
9589 line="59">the radius of the shadow</doc>
9590 <type name="gfloat" c:type="float"/>
9591 </field>
9592 </record>
9593 <class name="ShadowNode"
9594 c:symbol-prefix="shadow_node"
9595 c:type="GskShadowNode"
9596 parent="RenderNode"
9597 glib:type-name="GskShadowNode"
9598 glib:get-type="gsk_shadow_node_get_type"
9599 glib:fundamental="1">
9600 <doc xml:space="preserve"
9601 filename="gsk/gskrendernodeimpl.c"
9602 line="6315">A render node drawing one or more shadows behind its single child node.</doc>
9603 <constructor name="new" c:identifier="gsk_shadow_node_new">
9604 <doc xml:space="preserve"
9605 filename="gsk/gskrendernodeimpl.c"
9606 line="6485">Creates a `GskRenderNode` that will draw a @child with the given
9607@shadows below it.</doc>
9608 <source-position filename="gsk/gskrendernode.h" line="507"/>
9609 <return-value transfer-ownership="full">
9610 <doc xml:space="preserve"
9611 filename="gsk/gskrendernodeimpl.c"
9612 line="6494">A new `GskRenderNode`</doc>
9613 <type name="ShadowNode" c:type="GskRenderNode*"/>
9614 </return-value>
9615 <parameters>
9616 <parameter name="child" transfer-ownership="none">
9617 <doc xml:space="preserve"
9618 filename="gsk/gskrendernodeimpl.c"
9619 line="6487">The node to draw</doc>
9620 <type name="RenderNode" c:type="GskRenderNode*"/>
9621 </parameter>
9622 <parameter name="shadows" transfer-ownership="none">
9623 <doc xml:space="preserve"
9624 filename="gsk/gskrendernodeimpl.c"
9625 line="6488">The shadows to apply</doc>
9626 <array length="2" zero-terminated="0" c:type="const GskShadow*">
9627 <type name="Shadow" c:type="GskShadow"/>
9628 </array>
9629 </parameter>
9630 <parameter name="n_shadows" transfer-ownership="none">
9631 <doc xml:space="preserve"
9632 filename="gsk/gskrendernodeimpl.c"
9633 line="6489">number of entries in the @shadows array</doc>
9634 <type name="gsize" c:type="gsize"/>
9635 </parameter>
9636 </parameters>
9637 </constructor>
9638 <method name="get_child" c:identifier="gsk_shadow_node_get_child">
9639 <doc xml:space="preserve"
9640 filename="gsk/gskrendernodeimpl.c"
9641 line="6575">Retrieves the child `GskRenderNode` of the shadow @node.</doc>
9642 <source-position filename="gsk/gskrendernode.h" line="511"/>
9643 <return-value transfer-ownership="none">
9644 <doc xml:space="preserve"
9645 filename="gsk/gskrendernodeimpl.c"
9646 line="6581">the child render node</doc>
9647 <type name="RenderNode" c:type="GskRenderNode*"/>
9648 </return-value>
9649 <parameters>
9650 <instance-parameter name="node" transfer-ownership="none">
9651 <doc xml:space="preserve"
9652 filename="gsk/gskrendernodeimpl.c"
9653 line="6577">a shadow `GskRenderNode`</doc>
9654 <type name="ShadowNode" c:type="const GskRenderNode*"/>
9655 </instance-parameter>
9656 </parameters>
9657 </method>
9658 <method name="get_n_shadows"
9659 c:identifier="gsk_shadow_node_get_n_shadows">
9660 <doc xml:space="preserve"
9661 filename="gsk/gskrendernodeimpl.c"
9662 line="6648">Retrieves the number of shadows in the @node.</doc>
9663 <source-position filename="gsk/gskrendernode.h" line="516"/>
9664 <return-value transfer-ownership="none">
9665 <doc xml:space="preserve"
9666 filename="gsk/gskrendernodeimpl.c"
9667 line="6654">the number of shadows.</doc>
9668 <type name="gsize" c:type="gsize"/>
9669 </return-value>
9670 <parameters>
9671 <instance-parameter name="node" transfer-ownership="none">
9672 <doc xml:space="preserve"
9673 filename="gsk/gskrendernodeimpl.c"
9674 line="6650">a shadow `GskRenderNode`</doc>
9675 <type name="ShadowNode" c:type="const GskRenderNode*"/>
9676 </instance-parameter>
9677 </parameters>
9678 </method>
9679 <method name="get_shadow" c:identifier="gsk_shadow_node_get_shadow">
9680 <doc xml:space="preserve"
9681 filename="gsk/gskrendernodeimpl.c"
9682 line="6591">Retrieves the shadow data at the given index @i.</doc>
9683 <source-position filename="gsk/gskrendernode.h" line="513"/>
9684 <return-value transfer-ownership="none">
9685 <doc xml:space="preserve"
9686 filename="gsk/gskrendernodeimpl.c"
9687 line="6598">the shadow data</doc>
9688 <type name="Shadow" c:type="const GskShadow*"/>
9689 </return-value>
9690 <parameters>
9691 <instance-parameter name="node" transfer-ownership="none">
9692 <doc xml:space="preserve"
9693 filename="gsk/gskrendernodeimpl.c"
9694 line="6593">a shadow `GskRenderNode`</doc>
9695 <type name="ShadowNode" c:type="const GskRenderNode*"/>
9696 </instance-parameter>
9697 <parameter name="i" transfer-ownership="none">
9698 <doc xml:space="preserve"
9699 filename="gsk/gskrendernodeimpl.c"
9700 line="6594">the given index</doc>
9701 <type name="gsize" c:type="gsize"/>
9702 </parameter>
9703 </parameters>
9704 </method>
9705 </class>
9706 <record name="Stroke"
9707 c:type="GskStroke"
9708 opaque="1"
9709 version="4.14"
9710 glib:type-name="GskStroke"
9711 glib:get-type="gsk_stroke_get_type"
9712 c:symbol-prefix="stroke">
9713 <doc xml:space="preserve"
9714 filename="gsk/gskstroke.c"
9715 line="24">Collects the parameters that are needed when stroking a path.</doc>
9716 <source-position filename="gsk/gsktypes.h" line="35"/>
9717 <constructor name="new" c:identifier="gsk_stroke_new" version="4.14">
9718 <doc xml:space="preserve"
9719 filename="gsk/gskstroke.c"
9720 line="35">Creates a new `GskStroke` with the given @line_width.</doc>
9721 <source-position filename="gsk/gskstroke.h" line="36"/>
9722 <return-value transfer-ownership="full">
9723 <doc xml:space="preserve"
9724 filename="gsk/gskstroke.c"
9725 line="41">a new `GskStroke`</doc>
9726 <type name="Stroke" c:type="GskStroke*"/>
9727 </return-value>
9728 <parameters>
9729 <parameter name="line_width" transfer-ownership="none">
9730 <doc xml:space="preserve"
9731 filename="gsk/gskstroke.c"
9732 line="37">line width of the stroke. Must be > 0</doc>
9733 <type name="gfloat" c:type="float"/>
9734 </parameter>
9735 </parameters>
9736 </constructor>
9737 <method name="copy" c:identifier="gsk_stroke_copy" version="4.14">
9738 <doc xml:space="preserve"
9739 filename="gsk/gskstroke.c"
9740 line="62">Creates a copy of a `GskStroke`.</doc>
9741 <source-position filename="gsk/gskstroke.h" line="38"/>
9742 <return-value transfer-ownership="full">
9743 <doc xml:space="preserve"
9744 filename="gsk/gskstroke.c"
9745 line="68">a new `GskStroke`. Use [method@Gsk.Stroke.free] to free it</doc>
9746 <type name="Stroke" c:type="GskStroke*"/>
9747 </return-value>
9748 <parameters>
9749 <instance-parameter name="other" transfer-ownership="none">
9750 <doc xml:space="preserve"
9751 filename="gsk/gskstroke.c"
9752 line="64">the stroke to copy</doc>
9753 <type name="Stroke" c:type="const GskStroke*"/>
9754 </instance-parameter>
9755 </parameters>
9756 </method>
9757 <method name="free" c:identifier="gsk_stroke_free" version="4.14">
9758 <doc xml:space="preserve"
9759 filename="gsk/gskstroke.c"
9760 line="86">Frees a `GskStroke`.</doc>
9761 <source-position filename="gsk/gskstroke.h" line="40"/>
9762 <return-value transfer-ownership="none">
9763 <type name="none" c:type="void"/>
9764 </return-value>
9765 <parameters>
9766 <instance-parameter name="self" transfer-ownership="none">
9767 <doc xml:space="preserve"
9768 filename="gsk/gskstroke.c"
9769 line="88">a stroke</doc>
9770 <type name="Stroke" c:type="GskStroke*"/>
9771 </instance-parameter>
9772 </parameters>
9773 </method>
9774 <method name="get_dash"
9775 c:identifier="gsk_stroke_get_dash"
9776 version="4.14">
9777 <doc xml:space="preserve"
9778 filename="gsk/gskstroke.c"
9779 line="430">Gets the dash array in use.</doc>
9780 <source-position filename="gsk/gskstroke.h" line="73"/>
9781 <return-value transfer-ownership="none" nullable="1">
9782 <doc xml:space="preserve"
9783 filename="gsk/gskstroke.c"
9784 line="437">
9785 the dash array or `NULL` if the dash array is empty</doc>
9786 <array length="0" zero-terminated="0" c:type="const float*">
9787 <type name="gfloat" c:type="float"/>
9788 </array>
9789 </return-value>
9790 <parameters>
9791 <instance-parameter name="self" transfer-ownership="none">
9792 <doc xml:space="preserve"
9793 filename="gsk/gskstroke.c"
9794 line="432">a stroke</doc>
9795 <type name="Stroke" c:type="const GskStroke*"/>
9796 </instance-parameter>
9797 <parameter name="n_dash"
9798 direction="out"
9799 caller-allocates="0"
9800 transfer-ownership="full">
9801 <doc xml:space="preserve"
9802 filename="gsk/gskstroke.c"
9803 line="433">number of elements in the array returned</doc>
9804 <type name="gsize" c:type="gsize*"/>
9805 </parameter>
9806 </parameters>
9807 </method>
9808 <method name="get_dash_offset"
9809 c:identifier="gsk_stroke_get_dash_offset"
9810 version="4.14">
9811 <doc xml:space="preserve"
9812 filename="gsk/gskstroke.c"
9813 line="477">Gets the dash offset.</doc>
9814 <source-position filename="gsk/gskstroke.h" line="80"/>
9815 <return-value transfer-ownership="none">
9816 <doc xml:space="preserve"
9817 filename="gsk/gskstroke.c"
9818 line="483">the dash offset</doc>
9819 <type name="gfloat" c:type="float"/>
9820 </return-value>
9821 <parameters>
9822 <instance-parameter name="self" transfer-ownership="none">
9823 <doc xml:space="preserve"
9824 filename="gsk/gskstroke.c"
9825 line="479">a stroke</doc>
9826 <type name="Stroke" c:type="const GskStroke*"/>
9827 </instance-parameter>
9828 </parameters>
9829 </method>
9830 <method name="get_line_cap"
9831 c:identifier="gsk_stroke_get_line_cap"
9832 version="4.14">
9833 <doc xml:space="preserve"
9834 filename="gsk/gskstroke.c"
9835 line="264">Gets the line cap used.
9836
9837See [enum@Gsk.LineCap] for details.</doc>
9838 <source-position filename="gsk/gskstroke.h" line="55"/>
9839 <return-value transfer-ownership="none">
9840 <doc xml:space="preserve"
9841 filename="gsk/gskstroke.c"
9842 line="272">the line cap</doc>
9843 <type name="LineCap" c:type="GskLineCap"/>
9844 </return-value>
9845 <parameters>
9846 <instance-parameter name="self" transfer-ownership="none">
9847 <doc xml:space="preserve"
9848 filename="gsk/gskstroke.c"
9849 line="266">a stroke</doc>
9850 <type name="Stroke" c:type="const GskStroke*"/>
9851 </instance-parameter>
9852 </parameters>
9853 </method>
9854 <method name="get_line_join"
9855 c:identifier="gsk_stroke_get_line_join"
9856 version="4.14">
9857 <doc xml:space="preserve"
9858 filename="gsk/gskstroke.c"
9859 line="304">Gets the line join used.
9860
9861See [enum@Gsk.LineJoin] for details.</doc>
9862 <source-position filename="gsk/gskstroke.h" line="60"/>
9863 <return-value transfer-ownership="none">
9864 <doc xml:space="preserve"
9865 filename="gsk/gskstroke.c"
9866 line="312">the line join</doc>
9867 <type name="LineJoin" c:type="GskLineJoin"/>
9868 </return-value>
9869 <parameters>
9870 <instance-parameter name="self" transfer-ownership="none">
9871 <doc xml:space="preserve"
9872 filename="gsk/gskstroke.c"
9873 line="306">a stroke</doc>
9874 <type name="Stroke" c:type="const GskStroke*"/>
9875 </instance-parameter>
9876 </parameters>
9877 </method>
9878 <method name="get_line_width"
9879 c:identifier="gsk_stroke_get_line_width"
9880 version="4.14">
9881 <doc xml:space="preserve"
9882 filename="gsk/gskstroke.c"
9883 line="226">Gets the line width used.</doc>
9884 <source-position filename="gsk/gskstroke.h" line="50"/>
9885 <return-value transfer-ownership="none">
9886 <doc xml:space="preserve"
9887 filename="gsk/gskstroke.c"
9888 line="232">the line width</doc>
9889 <type name="gfloat" c:type="float"/>
9890 </return-value>
9891 <parameters>
9892 <instance-parameter name="self" transfer-ownership="none">
9893 <doc xml:space="preserve"
9894 filename="gsk/gskstroke.c"
9895 line="228">a stroke</doc>
9896 <type name="Stroke" c:type="const GskStroke*"/>
9897 </instance-parameter>
9898 </parameters>
9899 </method>
9900 <method name="get_miter_limit"
9901 c:identifier="gsk_stroke_get_miter_limit"
9902 version="4.14">
9903 <doc xml:space="preserve"
9904 filename="gsk/gskstroke.c"
9905 line="351">Gets the miter limit.</doc>
9906 <source-position filename="gsk/gskstroke.h" line="66"/>
9907 <return-value transfer-ownership="none">
9908 <doc xml:space="preserve"
9909 filename="gsk/gskstroke.c"
9910 line="357">the miter limit</doc>
9911 <type name="gfloat" c:type="float"/>
9912 </return-value>
9913 <parameters>
9914 <instance-parameter name="self" transfer-ownership="none">
9915 <doc xml:space="preserve"
9916 filename="gsk/gskstroke.c"
9917 line="353">a stroke</doc>
9918 <type name="Stroke" c:type="const GskStroke*"/>
9919 </instance-parameter>
9920 </parameters>
9921 </method>
9922 <method name="set_dash"
9923 c:identifier="gsk_stroke_set_dash"
9924 version="4.14">
9925 <doc xml:space="preserve"
9926 filename="gsk/gskstroke.c"
9927 line="369">Sets the dash pattern to use.
9928
9929A dash pattern is specified by an array of alternating non-negative
9930values. Each value provides the length of alternate "on" and "off"
9931portions of the stroke.
9932
9933Each "on" segment will have caps applied as if the segment were a
9934separate contour. In particular, it is valid to use an "on" length
9935of 0 with [enum@Gsk.LineCap.round] or [enum@Gsk.LineCap.square]
9936to draw dots or squares along a path.
9937
9938If @n_dash is 0, if all elements in @dash are 0, or if there are
9939negative values in @dash, then dashing is disabled.
9940
9941If @n_dash is 1, an alternating "on" and "off" pattern with the
9942single dash length provided is assumed.
9943
9944If @n_dash is uneven, the dash array will be used with the first
9945element in @dash defining an "on" or "off" in alternating passes
9946through the array.
9947
9948You can specify a starting offset into the dash with
9949[method@Gsk.Stroke.set_dash_offset].</doc>
9950 <source-position filename="gsk/gskstroke.h" line="69"/>
9951 <return-value transfer-ownership="none">
9952 <type name="none" c:type="void"/>
9953 </return-value>
9954 <parameters>
9955 <instance-parameter name="self" transfer-ownership="none">
9956 <doc xml:space="preserve"
9957 filename="gsk/gskstroke.c"
9958 line="371">a stroke</doc>
9959 <type name="Stroke" c:type="GskStroke*"/>
9960 </instance-parameter>
9961 <parameter name="dash"
9962 transfer-ownership="none"
9963 nullable="1"
9964 allow-none="1">
9965 <doc xml:space="preserve"
9966 filename="gsk/gskstroke.c"
9967 line="372">
9968 the array of dashes</doc>
9969 <array length="1" zero-terminated="0" c:type="const float*">
9970 <type name="gfloat" c:type="float"/>
9971 </array>
9972 </parameter>
9973 <parameter name="n_dash" transfer-ownership="none">
9974 <doc xml:space="preserve"
9975 filename="gsk/gskstroke.c"
9976 line="374">number of elements in @dash</doc>
9977 <type name="gsize" c:type="gsize"/>
9978 </parameter>
9979 </parameters>
9980 </method>
9981 <method name="set_dash_offset"
9982 c:identifier="gsk_stroke_set_dash_offset"
9983 version="4.14">
9984 <doc xml:space="preserve"
9985 filename="gsk/gskstroke.c"
9986 line="454">Sets the offset into the dash pattern where dashing should begin.
9987
9988This is an offset into the length of the path, not an index into
9989the array values of the dash array.
9990
9991See [method@Gsk.Stroke.set_dash] for more details on dashing.</doc>
9992 <source-position filename="gsk/gskstroke.h" line="77"/>
9993 <return-value transfer-ownership="none">
9994 <type name="none" c:type="void"/>
9995 </return-value>
9996 <parameters>
9997 <instance-parameter name="self" transfer-ownership="none">
9998 <doc xml:space="preserve"
9999 filename="gsk/gskstroke.c"
10000 line="456">a stroke</doc>
10001 <type name="Stroke" c:type="GskStroke*"/>
10002 </instance-parameter>
10003 <parameter name="offset" transfer-ownership="none">
10004 <doc xml:space="preserve"
10005 filename="gsk/gskstroke.c"
10006 line="457">offset into the dash pattern</doc>
10007 <type name="gfloat" c:type="float"/>
10008 </parameter>
10009 </parameters>
10010 </method>
10011 <method name="set_line_cap"
10012 c:identifier="gsk_stroke_set_line_cap"
10013 version="4.14">
10014 <doc xml:space="preserve"
10015 filename="gsk/gskstroke.c"
10016 line="244">Sets the line cap to be used when stroking.
10017
10018See [enum@Gsk.LineCap] for details.</doc>
10019 <source-position filename="gsk/gskstroke.h" line="52"/>
10020 <return-value transfer-ownership="none">
10021 <type name="none" c:type="void"/>
10022 </return-value>
10023 <parameters>
10024 <instance-parameter name="self" transfer-ownership="none">
10025 <doc xml:space="preserve"
10026 filename="gsk/gskstroke.c"
10027 line="246">a stroke</doc>
10028 <type name="Stroke" c:type="GskStroke*"/>
10029 </instance-parameter>
10030 <parameter name="line_cap" transfer-ownership="none">
10031 <doc xml:space="preserve"
10032 filename="gsk/gskstroke.c"
10033 line="247">the line cap</doc>
10034 <type name="LineCap" c:type="GskLineCap"/>
10035 </parameter>
10036 </parameters>
10037 </method>
10038 <method name="set_line_join"
10039 c:identifier="gsk_stroke_set_line_join"
10040 version="4.14">
10041 <doc xml:space="preserve"
10042 filename="gsk/gskstroke.c"
10043 line="284">Sets the line join to be used when stroking.
10044
10045See [enum@Gsk.LineJoin] for details.</doc>
10046 <source-position filename="gsk/gskstroke.h" line="57"/>
10047 <return-value transfer-ownership="none">
10048 <type name="none" c:type="void"/>
10049 </return-value>
10050 <parameters>
10051 <instance-parameter name="self" transfer-ownership="none">
10052 <doc xml:space="preserve"
10053 filename="gsk/gskstroke.c"
10054 line="286">a stroke</doc>
10055 <type name="Stroke" c:type="GskStroke*"/>
10056 </instance-parameter>
10057 <parameter name="line_join" transfer-ownership="none">
10058 <doc xml:space="preserve"
10059 filename="gsk/gskstroke.c"
10060 line="287">the line join to use</doc>
10061 <type name="LineJoin" c:type="GskLineJoin"/>
10062 </parameter>
10063 </parameters>
10064 </method>
10065 <method name="set_line_width"
10066 c:identifier="gsk_stroke_set_line_width"
10067 version="4.14">
10068 <doc xml:space="preserve"
10069 filename="gsk/gskstroke.c"
10070 line="205">Sets the line width to be used when stroking.
10071
10072The line width must be >= 0.</doc>
10073 <source-position filename="gsk/gskstroke.h" line="47"/>
10074 <return-value transfer-ownership="none">
10075 <type name="none" c:type="void"/>
10076 </return-value>
10077 <parameters>
10078 <instance-parameter name="self" transfer-ownership="none">
10079 <doc xml:space="preserve"
10080 filename="gsk/gskstroke.c"
10081 line="207">a stroke</doc>
10082 <type name="Stroke" c:type="GskStroke*"/>
10083 </instance-parameter>
10084 <parameter name="line_width" transfer-ownership="none">
10085 <doc xml:space="preserve"
10086 filename="gsk/gskstroke.c"
10087 line="208">width of the line in pixels</doc>
10088 <type name="gfloat" c:type="float"/>
10089 </parameter>
10090 </parameters>
10091 </method>
10092 <method name="set_miter_limit"
10093 c:identifier="gsk_stroke_set_miter_limit"
10094 version="4.14">
10095 <doc xml:space="preserve"
10096 filename="gsk/gskstroke.c"
10097 line="324">Sets the miter limit to be used when stroking.
10098
10099The miter limit is the distance from the corner where sharp
10100turns of joins get cut off.
10101
10102The limit is specfied in units of line width and must be non-negative.
10103
10104For joins of type [enum@Gsk.LineJoin.miter] that exceed the miter limit,
10105the join gets rendered as if it was of type [enum@Gsk.LineJoin.bevel].</doc>
10106 <source-position filename="gsk/gskstroke.h" line="63"/>
10107 <return-value transfer-ownership="none">
10108 <type name="none" c:type="void"/>
10109 </return-value>
10110 <parameters>
10111 <instance-parameter name="self" transfer-ownership="none">
10112 <doc xml:space="preserve"
10113 filename="gsk/gskstroke.c"
10114 line="326">a stroke</doc>
10115 <type name="Stroke" c:type="GskStroke*"/>
10116 </instance-parameter>
10117 <parameter name="limit" transfer-ownership="none">
10118 <doc xml:space="preserve"
10119 filename="gsk/gskstroke.c"
10120 line="327">the miter limit</doc>
10121 <type name="gfloat" c:type="float"/>
10122 </parameter>
10123 </parameters>
10124 </method>
10125 <method name="to_cairo"
10126 c:identifier="gsk_stroke_to_cairo"
10127 version="4.14">
10128 <doc xml:space="preserve"
10129 filename="gsk/gskstroke.c"
10130 line="105">A helper function that sets the stroke parameters
10131of a cairo context from a `GskStroke`.</doc>
10132 <source-position filename="gsk/gskstroke.h" line="83"/>
10133 <return-value transfer-ownership="none">
10134 <type name="none" c:type="void"/>
10135 </return-value>
10136 <parameters>
10137 <instance-parameter name="self" transfer-ownership="none">
10138 <doc xml:space="preserve"
10139 filename="gsk/gskstroke.c"
10140 line="107">a stroke</doc>
10141 <type name="Stroke" c:type="const GskStroke*"/>
10142 </instance-parameter>
10143 <parameter name="cr" transfer-ownership="none">
10144 <doc xml:space="preserve"
10145 filename="gsk/gskstroke.c"
10146 line="108">the cairo context to configure</doc>
10147 <type name="cairo.Context" c:type="cairo_t*"/>
10148 </parameter>
10149 </parameters>
10150 </method>
10151 <function name="equal" c:identifier="gsk_stroke_equal" version="4.14">
10152 <doc xml:space="preserve"
10153 filename="gsk/gskstroke.c"
10154 line="172">Checks if two strokes are identical.</doc>
10155 <source-position filename="gsk/gskstroke.h" line="43"/>
10156 <return-value transfer-ownership="none">
10157 <doc xml:space="preserve"
10158 filename="gsk/gskstroke.c"
10159 line="179">true if the two strokes are equal, false otherwise</doc>
10160 <type name="gboolean" c:type="gboolean"/>
10161 </return-value>
10162 <parameters>
10163 <parameter name="stroke1"
10164 transfer-ownership="none"
10165 nullable="1"
10166 allow-none="1">
10167 <doc xml:space="preserve"
10168 filename="gsk/gskstroke.c"
10169 line="174">the first stroke</doc>
10170 <type name="gpointer" c:type="gconstpointer"/>
10171 </parameter>
10172 <parameter name="stroke2"
10173 transfer-ownership="none"
10174 nullable="1"
10175 allow-none="1">
10176 <doc xml:space="preserve"
10177 filename="gsk/gskstroke.c"
10178 line="175">the second stroke</doc>
10179 <type name="gpointer" c:type="gconstpointer"/>
10180 </parameter>
10181 </parameters>
10182 </function>
10183 </record>
10184 <class name="StrokeNode"
10185 c:symbol-prefix="stroke_node"
10186 c:type="GskStrokeNode"
10187 version="4.14"
10188 parent="RenderNode"
10189 glib:type-name="GskStrokeNode"
10190 glib:get-type="gsk_stroke_node_get_type"
10191 glib:fundamental="1">
10192 <doc xml:space="preserve"
10193 filename="gsk/gskrendernodeimpl.c"
10194 line="6105">A render node that will fill the area determined by stroking the the given
10195[struct@Gsk.Path] using the [struct@Gsk.Stroke] attributes.</doc>
10196 <constructor name="new"
10197 c:identifier="gsk_stroke_node_new"
10198 version="4.14">
10199 <doc xml:space="preserve"
10200 filename="gsk/gskrendernodeimpl.c"
10201 line="6206">Creates a #GskRenderNode that will fill the outline generated by stroking
10202the given @path using the attributes defined in @stroke.
10203
10204The area is filled with @child.</doc>
10205 <source-position filename="gsk/gskrendernode.h" line="494"/>
10206 <return-value transfer-ownership="none">
10207 <doc xml:space="preserve"
10208 filename="gsk/gskrendernodeimpl.c"
10209 line="6217">A new #GskRenderNode</doc>
10210 <type name="StrokeNode" c:type="GskRenderNode*"/>
10211 </return-value>
10212 <parameters>
10213 <parameter name="child" transfer-ownership="none">
10214 <doc xml:space="preserve"
10215 filename="gsk/gskrendernodeimpl.c"
10216 line="6208">The node to stroke the area with</doc>
10217 <type name="RenderNode" c:type="GskRenderNode*"/>
10218 </parameter>
10219 <parameter name="path" transfer-ownership="none">
10220 <doc xml:space="preserve"
10221 filename="gsk/gskrendernodeimpl.c"
10222 line="6209">The path describing the area to stroke</doc>
10223 <type name="Path" c:type="GskPath*"/>
10224 </parameter>
10225 <parameter name="stroke" transfer-ownership="none">
10226 <doc xml:space="preserve"
10227 filename="gsk/gskrendernodeimpl.c"
10228 line="6210">The stroke attributes to use</doc>
10229 <type name="Stroke" c:type="const GskStroke*"/>
10230 </parameter>
10231 </parameters>
10232 </constructor>
10233 <method name="get_child"
10234 c:identifier="gsk_stroke_node_get_child"
10235 version="4.14">
10236 <doc xml:space="preserve"
10237 filename="gsk/gskrendernodeimpl.c"
10238 line="6251">Gets the child node that is getting drawn by the given @node.</doc>
10239 <source-position filename="gsk/gskrendernode.h" line="498"/>
10240 <return-value transfer-ownership="none">
10241 <doc xml:space="preserve"
10242 filename="gsk/gskrendernodeimpl.c"
10243 line="6257">The child that is getting drawn</doc>
10244 <type name="RenderNode" c:type="GskRenderNode*"/>
10245 </return-value>
10246 <parameters>
10247 <instance-parameter name="node" transfer-ownership="none">
10248 <doc xml:space="preserve"
10249 filename="gsk/gskrendernodeimpl.c"
10250 line="6253">a stroke #GskRenderNode</doc>
10251 <type name="StrokeNode" c:type="const GskRenderNode*"/>
10252 </instance-parameter>
10253 </parameters>
10254 </method>
10255 <method name="get_path"
10256 c:identifier="gsk_stroke_node_get_path"
10257 version="4.14">
10258 <doc xml:space="preserve"
10259 filename="gsk/gskrendernodeimpl.c"
10260 line="6271">Retrieves the path that will be stroked with the contents of
10261the @node.</doc>
10262 <source-position filename="gsk/gskrendernode.h" line="500"/>
10263 <return-value transfer-ownership="none">
10264 <doc xml:space="preserve"
10265 filename="gsk/gskrendernodeimpl.c"
10266 line="6278">a #GskPath</doc>
10267 <type name="Path" c:type="GskPath*"/>
10268 </return-value>
10269 <parameters>
10270 <instance-parameter name="node" transfer-ownership="none">
10271 <doc xml:space="preserve"
10272 filename="gsk/gskrendernodeimpl.c"
10273 line="6273">a stroke #GskRenderNode</doc>
10274 <type name="StrokeNode" c:type="const GskRenderNode*"/>
10275 </instance-parameter>
10276 </parameters>
10277 </method>
10278 <method name="get_stroke"
10279 c:identifier="gsk_stroke_node_get_stroke"
10280 version="4.14">
10281 <doc xml:space="preserve"
10282 filename="gsk/gskrendernodeimpl.c"
10283 line="6292">Retrieves the stroke attributes used in this @node.</doc>
10284 <source-position filename="gsk/gskrendernode.h" line="502"/>
10285 <return-value transfer-ownership="none">
10286 <doc xml:space="preserve"
10287 filename="gsk/gskrendernodeimpl.c"
10288 line="6298">a #GskStroke</doc>
10289 <type name="Stroke" c:type="const GskStroke*"/>
10290 </return-value>
10291 <parameters>
10292 <instance-parameter name="node" transfer-ownership="none">
10293 <doc xml:space="preserve"
10294 filename="gsk/gskrendernodeimpl.c"
10295 line="6294">a stroke #GskRenderNode</doc>
10296 <type name="StrokeNode" c:type="const GskRenderNode*"/>
10297 </instance-parameter>
10298 </parameters>
10299 </method>
10300 </class>
10301 <class name="SubsurfaceNode"
10302 c:symbol-prefix="subsurface_node"
10303 c:type="GskSubsurfaceNode"
10304 version="4.14"
10305 parent="RenderNode"
10306 glib:type-name="GskSubsurfaceNode"
10307 glib:get-type="gsk_subsurface_node_get_type"
10308 glib:fundamental="1">
10309 <doc xml:space="preserve"
10310 filename="gsk/gskrendernodeimpl.c"
10311 line="8426">A render node that potentially diverts a part of the scene graph to a subsurface.</doc>
10312 <constructor name="new"
10313 c:identifier="gsk_subsurface_node_new"
10314 version="4.14"
10315 introspectable="0">
10316 <doc xml:space="preserve"
10317 filename="gsk/gskrendernodeimpl.c"
10318 line="8526">Creates a `GskRenderNode` that will possibly divert the child
10319node to a subsurface.
10320
10321Note: Since subsurfaces are currently private, these nodes cannot
10322currently be created outside of GTK. See
10323[GtkGraphicsOffload](../gtk4/class.GraphicsOffload.html).</doc>
10324 <source-position filename="gsk/gskrendernode.h" line="613"/>
10325 <return-value transfer-ownership="full">
10326 <doc xml:space="preserve"
10327 filename="gsk/gskrendernodeimpl.c"
10328 line="8538">A new `GskRenderNode`</doc>
10329 <type name="SubsurfaceNode" c:type="GskRenderNode*"/>
10330 </return-value>
10331 <parameters>
10332 <parameter name="child" transfer-ownership="none">
10333 <doc xml:space="preserve"
10334 filename="gsk/gskrendernodeimpl.c"
10335 line="8528">The child to divert to a subsurface</doc>
10336 <type name="RenderNode" c:type="GskRenderNode*"/>
10337 </parameter>
10338 <parameter name="subsurface"
10339 transfer-ownership="none"
10340 nullable="1"
10341 allow-none="1">
10342 <doc xml:space="preserve"
10343 filename="gsk/gskrendernodeimpl.c"
10344 line="8529">the subsurface to use</doc>
10345 <type name="gpointer" c:type="gpointer"/>
10346 </parameter>
10347 </parameters>
10348 </constructor>
10349 <function name="get_subsurface"
10350 c:identifier="gsk_subsurface_node_get_subsurface"
10351 version="4.14"
10352 introspectable="0">
10353 <doc xml:space="preserve"
10354 filename="gsk/gskrendernodeimpl.c"
10355 line="8587">Gets the subsurface that was set on this node</doc>
10356 <source-position filename="gsk/gskrendernode.h" line="618"/>
10357 <return-value transfer-ownership="none" nullable="1">
10358 <doc xml:space="preserve"
10359 filename="gsk/gskrendernodeimpl.c"
10360 line="8593">the subsurface</doc>
10361 <type name="gpointer" c:type="gpointer"/>
10362 </return-value>
10363 <parameters>
10364 <parameter name="node" transfer-ownership="none">
10365 <doc xml:space="preserve"
10366 filename="gsk/gskrendernodeimpl.c"
10367 line="8589">a debug `GskRenderNode`</doc>
10368 <type name="DebugNode" c:type="const GskRenderNode*"/>
10369 </parameter>
10370 </parameters>
10371 </function>
10372 <method name="get_child"
10373 c:identifier="gsk_subsurface_node_get_child"
10374 version="4.14">
10375 <doc xml:space="preserve"
10376 filename="gsk/gskrendernodeimpl.c"
10377 line="8569">Gets the child node that is getting drawn by the given @node.</doc>
10378 <source-position filename="gsk/gskrendernode.h" line="616"/>
10379 <return-value transfer-ownership="none">
10380 <doc xml:space="preserve"
10381 filename="gsk/gskrendernodeimpl.c"
10382 line="8575">the child `GskRenderNode`</doc>
10383 <type name="RenderNode" c:type="GskRenderNode*"/>
10384 </return-value>
10385 <parameters>
10386 <instance-parameter name="node" transfer-ownership="none">
10387 <doc xml:space="preserve"
10388 filename="gsk/gskrendernodeimpl.c"
10389 line="8571">a debug `GskRenderNode`</doc>
10390 <type name="SubsurfaceNode" c:type="const GskRenderNode*"/>
10391 </instance-parameter>
10392 </parameters>
10393 </method>
10394 </class>
10395 <class name="TextNode"
10396 c:symbol-prefix="text_node"
10397 c:type="GskTextNode"
10398 parent="RenderNode"
10399 glib:type-name="GskTextNode"
10400 glib:get-type="gsk_text_node_get_type"
10401 glib:fundamental="1">
10402 <doc xml:space="preserve"
10403 filename="gsk/gskrendernodeimpl.c"
10404 line="7072">A render node drawing a set of glyphs.</doc>
10405 <constructor name="new" c:identifier="gsk_text_node_new">
10406 <doc xml:space="preserve"
10407 filename="gsk/gskrendernodeimpl.c"
10408 line="7193">Creates a render node that renders the given glyphs.
10409
10410Note that @color may not be used if the font contains
10411color glyphs.</doc>
10412 <source-position filename="gsk/gskrendernode.h" line="547"/>
10413 <return-value transfer-ownership="full" nullable="1">
10414 <doc xml:space="preserve"
10415 filename="gsk/gskrendernodeimpl.c"
10416 line="7205">a new `GskRenderNode`</doc>
10417 <type name="TextNode" c:type="GskRenderNode*"/>
10418 </return-value>
10419 <parameters>
10420 <parameter name="font" transfer-ownership="none">
10421 <doc xml:space="preserve"
10422 filename="gsk/gskrendernodeimpl.c"
10423 line="7195">the `PangoFont` containing the glyphs</doc>
10424 <type name="Pango.Font" c:type="PangoFont*"/>
10425 </parameter>
10426 <parameter name="glyphs" transfer-ownership="none">
10427 <doc xml:space="preserve"
10428 filename="gsk/gskrendernodeimpl.c"
10429 line="7196">the `PangoGlyphString` to render</doc>
10430 <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
10431 </parameter>
10432 <parameter name="color" transfer-ownership="none">
10433 <doc xml:space="preserve"
10434 filename="gsk/gskrendernodeimpl.c"
10435 line="7197">the foreground color to render with</doc>
10436 <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
10437 </parameter>
10438 <parameter name="offset" transfer-ownership="none">
10439 <doc xml:space="preserve"
10440 filename="gsk/gskrendernodeimpl.c"
10441 line="7198">offset of the baseline</doc>
10442 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
10443 </parameter>
10444 </parameters>
10445 </constructor>
10446 <method name="get_color" c:identifier="gsk_text_node_get_color">
10447 <doc xml:space="preserve"
10448 filename="gsk/gskrendernodeimpl.c"
10449 line="7297">Retrieves the color used by the text @node.
10450
10451The value returned by this function will not be correct
10452if the render node was created for a non-sRGB color.</doc>
10453 <source-position filename="gsk/gskrendernode.h" line="561"/>
10454 <return-value transfer-ownership="none">
10455 <doc xml:space="preserve"
10456 filename="gsk/gskrendernodeimpl.c"
10457 line="7306">the text color</doc>
10458 <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
10459 </return-value>
10460 <parameters>
10461 <instance-parameter name="node" transfer-ownership="none">
10462 <doc xml:space="preserve"
10463 filename="gsk/gskrendernodeimpl.c"
10464 line="7299">a text `GskRenderNode`</doc>
10465 <type name="TextNode" c:type="const GskRenderNode*"/>
10466 </instance-parameter>
10467 </parameters>
10468 </method>
10469 <method name="get_font" c:identifier="gsk_text_node_get_font">
10470 <doc xml:space="preserve"
10471 filename="gsk/gskrendernodeimpl.c"
10472 line="7333">Returns the font used by the text @node.</doc>
10473 <source-position filename="gsk/gskrendernode.h" line="552"/>
10474 <return-value transfer-ownership="none">
10475 <doc xml:space="preserve"
10476 filename="gsk/gskrendernodeimpl.c"
10477 line="7339">the font</doc>
10478 <type name="Pango.Font" c:type="PangoFont*"/>
10479 </return-value>
10480 <parameters>
10481 <instance-parameter name="node" transfer-ownership="none">
10482 <doc xml:space="preserve"
10483 filename="gsk/gskrendernodeimpl.c"
10484 line="7335">The `GskRenderNode`</doc>
10485 <type name="TextNode" c:type="const GskRenderNode*"/>
10486 </instance-parameter>
10487 </parameters>
10488 </method>
10489 <method name="get_glyphs" c:identifier="gsk_text_node_get_glyphs">
10490 <doc xml:space="preserve"
10491 filename="gsk/gskrendernodeimpl.c"
10492 line="7391">Retrieves the glyph information in the @node.</doc>
10493 <source-position filename="gsk/gskrendernode.h" line="558"/>
10494 <return-value transfer-ownership="none">
10495 <doc xml:space="preserve"
10496 filename="gsk/gskrendernodeimpl.c"
10497 line="7398">the glyph information</doc>
10498 <array length="0" zero-terminated="0" c:type="const PangoGlyphInfo*">
10499 <type name="Pango.GlyphInfo" c:type="PangoGlyphInfo"/>
10500 </array>
10501 </return-value>
10502 <parameters>
10503 <instance-parameter name="node" transfer-ownership="none">
10504 <doc xml:space="preserve"
10505 filename="gsk/gskrendernodeimpl.c"
10506 line="7393">a text `GskRenderNode`</doc>
10507 <type name="TextNode" c:type="const GskRenderNode*"/>
10508 </instance-parameter>
10509 <parameter name="n_glyphs"
10510 direction="out"
10511 caller-allocates="0"
10512 transfer-ownership="full"
10513 optional="1"
10514 allow-none="1">
10515 <doc xml:space="preserve"
10516 filename="gsk/gskrendernodeimpl.c"
10517 line="7394">the number of glyphs returned</doc>
10518 <type name="guint" c:type="guint*"/>
10519 </parameter>
10520 </parameters>
10521 </method>
10522 <method name="get_num_glyphs"
10523 c:identifier="gsk_text_node_get_num_glyphs">
10524 <doc xml:space="preserve"
10525 filename="gsk/gskrendernodeimpl.c"
10526 line="7375">Retrieves the number of glyphs in the text node.</doc>
10527 <source-position filename="gsk/gskrendernode.h" line="556"/>
10528 <return-value transfer-ownership="none">
10529 <doc xml:space="preserve"
10530 filename="gsk/gskrendernodeimpl.c"
10531 line="7381">the number of glyphs</doc>
10532 <type name="guint" c:type="guint"/>
10533 </return-value>
10534 <parameters>
10535 <instance-parameter name="node" transfer-ownership="none">
10536 <doc xml:space="preserve"
10537 filename="gsk/gskrendernodeimpl.c"
10538 line="7377">a text `GskRenderNode`</doc>
10539 <type name="TextNode" c:type="const GskRenderNode*"/>
10540 </instance-parameter>
10541 </parameters>
10542 </method>
10543 <method name="get_offset" c:identifier="gsk_text_node_get_offset">
10544 <doc xml:space="preserve"
10545 filename="gsk/gskrendernodeimpl.c"
10546 line="7412">Retrieves the offset applied to the text.</doc>
10547 <source-position filename="gsk/gskrendernode.h" line="563"/>
10548 <return-value transfer-ownership="none">
10549 <doc xml:space="preserve"
10550 filename="gsk/gskrendernodeimpl.c"
10551 line="7418">a point with the horizontal and vertical offsets</doc>
10552 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
10553 </return-value>
10554 <parameters>
10555 <instance-parameter name="node" transfer-ownership="none">
10556 <doc xml:space="preserve"
10557 filename="gsk/gskrendernodeimpl.c"
10558 line="7414">a text `GskRenderNode`</doc>
10559 <type name="TextNode" c:type="const GskRenderNode*"/>
10560 </instance-parameter>
10561 </parameters>
10562 </method>
10563 <method name="has_color_glyphs"
10564 c:identifier="gsk_text_node_has_color_glyphs"
10565 version="4.2">
10566 <doc xml:space="preserve"
10567 filename="gsk/gskrendernodeimpl.c"
10568 line="7357">Checks whether the text @node has color glyphs.</doc>
10569 <source-position filename="gsk/gskrendernode.h" line="554"/>
10570 <return-value transfer-ownership="none">
10571 <doc xml:space="preserve"
10572 filename="gsk/gskrendernodeimpl.c"
10573 line="7363">%TRUE if the text node has color glyphs</doc>
10574 <type name="gboolean" c:type="gboolean"/>
10575 </return-value>
10576 <parameters>
10577 <instance-parameter name="node" transfer-ownership="none">
10578 <doc xml:space="preserve"
10579 filename="gsk/gskrendernodeimpl.c"
10580 line="7359">a text `GskRenderNode`</doc>
10581 <type name="TextNode" c:type="const GskRenderNode*"/>
10582 </instance-parameter>
10583 </parameters>
10584 </method>
10585 </class>
10586 <class name="TextureNode"
10587 c:symbol-prefix="texture_node"
10588 c:type="GskTextureNode"
10589 parent="RenderNode"
10590 glib:type-name="GskTextureNode"
10591 glib:get-type="gsk_texture_node_get_type"
10592 glib:fundamental="1">
10593 <doc xml:space="preserve"
10594 filename="gsk/gskrendernodeimpl.c"
10595 line="2597">A render node for a `GdkTexture`.</doc>
10596 <constructor name="new" c:identifier="gsk_texture_node_new">
10597 <doc xml:space="preserve"
10598 filename="gsk/gskrendernodeimpl.c"
10599 line="2786">Creates a `GskRenderNode` that will render the given
10600@texture into the area given by @bounds.
10601
10602Note that GSK applies linear filtering when textures are
10603scaled and transformed. See [class@Gsk.TextureScaleNode]
10604for a way to influence filtering.</doc>
10605 <source-position filename="gsk/gskrendernode.h" line="234"/>
10606 <return-value transfer-ownership="full">
10607 <doc xml:space="preserve"
10608 filename="gsk/gskrendernodeimpl.c"
10609 line="2798">A new `GskRenderNode`</doc>
10610 <type name="TextureNode" c:type="GskRenderNode*"/>
10611 </return-value>
10612 <parameters>
10613 <parameter name="texture" transfer-ownership="none">
10614 <doc xml:space="preserve"
10615 filename="gsk/gskrendernodeimpl.c"
10616 line="2788">the `GdkTexture`</doc>
10617 <type name="Gdk.Texture" c:type="GdkTexture*"/>
10618 </parameter>
10619 <parameter name="bounds" transfer-ownership="none">
10620 <doc xml:space="preserve"
10621 filename="gsk/gskrendernodeimpl.c"
10622 line="2789">the rectangle to render the texture into</doc>
10623 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
10624 </parameter>
10625 </parameters>
10626 </constructor>
10627 <method name="get_texture" c:identifier="gsk_texture_node_get_texture">
10628 <doc xml:space="preserve"
10629 filename="gsk/gskrendernodeimpl.c"
10630 line="2770">Retrieves the `GdkTexture` used when creating this `GskRenderNode`.</doc>
10631 <source-position filename="gsk/gskrendernode.h" line="237"/>
10632 <return-value transfer-ownership="none">
10633 <doc xml:space="preserve"
10634 filename="gsk/gskrendernodeimpl.c"
10635 line="2776">the `GdkTexture`</doc>
10636 <type name="Gdk.Texture" c:type="GdkTexture*"/>
10637 </return-value>
10638 <parameters>
10639 <instance-parameter name="node" transfer-ownership="none">
10640 <doc xml:space="preserve"
10641 filename="gsk/gskrendernodeimpl.c"
10642 line="2772">a `GskRenderNode` of type %GSK_TEXTURE_NODE</doc>
10643 <type name="TextureNode" c:type="const GskRenderNode*"/>
10644 </instance-parameter>
10645 </parameters>
10646 </method>
10647 </class>
10648 <class name="TextureScaleNode"
10649 c:symbol-prefix="texture_scale_node"
10650 c:type="GskTextureScaleNode"
10651 version="4.10"
10652 parent="RenderNode"
10653 glib:type-name="GskTextureScaleNode"
10654 glib:get-type="gsk_texture_scale_node_get_type"
10655 glib:fundamental="1">
10656 <doc xml:space="preserve"
10657 filename="gsk/gskrendernodeimpl.c"
10658 line="2827">A render node for a `GdkTexture`, with control over scaling.</doc>
10659 <constructor name="new"
10660 c:identifier="gsk_texture_scale_node_new"
10661 version="4.10">
10662 <doc xml:space="preserve"
10663 filename="gsk/gskrendernodeimpl.c"
10664 line="2996">Creates a node that scales the texture to the size given by the
10665bounds using the filter and then places it at the bounds' position.
10666
10667Note that further scaling and other transformations which are
10668applied to the node will apply linear filtering to the resulting
10669texture, as usual.
10670
10671This node is intended for tight control over scaling applied
10672to a texture, such as in image editors and requires the
10673application to be aware of the whole render tree as further
10674transforms may be applied that conflict with the desired effect
10675of this node.</doc>
10676 <source-position filename="gsk/gskrendernode.h" line="242"/>
10677 <return-value transfer-ownership="full">
10678 <doc xml:space="preserve"
10679 filename="gsk/gskrendernodeimpl.c"
10680 line="3015">A new `GskRenderNode`</doc>
10681 <type name="TextureScaleNode" c:type="GskRenderNode*"/>
10682 </return-value>
10683 <parameters>
10684 <parameter name="texture" transfer-ownership="none">
10685 <doc xml:space="preserve"
10686 filename="gsk/gskrendernodeimpl.c"
10687 line="2998">the texture to scale</doc>
10688 <type name="Gdk.Texture" c:type="GdkTexture*"/>
10689 </parameter>
10690 <parameter name="bounds" transfer-ownership="none">
10691 <doc xml:space="preserve"
10692 filename="gsk/gskrendernodeimpl.c"
10693 line="2999">the size of the texture to scale to</doc>
10694 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
10695 </parameter>
10696 <parameter name="filter" transfer-ownership="none">
10697 <doc xml:space="preserve"
10698 filename="gsk/gskrendernodeimpl.c"
10699 line="3000">how to scale the texture</doc>
10700 <type name="ScalingFilter" c:type="GskScalingFilter"/>
10701 </parameter>
10702 </parameters>
10703 </constructor>
10704 <method name="get_filter"
10705 c:identifier="gsk_texture_scale_node_get_filter"
10706 version="4.10">
10707 <doc xml:space="preserve"
10708 filename="gsk/gskrendernodeimpl.c"
10709 line="2978">Retrieves the `GskScalingFilter` used when creating this `GskRenderNode`.</doc>
10710 <source-position filename="gsk/gskrendernode.h" line="248"/>
10711 <return-value transfer-ownership="none">
10712 <doc xml:space="preserve"
10713 filename="gsk/gskrendernodeimpl.c"
10714 line="2984">the `GskScalingFilter`</doc>
10715 <type name="ScalingFilter" c:type="GskScalingFilter"/>
10716 </return-value>
10717 <parameters>
10718 <instance-parameter name="node" transfer-ownership="none">
10719 <doc xml:space="preserve"
10720 filename="gsk/gskrendernodeimpl.c"
10721 line="2980">a `GskRenderNode` of type %GSK_TEXTURE_SCALE_NODE</doc>
10722 <type name="TextureScaleNode" c:type="const GskRenderNode*"/>
10723 </instance-parameter>
10724 </parameters>
10725 </method>
10726 <method name="get_texture"
10727 c:identifier="gsk_texture_scale_node_get_texture"
10728 version="4.10">
10729 <doc xml:space="preserve"
10730 filename="gsk/gskrendernodeimpl.c"
10731 line="2960">Retrieves the `GdkTexture` used when creating this `GskRenderNode`.</doc>
10732 <source-position filename="gsk/gskrendernode.h" line="246"/>
10733 <return-value transfer-ownership="none">
10734 <doc xml:space="preserve"
10735 filename="gsk/gskrendernodeimpl.c"
10736 line="2966">the `GdkTexture`</doc>
10737 <type name="Gdk.Texture" c:type="GdkTexture*"/>
10738 </return-value>
10739 <parameters>
10740 <instance-parameter name="node" transfer-ownership="none">
10741 <doc xml:space="preserve"
10742 filename="gsk/gskrendernodeimpl.c"
10743 line="2962">a `GskRenderNode` of type %GSK_TEXTURE_SCALE_NODE</doc>
10744 <type name="TextureScaleNode" c:type="const GskRenderNode*"/>
10745 </instance-parameter>
10746 </parameters>
10747 </method>
10748 </class>
10749 <record name="Transform"
10750 c:type="GskTransform"
10751 opaque="1"
10752 glib:type-name="GskTransform"
10753 glib:get-type="gsk_transform_get_type"
10754 c:symbol-prefix="transform">
10755 <doc xml:space="preserve"
10756 filename="gsk/gsktransform.c"
10757 line="21">Describes a 3D transform.
10758
10759Unlike `graphene_matrix_t`, `GskTransform` retains the steps in how
10760a transform was constructed, and allows inspecting them. It is modeled
10761after the way CSS describes transforms.
10762
10763`GskTransform` objects are immutable and cannot be changed after creation.
10764This means code can safely expose them as properties of objects without
10765having to worry about others changing them.</doc>
10766 <source-position filename="gsk/gsktypes.h" line="36"/>
10767 <constructor name="new" c:identifier="gsk_transform_new">
10768 <doc xml:space="preserve"
10769 filename="gsk/gsktransform.c"
10770 line="2390">Creates a new identity transform.
10771
10772This function is meant to be used by language
10773bindings. For C code, this is equivalent to using `NULL`.</doc>
10774 <source-position filename="gsk/gsktransform.h" line="88"/>
10775 <return-value transfer-ownership="full">
10776 <doc xml:space="preserve"
10777 filename="gsk/gsktransform.c"
10778 line="2398">A new identity transform</doc>
10779 <type name="Transform" c:type="GskTransform*"/>
10780 </return-value>
10781 </constructor>
10782 <method name="equal" c:identifier="gsk_transform_equal">
10783 <doc xml:space="preserve"
10784 filename="gsk/gsktransform.c"
10785 line="2315">Checks two transforms for equality.</doc>
10786 <source-position filename="gsk/gsktransform.h" line="84"/>
10787 <return-value transfer-ownership="none">
10788 <doc xml:space="preserve"
10789 filename="gsk/gsktransform.c"
10790 line="2322">true if the two transforms perform the same operation</doc>
10791 <type name="gboolean" c:type="gboolean"/>
10792 </return-value>
10793 <parameters>
10794 <instance-parameter name="first"
10795 transfer-ownership="none"
10796 nullable="1"
10797 allow-none="1">
10798 <doc xml:space="preserve"
10799 filename="gsk/gsktransform.c"
10800 line="2317">the first transform</doc>
10801 <type name="Transform" c:type="GskTransform*"/>
10802 </instance-parameter>
10803 <parameter name="second"
10804 transfer-ownership="none"
10805 nullable="1"
10806 allow-none="1">
10807 <doc xml:space="preserve"
10808 filename="gsk/gsktransform.c"
10809 line="2318">the second transform</doc>
10810 <type name="Transform" c:type="GskTransform*"/>
10811 </parameter>
10812 </parameters>
10813 </method>
10814 <method name="get_category" c:identifier="gsk_transform_get_category">
10815 <doc xml:space="preserve"
10816 filename="gsk/gsktransform.c"
10817 line="2346">Returns the category this transform belongs to.</doc>
10818 <source-position filename="gsk/gsktransform.h" line="82"/>
10819 <return-value transfer-ownership="none">
10820 <doc xml:space="preserve"
10821 filename="gsk/gsktransform.c"
10822 line="2352">The category of the transform</doc>
10823 <type name="TransformCategory" c:type="GskTransformCategory"/>
10824 </return-value>
10825 <parameters>
10826 <instance-parameter name="self"
10827 transfer-ownership="none"
10828 nullable="1"
10829 allow-none="1">
10830 <doc xml:space="preserve"
10831 filename="gsk/gsktransform.c"
10832 line="2348">a transform</doc>
10833 <type name="Transform" c:type="GskTransform*"/>
10834 </instance-parameter>
10835 </parameters>
10836 </method>
10837 <method name="invert" c:identifier="gsk_transform_invert">
10838 <doc xml:space="preserve"
10839 filename="gsk/gsktransform.c"
10840 line="2280">Inverts the given transform.
10841
10842If @self is not invertible, `NULL` is returned.
10843Note that inverting `NULL` also returns `NULL`, which is
10844the correct inverse of `NULL`. If you need to differentiate
10845between those cases, you should check @self is not `NULL`
10846before calling this function.
10847
10848This function consumes @self. Use [method@Gsk.Transform.ref] first
10849if you want to keep it around.</doc>
10850 <source-position filename="gsk/gsktransform.h" line="93"/>
10851 <return-value transfer-ownership="full" nullable="1">
10852 <doc xml:space="preserve"
10853 filename="gsk/gsktransform.c"
10854 line="2295">The inverted transform</doc>
10855 <type name="Transform" c:type="GskTransform*"/>
10856 </return-value>
10857 <parameters>
10858 <instance-parameter name="self"
10859 transfer-ownership="full"
10860 nullable="1"
10861 allow-none="1">
10862 <doc xml:space="preserve"
10863 filename="gsk/gsktransform.c"
10864 line="2282">transform to invert</doc>
10865 <type name="Transform" c:type="GskTransform*"/>
10866 </instance-parameter>
10867 </parameters>
10868 </method>
10869 <method name="matrix" c:identifier="gsk_transform_matrix">
10870 <doc xml:space="preserve"
10871 filename="gsk/gsktransform.c"
10872 line="550">Multiplies @next with the given @matrix.
10873
10874This function consumes @next. Use [method@Gsk.Transform.ref] first
10875if you want to keep it around.</doc>
10876 <source-position filename="gsk/gsktransform.h" line="95"/>
10877 <return-value transfer-ownership="full">
10878 <doc xml:space="preserve"
10879 filename="gsk/gsktransform.c"
10880 line="560">The new transform</doc>
10881 <type name="Transform" c:type="GskTransform*"/>
10882 </return-value>
10883 <parameters>
10884 <instance-parameter name="next"
10885 transfer-ownership="full"
10886 nullable="1"
10887 allow-none="1">
10888 <doc xml:space="preserve"
10889 filename="gsk/gsktransform.c"
10890 line="552">the next transform</doc>
10891 <type name="Transform" c:type="GskTransform*"/>
10892 </instance-parameter>
10893 <parameter name="matrix" transfer-ownership="none">
10894 <doc xml:space="preserve"
10895 filename="gsk/gsktransform.c"
10896 line="553">the matrix to multiply @next with</doc>
10897 <type name="Graphene.Matrix" c:type="const graphene_matrix_t*"/>
10898 </parameter>
10899 </parameters>
10900 </method>
10901 <method name="matrix_2d"
10902 c:identifier="gsk_transform_matrix_2d"
10903 version="4.20">
10904 <doc xml:space="preserve"
10905 filename="gsk/gsktransform.c"
10906 line="569">Multiplies @next with the matrix [ xx yx x0; xy yy y0; 0 0 1 ].
10907
10908The result of calling [method@Gsk.Transform.to_2d] on the returned
10909[struct@Gsk.Transform] should match the input passed to this
10910function.
10911
10912This function consumes @next. Use [method@Gsk.Transform.ref] first
10913if you want to keep it around.</doc>
10914 <source-position filename="gsk/gsktransform.h" line="98"/>
10915 <return-value transfer-ownership="full" nullable="1">
10916 <doc xml:space="preserve"
10917 filename="gsk/gsktransform.c"
10918 line="588">The new transform</doc>
10919 <type name="Transform" c:type="GskTransform*"/>
10920 </return-value>
10921 <parameters>
10922 <instance-parameter name="next"
10923 transfer-ownership="full"
10924 nullable="1"
10925 allow-none="1">
10926 <doc xml:space="preserve"
10927 filename="gsk/gsktransform.c"
10928 line="571">the next transform</doc>
10929 <type name="Transform" c:type="GskTransform*"/>
10930 </instance-parameter>
10931 <parameter name="xx" transfer-ownership="none">
10932 <doc xml:space="preserve"
10933 filename="gsk/gsktransform.c"
10934 line="572">the xx member</doc>
10935 <type name="gfloat" c:type="float"/>
10936 </parameter>
10937 <parameter name="yx" transfer-ownership="none">
10938 <doc xml:space="preserve"
10939 filename="gsk/gsktransform.c"
10940 line="573">the yx member</doc>
10941 <type name="gfloat" c:type="float"/>
10942 </parameter>
10943 <parameter name="xy" transfer-ownership="none">
10944 <doc xml:space="preserve"
10945 filename="gsk/gsktransform.c"
10946 line="574">the xy member</doc>
10947 <type name="gfloat" c:type="float"/>
10948 </parameter>
10949 <parameter name="yy" transfer-ownership="none">
10950 <doc xml:space="preserve"
10951 filename="gsk/gsktransform.c"
10952 line="575">the yy member</doc>
10953 <type name="gfloat" c:type="float"/>
10954 </parameter>
10955 <parameter name="dx" transfer-ownership="none">
10956 <doc xml:space="preserve"
10957 filename="gsk/gsktransform.c"
10958 line="576">the x0 member</doc>
10959 <type name="gfloat" c:type="float"/>
10960 </parameter>
10961 <parameter name="dy" transfer-ownership="none">
10962 <doc xml:space="preserve"
10963 filename="gsk/gsktransform.c"
10964 line="577">the y0 member</doc>
10965 <type name="gfloat" c:type="float"/>
10966 </parameter>
10967 </parameters>
10968 </method>
10969 <method name="perspective" c:identifier="gsk_transform_perspective">
10970 <doc xml:space="preserve"
10971 filename="gsk/gsktransform.c"
10972 line="1729">Applies a perspective projection transform.
10973
10974This transform scales points in X and Y based on their Z value,
10975scaling points with positive Z values away from the origin, and
10976those with negative Z values towards the origin. Points
10977on the z=0 plane are unchanged.
10978
10979This function consumes @next. Use [method@Gsk.Transform.ref] first
10980if you want to keep it around.</doc>
10981 <source-position filename="gsk/gsktransform.h" line="133"/>
10982 <return-value transfer-ownership="full">
10983 <doc xml:space="preserve"
10984 filename="gsk/gsktransform.c"
10985 line="1746">The new transform</doc>
10986 <type name="Transform" c:type="GskTransform*"/>
10987 </return-value>
10988 <parameters>
10989 <instance-parameter name="next"
10990 transfer-ownership="full"
10991 nullable="1"
10992 allow-none="1">
10993 <doc xml:space="preserve"
10994 filename="gsk/gsktransform.c"
10995 line="1731">the next transform</doc>
10996 <type name="Transform" c:type="GskTransform*"/>
10997 </instance-parameter>
10998 <parameter name="depth" transfer-ownership="none">
10999 <doc xml:space="preserve"
11000 filename="gsk/gsktransform.c"
11001 line="1732">distance of the z=0 plane. Lower values give a more
11002 flattened pyramid and therefore a more pronounced
11003 perspective effect.</doc>
11004 <type name="gfloat" c:type="float"/>
11005 </parameter>
11006 </parameters>
11007 </method>
11008 <method name="print" c:identifier="gsk_transform_print">
11009 <doc xml:space="preserve"
11010 filename="gsk/gsktransform.c"
11011 line="1809">Converts the transform into a human-readable representation.
11012
11013The result of this function can later be parsed with
11014[func@Gsk.Transform.parse].</doc>
11015 <source-position filename="gsk/gsktransform.h" line="43"/>
11016 <return-value transfer-ownership="none">
11017 <type name="none" c:type="void"/>
11018 </return-value>
11019 <parameters>
11020 <instance-parameter name="self"
11021 transfer-ownership="none"
11022 nullable="1"
11023 allow-none="1">
11024 <doc xml:space="preserve"
11025 filename="gsk/gsktransform.c"
11026 line="1811">a transform</doc>
11027 <type name="Transform" c:type="GskTransform*"/>
11028 </instance-parameter>
11029 <parameter name="string" transfer-ownership="none">
11030 <doc xml:space="preserve"
11031 filename="gsk/gsktransform.c"
11032 line="1812">The string to print into</doc>
11033 <type name="GLib.String" c:type="GString*"/>
11034 </parameter>
11035 </parameters>
11036 </method>
11037 <method name="ref" c:identifier="gsk_transform_ref">
11038 <doc xml:space="preserve"
11039 filename="gsk/gsktransform.c"
11040 line="1774">Acquires a reference on the given transform.</doc>
11041 <source-position filename="gsk/gsktransform.h" line="38"/>
11042 <return-value transfer-ownership="none" nullable="1">
11043 <doc xml:space="preserve"
11044 filename="gsk/gsktransform.c"
11045 line="1780">the transform with an additional reference</doc>
11046 <type name="Transform" c:type="GskTransform*"/>
11047 </return-value>
11048 <parameters>
11049 <instance-parameter name="self"
11050 transfer-ownership="none"
11051 nullable="1"
11052 allow-none="1">
11053 <doc xml:space="preserve"
11054 filename="gsk/gsktransform.c"
11055 line="1776">a transform</doc>
11056 <type name="Transform" c:type="GskTransform*"/>
11057 </instance-parameter>
11058 </parameters>
11059 </method>
11060 <method name="rotate" c:identifier="gsk_transform_rotate">
11061 <doc xml:space="preserve"
11062 filename="gsk/gsktransform.c"
11063 line="1030">Rotates @next by an angle around the Z axis.
11064
11065The rotation happens around the origin point of (0, 0).
11066
11067This function consumes @next. Use [method@Gsk.Transform.ref] first
11068if you want to keep it around.</doc>
11069 <source-position filename="gsk/gsktransform.h" line="117"/>
11070 <return-value transfer-ownership="full" nullable="1">
11071 <doc xml:space="preserve"
11072 filename="gsk/gsktransform.c"
11073 line="1042">The new transform</doc>
11074 <type name="Transform" c:type="GskTransform*"/>
11075 </return-value>
11076 <parameters>
11077 <instance-parameter name="next"
11078 transfer-ownership="full"
11079 nullable="1"
11080 allow-none="1">
11081 <doc xml:space="preserve"
11082 filename="gsk/gsktransform.c"
11083 line="1032">the next transform</doc>
11084 <type name="Transform" c:type="GskTransform*"/>
11085 </instance-parameter>
11086 <parameter name="angle" transfer-ownership="none">
11087 <doc xml:space="preserve"
11088 filename="gsk/gsktransform.c"
11089 line="1033">the rotation angle, in degrees (clockwise)</doc>
11090 <type name="gfloat" c:type="float"/>
11091 </parameter>
11092 </parameters>
11093 </method>
11094 <method name="rotate_3d" c:identifier="gsk_transform_rotate_3d">
11095 <doc xml:space="preserve"
11096 filename="gsk/gsktransform.c"
11097 line="1163">Rotates @next @angle degrees around @axis.
11098
11099For a rotation in 2D space, use [method@Gsk.Transform.rotate]
11100
11101This function consumes @next. Use [method@Gsk.Transform.ref] first
11102if you want to keep it around.</doc>
11103 <source-position filename="gsk/gsktransform.h" line="120"/>
11104 <return-value transfer-ownership="full" nullable="1">
11105 <doc xml:space="preserve"
11106 filename="gsk/gsktransform.c"
11107 line="1176">The new transform</doc>
11108 <type name="Transform" c:type="GskTransform*"/>
11109 </return-value>
11110 <parameters>
11111 <instance-parameter name="next"
11112 transfer-ownership="full"
11113 nullable="1"
11114 allow-none="1">
11115 <doc xml:space="preserve"
11116 filename="gsk/gsktransform.c"
11117 line="1165">the next transform</doc>
11118 <type name="Transform" c:type="GskTransform*"/>
11119 </instance-parameter>
11120 <parameter name="angle" transfer-ownership="none">
11121 <doc xml:space="preserve"
11122 filename="gsk/gsktransform.c"
11123 line="1166">the rotation angle, in degrees (clockwise)</doc>
11124 <type name="gfloat" c:type="float"/>
11125 </parameter>
11126 <parameter name="axis" transfer-ownership="none">
11127 <doc xml:space="preserve"
11128 filename="gsk/gsktransform.c"
11129 line="1167">The rotation axis</doc>
11130 <type name="Graphene.Vec3" c:type="const graphene_vec3_t*"/>
11131 </parameter>
11132 </parameters>
11133 </method>
11134 <method name="scale" c:identifier="gsk_transform_scale">
11135 <doc xml:space="preserve"
11136 filename="gsk/gsktransform.c"
11137 line="1565">Scales @next in 2-dimensional space by the given factors.
11138
11139Use [method@Gsk.Transform.scale_3d] to scale in all 3 dimensions.
11140
11141This function consumes @next. Use [method@Gsk.Transform.ref] first
11142if you want to keep it around.</doc>
11143 <source-position filename="gsk/gsktransform.h" line="124"/>
11144 <return-value transfer-ownership="full" nullable="1">
11145 <doc xml:space="preserve"
11146 filename="gsk/gsktransform.c"
11147 line="1578">The new transform</doc>
11148 <type name="Transform" c:type="GskTransform*"/>
11149 </return-value>
11150 <parameters>
11151 <instance-parameter name="next"
11152 transfer-ownership="full"
11153 nullable="1"
11154 allow-none="1">
11155 <doc xml:space="preserve"
11156 filename="gsk/gsktransform.c"
11157 line="1567">the next transform</doc>
11158 <type name="Transform" c:type="GskTransform*"/>
11159 </instance-parameter>
11160 <parameter name="factor_x" transfer-ownership="none">
11161 <doc xml:space="preserve"
11162 filename="gsk/gsktransform.c"
11163 line="1568">scaling factor on the X axis</doc>
11164 <type name="gfloat" c:type="float"/>
11165 </parameter>
11166 <parameter name="factor_y" transfer-ownership="none">
11167 <doc xml:space="preserve"
11168 filename="gsk/gsktransform.c"
11169 line="1569">scaling factor on the Y axis</doc>
11170 <type name="gfloat" c:type="float"/>
11171 </parameter>
11172 </parameters>
11173 </method>
11174 <method name="scale_3d" c:identifier="gsk_transform_scale_3d">
11175 <doc xml:space="preserve"
11176 filename="gsk/gsktransform.c"
11177 line="1588">Scales @next by the given factors.
11178
11179This function consumes @next. Use [method@Gsk.Transform.ref] first
11180if you want to keep it around.</doc>
11181 <source-position filename="gsk/gsktransform.h" line="128"/>
11182 <return-value transfer-ownership="full" nullable="1">
11183 <doc xml:space="preserve"
11184 filename="gsk/gsktransform.c"
11185 line="1600">The new transform</doc>
11186 <type name="Transform" c:type="GskTransform*"/>
11187 </return-value>
11188 <parameters>
11189 <instance-parameter name="next"
11190 transfer-ownership="full"
11191 nullable="1"
11192 allow-none="1">
11193 <doc xml:space="preserve"
11194 filename="gsk/gsktransform.c"
11195 line="1590">the next transform</doc>
11196 <type name="Transform" c:type="GskTransform*"/>
11197 </instance-parameter>
11198 <parameter name="factor_x" transfer-ownership="none">
11199 <doc xml:space="preserve"
11200 filename="gsk/gsktransform.c"
11201 line="1591">scaling factor on the X axis</doc>
11202 <type name="gfloat" c:type="float"/>
11203 </parameter>
11204 <parameter name="factor_y" transfer-ownership="none">
11205 <doc xml:space="preserve"
11206 filename="gsk/gsktransform.c"
11207 line="1592">scaling factor on the Y axis</doc>
11208 <type name="gfloat" c:type="float"/>
11209 </parameter>
11210 <parameter name="factor_z" transfer-ownership="none">
11211 <doc xml:space="preserve"
11212 filename="gsk/gsktransform.c"
11213 line="1593">scaling factor on the Z axis</doc>
11214 <type name="gfloat" c:type="float"/>
11215 </parameter>
11216 </parameters>
11217 </method>
11218 <method name="skew" c:identifier="gsk_transform_skew" version="4.6">
11219 <doc xml:space="preserve"
11220 filename="gsk/gsktransform.c"
11221 line="1346">Applies a skew transform.
11222
11223This function consumes @next. Use [method@Gsk.Transform.ref] first
11224if you want to keep it around.</doc>
11225 <source-position filename="gsk/gsktransform.h" line="113"/>
11226 <return-value transfer-ownership="full" nullable="1">
11227 <doc xml:space="preserve"
11228 filename="gsk/gsktransform.c"
11229 line="1357">The new transform</doc>
11230 <type name="Transform" c:type="GskTransform*"/>
11231 </return-value>
11232 <parameters>
11233 <instance-parameter name="next"
11234 transfer-ownership="full"
11235 nullable="1"
11236 allow-none="1">
11237 <doc xml:space="preserve"
11238 filename="gsk/gsktransform.c"
11239 line="1348">the next transform</doc>
11240 <type name="Transform" c:type="GskTransform*"/>
11241 </instance-parameter>
11242 <parameter name="skew_x" transfer-ownership="none">
11243 <doc xml:space="preserve"
11244 filename="gsk/gsktransform.c"
11245 line="1349">skew factor, in degrees, on the X axis</doc>
11246 <type name="gfloat" c:type="float"/>
11247 </parameter>
11248 <parameter name="skew_y" transfer-ownership="none">
11249 <doc xml:space="preserve"
11250 filename="gsk/gsktransform.c"
11251 line="1350">skew factor, in degrees, on the Y axis</doc>
11252 <type name="gfloat" c:type="float"/>
11253 </parameter>
11254 </parameters>
11255 </method>
11256 <method name="to_2d" c:identifier="gsk_transform_to_2d">
11257 <doc xml:space="preserve"
11258 filename="gsk/gsktransform.c"
11259 line="1890">Converts a transform to a 2D transformation matrix.
11260
11261@self must be a 2D transformation. If you are not
11262sure, use
11263
11264 gsk_transform_get_category() >= GSK_TRANSFORM_CATEGORY_2D
11265
11266to check.
11267
11268The returned values are a subset of the full 4x4 matrix that
11269is computed by [method@Gsk.Transform.to_matrix] and have the
11270following layout:
11271
11272```
11273 | xx yx | | a b 0 |
11274 | xy yy | = | c d 0 |
11275 | dx dy | | tx ty 1 |
11276```
11277
11278This function can be used to convert between a `GskTransform`
11279and a matrix type from other 2D drawing libraries, in particular
11280Cairo.</doc>
11281 <source-position filename="gsk/gsktransform.h" line="54"/>
11282 <return-value transfer-ownership="none">
11283 <type name="none" c:type="void"/>
11284 </return-value>
11285 <parameters>
11286 <instance-parameter name="self" transfer-ownership="none">
11287 <doc xml:space="preserve"
11288 filename="gsk/gsktransform.c"
11289 line="1892">a 2D transform</doc>
11290 <type name="Transform" c:type="GskTransform*"/>
11291 </instance-parameter>
11292 <parameter name="out_xx"
11293 direction="out"
11294 caller-allocates="0"
11295 transfer-ownership="full">
11296 <doc xml:space="preserve"
11297 filename="gsk/gsktransform.c"
11298 line="1893">return location for the xx member</doc>
11299 <type name="gfloat" c:type="float*"/>
11300 </parameter>
11301 <parameter name="out_yx"
11302 direction="out"
11303 caller-allocates="0"
11304 transfer-ownership="full">
11305 <doc xml:space="preserve"
11306 filename="gsk/gsktransform.c"
11307 line="1894">return location for the yx member</doc>
11308 <type name="gfloat" c:type="float*"/>
11309 </parameter>
11310 <parameter name="out_xy"
11311 direction="out"
11312 caller-allocates="0"
11313 transfer-ownership="full">
11314 <doc xml:space="preserve"
11315 filename="gsk/gsktransform.c"
11316 line="1895">return location for the xy member</doc>
11317 <type name="gfloat" c:type="float*"/>
11318 </parameter>
11319 <parameter name="out_yy"
11320 direction="out"
11321 caller-allocates="0"
11322 transfer-ownership="full">
11323 <doc xml:space="preserve"
11324 filename="gsk/gsktransform.c"
11325 line="1896">return location for the yy member</doc>
11326 <type name="gfloat" c:type="float*"/>
11327 </parameter>
11328 <parameter name="out_dx"
11329 direction="out"
11330 caller-allocates="0"
11331 transfer-ownership="full">
11332 <doc xml:space="preserve"
11333 filename="gsk/gsktransform.c"
11334 line="1897">return location for the x0 member</doc>
11335 <type name="gfloat" c:type="float*"/>
11336 </parameter>
11337 <parameter name="out_dy"
11338 direction="out"
11339 caller-allocates="0"
11340 transfer-ownership="full">
11341 <doc xml:space="preserve"
11342 filename="gsk/gsktransform.c"
11343 line="1898">return location for the y0 member</doc>
11344 <type name="gfloat" c:type="float*"/>
11345 </parameter>
11346 </parameters>
11347 </method>
11348 <method name="to_2d_components"
11349 c:identifier="gsk_transform_to_2d_components"
11350 version="4.6">
11351 <doc xml:space="preserve"
11352 filename="gsk/gsktransform.c"
11353 line="1961">Converts a transform to 2D transformation factors.
11354
11355To recreate an equivalent transform from the factors returned
11356by this function, use
11357
11358 gsk_transform_skew (
11359 gsk_transform_scale (
11360 gsk_transform_rotate (
11361 gsk_transform_translate (NULL, &GRAPHENE_POINT_T (dx, dy)),
11362 angle),
11363 scale_x, scale_y),
11364 skew_x, skew_y)
11365
11366@self must be a 2D transformation. If you are not sure, use
11367
11368 gsk_transform_get_category() >= GSK_TRANSFORM_CATEGORY_2D
11369
11370to check.</doc>
11371 <source-position filename="gsk/gsktransform.h" line="62"/>
11372 <return-value transfer-ownership="none">
11373 <type name="none" c:type="void"/>
11374 </return-value>
11375 <parameters>
11376 <instance-parameter name="self" transfer-ownership="none">
11377 <doc xml:space="preserve"
11378 filename="gsk/gsktransform.c"
11379 line="1963">a transform</doc>
11380 <type name="Transform" c:type="GskTransform*"/>
11381 </instance-parameter>
11382 <parameter name="out_skew_x"
11383 direction="out"
11384 caller-allocates="0"
11385 transfer-ownership="full">
11386 <doc xml:space="preserve"
11387 filename="gsk/gsktransform.c"
11388 line="1964">return location for the skew factor
11389 in the x direction</doc>
11390 <type name="gfloat" c:type="float*"/>
11391 </parameter>
11392 <parameter name="out_skew_y"
11393 direction="out"
11394 caller-allocates="0"
11395 transfer-ownership="full">
11396 <doc xml:space="preserve"
11397 filename="gsk/gsktransform.c"
11398 line="1966">return location for the skew factor
11399 in the y direction</doc>
11400 <type name="gfloat" c:type="float*"/>
11401 </parameter>
11402 <parameter name="out_scale_x"
11403 direction="out"
11404 caller-allocates="0"
11405 transfer-ownership="full">
11406 <doc xml:space="preserve"
11407 filename="gsk/gsktransform.c"
11408 line="1968">return location for the scale
11409 factor in the x direction</doc>
11410 <type name="gfloat" c:type="float*"/>
11411 </parameter>
11412 <parameter name="out_scale_y"
11413 direction="out"
11414 caller-allocates="0"
11415 transfer-ownership="full">
11416 <doc xml:space="preserve"
11417 filename="gsk/gsktransform.c"
11418 line="1970">return location for the scale
11419 factor in the y direction</doc>
11420 <type name="gfloat" c:type="float*"/>
11421 </parameter>
11422 <parameter name="out_angle"
11423 direction="out"
11424 caller-allocates="0"
11425 transfer-ownership="full">
11426 <doc xml:space="preserve"
11427 filename="gsk/gsktransform.c"
11428 line="1972">return location for the rotation angle</doc>
11429 <type name="gfloat" c:type="float*"/>
11430 </parameter>
11431 <parameter name="out_dx"
11432 direction="out"
11433 caller-allocates="0"
11434 transfer-ownership="full">
11435 <doc xml:space="preserve"
11436 filename="gsk/gsktransform.c"
11437 line="1973">return location for the translation
11438 in the x direction</doc>
11439 <type name="gfloat" c:type="float*"/>
11440 </parameter>
11441 <parameter name="out_dy"
11442 direction="out"
11443 caller-allocates="0"
11444 transfer-ownership="full">
11445 <doc xml:space="preserve"
11446 filename="gsk/gsktransform.c"
11447 line="1975">return location for the translation
11448 in the y direction</doc>
11449 <type name="gfloat" c:type="float*"/>
11450 </parameter>
11451 </parameters>
11452 </method>
11453 <method name="to_affine" c:identifier="gsk_transform_to_affine">
11454 <doc xml:space="preserve"
11455 filename="gsk/gsktransform.c"
11456 line="2050">Converts a transform to 2D affine transformation factors.
11457
11458To recreate an equivalent transform from the factors returned
11459by this function, use
11460
11461 gsk_transform_scale (
11462 gsk_transform_translate (
11463 NULL,
11464 &GRAPHENE_POINT_T (dx, dy)),
11465 sx, sy)
11466
11467@self must be a 2D affine transformation. If you are not
11468sure, use
11469
11470 gsk_transform_get_category() >= GSK_TRANSFORM_CATEGORY_2D_AFFINE
11471
11472to check.</doc>
11473 <source-position filename="gsk/gsktransform.h" line="71"/>
11474 <return-value transfer-ownership="none">
11475 <type name="none" c:type="void"/>
11476 </return-value>
11477 <parameters>
11478 <instance-parameter name="self" transfer-ownership="none">
11479 <doc xml:space="preserve"
11480 filename="gsk/gsktransform.c"
11481 line="2052">a transform</doc>
11482 <type name="Transform" c:type="GskTransform*"/>
11483 </instance-parameter>
11484 <parameter name="out_scale_x"
11485 direction="out"
11486 caller-allocates="0"
11487 transfer-ownership="full">
11488 <doc xml:space="preserve"
11489 filename="gsk/gsktransform.c"
11490 line="2053">return location for the scale
11491 factor in the x direction</doc>
11492 <type name="gfloat" c:type="float*"/>
11493 </parameter>
11494 <parameter name="out_scale_y"
11495 direction="out"
11496 caller-allocates="0"
11497 transfer-ownership="full">
11498 <doc xml:space="preserve"
11499 filename="gsk/gsktransform.c"
11500 line="2055">return location for the scale
11501 factor in the y direction</doc>
11502 <type name="gfloat" c:type="float*"/>
11503 </parameter>
11504 <parameter name="out_dx"
11505 direction="out"
11506 caller-allocates="0"
11507 transfer-ownership="full">
11508 <doc xml:space="preserve"
11509 filename="gsk/gsktransform.c"
11510 line="2057">return location for the translation
11511 in the x direction</doc>
11512 <type name="gfloat" c:type="float*"/>
11513 </parameter>
11514 <parameter name="out_dy"
11515 direction="out"
11516 caller-allocates="0"
11517 transfer-ownership="full">
11518 <doc xml:space="preserve"
11519 filename="gsk/gsktransform.c"
11520 line="2059">return location for the translation
11521 in the y direction</doc>
11522 <type name="gfloat" c:type="float*"/>
11523 </parameter>
11524 </parameters>
11525 </method>
11526 <method name="to_matrix" c:identifier="gsk_transform_to_matrix">
11527 <doc xml:space="preserve"
11528 filename="gsk/gsktransform.c"
11529 line="1864">Computes the 4x4 matrix for the transform.
11530
11531The previous value of @out_matrix will be ignored.</doc>
11532 <source-position filename="gsk/gsktransform.h" line="51"/>
11533 <return-value transfer-ownership="none">
11534 <type name="none" c:type="void"/>
11535 </return-value>
11536 <parameters>
11537 <instance-parameter name="self"
11538 transfer-ownership="none"
11539 nullable="1"
11540 allow-none="1">
11541 <doc xml:space="preserve"
11542 filename="gsk/gsktransform.c"
11543 line="1866">a transform</doc>
11544 <type name="Transform" c:type="GskTransform*"/>
11545 </instance-parameter>
11546 <parameter name="out_matrix"
11547 direction="out"
11548 caller-allocates="1"
11549 transfer-ownership="none">
11550 <doc xml:space="preserve"
11551 filename="gsk/gsktransform.c"
11552 line="1867">return location for the matrix</doc>
11553 <type name="Graphene.Matrix" c:type="graphene_matrix_t*"/>
11554 </parameter>
11555 </parameters>
11556 </method>
11557 <method name="to_string" c:identifier="gsk_transform_to_string">
11558 <doc xml:space="preserve"
11559 filename="gsk/gsktransform.c"
11560 line="1840">Converts the transform into a human-readable string.
11561
11562The resulting string can be parsed with [func@Gsk.Transform.parse].
11563
11564This is a wrapper around [method@Gsk.Transform.print].</doc>
11565 <source-position filename="gsk/gsktransform.h" line="46"/>
11566 <return-value transfer-ownership="full">
11567 <doc xml:space="preserve"
11568 filename="gsk/gsktransform.c"
11569 line="1850">A new string for @self</doc>
11570 <type name="utf8" c:type="char*"/>
11571 </return-value>
11572 <parameters>
11573 <instance-parameter name="self"
11574 transfer-ownership="none"
11575 nullable="1"
11576 allow-none="1">
11577 <doc xml:space="preserve"
11578 filename="gsk/gsktransform.c"
11579 line="1842">a transform</doc>
11580 <type name="Transform" c:type="GskTransform*"/>
11581 </instance-parameter>
11582 </parameters>
11583 </method>
11584 <method name="to_translate" c:identifier="gsk_transform_to_translate">
11585 <doc xml:space="preserve"
11586 filename="gsk/gsktransform.c"
11587 line="2204">Converts a transform to a translation operation.
11588
11589@self must be a 2D transformation. If you are not
11590sure, use
11591
11592 gsk_transform_get_category() >= GSK_TRANSFORM_CATEGORY_2D_TRANSLATE
11593
11594to check.</doc>
11595 <source-position filename="gsk/gsktransform.h" line="77"/>
11596 <return-value transfer-ownership="none">
11597 <type name="none" c:type="void"/>
11598 </return-value>
11599 <parameters>
11600 <instance-parameter name="self" transfer-ownership="none">
11601 <doc xml:space="preserve"
11602 filename="gsk/gsktransform.c"
11603 line="2206">a transform</doc>
11604 <type name="Transform" c:type="GskTransform*"/>
11605 </instance-parameter>
11606 <parameter name="out_dx"
11607 direction="out"
11608 caller-allocates="0"
11609 transfer-ownership="full">
11610 <doc xml:space="preserve"
11611 filename="gsk/gsktransform.c"
11612 line="2207">return location for the translation
11613 in the x direction</doc>
11614 <type name="gfloat" c:type="float*"/>
11615 </parameter>
11616 <parameter name="out_dy"
11617 direction="out"
11618 caller-allocates="0"
11619 transfer-ownership="full">
11620 <doc xml:space="preserve"
11621 filename="gsk/gsktransform.c"
11622 line="2209">return location for the translation
11623 in the y direction</doc>
11624 <type name="gfloat" c:type="float*"/>
11625 </parameter>
11626 </parameters>
11627 </method>
11628 <method name="transform" c:identifier="gsk_transform_transform">
11629 <doc xml:space="preserve"
11630 filename="gsk/gsktransform.c"
11631 line="2246">Applies all the operations from @other to @next.
11632
11633This function consumes @next. Use [method@Gsk.Transform.ref] first
11634if you want to keep it around.</doc>
11635 <source-position filename="gsk/gsktransform.h" line="90"/>
11636 <return-value transfer-ownership="full" nullable="1">
11637 <doc xml:space="preserve"
11638 filename="gsk/gsktransform.c"
11639 line="2256">The new transform</doc>
11640 <type name="Transform" c:type="GskTransform*"/>
11641 </return-value>
11642 <parameters>
11643 <instance-parameter name="next"
11644 transfer-ownership="full"
11645 nullable="1"
11646 allow-none="1">
11647 <doc xml:space="preserve"
11648 filename="gsk/gsktransform.c"
11649 line="2248">transform to apply @other to</doc>
11650 <type name="Transform" c:type="GskTransform*"/>
11651 </instance-parameter>
11652 <parameter name="other"
11653 transfer-ownership="none"
11654 nullable="1"
11655 allow-none="1">
11656 <doc xml:space="preserve"
11657 filename="gsk/gsktransform.c"
11658 line="2249">transform to apply</doc>
11659 <type name="Transform" c:type="GskTransform*"/>
11660 </parameter>
11661 </parameters>
11662 </method>
11663 <method name="transform_bounds"
11664 c:identifier="gsk_transform_transform_bounds">
11665 <doc xml:space="preserve"
11666 filename="gsk/gsktransform.c"
11667 line="2406">Transforms a rectangle using the given transform.
11668
11669The result is the bounding box containing the coplanar quad.</doc>
11670 <source-position filename="gsk/gsktransform.h" line="137"/>
11671 <return-value transfer-ownership="none">
11672 <type name="none" c:type="void"/>
11673 </return-value>
11674 <parameters>
11675 <instance-parameter name="self" transfer-ownership="none">
11676 <doc xml:space="preserve"
11677 filename="gsk/gsktransform.c"
11678 line="2408">a transform</doc>
11679 <type name="Transform" c:type="GskTransform*"/>
11680 </instance-parameter>
11681 <parameter name="rect" transfer-ownership="none">
11682 <doc xml:space="preserve"
11683 filename="gsk/gsktransform.c"
11684 line="2409">the rectangle to transform</doc>
11685 <type name="Graphene.Rect" c:type="const graphene_rect_t*"/>
11686 </parameter>
11687 <parameter name="out_rect"
11688 direction="out"
11689 caller-allocates="1"
11690 transfer-ownership="none">
11691 <doc xml:space="preserve"
11692 filename="gsk/gsktransform.c"
11693 line="2410">return location for the bounds
11694 of the transformed rectangle</doc>
11695 <type name="Graphene.Rect" c:type="graphene_rect_t*"/>
11696 </parameter>
11697 </parameters>
11698 </method>
11699 <method name="transform_point"
11700 c:identifier="gsk_transform_transform_point">
11701 <doc xml:space="preserve"
11702 filename="gsk/gsktransform.c"
11703 line="2487">Transforms a point using the given transform.</doc>
11704 <source-position filename="gsk/gsktransform.h" line="141"/>
11705 <return-value transfer-ownership="none">
11706 <type name="none" c:type="void"/>
11707 </return-value>
11708 <parameters>
11709 <instance-parameter name="self" transfer-ownership="none">
11710 <doc xml:space="preserve"
11711 filename="gsk/gsktransform.c"
11712 line="2489">a transform</doc>
11713 <type name="Transform" c:type="GskTransform*"/>
11714 </instance-parameter>
11715 <parameter name="point" transfer-ownership="none">
11716 <doc xml:space="preserve"
11717 filename="gsk/gsktransform.c"
11718 line="2490">the point to transform</doc>
11719 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
11720 </parameter>
11721 <parameter name="out_point"
11722 direction="out"
11723 caller-allocates="1"
11724 transfer-ownership="none">
11725 <doc xml:space="preserve"
11726 filename="gsk/gsktransform.c"
11727 line="2491">return location for
11728 the transformed point</doc>
11729 <type name="Graphene.Point" c:type="graphene_point_t*"/>
11730 </parameter>
11731 </parameters>
11732 </method>
11733 <method name="translate" c:identifier="gsk_transform_translate">
11734 <doc xml:space="preserve"
11735 filename="gsk/gsktransform.c"
11736 line="771">Translates @next in 2-dimensional space by @point.
11737
11738This function consumes @next. Use [method@Gsk.Transform.ref] first
11739if you want to keep it around.</doc>
11740 <source-position filename="gsk/gsktransform.h" line="107"/>
11741 <return-value transfer-ownership="full" nullable="1">
11742 <doc xml:space="preserve"
11743 filename="gsk/gsktransform.c"
11744 line="781">The new transform</doc>
11745 <type name="Transform" c:type="GskTransform*"/>
11746 </return-value>
11747 <parameters>
11748 <instance-parameter name="next"
11749 transfer-ownership="full"
11750 nullable="1"
11751 allow-none="1">
11752 <doc xml:space="preserve"
11753 filename="gsk/gsktransform.c"
11754 line="773">the next transform</doc>
11755 <type name="Transform" c:type="GskTransform*"/>
11756 </instance-parameter>
11757 <parameter name="point" transfer-ownership="none">
11758 <doc xml:space="preserve"
11759 filename="gsk/gsktransform.c"
11760 line="774">the point to translate the transform by</doc>
11761 <type name="Graphene.Point" c:type="const graphene_point_t*"/>
11762 </parameter>
11763 </parameters>
11764 </method>
11765 <method name="translate_3d" c:identifier="gsk_transform_translate_3d">
11766 <doc xml:space="preserve"
11767 filename="gsk/gsktransform.c"
11768 line="794">Translates @next by @point.
11769
11770This function consumes @next. Use [method@Gsk.Transform.ref] first
11771if you want to keep it around.</doc>
11772 <source-position filename="gsk/gsktransform.h" line="110"/>
11773 <return-value transfer-ownership="full" nullable="1">
11774 <doc xml:space="preserve"
11775 filename="gsk/gsktransform.c"
11776 line="804">The new transform</doc>
11777 <type name="Transform" c:type="GskTransform*"/>
11778 </return-value>
11779 <parameters>
11780 <instance-parameter name="next"
11781 transfer-ownership="full"
11782 nullable="1"
11783 allow-none="1">
11784 <doc xml:space="preserve"
11785 filename="gsk/gsktransform.c"
11786 line="796">the next transform</doc>
11787 <type name="Transform" c:type="GskTransform*"/>
11788 </instance-parameter>
11789 <parameter name="point" transfer-ownership="none">
11790 <doc xml:space="preserve"
11791 filename="gsk/gsktransform.c"
11792 line="797">the point to translate the transform by</doc>
11793 <type name="Graphene.Point3D" c:type="const graphene_point3d_t*"/>
11794 </parameter>
11795 </parameters>
11796 </method>
11797 <method name="unref" c:identifier="gsk_transform_unref">
11798 <doc xml:space="preserve"
11799 filename="gsk/gsktransform.c"
11800 line="1791">Releases a reference on the given transform.
11801
11802If the reference was the last, the resources associated to the @self are
11803freed.</doc>
11804 <source-position filename="gsk/gsktransform.h" line="40"/>
11805 <return-value transfer-ownership="none">
11806 <type name="none" c:type="void"/>
11807 </return-value>
11808 <parameters>
11809 <instance-parameter name="self"
11810 transfer-ownership="none"
11811 nullable="1"
11812 allow-none="1">
11813 <doc xml:space="preserve"
11814 filename="gsk/gsktransform.c"
11815 line="1793">a transform</doc>
11816 <type name="Transform" c:type="GskTransform*"/>
11817 </instance-parameter>
11818 </parameters>
11819 </method>
11820 <function name="parse" c:identifier="gsk_transform_parse">
11821 <doc xml:space="preserve"
11822 filename="gsk/gsktransform.c"
11823 line="2782">Parses a given into a transform.
11824
11825Strings printed via [method@Gsk.Transform.to_string]
11826can be read in again successfully using this function.
11827
11828If @string does not describe a valid transform, false
11829is returned and `NULL` is put in @out_transform.</doc>
11830 <source-position filename="gsk/gsktransform.h" line="48"/>
11831 <return-value transfer-ownership="none">
11832 <doc xml:space="preserve"
11833 filename="gsk/gsktransform.c"
11834 line="2795">true if @string described a valid transform</doc>
11835 <type name="gboolean" c:type="gboolean"/>
11836 </return-value>
11837 <parameters>
11838 <parameter name="string" transfer-ownership="none">
11839 <doc xml:space="preserve"
11840 filename="gsk/gsktransform.c"
11841 line="2784">the string to parse</doc>
11842 <type name="utf8" c:type="const char*"/>
11843 </parameter>
11844 <parameter name="out_transform"
11845 direction="out"
11846 caller-allocates="0"
11847 transfer-ownership="full">
11848 <doc xml:space="preserve"
11849 filename="gsk/gsktransform.c"
11850 line="2785">return location for the transform</doc>
11851 <type name="Transform" c:type="GskTransform**"/>
11852 </parameter>
11853 </parameters>
11854 </function>
11855 </record>
11856 <enumeration name="TransformCategory"
11857 glib:type-name="GskTransformCategory"
11858 glib:get-type="gsk_transform_category_get_type"
11859 c:type="GskTransformCategory">
11860 <doc xml:space="preserve"
11861 filename="gsk/gskenums.h"
11862 line="397">The categories of matrices relevant for GSK and GTK.
11863
11864Note that any category includes matrices of all later categories.
11865So if you want to for example check if a matrix is a 2D matrix,
11866`category >= GSK_TRANSFORM_CATEGORY_2D` is the way to do this.
11867
11868Also keep in mind that rounding errors may cause matrices to not
11869conform to their categories. Otherwise, matrix operations done via
11870multiplication will not worsen categories. So for the matrix
11871multiplication `C = A * B`, `category(C) = MIN (category(A), category(B))`.</doc>
11872 <member name="unknown"
11873 value="0"
11874 c:identifier="GSK_TRANSFORM_CATEGORY_UNKNOWN"
11875 glib:nick="unknown"
11876 glib:name="GSK_TRANSFORM_CATEGORY_UNKNOWN">
11877 <doc xml:space="preserve"
11878 filename="gsk/gskenums.h"
11879 line="399">The category of the matrix has not been
11880 determined.</doc>
11881 </member>
11882 <member name="any"
11883 value="1"
11884 c:identifier="GSK_TRANSFORM_CATEGORY_ANY"
11885 glib:nick="any"
11886 glib:name="GSK_TRANSFORM_CATEGORY_ANY">
11887 <doc xml:space="preserve"
11888 filename="gsk/gskenums.h"
11889 line="401">Analyzing the matrix concluded that it does
11890 not fit in any other category.</doc>
11891 </member>
11892 <member name="3d"
11893 value="2"
11894 c:identifier="GSK_TRANSFORM_CATEGORY_3D"
11895 glib:nick="3d"
11896 glib:name="GSK_TRANSFORM_CATEGORY_3D">
11897 <doc xml:space="preserve"
11898 filename="gsk/gskenums.h"
11899 line="403">The matrix is a 3D matrix. This means that
11900 the w column (the last column) has the values (0, 0, 0, 1).</doc>
11901 </member>
11902 <member name="2d"
11903 value="3"
11904 c:identifier="GSK_TRANSFORM_CATEGORY_2D"
11905 glib:nick="2d"
11906 glib:name="GSK_TRANSFORM_CATEGORY_2D">
11907 <doc xml:space="preserve"
11908 filename="gsk/gskenums.h"
11909 line="405">The matrix is a 2D matrix. This is equivalent
11910 to graphene_matrix_is_2d() returning %TRUE. In particular, this
11911 means that Cairo can deal with the matrix.</doc>
11912 </member>
11913 <member name="2d_affine"
11914 value="4"
11915 c:identifier="GSK_TRANSFORM_CATEGORY_2D_AFFINE"
11916 glib:nick="2d-affine"
11917 glib:name="GSK_TRANSFORM_CATEGORY_2D_AFFINE">
11918 <doc xml:space="preserve"
11919 filename="gsk/gskenums.h"
11920 line="408">The matrix is a combination of 2D scale
11921 and 2D translation operations. In particular, this means that any
11922 rectangle can be transformed exactly using this matrix.</doc>
11923 </member>
11924 <member name="2d_translate"
11925 value="5"
11926 c:identifier="GSK_TRANSFORM_CATEGORY_2D_TRANSLATE"
11927 glib:nick="2d-translate"
11928 glib:name="GSK_TRANSFORM_CATEGORY_2D_TRANSLATE">
11929 <doc xml:space="preserve"
11930 filename="gsk/gskenums.h"
11931 line="411">The matrix is a 2D translation.</doc>
11932 </member>
11933 <member name="identity"
11934 value="6"
11935 c:identifier="GSK_TRANSFORM_CATEGORY_IDENTITY"
11936 glib:nick="identity"
11937 glib:name="GSK_TRANSFORM_CATEGORY_IDENTITY">
11938 <doc xml:space="preserve"
11939 filename="gsk/gskenums.h"
11940 line="412">The matrix is the identity matrix.</doc>
11941 </member>
11942 </enumeration>
11943 <class name="TransformNode"
11944 c:symbol-prefix="transform_node"
11945 c:type="GskTransformNode"
11946 parent="RenderNode"
11947 glib:type-name="GskTransformNode"
11948 glib:get-type="gsk_transform_node_get_type"
11949 glib:fundamental="1">
11950 <doc xml:space="preserve"
11951 filename="gsk/gskrendernodeimpl.c"
11952 line="4593">A render node applying a `GskTransform` to its single child node.</doc>
11953 <constructor name="new" c:identifier="gsk_transform_node_new">
11954 <doc xml:space="preserve"
11955 filename="gsk/gskrendernodeimpl.c"
11956 line="4773">Creates a `GskRenderNode` that will transform the given @child
11957with the given @transform.</doc>
11958 <source-position filename="gsk/gskrendernode.h" line="416"/>
11959 <return-value transfer-ownership="full">
11960 <doc xml:space="preserve"
11961 filename="gsk/gskrendernodeimpl.c"
11962 line="4781">A new `GskRenderNode`</doc>
11963 <type name="TransformNode" c:type="GskRenderNode*"/>
11964 </return-value>
11965 <parameters>
11966 <parameter name="child" transfer-ownership="none">
11967 <doc xml:space="preserve"
11968 filename="gsk/gskrendernodeimpl.c"
11969 line="4775">The node to transform</doc>
11970 <type name="RenderNode" c:type="GskRenderNode*"/>
11971 </parameter>
11972 <parameter name="transform" transfer-ownership="none">
11973 <doc xml:space="preserve"
11974 filename="gsk/gskrendernodeimpl.c"
11975 line="4776">The transform to apply</doc>
11976 <type name="Transform" c:type="GskTransform*"/>
11977 </parameter>
11978 </parameters>
11979 </constructor>
11980 <method name="get_child" c:identifier="gsk_transform_node_get_child">
11981 <doc xml:space="preserve"
11982 filename="gsk/gskrendernodeimpl.c"
11983 line="4818">Gets the child node that is getting transformed by the given @node.</doc>
11984 <source-position filename="gsk/gskrendernode.h" line="419"/>
11985 <return-value transfer-ownership="none">
11986 <doc xml:space="preserve"
11987 filename="gsk/gskrendernodeimpl.c"
11988 line="4824">The child that is getting transformed</doc>
11989 <type name="RenderNode" c:type="GskRenderNode*"/>
11990 </return-value>
11991 <parameters>
11992 <instance-parameter name="node" transfer-ownership="none">
11993 <doc xml:space="preserve"
11994 filename="gsk/gskrendernodeimpl.c"
11995 line="4820">a `GskRenderNode` for a transform</doc>
11996 <type name="TransformNode" c:type="const GskRenderNode*"/>
11997 </instance-parameter>
11998 </parameters>
11999 </method>
12000 <method name="get_transform"
12001 c:identifier="gsk_transform_node_get_transform">
12002 <doc xml:space="preserve"
12003 filename="gsk/gskrendernodeimpl.c"
12004 line="4834">Retrieves the `GskTransform` used by the @node.</doc>
12005 <source-position filename="gsk/gskrendernode.h" line="421"/>
12006 <return-value transfer-ownership="none">
12007 <doc xml:space="preserve"
12008 filename="gsk/gskrendernodeimpl.c"
12009 line="4840">a `GskTransform`</doc>
12010 <type name="Transform" c:type="GskTransform*"/>
12011 </return-value>
12012 <parameters>
12013 <instance-parameter name="node" transfer-ownership="none">
12014 <doc xml:space="preserve"
12015 filename="gsk/gskrendernodeimpl.c"
12016 line="4836">a `GskRenderNode` for a transform</doc>
12017 <type name="TransformNode" c:type="const GskRenderNode*"/>
12018 </instance-parameter>
12019 </parameters>
12020 </method>
12021 </class>
12022 <function-macro name="VALUE_HOLDS_RENDER_NODE"
12023 c:identifier="GSK_VALUE_HOLDS_RENDER_NODE"
12024 introspectable="0">
12025 <doc xml:space="preserve"
12026 filename="gsk/gskrendernode.h"
12027 line="636">Evaluates to true if @value was initialized with `GSK_TYPE_RENDER_NODE`.</doc>
12028 <source-position filename="gsk/gskrendernode.h" line="642"/>
12029 <parameters>
12030 <parameter name="value">
12031 <doc xml:space="preserve"
12032 filename="gsk/gskrendernode.h"
12033 line="638">a `GValue`</doc>
12034 </parameter>
12035 </parameters>
12036 </function-macro>
12037 <function-macro name="VULKAN_RENDERER"
12038 c:identifier="GSK_VULKAN_RENDERER"
12039 introspectable="0">
12040 <source-position filename="gsk/gpu/gskvulkanrenderer.h" line="27"/>
12041 <parameters>
12042 <parameter name="obj">
12043 </parameter>
12044 </parameters>
12045 </function-macro>
12046 <function-macro name="VULKAN_RENDERER_CLASS"
12047 c:identifier="GSK_VULKAN_RENDERER_CLASS"
12048 introspectable="0">
12049 <source-position filename="gsk/gpu/gskvulkanrenderer.h" line="29"/>
12050 <parameters>
12051 <parameter name="klass">
12052 </parameter>
12053 </parameters>
12054 </function-macro>
12055 <function-macro name="VULKAN_RENDERER_GET_CLASS"
12056 c:identifier="GSK_VULKAN_RENDERER_GET_CLASS"
12057 introspectable="0">
12058 <source-position filename="gsk/gpu/gskvulkanrenderer.h" line="31"/>
12059 <parameters>
12060 <parameter name="obj">
12061 </parameter>
12062 </parameters>
12063 </function-macro>
12064 <class name="VulkanRenderer"
12065 c:symbol-prefix="vulkan_renderer"
12066 c:type="GskVulkanRenderer"
12067 parent="Renderer"
12068 glib:type-name="GskVulkanRenderer"
12069 glib:get-type="gsk_vulkan_renderer_get_type"
12070 glib:type-struct="VulkanRendererClass">
12071 <doc xml:space="preserve"
12072 filename="gsk/gpu/gskvulkanrenderer.h"
12073 line="33">Renders a GSK rendernode tree with Vulkan.
12074
12075This renderer will fail to realize if Vulkan is not supported.</doc>
12076 <source-position filename="gsk/gpu/gskvulkanrenderer.h" line="41"/>
12077 <constructor name="new" c:identifier="gsk_vulkan_renderer_new">
12078 <doc xml:space="preserve"
12079 filename="gsk/gpu/gskvulkanrenderer.c"
12080 line="192">Creates a new Vulkan renderer.
12081
12082The Vulkan renderer is a renderer that uses the Vulkan library for
12083rendering.
12084
12085This renderer will fail to realize when GTK was not compiled with
12086Vulkan support.</doc>
12087 <source-position filename="gsk/gpu/gskvulkanrenderer.h" line="47"/>
12088 <return-value transfer-ownership="full">
12089 <doc xml:space="preserve"
12090 filename="gsk/gpu/gskvulkanrenderer.c"
12091 line="203">a new Vulkan renderer</doc>
12092 <type name="Renderer" c:type="GskRenderer*"/>
12093 </return-value>
12094 </constructor>
12095 </class>
12096 <record name="VulkanRendererClass"
12097 c:type="GskVulkanRendererClass"
12098 disguised="1"
12099 opaque="1"
12100 glib:is-gtype-struct-for="VulkanRenderer">
12101 <source-position filename="gsk/gpu/gskvulkanrenderer.h" line="41"/>
12102 </record>
12103 <function name="component_transfer_equal"
12104 c:identifier="gsk_component_transfer_equal"
12105 moved-to="ComponentTransfer.equal"
12106 version="4.20">
12107 <doc xml:space="preserve"
12108 filename="gsk/gskcomponenttransfer.c"
12109 line="313">Compares two component transfers for equality.</doc>
12110 <source-position filename="gsk/gskcomponenttransfer.h" line="57"/>
12111 <return-value transfer-ownership="none">
12112 <doc xml:space="preserve"
12113 filename="gsk/gskcomponenttransfer.c"
12114 line="320">true if @self and @other are equal</doc>
12115 <type name="gboolean" c:type="gboolean"/>
12116 </return-value>
12117 <parameters>
12118 <parameter name="self" transfer-ownership="none">
12119 <doc xml:space="preserve"
12120 filename="gsk/gskcomponenttransfer.c"
12121 line="315">a component transfer</doc>
12122 <type name="gpointer" c:type="gconstpointer"/>
12123 </parameter>
12124 <parameter name="other" transfer-ownership="none">
12125 <doc xml:space="preserve"
12126 filename="gsk/gskcomponenttransfer.c"
12127 line="316">another component transfer</doc>
12128 <type name="gpointer" c:type="gconstpointer"/>
12129 </parameter>
12130 </parameters>
12131 </function>
12132 <function name="path_parse"
12133 c:identifier="gsk_path_parse"
12134 moved-to="Path.parse"
12135 version="4.14">
12136 <doc xml:space="preserve"
12137 filename="gsk/gskpathparser.c"
12138 line="358">Constructs a path from a serialized form.
12139
12140The string is expected to be in (a superset of)
12141[SVG path syntax](https://www.w3.org/TR/SVG11/paths.html#PathData),
12142as e.g. produced by [method@Gsk.Path.to_string].
12143
12144A high-level summary of the syntax:
12145
12146- `M x y` Move to `(x, y)`
12147- `L x y` Add a line from the current point to `(x, y)`
12148- `Q x1 y1 x2 y2` Add a quadratic Bézier from the current point to `(x2, y2)`, with control point `(x1, y1)`
12149- `C x1 y1 x2 y2 x3 y3` Add a cubic Bézier from the current point to `(x3, y3)`, with control points `(x1, y1)` and `(x2, y2)`
12150- `Z` Close the contour by drawing a line back to the start point
12151- `H x` Add a horizontal line from the current point to the given x value
12152- `V y` Add a vertical line from the current point to the given y value
12153- `T x2 y2` Add a quadratic Bézier, using the reflection of the previous segments' control point as control point
12154- `S x2 y2 x3 y3` Add a cubic Bézier, using the reflection of the previous segments' second control point as first control point
12155- `A rx ry r l s x y` Add an elliptical arc from the current point to `(x, y)` with radii rx and ry. See the SVG documentation for how the other parameters influence the arc.
12156- `O x1 y1 x2 y2 w` Add a rational quadratic Bézier from the current point to `(x2, y2)` with control point `(x1, y1)` and weight `w`.
12157
12158All the commands have lowercase variants that interpret coordinates
12159relative to the current point.
12160
12161The `O` command is an extension that is not supported in SVG.</doc>
12162 <source-position filename="gsk/gskpath.h" line="100"/>
12163 <return-value transfer-ownership="full" nullable="1">
12164 <doc xml:space="preserve"
12165 filename="gsk/gskpathparser.c"
12166 line="387">a new `GskPath`, or `NULL` if @string could not be parsed</doc>
12167 <type name="Path" c:type="GskPath*"/>
12168 </return-value>
12169 <parameters>
12170 <parameter name="string" transfer-ownership="none">
12171 <doc xml:space="preserve"
12172 filename="gsk/gskpathparser.c"
12173 line="360">a string</doc>
12174 <type name="utf8" c:type="const char*"/>
12175 </parameter>
12176 </parameters>
12177 </function>
12178 <function name="serialization_error_quark"
12179 c:identifier="gsk_serialization_error_quark"
12180 moved-to="SerializationError.quark">
12181 <doc xml:space="preserve"
12182 filename="gsk/gskrendernode.c"
12183 line="53">Registers an error quark for [class@Gsk.RenderNode] errors.</doc>
12184 <return-value transfer-ownership="none">
12185 <doc xml:space="preserve"
12186 filename="gsk/gskrendernode.c"
12187 line="58">the error quark</doc>
12188 <type name="GLib.Quark" c:type="GQuark"/>
12189 </return-value>
12190 </function>
12191 <function name="stroke_equal"
12192 c:identifier="gsk_stroke_equal"
12193 moved-to="Stroke.equal"
12194 version="4.14">
12195 <doc xml:space="preserve"
12196 filename="gsk/gskstroke.c"
12197 line="172">Checks if two strokes are identical.</doc>
12198 <source-position filename="gsk/gskstroke.h" line="43"/>
12199 <return-value transfer-ownership="none">
12200 <doc xml:space="preserve"
12201 filename="gsk/gskstroke.c"
12202 line="179">true if the two strokes are equal, false otherwise</doc>
12203 <type name="gboolean" c:type="gboolean"/>
12204 </return-value>
12205 <parameters>
12206 <parameter name="stroke1"
12207 transfer-ownership="none"
12208 nullable="1"
12209 allow-none="1">
12210 <doc xml:space="preserve"
12211 filename="gsk/gskstroke.c"
12212 line="174">the first stroke</doc>
12213 <type name="gpointer" c:type="gconstpointer"/>
12214 </parameter>
12215 <parameter name="stroke2"
12216 transfer-ownership="none"
12217 nullable="1"
12218 allow-none="1">
12219 <doc xml:space="preserve"
12220 filename="gsk/gskstroke.c"
12221 line="175">the second stroke</doc>
12222 <type name="gpointer" c:type="gconstpointer"/>
12223 </parameter>
12224 </parameters>
12225 </function>
12226 <function name="transform_parse"
12227 c:identifier="gsk_transform_parse"
12228 moved-to="Transform.parse">
12229 <doc xml:space="preserve"
12230 filename="gsk/gsktransform.c"
12231 line="2782">Parses a given into a transform.
12232
12233Strings printed via [method@Gsk.Transform.to_string]
12234can be read in again successfully using this function.
12235
12236If @string does not describe a valid transform, false
12237is returned and `NULL` is put in @out_transform.</doc>
12238 <source-position filename="gsk/gsktransform.h" line="48"/>
12239 <return-value transfer-ownership="none">
12240 <doc xml:space="preserve"
12241 filename="gsk/gsktransform.c"
12242 line="2795">true if @string described a valid transform</doc>
12243 <type name="gboolean" c:type="gboolean"/>
12244 </return-value>
12245 <parameters>
12246 <parameter name="string" transfer-ownership="none">
12247 <doc xml:space="preserve"
12248 filename="gsk/gsktransform.c"
12249 line="2784">the string to parse</doc>
12250 <type name="utf8" c:type="const char*"/>
12251 </parameter>
12252 <parameter name="out_transform"
12253 direction="out"
12254 caller-allocates="0"
12255 transfer-ownership="full">
12256 <doc xml:space="preserve"
12257 filename="gsk/gsktransform.c"
12258 line="2785">return location for the transform</doc>
12259 <type name="Transform" c:type="GskTransform**"/>
12260 </parameter>
12261 </parameters>
12262 </function>
12263 <function name="value_dup_render_node"
12264 c:identifier="gsk_value_dup_render_node"
12265 version="4.6">
12266 <doc xml:space="preserve"
12267 filename="gsk/gskrendernode.c"
12268 line="793">Retrieves the render node stored inside a `GValue`,
12269and acquires a reference to it.</doc>
12270 <source-position filename="gsk/gskrendernode.h" line="653"/>
12271 <return-value transfer-ownership="full" nullable="1">
12272 <doc xml:space="preserve"
12273 filename="gsk/gskrendernode.c"
12274 line="800">the render node</doc>
12275 <type name="RenderNode" c:type="GskRenderNode*"/>
12276 </return-value>
12277 <parameters>
12278 <parameter name="value" transfer-ownership="none">
12279 <doc xml:space="preserve"
12280 filename="gsk/gskrendernode.c"
12281 line="795">a [struct@GObject.Value] initialized with type `GSK_TYPE_RENDER_NODE`</doc>
12282 <type name="GObject.Value" c:type="const GValue*"/>
12283 </parameter>
12284 </parameters>
12285 </function>
12286 <function name="value_get_render_node"
12287 c:identifier="gsk_value_get_render_node"
12288 version="4.6">
12289 <doc xml:space="preserve"
12290 filename="gsk/gskrendernode.c"
12291 line="775">Retrieves the render node stored inside a `GValue`.</doc>
12292 <source-position filename="gsk/gskrendernode.h" line="651"/>
12293 <return-value transfer-ownership="none" nullable="1">
12294 <doc xml:space="preserve"
12295 filename="gsk/gskrendernode.c"
12296 line="781">the render node</doc>
12297 <type name="RenderNode" c:type="GskRenderNode*"/>
12298 </return-value>
12299 <parameters>
12300 <parameter name="value" transfer-ownership="none">
12301 <doc xml:space="preserve"
12302 filename="gsk/gskrendernode.c"
12303 line="777">a `GValue` initialized with type `GSK_TYPE_RENDER_NODE`</doc>
12304 <type name="GObject.Value" c:type="const GValue*"/>
12305 </parameter>
12306 </parameters>
12307 </function>
12308 <function name="value_set_render_node"
12309 c:identifier="gsk_value_set_render_node"
12310 version="4.6">
12311 <doc xml:space="preserve"
12312 filename="gsk/gskrendernode.c"
12313 line="701">Stores the given render node inside a `GValue`.
12314
12315The [struct@GObject.Value] will acquire a reference
12316to the render node.</doc>
12317 <source-position filename="gsk/gskrendernode.h" line="645"/>
12318 <return-value transfer-ownership="none">
12319 <type name="none" c:type="void"/>
12320 </return-value>
12321 <parameters>
12322 <parameter name="value" transfer-ownership="none">
12323 <doc xml:space="preserve"
12324 filename="gsk/gskrendernode.c"
12325 line="703">a [struct@GObject.Value] initialized with type `GSK_TYPE_RENDER_NODE`</doc>
12326 <type name="GObject.Value" c:type="GValue*"/>
12327 </parameter>
12328 <parameter name="node" transfer-ownership="none">
12329 <doc xml:space="preserve"
12330 filename="gsk/gskrendernode.c"
12331 line="704">a render node</doc>
12332 <type name="RenderNode" c:type="GskRenderNode*"/>
12333 </parameter>
12334 </parameters>
12335 </function>
12336 <function name="value_take_render_node"
12337 c:identifier="gsk_value_take_render_node"
12338 version="4.6">
12339 <doc xml:space="preserve"
12340 filename="gsk/gskrendernode.c"
12341 line="738">Stores the given render node inside a `GValue`.
12342
12343This function transfers the ownership of the
12344render node to the `GValue`.</doc>
12345 <source-position filename="gsk/gskrendernode.h" line="648"/>
12346 <return-value transfer-ownership="none">
12347 <type name="none" c:type="void"/>
12348 </return-value>
12349 <parameters>
12350 <parameter name="value" transfer-ownership="none">
12351 <doc xml:space="preserve"
12352 filename="gsk/gskrendernode.c"
12353 line="740">a [struct@GObject.Value] initialized with type `GSK_TYPE_RENDER_NODE`</doc>
12354 <type name="GObject.Value" c:type="GValue*"/>
12355 </parameter>
12356 <parameter name="node"
12357 transfer-ownership="full"
12358 nullable="1"
12359 allow-none="1">
12360 <doc xml:space="preserve"
12361 filename="gsk/gskrendernode.c"
12362 line="741">a render node</doc>
12363 <type name="RenderNode" c:type="GskRenderNode*"/>
12364 </parameter>
12365 </parameters>
12366 </function>
12367 </namespace>
12368</repository>