mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-16 23:24:16 +00:00
Recorder: Show colors visually for text too
Just because we can do it.
This commit is contained in:
parent
2da234d70d
commit
cddf415cbb
@ -191,6 +191,21 @@ node_type_name (GskRenderNodeType type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cairo_surface_t *
|
||||||
|
get_color_surface (const GdkRGBA *color)
|
||||||
|
{
|
||||||
|
cairo_surface_t *surface;
|
||||||
|
cairo_t *cr;
|
||||||
|
|
||||||
|
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 30, 30);
|
||||||
|
cr = cairo_create (surface);
|
||||||
|
gdk_cairo_set_source_rgba (cr, color);
|
||||||
|
cairo_paint (cr);
|
||||||
|
cairo_destroy (cr);
|
||||||
|
|
||||||
|
return surface;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
populate_render_node_properties (GtkListStore *store,
|
populate_render_node_properties (GtkListStore *store,
|
||||||
GskRenderNode *node)
|
GskRenderNode *node)
|
||||||
@ -260,16 +275,11 @@ populate_render_node_properties (GtkListStore *store,
|
|||||||
case GSK_COLOR_NODE:
|
case GSK_COLOR_NODE:
|
||||||
{
|
{
|
||||||
const GdkRGBA *color = gsk_color_node_peek_color (node);
|
const GdkRGBA *color = gsk_color_node_peek_color (node);
|
||||||
char *text = gdk_rgba_to_string (color);
|
char *text;
|
||||||
cairo_surface_t *surface;
|
cairo_surface_t *surface;
|
||||||
cairo_t *cr;
|
|
||||||
|
|
||||||
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 30, 30);
|
|
||||||
cr = cairo_create (surface);
|
|
||||||
gdk_cairo_set_source_rgba (cr, color);
|
|
||||||
cairo_paint (cr);
|
|
||||||
cairo_destroy (cr);
|
|
||||||
|
|
||||||
|
text = gdk_rgba_to_string (color);
|
||||||
|
surface = get_color_surface (color);
|
||||||
gtk_list_store_insert_with_values (store, NULL, -1,
|
gtk_list_store_insert_with_values (store, NULL, -1,
|
||||||
0, "Color",
|
0, "Color",
|
||||||
1, text,
|
1, text,
|
||||||
@ -288,21 +298,24 @@ populate_render_node_properties (GtkListStore *store,
|
|||||||
const GdkRGBA *color = gsk_text_node_get_color (node);
|
const GdkRGBA *color = gsk_text_node_get_color (node);
|
||||||
float x = gsk_text_node_get_x (node);
|
float x = gsk_text_node_get_x (node);
|
||||||
float y = gsk_text_node_get_y (node);
|
float y = gsk_text_node_get_y (node);
|
||||||
|
cairo_surface_t *surface;
|
||||||
PangoFontDescription *desc;
|
PangoFontDescription *desc;
|
||||||
char *text;
|
char *text;
|
||||||
GString *s;
|
GString *s;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
surface = get_color_surface (color);
|
||||||
desc = pango_font_describe (font);
|
desc = pango_font_describe (font);
|
||||||
text = pango_font_description_to_string (desc);
|
text = pango_font_description_to_string (desc);
|
||||||
gtk_list_store_insert_with_values (store, NULL, -1,
|
gtk_list_store_insert_with_values (store, NULL, -1,
|
||||||
0, "Font",
|
0, "Font",
|
||||||
1, text,
|
1, text,
|
||||||
2, FALSE,
|
2, TRUE,
|
||||||
3, NULL,
|
3, surface,
|
||||||
-1);
|
-1);
|
||||||
g_free (text);
|
g_free (text);
|
||||||
pango_font_description_free (desc);
|
pango_font_description_free (desc);
|
||||||
|
cairo_surface_destroy (surface);
|
||||||
|
|
||||||
s = g_string_sized_new (6 * glyphs->num_glyphs);
|
s = g_string_sized_new (6 * glyphs->num_glyphs);
|
||||||
for (i = 0; i < glyphs->num_glyphs; i++)
|
for (i = 0; i < glyphs->num_glyphs; i++)
|
||||||
@ -315,7 +328,7 @@ populate_render_node_properties (GtkListStore *store,
|
|||||||
-1);
|
-1);
|
||||||
g_string_free (s, TRUE);
|
g_string_free (s, TRUE);
|
||||||
|
|
||||||
text = g_strdup_printf ("%.2g %.g", x, y);
|
text = g_strdup_printf ("%.2f %.2f", x, y);
|
||||||
gtk_list_store_insert_with_values (store, NULL, -1,
|
gtk_list_store_insert_with_values (store, NULL, -1,
|
||||||
0, "Position",
|
0, "Position",
|
||||||
1, text,
|
1, text,
|
||||||
|
Loading…
Reference in New Issue
Block a user