Add gtk_snapshot_push_blur()
This function is similar to the other push functions. This one uses the newly created blur node.
This commit is contained in:
@@ -321,6 +321,57 @@ gtk_snapshot_push_opacity (GtkSnapshot *snapshot,
|
||||
snapshot->state = state;
|
||||
}
|
||||
|
||||
static GskRenderNode *
|
||||
gtk_snapshot_collect_blur (GtkSnapshotState *state,
|
||||
GskRenderNode **nodes,
|
||||
guint n_nodes,
|
||||
const char *name)
|
||||
{
|
||||
GskRenderNode *node, *blur_node;
|
||||
|
||||
node = gtk_snapshot_collect_default (state, nodes, n_nodes, name);
|
||||
if (node == NULL)
|
||||
return NULL;
|
||||
|
||||
blur_node = gsk_blur_node_new (node, state->data.blur.radius);
|
||||
if (name)
|
||||
gsk_render_node_set_name (blur_node, name);
|
||||
|
||||
gsk_render_node_unref (node);
|
||||
|
||||
return blur_node;
|
||||
}
|
||||
|
||||
void
|
||||
gtk_snapshot_push_blur (GtkSnapshot *snapshot,
|
||||
double radius,
|
||||
const char *name,
|
||||
...)
|
||||
{
|
||||
GtkSnapshotState *state;
|
||||
char *str;
|
||||
|
||||
if (name && snapshot->record_names)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, name);
|
||||
str = g_strdup_vprintf (name, args);
|
||||
va_end (args);
|
||||
}
|
||||
else
|
||||
str = NULL;
|
||||
|
||||
state = gtk_snapshot_state_new (snapshot->state,
|
||||
str,
|
||||
snapshot->state->clip_region,
|
||||
snapshot->state->translate_x,
|
||||
snapshot->state->translate_y,
|
||||
gtk_snapshot_collect_blur);
|
||||
state->data.blur.radius = radius;
|
||||
snapshot->state = state;
|
||||
}
|
||||
|
||||
static GskRenderNode *
|
||||
gtk_snapshot_collect_color_matrix (GtkSnapshotState *state,
|
||||
GskRenderNode **nodes,
|
||||
|
||||
@@ -51,6 +51,11 @@ void gtk_snapshot_push_opacity (GtkSnapshot
|
||||
double opacity,
|
||||
const char *name,
|
||||
...) G_GNUC_PRINTF (3, 4);
|
||||
GDK_AVAILABLE_IN_3_92
|
||||
void gtk_snapshot_push_blur (GtkSnapshot *snapshot,
|
||||
double radius,
|
||||
const char *name,
|
||||
...) G_GNUC_PRINTF (3, 4);
|
||||
GDK_AVAILABLE_IN_3_90
|
||||
void gtk_snapshot_push_color_matrix (GtkSnapshot *snapshot,
|
||||
const graphene_matrix_t*color_matrix,
|
||||
|
||||
@@ -48,6 +48,9 @@ struct _GtkSnapshotState {
|
||||
struct {
|
||||
double opacity;
|
||||
} opacity;
|
||||
struct {
|
||||
double radius;
|
||||
} blur;
|
||||
struct {
|
||||
graphene_matrix_t matrix;
|
||||
graphene_vec4_t offset;
|
||||
|
||||
Reference in New Issue
Block a user