⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsegyviewscaling.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 3 页
字号:
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 + -