Commit 0bd2c878f4008e218a872a9aeae079c68fda37ec
1 parent
4e81c711
Exists in
master
and in
5 other branches
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); | ... | ... |