From 4f56619a0fd8dce75d7c96bd6c9a4a537d766c99 Mon Sep 17 00:00:00 2001 From: Vladimir Zhbanov Date: Tue, 15 Jan 2013 13:42:04 +0400 Subject: [PATCH] gschem: let the user set up a font name The font name is used for displaying as well as printing. So user can change the font by adding the "font" key to the "gschem" group in the configuration file. --- gschem/src/o_basic.c | 10 ++++++++++ gschem/src/x_print.c | 10 ++++++++++ 2 files changed, 20 insertions(+), 0 deletions(-) diff --git a/gschem/src/o_basic.c b/gschem/src/o_basic.c index 06fb6fc..f51a64b 100644 --- a/gschem/src/o_basic.c +++ b/gschem/src/o_basic.c @@ -53,9 +53,11 @@ void o_redraw_rects (GSCHEM_TOPLEVEL *w_current, GList *iter; BOX *world_rects; EdaRenderer *renderer; + EdaConfig *cfg; int render_flags; GArray *render_color_map = NULL; GArray *render_outline_color_map = NULL; + gchar *render_font; /* UTF-8 */ cairo_matrix_t render_mtx; for (i = 0; i < n_rectangles; i++) { @@ -122,6 +124,13 @@ void o_redraw_rects (GSCHEM_TOPLEVEL *w_current, "color-map", render_color_map, NULL); + /* Set up renderer font */ + cfg = eda_config_get_context_for_path (toplevel -> page_current -> page_filename); + render_font = eda_config_get_string (cfg, "gschem","font", NULL); + if (render_font != NULL) { + g_object_set (G_OBJECT (renderer), "font-name", render_font, NULL); + } + /* We need to transform the cairo context to world coordinates while * we're drawing using the renderer. */ cairo_matrix_init (&render_mtx, @@ -300,6 +309,7 @@ void o_redraw_rects (GSCHEM_TOPLEVEL *w_current, g_object_unref (G_OBJECT (renderer)); g_array_free (render_color_map, TRUE); g_array_free (render_outline_color_map, TRUE); + g_free (render_font); } diff --git a/gschem/src/x_print.c b/gschem/src/x_print.c index 4870b7b..a8845b3 100644 --- a/gschem/src/x_print.c +++ b/gschem/src/x_print.c @@ -126,8 +126,10 @@ x_print_draw_page (TOPLEVEL *toplevel, PAGE *page, gboolean is_color, gboolean is_raster) { EdaRenderer *renderer; + EdaConfig *cfg; cairo_matrix_t mtx; GArray *color_map; + gchar *font; /* UTF-8 */ int status, wx_min, wy_min, wx_max, wy_max; double w_width, w_height, scale; GList *iter; @@ -183,6 +185,13 @@ x_print_draw_page (TOPLEVEL *toplevel, PAGE *page, "render-flags", is_raster ? EDA_RENDERER_FLAG_HINTING : 0, NULL); + /* Fourthly, change the used font name if it is set up */ + cfg = eda_config_get_context_for_path (page->page_filename); + font = eda_config_get_string (cfg, "gschem", "font", NULL); + if (font != NULL) { + g_object_set (G_OBJECT (renderer), "font-name", font, NULL); + } + /* Finally, actually do drawing */ cairo_save (cr); cairo_transform (cr, &mtx); @@ -207,6 +216,7 @@ x_print_draw_page (TOPLEVEL *toplevel, PAGE *page, g_object_unref (renderer); g_array_free (color_map, TRUE); + g_free (font); } /*! Drawing callback for use with GtkPrintOperation. */ -- 1.7.2.3