Fixed Glk to Gdk color bug
[rodin/chimara.git] / libchimara / style.c
index af371d1a52fbd0b1ebb5526507328751c336e829..7147d53f9bc7ea5e1b19d53b4574579ee0365501 100644 (file)
@@ -513,7 +513,7 @@ style_accept_style_hint(GScanner *scanner, GtkTextTag *current_tag)
 
 /* Internal function: parses a glk color to a #hex-value */
 static void
-color_format(glui32 val, gchar *buffer)
+glkcolor_to_hex(glui32 val, gchar *buffer)
 {
        g_return_if_fail(buffer != NULL);
 
@@ -524,9 +524,18 @@ color_format(glui32 val, gchar *buffer)
        );
 }
 
+/* Internal function: parses a glk color to a GdkColor */
+void
+glkcolor_to_gdkcolor(glui32 val, GdkColor *color)
+{
+       color->red = 256 * ((val & 0xff0000) >> 16);
+       color->green = 256 * ((val & 0x00ff00) >> 8);
+       color->blue = 256 * (val & 0x0000ff);
+}
+
 /* Internal function: parses a GdkColor to a glk color */
 static glui32
-color_parse_gdk(GdkColor *color)
+gdkcolor_to_glkcolor(GdkColor *color)
 {
        g_return_val_if_fail(color != NULL, 0);
        return (glui32) color->pixel;
@@ -591,7 +600,7 @@ apply_stylehint_to_tag(GtkTextTag *tag, glui32 hint, glsi32 val)
                break;
 
        case stylehint_TextColor:
-               color_format(val, color);
+               glkcolor_to_hex(val, color);
 
                if(!reverse_color)
                        g_object_set(tag_object, "foreground", color, "foreground-set", TRUE, NULL);
@@ -601,7 +610,7 @@ apply_stylehint_to_tag(GtkTextTag *tag, glui32 hint, glsi32 val)
                break;
 
        case stylehint_BackColor:
-               color_format(val, color);
+               glkcolor_to_hex(val, color);
 
                if(!reverse_color)
                        g_object_set(tag_object, "background", color, "background-set", TRUE, NULL);
@@ -704,12 +713,12 @@ query_tag(GtkTextTag *tag, glui32 hint)
 
        case stylehint_TextColor:
                g_object_get(tag, "foreground-gdk", &colval, NULL);
-               return color_parse_gdk(colval);
+               return gdkcolor_to_glkcolor(colval);
                break;
 
        case stylehint_BackColor:
                g_object_get(tag, "background-gdk", &colval, NULL);
-               return color_parse_gdk(colval);
+               return gdkcolor_to_glkcolor(colval);
                break;
 
        case stylehint_ReverseColor: