📄 gsegyviewscaling.c
字号:
static gboolean g_segy_view_scaling_scale_idle (gpointer data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (data)); gint x, y; GdkModifierType state; if (NULL == private->active_widget) return FALSE; if (private->seis_view_is_threaded) gdk_threads_enter (); gdk_window_get_pointer (private->active_widget->window, &x, &y, &state); if (private->seis_view_is_threaded) gdk_threads_leave (); return TRUE;}static gboolean g_segy_view_scaling_scale_enter_handler (GtkWidget *widget, GdkEventCrossing *event, gpointer data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (data)); private->active_widget = widget; g_timeout_add (100, (GSourceFunc)g_segy_view_scaling_scale_idle, (gpointer)G_SEGY_VIEW_SCALING (data)); return FALSE;}static gboolean g_segy_view_scaling_scale_leave_handler (GtkWidget *widget, GdkEventMotion *event, gpointer data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (data)); private->active_widget = NULL; return FALSE;}static void g_segy_view_scaling_horiz_scale_handler (GtkWidget *widget, gpointer data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (data)); if (private->block_selection) return; private->property_change++; private->property_change++; gdouble slow_start_data, slow_size_data, fast_start_data, fast_size_data; g_object_get (G_OBJECT (private->seis_view), "slow-start-data", &slow_start_data, "slow-size-data", &slow_size_data, "fast-start-data", &fast_start_data, "fast-size-data", &fast_size_data, NULL); gdouble new_slow_size_data = gtk_range_get_value (GTK_RANGE (private->horiz_scale)); gdouble new_slow_start_data = slow_start_data + (slow_size_data - new_slow_size_data) / 2.0; if (new_slow_size_data < 1.0 / (gdouble)private->trace_num) new_slow_size_data = 1.0 / (gdouble)private->trace_num; if (new_slow_size_data > 1.0) new_slow_size_data = 1.0; gtk_seis_view_gl_set_data_viewport (private->seis_view, new_slow_start_data, new_slow_size_data, fast_start_data, fast_size_data); gtk_seis_view_gl_redraw (private->seis_view); private->horiz_size = new_slow_size_data; private->horiz_start = new_slow_start_data; g_segy_view_scaling_draw_viewport (G_SEGY_VIEW_SCALING (data));}static void g_segy_view_scaling_vert_scale_handler (GtkWidget *widget, gpointer data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (data)); if (private->block_selection) return; private->property_change++; private->property_change++; gdouble slow_start_data, slow_size_data, fast_start_data, fast_size_data; g_object_get (G_OBJECT (private->seis_view), "slow-start-data", &slow_start_data, "slow-size-data", &slow_size_data, "fast-start-data", &fast_start_data, "fast-size-data", &fast_size_data, NULL); gdouble new_fast_size_data = gtk_range_get_value (GTK_RANGE (private->vert_scale)); gdouble new_fast_start_data = fast_start_data + (fast_size_data - new_fast_size_data) / 2.0; if (new_fast_size_data < 1.0 / (gdouble)private->sample_num) new_fast_size_data = 1.0 / (gdouble)private->sample_num; if (new_fast_size_data > 1.0) new_fast_size_data = 1.0; gtk_seis_view_gl_set_data_viewport (private->seis_view, slow_start_data, slow_size_data, new_fast_start_data, new_fast_size_data); gtk_seis_view_gl_redraw (private->seis_view); private->vert_size = new_fast_size_data; private->vert_start = new_fast_start_data; g_segy_view_scaling_draw_viewport (G_SEGY_VIEW_SCALING (data));}static void g_segy_view_scaling_horiz_size_handler (GObject *gobject, GParamSpec *arg1, gpointer user_data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (user_data)); if (private->property_change) { private->property_change--; return; } if (private->dragging_viewport) return; g_object_get (G_OBJECT (private->seis_view), "slow-start-data", &private->horiz_start, "slow-size-data", &private->horiz_size, "fast-start-data", &private->vert_start, "fast-size-data", &private->vert_size, NULL); if (private->horiz_scale) { private->block_selection = TRUE; if (private->seis_view_is_threaded) gdk_threads_enter (); gtk_range_set_value (GTK_RANGE (private->horiz_scale), private->horiz_size); if (private->viewport_area && FALSE == private->viewport_draw_queued) { gtk_widget_queue_draw (private->viewport_area); private->viewport_draw_queued = TRUE; } if (private->seis_view_is_threaded) gdk_threads_leave (); private->block_selection = FALSE; }}static void g_segy_view_scaling_vert_size_handler (GObject *gobject, GParamSpec *arg1, gpointer user_data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (user_data)); if (private->property_change) { private->property_change--; return; } if (private->dragging_viewport) return; g_object_get (G_OBJECT (private->seis_view), "slow-start-data", &private->horiz_start, "slow-size-data", &private->horiz_size, "fast-start-data", &private->vert_start, "fast-size-data", &private->vert_size, NULL); if (private->vert_scale) { private->block_selection = TRUE; if (private->seis_view_is_threaded) gdk_threads_enter (); gtk_range_set_value (GTK_RANGE (private->vert_scale), private->vert_size); if (private->viewport_area && FALSE == private->viewport_draw_queued) { gtk_widget_queue_draw (private->viewport_area); private->viewport_draw_queued = TRUE; } if (private->seis_view_is_threaded) gdk_threads_leave (); private->block_selection = FALSE; }}static void g_segy_view_scaling_traces_scale_handler (GObject *gobject, GParamSpec *arg1, gpointer user_data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (user_data)); if (private->property_change) { private->property_change--; return; } g_object_get (G_OBJECT (private->seis_view), arg1->name, &private->traces_scale, NULL); if (private->amp_scale) { private->block_selection = TRUE; if (private->seis_view_is_threaded) gdk_threads_enter (); gtk_range_set_value (GTK_RANGE (private->amp_scale), private->traces_scale); if (private->seis_view_is_threaded) gdk_threads_leave (); private->block_selection = FALSE; }}static void g_segy_view_scaling_horiz_start_handler (GObject *gobject, GParamSpec *arg1, gpointer user_data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (user_data)); if (private->property_change) { private->property_change--; return; } if (private->dragging_viewport) return; g_object_get (G_OBJECT (private->seis_view), "slow-start-data", &private->horiz_start, "slow-size-data", &private->horiz_size, "fast-start-data", &private->vert_start, "fast-size-data", &private->vert_size, NULL); if (private->seis_view_is_threaded) gdk_threads_enter (); if (private->viewport_area && FALSE == private->viewport_draw_queued) { gtk_widget_queue_draw (private->viewport_area); private->viewport_draw_queued = TRUE; } if (private->seis_view_is_threaded) gdk_threads_leave ();}static void g_segy_view_scaling_vert_start_handler (GObject *gobject, GParamSpec *arg1, gpointer user_data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (user_data)); if (private->property_change) { private->property_change--; return; } if (private->dragging_viewport) return; g_object_get (G_OBJECT (private->seis_view), "slow-start-data", &private->horiz_start, "slow-size-data", &private->horiz_size, "fast-start-data", &private->vert_start, "fast-size-data", &private->vert_size, NULL); if (private->seis_view_is_threaded) gdk_threads_enter (); if (private->viewport_area && FALSE == private->viewport_draw_queued) { gtk_widget_queue_draw (private->viewport_area); private->viewport_draw_queued = TRUE; } if (private->seis_view_is_threaded) gdk_threads_leave ();}static gboolean g_segy_view_scaling_viewport_area_configure_handler (GtkWidget *widget, GdkEventConfigure *event, gpointer data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (data)); if (private->viewport_pixmap) g_object_unref (G_OBJECT (private->viewport_pixmap)); private->viewport_pixmap = gdk_pixmap_new (widget->window, widget->allocation.width, widget->allocation.height, -1); return FALSE;}static gboolean g_segy_view_scaling_viewport_area_expose_handler (GtkWidget *widget, GdkEventExpose *event, gpointer data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (data)); if (private->block_expose) return FALSE; private->block_expose = TRUE; g_segy_view_scaling_draw_viewport (G_SEGY_VIEW_SCALING (data)); private->block_expose = FALSE; return FALSE;}static gboolean g_segy_view_scaling_viewport_area_motion_idle (gpointer data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (data)); if (private->seis_view_is_threaded) gdk_threads_enter (); if (private->dragging_viewport) { gint x, y; GdkModifierType state; gdk_window_get_pointer (private->viewport_area->window, &x, &y, &state); if (private->seis_view_is_threaded) gdk_threads_leave (); return TRUE; } else { if (private->seis_view_is_threaded) gdk_threads_leave (); return FALSE; }}static gboolean g_segy_view_scaling_viewport_area_button_event_handler (GtkWidget *widget, GdkEventButton *event, gpointer data) { GSEGYViewScalingPrivate *private = G_SEGY_VIEW_SCALING_GET_PRIVATE (G_SEGY_VIEW_SCALING (data));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -