forked from osmocom/wireshark
- Use cairo_surface_t
- rename variables refering to the surface. svn path=/trunk/; revision=38497
This commit is contained in:
parent
bfc2da178b
commit
91861a302e
|
@ -150,7 +150,7 @@ typedef struct _dialog_graph_t {
|
|||
GtkWidget *window;
|
||||
GtkWidget *draw_area;
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cairo_surface_t *surface;
|
||||
cairo_surface_t *surface;
|
||||
#else
|
||||
GdkPixmap *pixmap;
|
||||
#endif
|
||||
|
|
|
@ -160,11 +160,15 @@ typedef struct _dialog_graph_t {
|
|||
struct _dialog_graph_graph_t graph[MAX_GRAPHS];
|
||||
GtkWidget *window;
|
||||
GtkWidget *draw_area;
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cairo_surface_t *surface;
|
||||
#else
|
||||
GdkPixmap *pixmap;
|
||||
#endif
|
||||
GtkAdjustment *scrollbar_adjustment;
|
||||
GtkWidget *scrollbar;
|
||||
int pixmap_width;
|
||||
int pixmap_height;
|
||||
int surface_width;
|
||||
int surface_height;
|
||||
int pixels_per_tick_index; /* index into pixels_per_tick array */
|
||||
int pixels_per_tick;
|
||||
int max_y_units_index; /* index into yscale_max array */
|
||||
|
@ -989,7 +993,11 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
/*
|
||||
* Clear out old plot
|
||||
*/
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_set_source_rgb (cr, 1, 1, 1);
|
||||
gtk_widget_get_allocation(user_data->dlg.dialog_graph.draw_area, &widget_alloc);
|
||||
cairo_rectangle (cr,
|
||||
|
@ -1040,18 +1048,22 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
/*
|
||||
* Calculate the size of the drawing area for the actual plot
|
||||
*/
|
||||
draw_width=user_data->dlg.dialog_graph.pixmap_width-right_x_border-left_x_border;
|
||||
draw_height=user_data->dlg.dialog_graph.pixmap_height-top_y_border-bottom_y_border;
|
||||
draw_width=user_data->dlg.dialog_graph.surface_width-right_x_border-left_x_border;
|
||||
draw_height=user_data->dlg.dialog_graph.surface_height-top_y_border-bottom_y_border;
|
||||
|
||||
|
||||
/*
|
||||
* Draw the y axis and labels
|
||||
* (we always draw the y scale with 11 ticks along the axis)
|
||||
*/
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_set_line_width (cr, 1.0);
|
||||
cairo_move_to(cr, user_data->dlg.dialog_graph.pixmap_width-right_x_border+1.5, top_y_border+0.5);
|
||||
cairo_line_to(cr, user_data->dlg.dialog_graph.pixmap_width-right_x_border+1.5, user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+0.5);
|
||||
cairo_move_to(cr, user_data->dlg.dialog_graph.surface_width-right_x_border+1.5, top_y_border+0.5);
|
||||
cairo_line_to(cr, user_data->dlg.dialog_graph.surface_width-right_x_border+1.5, user_data->dlg.dialog_graph.surface_height-bottom_y_border+0.5);
|
||||
cairo_stroke(cr);
|
||||
cairo_destroy(cr);
|
||||
|
||||
|
@ -1064,15 +1076,19 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
xwidth=10;
|
||||
}
|
||||
/* draw the tick */
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_set_line_width (cr, 1.0);
|
||||
cairo_move_to(cr,
|
||||
user_data->dlg.dialog_graph.pixmap_width-right_x_border+1.5,
|
||||
user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10+0.5);
|
||||
user_data->dlg.dialog_graph.surface_width-right_x_border+1.5,
|
||||
user_data->dlg.dialog_graph.surface_height-bottom_y_border-draw_height*i/10+0.5);
|
||||
|
||||
cairo_line_to(cr,
|
||||
user_data->dlg.dialog_graph.pixmap_width-right_x_border+1.5+xwidth,
|
||||
user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10+0.5);
|
||||
user_data->dlg.dialog_graph.surface_width-right_x_border+1.5+xwidth,
|
||||
user_data->dlg.dialog_graph.surface_height-bottom_y_border-draw_height*i/10+0.5);
|
||||
cairo_stroke(cr);
|
||||
cairo_destroy(cr);
|
||||
/* draw the labels */
|
||||
|
@ -1080,10 +1096,14 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
print_time_scale_string(label_string, sizeof(label_string), (max_y*i/10));
|
||||
pango_layout_set_text(layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(layout, &lwidth, NULL);
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_move_to (cr,
|
||||
user_data->dlg.dialog_graph.pixmap_width-right_x_border+15+label_width-lwidth,
|
||||
user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10-label_height/2);
|
||||
user_data->dlg.dialog_graph.surface_width-right_x_border+15+label_width-lwidth,
|
||||
user_data->dlg.dialog_graph.surface_height-bottom_y_border-draw_height*i/10-label_height/2);
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
cairo_destroy (cr);
|
||||
cr = NULL;
|
||||
|
@ -1092,10 +1112,14 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
print_time_scale_string(label_string, sizeof(label_string), (max_y*i/10));
|
||||
pango_layout_set_text(layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(layout, &lwidth, NULL);
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_move_to (cr,
|
||||
user_data->dlg.dialog_graph.pixmap_width-right_x_border+15+label_width-lwidth,
|
||||
user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10-label_height/2);
|
||||
user_data->dlg.dialog_graph.surface_width-right_x_border+15+label_width-lwidth,
|
||||
user_data->dlg.dialog_graph.surface_height-bottom_y_border-draw_height*i/10-label_height/2);
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
cairo_destroy (cr);
|
||||
cr = NULL;
|
||||
|
@ -1104,10 +1128,14 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
print_time_scale_string(label_string, sizeof(label_string), (max_y*i/10));
|
||||
pango_layout_set_text(layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(layout, &lwidth, NULL);
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_move_to (cr,
|
||||
user_data->dlg.dialog_graph.pixmap_width-right_x_border+15+label_width-lwidth,
|
||||
user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10-label_height/2);
|
||||
user_data->dlg.dialog_graph.surface_width-right_x_border+15+label_width-lwidth,
|
||||
user_data->dlg.dialog_graph.surface_height-bottom_y_border-draw_height*i/10-label_height/2);
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
cairo_destroy (cr);
|
||||
cr = NULL;
|
||||
|
@ -1132,10 +1160,14 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
|
||||
/*XXX*/
|
||||
/* plot the x-scale */
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_set_line_width (cr, 1.0);
|
||||
cairo_move_to(cr, left_x_border+0.5, user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+1.5);
|
||||
cairo_line_to(cr, user_data->dlg.dialog_graph.pixmap_width-right_x_border+1.5,user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+1.5);
|
||||
cairo_move_to(cr, left_x_border+0.5, user_data->dlg.dialog_graph.surface_height-bottom_y_border+1.5);
|
||||
cairo_line_to(cr, user_data->dlg.dialog_graph.surface_width-right_x_border+1.5,user_data->dlg.dialog_graph.surface_height-bottom_y_border+1.5);
|
||||
cairo_stroke(cr);
|
||||
cairo_destroy(cr);
|
||||
|
||||
|
@ -1172,10 +1204,14 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
}
|
||||
|
||||
x=draw_width+left_x_border-((last_interval-current_interval)/user_data->dlg.dialog_graph.interval)*user_data->dlg.dialog_graph.pixels_per_tick;
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_set_line_width (cr, 1.0);
|
||||
cairo_move_to(cr, x-1-user_data->dlg.dialog_graph.pixels_per_tick/2+0.5, user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+1.5);
|
||||
cairo_line_to(cr, x-1-user_data->dlg.dialog_graph.pixels_per_tick/2+0.5, user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+xlen+1.5);
|
||||
cairo_move_to(cr, x-1-user_data->dlg.dialog_graph.pixels_per_tick/2+0.5, user_data->dlg.dialog_graph.surface_height-bottom_y_border+1.5);
|
||||
cairo_line_to(cr, x-1-user_data->dlg.dialog_graph.pixels_per_tick/2+0.5, user_data->dlg.dialog_graph.surface_height-bottom_y_border+xlen+1.5);
|
||||
cairo_stroke(cr);
|
||||
cairo_destroy(cr);
|
||||
|
||||
|
@ -1191,10 +1227,14 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
}
|
||||
pango_layout_set_text(layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(layout, &lwidth, NULL);
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_move_to (cr,
|
||||
x-1-user_data->dlg.dialog_graph.pixels_per_tick/2-lwidth/2,
|
||||
user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+20);
|
||||
user_data->dlg.dialog_graph.surface_height-bottom_y_border+20);
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
cairo_destroy (cr);
|
||||
cr = NULL;
|
||||
|
@ -1214,10 +1254,14 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
g_strlcpy(label_string, UTF8_LEFTWARDS_ARROW "Fwd",sizeof(label_string));
|
||||
pango_layout_set_text(layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(layout, &lwidth, NULL);
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_move_to (cr,
|
||||
user_data->dlg.dialog_graph.pixmap_width-right_x_border+33-lwidth,
|
||||
user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+3);
|
||||
user_data->dlg.dialog_graph.surface_width-right_x_border+33-lwidth,
|
||||
user_data->dlg.dialog_graph.surface_height-bottom_y_border+3);
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
cairo_destroy (cr);
|
||||
cr = NULL;
|
||||
|
@ -1225,10 +1269,14 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
g_strlcpy(label_string, UTF8_LEFTWARDS_ARROW "Rev",sizeof(label_string));
|
||||
pango_layout_set_text(layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(layout, &lwidth, NULL);
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_move_to (cr,
|
||||
user_data->dlg.dialog_graph.pixmap_width-right_x_border+33-lwidth,
|
||||
user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+3+9);
|
||||
user_data->dlg.dialog_graph.surface_width-right_x_border+33-lwidth,
|
||||
user_data->dlg.dialog_graph.surface_height-bottom_y_border+3+9);
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
cairo_destroy (cr);
|
||||
cr = NULL;
|
||||
|
@ -1257,10 +1305,14 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
|
||||
pango_layout_set_text(layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(layout, &lwidth, NULL);
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_move_to (cr,
|
||||
x_pos-1-lwidth/2,
|
||||
user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+3+7*(i/2));
|
||||
user_data->dlg.dialog_graph.surface_height-bottom_y_border+3+7*(i/2));
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
cairo_destroy (cr);
|
||||
cr = NULL;
|
||||
|
@ -1306,7 +1358,11 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
}
|
||||
|
||||
if(val){
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
gdk_cairo_set_source_color (cr, &user_data->dlg.dialog_graph.graph[i].color);
|
||||
cairo_set_line_width (cr, 1.0);
|
||||
cairo_move_to(cr, x_pos+0.5, draw_height-1+top_y_border+0.5);
|
||||
|
@ -1322,8 +1378,12 @@ static void dialog_graph_draw(user_data_t* user_data)
|
|||
|
||||
cr = gdk_cairo_create (gtk_widget_get_window(user_data->dlg.dialog_graph.draw_area));
|
||||
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cairo_set_source_surface (cr, user_data->dlg.dialog_graph.surface, 0, 0);
|
||||
#else
|
||||
gdk_cairo_set_source_pixmap (cr, user_data->dlg.dialog_graph.pixmap, 0, 0);
|
||||
cairo_rectangle (cr, 0, 0, user_data->dlg.dialog_graph.pixmap_width, user_data->dlg.dialog_graph.pixmap_height);
|
||||
#endif
|
||||
cairo_rectangle (cr, 0, 0, user_data->dlg.dialog_graph.surface_width, user_data->dlg.dialog_graph.surface_height);
|
||||
cairo_fill (cr);
|
||||
|
||||
cairo_destroy (cr);
|
||||
|
@ -1367,7 +1427,11 @@ static gint expose_event(GtkWidget *widget, GdkEventExpose *event)
|
|||
exit(10);
|
||||
}
|
||||
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cairo_set_source_surface (cr, user_data->dlg.dialog_graph.surface, 0, 0);
|
||||
#else
|
||||
gdk_cairo_set_source_pixmap (cr, user_data->dlg.dialog_graph.pixmap, 0, 0);
|
||||
#endif
|
||||
cairo_rectangle (cr, event->area.x, event->area.y, event->area.width, event->area.height);
|
||||
cairo_fill (cr);
|
||||
|
||||
|
@ -1390,6 +1454,17 @@ static gint configure_event(GtkWidget *widget, GdkEventConfigure *event _U_)
|
|||
exit(10);
|
||||
}
|
||||
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
if(user_data->dlg.dialog_graph.surface){
|
||||
g_object_unref(user_data->dlg.dialog_graph.surface);
|
||||
user_data->dlg.dialog_graph.surface=NULL;
|
||||
}
|
||||
gtk_widget_get_allocation(widget, &widget_alloc);
|
||||
user_data->dlg.dialog_graph.surface = gdk_window_create_similar_surface (gtk_widget_get_window(widget),
|
||||
CAIRO_CONTENT_COLOR,
|
||||
widget_alloc.width,
|
||||
widget_alloc.height);
|
||||
#else
|
||||
if(user_data->dlg.dialog_graph.pixmap){
|
||||
g_object_unref(user_data->dlg.dialog_graph.pixmap);
|
||||
user_data->dlg.dialog_graph.pixmap=NULL;
|
||||
|
@ -1400,14 +1475,19 @@ static gint configure_event(GtkWidget *widget, GdkEventConfigure *event _U_)
|
|||
widget_alloc.width,
|
||||
widget_alloc.height,
|
||||
-1);
|
||||
user_data->dlg.dialog_graph.pixmap_width=widget_alloc.width;
|
||||
user_data->dlg.dialog_graph.pixmap_height=widget_alloc.height;
|
||||
#endif
|
||||
user_data->dlg.dialog_graph.surface_width=widget_alloc.width;
|
||||
user_data->dlg.dialog_graph.surface_height=widget_alloc.height;
|
||||
|
||||
bt_save = g_object_get_data(G_OBJECT(user_data->dlg.dialog_graph.window), "bt_save");
|
||||
g_object_set_data(G_OBJECT(bt_save), "pixmap", user_data->dlg.dialog_graph.pixmap);
|
||||
/*g_object_set_data(G_OBJECT(bt_save), "pixmap", user_data->dlg.dialog_graph.pixmap); Not used ?*/
|
||||
gtk_widget_set_sensitive(bt_save, TRUE);
|
||||
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
cr = cairo_create (user_data->dlg.dialog_graph.surface);
|
||||
#else
|
||||
cr = gdk_cairo_create (user_data->dlg.dialog_graph.pixmap);
|
||||
#endif
|
||||
cairo_rectangle (cr, 0, 0, widget_alloc.width, widget_alloc.height);
|
||||
cairo_set_source_rgb (cr, 1, 1, 1);
|
||||
cairo_fill (cr);
|
||||
|
@ -1445,7 +1525,7 @@ static void create_draw_area(user_data_t* user_data, GtkWidget *box)
|
|||
g_signal_connect(user_data->dlg.dialog_graph.draw_area, "destroy", G_CALLBACK(quit), user_data);
|
||||
g_object_set_data(G_OBJECT(user_data->dlg.dialog_graph.draw_area), "user_data_t", user_data);
|
||||
|
||||
gtk_widget_set_size_request(user_data->dlg.dialog_graph.draw_area, user_data->dlg.dialog_graph.pixmap_width, user_data->dlg.dialog_graph.pixmap_height);
|
||||
gtk_widget_set_size_request(user_data->dlg.dialog_graph.draw_area, user_data->dlg.dialog_graph.surface_width, user_data->dlg.dialog_graph.surface_height);
|
||||
|
||||
/* signals needed to handle backing pixmap */
|
||||
g_signal_connect(user_data->dlg.dialog_graph.draw_area, "expose_event", G_CALLBACK(expose_event), NULL);
|
||||
|
@ -3592,11 +3672,15 @@ void rtp_analysis(
|
|||
user_data->dlg.dialog_graph.interval_index=DEFAULT_TICK_INTERVAL_VALUES_INDEX;
|
||||
user_data->dlg.dialog_graph.interval=tick_interval_values[DEFAULT_TICK_INTERVAL_VALUES_INDEX];
|
||||
user_data->dlg.dialog_graph.draw_area=NULL;
|
||||
#if GTK_CHECK_VERSION(2,22,0)
|
||||
user_data->dlg.dialog_graph.surface=NULL;
|
||||
#else
|
||||
user_data->dlg.dialog_graph.pixmap=NULL;
|
||||
#endif
|
||||
user_data->dlg.dialog_graph.scrollbar=NULL;
|
||||
user_data->dlg.dialog_graph.scrollbar_adjustment=NULL;
|
||||
user_data->dlg.dialog_graph.pixmap_width=500;
|
||||
user_data->dlg.dialog_graph.pixmap_height=200;
|
||||
user_data->dlg.dialog_graph.surface_width=500;
|
||||
user_data->dlg.dialog_graph.surface_height=200;
|
||||
user_data->dlg.dialog_graph.pixels_per_tick_index=DEFAULT_PIXELS_PER_TICK_INDEX;
|
||||
user_data->dlg.dialog_graph.pixels_per_tick=pixels_per_tick[DEFAULT_PIXELS_PER_TICK_INDEX];
|
||||
user_data->dlg.dialog_graph.max_y_units_index=AUTO_MAX_YSCALE_INDEX;
|
||||
|
|
Loading…
Reference in New Issue