Commit 2ebc6b93313128071caf53aaa468b63446bb1847
1 parent
81d108b9
Exists in
master
and in
5 other branches
Separando informações de fonte numa estrutura independente
Showing
7 changed files
with
122 additions
and
118 deletions
Show diff stats
src/include/pw3270/v3270.h
src/pw3270/v3270/accessible.c
@@ -308,10 +308,10 @@ static void v3270_accessible_get_character_extents( AtkText *text, | @@ -308,10 +308,10 @@ static void v3270_accessible_get_character_extents( AtkText *text, | ||
308 | gdk_window_get_origin(window, x, y); | 308 | gdk_window_get_origin(window, x, y); |
309 | 309 | ||
310 | // Get screen position | 310 | // Get screen position |
311 | - *x += widget->metrics.left + ((offset%cols) * widget->metrics.width); | ||
312 | - *y += widget->metrics.top + ((offset/cols) * widget->metrics.spacing); | ||
313 | - *width = widget->metrics.width; | ||
314 | - *height = widget->metrics.spacing; | 311 | + *x += widget->font.left + ((offset%cols) * widget->font.width); |
312 | + *y += widget->font.top + ((offset/cols) * widget->font.spacing); | ||
313 | + *width = widget->font.width; | ||
314 | + *height = widget->font.spacing; | ||
315 | 315 | ||
316 | if(coords == ATK_XY_WINDOW) | 316 | if(coords == ATK_XY_WINDOW) |
317 | { | 317 | { |
@@ -631,7 +631,7 @@ static AtkAttributeSet * v3270_accessible_get_run_attributes(AtkText *text, gint | @@ -631,7 +631,7 @@ static AtkAttributeSet * v3270_accessible_get_run_attributes(AtkText *text, gint | ||
631 | // The font family name | 631 | // The font family name |
632 | attributes = add_attribute( attributes, | 632 | attributes = add_attribute( attributes, |
633 | ATK_TEXT_ATTR_FAMILY_NAME, | 633 | ATK_TEXT_ATTR_FAMILY_NAME, |
634 | - GTK_V3270(widget)->font_family ); | 634 | + GTK_V3270(widget)->font.family ); |
635 | 635 | ||
636 | return attributes; | 636 | return attributes; |
637 | } | 637 | } |
src/pw3270/v3270/draw.c
@@ -51,7 +51,7 @@ gboolean v3270_draw(GtkWidget * widget, cairo_t * cr) | @@ -51,7 +51,7 @@ gboolean v3270_draw(GtkWidget * widget, cairo_t * cr) | ||
51 | 51 | ||
52 | gdk_cairo_set_source_rgba(cr,terminal->color+V3270_COLOR_CROSS_HAIR); | 52 | gdk_cairo_set_source_rgba(cr,terminal->color+V3270_COLOR_CROSS_HAIR); |
53 | 53 | ||
54 | - cairo_rectangle(cr, 0,terminal->cursor.rect.y+terminal->metrics.height,allocation.width,1); | 54 | + cairo_rectangle(cr, 0,terminal->cursor.rect.y+terminal->font.height,allocation.width,1); |
55 | cairo_fill(cr); | 55 | cairo_fill(cr); |
56 | 56 | ||
57 | cairo_rectangle(cr, terminal->cursor.rect.x,0,1,terminal->oia_rect->y-3); | 57 | cairo_rectangle(cr, terminal->cursor.rect.x,0,1,terminal->oia_rect->y-3); |
@@ -72,9 +72,9 @@ gboolean v3270_draw(GtkWidget * widget, cairo_t * cr) | @@ -72,9 +72,9 @@ gboolean v3270_draw(GtkWidget * widget, cairo_t * cr) | ||
72 | else | 72 | else |
73 | { | 73 | { |
74 | cairo_rectangle(cr, terminal->cursor.rect.x, | 74 | cairo_rectangle(cr, terminal->cursor.rect.x, |
75 | - terminal->cursor.rect.y+terminal->metrics.height, | 75 | + terminal->cursor.rect.y+terminal->font.height, |
76 | terminal->cursor.rect.width, | 76 | terminal->cursor.rect.width, |
77 | - terminal->metrics.descent ); | 77 | + terminal->font.descent ); |
78 | } | 78 | } |
79 | 79 | ||
80 | cairo_fill(cr); | 80 | cairo_fill(cr); |
@@ -364,9 +364,9 @@ void v3270_reload(GtkWidget *widget) | @@ -364,9 +364,9 @@ void v3270_reload(GtkWidget *widget) | ||
364 | lib3270_get_screen_size(terminal->host,&rows,&cols); | 364 | lib3270_get_screen_size(terminal->host,&rows,&cols); |
365 | 365 | ||
366 | memset(&rect,0,sizeof(rect)); | 366 | memset(&rect,0,sizeof(rect)); |
367 | - rect.y = terminal->metrics.top; | ||
368 | - rect.width = terminal->metrics.width; | ||
369 | - rect.height = terminal->metrics.spacing; | 367 | + rect.y = terminal->font.top; |
368 | + rect.width = terminal->font.width; | ||
369 | + rect.height = terminal->font.spacing; | ||
370 | addr = 0; | 370 | addr = 0; |
371 | cursor = lib3270_get_cursor_address(terminal->host); | 371 | cursor = lib3270_get_cursor_address(terminal->host); |
372 | 372 | ||
@@ -374,7 +374,7 @@ void v3270_reload(GtkWidget *widget) | @@ -374,7 +374,7 @@ void v3270_reload(GtkWidget *widget) | ||
374 | { | 374 | { |
375 | int c; | 375 | int c; |
376 | 376 | ||
377 | - rect.x = terminal->metrics.left; | 377 | + rect.x = terminal->font.left; |
378 | 378 | ||
379 | for(c=0;c < cols;c++) | 379 | for(c=0;c < cols;c++) |
380 | { | 380 | { |
@@ -386,18 +386,18 @@ void v3270_reload(GtkWidget *widget) | @@ -386,18 +386,18 @@ void v3270_reload(GtkWidget *widget) | ||
386 | if(addr == cursor) | 386 | if(addr == cursor) |
387 | v3270_update_cursor_rect(terminal,&rect,chr,attr); | 387 | v3270_update_cursor_rect(terminal,&rect,chr,attr); |
388 | 388 | ||
389 | - v3270_draw_element(cr,chr,attr,terminal->host,terminal->metrics.height,&rect,terminal->color); | 389 | + v3270_draw_element(cr,chr,attr,terminal->host,terminal->font.height,&rect,terminal->color); |
390 | 390 | ||
391 | addr++; | 391 | addr++; |
392 | rect.x += rect.width; | 392 | rect.x += rect.width; |
393 | } | 393 | } |
394 | 394 | ||
395 | - rect.y += terminal->metrics.spacing; | 395 | + rect.y += terminal->font.spacing; |
396 | 396 | ||
397 | } | 397 | } |
398 | 398 | ||
399 | - cairo_set_scaled_font(cr,terminal->font_scaled); | ||
400 | - v3270_draw_oia(cr, terminal->host, rect.y, cols, &terminal->metrics, terminal->color,terminal->oia_rect); | 399 | + cairo_set_scaled_font(cr,terminal->font.scaled); |
400 | + v3270_draw_oia(cr, terminal->host, rect.y, cols, &terminal->font, terminal->color,terminal->oia_rect); | ||
401 | 401 | ||
402 | cairo_destroy(cr); | 402 | cairo_destroy(cr); |
403 | 403 | ||
@@ -423,16 +423,16 @@ void v3270_update_char(H3270 *session, int addr, unsigned char chr, unsigned sho | @@ -423,16 +423,16 @@ void v3270_update_char(H3270 *session, int addr, unsigned char chr, unsigned sho | ||
423 | lib3270_get_screen_size(terminal->host,&rows,&cols); | 423 | lib3270_get_screen_size(terminal->host,&rows,&cols); |
424 | 424 | ||
425 | memset(&rect,0,sizeof(rect)); | 425 | memset(&rect,0,sizeof(rect)); |
426 | - rect.x = terminal->metrics.left + ((addr % cols) * terminal->metrics.width); | ||
427 | - rect.y = terminal->metrics.top + ((addr / cols) * terminal->metrics.spacing); | ||
428 | - rect.width = terminal->metrics.width; | ||
429 | - rect.height = terminal->metrics.spacing; | 426 | + rect.x = terminal->font.left + ((addr % cols) * terminal->font.width); |
427 | + rect.y = terminal->font.top + ((addr / cols) * terminal->font.spacing); | ||
428 | + rect.width = terminal->font.width; | ||
429 | + rect.height = terminal->font.spacing; | ||
430 | 430 | ||
431 | // trace("%s: c=%c attr=%04x addr=%d pos=%d,%d x=%d y=%d w=%d h=%d",__FUNCTION__,chr,(int) attr,addr,(addr / cols),(addr % cols),rect.x,rect.y,rect.width,rect.height); | 431 | // trace("%s: c=%c attr=%04x addr=%d pos=%d,%d x=%d y=%d w=%d h=%d",__FUNCTION__,chr,(int) attr,addr,(addr / cols),(addr % cols),rect.x,rect.y,rect.width,rect.height); |
432 | 432 | ||
433 | cr = cairo_create(terminal->surface); | 433 | cr = cairo_create(terminal->surface); |
434 | - cairo_set_scaled_font(cr,terminal->font_scaled); | ||
435 | - v3270_draw_element(cr, chr, attr, terminal->host, terminal->metrics.height, &rect,terminal->color); | 434 | + cairo_set_scaled_font(cr,terminal->font.scaled); |
435 | + v3270_draw_element(cr, chr, attr, terminal->host, terminal->font.height, &rect,terminal->color); | ||
436 | cairo_destroy(cr); | 436 | cairo_destroy(cr); |
437 | if(cursor) | 437 | if(cursor) |
438 | v3270_update_cursor_rect(terminal,&rect,chr,attr); | 438 | v3270_update_cursor_rect(terminal,&rect,chr,attr); |
@@ -454,11 +454,11 @@ void v3270_update_cursor_surface(v3270 *widget,unsigned char chr,unsigned short | @@ -454,11 +454,11 @@ void v3270_update_cursor_surface(v3270 *widget,unsigned char chr,unsigned short | ||
454 | 454 | ||
455 | get_element_colors(attr,&fg,&bg,widget->color); | 455 | get_element_colors(attr,&fg,&bg,widget->color); |
456 | 456 | ||
457 | - cairo_set_scaled_font(cr,widget->font_scaled); | 457 | + cairo_set_scaled_font(cr,widget->font.scaled); |
458 | 458 | ||
459 | rect.x = 0; | 459 | rect.x = 0; |
460 | rect.y = 0; | 460 | rect.y = 0; |
461 | - v3270_draw_char(cr,chr,attr,widget->host,widget->metrics.height,&rect,bg,fg); | 461 | + v3270_draw_char(cr,chr,attr,widget->host,widget->font.height,&rect,bg,fg); |
462 | 462 | ||
463 | cairo_destroy(cr); | 463 | cairo_destroy(cr); |
464 | } | 464 | } |
@@ -471,7 +471,7 @@ void v3270_update_cursor_rect(v3270 *widget, GdkRectangle *rect, unsigned char c | @@ -471,7 +471,7 @@ void v3270_update_cursor_rect(v3270 *widget, GdkRectangle *rect, unsigned char c | ||
471 | widget->cursor.chr = chr; | 471 | widget->cursor.chr = chr; |
472 | widget->cursor.rect = *rect; | 472 | widget->cursor.rect = *rect; |
473 | widget->cursor.attr = attr; | 473 | widget->cursor.attr = attr; |
474 | - widget->cursor.rect.height = widget->metrics.height + widget->metrics.descent; | 474 | + widget->cursor.rect.height = widget->font.height + widget->font.descent; |
475 | v3270_update_cursor_surface(widget,chr,attr); | 475 | v3270_update_cursor_surface(widget,chr,attr); |
476 | } | 476 | } |
477 | 477 |
src/pw3270/v3270/mouse.c
@@ -49,12 +49,12 @@ gint v3270_get_offset_at_point(v3270 *widget, gint x, gint y) | @@ -49,12 +49,12 @@ gint v3270_get_offset_at_point(v3270 *widget, gint x, gint y) | ||
49 | GdkPoint point; | 49 | GdkPoint point; |
50 | int r,c; | 50 | int r,c; |
51 | 51 | ||
52 | - g_return_val_if_fail(widget->metrics.width > 0,-1); | 52 | + g_return_val_if_fail(widget->font.width > 0,-1); |
53 | 53 | ||
54 | if(x > 0 && y > 0) | 54 | if(x > 0 && y > 0) |
55 | { | 55 | { |
56 | - point.x = ((x-widget->metrics.left)/widget->metrics.width); | ||
57 | - point.y = ((y-widget->metrics.top)/widget->metrics.spacing); | 56 | + point.x = ((x-widget->font.left)/widget->font.width); |
57 | + point.y = ((y-widget->font.top)/widget->font.spacing); | ||
58 | 58 | ||
59 | lib3270_get_screen_size(widget->host,&r,&c); | 59 | lib3270_get_screen_size(widget->host,&r,&c); |
60 | 60 |
src/pw3270/v3270/oia.c
@@ -47,7 +47,7 @@ | @@ -47,7 +47,7 @@ | ||
47 | 47 | ||
48 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ | 48 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ |
49 | 49 | ||
50 | -static void draw_cursor_position(cairo_t *cr, GdkRectangle *rect, struct v3270_metrics *metrics, int row, int col); | 50 | +static void draw_cursor_position(cairo_t *cr, GdkRectangle *rect, v3270FontInfo *metrics, int row, int col); |
51 | 51 | ||
52 | /*--[ Statics ]--------------------------------------------------------------------------------------*/ | 52 | /*--[ Statics ]--------------------------------------------------------------------------------------*/ |
53 | 53 | ||
@@ -124,7 +124,7 @@ static gint draw_spinner(cairo_t *cr, GdkRectangle *r, GdkRGBA *color, gint step | @@ -124,7 +124,7 @@ static gint draw_spinner(cairo_t *cr, GdkRectangle *r, GdkRGBA *color, gint step | ||
124 | } | 124 | } |
125 | #endif // HAVE_LIBM | 125 | #endif // HAVE_LIBM |
126 | 126 | ||
127 | -static void setup_cursor_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) | 127 | +static void setup_cursor_position(GdkRectangle *rect, v3270FontInfo *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) |
128 | { | 128 | { |
129 | rect->width = metrics->width * 8; | 129 | rect->width = metrics->width * 8; |
130 | rect->x -= rect->width; | 130 | rect->x -= rect->width; |
@@ -136,7 +136,7 @@ static void setup_cursor_position(GdkRectangle *rect, struct v3270_metrics *metr | @@ -136,7 +136,7 @@ static void setup_cursor_position(GdkRectangle *rect, struct v3270_metrics *metr | ||
136 | } | 136 | } |
137 | } | 137 | } |
138 | 138 | ||
139 | -static void setup_timer_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) | 139 | +static void setup_timer_position(GdkRectangle *rect, v3270FontInfo *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) |
140 | { | 140 | { |
141 | char buffer[7]; | 141 | char buffer[7]; |
142 | cairo_text_extents_t extents; | 142 | cairo_text_extents_t extents; |
@@ -151,14 +151,14 @@ static void setup_timer_position(GdkRectangle *rect, struct v3270_metrics *metri | @@ -151,14 +151,14 @@ static void setup_timer_position(GdkRectangle *rect, struct v3270_metrics *metri | ||
151 | rect->x -= rect->width; | 151 | rect->x -= rect->width; |
152 | } | 152 | } |
153 | 153 | ||
154 | -static void setup_spinner_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) | 154 | +static void setup_spinner_position(GdkRectangle *rect, v3270FontInfo *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) |
155 | { | 155 | { |
156 | rect->width = rect->height; | 156 | rect->width = rect->height; |
157 | rect->x -= rect->width; | 157 | rect->x -= rect->width; |
158 | // draw_spinner(cr,rect,color,0); | 158 | // draw_spinner(cr,rect,color,0); |
159 | } | 159 | } |
160 | 160 | ||
161 | -static void setup_luname_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) | 161 | +static void setup_luname_position(GdkRectangle *rect, v3270FontInfo *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) |
162 | { | 162 | { |
163 | const char *luname = lib3270_get_luname(host); | 163 | const char *luname = lib3270_get_luname(host); |
164 | 164 | ||
@@ -190,7 +190,7 @@ static void setup_luname_position(GdkRectangle *rect, struct v3270_metrics *metr | @@ -190,7 +190,7 @@ static void setup_luname_position(GdkRectangle *rect, struct v3270_metrics *metr | ||
190 | 190 | ||
191 | } | 191 | } |
192 | 192 | ||
193 | -static void setup_single_char_right(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) | 193 | +static void setup_single_char_right(GdkRectangle *rect, v3270FontInfo *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) |
194 | { | 194 | { |
195 | rect->x -= rect->width; | 195 | rect->x -= rect->width; |
196 | 196 | ||
@@ -202,7 +202,7 @@ static void setup_single_char_right(GdkRectangle *rect, struct v3270_metrics *me | @@ -202,7 +202,7 @@ static void setup_single_char_right(GdkRectangle *rect, struct v3270_metrics *me | ||
202 | 202 | ||
203 | } | 203 | } |
204 | 204 | ||
205 | -static void setup_insert_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) | 205 | +static void setup_insert_position(GdkRectangle *rect, v3270FontInfo *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) |
206 | { | 206 | { |
207 | if(rect->width > rect->height) | 207 | if(rect->width > rect->height) |
208 | { | 208 | { |
@@ -239,7 +239,7 @@ static void setup_double_char_position(GdkRectangle *rect, struct v3270_metrics | @@ -239,7 +239,7 @@ static void setup_double_char_position(GdkRectangle *rect, struct v3270_metrics | ||
239 | 239 | ||
240 | } | 240 | } |
241 | 241 | ||
242 | -static void draw_undera(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect) | 242 | +static void draw_undera(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, GdkRGBA *color, GdkRectangle *rect) |
243 | { | 243 | { |
244 | #ifdef DEBUG | 244 | #ifdef DEBUG |
245 | cairo_set_source_rgb(cr,0.1,0.1,0.1); | 245 | cairo_set_source_rgb(cr,0.1,0.1,0.1); |
@@ -289,7 +289,7 @@ static void draw_centered_text(cairo_t *cr, struct v3270_metrics *metrics, int x | @@ -289,7 +289,7 @@ static void draw_centered_text(cairo_t *cr, struct v3270_metrics *metrics, int x | ||
289 | } | 289 | } |
290 | */ | 290 | */ |
291 | 291 | ||
292 | -static void draw_centered_char(cairo_t *cr, struct v3270_metrics *metrics, int x, int y, const gchar chr) | 292 | +static void draw_centered_char(cairo_t *cr, v3270FontInfo *metrics, int x, int y, const gchar chr) |
293 | { | 293 | { |
294 | char str[2] = { chr, 0 }; | 294 | char str[2] = { chr, 0 }; |
295 | 295 | ||
@@ -301,7 +301,7 @@ static void draw_centered_char(cairo_t *cr, struct v3270_metrics *metrics, int x | @@ -301,7 +301,7 @@ static void draw_centered_char(cairo_t *cr, struct v3270_metrics *metrics, int x | ||
301 | 301 | ||
302 | } | 302 | } |
303 | 303 | ||
304 | -void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkRGBA *color, const GdkRectangle *rect) | 304 | +void v3270_draw_connection(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, GdkRGBA *color, const GdkRectangle *rect) |
305 | { | 305 | { |
306 | gchar str = ' '; | 306 | gchar str = ' '; |
307 | 307 | ||
@@ -352,7 +352,7 @@ static void draw_xbm(cairo_t *cr, GdkRectangle *rect, int width, int height, uns | @@ -352,7 +352,7 @@ static void draw_xbm(cairo_t *cr, GdkRectangle *rect, int width, int height, uns | ||
352 | cairo_restore(cr); | 352 | cairo_restore(cr); |
353 | } | 353 | } |
354 | 354 | ||
355 | -void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect) | 355 | +void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, GdkRGBA *color, GdkRectangle *rect) |
356 | { | 356 | { |
357 | #ifdef DEBUG | 357 | #ifdef DEBUG |
358 | cairo_set_source_rgb(cr,0.1,0.1,0.1); | 358 | cairo_set_source_rgb(cr,0.1,0.1,0.1); |
@@ -396,7 +396,7 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metri | @@ -396,7 +396,7 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metri | ||
396 | 396 | ||
397 | } | 397 | } |
398 | 398 | ||
399 | -static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect) | 399 | +static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo *metrics, GdkRGBA *color, GdkRectangle *rect) |
400 | { | 400 | { |
401 | #ifdef DEBUG | 401 | #ifdef DEBUG |
402 | #define OIA_MESSAGE(x,c,y) { #x, c, y } | 402 | #define OIA_MESSAGE(x,c,y) { #x, c, y } |
@@ -559,12 +559,12 @@ static void draw_insert(cairo_t *cr, H3270 *host, GdkRGBA *color, GdkRectangle * | @@ -559,12 +559,12 @@ static void draw_insert(cairo_t *cr, H3270 *host, GdkRGBA *color, GdkRectangle * | ||
559 | 559 | ||
560 | } | 560 | } |
561 | 561 | ||
562 | -void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect) | 562 | +void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, v3270FontInfo *metrics, GdkRGBA *color, GdkRectangle *rect) |
563 | { | 563 | { |
564 | static const struct _right_fields | 564 | static const struct _right_fields |
565 | { | 565 | { |
566 | V3270_OIA_FIELD id; | 566 | V3270_OIA_FIELD id; |
567 | - void (*draw)(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color); | 567 | + void (*draw)(GdkRectangle *rect, v3270FontInfo *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color); |
568 | } right[] = | 568 | } right[] = |
569 | { | 569 | { |
570 | { V3270_OIA_CURSOR_POSITION, setup_cursor_position }, | 570 | { V3270_OIA_CURSOR_POSITION, setup_cursor_position }, |
@@ -676,7 +676,7 @@ static cairo_t * set_update_region(v3270 * terminal, GdkRectangle **r, V3270_OIA | @@ -676,7 +676,7 @@ static cairo_t * set_update_region(v3270 * terminal, GdkRectangle **r, V3270_OIA | ||
676 | GdkRectangle * rect = terminal->oia_rect + id; | 676 | GdkRectangle * rect = terminal->oia_rect + id; |
677 | cairo_t * cr = cairo_create(terminal->surface); | 677 | cairo_t * cr = cairo_create(terminal->surface); |
678 | 678 | ||
679 | - cairo_set_scaled_font(cr,terminal->font_scaled); | 679 | + cairo_set_scaled_font(cr,terminal->font.scaled); |
680 | 680 | ||
681 | cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); | 681 | cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); |
682 | cairo_clip(cr); | 682 | cairo_clip(cr); |
@@ -709,7 +709,7 @@ void v3270_update_luname(GtkWidget *widget,const gchar *name) | @@ -709,7 +709,7 @@ void v3270_update_luname(GtkWidget *widget,const gchar *name) | ||
709 | 709 | ||
710 | if(name) | 710 | if(name) |
711 | { | 711 | { |
712 | - cairo_move_to(cr,rect->x,rect->y+terminal->metrics.height); | 712 | + cairo_move_to(cr,rect->x,rect->y+terminal->font.height); |
713 | gdk_cairo_set_source_rgba(cr,terminal->color+V3270_COLOR_OIA_LUNAME); | 713 | gdk_cairo_set_source_rgba(cr,terminal->color+V3270_COLOR_OIA_LUNAME); |
714 | cairo_show_text(cr,name); | 714 | cairo_show_text(cr,name); |
715 | cairo_stroke(cr); | 715 | cairo_stroke(cr); |
@@ -738,7 +738,7 @@ void v3270_update_message(v3270 *widget, LIB3270_MESSAGE id) | @@ -738,7 +738,7 @@ void v3270_update_message(v3270 *widget, LIB3270_MESSAGE id) | ||
738 | 738 | ||
739 | cr = set_update_region(widget,&rect,V3270_OIA_MESSAGE); | 739 | cr = set_update_region(widget,&rect,V3270_OIA_MESSAGE); |
740 | 740 | ||
741 | - draw_status_message(cr,id,&widget->metrics,widget->color,rect); | 741 | + draw_status_message(cr,id,&widget->font,widget->color,rect); |
742 | 742 | ||
743 | cairo_destroy(cr); | 743 | cairo_destroy(cr); |
744 | 744 | ||
@@ -749,7 +749,7 @@ void v3270_update_message(v3270 *widget, LIB3270_MESSAGE id) | @@ -749,7 +749,7 @@ void v3270_update_message(v3270 *widget, LIB3270_MESSAGE id) | ||
749 | 749 | ||
750 | } | 750 | } |
751 | 751 | ||
752 | -static void draw_cursor_position(cairo_t *cr, GdkRectangle *rect, struct v3270_metrics *metrics, int row, int col) | 752 | +static void draw_cursor_position(cairo_t *cr, GdkRectangle *rect, v3270FontInfo *metrics, int row, int col) |
753 | { | 753 | { |
754 | cairo_text_extents_t extents; | 754 | cairo_text_extents_t extents; |
755 | char buffer[10]; | 755 | char buffer[10]; |
@@ -777,10 +777,10 @@ void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, | @@ -777,10 +777,10 @@ void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, | ||
777 | // Update cursor rectangle | 777 | // Update cursor rectangle |
778 | saved = terminal->cursor.rect; | 778 | saved = terminal->cursor.rect; |
779 | 779 | ||
780 | - terminal->cursor.rect.x = terminal->metrics.left + (col * terminal->cursor.rect.width); | ||
781 | - terminal->cursor.rect.y = terminal->metrics.top + (row * terminal->metrics.spacing); | ||
782 | - terminal->cursor.rect.width = terminal->metrics.width; | ||
783 | - terminal->cursor.rect.height = terminal->metrics.height+terminal->metrics.descent; | 780 | + terminal->cursor.rect.x = terminal->font.left + (col * terminal->cursor.rect.width); |
781 | + terminal->cursor.rect.y = terminal->font.top + (row * terminal->font.spacing); | ||
782 | + terminal->cursor.rect.width = terminal->font.width; | ||
783 | + terminal->cursor.rect.height = terminal->font.height+terminal->font.descent; | ||
784 | terminal->cursor.show |= 1; | 784 | terminal->cursor.show |= 1; |
785 | 785 | ||
786 | gtk_widget_queue_draw_area( GTK_WIDGET(terminal), saved.x, | 786 | gtk_widget_queue_draw_area( GTK_WIDGET(terminal), saved.x, |
@@ -800,10 +800,10 @@ void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, | @@ -800,10 +800,10 @@ void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, | ||
800 | GtkAllocation allocation; | 800 | GtkAllocation allocation; |
801 | gtk_widget_get_allocation(GTK_WIDGET(terminal), &allocation); | 801 | gtk_widget_get_allocation(GTK_WIDGET(terminal), &allocation); |
802 | 802 | ||
803 | - gtk_widget_queue_draw_area(GTK_WIDGET(terminal),0,saved.y+terminal->metrics.height,allocation.width,1); | 803 | + gtk_widget_queue_draw_area(GTK_WIDGET(terminal),0,saved.y+terminal->font.height,allocation.width,1); |
804 | gtk_widget_queue_draw_area(GTK_WIDGET(terminal),saved.x,0,1,terminal->oia_rect->y-3); | 804 | gtk_widget_queue_draw_area(GTK_WIDGET(terminal),saved.x,0,1,terminal->oia_rect->y-3); |
805 | 805 | ||
806 | - gtk_widget_queue_draw_area(GTK_WIDGET(terminal),0,terminal->cursor.rect.y+terminal->metrics.height,allocation.width,1); | 806 | + gtk_widget_queue_draw_area(GTK_WIDGET(terminal),0,terminal->cursor.rect.y+terminal->font.height,allocation.width,1); |
807 | gtk_widget_queue_draw_area(GTK_WIDGET(terminal),terminal->cursor.rect.x,0,1,terminal->oia_rect->y-3); | 807 | gtk_widget_queue_draw_area(GTK_WIDGET(terminal),terminal->cursor.rect.x,0,1,terminal->oia_rect->y-3); |
808 | } | 808 | } |
809 | 809 | ||
@@ -815,7 +815,7 @@ void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, | @@ -815,7 +815,7 @@ void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, | ||
815 | 815 | ||
816 | cr = set_update_region(terminal,&rect,V3270_OIA_CURSOR_POSITION); | 816 | cr = set_update_region(terminal,&rect,V3270_OIA_CURSOR_POSITION); |
817 | 817 | ||
818 | - draw_cursor_position(cr,rect,&terminal->metrics,row,col); | 818 | + draw_cursor_position(cr,rect,&terminal->font,row,col); |
819 | 819 | ||
820 | cairo_destroy(cr); | 820 | cairo_destroy(cr); |
821 | 821 | ||
@@ -940,7 +940,7 @@ static void update_text_field(v3270 *terminal, gboolean flag, V3270_OIA_FIELD id | @@ -940,7 +940,7 @@ static void update_text_field(v3270 *terminal, gboolean flag, V3270_OIA_FIELD id | ||
940 | 940 | ||
941 | if(flag) | 941 | if(flag) |
942 | { | 942 | { |
943 | - cairo_move_to(cr,0,terminal->metrics.height); | 943 | + cairo_move_to(cr,0,terminal->font.height); |
944 | cairo_show_text(cr, text); | 944 | cairo_show_text(cr, text); |
945 | cairo_stroke(cr); | 945 | cairo_stroke(cr); |
946 | } | 946 | } |
@@ -1007,8 +1007,8 @@ static gboolean update_timer(struct timer_info *info) | @@ -1007,8 +1007,8 @@ static gboolean update_timer(struct timer_info *info) | ||
1007 | short2string(buffer+3,seconds%60,2); | 1007 | short2string(buffer+3,seconds%60,2); |
1008 | buffer[5] = 0; | 1008 | buffer[5] = 0; |
1009 | 1009 | ||
1010 | - cairo_set_scaled_font(cr,info->terminal->font_scaled); | ||
1011 | - cairo_move_to(cr,rect->x,rect->y+info->terminal->metrics.height); | 1010 | + cairo_set_scaled_font(cr,info->terminal->font.scaled); |
1011 | + cairo_move_to(cr,rect->x,rect->y+info->terminal->font.height); | ||
1012 | cairo_show_text(cr, buffer); | 1012 | cairo_show_text(cr, buffer); |
1013 | cairo_stroke(cr); | 1013 | cairo_stroke(cr); |
1014 | 1014 | ||
@@ -1092,7 +1092,7 @@ void v3270_update_ssl(H3270 *session, LIB3270_SSL_STATE state) | @@ -1092,7 +1092,7 @@ void v3270_update_ssl(H3270 *session, LIB3270_SSL_STATE state) | ||
1092 | return; | 1092 | return; |
1093 | 1093 | ||
1094 | cr = set_update_region(terminal,&r,V3270_OIA_SSL); | 1094 | cr = set_update_region(terminal,&r,V3270_OIA_SSL); |
1095 | - v3270_draw_ssl_status(cr,terminal->host,&terminal->metrics,terminal->color,r); | 1095 | + v3270_draw_ssl_status(cr,terminal->host,&terminal->font,terminal->color,r); |
1096 | gtk_widget_queue_draw_area(GTK_WIDGET(terminal),r->x,r->y,r->width,r->height); | 1096 | gtk_widget_queue_draw_area(GTK_WIDGET(terminal),r->x,r->y,r->width,r->height); |
1097 | cairo_destroy(cr); | 1097 | cairo_destroy(cr); |
1098 | 1098 | ||
@@ -1113,7 +1113,7 @@ void v3270_update_oia(H3270 *session, LIB3270_FLAG id, unsigned char on) | @@ -1113,7 +1113,7 @@ void v3270_update_oia(H3270 *session, LIB3270_FLAG id, unsigned char on) | ||
1113 | case LIB3270_FLAG_BOXSOLID: | 1113 | case LIB3270_FLAG_BOXSOLID: |
1114 | debug("%s",__FUNCTION__); | 1114 | debug("%s",__FUNCTION__); |
1115 | cr = set_update_region(terminal,&r,V3270_OIA_CONNECTION); | 1115 | cr = set_update_region(terminal,&r,V3270_OIA_CONNECTION); |
1116 | - v3270_draw_connection(cr,terminal->host,&terminal->metrics,terminal->color,r); | 1116 | + v3270_draw_connection(cr,terminal->host,&terminal->font,terminal->color,r); |
1117 | gtk_widget_queue_draw_area(GTK_WIDGET(terminal),r->x,r->y,r->width,r->height); | 1117 | gtk_widget_queue_draw_area(GTK_WIDGET(terminal),r->x,r->y,r->width,r->height); |
1118 | cairo_destroy(cr); | 1118 | cairo_destroy(cr); |
1119 | break; | 1119 | break; |
@@ -1121,7 +1121,7 @@ void v3270_update_oia(H3270 *session, LIB3270_FLAG id, unsigned char on) | @@ -1121,7 +1121,7 @@ void v3270_update_oia(H3270 *session, LIB3270_FLAG id, unsigned char on) | ||
1121 | case LIB3270_FLAG_UNDERA: | 1121 | case LIB3270_FLAG_UNDERA: |
1122 | debug("%s",__FUNCTION__); | 1122 | debug("%s",__FUNCTION__); |
1123 | cr = set_update_region(terminal,&r,V3270_OIA_UNDERA); | 1123 | cr = set_update_region(terminal,&r,V3270_OIA_UNDERA); |
1124 | - draw_undera(cr,terminal->host,&terminal->metrics,terminal->color,r); | 1124 | + draw_undera(cr,terminal->host,&terminal->font,terminal->color,r); |
1125 | gtk_widget_queue_draw_area(GTK_WIDGET(terminal),r->x,r->y,r->width,r->height); | 1125 | gtk_widget_queue_draw_area(GTK_WIDGET(terminal),r->x,r->y,r->width,r->height); |
1126 | cairo_destroy(cr); | 1126 | cairo_destroy(cr); |
1127 | break; | 1127 | break; |
src/pw3270/v3270/private.h
@@ -24,8 +24,6 @@ | @@ -24,8 +24,6 @@ | ||
24 | * | 24 | * |
25 | * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | 25 | * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) |
26 | * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | 26 | * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) |
27 | - * licinio@bb.com.br (Licínio Luis Branco) | ||
28 | - * kraucer@bb.com.br (Kraucer Fernandes Mazuco) | ||
29 | * | 27 | * |
30 | */ | 28 | */ |
31 | 29 | ||
@@ -109,19 +107,6 @@ G_BEGIN_DECLS | @@ -109,19 +107,6 @@ G_BEGIN_DECLS | ||
109 | #define V3270_CURSOR_COUNT LIB3270_CURSOR_USER+11 | 107 | #define V3270_CURSOR_COUNT LIB3270_CURSOR_USER+11 |
110 | 108 | ||
111 | 109 | ||
112 | - struct v3270_metrics | ||
113 | - { | ||
114 | - guint width; | ||
115 | - guint height; | ||
116 | - guint ascent; | ||
117 | - guint descent; | ||
118 | - | ||
119 | - guint spacing; | ||
120 | - | ||
121 | - guint left; | ||
122 | - guint top; | ||
123 | - }; | ||
124 | - | ||
125 | struct v3270_ssl_status_msg | 110 | struct v3270_ssl_status_msg |
126 | { | 111 | { |
127 | long id; | 112 | long id; |
@@ -130,6 +115,28 @@ G_BEGIN_DECLS | @@ -130,6 +115,28 @@ G_BEGIN_DECLS | ||
130 | const gchar * message; | 115 | const gchar * message; |
131 | }; | 116 | }; |
132 | 117 | ||
118 | + /** | ||
119 | + * @brief Informações para desenho de fontes com o cairo. | ||
120 | + * | ||
121 | + */ | ||
122 | + struct _v3270FontInfo { | ||
123 | + | ||
124 | + guint width; | ||
125 | + guint height; | ||
126 | + guint ascent; | ||
127 | + guint descent; | ||
128 | + | ||
129 | + guint spacing; | ||
130 | + | ||
131 | + guint left; | ||
132 | + guint top; | ||
133 | + | ||
134 | + gchar * family; | ||
135 | + cairo_font_weight_t weight; | ||
136 | + cairo_scaled_font_t * scaled; | ||
137 | + | ||
138 | + }; | ||
139 | + | ||
133 | /*--[ Widget data ]----------------------------------------------------------------------------------*/ | 140 | /*--[ Widget data ]----------------------------------------------------------------------------------*/ |
134 | 141 | ||
135 | struct _v3270 | 142 | struct _v3270 |
@@ -166,18 +173,14 @@ G_BEGIN_DECLS | @@ -166,18 +173,14 @@ G_BEGIN_DECLS | ||
166 | V3270_OIA_FIELD selected_field; /**< Clicked OIA field */ | 173 | V3270_OIA_FIELD selected_field; /**< Clicked OIA field */ |
167 | 174 | ||
168 | // Font info | 175 | // Font info |
169 | - gchar * font_family; | ||
170 | - cairo_font_weight_t font_weight; | ||
171 | - cairo_scaled_font_t * font_scaled; | ||
172 | cairo_surface_t * surface; | 176 | cairo_surface_t * surface; |
173 | - | ||
174 | - struct v3270_metrics metrics; | 177 | + v3270FontInfo font; |
175 | 178 | ||
176 | gint minimum_width; | 179 | gint minimum_width; |
177 | gint minimum_height; | 180 | gint minimum_height; |
178 | 181 | ||
179 | // Colors | 182 | // Colors |
180 | - GdkRGBA color[V3270_COLOR_COUNT]; /**< Terminal widget colors */ | 183 | + GdkRGBA color[V3270_COLOR_COUNT]; /**< Terminal widget colors */ |
181 | 184 | ||
182 | // Regions | 185 | // Regions |
183 | GdkRectangle oia_rect[V3270_OIA_FIELD_COUNT]; | 186 | GdkRectangle oia_rect[V3270_OIA_FIELD_COUNT]; |
@@ -252,7 +255,7 @@ G_BEGIN_DECLS | @@ -252,7 +255,7 @@ G_BEGIN_DECLS | ||
252 | const GtkWidgetClass * v3270_get_parent_class(void); | 255 | const GtkWidgetClass * v3270_get_parent_class(void); |
253 | 256 | ||
254 | gboolean v3270_draw(GtkWidget * widget, cairo_t * cr); | 257 | gboolean v3270_draw(GtkWidget * widget, cairo_t * cr); |
255 | -void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect); | 258 | +void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, v3270FontInfo *metrics, GdkRGBA *color, GdkRectangle *rect); |
256 | void v3270_update_mouse_pointer(GtkWidget *widget); | 259 | void v3270_update_mouse_pointer(GtkWidget *widget); |
257 | 260 | ||
258 | #if ! GTK_CHECK_VERSION(2,18,0) | 261 | #if ! GTK_CHECK_VERSION(2,18,0) |
@@ -292,8 +295,8 @@ void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3 | @@ -292,8 +295,8 @@ void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3 | ||
292 | void v3270_start_timer(GtkWidget *terminal); | 295 | void v3270_start_timer(GtkWidget *terminal); |
293 | void v3270_stop_timer(GtkWidget *terminal); | 296 | void v3270_stop_timer(GtkWidget *terminal); |
294 | 297 | ||
295 | -void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkRGBA *color, const GdkRectangle *rect); | ||
296 | -void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect); | 298 | +void v3270_draw_connection(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, GdkRGBA *color, const GdkRectangle *rect); |
299 | +void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, GdkRGBA *color, GdkRectangle *rect); | ||
297 | 300 | ||
298 | void v3270_update_char(H3270 *session, int addr, unsigned char chr, unsigned short attr, unsigned char cursor); | 301 | void v3270_update_char(H3270 *session, int addr, unsigned char chr, unsigned short attr, unsigned char cursor); |
299 | 302 |
src/pw3270/v3270/widget.c
@@ -54,8 +54,8 @@ | @@ -54,8 +54,8 @@ | ||
54 | #define WIDTH_IN_PIXELS(terminal,x) (x * cols) | 54 | #define WIDTH_IN_PIXELS(terminal,x) (x * cols) |
55 | #define HEIGHT_IN_PIXELS(terminal,x) (x * (rows+1)) | 55 | #define HEIGHT_IN_PIXELS(terminal,x) (x * (rows+1)) |
56 | 56 | ||
57 | - #define CONTENTS_WIDTH(terminal) (cols * terminal->metrics.width) | ||
58 | - #define CONTENTS_HEIGHT(terminal) (((rows+1) * terminal->metrics.spacing)+OIA_TOP_MARGIN+2) | 57 | + #define CONTENTS_WIDTH(terminal) (cols * terminal->font.width) |
58 | + #define CONTENTS_HEIGHT(terminal) (((rows+1) * terminal->font.spacing)+OIA_TOP_MARGIN+2) | ||
59 | 59 | ||
60 | /** | 60 | /** |
61 | * SECTION: v3270 | 61 | * SECTION: v3270 |
@@ -554,11 +554,11 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, int width, int heig | @@ -554,11 +554,11 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, int width, int heig | ||
554 | 554 | ||
555 | lib3270_get_screen_size(terminal->host,&rows,&cols); | 555 | lib3270_get_screen_size(terminal->host,&rows,&cols); |
556 | 556 | ||
557 | - terminal->font_weight = lib3270_get_toggle(terminal->host,LIB3270_TOGGLE_BOLD) ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL; | 557 | + terminal->font.weight = lib3270_get_toggle(terminal->host,LIB3270_TOGGLE_BOLD) ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL; |
558 | 558 | ||
559 | - cairo_select_font_face(cr, terminal->font_family, CAIRO_FONT_SLANT_NORMAL,terminal->font_weight); | 559 | + cairo_select_font_face(cr,terminal->font.family, CAIRO_FONT_SLANT_NORMAL,terminal->font.weight); |
560 | 560 | ||
561 | - if(terminal->scaled_fonts) | 561 | + if(terminal->font.scaled) |
562 | { | 562 | { |
563 | double w = ((double) width) / ((double)cols); | 563 | double w = ((double) width) / ((double)cols); |
564 | double h = ((double) height) / ((double) (rows+2)); | 564 | double h = ((double) height) / ((double) (rows+2)); |
@@ -612,38 +612,38 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, int width, int heig | @@ -612,38 +612,38 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, int width, int heig | ||
612 | cairo_font_extents(cr,&extents); | 612 | cairo_font_extents(cr,&extents); |
613 | 613 | ||
614 | // Save scaled font for use on next drawings | 614 | // Save scaled font for use on next drawings |
615 | - if(terminal->font_scaled) | ||
616 | - cairo_scaled_font_destroy(terminal->font_scaled); | 615 | + if(terminal->font.scaled) |
616 | + cairo_scaled_font_destroy(terminal->font.scaled); | ||
617 | 617 | ||
618 | - terminal->font_scaled = cairo_get_scaled_font(cr); | ||
619 | - cairo_scaled_font_reference(terminal->font_scaled); | 618 | + terminal->font.scaled = cairo_get_scaled_font(cr); |
619 | + cairo_scaled_font_reference(terminal->font.scaled); | ||
620 | 620 | ||
621 | - cairo_scaled_font_extents(terminal->font_scaled,&extents); | 621 | + cairo_scaled_font_extents(terminal->font.scaled,&extents); |
622 | 622 | ||
623 | - terminal->metrics.width = (int) extents.max_x_advance; | ||
624 | - terminal->metrics.height = (int) extents.height; | ||
625 | - terminal->metrics.ascent = (int) extents.ascent; | ||
626 | - terminal->metrics.descent = (int) extents.descent; | 623 | + terminal->font.width = (int) extents.max_x_advance; |
624 | + terminal->font.height = (int) extents.height; | ||
625 | + terminal->font.ascent = (int) extents.ascent; | ||
626 | + terminal->font.descent = (int) extents.descent; | ||
627 | 627 | ||
628 | - hFont = terminal->metrics.height + terminal->metrics.descent; | 628 | + hFont = terminal->font.height + terminal->font.descent; |
629 | 629 | ||
630 | // Create new cursor surface | 630 | // Create new cursor surface |
631 | if(terminal->cursor.surface) | 631 | if(terminal->cursor.surface) |
632 | cairo_surface_destroy(terminal->cursor.surface); | 632 | cairo_surface_destroy(terminal->cursor.surface); |
633 | 633 | ||
634 | - terminal->cursor.surface = gdk_window_create_similar_surface(gtk_widget_get_window(GTK_WIDGET(terminal)),CAIRO_CONTENT_COLOR,terminal->metrics.width,hFont); | 634 | + terminal->cursor.surface = gdk_window_create_similar_surface(gtk_widget_get_window(GTK_WIDGET(terminal)),CAIRO_CONTENT_COLOR,terminal->font.width,hFont); |
635 | 635 | ||
636 | // Center image | 636 | // Center image |
637 | size = CONTENTS_WIDTH(terminal); | 637 | size = CONTENTS_WIDTH(terminal); |
638 | - terminal->metrics.left = (width >> 1) - ((size) >> 1); | 638 | + terminal->font.left = (width >> 1) - ((size) >> 1); |
639 | 639 | ||
640 | - terminal->metrics.spacing = height / (rows+2); | ||
641 | - if(terminal->metrics.spacing < hFont) | ||
642 | - terminal->metrics.spacing = hFont; | 640 | + terminal->font.spacing = height / (rows+2); |
641 | + if(terminal->font.spacing < hFont) | ||
642 | + terminal->font.spacing = hFont; | ||
643 | 643 | ||
644 | size = CONTENTS_HEIGHT(terminal); | 644 | size = CONTENTS_HEIGHT(terminal); |
645 | 645 | ||
646 | - terminal->metrics.top = (height >> 1) - (size >> 1); | 646 | + terminal->font.top = (height >> 1) - (size >> 1); |
647 | 647 | ||
648 | } | 648 | } |
649 | 649 | ||
@@ -1021,16 +1021,16 @@ static void v3270_destroy(GtkObject *widget) | @@ -1021,16 +1021,16 @@ static void v3270_destroy(GtkObject *widget) | ||
1021 | terminal->host = NULL; | 1021 | terminal->host = NULL; |
1022 | } | 1022 | } |
1023 | 1023 | ||
1024 | - if(terminal->font_family) | 1024 | + if(terminal->font.family) |
1025 | { | 1025 | { |
1026 | - g_free(terminal->font_family); | ||
1027 | - terminal->font_family = 0; | 1026 | + g_free(terminal->font.family); |
1027 | + terminal->font.family = 0; | ||
1028 | } | 1028 | } |
1029 | 1029 | ||
1030 | - if(terminal->font_scaled) | 1030 | + if(terminal->font.scaled) |
1031 | { | 1031 | { |
1032 | - cairo_scaled_font_destroy(terminal->font_scaled); | ||
1033 | - terminal->font_scaled = NULL; | 1032 | + cairo_scaled_font_destroy(terminal->font.scaled); |
1033 | + terminal->font.scaled = NULL; | ||
1034 | } | 1034 | } |
1035 | 1035 | ||
1036 | if(terminal->surface) | 1036 | if(terminal->surface) |
@@ -1455,18 +1455,18 @@ void v3270_set_font_family(GtkWidget *widget, const gchar *name) | @@ -1455,18 +1455,18 @@ void v3270_set_font_family(GtkWidget *widget, const gchar *name) | ||
1455 | name = "courier new"; | 1455 | name = "courier new"; |
1456 | } | 1456 | } |
1457 | 1457 | ||
1458 | - if(terminal->font_family) | 1458 | + if(terminal->font.family) |
1459 | { | 1459 | { |
1460 | - if(!g_ascii_strcasecmp(terminal->font_family,name)) | 1460 | + if(!g_ascii_strcasecmp(terminal->font.family,name)) |
1461 | return; | 1461 | return; |
1462 | - g_free(terminal->font_family); | ||
1463 | - terminal->font_family = NULL; | 1462 | + g_free(terminal->font.family); |
1463 | + terminal->font.family = NULL; | ||
1464 | } | 1464 | } |
1465 | 1465 | ||
1466 | - terminal->font_family = g_strdup(name); | ||
1467 | - terminal->font_weight = lib3270_get_toggle(terminal->host,LIB3270_TOGGLE_BOLD) ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL; | 1466 | + terminal->font.family = g_strdup(name); |
1467 | + terminal->font.weight = lib3270_get_toggle(terminal->host,LIB3270_TOGGLE_BOLD) ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL; | ||
1468 | 1468 | ||
1469 | - trace("%s: %s (%p)",__FUNCTION__,terminal->font_family,terminal->font_family); | 1469 | + trace("%s: %s (%p)",__FUNCTION__,terminal->font.family,terminal->font.family); |
1470 | 1470 | ||
1471 | g_signal_emit(widget,v3270_widget_signal[SIGNAL_UPDATE_CONFIG], 0, "font-family", name); | 1471 | g_signal_emit(widget,v3270_widget_signal[SIGNAL_UPDATE_CONFIG], 0, "font-family", name); |
1472 | 1472 | ||
@@ -1479,7 +1479,7 @@ void v3270_set_font_family(GtkWidget *widget, const gchar *name) | @@ -1479,7 +1479,7 @@ void v3270_set_font_family(GtkWidget *widget, const gchar *name) | ||
1479 | const gchar * v3270_get_font_family(GtkWidget *widget) | 1479 | const gchar * v3270_get_font_family(GtkWidget *widget) |
1480 | { | 1480 | { |
1481 | g_return_val_if_fail(GTK_IS_V3270(widget),NULL); | 1481 | g_return_val_if_fail(GTK_IS_V3270(widget),NULL); |
1482 | - return GTK_V3270(widget)->font_family; | 1482 | + return GTK_V3270(widget)->font.family; |
1483 | } | 1483 | } |
1484 | 1484 | ||
1485 | void v3270_disconnect(GtkWidget *widget) | 1485 | void v3270_disconnect(GtkWidget *widget) |