aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gtk/sctp_byte_graph_dlg.c67
-rw-r--r--gtk/sctp_graph_dlg.c72
-rw-r--r--gtk/sctp_stat.c4
-rw-r--r--gtk/sctp_stat.h11
4 files changed, 133 insertions, 21 deletions
diff --git a/gtk/sctp_byte_graph_dlg.c b/gtk/sctp_byte_graph_dlg.c
index 7168696aa0..20ec911ef6 100644
--- a/gtk/sctp_byte_graph_dlg.c
+++ b/gtk/sctp_byte_graph_dlg.c
@@ -280,7 +280,8 @@ gint diff, width;
static void sctp_graph_draw(struct sctp_udata *u_data)
{
int length, lwidth, j, b;
- guint32 label_width, label_height, distance=5, i, e, sec, w, start, a;
+ guint32 distance=5, i, e, sec, w, start, a;
+ gint label_width, label_height;
char label_string[15];
gfloat dis;
@@ -747,6 +748,33 @@ on_zoomin_bt (GtkWidget *widget _U_, struct sctp_udata *u_data)
}
static void
+zoomin_bt (struct sctp_udata *u_data)
+{
+ sctp_min_max_t *tmp_minmax;
+
+ tmp_minmax = g_malloc(sizeof(sctp_min_max_t));
+
+ u_data->io->tmp_min_tsn1=u_data->io->y1_tmp+u_data->io->min_y;
+ u_data->io->tmp_max_tsn1=u_data->io->y2_tmp+1+u_data->io->min_y;
+
+ u_data->io->tmp_min_tsn2=u_data->io->tmp_min_tsn1;
+ u_data->io->tmp_max_tsn2=u_data->io->tmp_max_tsn1;
+ tmp_minmax->tmp_min_secs=u_data->io->x1_tmp_sec;
+ tmp_minmax->tmp_min_usecs=u_data->io->x1_tmp_usec;
+ tmp_minmax->tmp_max_secs=u_data->io->x2_tmp_sec;
+ tmp_minmax->tmp_max_usecs=u_data->io->x2_tmp_usec;
+ tmp_minmax->tmp_min_tsn1=u_data->io->tmp_min_tsn1;
+ tmp_minmax->tmp_max_tsn1=u_data->io->tmp_max_tsn1;
+ tmp_minmax->tmp_min_tsn2=u_data->io->tmp_min_tsn2;
+ tmp_minmax->tmp_max_tsn2=u_data->io->tmp_max_tsn2;
+ u_data->assoc->min_max = g_slist_prepend(u_data->assoc->min_max, tmp_minmax);
+ u_data->io->length = g_slist_length(u_data->assoc->min_max);
+ u_data->io->tmp=TRUE;
+ u_data->io->rectangle=FALSE;
+ sctp_graph_redraw(u_data);
+}
+
+static void
on_zoomout_bt (GtkWidget *widget _U_, struct sctp_udata *u_data)
{
sctp_min_max_t *tmp_minmax, *mm;
@@ -847,7 +875,8 @@ static gint
on_button_release (GtkWidget *widget _U_, GdkEventButton *event, struct sctp_udata *u_data)
{
sctp_graph_t *ios;
- guint32 helpx, helpy, x1_tmp, x2_tmp, label_width, label_height, y_value;
+ guint32 helpx, helpy, x1_tmp, x2_tmp, y_value;
+ gint label_width, label_height;
gdouble x_value, position;
gint lwidth;
char label_string[30];
@@ -879,11 +908,15 @@ on_button_release (GtkWidget *widget _U_, GdkEventButton *event, struct sctp_uda
if (abs((long)(event->x-u_data->io->x_old))>10 || abs((long)(event->y-u_data->io->y_old))>10)
{
+ u_data->io->rect_x_min = (gint)floor(MIN(u_data->io->x_old,event->x));
+ u_data->io->rect_x_max = (gint)ceil(MAX(u_data->io->x_old,event->x));
+ u_data->io->rect_y_min = (gint)floor(MIN(u_data->io->y_old,event->y));
+ u_data->io->rect_y_max = (gint)ceil(MAX(u_data->io->y_old,event->y));
gdk_draw_rectangle(u_data->io->pixmap,u_data->io->draw_area->style->black_gc,
- FALSE,
- (gint)floor(MIN(u_data->io->x_old,event->x)), (gint)floor(MIN(u_data->io->y_old,event->y)),
- (gint)abs((long)(event->x-u_data->io->x_old)),
- (gint)abs((long)(event->y-u_data->io->y_old)));
+ FALSE,
+ u_data->io->rect_x_min, u_data->io->rect_y_min,
+ u_data->io->rect_x_max - u_data->io->rect_x_min,
+ u_data->io->rect_y_max - u_data->io->rect_y_min);
ios=(sctp_graph_t *)OBJECT_GET_DATA(u_data->io->draw_area, "sctp_graph_t");
if(!ios){
@@ -906,6 +939,10 @@ on_button_release (GtkWidget *widget _U_, GdkEventButton *event, struct sctp_uda
x2_tmp=x1_tmp;
x1_tmp=helpx;
}
+ u_data->io->x1_akt_sec = u_data->io->x1_tmp_sec;
+ u_data->io->x1_akt_usec = u_data->io->x1_tmp_usec;
+ u_data->io->x2_akt_sec = u_data->io->x2_tmp_sec;
+ u_data->io->x2_akt_usec = u_data->io->x2_tmp_usec;
u_data->io->x1_tmp_sec=(guint32)x1_tmp/1000000;
u_data->io->x1_tmp_usec=x1_tmp%1000000;
u_data->io->x2_tmp_sec=(guint32)x2_tmp/1000000;
@@ -919,10 +956,26 @@ on_button_release (GtkWidget *widget _U_, GdkEventButton *event, struct sctp_uda
u_data->io->x_new=event->x;
u_data->io->y_new=event->y;
u_data->io->rectangle=TRUE;
+ u_data->io->rectangle_present=TRUE;
}
else
{
- if (label_set)
+ if (u_data->io->rectangle_present==TRUE)
+ {
+ u_data->io->rectangle_present=FALSE;
+ if (event->x >= u_data->io->rect_x_min && event->x <= u_data->io->rect_x_max &&
+ event->y >= u_data->io->rect_y_min && event->y <= u_data->io->rect_y_max)
+ zoomin_bt(u_data);
+ else
+ {
+ u_data->io->x1_tmp_sec = u_data->io->x1_akt_sec;
+ u_data->io->x1_tmp_usec = u_data->io->x1_akt_usec;
+ u_data->io->x2_tmp_sec = u_data->io->x2_akt_sec;
+ u_data->io->x2_tmp_usec = u_data->io->x2_akt_usec;
+ sctp_graph_redraw(u_data);
+ }
+ }
+ else if (label_set)
{
label_set = FALSE;
sctp_graph_redraw(u_data);
diff --git a/gtk/sctp_graph_dlg.c b/gtk/sctp_graph_dlg.c
index 68f428924a..9f9f4061ab 100644
--- a/gtk/sctp_graph_dlg.c
+++ b/gtk/sctp_graph_dlg.c
@@ -749,7 +749,7 @@ on_zoomin_bt (GtkWidget *widget _U_, struct sctp_udata *u_data)
{
sctp_min_max_t *tmp_minmax;
- if (u_data->io->rectangle==TRUE)
+ if (u_data->io->rectangle_present==TRUE)
{
tmp_minmax = g_malloc(sizeof(sctp_min_max_t));
@@ -769,11 +769,42 @@ on_zoomin_bt (GtkWidget *widget _U_, struct sctp_udata *u_data)
u_data->io->length = g_slist_length(u_data->assoc->min_max);
u_data->io->tmp=TRUE;
u_data->io->rectangle=FALSE;
+ u_data->io->rectangle_present=FALSE;
sctp_graph_redraw(u_data);
}
}
static void
+zoomin_bt (struct sctp_udata *u_data)
+{
+ sctp_min_max_t *tmp_minmax;
+
+ tmp_minmax = g_malloc(sizeof(sctp_min_max_t));
+
+ u_data->io->tmp_min_tsn1=u_data->io->y1_tmp+u_data->io->min_y;
+ u_data->io->tmp_max_tsn1=u_data->io->y2_tmp+1+u_data->io->min_y;
+ u_data->io->tmp_min_tsn2=u_data->io->tmp_min_tsn1;
+ u_data->io->tmp_max_tsn2=u_data->io->tmp_max_tsn1;
+ tmp_minmax->tmp_min_secs=u_data->io->x1_tmp_sec;
+ tmp_minmax->tmp_min_usecs= u_data->io->x1_tmp_usec;
+ tmp_minmax->tmp_max_secs= u_data->io->x2_tmp_sec;
+ tmp_minmax->tmp_max_usecs= u_data->io->x2_tmp_usec;
+ tmp_minmax->tmp_min_tsn1=u_data->io->tmp_min_tsn1;
+ tmp_minmax->tmp_max_tsn1=u_data->io->tmp_max_tsn1;
+ tmp_minmax->tmp_min_tsn2=u_data->io->tmp_min_tsn2;
+ tmp_minmax->tmp_max_tsn2=u_data->io->tmp_max_tsn2;
+ u_data->assoc->min_max = g_slist_prepend(u_data->assoc->min_max, tmp_minmax);
+ u_data->io->length = g_slist_length(u_data->assoc->min_max);
+ u_data->io->tmp=TRUE;
+ u_data->io->rectangle=FALSE;
+ u_data->io->rectangle_present=FALSE;
+ sctp_graph_redraw(u_data);
+
+}
+
+
+
+static void
on_zoomout_bt (GtkWidget *widget _U_, struct sctp_udata *u_data)
{
sctp_min_max_t *tmp_minmax, *mm;
@@ -828,7 +859,6 @@ on_zoomout_bt (GtkWidget *widget _U_, struct sctp_udata *u_data)
sctp_graph_redraw(u_data);
}
-
static gint
on_button_press (GtkWidget *widget _U_, GdkEventButton *event, struct sctp_udata *u_data)
{
@@ -906,12 +936,15 @@ on_button_release (GtkWidget *widget _U_, GdkEventButton *event, struct sctp_uda
event->x = LEFT_BORDER+u_data->io->offset;
if (abs((long)(event->x-u_data->io->x_old))>10 || abs((long)(event->y-u_data->io->y_old))>10)
{
+ u_data->io->rect_x_min = (gint)floor(MIN(u_data->io->x_old,event->x));
+ u_data->io->rect_x_max = (gint)ceil(MAX(u_data->io->x_old,event->x));
+ u_data->io->rect_y_min = (gint)floor(MIN(u_data->io->y_old,event->y));
+ u_data->io->rect_y_max = (gint)ceil(MAX(u_data->io->y_old,event->y))+POINT_SIZE;
gdk_draw_rectangle(u_data->io->pixmap,u_data->io->draw_area->style->black_gc,
- FALSE,
- (gint)floor(MIN(u_data->io->x_old,event->x)), (gint)floor(MIN(u_data->io->y_old,event->y)),
- (gint)abs((long)(event->x-u_data->io->x_old)),
- (gint)abs((long)(event->y-u_data->io->y_old))+POINT_SIZE);
-
+ FALSE,
+ u_data->io->rect_x_min, u_data->io->rect_y_min,
+ u_data->io->rect_x_max - u_data->io->rect_x_min,
+ u_data->io->rect_y_max - u_data->io->rect_y_min);
ios=(sctp_graph_t *)OBJECT_GET_DATA(u_data->io->draw_area, "sctp_graph_t");
if(!ios){
@@ -934,6 +967,10 @@ on_button_release (GtkWidget *widget _U_, GdkEventButton *event, struct sctp_uda
x2_tmp=x1_tmp;
x1_tmp=helpx;
}
+ u_data->io->x1_akt_sec = u_data->io->x1_tmp_sec;
+ u_data->io->x1_akt_usec = u_data->io->x1_tmp_usec;
+ u_data->io->x2_akt_sec = u_data->io->x2_tmp_sec;
+ u_data->io->x2_akt_usec = u_data->io->x2_tmp_usec;
u_data->io->x1_tmp_sec=(guint32)x1_tmp/1000000;
u_data->io->x1_tmp_usec=x1_tmp%1000000;
u_data->io->x2_tmp_sec=(guint32)x2_tmp/1000000;
@@ -946,11 +983,26 @@ on_button_release (GtkWidget *widget _U_, GdkEventButton *event, struct sctp_uda
u_data->io->x_new=event->x;
u_data->io->y_new=event->y;
u_data->io->rectangle=TRUE;
-
+ u_data->io->rectangle_present=TRUE;
}
else
{
- if (label_set)
+ if (u_data->io->rectangle_present==TRUE)
+ {
+ u_data->io->rectangle_present=FALSE;
+ if (event->x >= u_data->io->rect_x_min && event->x <= u_data->io->rect_x_max &&
+ event->y >= u_data->io->rect_y_min && event->y <= u_data->io->rect_y_max)
+ zoomin_bt(u_data);
+ else
+ {
+ u_data->io->x1_tmp_sec = u_data->io->x1_akt_sec;
+ u_data->io->x1_tmp_usec = u_data->io->x1_akt_usec;
+ u_data->io->x2_tmp_sec = u_data->io->x2_akt_sec;
+ u_data->io->x2_tmp_usec = u_data->io->x2_akt_usec;
+ sctp_graph_redraw(u_data);
+ }
+ }
+ else if (label_set)
{
label_set = FALSE;
sctp_graph_redraw(u_data);
@@ -1071,9 +1123,7 @@ static void init_sctp_graph_window(struct sctp_udata *u_data)
gtk_signal_connect(GTK_OBJECT(u_data->io->draw_area),"button_press_event",(GtkSignalFunc)on_button_press, u_data);
gtk_signal_connect(GTK_OBJECT(u_data->io->draw_area),"button_release_event",(GtkSignalFunc)on_button_release, u_data);
- /*gtk_signal_connect(GTK_OBJECT(u_data->io->draw_area),"motion_notify_event",(GtkSignalFunc)on_mouse_notify, u_data);*/
gtk_widget_set_events(u_data->io->draw_area, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK);
- /* dlg_set_cancel(u_data->io->window, bt_close); */
gtk_widget_show(u_data->io->window);
}
diff --git a/gtk/sctp_stat.c b/gtk/sctp_stat.c
index 30a842b716..d8dba4a572 100644
--- a/gtk/sctp_stat.c
+++ b/gtk/sctp_stat.c
@@ -346,7 +346,7 @@ static gint sctp_assoc_vtag_cmp(gconstpointer aa, gconstpointer bb)
return(ASSOC_NOT_FOUND);
}
-
+/*
static gint sctp_assoc_address_cmp(gconstpointer aa, gconstpointer bb)
{
GList *srclist, *dstlist;
@@ -570,7 +570,7 @@ static gint sctp_assoc_address_cmp(gconstpointer aa, gconstpointer bb)
g_free(dst);
return ASSOC_NOT_FOUND;
}
-
+*/
diff --git a/gtk/sctp_stat.h b/gtk/sctp_stat.h
index 9bf7d6de2d..87d0284f7c 100644
--- a/gtk/sctp_stat.h
+++ b/gtk/sctp_stat.h
@@ -147,7 +147,7 @@ typedef struct _sctp_assoc_info {
guint32 n_adler32_correct;
guint32 n_crc32c_calculated;
guint32 n_crc32c_correct;
- guint8 checksum_type[8];
+ gchar checksum_type[8];
guint32 n_checksum_errors;
guint32 n_bundling_errors;
guint32 n_padding_errors;
@@ -267,10 +267,19 @@ typedef struct _sctp_graph_t {
guint16 length;
gboolean tmp;
gboolean rectangle;
+ gboolean rectangle_present;
+ guint32 rect_x_min;
+ guint32 rect_x_max;
+ guint32 rect_y_min;
+ guint32 rect_y_max;
guint32 x1_tmp_sec;
guint32 x2_tmp_sec;
guint32 x1_tmp_usec;
guint32 x2_tmp_usec;
+ guint32 x1_akt_sec;
+ guint32 x2_akt_sec;
+ guint32 x1_akt_usec;
+ guint32 x2_akt_usec;
guint32 tmp_width;
guint32 axis_width;
guint32 y1_tmp;