Commit 3414cdc23c5d734690abb864232860cf6c05dc53
1 parent
a6878485
Exists in
master
and in
5 other branches
Incluindo ícone extra no indicador de SSL quando a conexão não está assinada
Showing
2 changed files
with
42 additions
and
31 deletions
Show diff stats
src/pw3270/v3270/oia.c
@@ -53,6 +53,7 @@ static void draw_cursor_position(cairo_t *cr, GdkRectangle *rect, struct v3270_m | @@ -53,6 +53,7 @@ static void draw_cursor_position(cairo_t *cr, GdkRectangle *rect, struct v3270_m | ||
53 | #include "locked.xbm" | 53 | #include "locked.xbm" |
54 | #include "unlocked.xbm" | 54 | #include "unlocked.xbm" |
55 | #include "negotiated.xbm" | 55 | #include "negotiated.xbm" |
56 | + #include "warning.xbm" | ||
56 | 57 | ||
57 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 58 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
58 | 59 | ||
@@ -306,15 +307,29 @@ void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metri | @@ -306,15 +307,29 @@ void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metri | ||
306 | 307 | ||
307 | } | 308 | } |
308 | 309 | ||
309 | -void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect) | 310 | +static void draw_xbm(cairo_t *cr, GdkRectangle *rect, int width, int height, unsigned char *bits) |
310 | { | 311 | { |
311 | - cairo_surface_t * icon; | ||
312 | - double sz = rect->width < rect->height ? rect->width : rect->height; | ||
313 | -// int idx = 0; // lib3270_get_ssl_state(host) ? 1 : 0; | ||
314 | - unsigned short width; | ||
315 | - unsigned short height; | ||
316 | - unsigned char * bits; | 312 | + double sz = rect->width < rect->height ? rect->width : rect->height; |
313 | + cairo_surface_t * icon = cairo_image_surface_create_for_data( | ||
314 | + bits, | ||
315 | + CAIRO_FORMAT_A1, | ||
316 | + width,height, | ||
317 | + cairo_format_stride_for_width(CAIRO_FORMAT_A1,width)); | ||
318 | + | ||
319 | + cairo_save(cr); | ||
320 | + | ||
321 | + cairo_scale(cr, sz / ((double) width), | ||
322 | + sz / ((double) height)); | ||
323 | + | ||
324 | + cairo_mask_surface(cr,icon,(rect->width-sz)/2,(rect->height-sz)/2); | ||
325 | + | ||
326 | + cairo_surface_destroy(icon); | ||
327 | + | ||
328 | + cairo_restore(cr); | ||
329 | +} | ||
317 | 330 | ||
331 | +void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect) | ||
332 | +{ | ||
318 | #ifdef DEBUG | 333 | #ifdef DEBUG |
319 | cairo_set_source_rgb(cr,0.1,0.1,0.1); | 334 | cairo_set_source_rgb(cr,0.1,0.1,0.1); |
320 | #else | 335 | #else |
@@ -322,7 +337,6 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metri | @@ -322,7 +337,6 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metri | ||
322 | #endif | 337 | #endif |
323 | 338 | ||
324 | cairo_translate(cr, rect->x, rect->y); | 339 | cairo_translate(cr, rect->x, rect->y); |
325 | - | ||
326 | cairo_rectangle(cr, 0, 0, rect->width, rect->height); | 340 | cairo_rectangle(cr, 0, 0, rect->width, rect->height); |
327 | cairo_fill(cr); | 341 | cairo_fill(cr); |
328 | 342 | ||
@@ -330,30 +344,24 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metri | @@ -330,30 +344,24 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metri | ||
330 | { | 344 | { |
331 | case LIB3270_SSL_UNSECURE: /**< No secure connection */ | 345 | case LIB3270_SSL_UNSECURE: /**< No secure connection */ |
332 | gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND); | 346 | gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND); |
333 | - width = unlocked_width; | ||
334 | - height = unlocked_height; | ||
335 | - bits = (unsigned char *) unlocked_bits; | 347 | + draw_xbm(cr,rect,unlocked_width,unlocked_height,unlocked_bits); |
336 | break; | 348 | break; |
337 | 349 | ||
338 | case LIB3270_SSL_NEGOTIATING: /**< Negotiating SSL */ | 350 | case LIB3270_SSL_NEGOTIATING: /**< Negotiating SSL */ |
339 | gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_WARNING); | 351 | gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_WARNING); |
340 | - width = unlocked_width; | ||
341 | - height = unlocked_height; | ||
342 | - bits = (unsigned char *) unlocked_bits; | 352 | + draw_xbm(cr,rect,unlocked_width,unlocked_height,unlocked_bits); |
343 | break; | 353 | break; |
344 | 354 | ||
345 | case LIB3270_SSL_NEGOTIATED: /**< Connection secure, no CA or self-signed */ | 355 | case LIB3270_SSL_NEGOTIATED: /**< Connection secure, no CA or self-signed */ |
356 | + gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_OK); | ||
357 | + draw_xbm(cr,rect,negotiated_width,negotiated_height,negotiated_bits); | ||
346 | gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_WARNING); | 358 | gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_WARNING); |
347 | - width = negotiated_width; | ||
348 | - height = negotiated_height; | ||
349 | - bits = (unsigned char *) negotiated_bits; | 359 | + draw_xbm(cr,rect,warning_width,warning_height,warning_bits); |
350 | break; | 360 | break; |
351 | 361 | ||
352 | case LIB3270_SSL_SECURE: /**< Connection secure with CA check */ | 362 | case LIB3270_SSL_SECURE: /**< Connection secure with CA check */ |
353 | gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_OK); | 363 | gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_OK); |
354 | - width = locked_width; | ||
355 | - height = locked_height; | ||
356 | - bits = (unsigned char *) locked_bits; | 364 | + draw_xbm(cr,rect,locked_width,locked_height,locked_bits); |
357 | break; | 365 | break; |
358 | 366 | ||
359 | default: | 367 | default: |
@@ -361,17 +369,6 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metri | @@ -361,17 +369,6 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metri | ||
361 | 369 | ||
362 | } | 370 | } |
363 | 371 | ||
364 | - icon = cairo_image_surface_create_for_data( bits, | ||
365 | - CAIRO_FORMAT_A1, | ||
366 | - width,height, | ||
367 | - cairo_format_stride_for_width(CAIRO_FORMAT_A1,locked_width)); | ||
368 | - | ||
369 | - cairo_scale(cr, sz / ((double) width), | ||
370 | - sz / ((double) height)); | ||
371 | - | ||
372 | - cairo_mask_surface(cr,icon,(rect->width-sz)/2,(rect->height-sz)/2); | ||
373 | - | ||
374 | - cairo_surface_destroy(icon); | ||
375 | 372 | ||
376 | } | 373 | } |
377 | 374 |
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +#define warning_width 32 | ||
2 | +#define warning_height 32 | ||
3 | +static unsigned char warning_bits[] = { | ||
4 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
5 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
6 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
7 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, | ||
8 | + 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xf0, 0x01, | ||
9 | + 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x07, | ||
10 | + 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfe, 0x0f, | ||
11 | + 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x3f, | ||
12 | + 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
13 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
14 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; |