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

📄 gsegydataview.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 4 页
字号:
    }}static void g_segy_data_view_hlight_scroll_down_handler (GSeisViewToolHighlight *hlight_tool, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    if (private->ensemble_select) {        if (private->seis_view_is_threaded)            gdk_threads_enter ();        g_segy_ensemble_select_next (private->ensemble_select);        if (private->seis_view_is_threaded)            gdk_threads_leave ();    }}static void g_segy_data_view_aux_scroll_up_handler (GSeisViewToolHighlight *hlight_tool, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    if (private->seis_view_is_threaded)        gdk_threads_enter ();    g_segy_color_manager_previous_palette (private->color_manager);    if (private->seis_view_is_threaded)        gdk_threads_leave ();}static void g_segy_data_view_aux_scroll_down_handler (GSeisViewToolHighlight *hlight_tool, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    if (private->seis_view_is_threaded)        gdk_threads_enter ();    g_segy_color_manager_next_palette (private->color_manager);    if (private->seis_view_is_threaded)        gdk_threads_leave ();}static void g_segy_data_view_display_mode_change_handler (GSEGYWigglePanel *wiggle_panel,                                                          gint display_mode, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gtk_seis_view_gl_set_display_mode (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                       (GtkSeisViewDisplayMode)display_mode);    gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->seis_view_gl));}static void g_segy_data_view_va_fill_mode_change_handler (GSEGYWigglePanel *wiggle_panel,                                                          gint va_fill_mode, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gtk_seis_view_gl_set_va_fill_mode (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                       (GtkSeisViewVAFill)va_fill_mode);    gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->seis_view_gl));}static void g_segy_data_view_polarity_change_handler (GSEGYWigglePanel *wiggle_panel,                                                      gboolean inverse, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gtk_seis_view_gl_set_inverse_polarity (GTK_SEIS_VIEW_GL (private->seis_view_gl), inverse);    gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->seis_view_gl));}static void g_segy_data_view_minmax_mode_change_handler (GSEGYGainPanel *gain_panel,                                                         gint minmax_mode, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gtk_seis_view_gl_set_minmax_mode (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                      (GtkSeisViewMinMax)minmax_mode);}static void g_segy_data_view_use_agc_change_handler (GSEGYGainPanel *gain_panel,                                                     gfloat agc_window, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gtk_seis_view_gl_set_agc_use (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                  agc_window > 0, agc_window);}static void g_segy_data_view_reload_data_handler (GSEGYGainPanel *gain_panel, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    private->reload = TRUE;    g_segy_data_view_select_ensemble (G_SEGY_DATA_VIEW (data));}static gboolean g_segy_data_view_magnify_close_handler (GtkWidget *widget, GdkEvent* event, gpointer data) {    return TRUE;}static void g_segy_data_view_magnify_view_area_handler (GtkWidget *widget, gdouble slow_start_data,                                                        gdouble slow_size_data, gdouble fast_start_data,                                                        gdouble fast_size_data, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    if (private->seis_view_is_threaded)        gdk_threads_enter ();    gtk_seis_view_gl_set_data_viewport (GTK_SEIS_VIEW_GL (private->magnify_view_gl),                                        slow_start_data, slow_size_data,                                        fast_start_data, fast_size_data);    gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->magnify_view_gl));    if (private->seis_view_is_threaded)        gdk_threads_leave ();}static GtkWidget* g_segy_data_view_get_magnify_view_window (GSEGYDataView *self) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (self);    if (NULL == private->magnify_view_window) {        private->magnify_view_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);        gtk_container_set_border_width (GTK_CONTAINER (private->magnify_view_window), 7);        gtk_widget_set_size_request (GTK_WIDGET (private->magnify_view_window), 350, 300);        gtk_window_set_default_size (GTK_WINDOW (private->magnify_view_window), 350, 300);        gtk_window_set_modal (GTK_WINDOW (private->magnify_view_window), FALSE);        gtk_window_set_title (GTK_WINDOW (private->magnify_view_window), _("Magnify viewer"));        gtk_window_set_transient_for (GTK_WINDOW (private->magnify_view_window),                                      GTK_WINDOW (private->data_window));        gtk_window_set_resizable (GTK_WINDOW (private->magnify_view_window), TRUE);        private->magnify_view_frame = gtk_frame_new (NULL);        gtk_container_add (GTK_CONTAINER (private->magnify_view_window), private->magnify_view_frame);        private->magnify_view_gl = gtk_seis_view_gl_new_shared (GTK_SEIS_VIEW_GL (private->seis_view_gl));        gtk_container_add (GTK_CONTAINER (private->magnify_view_frame), private->magnify_view_gl);        gtk_signal_connect (GTK_OBJECT (private->magnify_view_window), "delete_event",                            GTK_SIGNAL_FUNC (g_segy_data_view_magnify_close_handler),                            (gpointer)self);        g_signal_connect (G_OBJECT (private->magnify_tool), "magnify_viewport",                          (GCallback)g_segy_data_view_magnify_view_area_handler, (gpointer)self);        gtk_widget_show_all (private->magnify_view_frame);        gdouble slow_start_data, slow_end_data, fast_start_data, fast_end_data;        g_object_get (G_OBJECT (private->magnify_tool), "slow_start", &slow_start_data,                                                        "slow_end", &slow_end_data,                                                        "fast_start", &fast_start_data,                                                        "fast_end", &fast_end_data, NULL);        gtk_seis_view_gl_set_data_viewport (GTK_SEIS_VIEW_GL (private->magnify_view_gl),                                            slow_start_data, slow_end_data - slow_start_data,                                            fast_start_data, fast_end_data - fast_start_data);        gtk_window_group_add_window (private->window_group, GTK_WINDOW (private->magnify_view_window));        gsegy_view_set_window_icon (GTK_WINDOW (private->magnify_view_window));    }    return private->magnify_view_window;}static GtkWidget* g_segy_data_view_get_trace_info_window (GSEGYDataView *self) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (self);    if (NULL == private->trace_info_window) {        gint root_width, root_height;        gdk_drawable_get_size (GDK_DRAWABLE (gdk_get_default_root_window ()), &root_width, &root_height);        private->trace_info_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);        gtk_container_set_border_width (GTK_CONTAINER (private->trace_info_window), 7);        if (root_height > 800) {            gtk_widget_set_size_request (GTK_WIDGET (private->trace_info_window), 450, 800);            gtk_window_set_default_size (GTK_WINDOW (private->trace_info_window), 450, 800);        } else {            gtk_widget_set_size_request (GTK_WIDGET (private->trace_info_window), 450, root_height * 0.8);            gtk_window_set_default_size (GTK_WINDOW (private->trace_info_window), 450, root_height * 0.8);        }        gtk_window_set_modal (GTK_WINDOW (private->trace_info_window), FALSE);        gtk_window_set_title (GTK_WINDOW (private->trace_info_window), _("Trace info"));        gtk_window_set_transient_for (GTK_WINDOW (private->trace_info_window),                                      GTK_WINDOW (private->data_window));        gtk_window_set_resizable (GTK_WINDOW (private->trace_info_window), TRUE);        private->trace_info_frame = gtk_frame_new (NULL);        gtk_container_add (GTK_CONTAINER (private->trace_info_window), private->trace_info_frame);        private->trace_info_scrolled = gtk_scrolled_window_new (NULL, NULL);        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (private->trace_info_scrolled), GTK_SHADOW_IN);        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (private->trace_info_scrolled),                                        GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);        gtk_container_add (GTK_CONTAINER (private->trace_info_frame), private->trace_info_scrolled);        gtk_container_add (GTK_CONTAINER (private->trace_info_scrolled),                           g_segy_trace_info_get_main_widget (private->trace_info));        g_segy_trace_info_set_fields_names (private->trace_info,                                            g_segy_seismic_accessor_get_trace_header_fields_names (private->seismic_accessor),                                            g_segy_seismic_accessor_get_trace_header_fields_desc (private->seismic_accessor));        gtk_signal_connect (GTK_OBJECT (private->trace_info_window), "delete_event",                            GTK_SIGNAL_FUNC (g_segy_data_view_magnify_close_handler),                            (gpointer)self);        gtk_widget_show_all (private->trace_info_frame);        gtk_window_group_add_window (private->window_group, GTK_WINDOW (private->trace_info_window));        gsegy_view_set_window_icon (GTK_WINDOW (private->trace_info_window));    }    return private->trace_info_window;}static void g_segy_data_view_hightlight_area_start_handler (GObject *gobject, GParamSpec *arg1,                                                            gpointer user_data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (user_data));    if (FALSE == private->show_trace_info)        return;    gdouble hlight_start;    g_object_get (G_OBJECT (private->seis_view_gl), arg1->name, &hlight_start, NULL);    if (private->trace_header_chunk) {        g_string_chunk_free (private->trace_header_chunk);        private->trace_header_chunk = NULL;    }    if (private->trace_header_labels) {        g_ptr_array_free (private->trace_header_labels, TRUE);        private->trace_header_labels = NULL;    }    if (hlight_start < 0) {        if (private->trace_info_window) {            if (private->seis_view_is_threaded)                gdk_threads_enter ();            gtk_widget_hide (private->trace_info_window);            if (private->seis_view_is_threaded)                gdk_threads_leave ();        }        return;    }    g_segy_seismic_accessor_get_labels_for_trace_header (private->seismic_accessor,                                                         private->current_ensemble,                                                         hlight_start * private->slow_num,                                                         &private->trace_header_chunk,                                                         &private->trace_header_labels);    if (private->seis_view_is_threaded)        gdk_threads_enter ();    if (private->trace_header_chunk) {        if (NULL == private->trace_info_window)            gtk_widget_show (g_segy_data_view_get_trace_info_window (G_SEGY_DATA_VIEW (user_data)));        g_segy_trace_info_set_fields_values (private->trace_info, private->trace_header_labels);        gtk_widget_show (private->trace_info_window);#ifdef DEBUG    } else {        g_printf ("Trace header values extraction failed.\n");#endif    }    if (private->seis_view_is_threaded)        gdk_threads_leave ();}static void g_segy_data_view_trace_info_scroll_up_handler (GSeisViewToolHighlight *hlight_tool, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gdouble hlight_start, new_hlight_start;    g_object_get (G_OBJECT (private->seis_view_gl), "highlight_area_start", &hlight_start, NULL);    new_hlight_start = hlight_start - 1.0 / (gdouble)private->slow_num;    if (new_hlight_start < 0)        return;    if (private->seis_view_is_threaded)        gdk_threads_enter ();    gtk_seis_view_gl_set_highlight_area (GTK_SEIS_VIEW_GL (private->seis_view_gl), new_hlight_start, 0.0);    gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->seis_view_gl));    if (private->seis_view_is_threaded)        gdk_threads_leave ();}static void g_segy_data_view_trace_info_scroll_down_handler (GSeisViewToolHighlight *hlight_tool, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gdouble hlight_start, new_hlight_start;    g_object_get (G_OBJECT (private->seis_view_gl), "highlight_area_start", &hlight_start, NULL);    new_hlight_start = hlight_start + 1.0 / (gdouble)private->slow_num;    if (new_hlight_start > 1.0)        return;    if (private->seis_view_is_threaded)        gdk_threads_enter ();    gtk_seis_view_gl_set_highlight_area (GTK_SEIS_VIEW_GL (private->seis_view_gl), new_hlight_start, 0.0);    gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->seis_view_gl));    if (private->seis_view_is_threaded)        gdk_threads_leave ();}static void g_segy_data_view_motion_tool_handler (GSEGYToolPanel *tool_panel, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    if (private->magnify_view_window)        gtk_widget_hide (private->magnify_view_window);    if (private->trace_info_window)        gtk_widget_hide (private->trace_info_window);    g_segy_view_scaling_enable_viewport_change (private->view_scaling, TRUE);    gtk_seis_view_gl_set_active_tool (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                      G_SEIS_VIEW_TOOL (private->motion_tool));    private->show_trace_info = FALSE;}static void g_segy_data_view_magnify_tool_handler (GSEGYToolPanel *tool_panel, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gboolean first_time = (NULL == private->magnify_view_window);    if (private->trace_info_window)        gtk_widget_hide (private->trace_info_window);    gtk_widget_show (g_segy_data_view_get_magnify_view_window (G_SEGY_DATA_VIEW (data)));    if (first_time)        g_segy_cursor_panel_set_aux_seis_view (private->cursor_panel,                                               GTK_SEIS_VIEW_GL (private->magnify_view_gl));    g_segy_view_scaling_enable_viewport_change (private->view_scaling, FALSE);    gtk_seis_view_gl_set_active_tool (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                      G_SEIS_VIEW_TOOL (private->magnify_tool));    private->show_trace_info = FALSE;}static void g_segy_data_view_highlight_tool_handler (GSEGYToolPanel *tool_panel, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -