Finished implementing garglk_set_zcolors()
[projects/chimara/chimara.git] / libchimara / style.c
index f7bce7f9a625a0f6f503928e7f4d4e5b7067c811..557f3dcaa5170f3b467c034d87f45e6b7cdc0502 100644 (file)
@@ -138,7 +138,7 @@ style_init_textbuffer(GtkTextBuffer *buffer)
        ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
 
        /* Place the default text tags in the textbuffer's tag table */
-       g_hash_table_foreach(glk_data->styles->text_buffer, style_add_tag_to_textbuffer, gtk_text_buffer_get_tag_table(buffer));
+       g_hash_table_foreach(glk_data->styles->text_buffer, style_copy_tag_to_textbuffer, gtk_text_buffer_get_tag_table(buffer));
 
        /* Copy the override text tags to the textbuffers's tag table */
        g_hash_table_foreach(glk_data->glk_styles->text_buffer, style_copy_tag_to_textbuffer, gtk_text_buffer_get_tag_table(buffer));
@@ -154,7 +154,7 @@ style_init_textgrid(GtkTextBuffer *buffer)
        ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
 
        /* Place the default text tags in the textbuffer's tag table */
-       g_hash_table_foreach(glk_data->styles->text_grid, style_add_tag_to_textbuffer, gtk_text_buffer_get_tag_table(buffer));
+       g_hash_table_foreach(glk_data->styles->text_grid, style_copy_tag_to_textbuffer, gtk_text_buffer_get_tag_table(buffer));
 
        /* Copy the current text tags to the textbuffers's tag table */
        g_hash_table_foreach(glk_data->glk_styles->text_grid, style_copy_tag_to_textbuffer, gtk_text_buffer_get_tag_table(buffer));
@@ -657,19 +657,6 @@ style_accept_style_hint(GScanner *scanner, GtkTextTag *current_tag)
        return TRUE;
 }
 
-/* Internal function: parses a glk color to a #hex-value */
-static void
-glkcolor_to_hex(glui32 val, gchar *buffer)
-{
-       g_return_if_fail(buffer != NULL);
-
-       sprintf(buffer, "#%02X%02X%02X",
-               ((val & 0xff0000) >> 16),
-               ((val & 0x00ff00) >> 8),
-               (val & 0x0000ff)
-       );
-}
-
 /* Internal function: parses a glk color to a GdkColor */
 void
 glkcolor_to_gdkcolor(glui32 val, GdkColor *color)
@@ -699,7 +686,7 @@ apply_stylehint_to_tag(GtkTextTag *tag, GtkTextTag *default_tag, glui32 wintype,
        gint reverse_color = GPOINTER_TO_INT( g_object_get_data(tag_object, "reverse-color") );
 
        int i = 0;
-       gchar color[20];
+       GdkColor color;
        switch(hint) {
        case stylehint_Indentation:
                g_object_set(tag_object, "left-margin", 5*val, "left-margin-set", TRUE, NULL);
@@ -749,7 +736,6 @@ apply_stylehint_to_tag(GtkTextTag *tag, GtkTextTag *default_tag, glui32 wintype,
                                        step be a scaling of 1.2 */
                                        scale = pow(1.2, (double)val);
                        }
-                       g_printerr("Setting tag to %f\n", scale);
                        g_object_set(tag_object, "scale", scale, "scale-set", TRUE, NULL);
                }
                break;
@@ -763,7 +749,7 @@ apply_stylehint_to_tag(GtkTextTag *tag, GtkTextTag *default_tag, glui32 wintype,
                gchar *font_family;
                GtkTextTag *font_tag = g_hash_table_lookup(
                    wintype == wintype_TextBuffer? glk_data->styles->text_buffer : glk_data->styles->text_grid,
-                   val? "normal" : "preformatted");
+                   val? "default" : "preformatted");
                g_object_get(font_tag, "family", &font_family, NULL);
                g_object_set(tag_object, "family", font_family, "family-set", TRUE, NULL);
                g_free(font_family);
@@ -771,22 +757,22 @@ apply_stylehint_to_tag(GtkTextTag *tag, GtkTextTag *default_tag, glui32 wintype,
                break;
 
        case stylehint_TextColor:
-               glkcolor_to_hex(val, color);
+               glkcolor_to_gdkcolor(val, &color);
 
                if(!reverse_color)
-                       g_object_set(tag_object, "foreground", color, "foreground-set", TRUE, NULL);
+                       g_object_set(tag_object, "foreground", &color, "foreground-set", TRUE, NULL);
                else
-                       g_object_set(tag_object, "background", color, "background-set", TRUE, NULL);
+                       g_object_set(tag_object, "background", &color, "background-set", TRUE, NULL);
 
                break;
 
        case stylehint_BackColor:
-               glkcolor_to_hex(val, color);
+               glkcolor_to_gdkcolor(val, &color);
 
                if(!reverse_color)
-                       g_object_set(tag_object, "background", color, "background-set", TRUE, NULL);
+                       g_object_set(tag_object, "background", &color, "background-set", TRUE, NULL);
                else
-                       g_object_set(tag_object, "foreground", color, "background-set", TRUE, NULL);
+                       g_object_set(tag_object, "foreground", &color, "background-set", TRUE, NULL);
 
                break;