diff options
author | wmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-08-19 22:04:37 +0000 |
---|---|---|
committer | wmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-08-19 22:04:37 +0000 |
commit | 6ae906328f9cbd245eb2439f7fe26526eda58413 (patch) | |
tree | 430a830e267e582c2a921f3cfd66a315a0201a0b /gtk/rtp_analysis.c | |
parent | fb668b5260ca23cd44def571e588e28847d810f7 (diff) |
Minor cleanup of rtp graph:
- Display current value in combo boxes (pixels_per_tick, etc) to always
match actual values being used to create graph;
- yscale combo box entries:
show values >= 1 sec as sec (not s000 ms);
- Determine max yscale label width properly as the largest of the
top or middle label lengths;
- Cleanup some indentation.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@33855 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'gtk/rtp_analysis.c')
-rw-r--r-- | gtk/rtp_analysis.c | 51 |
1 files changed, 36 insertions, 15 deletions
diff --git a/gtk/rtp_analysis.c b/gtk/rtp_analysis.c index e5219fde61..3107a0bb53 100644 --- a/gtk/rtp_analysis.c +++ b/gtk/rtp_analysis.c @@ -114,6 +114,7 @@ enum #define NUM_COLS 9 #define NUM_GRAPH_ITEMS 100000 #define MAX_YSCALE 16 +#define AUTO_MAX_YSCALE_INDEX 0 #define AUTO_MAX_YSCALE 0 #define MAX_GRAPHS 4 #define GRAPH_FWD_JITTER 0 @@ -123,12 +124,12 @@ enum static guint32 yscale_max[MAX_YSCALE] = {AUTO_MAX_YSCALE, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000, 2000000, 5000000, 10000000, 20000000, 50000000}; #define MAX_PIXELS_PER_TICK 4 -#define DEFAULT_PIXELS_PER_TICK 1 +#define DEFAULT_PIXELS_PER_TICK_INDEX 1 static guint32 pixels_per_tick[MAX_PIXELS_PER_TICK] = {1, 2, 5, 10}; static const char *graph_descr[4] = {"Fwd Jitter", "Fwd Difference", "Rvr Jitter", "Rvr Difference"}; /* unit is in ms */ #define MAX_TICK_VALUES 5 -#define DEFAULT_TICK_VALUE 1 +#define DEFAULT_TICK_INTERVAL_VALUES_INDEX 1 static guint tick_interval_values[MAX_TICK_VALUES] = { 1, 10, 100, 1000, 10000 }; typedef struct _dialog_graph_graph_item_t { guint32 value; @@ -150,9 +151,10 @@ typedef struct _dialog_graph_graph_t { typedef struct _dialog_graph_t { gboolean needs_redraw; - gint32 interval; /* measurement interval in ms */ + gint32 interval_index; /* index into tick_interval_values_array */ + gint32 interval; /* measurement interval in ms */ guint32 last_interval; - guint32 max_interval; /* XXX max_interval and num_items are redundant */ + guint32 max_interval; /* XXX max_interval and num_items are redundant */ guint32 num_items; struct _dialog_graph_graph_t graph[MAX_GRAPHS]; GtkWidget *window; @@ -162,7 +164,9 @@ typedef struct _dialog_graph_t { GtkWidget *scrollbar; int pixmap_width; int pixmap_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 */ int max_y_units; double start_time; } dialog_graph_t; @@ -908,6 +912,7 @@ static void dialog_graph_draw(user_data_t* user_data) guint32 bottom_y_border; PangoLayout *layout; int label_width, label_height; + int label_width_mid, label_height_mid; guint32 draw_width, draw_height; char label_string[15]; @@ -988,12 +993,19 @@ static void dialog_graph_draw(user_data_t* user_data) /* * Calculate size of borders surrounding the plot * The border on the right side needs to be adjusted depending - * on the width of the text labels. For simplicity we assume that the - * top y scale label will be the widest one + * on the width of the text labels. */ print_time_scale_string(label_string, sizeof(label_string), max_y); layout = gtk_widget_create_pango_layout(user_data->dlg.dialog_graph.draw_area, label_string); pango_layout_get_pixel_size(layout, &label_width, &label_height); + print_time_scale_string(label_string, sizeof(label_string), max_y*5/10); + layout = gtk_widget_create_pango_layout(user_data->dlg.dialog_graph.draw_area, label_string); + pango_layout_get_pixel_size(layout, &label_width_mid, &label_height_mid); + if (label_width_mid > label_width) { + label_width = label_width_mid; + label_height = label_height_mid; + } + left_x_border=10; right_x_border=label_width+20; top_y_border=10; @@ -1499,6 +1511,7 @@ static void yscale_select(GtkWidget *item, gpointer key) user_data=(user_data_t *)key; i = gtk_combo_box_get_active (GTK_COMBO_BOX(item)); + user_data->dlg.dialog_graph.max_y_units_index=i; user_data->dlg.dialog_graph.max_y_units=yscale_max[i]; dialog_graph_redraw(user_data); } @@ -1511,6 +1524,8 @@ static void pixels_per_tick_select(GtkWidget *item, gpointer key) user_data=(user_data_t *)key; i = gtk_combo_box_get_active (GTK_COMBO_BOX(item)); + + user_data->dlg.dialog_graph.pixels_per_tick_index=i; user_data->dlg.dialog_graph.pixels_per_tick=pixels_per_tick[i]; dialog_graph_redraw(user_data); } @@ -1524,6 +1539,7 @@ static void tick_interval_select(GtkWidget *item, gpointer key) user_data=(user_data_t *)key; i = gtk_combo_box_get_active (GTK_COMBO_BOX(item)); + user_data->dlg.dialog_graph.interval_index=i; user_data->dlg.dialog_graph.interval=tick_interval_values[i]; cf_retap_packets(&cfile); dialog_graph_redraw(user_data); @@ -1542,12 +1558,14 @@ create_yscale_max_menu_items(user_data_t* user_data) for(i=0;i<MAX_YSCALE;i++){ if(yscale_max[i]==AUTO_MAX_YSCALE){ g_strlcpy(str,"Auto",sizeof(str)); - } else { + } else if (yscale_max[i] < 1000000) { g_snprintf(str, sizeof(str), "%u ms", yscale_max[i]/1000); + } else { + g_snprintf(str, sizeof(str), "%u s", yscale_max[i]/1000000); } gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), str); } - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), user_data->dlg.dialog_graph.max_y_units_index); g_signal_connect(combo_box, "changed", G_CALLBACK(yscale_select), (gpointer)user_data); return combo_box; @@ -1565,13 +1583,13 @@ create_pixels_per_tick_menu_items(user_data_t *user_data) for(i=0;i<MAX_PIXELS_PER_TICK;i++){ g_snprintf(str, sizeof(str), "%u", pixels_per_tick[i]); - gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), str); + gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), str); } - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), DEFAULT_PIXELS_PER_TICK); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), user_data->dlg.dialog_graph.pixels_per_tick_index); - g_signal_connect(combo_box, "changed", G_CALLBACK(pixels_per_tick_select), (gpointer)user_data); + g_signal_connect(combo_box, "changed", G_CALLBACK(pixels_per_tick_select), (gpointer)user_data); - return combo_box; + return combo_box; } /****************************************************************************/ @@ -1596,7 +1614,7 @@ create_tick_interval_menu_items(user_data_t *user_data) } gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), str); } - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), user_data->dlg.dialog_graph.interval_index); g_signal_connect(combo_box, "changed", G_CALLBACK(tick_interval_select), (gpointer)user_data); return combo_box; @@ -3561,14 +3579,17 @@ void rtp_analysis( /* init dialog_graph */ user_data->dlg.dialog_graph.needs_redraw=TRUE; - user_data->dlg.dialog_graph.interval=tick_interval_values[DEFAULT_TICK_VALUE]; + 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; user_data->dlg.dialog_graph.pixmap=NULL; 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.pixels_per_tick=pixels_per_tick[DEFAULT_PIXELS_PER_TICK]; + 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; user_data->dlg.dialog_graph.max_y_units=AUTO_MAX_YSCALE; user_data->dlg.dialog_graph.last_interval=0xffffffff; user_data->dlg.dialog_graph.max_interval=0; |