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

📄 gsegycursorpanel.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 2 页
字号:
    gint32 slow_floor = (gint32)(slow_pos_data * private->slow_num - 0.5);    gint32 slow_ceil = slow_floor + 1;    gdouble slow_frac = slow_pos_data * private->slow_num - 0.5 - slow_floor;    if (slow_floor < 0) {        slow_floor = 0;        slow_ceil = 0;        slow_frac = 0;    }    if (slow_ceil >= private->slow_num) {        slow_ceil = private->slow_num - 1;        slow_frac = 0;    }    gint32 fast_floor = (gint32)(fast_pos_data * private->fast_num - 0.5);    gint32 fast_ceil = fast_floor + 1;    gdouble fast_frac = fast_pos_data * private->fast_num - 0.5 - fast_floor;    if (fast_floor < 0) {        fast_floor = 0;        fast_ceil = 0;        fast_frac = 0;    }    if (fast_ceil >= private->fast_num) {        fast_ceil = private->fast_num - 1;        fast_frac = 0;    }    gfloat *samples_to_use = private->real_amplitude || private->has_real_amplitudes ? private->samples : private->samples_display;    gfloat sample_a = samples_to_use[slow_floor * private->fast_num + fast_floor] +                      (samples_to_use[slow_floor * private->fast_num + fast_ceil] -                       samples_to_use[slow_floor * private->fast_num + fast_floor]) * fast_frac;    gfloat sample_b = samples_to_use[slow_ceil * private->fast_num + fast_floor] +                      (samples_to_use[slow_ceil * private->fast_num + fast_ceil] -                       samples_to_use[slow_ceil * private->fast_num + fast_floor]) * fast_frac;    gfloat sample = sample_a + (sample_b - sample_a) * slow_frac;    gfloat z_position = (fast_pos_data * private->fast_num - 0.5) * private->sample_interval;    guint32 trace_index = (guint32)(slow_pos_data * private->slow_num);    if (private->seis_view_is_threaded)        gdk_threads_enter ();    g_snprintf (gbuffer, G_ASCII_DTOSTR_BUF_SIZE, "%.3f", sample);    gtk_label_set_text (GTK_LABEL (private->amp_value_label), gbuffer);    g_snprintf (gbuffer, G_ASCII_DTOSTR_BUF_SIZE, "%.3f", z_position);    gtk_label_set_text (GTK_LABEL (private->z_value_label), gbuffer);    if (private->field1_id) {        g_segy_seismic_accessor_get_label_for_second_level (private->seismic_accessor, private->field1_id,                                                            private->current_ensemble, trace_index,                                                            gbuffer, G_ASCII_DTOSTR_BUF_SIZE);        gtk_label_set_text (GTK_LABEL (private->field1_value_label), gbuffer);    }    if (private->field2_id && private->field2_id != private->field1_id) {        g_segy_seismic_accessor_get_label_for_second_level (private->seismic_accessor, private->field2_id,                                                            private->current_ensemble, trace_index,                                                            gbuffer, G_ASCII_DTOSTR_BUF_SIZE);        gtk_label_set_text (GTK_LABEL (private->field2_value_label), gbuffer);    }    gdk_flush ();    if (private->seis_view_is_threaded)        gdk_threads_leave ();}static void g_segy_cursor_pointer_leave_handler (GtkSeisViewGl *seis_view, gpointer data) {    GSEGYCursorPanel *self = G_SEGY_CURSOR_PANEL (data);    GSEGYCursorPanelPrivate *private = G_SEGY_CURSOR_PANEL_GET_PRIVATE (self);    if (private->seis_view_is_threaded)        gdk_threads_enter ();    gtk_label_set_text (GTK_LABEL (private->amp_value_label), "");    gtk_label_set_text (GTK_LABEL (private->z_value_label), "");    gtk_label_set_text (GTK_LABEL (private->field1_value_label), "");    gtk_label_set_text (GTK_LABEL (private->field2_value_label), "");    gdk_flush ();    if (private->seis_view_is_threaded)        gdk_threads_leave ();}GtkWidget* g_segy_cursor_panel_get_main_widget (GSEGYCursorPanel *self) {    GSEGYCursorPanelPrivate *private = G_SEGY_CURSOR_PANEL_GET_PRIVATE (self);    if (NULL == private->frame) {        private->frame = gtk_frame_new (NULL);        gtk_container_set_border_width (GTK_CONTAINER (private->frame), 0);        private->hpaned = gtk_hpaned_new ();        gtk_container_set_border_width (GTK_CONTAINER (private->hpaned), 2);        gtk_container_add (GTK_CONTAINER (private->frame), private->hpaned);        private->vbox1 = gtk_vbox_new (TRUE, 0);        gtk_paned_pack1 (GTK_PANED (private->hpaned), private->vbox1, FALSE, FALSE);        private->table1 = gtk_table_new (1, 2, FALSE);        gtk_container_set_border_width (GTK_CONTAINER (private->table1), 1);        gtk_table_set_row_spacings (GTK_TABLE (private->table1), 0);        gtk_table_set_col_spacings (GTK_TABLE (private->table1), 3);        gtk_box_pack_start (GTK_BOX (private->vbox1), private->table1, TRUE, TRUE, 0);        private->z_label = gtk_label_new (_("Z:"));        gtk_misc_set_alignment (GTK_MISC (private->z_label), 0, 1);        gtk_table_attach (GTK_TABLE (private->table1), private->z_label, 0, 1, 0, 1, 0, 0, 0, 0);        private->z_value_label = gtk_label_new ("0");        gtk_misc_set_alignment (GTK_MISC (private->z_value_label), 1, 1);        gtk_table_attach (GTK_TABLE (private->table1), private->z_value_label, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0);        private->table2 = gtk_table_new (1, 2, FALSE);        gtk_container_set_border_width (GTK_CONTAINER (private->table2), 1);        gtk_table_set_row_spacings (GTK_TABLE (private->table2), 0);        gtk_table_set_col_spacings (GTK_TABLE (private->table2), 3);        gtk_box_pack_start (GTK_BOX (private->vbox1), private->table2, TRUE, TRUE, 0);        private->amp_label = gtk_label_new (_("A:"));        gtk_misc_set_alignment (GTK_MISC (private->amp_label), 0, 1);        gtk_table_attach (GTK_TABLE (private->table2), private->amp_label, 0, 1, 1, 2, 0, 0, 0, 0);        private->amp_value_label = gtk_label_new ("0");        gtk_misc_set_alignment (GTK_MISC (private->amp_value_label), 1, 1);        gtk_table_attach (GTK_TABLE (private->table2), private->amp_value_label, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0);        private->vbox2 = gtk_vbox_new (TRUE, 0);        gtk_paned_pack2 (GTK_PANED (private->hpaned), private->vbox2, FALSE, FALSE);        private->table3 = gtk_table_new (1, 2, FALSE);        gtk_container_set_border_width (GTK_CONTAINER (private->table3), 1);        gtk_table_set_row_spacings (GTK_TABLE (private->table3), 0);        gtk_table_set_col_spacings (GTK_TABLE (private->table3), 3);        gtk_box_pack_start (GTK_BOX (private->vbox2), private->table3, TRUE, TRUE, 0);        private->field1_label = gtk_label_new ("SourceX:");        gtk_misc_set_alignment (GTK_MISC (private->field1_label), 0, 1);        gtk_table_attach (GTK_TABLE (private->table3), private->field1_label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0);        private->field1_value_label = gtk_label_new ("0");        gtk_misc_set_alignment (GTK_MISC (private->field1_value_label), 1, 1);        gtk_table_attach (GTK_TABLE (private->table3), private->field1_value_label, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0);        private->table4 = gtk_table_new (1, 2, FALSE);        gtk_container_set_border_width (GTK_CONTAINER (private->table4), 1);        gtk_table_set_row_spacings (GTK_TABLE (private->table4), 0);        gtk_table_set_col_spacings (GTK_TABLE (private->table4), 3);        gtk_box_pack_start (GTK_BOX (private->vbox2), private->table4, TRUE, TRUE, 0);        private->field2_label = gtk_label_new ("SourceY:");        gtk_misc_set_alignment (GTK_MISC (private->field2_label), 0, 1);        gtk_table_attach (GTK_TABLE (private->table4), private->field2_label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0);        private->field2_value_label = gtk_label_new ("0");        gtk_misc_set_alignment (GTK_MISC (private->field2_value_label), 1, 1);        gtk_table_attach (GTK_TABLE (private->table4), private->field2_value_label, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0);        gtk_paned_set_position (GTK_PANED (private->hpaned), 0);        gtk_widget_show_all (private->frame);        g_segy_cursor_panel_set_fields_ids (self, private->field1_id, private->field2_id);    }    return private->frame;}void g_segy_cursor_panel_set_aux_seis_view (GSEGYCursorPanel *self, GtkSeisViewGl *aux_seis_view) {    GSEGYCursorPanelPrivate *private = G_SEGY_CURSOR_PANEL_GET_PRIVATE (self);    if (private->aux_seis_view) {        g_signal_handler_disconnect (G_OBJECT (private->aux_seis_view), private->aux_pointer_position_signal_id);        g_signal_handler_disconnect (G_OBJECT (private->aux_seis_view), private->aux_pointer_leave_signal_id);        g_object_unref (G_OBJECT (private->aux_seis_view));    }    private->aux_seis_view = aux_seis_view;    private->aux_pointer_position_signal_id = 0;    private->aux_pointer_leave_signal_id = 0;    if (private->aux_seis_view) {        g_object_ref (G_OBJECT (private->aux_seis_view));        private->aux_pointer_position_signal_id = g_signal_connect (G_OBJECT (private->aux_seis_view), "pointer_position",                                                                    (GCallback)g_segy_cursor_pointer_position_handler,                                                                    (gpointer)self);        private->aux_pointer_leave_signal_id = g_signal_connect (G_OBJECT (private->aux_seis_view), "pointer_leave",                                                                 (GCallback)g_segy_cursor_pointer_leave_handler,                                                                 (gpointer)self);    }}GSEGYCursorPanel* g_segy_cursor_panel_new (GtkSeisViewGl *seis_view, GSEGYSeismicAccessor *seismic_accessor) {    GSEGYCursorPanel *new_cursor_panel = G_SEGY_CURSOR_PANEL (g_object_new (G_SEGY_TYPE_CURSOR_PANEL, NULL));    GSEGYCursorPanelPrivate *private = G_SEGY_CURSOR_PANEL_GET_PRIVATE (new_cursor_panel);    private->seis_view = seis_view;    private->seismic_accessor = seismic_accessor;    g_object_ref (G_OBJECT (private->seis_view));    g_object_ref (G_OBJECT (private->seismic_accessor));    private->sample_interval = g_segy_seismic_accessor_get_sample_interval (private->seismic_accessor) / 1000.0;    private->sort_labels = g_segy_seismic_accessor_get_sorting_fields_names (private->seismic_accessor);    private->pointer_position_signal_id = g_signal_connect (G_OBJECT (private->seis_view), "pointer_position",                                                            (GCallback)g_segy_cursor_pointer_position_handler,                                                            (gpointer)new_cursor_panel);    private->pointer_leave_signal_id = g_signal_connect (G_OBJECT (private->seis_view), "pointer_leave",                                                          (GCallback)g_segy_cursor_pointer_leave_handler,                                                          (gpointer)new_cursor_panel);    private->seis_view_is_threaded = gtk_seis_view_gl_is_threaded (private->seis_view);    return new_cursor_panel;}

⌨️ 快捷键说明

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