### Class

# Gtk Snapshot

#### Description [src]

    final class Gtk.Snapshot : Gdk.Snapshot {
      /* No available fields */
    }

`GtkSnapshot` assists in creating `GskRenderNodes` for widgets.

It functions in a similar way to a cairo context, and maintains a stack of render nodes and their associated transformations.

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 gtk_snapshot_pop() to change the current node.

The typical way to obtain a `GtkSnapshot` object is as an argument to the `Gtk.WidgetClass.snapshot` vfunc. If you need to create your own `GtkSnapshot`, use gtk_snapshot_new().

#### Hierarchy

#### Ancestors

- GdkSnapshot
- GObject

#### Constructors

###### gtk_snapshot_new

Creates a new `GtkSnapshot`.

#### Instance methods

###### gtk_snapshot_append_border

Appends a stroked border rectangle inside the given `outline`.

###### gtk_snapshot_append_cairo

Creates a new `GskCairoNode` and appends it to the current render node of `snapshot`, without changing the current node.

###### gtk_snapshot_append_color

Creates a new render node drawing the `color` into the given `bounds` and appends it to the current render node of `snapshot`.

###### gtk_snapshot_append_conic_gradient

Appends a conic gradient node with the given stops to `snapshot`.

###### gtk_snapshot_append_inset_shadow

Appends an inset shadow into the box given by `outline`.

###### gtk_snapshot_append_layout

No description available.

###### gtk_snapshot_append_linear_gradient

Appends a linear gradient node with the given stops to `snapshot`.

###### gtk_snapshot_append_node

Appends `node` to the current render node of `snapshot`, without changing the current node.

###### gtk_snapshot_append_outset_shadow

Appends an outset shadow node around the box given by `outline`.

###### gtk_snapshot_append_radial_gradient

Appends a radial gradient node with the given stops to `snapshot`.

###### gtk_snapshot_append_repeating_linear_gradient

Appends a repeating linear gradient node with the given stops to `snapshot`.

###### gtk_snapshot_append_repeating_radial_gradient

Appends a repeating radial gradient node with the given stops to `snapshot`.

###### gtk_snapshot_append_texture

Creates a new render node drawing the `texture` into the given `bounds` and appends it to the current render node of `snapshot`.

###### gtk_snapshot_free_to_node

Returns the node that was constructed by `snapshot` and frees `snapshot`.

###### gtk_snapshot_free_to_paintable

Returns a paintable for the node that was constructed by `snapshot` and frees `snapshot`.

###### gtk_snapshot_gl_shader_pop_texture

Removes the top element from the stack of render nodes and adds it to the nearest `GskGLShaderNode` below it.

###### gtk_snapshot_perspective

Applies a perspective projection transform.

###### gtk_snapshot_pop

Removes the top element from the stack of render nodes, and appends it to the node underneath it.

###### gtk_snapshot_push_blend

Blends together two images with the given blend mode.

###### gtk_snapshot_push_blur

Blurs an image.

###### gtk_snapshot_push_clip

Clips an image to a rectangle.

###### gtk_snapshot_push_color_matrix

Modifies the colors of an image by applying an affine transformation in RGB space.

###### gtk_snapshot_push_cross_fade

Snapshots a cross-fade operation between two images with the given `progress`.

###### gtk_snapshot_push_debug

Inserts a debug node with a message.

###### gtk_snapshot_push_gl_shader

Push a `GskGLShaderNode`.

###### gtk_snapshot_push_opacity

Modifies the opacity of an image.

###### gtk_snapshot_push_repeat

Creates a node that repeats the child node.

###### gtk_snapshot_push_rounded_clip

Clips an image to a rounded rectangle.

###### gtk_snapshot_push_shadow

Applies a shadow to an image.

###### gtk_snapshot_render_background

Creates a render node for the CSS background according to `context`, and appends it to the current node of `snapshot`, without changing the current node.

###### gtk_snapshot_render_focus

Creates a render node for the focus outline according to `context`, and appends it to the current node of `snapshot`, without changing the current node.

###### gtk_snapshot_render_frame

Creates a render node for the CSS border according to `context`, and appends it to the current node of `snapshot`, without changing the current node.

###### gtk_snapshot_render_insertion_cursor

Draws a text caret using `snapshot` at the specified index of `layout`.

###### gtk_snapshot_render_layout

Creates a render node for rendering `layout` according to the style information in `context`, and appends it to the current node of `snapshot`, without changing the current node.

###### gtk_snapshot_restore

Restores `snapshot` to the state saved by a preceding call to gtk_snapshot_save() and removes that state from the stack of saved states.

###### gtk_snapshot_rotate

Rotates @`snapshot`‘s coordinate system by `angle` degrees in 2D space - or in 3D speak, rotates around the Z axis.

###### gtk_snapshot_rotate_3d

Rotates `snapshot`‘s coordinate system by `angle` degrees around `axis`.

###### gtk_snapshot_save

Makes a copy of the current state of `snapshot` and saves it on an internal stack.

###### gtk_snapshot_scale

Scales `snapshot`‘s coordinate system in 2-dimensional space by the given factors.

###### gtk_snapshot_scale_3d

Scales `snapshot`‘s coordinate system by the given factors.

###### gtk_snapshot_to_node

Returns the render node that was constructed by `snapshot`.

###### gtk_snapshot_to_paintable

Returns a paintable encapsulating the render node that was constructed by `snapshot`.

###### gtk_snapshot_transform

Transforms `snapshot`‘s coordinate system with the given `transform`.

###### gtk_snapshot_transform_matrix

Transforms `snapshot`‘s coordinate system with the given `matrix`.

###### gtk_snapshot_translate

Translates `snapshot`‘s coordinate system by `point` in 2-dimensional space.

###### gtk_snapshot_translate_3d

Translates `snapshot`‘s coordinate system by `point`.

#### Class structure

    struct GtkSnapshotClass {
      /* no available fields */
    }