X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2FmainWin%2Fsrc%2Fcallbacks.c;h=ca532d25d57bb7f96570b6b21162b02b69d4ffbb;hb=1f1ae8291146c371158191d7c7efd426e4a6f1ce;hp=cbac07a4e214fe80d3423f62bad41d9368ad02bf;hpb=c20b777774c004d42e93df0b56f4065b2682af49;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c b/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c index cbac07a4..ca532d25 100644 --- a/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c +++ b/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c @@ -285,19 +285,53 @@ void save_as(GtkWidget * widget, gpointer user_data) g_printf("Save as\n"); } +void zoom(GtkWidget * widget, double size) +{ + TimeInterval *time_span; + TimeWindow time_window; + LttTime current_time, time_delta, time_s, time_e; + MainWindow * mw_data = get_window_data_struct(widget); + + time_span = LTTV_TRACESET_CONTEXT(mw_data->traceset_info->traceset_context)->Time_Span ; + time_window = mw_data->current_tab->time_window; + current_time = mw_data->current_tab->current_time; + + time_delta = ltt_time_sub(time_span->endTime,time_span->startTime); + if(size == 0){ + time_window.start_time = time_span->startTime; + time_window.time_width = time_delta; + }else{ + time_window.time_width = ltt_time_div(time_window.time_width, size); + if(ltt_time_compare(time_window.time_width,time_delta) > 0) + time_window.time_width = time_delta; + + time_s = ltt_time_sub(current_time,ltt_time_div(time_window.time_width, 2)); + time_e = ltt_time_add(current_time,ltt_time_div(time_window.time_width, 2)); + if(ltt_time_compare(time_span->startTime, time_s) > 0){ + time_s = time_span->startTime; + }else if(ltt_time_compare(time_span->endTime, time_e) < 0){ + time_e = time_span->endTime; + time_s = ltt_time_sub(time_e,time_window.time_width); + } + time_window.start_time = time_s; + } + set_time_window(mw_data, &time_window); + gtk_custom_set_adjust(mw_data->current_tab->custom, FALSE); +} + void zoom_in(GtkWidget * widget, gpointer user_data) { - g_printf("Zoom in\n"); + zoom(widget, 2); } void zoom_out(GtkWidget * widget, gpointer user_data) { - g_printf("Zoom out\n"); + zoom(widget, 0.5); } void zoom_extended(GtkWidget * widget, gpointer user_data) { - g_printf("Zoom extended\n"); + zoom(widget, 0); } void go_to_time(GtkWidget * widget, gpointer user_data)