| Top |
GtkSnapshot is an auxiliary object that assists in creating GskRenderNodes in the “snapshot” vfunc. 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 “snapshot” vfunc. If you need to create your own GtkSnapshot,
use gtk_snapshot_new().
GskRenderNode *
gtk_snapshot_to_node (GtkSnapshot *snapshot);
Returns the render node that was constructed
by snapshot
. After calling this function, it
is no longer possible to add more nodes to
snapshot
. The only function that should be
called after this is gtk_snapshot_unref().
GdkPaintable * gtk_snapshot_to_paintable (GtkSnapshot *snapshot,const graphene_size_t *size);
Returns a paintable encapsulating the render node
that was constructed by snapshot
. After calling
this function, it is no longer possible to add more
nodes to snapshot
. The only function that should be
called after this is gtk_snapshot_unref().
GskRenderNode *
gtk_snapshot_free_to_node (GtkSnapshot *snapshot);
Returns the node that was constructed by snapshot
and frees snapshot
.
[skip]
GdkPaintable * gtk_snapshot_free_to_paintable (GtkSnapshot *snapshot,const graphene_size_t *size);
Returns a paintable for the node that was
constructed by snapshot
and frees snapshot
.
[skip]
snapshot |
a GtkSnapshot. |
[transfer full] |
size |
The size of the resulting paintable
or |
[allow-none] |
void gtk_snapshot_push_opacity (GtkSnapshot *snapshot,double opacity);
Modifies the opacity of an image.
The image is recorded until the next call to gtk_snapshot_pop().
void gtk_snapshot_push_color_matrix (GtkSnapshot *snapshot,const graphene_matrix_t *color_matrix,const graphene_vec4_t *color_offset);
Modifies the colors of an image by applying an affine transformation in RGB space.
The image is recorded until the next call to gtk_snapshot_pop().
void gtk_snapshot_push_repeat (GtkSnapshot *snapshot,const graphene_rect_t *bounds,const graphene_rect_t *child_bounds);
Creates a node that repeats the child node.
The child is recorded until the next call to gtk_snapshot_pop().
void gtk_snapshot_push_clip (GtkSnapshot *snapshot,const graphene_rect_t *bounds);
Clips an image to a rectangle.
The image is recorded until the next call to gtk_snapshot_pop().
void gtk_snapshot_push_rounded_clip (GtkSnapshot *snapshot,const GskRoundedRect *bounds);
Clips an image to a rounded rectangle.
The image is recorded until the next call to gtk_snapshot_pop().
void gtk_snapshot_push_cross_fade (GtkSnapshot *snapshot,double progress);
Snapshots a cross-fade operation between two images with the
given progress
.
Until the first call to gtk_snapshot_pop(), the start image
will be snapshot. After that call, the end image will be recorded
until the second call to gtk_snapshot_pop().
Calling this function requires 2 calls to gtk_snapshot_pop().
void gtk_snapshot_push_blend (GtkSnapshot *snapshot,GskBlendMode blend_mode);
Blends together 2 images with the given blend mode.
Until the first call to gtk_snapshot_pop(), 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 gtk_snapshot_pop().
Calling this function requires 2 subsequent calls to gtk_snapshot_pop().
void gtk_snapshot_push_blur (GtkSnapshot *snapshot,double radius);
Blurs an image.
The image is recorded until the next call to gtk_snapshot_pop().
void gtk_snapshot_push_shadow (GtkSnapshot *snapshot,const GskShadow *shadow,gsize n_shadows);
Applies a shadow to an image.
The image is recorded until the next call to gtk_snapshot_pop().
void gtk_snapshot_push_debug (GtkSnapshot *snapshot,const char *message,...);
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.
void
gtk_snapshot_pop (GtkSnapshot *snapshot);
Removes the top element from the stack of render nodes, and appends it to the node underneath it.
void
gtk_snapshot_save (GtkSnapshot *snapshot);
Makes a copy of the current state of snapshot
and saves it
on an internal stack of saved states for snapshot
. When
gtk_snapshot_restore() is called, snapshot
will be restored to
the saved state. Multiple calls to gtk_snapshot_save() and
gtk_snapshot_restore() can be nested; each call to
gtk_snapshot_restore() restores the state from the matching paired
gtk_snapshot_save().
It is necessary to clear all saved states with corresponding calls
to gtk_snapshot_restore().
void
gtk_snapshot_restore (GtkSnapshot *snapshot);
Restores snapshot
to the state saved by a preceding call to
gtk_snapshot_save() and removes that state from the stack of
saved states.
void gtk_snapshot_transform (GtkSnapshot *snapshot,GskTransform *transform);
Transforms snapshot
's coordinate system with the given transform
.
void gtk_snapshot_transform_matrix (GtkSnapshot *snapshot,const graphene_matrix_t *matrix);
Transforms snapshot
's coordinate system with the given matrix
.
void gtk_snapshot_translate (GtkSnapshot *snapshot,const graphene_point_t *point);
Translates snapshot
's coordinate system by point
in 2-dimensional space.
void gtk_snapshot_translate_3d (GtkSnapshot *snapshot,const graphene_point3d_t *point);
Translates snapshot
's coordinate system by point
.
void gtk_snapshot_rotate (GtkSnapshot *snapshot,float angle);
Rotates @snapshot
's coordinate system by angle
degrees in 2D space -
or in 3D speak, rotates around the z axis.
void gtk_snapshot_rotate_3d (GtkSnapshot *snapshot,float angle,const graphene_vec3_t *axis);
Rotates snapshot
's coordinate system by angle
degrees around axis
.
For a rotation in 2D space, use gsk_transform_rotate().
void gtk_snapshot_scale (GtkSnapshot *snapshot,float factor_x,float factor_y);
Scales snapshot
's coordinate system in 2-dimensional space by
the given factors.
Use gtk_snapshot_scale_3d() to scale in all 3 dimensions.
void gtk_snapshot_scale_3d (GtkSnapshot *snapshot,float factor_x,float factor_y,float factor_z);
Scales snapshot
's coordinate system by the given factors.
void gtk_snapshot_perspective (GtkSnapshot *snapshot,float depth);
Applies a perspective projection transform.
See gsk_transform_perspective() for a discussion on the details.
void gtk_snapshot_append_node (GtkSnapshot *snapshot,GskRenderNode *node);
Appends node
to the current render node of snapshot
,
without changing the current node. If snapshot
does
not have a current node yet, node
will become the
initial node.
cairo_t * gtk_snapshot_append_cairo (GtkSnapshot *snapshot,const graphene_rect_t *bounds);
Creates a new render node and appends it to the current render
node of snapshot
, without changing the current node.
void gtk_snapshot_append_texture (GtkSnapshot *snapshot,GdkTexture *texture,const graphene_rect_t *bounds);
Creates a new render node drawing the texture
into the given bounds
and appends it
to the current render node of snapshot
.
void gtk_snapshot_append_color (GtkSnapshot *snapshot,const GdkRGBA *color,const graphene_rect_t *bounds);
Creates a new render node drawing the color
into the given bounds
and appends it
to the current render node of snapshot
.
You should try to avoid calling this function if color
is transparent.
void gtk_snapshot_append_layout (GtkSnapshot *snapshot,PangoLayout *layout,const GdkRGBA *color);
Creates render nodes for rendering layout
in the given foregound color
and appends them to the current node of snapshot
without changing the
current node.
snapshot |
||
layout |
the PangoLayout to render |
|
color |
the foreground color to render the layout in |
void gtk_snapshot_append_linear_gradient (GtkSnapshot *snapshot,const graphene_rect_t *bounds,const graphene_point_t *start_point,const graphene_point_t *end_point,const GskColorStop *stops,gsize n_stops);
Appends a linear gradient node with the given stops to snapshot
.
snapshot |
||
bounds |
the rectangle to render the linear gradient into |
|
start_point |
the point at which the linear gradient will begin |
|
end_point |
the point at which the linear gradient will finish |
|
stops |
a pointer to an array of GskColorStop defining the gradient. |
[array length=n_stops] |
n_stops |
the number of elements in |
void gtk_snapshot_append_repeating_linear_gradient (GtkSnapshot *snapshot,const graphene_rect_t *bounds,const graphene_point_t *start_point,const graphene_point_t *end_point,const GskColorStop *stops,gsize n_stops);
Appends a repeating linear gradient node with the given stops to snapshot
.
snapshot |
||
bounds |
the rectangle to render the linear gradient into |
|
start_point |
the point at which the linear gradient will begin |
|
end_point |
the point at which the linear gradient will finish |
|
stops |
a pointer to an array of GskColorStop defining the gradient. |
[array length=n_stops] |
n_stops |
the number of elements in |
void gtk_snapshot_append_border (GtkSnapshot *snapshot,const GskRoundedRect *outline,const float border_width[4],const GdkRGBA border_color[4]);
Appends a stroked border rectangle inside the given outline
. The
4 sides of the border can have different widths and colors.
snapshot |
||
outline |
a GskRoundedRect describing the outline of the border |
|
border_width |
the stroke width of the border on the top, right, bottom and left side respectively. |
[array fixed-size=4] |
border_color |
the color used on the top, right, bottom and left side. |
[array fixed-size=4] |
void gtk_snapshot_append_inset_shadow (GtkSnapshot *snapshot,const GskRoundedRect *outline,const GdkRGBA *color,float dx,float dy,float spread,float blur_radius);
Appends an inset shadow into the box given by outline
.
void gtk_snapshot_append_outset_shadow (GtkSnapshot *snapshot,const GskRoundedRect *outline,const GdkRGBA *color,float dx,float dy,float spread,float blur_radius);
Appends an outset shadow node around the box given by outline
.
void gtk_snapshot_render_background (GtkSnapshot *snapshot,GtkStyleContext *context,gdouble x,gdouble y,gdouble width,gdouble height);
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.
snapshot |
||
context |
the GtkStyleContext to use |
|
x |
X origin of the rectangle |
|
y |
Y origin of the rectangle |
|
width |
rectangle width |
|
height |
rectangle height |
void gtk_snapshot_render_frame (GtkSnapshot *snapshot,GtkStyleContext *context,gdouble x,gdouble y,gdouble width,gdouble height);
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.
snapshot |
||
context |
the GtkStyleContext to use |
|
x |
X origin of the rectangle |
|
y |
Y origin of the rectangle |
|
width |
rectangle width |
|
height |
rectangle height |
void gtk_snapshot_render_focus (GtkSnapshot *snapshot,GtkStyleContext *context,gdouble x,gdouble y,gdouble width,gdouble height);
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.
snapshot |
||
context |
the GtkStyleContext to use |
|
x |
X origin of the rectangle |
|
y |
Y origin of the rectangle |
|
width |
rectangle width |
|
height |
rectangle height |
void gtk_snapshot_render_layout (GtkSnapshot *snapshot,GtkStyleContext *context,gdouble x,gdouble y,PangoLayout *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.
snapshot |
||
context |
the GtkStyleContext to use |
|
x |
X origin of the rectangle |
|
y |
Y origin of the rectangle |
|
layout |
the PangoLayout to render |
void gtk_snapshot_render_insertion_cursor (GtkSnapshot *snapshot,GtkStyleContext *context,gdouble x,gdouble y,PangoLayout *layout,int index,PangoDirection direction);
Draws a text caret using snapshot
at the specified index of layout
.
snapshot |
snapshot to render to |
|
context |
||
x |
X origin |
|
y |
Y origin |
|
layout |
the PangoLayout of the text |
|
index |
the index in the PangoLayout |
|
direction |
the PangoDirection of the text |