Commit 0bd2c878f4008e218a872a9aeae079c68fda37ec

Authored by perry.werneck@gmail.com
1 parent 4e81c711

Remodelando ajustes de fonte durante a impressao

Showing 1 changed file with 49 additions and 14 deletions   Show diff stats
src/pw3270/print.c
... ... @@ -42,9 +42,11 @@
42 42 PW3270_SRC src;
43 43  
44 44 H3270 * session;
  45 +/*
45 46 gchar * font;
46 47 guint fontsize;
47 48 cairo_font_weight_t fontweight;
  49 +*/
48 50 int baddr;
49 51 int rows;
50 52 int cols;
... ... @@ -62,6 +64,7 @@
62 64  
63 65 /*--[ Implement ]------------------------------------------------------------------------------------*/
64 66  
  67 +/*
65 68 static void setup_font(GtkPrintContext * context, PRINT_INFO *info)
66 69 {
67 70 cairo_t *cr = gtk_print_context_get_cairo_context(context);
... ... @@ -83,11 +86,43 @@
83 86  
84 87  
85 88 }
86   -
  89 +*/
87 90 static void begin_print(GtkPrintOperation *prt, GtkPrintContext *context, PRINT_INFO *info)
88 91 {
89   - setup_font(context,info);
  92 + cairo_t * cr = gtk_print_context_get_cairo_context(context);
  93 + gchar * font = get_string_from_config("print","font","Courier New 10");
  94 +
  95 + // Setup font
  96 +
  97 + if(font)
  98 + {
  99 + PangoFontDescription * descr = pango_font_description_from_string(font);
  100 + if(descr)
  101 + {
  102 + cairo_select_font_face(cr, pango_font_description_get_family(descr),
  103 + CAIRO_FONT_SLANT_NORMAL,
  104 + pango_font_description_get_weight(descr) == PANGO_WEIGHT_BOLD ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL);
  105 +
  106 + cairo_set_font_size(cr,gtk_print_context_get_width(context)/80);
  107 +
  108 + pango_font_description_free(descr);
  109 + }
  110 + g_free(font);
  111 + }
  112 +
  113 + info->font_scaled = cairo_get_scaled_font(cr);
  114 + cairo_scaled_font_reference(info->font_scaled);
  115 + cairo_scaled_font_extents(info->font_scaled,&info->extents);
90 116  
  117 + info->width = ((double) info->cols) * info->extents.max_x_advance;
  118 + info->height = ((double) info->rows) * (info->extents.height + info->extents.descent);
  119 +
  120 + // Center image
  121 + info->left = (gtk_print_context_get_width(context)-info->width)/2;
  122 + if(info->left < 2)
  123 + info->left = 2;
  124 +
  125 + // Setup page size
91 126 info->lpp = (gtk_print_context_get_height(context) / (info->extents.height + info->extents.descent));
92 127 info->pages = (info->rows / info->lpp)+1;
93 128  
... ... @@ -252,8 +287,10 @@ static gchar * enum_to_string(GType type, guint enum_value)
252 287 if(info->font_scaled)
253 288 cairo_scaled_font_destroy(info->font_scaled);
254 289  
  290 +/*
255 291 if(info->font)
256 292 g_free(info->font);
  293 +*/
257 294  
258 295 if(info->text)
259 296 g_strfreev(info->text);
... ... @@ -270,7 +307,8 @@ static gchar * enum_to_string(GType type, guint enum_value)
270 307  
271 308 static void font_set(GtkFontButton *widget, PRINT_INFO *info)
272 309 {
273   - const gchar * name = gtk_font_button_get_font_name(widget);
  310 + set_string_to_config("print","font",gtk_font_button_get_font_name(widget));
  311 +/*
274 312 PangoFontDescription * descr = pango_font_description_from_string(name);
275 313  
276 314 if(!descr)
... ... @@ -288,11 +326,8 @@ static gchar * enum_to_string(GType type, guint enum_value)
288 326  
289 327 pango_font_description_free(descr);
290 328  
291   - set_string_to_config("print","font",name);
292   - set_integer_to_config("print","fontsize",info->fontsize);
293   - set_integer_to_config("print","fontweight",info->fontweight);
294   -
295 329 trace("Font set to \"%s\" with size %d",info->font,info->fontsize);
  330 +*/
296 331 }
297 332  
298 333 static void toggle_show_selection(GtkToggleButton *togglebutton,PRINT_INFO *info)
... ... @@ -306,14 +341,11 @@ static gchar * enum_to_string(GType type, guint enum_value)
306 341 {
307 342 gchar *ptr = get_string_from_config("print","colors","");
308 343  
309   - info->font = get_string_from_config("print","font","Courier New 10");
310   - info->fontsize = get_integer_from_config("print","fontsize",10240);
311   - info->fontweight = get_integer_from_config("print","fontweight",0);
312   -
313 344 if(*ptr)
314 345 v3270_set_color_table(info->color,ptr);
315 346 else
316 347 v3270_set_mono_color_table(info->color,"black","white");
  348 +
317 349 g_free(ptr);
318 350 }
319 351  
... ... @@ -324,6 +356,7 @@ static gchar * enum_to_string(GType type, guint enum_value)
324 356 GtkWidget * label[G_N_ELEMENTS(text)];
325 357 GtkWidget * widget;
326 358 int f;
  359 + gchar * font;
327 360  
328 361 trace("%s starts",__FUNCTION__);
329 362  
... ... @@ -344,8 +377,11 @@ static gchar * enum_to_string(GType type, guint enum_value)
344 377 gtk_table_attach(GTK_TABLE(container),widget,1,2,0,1,GTK_EXPAND|GTK_FILL,GTK_FILL,5,0);
345 378  
346 379 load_settings(info);
347   - gtk_font_button_set_font_name((GtkFontButton *) widget,info->font);
348   - font_set((GtkFontButton *) widget,info);
  380 +
  381 + font = get_string_from_config("print","font","Courier New 10");
  382 + gtk_font_button_set_font_name((GtkFontButton *) widget, font);
  383 + g_free(font);
  384 +
349 385 g_signal_connect(G_OBJECT(widget),"font-set",G_CALLBACK(font_set),info);
350 386  
351 387 widget = color_scheme_new(info->color);
... ... @@ -414,7 +450,6 @@ static gchar * enum_to_string(GType type, guint enum_value)
414 450  
415 451 *info = g_new0(PRINT_INFO,1);
416 452 (*info)->session = v3270_get_session(widget);
417   - (*info)->fontweight = CAIRO_FONT_WEIGHT_NORMAL;
418 453  
419 454 // Basic setup
420 455 gtk_print_operation_set_allow_async(print,TRUE);
... ...