+/* Determine the current colors used to render the text for a given stream.
+ * This can be set in a number of places */
+static void
+style_cascade_colors(GtkTextTag *tag, GtkTextTag *glk_tag, GtkTextTag *default_tag, GdkColor **foreground, GdkColor **background)
+{
+ gboolean foreground_set = FALSE;
+ gboolean background_set = FALSE;
+ gint reverse_color;
+
+ // Default color
+ reverse_color = GPOINTER_TO_INT( g_object_get_data(G_OBJECT(default_tag), "reverse-color") );
+ g_object_get(default_tag, "foreground-set", &foreground_set, "background-set", &background_set, NULL);
+ if(foreground_set)
+ g_object_get(default_tag, "foreground-gdk", reverse_color ? background:foreground, NULL);
+ if(background_set)
+ g_object_get(default_tag, "background-gdk", reverse_color ? foreground:background, NULL);
+
+ // Player defined color
+ reverse_color = GPOINTER_TO_INT( g_object_get_data(G_OBJECT(tag), "reverse-color") );
+ g_object_get(tag, "foreground-set", &foreground_set, "background-set", &background_set, NULL);
+ if(foreground_set)
+ g_object_get(tag, "foreground-gdk", reverse_color ? background:foreground, NULL);
+ if(background_set)
+ g_object_get(tag, "background-gdk", reverse_color ? foreground:background, NULL);
+
+ // GLK defined color
+ reverse_color = GPOINTER_TO_INT( g_object_get_data(G_OBJECT(glk_tag), "reverse-color") );
+ g_object_get(glk_tag, "foreground-set", &foreground_set, "background-set", &background_set, NULL);
+ if(foreground_set)
+ g_object_get(glk_tag, "foreground-gdk", reverse_color ? background:foreground, NULL);
+ if(background_set)
+ g_object_get(glk_tag, "background-gdk", reverse_color ? foreground:background, NULL);
+
+}
+
+/* Determine the current colors used to render the text for a given stream.
+ * This can be set in a number of places */