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

📄 gsegyproperties.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 4 页
字号:
/*  * GTKSEISVIEWUI - Library of interface elements for GSEGYView * * Copyright (C) 2006 Vladimir Bashkardin * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more av. * * You should have received a copy of the GNU General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * * Author:  Vladimir Bashkardin  <vovizmus@users.sourceforge.net> */#include <gtkseisviewgl/gseisviewaxisz.h>#include <gtkseisviewgl/gseisviewaxistraces.h>#include "gsegyfileaux.h"#include "gsegyproperties.h"G_DEFINE_TYPE (GSEGYProperties, g_segy_properties, G_TYPE_OBJECT)#define G_SEGY_PROPERTIES_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), G_SEGY_TYPE_PROPERTIES, GSEGYPropertiesPrivate))typedef struct _GSEGYPropertiesPrivate GSEGYPropertiesPrivate;struct _GSEGYPropertiesPrivate {    GtkWidget     *window;    GtkWidget     *vbox;    GtkWidget     *notebook;    GtkWidget     *axes_vbox;    GtkWidget     *data_vbox;    GtkSizeGroup  *axes_size_group;    GtkWidget     *common_frame;    GtkWidget     *common_table;    GtkWidget     *axes_font_label;    GtkWidget     *axes_fg_label;    GtkWidget     *axes_bg_label;    GtkWidget     *axes_font_button;    GtkWidget     *axes_fg_button;    GtkWidget     *axes_bg_button;    GtkWidget     *axis_frame;    GtkWidget     *axes_combo;    GtkWidget     *axis_vbox;    GtkWidget     *axis_vboxs[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_show_toggle[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_hbox[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_label[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_sort_combo[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_precision_spin[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_integer_radio[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_float_radio[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_table[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_font_label[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_font_button[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_fg_label[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_fg_button[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_bg_label[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkWidget     *axis_bg_button[G_SEIS_VIEW_AXES_TYPES_NUM];    guint          active_axis;    gchar         *default_font;    GdkColor       axes_fg_color;    GdkColor       axes_bg_color;    GSeisViewAxis *axis[G_SEIS_VIEW_AXES_TYPES_NUM];    gboolean       axis_is_shown[G_SEIS_VIEW_AXES_TYPES_NUM];    gboolean       axis_is_float[G_SEIS_VIEW_AXES_TYPES_NUM];    guint8         axis_precision[G_SEIS_VIEW_AXES_TYPES_NUM];    GdkColor       axis_fg_color[G_SEIS_VIEW_AXES_TYPES_NUM];    GdkColor       axis_bg_color[G_SEIS_VIEW_AXES_TYPES_NUM];    gint16         axis_label_id[G_SEIS_VIEW_AXES_TYPES_NUM];    GStringChunk  *axis_labels_chunk[G_SEIS_VIEW_AXES_TYPES_NUM];    GPtrArray     *axis_labels[G_SEIS_VIEW_AXES_TYPES_NUM];    GtkSizeGroup  *data_size_group;    GtkWidget     *data_table;    GtkWidget     *data_colors_frame;    GtkWidget     *trace_label;    GtkWidget     *underlayer_label;    GtkWidget     *highlight_label;    GtkWidget     *trace_button;    GtkWidget     *underlayer_button;    GtkWidget     *highlight_button;    GdkColor       trace_color;    GdkColor       underlayer_color;    GdkColor       highlight_color;    GtkWidget     *data_cursor_frame;    GtkWidget     *data_cursor_vbox;    GtkWidget     *show_cursor_toggle;    GtkWidget     *real_amplitude_toggle;    gboolean       show_cross;    gboolean       real_amplitude;    GtkWidget     *button_box;    GtkWidget     *close_button;    GtkSeisViewGl *seis_view;    GPtrArray     *sort_labels;    gint16         default_label_id;    guint          ensemble_index;    GSEGYCursorPanel     *cursor_panel;    GSEGYSeismicAccessor *seismic_accessor;};static void g_segy_properties_set_font (GSEGYProperties *self, GSeisViewAxisType axis_num) {    GSEGYPropertiesPrivate *private = G_SEGY_PROPERTIES_GET_PRIVATE (self);    guint i;    if (axis_num < G_SEIS_VIEW_AXES_TYPES_NUM) {        if (private->axis[axis_num]) {            if (private->axis_font_button[axis_num])                g_object_set (G_OBJECT (private->axis[axis_num]), "font",                              gtk_font_button_get_font_name (GTK_FONT_BUTTON (private->axis_font_button[axis_num])), NULL);            else                g_object_set (G_OBJECT (private->axis[axis_num]), "font", private->default_font, NULL);        }    } else {        for (i = 0; i < G_SEIS_VIEW_AXES_TYPES_NUM; i++) {            if (private->axis[i]) {                if (private->axis_font_button[i])                    g_object_set (G_OBJECT (private->axis[i]), "font",                                  gtk_font_button_get_font_name (GTK_FONT_BUTTON (private->axis_font_button[i])), NULL);                else                    g_object_set (G_OBJECT (private->axis[i]), "font", private->default_font, NULL);            }        }    }}static void g_segy_properties_set_format (GSEGYProperties *self, GSeisViewAxisType axis_num) {    GSEGYPropertiesPrivate *private = G_SEGY_PROPERTIES_GET_PRIVATE (self);    guint i;    if (axis_num < G_SEIS_VIEW_AXES_TYPES_NUM) {        if (private->axis[axis_num])            g_object_set (G_OBJECT (private->axis[axis_num]), "format",                          private->axis_is_float[axis_num], NULL);    } else {        for (i = 0; i < G_SEIS_VIEW_AXES_TYPES_NUM; i++) {            if (private->axis[i])                g_object_set (G_OBJECT (private->axis[i]), "format",                              private->axis_is_float[i], NULL);        }    }}static void g_segy_properties_set_precision (GSEGYProperties *self, GSeisViewAxisType axis_num) {    GSEGYPropertiesPrivate *private = G_SEGY_PROPERTIES_GET_PRIVATE (self);    guint i;    if (axis_num < G_SEIS_VIEW_AXES_TYPES_NUM) {        if (private->axis[axis_num])            g_object_set (G_OBJECT (private->axis[axis_num]), "precision",                          private->axis_precision[axis_num], NULL);    } else {        for (i = 0; i < G_SEIS_VIEW_AXES_TYPES_NUM; i++) {            if (private->axis[i])                g_object_set (G_OBJECT (private->axis[i]), "precision",                              private->axis_precision[i], NULL);        }    }}static void g_segy_properties_set_fg_color (GSEGYProperties *self, GSeisViewAxisType axis_num) {    GSEGYPropertiesPrivate *private = G_SEGY_PROPERTIES_GET_PRIVATE (self);    GSeisColor fg_color;    guint i;    if (axis_num < G_SEIS_VIEW_AXES_TYPES_NUM) {        if (private->axis[axis_num]) {            fg_color.red = private->axis_fg_color[axis_num].red;            fg_color.green = private->axis_fg_color[axis_num].green;            fg_color.blue = private->axis_fg_color[axis_num].blue;            g_object_set (G_OBJECT (private->axis[axis_num]), "fg_color", &fg_color, NULL);        }    } else {        for (i = 0; i < G_SEIS_VIEW_AXES_TYPES_NUM; i++) {            if (private->axis[i]) {                fg_color.red = private->axis_fg_color[i].red;                fg_color.green = private->axis_fg_color[i].green;                fg_color.blue = private->axis_fg_color[i].blue;                g_object_set (G_OBJECT (private->axis[i]), "fg_color", &fg_color, NULL);            }        }    }}static void g_segy_properties_set_bg_color (GSEGYProperties *self, GSeisViewAxisType axis_num) {    GSEGYPropertiesPrivate *private = G_SEGY_PROPERTIES_GET_PRIVATE (self);    GSeisColor bg_color;    guint i;    if (axis_num < G_SEIS_VIEW_AXES_TYPES_NUM) {        if (private->axis[axis_num]) {            bg_color.red = private->axis_bg_color[axis_num].red;            bg_color.green = private->axis_bg_color[axis_num].green;            bg_color.blue = private->axis_bg_color[axis_num].blue;            g_object_set (G_OBJECT (private->axis[axis_num]), "bg_color", &bg_color, NULL);        }    } else {        for (i = 0; i < G_SEIS_VIEW_AXES_TYPES_NUM; i++) {            if (private->axis[i]) {                bg_color.red = private->axis_bg_color[i].red;                bg_color.green = private->axis_bg_color[i].green;                bg_color.blue = private->axis_bg_color[i].blue;                g_object_set (G_OBJECT (private->axis[i]), "bg_color", &bg_color, NULL);            }        }    }}void g_segy_properties_change_ensemble (GSEGYProperties *self, guint ensemble_index,                                        guint32 number_of_samples, guint16 sample_interval) {    GSEGYPropertiesPrivate *private = G_SEGY_PROPERTIES_GET_PRIVATE (self);    gint i, j;    for (i = 0; i < G_SEIS_VIEW_AXES_TYPES_NUM; i++) {        if (NULL == private->axis_labels_chunk[i])            continue;        gboolean is_copy = FALSE;        for (j = i - 1; j >= 0; j--) {            if (private->axis_labels_chunk[i] == private->axis_labels_chunk[j]) {                is_copy = TRUE;                break;            }        }        if (FALSE == is_copy) {            g_string_chunk_free (private->axis_labels_chunk[i]);            g_ptr_array_free (private->axis_labels[i], TRUE);        }    }    for (i = 0; i < G_SEIS_VIEW_AXES_TYPES_NUM; i++) {         private->axis_labels_chunk[i] = NULL;         private->axis_labels[i] = NULL;    }    private->ensemble_index = ensemble_index;    g_segy_seismic_accessor_get_labels_for_second_level (private->seismic_accessor,                                                         ensemble_index, private->axis_label_id[G_SEIS_VIEW_AXIS_TOP] + 1,                                                         &private->axis_labels_chunk[G_SEIS_VIEW_AXIS_TOP],                                                         &private->axis_labels[G_SEIS_VIEW_AXIS_TOP]);    g_seis_view_axis_traces_set_str_values (G_SEIS_VIEW_AXIS_TRACES (private->axis[G_SEIS_VIEW_AXIS_TOP]),                                            private->axis_labels[G_SEIS_VIEW_AXIS_TOP]);    if (private->axis_label_id[G_SEIS_VIEW_AXIS_TOP] != private->axis_label_id[G_SEIS_VIEW_AXIS_BOTTOM])        g_segy_seismic_accessor_get_labels_for_second_level (private->seismic_accessor,                                                             ensemble_index, private->axis_label_id[G_SEIS_VIEW_AXIS_BOTTOM] + 1,                                                             &private->axis_labels_chunk[G_SEIS_VIEW_AXIS_BOTTOM],                                                             &private->axis_labels[G_SEIS_VIEW_AXIS_BOTTOM]);    else {        private->axis_labels_chunk[G_SEIS_VIEW_AXIS_BOTTOM] = private->axis_labels_chunk[G_SEIS_VIEW_AXIS_TOP];        private->axis_labels[G_SEIS_VIEW_AXIS_BOTTOM] = private->axis_labels[G_SEIS_VIEW_AXIS_TOP];    }    g_seis_view_axis_traces_set_str_values (G_SEIS_VIEW_AXIS_TRACES (private->axis[G_SEIS_VIEW_AXIS_BOTTOM]),                                            private->axis_labels[G_SEIS_VIEW_AXIS_BOTTOM]);    g_seis_view_axis_z_set_min_max (G_SEIS_VIEW_AXIS_Z (private->axis[G_SEIS_VIEW_AXIS_LEFT]),                                    0, sample_interval / 1000.0, number_of_samples);    g_seis_view_axis_z_set_min_max (G_SEIS_VIEW_AXIS_Z (private->axis[G_SEIS_VIEW_AXIS_RIGHT]),                                    0, sample_interval / 1000.0, number_of_samples);    for (i = 0; i < G_SEIS_VIEW_AXES_TYPES_NUM; i++) {        g_seis_view_axis_reshape (private->axis[i], GTK_WIDGET (private->seis_view));        if (private->axis_is_shown[i])            gtk_seis_view_gl_axis_refresh (private->seis_view, i);    }    if (gtk_seis_view_gl_has_real_amplitudes (GTK_SEIS_VIEW_GL (private->seis_view))) {        private->real_amplitude = TRUE;        if (private->real_amplitude_toggle) {            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->real_amplitude_toggle), TRUE);

⌨️ 快捷键说明

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