From c8aa5b8b4ecafb8aa109f0829e45873686962cce Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Sat, 12 May 2018 06:57:59 +0200 Subject: [PATCH] gl renderer: Add helper for printing a render node tree --- gsk/gl/gskglrenderer.c | 59 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index 43b775bdcf..5ccd3a61d8 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -53,6 +53,65 @@ glGetUniformLocation(program_ptr->id, "u_" #uniform_basename);\ }G_STMT_END + +static void G_GNUC_UNUSED +print_render_node_tree (GskRenderNode *root, int level) +{ +#define INDENT 4 + const guint type = gsk_render_node_get_node_type (root); + guint i; + + switch (type) + { + case GSK_CONTAINER_NODE: + g_print ("%*s Container\n", level * INDENT, " "); + for (i = 0; i < gsk_container_node_get_n_children (root); i++) + print_render_node_tree (gsk_container_node_get_child (root, i), level + 1); + break; + + case GSK_OFFSET_NODE: + g_print ("%*s Offset\n", level * INDENT, " "); + print_render_node_tree (gsk_offset_node_get_child (root), level + 1); + break; + + case GSK_TRANSFORM_NODE: + g_print ("%*s Transform\n", level * INDENT, " "); + print_render_node_tree (gsk_transform_node_get_child (root), level + 1); + break; + + case GSK_COLOR_MATRIX_NODE: + g_print ("%*s Color Matrix\n", level * INDENT, " "); + print_render_node_tree (gsk_color_matrix_node_get_child (root), level + 1); + break; + + case GSK_CROSS_FADE_NODE: + g_print ("%*s Crossfade(%.2f)\n", level * INDENT, " ", + gsk_cross_fade_node_get_progress (root)); + print_render_node_tree (gsk_cross_fade_node_get_start_child (root), level + 1); + print_render_node_tree (gsk_cross_fade_node_get_end_child (root), level + 1); + break; + + case GSK_TEXT_NODE: + g_print ("%*s Text\n", level * INDENT, " "); + break; + + case GSK_SHADOW_NODE: + g_print ("%*s Shadow\n", level * INDENT, " "); + print_render_node_tree (gsk_shadow_node_get_child (root), level + 1); + break; + + case GSK_TEXTURE_NODE: + g_print ("%*s Texture %p\n", level * INDENT, " ", gsk_texture_node_get_texture (root)); + break; + + default: + g_print ("UNKNOWN: %u\n", type); + } + +#undef INDENT +} + + static void G_GNUC_UNUSED dump_framebuffer (const char *filename, int w, int h) { -- 2.30.2