Commit a75072d6d157a92b290c55d8d25d80df76ab3a2f

Authored by perry.werneck@gmail.com
1 parent 462bca78

Iniciando remoção da cairo-toy

src/include/pw3270/v3270.h
@@ -225,7 +225,7 @@ @@ -225,7 +225,7 @@
225 LIB3270_EXPORT void v3270_set_color_table(GdkRGBA *table, const gchar *colors); 225 LIB3270_EXPORT void v3270_set_color_table(GdkRGBA *table, const gchar *colors);
226 LIB3270_EXPORT const GdkRGBA * v3270_get_color_table(GtkWidget *widget); 226 LIB3270_EXPORT const GdkRGBA * v3270_get_color_table(GtkWidget *widget);
227 LIB3270_EXPORT void v3270_set_mono_color_table(GdkRGBA *table, const gchar *fg, const gchar *bg); 227 LIB3270_EXPORT void v3270_set_mono_color_table(GdkRGBA *table, const gchar *fg, const gchar *bg);
228 - LIB3270_EXPORT void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkRGBA *color); 228 + LIB3270_EXPORT void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, v3270FontInfo *font, GdkRectangle *rect, GdkRGBA *color);
229 LIB3270_EXPORT void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, GdkRGBA *color); 229 LIB3270_EXPORT void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, GdkRGBA *color);
230 LIB3270_EXPORT GdkRGBA * v3270_get_color(GtkWidget *widget, enum V3270_COLOR id); 230 LIB3270_EXPORT GdkRGBA * v3270_get_color(GtkWidget *widget, enum V3270_COLOR id);
231 231
src/pw3270/print.c
@@ -189,7 +189,7 @@ @@ -189,7 +189,7 @@
189 { 189 {
190 if(!info->show_selection) 190 if(!info->show_selection)
191 attr &= ~LIB3270_ATTR_SELECTED; 191 attr &= ~LIB3270_ATTR_SELECTED;
192 - v3270_draw_element(cr,c,attr,info->session,info->font.height,&rect,info->color); 192 + v3270_draw_element(cr,c,attr,info->session,&info->font,&rect,info->color);
193 } 193 }
194 194
195 rect.x += (rect.width-1); 195 rect.x += (rect.width-1);
src/pw3270/v3270/draw.c
@@ -112,13 +112,13 @@ static void get_element_colors(unsigned short attr, GdkRGBA **fg, GdkRGBA **bg, @@ -112,13 +112,13 @@ static void get_element_colors(unsigned short attr, GdkRGBA **fg, GdkRGBA **bg,
112 } 112 }
113 } 113 }
114 114
115 -void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkRGBA *color) 115 +void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, v3270FontInfo *fontInfo, GdkRectangle *rect, GdkRGBA *color)
116 { 116 {
117 GdkRGBA *fg; 117 GdkRGBA *fg;
118 GdkRGBA *bg; 118 GdkRGBA *bg;
119 119
120 get_element_colors(attr,&fg,&bg,color); 120 get_element_colors(attr,&fg,&bg,color);
121 - v3270_draw_char(cr,chr,attr,session,height,rect,fg,bg); 121 + v3270_draw_char(cr,chr,attr,session,fontInfo,rect,fg,bg);
122 122
123 if(attr & LIB3270_ATTR_UNDERLINE) 123 if(attr & LIB3270_ATTR_UNDERLINE)
124 { 124 {
@@ -142,7 +142,7 @@ void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H32 @@ -142,7 +142,7 @@ void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H32
142 142
143 } 143 }
144 144
145 -void v3270_draw_text(cairo_t *cr, const GdkRectangle *rect, guint height, const char *str) { 145 +void v3270_draw_text(cairo_t *cr, const GdkRectangle *rect, v3270FontInfo *font, const char *str) {
146 146
147 cairo_status_t status; 147 cairo_status_t status;
148 cairo_glyph_t * glyphs = NULL; 148 cairo_glyph_t * glyphs = NULL;
@@ -154,13 +154,13 @@ void v3270_draw_text(cairo_t *cr, const GdkRectangle *rect, guint height, const @@ -154,13 +154,13 @@ void v3270_draw_text(cairo_t *cr, const GdkRectangle *rect, guint height, const
154 154
155 status = cairo_scaled_font_text_to_glyphs( 155 status = cairo_scaled_font_text_to_glyphs(
156 scaled_font, 156 scaled_font,
157 - (double) rect->x, (double) (rect->y+height), 157 + (double) rect->x, (double) (rect->y+font->height),
158 str, strlen(str), 158 str, strlen(str),
159 &glyphs, &num_glyphs, 159 &glyphs, &num_glyphs,
160 &clusters, &num_clusters, &cluster_flags ); 160 &clusters, &num_clusters, &cluster_flags );
161 161
162 if (status == CAIRO_STATUS_SUCCESS) { 162 if (status == CAIRO_STATUS_SUCCESS) {
163 - cairo_show_text_glyphs (cr,str,strlen(str),glyphs, num_glyphs,clusters, num_clusters, cluster_flags); 163 + cairo_show_text_glyphs(cr,str,strlen(str),glyphs, num_glyphs,clusters, num_clusters, cluster_flags);
164 } 164 }
165 165
166 if(glyphs) 166 if(glyphs)
@@ -169,14 +169,9 @@ void v3270_draw_text(cairo_t *cr, const GdkRectangle *rect, guint height, const @@ -169,14 +169,9 @@ void v3270_draw_text(cairo_t *cr, const GdkRectangle *rect, guint height, const
169 if(clusters) 169 if(clusters)
170 cairo_text_cluster_free(clusters); 170 cairo_text_cluster_free(clusters);
171 171
172 -/*  
173 - cairo_move_to(cr,rect->x,rect->y+height);  
174 - cairo_show_text(cr, str);  
175 -*/  
176 -  
177 } 172 }
178 173
179 -void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkRGBA *fg, GdkRGBA *bg) 174 +void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, v3270FontInfo *font, GdkRectangle *rect, GdkRGBA *fg, GdkRGBA *bg)
180 { 175 {
181 // Clear element area 176 // Clear element area
182 gdk_cairo_set_source_rgba(cr,bg); 177 gdk_cairo_set_source_rgba(cr,bg);
@@ -277,23 +272,23 @@ void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 @@ -277,23 +272,23 @@ void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270
277 break; 272 break;
278 273
279 case 0x8c: // CG 0xf7, less or equal "≤" 274 case 0x8c: // CG 0xf7, less or equal "≤"
280 - v3270_draw_text(cr,rect,height,"≤"); 275 + v3270_draw_text(cr,rect,font,"≤");
281 break; 276 break;
282 277
283 case 0xae: // CG 0xd9, greater or equal "≥" 278 case 0xae: // CG 0xd9, greater or equal "≥"
284 - v3270_draw_text(cr,rect,height,"≥"); 279 + v3270_draw_text(cr,rect,font,"≥");
285 break; 280 break;
286 281
287 case 0xbe: // CG 0x3e, not equal "≠" 282 case 0xbe: // CG 0x3e, not equal "≠"
288 - v3270_draw_text(cr,rect,height,"≠"); 283 + v3270_draw_text(cr,rect,font,"≠");
289 break; 284 break;
290 285
291 case 0xad: // "[" 286 case 0xad: // "["
292 - v3270_draw_text(cr,rect,height,"["); 287 + v3270_draw_text(cr,rect,font,"[");
293 break; 288 break;
294 289
295 case 0xbd: // "]" 290 case 0xbd: // "]"
296 - v3270_draw_text(cr,rect,height,"]"); 291 + v3270_draw_text(cr,rect,font,"]");
297 break; 292 break;
298 293
299 default: 294 default:
@@ -306,7 +301,7 @@ void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 @@ -306,7 +301,7 @@ void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270
306 301
307 if(utf) 302 if(utf)
308 { 303 {
309 - v3270_draw_text(cr,rect,height,utf); 304 + v3270_draw_text(cr,rect,font,utf);
310 g_free(utf); 305 g_free(utf);
311 } 306 }
312 } 307 }
@@ -386,7 +381,7 @@ void v3270_reload(GtkWidget *widget) @@ -386,7 +381,7 @@ void v3270_reload(GtkWidget *widget)
386 if(addr == cursor) 381 if(addr == cursor)
387 v3270_update_cursor_rect(terminal,&rect,chr,attr); 382 v3270_update_cursor_rect(terminal,&rect,chr,attr);
388 383
389 - v3270_draw_element(cr,chr,attr,terminal->host,terminal->font.height,&rect,terminal->color); 384 + v3270_draw_element(cr,chr,attr,terminal->host,&terminal->font,&rect,terminal->color);
390 385
391 addr++; 386 addr++;
392 rect.x += rect.width; 387 rect.x += rect.width;
@@ -432,7 +427,7 @@ void v3270_update_char(H3270 *session, int addr, unsigned char chr, unsigned sho @@ -432,7 +427,7 @@ void v3270_update_char(H3270 *session, int addr, unsigned char chr, unsigned sho
432 427
433 cr = cairo_create(terminal->surface); 428 cr = cairo_create(terminal->surface);
434 cairo_set_scaled_font(cr,terminal->font.scaled); 429 cairo_set_scaled_font(cr,terminal->font.scaled);
435 - v3270_draw_element(cr, chr, attr, terminal->host, terminal->font.height, &rect,terminal->color); 430 + v3270_draw_element(cr, chr, attr, terminal->host, &terminal->font, &rect,terminal->color);
436 cairo_destroy(cr); 431 cairo_destroy(cr);
437 if(cursor) 432 if(cursor)
438 v3270_update_cursor_rect(terminal,&rect,chr,attr); 433 v3270_update_cursor_rect(terminal,&rect,chr,attr);
@@ -458,7 +453,7 @@ void v3270_update_cursor_surface(v3270 *widget,unsigned char chr,unsigned short @@ -458,7 +453,7 @@ void v3270_update_cursor_surface(v3270 *widget,unsigned char chr,unsigned short
458 453
459 rect.x = 0; 454 rect.x = 0;
460 rect.y = 0; 455 rect.y = 0;
461 - v3270_draw_char(cr,chr,attr,widget->host,widget->font.height,&rect,bg,fg); 456 + v3270_draw_char(cr,chr,attr,widget->host,&widget->font,&rect,bg,fg);
462 457
463 cairo_destroy(cr); 458 cairo_destroy(cr);
464 } 459 }
src/pw3270/v3270/oia.c
@@ -158,7 +158,7 @@ static void setup_spinner_position(GdkRectangle *rect, v3270FontInfo *metrics, c @@ -158,7 +158,7 @@ static void setup_spinner_position(GdkRectangle *rect, v3270FontInfo *metrics, c
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, v3270FontInfo *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) 161 +static void setup_luname_position(GdkRectangle *rect, v3270FontInfo *font, 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
@@ -180,10 +180,13 @@ static void setup_luname_position(GdkRectangle *rect, v3270FontInfo *metrics, ca @@ -180,10 +180,13 @@ static void setup_luname_position(GdkRectangle *rect, v3270FontInfo *metrics, ca
180 180
181 if(luname) 181 if(luname)
182 { 182 {
183 - cairo_move_to(cr,rect->x,rect->y+metrics->height); 183 +// cairo_move_to(cr,rect->x,rect->y+font->height);
  184 +
184 gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_LUNAME); 185 gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_LUNAME);
185 - cairo_show_text(cr,luname);  
186 - cairo_stroke(cr); 186 + v3270_draw_text(cr,rect,font,luname);
  187 +
  188 +// cairo_show_text(cr,luname);
  189 +// cairo_stroke(cr);
187 } 190 }
188 191
189 cairo_restore(cr); 192 cairo_restore(cr);
@@ -279,16 +282,6 @@ static void draw_undera(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, GdkRGB @@ -279,16 +282,6 @@ static void draw_undera(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, GdkRGB
279 282
280 } 283 }
281 284
282 -/*  
283 -static void draw_centered_text(cairo_t *cr, struct v3270_metrics *metrics, int x, int y, const gchar *str)  
284 -{  
285 - cairo_text_extents_t extents;  
286 - cairo_text_extents(cr,str,&extents);  
287 - cairo_move_to(cr,x+(((metrics->width+2)/2)-(extents.width/2)),y+extents.height+( (metrics->spacing/2) - (extents.height/2)));  
288 - cairo_show_text(cr,str);  
289 -}  
290 -*/  
291 -  
292 static void draw_centered_char(cairo_t *cr, v3270FontInfo *metrics, int x, int y, const gchar chr) 285 static void draw_centered_char(cairo_t *cr, v3270FontInfo *metrics, int x, int y, const gchar chr)
293 { 286 {
294 char str[2] = { chr, 0 }; 287 char str[2] = { chr, 0 };
@@ -396,7 +389,7 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, Gdk @@ -396,7 +389,7 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, Gdk
396 389
397 } 390 }
398 391
399 -static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo *metrics, GdkRGBA *color, GdkRectangle *rect) 392 +static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo *font, GdkRGBA *color, const GdkRectangle *r)
400 { 393 {
401 #ifdef DEBUG 394 #ifdef DEBUG
402 #define OIA_MESSAGE(x,c,y) { #x, c, y } 395 #define OIA_MESSAGE(x,c,y) { #x, c, y }
@@ -477,7 +470,10 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo * @@ -477,7 +470,10 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo *
477 470
478 }; 471 };
479 472
480 - const gchar *msg = message[0].msg; 473 + GdkRectangle rect;
  474 + const gchar * msg = message[0].msg;
  475 +
  476 + memcpy(&rect,r,sizeof(GdkRectangle));
481 477
482 // trace("%s: id=%d",__FUNCTION__,id); 478 // trace("%s: id=%d",__FUNCTION__,id);
483 479
@@ -492,7 +488,7 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo * @@ -492,7 +488,7 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo *
492 488
493 // Limpa o bloco 489 // Limpa o bloco
494 gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_BACKGROUND); 490 gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_BACKGROUND);
495 - cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); 491 + cairo_rectangle(cr, rect.x, rect.y, rect.width, rect.height);
496 cairo_fill(cr); 492 cairo_fill(cr);
497 493
498 if(msg && *msg) 494 if(msg && *msg)
@@ -502,7 +498,7 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo * @@ -502,7 +498,7 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo *
502 498
503 if(msg && *msg) 499 if(msg && *msg)
504 { 500 {
505 - int x = rect->x+1; 501 + rect.x++;
506 502
507 debug("%s(%s)",__FUNCTION__,msg); 503 debug("%s(%s)",__FUNCTION__,msg);
508 504
@@ -512,13 +508,13 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo * @@ -512,13 +508,13 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo *
512 { 508 {
513 cairo_save(cr); 509 cairo_save(cr);
514 510
515 - cairo_move_to(cr,x+1,rect->y+(metrics->height)-(metrics->ascent));  
516 - cairo_rel_line_to(cr,metrics->width,metrics->ascent);  
517 - cairo_rel_move_to(cr,-metrics->width,0);  
518 - cairo_rel_line_to(cr,metrics->width,-metrics->ascent); 511 + cairo_move_to(cr,rect.x+1,rect.y+(font->height)-(font->ascent));
  512 + cairo_rel_line_to(cr,font->width,font->ascent);
  513 + cairo_rel_move_to(cr,-font->width,0);
  514 + cairo_rel_line_to(cr,font->width,-font->ascent);
519 515
520 cairo_stroke(cr); 516 cairo_stroke(cr);
521 - x += metrics->width; 517 + rect.x += font->width;
522 msg++; 518 msg++;
523 519
524 cairo_restore(cr); 520 cairo_restore(cr);
@@ -527,13 +523,14 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo * @@ -527,13 +523,14 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo *
527 while(isspace(*msg)) 523 while(isspace(*msg))
528 { 524 {
529 msg++; 525 msg++;
530 - x += metrics->width; 526 + rect.x += font->width;
531 } 527 }
532 528
533 if(*msg) 529 if(*msg)
534 { 530 {
535 - cairo_move_to(cr,x,rect->y+metrics->height);  
536 - cairo_show_text(cr,msg); 531 + v3270_draw_text(cr,&rect, font, msg);
  532 +// cairo_move_to(cr,x,rect->y+metrics->height);
  533 +// cairo_show_text(cr,msg);
537 } 534 }
538 535
539 } 536 }
src/pw3270/v3270/private.h
@@ -268,7 +268,8 @@ void v3270_update_cursor_surface(v3270 *widget,unsigned char chr,unsigned sho @@ -268,7 +268,8 @@ void v3270_update_cursor_surface(v3270 *widget,unsigned char chr,unsigned sho
268 268
269 void v3270_register_io_handlers(v3270Class *cls); 269 void v3270_register_io_handlers(v3270Class *cls);
270 270
271 -void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkRGBA *fg, GdkRGBA *bg); 271 +void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, v3270FontInfo *font, GdkRectangle *rect, GdkRGBA *fg, GdkRGBA *bg);
  272 +void v3270_draw_text(cairo_t *cr, const GdkRectangle *rect, v3270FontInfo *font, const char *str);
272 273
273 void v3270_start_timer(GtkWidget *terminal); 274 void v3270_start_timer(GtkWidget *terminal);
274 void v3270_stop_timer(GtkWidget *terminal); 275 void v3270_stop_timer(GtkWidget *terminal);