<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
<!ENTITY pi "&#960;">
<!ENTITY solidus "&#8260;">
]>
<refentry id="GtkSnapshot">
<refmeta>
<refentrytitle role="top_of_page" id="GtkSnapshot.top_of_page">GtkSnapshot</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GTK4 Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>GtkSnapshot</refname>
<refpurpose>Auxiliary object for snapshots</refpurpose>
</refnamediv>

<refsect1 id="GtkSnapshot.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_proto_type" colwidth="150px"/>
<colspec colname="functions_proto_name"/>
<tbody>
<row><entry role="function_type"><link linkend="GtkSnapshot"><returnvalue>GtkSnapshot</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-snapshot-new">gtk_snapshot_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GskRenderNode"><returnvalue>GskRenderNode</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-snapshot-to-node">gtk_snapshot_to_node</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkPaintable"><returnvalue>GdkPaintable</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-snapshot-to-paintable">gtk_snapshot_to_paintable</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GskRenderNode"><returnvalue>GskRenderNode</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-snapshot-free-to-node">gtk_snapshot_free_to_node</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkPaintable"><returnvalue>GdkPaintable</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-snapshot-free-to-paintable">gtk_snapshot_free_to_paintable</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-opacity">gtk_snapshot_push_opacity</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-color-matrix">gtk_snapshot_push_color_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-repeat">gtk_snapshot_push_repeat</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-clip">gtk_snapshot_push_clip</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-rounded-clip">gtk_snapshot_push_rounded_clip</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-cross-fade">gtk_snapshot_push_cross_fade</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-blend">gtk_snapshot_push_blend</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-blur">gtk_snapshot_push_blur</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-shadow">gtk_snapshot_push_shadow</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-debug">gtk_snapshot_push_debug</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-push-gl-shader">gtk_snapshot_push_gl_shader</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-pop">gtk_snapshot_pop</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-gl-shader-pop-texture">gtk_snapshot_gl_shader_pop_texture</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-save">gtk_snapshot_save</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-restore">gtk_snapshot_restore</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-transform">gtk_snapshot_transform</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-transform-matrix">gtk_snapshot_transform_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-translate">gtk_snapshot_translate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-translate-3d">gtk_snapshot_translate_3d</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-rotate">gtk_snapshot_rotate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-rotate-3d">gtk_snapshot_rotate_3d</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-scale">gtk_snapshot_scale</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-scale-3d">gtk_snapshot_scale_3d</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-perspective">gtk_snapshot_perspective</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-node">gtk_snapshot_append_node</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="cairo-t"><returnvalue>cairo_t</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-cairo">gtk_snapshot_append_cairo</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-texture">gtk_snapshot_append_texture</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-color">gtk_snapshot_append_color</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-layout">gtk_snapshot_append_layout</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-linear-gradient">gtk_snapshot_append_linear_gradient</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-repeating-linear-gradient">gtk_snapshot_append_repeating_linear_gradient</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-conic-gradient">gtk_snapshot_append_conic_gradient</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-border">gtk_snapshot_append_border</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-inset-shadow">gtk_snapshot_append_inset_shadow</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-outset-shadow">gtk_snapshot_append_outset_shadow</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-radial-gradient">gtk_snapshot_append_radial_gradient</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-append-repeating-radial-gradient">gtk_snapshot_append_repeating_radial_gradient</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-render-insertion-cursor">gtk_snapshot_render_insertion_cursor</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-render-background">gtk_snapshot_render_background</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-render-frame">gtk_snapshot_render_frame</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-render-focus">gtk_snapshot_render_focus</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-snapshot-render-layout">gtk_snapshot_render_layout</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GtkSnapshot.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="other_proto_type" colwidth="150px"/>
<colspec colname="other_proto_name"/>
<tbody>
<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="GtkSnapshot">GtkSnapshot</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GtkSnapshot.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<screen>    <link linkend="GObject">GObject</link>
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> <link linkend="GdkSnapshot">GdkSnapshot</link>
        <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> GtkSnapshot
</screen>
</refsect1>

<refsect1 id="GtkSnapshot.includes"><title>Includes</title><synopsis>#include &lt;gtk/gtk.h&gt;
</synopsis></refsect1>

<refsect1 id="GtkSnapshot.description" role="desc">
<title role="desc.title">Description</title>
<para>GtkSnapshot is an auxiliary object that assists in creating <link linkend="GskRenderNodes"><type>GskRenderNodes</type></link>
in the <link linkend="GdkPaintableInterface.snapshot"><function>GdkPaintableInterface.snapshot()</function></link> vfunc. It functions in a similar way to
a cairo context, and maintains a stack of render nodes and their associated
transformations.</para>
<para>The node at the top of the stack is the the one that gtk_snapshot_append_…
functions operate on. Use the gtk_snapshot_push_… functions and <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>
to change the current node.</para>
<para>The typical way to obtain a GtkSnapshot object is as an argument to
the <link linkend="GtkWidgetClass.snapshot"><function>GtkWidgetClass.snapshot()</function></link> vfunc. If you need to create your own GtkSnapshot,
use <link linkend="gtk-snapshot-new"><function>gtk_snapshot_new()</function></link>.</para>

</refsect1>
<refsect1 id="GtkSnapshot.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="gtk-snapshot-new" role="function">
<title>gtk_snapshot_new&#160;()</title>
<indexterm zone="gtk-snapshot-new"><primary>gtk_snapshot_new</primary></indexterm>
<programlisting language="C"><link linkend="GtkSnapshot"><returnvalue>GtkSnapshot</returnvalue></link>&#160;*
gtk_snapshot_new (<parameter><type>void</type></parameter>);</programlisting>
<para>Creates a new <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link>.</para>
<refsect3 id="gtk-snapshot-new.returns" role="returns">
<title>Returns</title>
<para> a newly-allocated <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-to-node" role="function">
<title>gtk_snapshot_to_node&#160;()</title>
<indexterm zone="gtk-snapshot-to-node"><primary>gtk_snapshot_to_node</primary></indexterm>
<programlisting language="C"><link linkend="GskRenderNode"><returnvalue>GskRenderNode</returnvalue></link>&#160;*
gtk_snapshot_to_node (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>);</programlisting>
<para>Returns the render node that was constructed
by <parameter>snapshot</parameter>
. After calling this function, it
is no longer possible to add more nodes to
<parameter>snapshot</parameter>
. The only function that should be
called after this is <link linkend="g-object-unref"><function>g_object_unref()</function></link>.</para>
<refsect3 id="gtk-snapshot-to-node.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-snapshot-to-node.returns" role="returns">
<title>Returns</title>
<para>the constructed <link linkend="GskRenderNode"><type>GskRenderNode</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-to-paintable" role="function">
<title>gtk_snapshot_to_paintable&#160;()</title>
<indexterm zone="gtk-snapshot-to-paintable"><primary>gtk_snapshot_to_paintable</primary></indexterm>
<programlisting language="C"><link linkend="GdkPaintable"><returnvalue>GdkPaintable</returnvalue></link>&#160;*
gtk_snapshot_to_paintable (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                           <parameter>const <link linkend="graphene-size-t"><type>graphene_size_t</type></link> *size</parameter>);</programlisting>
<para>Returns a paintable encapsulating the render node
that was constructed by <parameter>snapshot</parameter>
. After calling
this function, it is no longer possible to add more
nodes to <parameter>snapshot</parameter>
. The only function that should be
called after this is <link linkend="g-object-unref"><function>g_object_unref()</function></link>.</para>
<refsect3 id="gtk-snapshot-to-paintable.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>size</para></entry>
<entry role="parameter_description"><para>The size of the resulting paintable
or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to use the bounds of the snapshot. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-snapshot-to-paintable.returns" role="returns">
<title>Returns</title>
<para>a new <link linkend="GdkPaintable"><type>GdkPaintable</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-free-to-node" role="function">
<title>gtk_snapshot_free_to_node&#160;()</title>
<indexterm zone="gtk-snapshot-free-to-node"><primary>gtk_snapshot_free_to_node</primary></indexterm>
<programlisting language="C"><link linkend="GskRenderNode"><returnvalue>GskRenderNode</returnvalue></link>&#160;*
gtk_snapshot_free_to_node (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>);</programlisting>
<para>Returns the node that was constructed by <parameter>snapshot</parameter>

and frees <parameter>snapshot</parameter>
.</para>

<para><emphasis role="annotation">[<acronym>skip</acronym>]</emphasis></para><refsect3 id="gtk-snapshot-free-to-node.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-snapshot-free-to-node.returns" role="returns">
<title>Returns</title>
<para>a newly-created <link linkend="GskRenderNode"><type>GskRenderNode</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-free-to-paintable" role="function">
<title>gtk_snapshot_free_to_paintable&#160;()</title>
<indexterm zone="gtk-snapshot-free-to-paintable"><primary>gtk_snapshot_free_to_paintable</primary></indexterm>
<programlisting language="C"><link linkend="GdkPaintable"><returnvalue>GdkPaintable</returnvalue></link>&#160;*
gtk_snapshot_free_to_paintable (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                <parameter>const <link linkend="graphene-size-t"><type>graphene_size_t</type></link> *size</parameter>);</programlisting>
<para>Returns a paintable for the node that was
constructed by <parameter>snapshot</parameter>
 and frees <parameter>snapshot</parameter>
.</para>

<para><emphasis role="annotation">[<acronym>skip</acronym>]</emphasis></para><refsect3 id="gtk-snapshot-free-to-paintable.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>size</para></entry>
<entry role="parameter_description"><para>The size of the resulting paintable
or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to use the bounds of the snapshot. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-snapshot-free-to-paintable.returns" role="returns">
<title>Returns</title>
<para>a newly-created <link linkend="GdkPaintable"><type>GdkPaintable</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-opacity" role="function">
<title>gtk_snapshot_push_opacity&#160;()</title>
<indexterm zone="gtk-snapshot-push-opacity"><primary>gtk_snapshot_push_opacity</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_opacity (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> opacity</parameter>);</programlisting>
<para>Modifies the opacity of an image.</para>
<para>The image is recorded until the next call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<refsect3 id="gtk-snapshot-push-opacity.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>opacity</para></entry>
<entry role="parameter_description"><para>the opacity to use</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-color-matrix" role="function">
<title>gtk_snapshot_push_color_matrix&#160;()</title>
<indexterm zone="gtk-snapshot-push-color-matrix"><primary>gtk_snapshot_push_color_matrix</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_color_matrix (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                <parameter>const <link linkend="graphene-matrix-t"><type>graphene_matrix_t</type></link> *color_matrix</parameter>,
                                <parameter>const <link linkend="graphene-vec4-t"><type>graphene_vec4_t</type></link> *color_offset</parameter>);</programlisting>
<para>Modifies the colors of an image by applying an affine transformation
in RGB space.</para>
<para>The image is recorded until the next call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<refsect3 id="gtk-snapshot-push-color-matrix.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>color_matrix</para></entry>
<entry role="parameter_description"><para>the color matrix to use</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>color_offset</para></entry>
<entry role="parameter_description"><para>the color offset to use</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-repeat" role="function">
<title>gtk_snapshot_push_repeat&#160;()</title>
<indexterm zone="gtk-snapshot-push-repeat"><primary>gtk_snapshot_push_repeat</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_repeat (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                          <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>,
                          <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *child_bounds</parameter>);</programlisting>
<para>Creates a node that repeats the child node.</para>
<para>The child is recorded until the next call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<refsect3 id="gtk-snapshot-push-repeat.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the bounds within which to repeat</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>child_bounds</para></entry>
<entry role="parameter_description"><para>the bounds of the child or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
to use the full size of the collected child node. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-clip" role="function">
<title>gtk_snapshot_push_clip&#160;()</title>
<indexterm zone="gtk-snapshot-push-clip"><primary>gtk_snapshot_push_clip</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_clip (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                        <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>);</programlisting>
<para>Clips an image to a rectangle.</para>
<para>The image is recorded until the next call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<refsect3 id="gtk-snapshot-push-clip.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the rectangle to clip to</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-rounded-clip" role="function">
<title>gtk_snapshot_push_rounded_clip&#160;()</title>
<indexterm zone="gtk-snapshot-push-rounded-clip"><primary>gtk_snapshot_push_rounded_clip</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_rounded_clip (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                <parameter>const <link linkend="GskRoundedRect"><type>GskRoundedRect</type></link> *bounds</parameter>);</programlisting>
<para>Clips an image to a rounded rectangle.</para>
<para>The image is recorded until the next call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<refsect3 id="gtk-snapshot-push-rounded-clip.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the rounded rectangle to clip to</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-cross-fade" role="function">
<title>gtk_snapshot_push_cross_fade&#160;()</title>
<indexterm zone="gtk-snapshot-push-cross-fade"><primary>gtk_snapshot_push_cross_fade</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_cross_fade (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                              <parameter><link linkend="double"><type>double</type></link> progress</parameter>);</programlisting>
<para>Snapshots a cross-fade operation between two images with the
given <parameter>progress</parameter>
.</para>
<para>Until the first call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>, the start image
will be snapshot. After that call, the end image will be recorded
until the second call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<para>Calling this function requires 2 calls to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<refsect3 id="gtk-snapshot-push-cross-fade.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>progress</para></entry>
<entry role="parameter_description"><para>progress between 0.0 and 1.0</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-blend" role="function">
<title>gtk_snapshot_push_blend&#160;()</title>
<indexterm zone="gtk-snapshot-push-blend"><primary>gtk_snapshot_push_blend</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_blend (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                         <parameter><link linkend="GskBlendMode"><type>GskBlendMode</type></link> blend_mode</parameter>);</programlisting>
<para>Blends together 2 images with the given blend mode.</para>
<para>Until the first call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>, the bottom image for the
blend operation will be recorded. After that call, the top image to
be blended will be recorded until the second call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<para>Calling this function requires 2 subsequent calls to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<refsect3 id="gtk-snapshot-push-blend.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>blend_mode</para></entry>
<entry role="parameter_description"><para>blend mode to use</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-blur" role="function">
<title>gtk_snapshot_push_blur&#160;()</title>
<indexterm zone="gtk-snapshot-push-blur"><primary>gtk_snapshot_push_blur</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_blur (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                        <parameter><link linkend="double"><type>double</type></link> radius</parameter>);</programlisting>
<para>Blurs an image.</para>
<para>The image is recorded until the next call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<refsect3 id="gtk-snapshot-push-blur.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>radius</para></entry>
<entry role="parameter_description"><para>the blur radius to use</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-shadow" role="function">
<title>gtk_snapshot_push_shadow&#160;()</title>
<indexterm zone="gtk-snapshot-push-shadow"><primary>gtk_snapshot_push_shadow</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_shadow (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                          <parameter>const <link linkend="GskShadow"><type>GskShadow</type></link> *shadow</parameter>,
                          <parameter><link linkend="gsize"><type>gsize</type></link> n_shadows</parameter>);</programlisting>
<para>Applies a shadow to an image.</para>
<para>The image is recorded until the next call to <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<refsect3 id="gtk-snapshot-push-shadow.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>shadow</para></entry>
<entry role="parameter_description"><para>the first shadow specification</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>n_shadows</para></entry>
<entry role="parameter_description"><para>number of shadow specifications</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-debug" role="function">
<title>gtk_snapshot_push_debug&#160;()</title>
<indexterm zone="gtk-snapshot-push-debug"><primary>gtk_snapshot_push_debug</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_debug (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                         <parameter>const <link linkend="char"><type>char</type></link> *message</parameter>,
                         <parameter>...</parameter>);</programlisting>
<para>Inserts a debug node with a message. Debug nodes don't affect
the rendering at all, but can be helpful in identifying parts
of a render node tree dump, for example in the GTK inspector.</para>
<refsect3 id="gtk-snapshot-push-debug.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>message</para></entry>
<entry role="parameter_description"><para>a printf-style format string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>...</para></entry>
<entry role="parameter_description"><para>arguments for <parameter>message</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-push-gl-shader" role="function">
<title>gtk_snapshot_push_gl_shader&#160;()</title>
<indexterm zone="gtk-snapshot-push-gl-shader"><primary>gtk_snapshot_push_gl_shader</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_push_gl_shader (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                             <parameter><link linkend="GskGLShader"><type>GskGLShader</type></link> *shader</parameter>,
                             <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>,
                             <parameter><link linkend="GBytes"><type>GBytes</type></link> *take_args</parameter>);</programlisting>
<para>Push a <link linkend="GskGLShaderNode"><type>GskGLShaderNode</type></link> with a specific <link linkend="GskGLShader"><type>GskGLShader</type></link> and a set of uniform values
to use while rendering. Additionally this takes a list of <parameter>n_children</parameter>
 other nodes
which will be passed to the <link linkend="GskGLShaderNode"><type>GskGLShaderNode</type></link>.</para>
<para>The <parameter>take_args</parameter>
 argument is a block of data to use for uniform
arguments, as per types and offsets defined by the <parameter>shader</parameter>
. Normally this is
generated by <link linkend="gsk-gl-shader-format-args"><function>gsk_gl_shader_format_args()</function></link> or <link linkend="GskGLShaderArgBuilder"><type>GskGLShaderArgBuilder</type></link>.
The snapshotter takes ownership of <parameter>take_args</parameter>
, so the caller should not free it
after this.</para>
<para>If the renderer doesn't support GL shaders, or if there is any problem when
compiling the shader, then the node will draw pink. You should use
<link linkend="gsk-gl-shader-compile"><function>gsk_gl_shader_compile()</function></link> to ensure the <parameter>shader</parameter>
 will work for the renderer
before using it.</para>
<para>If the shader requires textures (see <link linkend="gsk-gl-shader-get-n-textures"><function>gsk_gl_shader_get_n_textures()</function></link>), then it is
expected that you call <link linkend="gtk-snapshot-gl-shader-pop-texture"><function>gtk_snapshot_gl_shader_pop_texture()</function></link> the number of times that are
required. Each of these calls will generate a node that is added as a child to the gl shader
node, which in turn will render these offscreen and pass as a texture to the shader.</para>
<para>Once all textures (if any) are pop:ed, you must call the regular <link linkend="gtk-snapshot-pop"><function>gtk_snapshot_pop()</function></link>.</para>
<para>If you want to use pre-existing textures as input to the shader rather than
rendering new ones, use <link linkend="gtk-snapshot-append-texture"><function>gtk_snapshot_append_texture()</function></link> to push a texture node. These
will be used directly rather than being re-rendered.</para>
<para>For details on how to write shaders, see <link linkend="GskGLShader"><type>GskGLShader</type></link>.</para>
<refsect3 id="gtk-snapshot-push-gl-shader.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>shader</para></entry>
<entry role="parameter_description"><para>The code to run</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the rectangle to render into</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>take_args</para></entry>
<entry role="parameter_description"><para>Data block with arguments for the shader. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-pop" role="function">
<title>gtk_snapshot_pop&#160;()</title>
<indexterm zone="gtk-snapshot-pop"><primary>gtk_snapshot_pop</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_pop (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>);</programlisting>
<para>Removes the top element from the stack of render nodes,
and appends it to the node underneath it.</para>
<refsect3 id="gtk-snapshot-pop.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-gl-shader-pop-texture" role="function">
<title>gtk_snapshot_gl_shader_pop_texture&#160;()</title>
<indexterm zone="gtk-snapshot-gl-shader-pop-texture"><primary>gtk_snapshot_gl_shader_pop_texture</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_gl_shader_pop_texture (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>);</programlisting>
<para>Removes the top element from the stack of render nodes and
adds it to the nearest GskGLShaderNode below it. This must be called the
same number of times as the number of textures is needed for the
shader in <link linkend="gtk-snapshot-push-gl-shader"><function>gtk_snapshot_push_gl_shader()</function></link>.</para>
<refsect3 id="gtk-snapshot-gl-shader-pop-texture.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-save" role="function">
<title>gtk_snapshot_save&#160;()</title>
<indexterm zone="gtk-snapshot-save"><primary>gtk_snapshot_save</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_save (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>);</programlisting>
<para>Makes a copy of the current state of <parameter>snapshot</parameter>
 and saves it
on an internal stack of saved states for <parameter>snapshot</parameter>
. When
<link linkend="gtk-snapshot-restore"><function>gtk_snapshot_restore()</function></link> is called, <parameter>snapshot</parameter>
 will be restored to
the saved state. Multiple calls to <link linkend="gtk-snapshot-save"><function>gtk_snapshot_save()</function></link> and
<link linkend="gtk-snapshot-restore"><function>gtk_snapshot_restore()</function></link> can be nested; each call to
<link linkend="gtk-snapshot-restore"><function>gtk_snapshot_restore()</function></link> restores the state from the matching paired
<link linkend="gtk-snapshot-save"><function>gtk_snapshot_save()</function></link>.</para>
<para>It is necessary to clear all saved states with corresponding calls
to <link linkend="gtk-snapshot-restore"><function>gtk_snapshot_restore()</function></link>.</para>
<refsect3 id="gtk-snapshot-save.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-restore" role="function">
<title>gtk_snapshot_restore&#160;()</title>
<indexterm zone="gtk-snapshot-restore"><primary>gtk_snapshot_restore</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_restore (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>);</programlisting>
<para>Restores <parameter>snapshot</parameter>
 to the state saved by a preceding call to
<link linkend="gtk-snapshot-save"><function>gtk_snapshot_save()</function></link> and removes that state from the stack of
saved states.</para>
<refsect3 id="gtk-snapshot-restore.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-transform" role="function">
<title>gtk_snapshot_transform&#160;()</title>
<indexterm zone="gtk-snapshot-transform"><primary>gtk_snapshot_transform</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_transform (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                        <parameter><link linkend="GskTransform"><type>GskTransform</type></link> *transform</parameter>);</programlisting>
<para>Transforms <parameter>snapshot</parameter>
's coordinate system with the given <parameter>transform</parameter>
.</para>
<refsect3 id="gtk-snapshot-transform.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>transform</para></entry>
<entry role="parameter_description"><para>the transform to apply. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-transform-matrix" role="function">
<title>gtk_snapshot_transform_matrix&#160;()</title>
<indexterm zone="gtk-snapshot-transform-matrix"><primary>gtk_snapshot_transform_matrix</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_transform_matrix (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                               <parameter>const <link linkend="graphene-matrix-t"><type>graphene_matrix_t</type></link> *matrix</parameter>);</programlisting>
<para>Transforms <parameter>snapshot</parameter>
's coordinate system with the given <parameter>matrix</parameter>
.</para>
<refsect3 id="gtk-snapshot-transform-matrix.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>matrix</para></entry>
<entry role="parameter_description"><para>the matrix to multiply the transform with</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-translate" role="function">
<title>gtk_snapshot_translate&#160;()</title>
<indexterm zone="gtk-snapshot-translate"><primary>gtk_snapshot_translate</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_translate (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                        <parameter>const <link linkend="graphene-point-t"><type>graphene_point_t</type></link> *point</parameter>);</programlisting>
<para>Translates <parameter>snapshot</parameter>
's coordinate system by <parameter>point</parameter>
 in 2-dimensional space.</para>
<refsect3 id="gtk-snapshot-translate.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>point</para></entry>
<entry role="parameter_description"><para>the point to translate the snapshot by</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-translate-3d" role="function">
<title>gtk_snapshot_translate_3d&#160;()</title>
<indexterm zone="gtk-snapshot-translate-3d"><primary>gtk_snapshot_translate_3d</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_translate_3d (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                           <parameter>const <link linkend="graphene-point3d-t"><type>graphene_point3d_t</type></link> *point</parameter>);</programlisting>
<para>Translates <parameter>snapshot</parameter>
's coordinate system by <parameter>point</parameter>
.</para>
<refsect3 id="gtk-snapshot-translate-3d.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>point</para></entry>
<entry role="parameter_description"><para>the point to translate the snapshot by</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-rotate" role="function">
<title>gtk_snapshot_rotate&#160;()</title>
<indexterm zone="gtk-snapshot-rotate"><primary>gtk_snapshot_rotate</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_rotate (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                     <parameter><link linkend="float"><type>float</type></link> angle</parameter>);</programlisting>
<para>Rotates @<parameter>snapshot</parameter>
's coordinate system by <parameter>angle</parameter>
 degrees in 2D space -
or in 3D speak, rotates around the z axis.</para>
<refsect3 id="gtk-snapshot-rotate.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>angle</para></entry>
<entry role="parameter_description"><para>the rotation angle, in degrees (clockwise)</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-rotate-3d" role="function">
<title>gtk_snapshot_rotate_3d&#160;()</title>
<indexterm zone="gtk-snapshot-rotate-3d"><primary>gtk_snapshot_rotate_3d</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_rotate_3d (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                        <parameter><link linkend="float"><type>float</type></link> angle</parameter>,
                        <parameter>const <link linkend="graphene-vec3-t"><type>graphene_vec3_t</type></link> *axis</parameter>);</programlisting>
<para>Rotates <parameter>snapshot</parameter>
's coordinate system by <parameter>angle</parameter>
 degrees around <parameter>axis</parameter>
.</para>
<para>For a rotation in 2D space, use <link linkend="gsk-transform-rotate"><function>gsk_transform_rotate()</function></link>.</para>
<refsect3 id="gtk-snapshot-rotate-3d.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>angle</para></entry>
<entry role="parameter_description"><para>the rotation angle, in degrees (clockwise)</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>axis</para></entry>
<entry role="parameter_description"><para>The rotation axis</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-scale" role="function">
<title>gtk_snapshot_scale&#160;()</title>
<indexterm zone="gtk-snapshot-scale"><primary>gtk_snapshot_scale</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_scale (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                    <parameter><link linkend="float"><type>float</type></link> factor_x</parameter>,
                    <parameter><link linkend="float"><type>float</type></link> factor_y</parameter>);</programlisting>
<para>Scales <parameter>snapshot</parameter>
's coordinate system in 2-dimensional space by
the given factors.</para>
<para>Use <link linkend="gtk-snapshot-scale-3d"><function>gtk_snapshot_scale_3d()</function></link> to scale in all 3 dimensions.</para>
<refsect3 id="gtk-snapshot-scale.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>factor_x</para></entry>
<entry role="parameter_description"><para>scaling factor on the X axis</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>factor_y</para></entry>
<entry role="parameter_description"><para>scaling factor on the Y axis</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-scale-3d" role="function">
<title>gtk_snapshot_scale_3d&#160;()</title>
<indexterm zone="gtk-snapshot-scale-3d"><primary>gtk_snapshot_scale_3d</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_scale_3d (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                       <parameter><link linkend="float"><type>float</type></link> factor_x</parameter>,
                       <parameter><link linkend="float"><type>float</type></link> factor_y</parameter>,
                       <parameter><link linkend="float"><type>float</type></link> factor_z</parameter>);</programlisting>
<para>Scales <parameter>snapshot</parameter>
's coordinate system by the given factors.</para>
<refsect3 id="gtk-snapshot-scale-3d.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>factor_x</para></entry>
<entry role="parameter_description"><para>scaling factor on the X axis</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>factor_y</para></entry>
<entry role="parameter_description"><para>scaling factor on the Y axis</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>factor_z</para></entry>
<entry role="parameter_description"><para>scaling factor on the Z axis</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-perspective" role="function">
<title>gtk_snapshot_perspective&#160;()</title>
<indexterm zone="gtk-snapshot-perspective"><primary>gtk_snapshot_perspective</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_perspective (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                          <parameter><link linkend="float"><type>float</type></link> depth</parameter>);</programlisting>
<para>Applies a perspective projection transform.</para>
<para>See <link linkend="gsk-transform-perspective"><function>gsk_transform_perspective()</function></link> for a discussion on the details.</para>
<refsect3 id="gtk-snapshot-perspective.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>depth</para></entry>
<entry role="parameter_description"><para>distance of the z=0 plane</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-node" role="function">
<title>gtk_snapshot_append_node&#160;()</title>
<indexterm zone="gtk-snapshot-append-node"><primary>gtk_snapshot_append_node</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_node (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                          <parameter><link linkend="GskRenderNode"><type>GskRenderNode</type></link> *node</parameter>);</programlisting>
<para>Appends <parameter>node</parameter>
 to the current render node of <parameter>snapshot</parameter>
,
without changing the current node. If <parameter>snapshot</parameter>
 does
not have a current node yet, <parameter>node</parameter>
 will become the
initial node.</para>
<refsect3 id="gtk-snapshot-append-node.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>node</para></entry>
<entry role="parameter_description"><para>a <link linkend="GskRenderNode"><type>GskRenderNode</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-cairo" role="function">
<title>gtk_snapshot_append_cairo&#160;()</title>
<indexterm zone="gtk-snapshot-append-cairo"><primary>gtk_snapshot_append_cairo</primary></indexterm>
<programlisting language="C"><link linkend="cairo-t"><returnvalue>cairo_t</returnvalue></link>&#160;*
gtk_snapshot_append_cairo (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                           <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>);</programlisting>
<para>Creates a new render node and appends it to the current render
node of <parameter>snapshot</parameter>
, without changing the current node.</para>
<refsect3 id="gtk-snapshot-append-cairo.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the bounds for the new node</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-snapshot-append-cairo.returns" role="returns">
<title>Returns</title>
<para> a cairo_t suitable for drawing the contents of the newly
created render node</para>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-texture" role="function">
<title>gtk_snapshot_append_texture&#160;()</title>
<indexterm zone="gtk-snapshot-append-texture"><primary>gtk_snapshot_append_texture</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_texture (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                             <parameter><link linkend="GdkTexture"><type>GdkTexture</type></link> *texture</parameter>,
                             <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>);</programlisting>
<para>Creates a new render node drawing the <parameter>texture</parameter>
 into the given <parameter>bounds</parameter>
 and appends it
to the current render node of <parameter>snapshot</parameter>
.</para>
<refsect3 id="gtk-snapshot-append-texture.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>texture</para></entry>
<entry role="parameter_description"><para>the <link linkend="GdkTexture"><type>GdkTexture</type></link> to render</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the bounds for the new node</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-color" role="function">
<title>gtk_snapshot_append_color&#160;()</title>
<indexterm zone="gtk-snapshot-append-color"><primary>gtk_snapshot_append_color</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_color (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                           <parameter>const <link linkend="GdkRGBA"><type>GdkRGBA</type></link> *color</parameter>,
                           <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>);</programlisting>
<para>Creates a new render node drawing the <parameter>color</parameter>
 into the given <parameter>bounds</parameter>
 and appends it
to the current render node of <parameter>snapshot</parameter>
.</para>
<para>You should try to avoid calling this function if <parameter>color</parameter>
 is transparent.</para>
<refsect3 id="gtk-snapshot-append-color.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>color</para></entry>
<entry role="parameter_description"><para>the <link linkend="GdkRGBA"><type>GdkRGBA</type></link> to draw</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the bounds for the new node</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-layout" role="function">
<title>gtk_snapshot_append_layout&#160;()</title>
<indexterm zone="gtk-snapshot-append-layout"><primary>gtk_snapshot_append_layout</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_layout (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                            <parameter><link linkend="PangoLayout"><type>PangoLayout</type></link> *layout</parameter>,
                            <parameter>const <link linkend="GdkRGBA"><type>GdkRGBA</type></link> *color</parameter>);</programlisting>
<para>Creates render nodes for rendering <parameter>layout</parameter>
 in the given foregound <parameter>color</parameter>

and appends them to the current node of <parameter>snapshot</parameter>
 without changing the
current node.</para>
<refsect3 id="gtk-snapshot-append-layout.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>layout</para></entry>
<entry role="parameter_description"><para>the <link linkend="PangoLayout"><type>PangoLayout</type></link> to render</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>color</para></entry>
<entry role="parameter_description"><para>the foreground color to render the layout in</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-linear-gradient" role="function">
<title>gtk_snapshot_append_linear_gradient&#160;()</title>
<indexterm zone="gtk-snapshot-append-linear-gradient"><primary>gtk_snapshot_append_linear_gradient</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_linear_gradient (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                     <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>,
                                     <parameter>const <link linkend="graphene-point-t"><type>graphene_point_t</type></link> *start_point</parameter>,
                                     <parameter>const <link linkend="graphene-point-t"><type>graphene_point_t</type></link> *end_point</parameter>,
                                     <parameter>const <link linkend="GskColorStop"><type>GskColorStop</type></link> *stops</parameter>,
                                     <parameter><link linkend="gsize"><type>gsize</type></link> n_stops</parameter>);</programlisting>
<para>Appends a linear gradient node with the given stops to <parameter>snapshot</parameter>
.</para>
<refsect3 id="gtk-snapshot-append-linear-gradient.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the rectangle to render the linear gradient into</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_point</para></entry>
<entry role="parameter_description"><para>the point at which the linear gradient will begin</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end_point</para></entry>
<entry role="parameter_description"><para>the point at which the linear gradient will finish</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>stops</para></entry>
<entry role="parameter_description"><para>a pointer to an array of <link linkend="GskColorStop"><type>GskColorStop</type></link> defining the gradient. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> length=n_stops]</emphasis></entry></row>
<row><entry role="parameter_name"><para>n_stops</para></entry>
<entry role="parameter_description"><para>the number of elements in <parameter>stops</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-repeating-linear-gradient" role="function">
<title>gtk_snapshot_append_repeating_linear_gradient&#160;()</title>
<indexterm zone="gtk-snapshot-append-repeating-linear-gradient"><primary>gtk_snapshot_append_repeating_linear_gradient</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_repeating_linear_gradient
                               (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>,
                                <parameter>const <link linkend="graphene-point-t"><type>graphene_point_t</type></link> *start_point</parameter>,
                                <parameter>const <link linkend="graphene-point-t"><type>graphene_point_t</type></link> *end_point</parameter>,
                                <parameter>const <link linkend="GskColorStop"><type>GskColorStop</type></link> *stops</parameter>,
                                <parameter><link linkend="gsize"><type>gsize</type></link> n_stops</parameter>);</programlisting>
<para>Appends a repeating linear gradient node with the given stops to <parameter>snapshot</parameter>
.</para>
<refsect3 id="gtk-snapshot-append-repeating-linear-gradient.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the rectangle to render the linear gradient into</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_point</para></entry>
<entry role="parameter_description"><para>the point at which the linear gradient will begin</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end_point</para></entry>
<entry role="parameter_description"><para>the point at which the linear gradient will finish</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>stops</para></entry>
<entry role="parameter_description"><para>a pointer to an array of <link linkend="GskColorStop"><type>GskColorStop</type></link> defining the gradient. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> length=n_stops]</emphasis></entry></row>
<row><entry role="parameter_name"><para>n_stops</para></entry>
<entry role="parameter_description"><para>the number of elements in <parameter>stops</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-conic-gradient" role="function">
<title>gtk_snapshot_append_conic_gradient&#160;()</title>
<indexterm zone="gtk-snapshot-append-conic-gradient"><primary>gtk_snapshot_append_conic_gradient</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_conic_gradient (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                    <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>,
                                    <parameter>const <link linkend="graphene-point-t"><type>graphene_point_t</type></link> *center</parameter>,
                                    <parameter><link linkend="float"><type>float</type></link> rotation</parameter>,
                                    <parameter>const <link linkend="GskColorStop"><type>GskColorStop</type></link> *stops</parameter>,
                                    <parameter><link linkend="gsize"><type>gsize</type></link> n_stops</parameter>);</programlisting>
<para>Appends a conic gradient node with the given stops to <parameter>snapshot</parameter>
.</para>
<refsect3 id="gtk-snapshot-append-conic-gradient.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the rectangle to render the gradient into</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>center</para></entry>
<entry role="parameter_description"><para>the center point of the conic gradient</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>rotation</para></entry>
<entry role="parameter_description"><para>the clockwise rotation in degrees of the starting angle. 0 means the
starting angle is the top.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>stops</para></entry>
<entry role="parameter_description"><para>a pointer to an array of <link linkend="GskColorStop"><type>GskColorStop</type></link> defining the gradient. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> length=n_stops]</emphasis></entry></row>
<row><entry role="parameter_name"><para>n_stops</para></entry>
<entry role="parameter_description"><para>the number of elements in <parameter>stops</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-border" role="function">
<title>gtk_snapshot_append_border&#160;()</title>
<indexterm zone="gtk-snapshot-append-border"><primary>gtk_snapshot_append_border</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_border (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                            <parameter>const <link linkend="GskRoundedRect"><type>GskRoundedRect</type></link> *outline</parameter>,
                            <parameter>const <link linkend="float"><type>float</type></link> border_width[4]</parameter>,
                            <parameter>const <link linkend="GdkRGBA"><type>GdkRGBA</type></link> border_color[4]</parameter>);</programlisting>
<para>Appends a stroked border rectangle inside the given <parameter>outline</parameter>
. The
4 sides of the border can have different widths and colors.</para>
<refsect3 id="gtk-snapshot-append-border.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>outline</para></entry>
<entry role="parameter_description"><para>a <link linkend="GskRoundedRect"><type>GskRoundedRect</type></link> describing the outline of the border</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>border_width</para></entry>
<entry role="parameter_description"><para>the stroke width of the border on
the top, right, bottom and left side respectively. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> fixed-size=4]</emphasis></entry></row>
<row><entry role="parameter_name"><para>border_color</para></entry>
<entry role="parameter_description"><para>the color used on the top, right,
bottom and left side. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> fixed-size=4]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-inset-shadow" role="function">
<title>gtk_snapshot_append_inset_shadow&#160;()</title>
<indexterm zone="gtk-snapshot-append-inset-shadow"><primary>gtk_snapshot_append_inset_shadow</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_inset_shadow (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                  <parameter>const <link linkend="GskRoundedRect"><type>GskRoundedRect</type></link> *outline</parameter>,
                                  <parameter>const <link linkend="GdkRGBA"><type>GdkRGBA</type></link> *color</parameter>,
                                  <parameter><link linkend="float"><type>float</type></link> dx</parameter>,
                                  <parameter><link linkend="float"><type>float</type></link> dy</parameter>,
                                  <parameter><link linkend="float"><type>float</type></link> spread</parameter>,
                                  <parameter><link linkend="float"><type>float</type></link> blur_radius</parameter>);</programlisting>
<para>Appends an inset shadow into the box given by <parameter>outline</parameter>
.</para>
<refsect3 id="gtk-snapshot-append-inset-shadow.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>outline</para></entry>
<entry role="parameter_description"><para>outline of the region surrounded by shadow</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>color</para></entry>
<entry role="parameter_description"><para>color of the shadow</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>dx</para></entry>
<entry role="parameter_description"><para>horizontal offset of shadow</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>dy</para></entry>
<entry role="parameter_description"><para>vertical offset of shadow</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>spread</para></entry>
<entry role="parameter_description"><para>how far the shadow spreads towards the inside</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>blur_radius</para></entry>
<entry role="parameter_description"><para>how much blur to apply to the shadow</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-outset-shadow" role="function">
<title>gtk_snapshot_append_outset_shadow&#160;()</title>
<indexterm zone="gtk-snapshot-append-outset-shadow"><primary>gtk_snapshot_append_outset_shadow</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_outset_shadow (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                   <parameter>const <link linkend="GskRoundedRect"><type>GskRoundedRect</type></link> *outline</parameter>,
                                   <parameter>const <link linkend="GdkRGBA"><type>GdkRGBA</type></link> *color</parameter>,
                                   <parameter><link linkend="float"><type>float</type></link> dx</parameter>,
                                   <parameter><link linkend="float"><type>float</type></link> dy</parameter>,
                                   <parameter><link linkend="float"><type>float</type></link> spread</parameter>,
                                   <parameter><link linkend="float"><type>float</type></link> blur_radius</parameter>);</programlisting>
<para>Appends an outset shadow node around the box given by <parameter>outline</parameter>
.</para>
<refsect3 id="gtk-snapshot-append-outset-shadow.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>outline</para></entry>
<entry role="parameter_description"><para>outline of the region surrounded by shadow</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>color</para></entry>
<entry role="parameter_description"><para>color of the shadow</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>dx</para></entry>
<entry role="parameter_description"><para>horizontal offset of shadow</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>dy</para></entry>
<entry role="parameter_description"><para>vertical offset of shadow</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>spread</para></entry>
<entry role="parameter_description"><para>how far the shadow spreads towards the outside</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>blur_radius</para></entry>
<entry role="parameter_description"><para>how much blur to apply to the shadow</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-radial-gradient" role="function">
<title>gtk_snapshot_append_radial_gradient&#160;()</title>
<indexterm zone="gtk-snapshot-append-radial-gradient"><primary>gtk_snapshot_append_radial_gradient</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_radial_gradient (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                     <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>,
                                     <parameter>const <link linkend="graphene-point-t"><type>graphene_point_t</type></link> *center</parameter>,
                                     <parameter><link linkend="float"><type>float</type></link> hradius</parameter>,
                                     <parameter><link linkend="float"><type>float</type></link> vradius</parameter>,
                                     <parameter><link linkend="float"><type>float</type></link> start</parameter>,
                                     <parameter><link linkend="float"><type>float</type></link> end</parameter>,
                                     <parameter>const <link linkend="GskColorStop"><type>GskColorStop</type></link> *stops</parameter>,
                                     <parameter><link linkend="gsize"><type>gsize</type></link> n_stops</parameter>);</programlisting>
<para>Appends a radial gradient node with the given stops to <parameter>snapshot</parameter>
.</para>
<refsect3 id="gtk-snapshot-append-radial-gradient.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the rectangle to render the readial gradient into</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>center</para></entry>
<entry role="parameter_description"><para>the center point for the radial gradient</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>hradius</para></entry>
<entry role="parameter_description"><para>the horizontal radius</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>vradius</para></entry>
<entry role="parameter_description"><para>the vertical radius</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start</para></entry>
<entry role="parameter_description"><para>the start position (on the horizontal axis)</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end</para></entry>
<entry role="parameter_description"><para>the end position (on the horizontal axis)</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>stops</para></entry>
<entry role="parameter_description"><para>a pointer to an array of <link linkend="GskColorStop"><type>GskColorStop</type></link> defining the gradient. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> length=n_stops]</emphasis></entry></row>
<row><entry role="parameter_name"><para>n_stops</para></entry>
<entry role="parameter_description"><para>the number of elements in <parameter>stops</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-append-repeating-radial-gradient" role="function">
<title>gtk_snapshot_append_repeating_radial_gradient&#160;()</title>
<indexterm zone="gtk-snapshot-append-repeating-radial-gradient"><primary>gtk_snapshot_append_repeating_radial_gradient</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_append_repeating_radial_gradient
                               (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                <parameter>const <link linkend="graphene-rect-t"><type>graphene_rect_t</type></link> *bounds</parameter>,
                                <parameter>const <link linkend="graphene-point-t"><type>graphene_point_t</type></link> *center</parameter>,
                                <parameter><link linkend="float"><type>float</type></link> hradius</parameter>,
                                <parameter><link linkend="float"><type>float</type></link> vradius</parameter>,
                                <parameter><link linkend="float"><type>float</type></link> start</parameter>,
                                <parameter><link linkend="float"><type>float</type></link> end</parameter>,
                                <parameter>const <link linkend="GskColorStop"><type>GskColorStop</type></link> *stops</parameter>,
                                <parameter><link linkend="gsize"><type>gsize</type></link> n_stops</parameter>);</programlisting>
<para>Appends a repeating radial gradient node with the given stops to <parameter>snapshot</parameter>
.</para>
<refsect3 id="gtk-snapshot-append-repeating-radial-gradient.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bounds</para></entry>
<entry role="parameter_description"><para>the rectangle to render the readial gradient into</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>center</para></entry>
<entry role="parameter_description"><para>the center point for the radial gradient</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>hradius</para></entry>
<entry role="parameter_description"><para>the horizontal radius</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>vradius</para></entry>
<entry role="parameter_description"><para>the vertical radius</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start</para></entry>
<entry role="parameter_description"><para>the start position (on the horizontal axis)</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end</para></entry>
<entry role="parameter_description"><para>the end position (on the horizontal axis)</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>stops</para></entry>
<entry role="parameter_description"><para>a pointer to an array of <link linkend="GskColorStop"><type>GskColorStop</type></link> defining the gradient. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> length=n_stops]</emphasis></entry></row>
<row><entry role="parameter_name"><para>n_stops</para></entry>
<entry role="parameter_description"><para>the number of elements in <parameter>stops</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-render-insertion-cursor" role="function">
<title>gtk_snapshot_render_insertion_cursor&#160;()</title>
<indexterm zone="gtk-snapshot-render-insertion-cursor"><primary>gtk_snapshot_render_insertion_cursor</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_render_insertion_cursor (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                      <parameter><link linkend="GtkStyleContext"><type>GtkStyleContext</type></link> *context</parameter>,
                                      <parameter><link linkend="double"><type>double</type></link> x</parameter>,
                                      <parameter><link linkend="double"><type>double</type></link> y</parameter>,
                                      <parameter><link linkend="PangoLayout"><type>PangoLayout</type></link> *layout</parameter>,
                                      <parameter><link linkend="int"><type>int</type></link> index</parameter>,
                                      <parameter><link linkend="PangoDirection"><type>PangoDirection</type></link> direction</parameter>);</programlisting>
<para>Draws a text caret using <parameter>snapshot</parameter>
 at the specified index of <parameter>layout</parameter>
.</para>
<refsect3 id="gtk-snapshot-render-insertion-cursor.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>snapshot to render to</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkStyleContext"><type>GtkStyleContext</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X origin</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y origin</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>layout</para></entry>
<entry role="parameter_description"><para>the <link linkend="PangoLayout"><type>PangoLayout</type></link> of the text</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>index</para></entry>
<entry role="parameter_description"><para>the index in the <link linkend="PangoLayout"><type>PangoLayout</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>direction</para></entry>
<entry role="parameter_description"><para>the <link linkend="PangoDirection"><type>PangoDirection</type></link> of the text</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-render-background" role="function">
<title>gtk_snapshot_render_background&#160;()</title>
<indexterm zone="gtk-snapshot-render-background"><primary>gtk_snapshot_render_background</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_render_background (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                                <parameter><link linkend="GtkStyleContext"><type>GtkStyleContext</type></link> *context</parameter>,
                                <parameter><link linkend="double"><type>double</type></link> x</parameter>,
                                <parameter><link linkend="double"><type>double</type></link> y</parameter>,
                                <parameter><link linkend="double"><type>double</type></link> width</parameter>,
                                <parameter><link linkend="double"><type>double</type></link> height</parameter>);</programlisting>
<para>Creates a render node for the CSS background according to <parameter>context</parameter>
,
and appends it to the current node of <parameter>snapshot</parameter>
, without changing
the current node.</para>
<refsect3 id="gtk-snapshot-render-background.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkStyleContext"><type>GtkStyleContext</type></link> to use</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X origin of the rectangle</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y origin of the rectangle</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>rectangle width</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>rectangle height</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-render-frame" role="function">
<title>gtk_snapshot_render_frame&#160;()</title>
<indexterm zone="gtk-snapshot-render-frame"><primary>gtk_snapshot_render_frame</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_render_frame (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                           <parameter><link linkend="GtkStyleContext"><type>GtkStyleContext</type></link> *context</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> x</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> y</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> width</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> height</parameter>);</programlisting>
<para>Creates a render node for the CSS border according to <parameter>context</parameter>
,
and appends it to the current node of <parameter>snapshot</parameter>
, without changing
the current node.</para>
<refsect3 id="gtk-snapshot-render-frame.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkStyleContext"><type>GtkStyleContext</type></link> to use</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X origin of the rectangle</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y origin of the rectangle</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>rectangle width</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>rectangle height</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-render-focus" role="function">
<title>gtk_snapshot_render_focus&#160;()</title>
<indexterm zone="gtk-snapshot-render-focus"><primary>gtk_snapshot_render_focus</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_render_focus (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                           <parameter><link linkend="GtkStyleContext"><type>GtkStyleContext</type></link> *context</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> x</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> y</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> width</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> height</parameter>);</programlisting>
<para>Creates a render node for the focus outline according to <parameter>context</parameter>
,
and appends it to the current node of <parameter>snapshot</parameter>
, without changing
the current node.</para>
<refsect3 id="gtk-snapshot-render-focus.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkStyleContext"><type>GtkStyleContext</type></link> to use</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X origin of the rectangle</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y origin of the rectangle</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>rectangle width</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>rectangle height</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-snapshot-render-layout" role="function">
<title>gtk_snapshot_render_layout&#160;()</title>
<indexterm zone="gtk-snapshot-render-layout"><primary>gtk_snapshot_render_layout</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_snapshot_render_layout (<parameter><link linkend="GtkSnapshot"><type>GtkSnapshot</type></link> *snapshot</parameter>,
                            <parameter><link linkend="GtkStyleContext"><type>GtkStyleContext</type></link> *context</parameter>,
                            <parameter><link linkend="double"><type>double</type></link> x</parameter>,
                            <parameter><link linkend="double"><type>double</type></link> y</parameter>,
                            <parameter><link linkend="PangoLayout"><type>PangoLayout</type></link> *layout</parameter>);</programlisting>
<para>Creates a render node for rendering <parameter>layout</parameter>
 according to the style
information in <parameter>context</parameter>
, and appends it to the current node of <parameter>snapshot</parameter>
,
without changing the current node.</para>
<refsect3 id="gtk-snapshot-render-layout.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>snapshot</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkSnapshot"><type>GtkSnapshot</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkStyleContext"><type>GtkStyleContext</type></link> to use</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X origin of the rectangle</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y origin of the rectangle</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>layout</para></entry>
<entry role="parameter_description"><para>the <link linkend="PangoLayout"><type>PangoLayout</type></link> to render</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>

</refsect1>
<refsect1 id="GtkSnapshot.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="GtkSnapshot" role="typedef">
<title>GtkSnapshot</title>
<indexterm zone="GtkSnapshot"><primary>GtkSnapshot</primary></indexterm>
<programlisting language="C">typedef GdkSnapshot                    GtkSnapshot;
</programlisting>
</refsect2>

</refsect1>

</refentry>
