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

📄 gseisviewaxistraces.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 3 页
字号:
        } else if (private->str_values) {            guint i, length, max_length = 0, max_index = 0;            gchar *label;            for (i = 0; i < private->str_values->len; i++) {                label = (gchar*)g_ptr_array_index (private->str_values, i);                length = 0;                while (*(label++))                    length++;                if (length > max_length) {                    max_length = length;                    max_index = i;                }            }            private->label_max_strlen = max_length;            layout = gtk_widget_create_pango_layout (seis_view_gl, (const gchar*)g_ptr_array_index (private->str_values, max_index));            pango_layout_set_font_description (layout, private->font_desc);            pango_layout_get_pixel_size (layout, &private->text_width_screen, &private->text_height_screen);            g_object_unref (layout);        }        G_SEIS_VIEW_AXIS (axis)->size_pixels = private->text_height_screen * 1.775;    }    private->redisplay = TRUE;    if (private->rendering_mutex)        g_mutex_unlock (private->rendering_mutex);}enum {    PROP_0,    PROP_VALUES,    PROP_STR_VALUES,    PROP_FORMAT,    PROP_PRECISION,    PROP_FONT,    PROP_FG_COLOR,    PROP_BG_COLOR};static void g_seis_view_axis_traces_set_property (GObject *object, guint prop_id,                                                  const GValue *value, GParamSpec *pspec) {    GSeisViewAxisTraces *self = G_SEIS_VIEW_AXIS_TRACES (object);    GSeisViewAxisTracesPrivate *private = G_SEIS_VIEW_AXIS_TRACES_GET_PRIVATE (self);    switch (prop_id) {        case PROP_VALUES:            g_seis_view_axis_traces_set_values (self, private->format, (GArray*)g_value_get_pointer (value));            break;        case PROP_STR_VALUES:            g_seis_view_axis_traces_set_str_values (self, (GPtrArray*)g_value_get_pointer (value));            break;        case PROP_FORMAT:            private->format = g_value_get_enum (value);            g_object_notify (object, "format");            break;        case PROP_PRECISION:            g_seis_view_axis_traces_set_precision (self, g_value_get_uchar (value));            break;        case PROP_FONT:            g_seis_view_axis_traces_set_font (self, g_value_get_string (value));            break;        case PROP_FG_COLOR:            g_seis_view_axis_traces_set_fg_color (self, (GSeisColor*)g_value_get_boxed (value));            break;        case PROP_BG_COLOR:            g_seis_view_axis_traces_set_bg_color (self, (GSeisColor*)g_value_get_boxed (value));            break;        default:            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);            break;    }}static void g_seis_view_axis_traces_get_property (GObject *object, guint prop_id,                                                  GValue *value, GParamSpec *pspec) {    GSeisViewAxisTraces *self = G_SEIS_VIEW_AXIS_TRACES (object);    GSeisViewAxisTracesPrivate *private = G_SEIS_VIEW_AXIS_TRACES_GET_PRIVATE (self);    switch (prop_id) {        case PROP_VALUES:            g_value_set_pointer (value, private->values);        case PROP_STR_VALUES:            g_value_set_pointer (value, private->str_values);        case PROP_FORMAT:            g_value_set_enum (value, private->format);            break;        case PROP_PRECISION:            g_value_set_uchar (value, private->precision);            break;        case PROP_FONT:            g_value_set_string (value, private->font_name);            break;        case PROP_FG_COLOR:            g_value_set_boxed (value, &private->fg_color);            break;        case PROP_BG_COLOR:            g_value_set_boxed (value, &private->bg_color);            break;        default:            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);            break;    }}static GType g_seis_view_axis_traces_format_get_type (void) {    static GType etype = 0;    if (etype == 0) {        static const GEnumValue values[] = {           { G_SEIS_VIEW_AXIS_TRACES_INTEGER, "G_SEIS_VIEW_AXIS_TRACES_INTEGER", "integer" },           { G_SEIS_VIEW_AXIS_TRACES_FLOAT, "G_SEIS_VIEW_AXIS_TRACES_FLOAT", "float" },           { 0, NULL, NULL }        };        etype = g_enum_register_static ("GSeisViewAxisTracesFormat", values);    }    return etype;}static void g_seis_view_axis_traces_init (GSeisViewAxisTraces *self) {    GSeisViewAxisTracesPrivate *private = G_SEIS_VIEW_AXIS_TRACES_GET_PRIVATE (self);    private->format = G_SEIS_VIEW_AXIS_TRACES_FLOAT;    private->label_max_strlen = 0;    private->precision = 2;    private->values = NULL;    private->fg_color.red = G_MAXUINT16;    private->fg_color.green = G_MAXUINT16;    private->fg_color.blue = G_MAXUINT16;    private->bg_color.red = 0;    private->bg_color.green = 0;    private->bg_color.blue = 0;    private->font_name = NULL;    private->font_list_base = 0;    private->font_list_start = 32;    private->font_list_end = 96;    private->display_list_base = 0;    private->font_desc = NULL;    private->text_width_screen = 0;    private->text_height_screen = 0;    private->rebuild_font = TRUE;    private->redisplay = TRUE;    (G_SEIS_VIEW_AXIS (self))->type = G_SEIS_VIEW_AXIS_TOP;    (G_SEIS_VIEW_AXIS (self))->size_pixels = 35;    private->is_threaded = FALSE;    private->rendering_mutex = NULL;#ifdef DEBUG    g_print ("<GSeisViewAxisTraces is inited>\n");#endif}static void g_seis_view_axis_traces_finalize (GObject *object) {    GSeisViewAxisTracesPrivate *private = G_SEIS_VIEW_AXIS_TRACES_GET_PRIVATE (G_SEIS_VIEW_AXIS_TRACES (object));    if (private->font_name)        g_free (private->font_name);    if (private->font_desc)        pango_font_description_free (private->font_desc);    if (private->values)        g_array_free (private->values, TRUE);    if (private->rendering_mutex)        g_mutex_free (private->rendering_mutex);#ifdef DEBUG    g_print ("<GSeisViewAxisTraces is finalized>\n");#endif    if (G_OBJECT_CLASS (g_seis_view_axis_traces_parent_class)->finalize)        G_OBJECT_CLASS (g_seis_view_axis_traces_parent_class)->finalize (object);}static void g_seis_view_axis_traces_class_init (GSeisViewAxisTracesClass *klass) {    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);    GSeisViewAxisClass *axis_class = G_SEIS_VIEW_AXIS_CLASS (klass);    gobject_class->finalize = g_seis_view_axis_traces_finalize;    gobject_class->set_property = g_seis_view_axis_traces_set_property;    gobject_class->get_property = g_seis_view_axis_traces_get_property;    g_type_class_add_private (klass, sizeof (GSeisViewAxisTracesPrivate));    axis_class->view_attach_notify = g_seis_view_axis_traces_attach_notify;    axis_class->view_detach_notify = g_seis_view_axis_traces_detach_notify;    axis_class->view_data_viewport_change = g_seis_view_axis_traces_data_viewport_change;    axis_class->view_redraw_event = g_seis_view_axis_traces_redraw_event;    axis_class->view_resize_event = g_seis_view_axis_traces_resize_event;    axis_class->axis_reshape = g_seis_view_axis_traces_reshape;    g_object_class_install_property (gobject_class,                                     PROP_VALUES,                                     g_param_spec_pointer ("values", "Values",                                     "Labels in integer/float format",                                     G_PARAM_READWRITE));    g_object_class_install_property (gobject_class,                                     PROP_STR_VALUES,                                     g_param_spec_pointer ("str_values", "StrValues",                                     "Labels in string format",                                     G_PARAM_READWRITE));    g_object_class_install_property (gobject_class,                                     PROP_FORMAT,                                     g_param_spec_enum ("format", "Format",                                     "Tick labels format",                                     g_seis_view_axis_traces_format_get_type (),                                     G_SEIS_VIEW_AXIS_TRACES_FLOAT,                                     G_PARAM_READWRITE));    g_object_class_install_property (gobject_class,                                     PROP_PRECISION,                                     g_param_spec_uchar ("precision", "Precision",                                     "Tick labels precision (number of digits in fractinal part)",                                     0,                                     6,                                     2,                                     G_PARAM_READWRITE));    g_object_class_install_property (gobject_class,                                     PROP_FONT,                                     g_param_spec_string ("font", "Font",                                     "Font to use in labels",#ifdef WIN32                                     "Tahoma 10",#else                                     "Helvetica 10",#endif                                     G_PARAM_READWRITE));    g_object_class_install_property (gobject_class,                                     PROP_FG_COLOR,                                     g_param_spec_boxed ("fg_color", "ForegroundColor",                                     "Foreground color of the axis",                                     G_TYPE_SEIS_COLOR,                                     G_PARAM_READWRITE));    g_object_class_install_property (gobject_class,                                     PROP_BG_COLOR,                                     g_param_spec_boxed ("bg_color", "BackgroundColor",                                     "Background color of the axis",                                     G_TYPE_SEIS_COLOR,                                     G_PARAM_READWRITE));#ifdef DEBUG    g_print ("<GSeisViewAxisTraces class is inited>\n");#endif}GSeisViewAxisTraces* g_seis_view_axis_traces_new (void) {    return g_object_new (G_SEIS_TYPE_VIEW_AXIS_TRACES, NULL);}

⌨️ 快捷键说明

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