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

📄 gseisviewtoolmagnify.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 3 页
字号:
                new_rect_element = G_SEIS_VIEW_TOOL_RECT_LL;            } else if (data_visibility->fast_pointer_pos_data > private->fast_start_data &&                       data_visibility->fast_pointer_pos_data < private->fast_end_data) {                new_cursor = private->vert_scale_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_VL;            }        } else if (vert_right_dist < slow_epsilon) {            if (upper_horiz_dist < fast_epsilon) {                new_cursor = private->ur_angle_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_UR;            } else if (lower_horiz_dist < fast_epsilon) {                new_cursor = private->lr_angle_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_LR;            } else if (data_visibility->fast_pointer_pos_data > private->fast_start_data &&                       data_visibility->fast_pointer_pos_data < private->fast_end_data) {                new_cursor = private->vert_scale_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_VR;            }        } else if (data_visibility->slow_pointer_pos_data > private->slow_start_data &&                   data_visibility->slow_pointer_pos_data < private->slow_end_data &&                   data_visibility->fast_pointer_pos_data > private->fast_start_data &&                   data_visibility->fast_pointer_pos_data < private->fast_end_data) {            new_cursor = private->fleur_cursor;            new_rect_element = G_SEIS_VIEW_TOOL_RECT_INSIDE;        }        if (new_cursor != private->current_cursor) {            private->current_cursor = new_cursor;            private->rect_element = new_rect_element;            if (private->is_threaded)                gdk_threads_enter ();            gdk_window_set_cursor (seis_view_gl->window, new_cursor);            gdk_flush ();            if (private->is_threaded)                gdk_threads_leave ();        }    }}static void g_seis_view_tool_redraw_event_int (GSeisViewTool *tool, GtkWidget *seis_view_gl,                                               GSeisViewDataVisibility *data_visibility) {    GSeisViewToolMagnifyPrivate *private = G_SEIS_VIEW_TOOL_MAGNIFY_GET_PRIVATE (G_SEIS_VIEW_TOOL (tool));    if (private->has_rectangle)        g_seis_view_tool_magnify_draw_rect (tool, seis_view_gl, data_visibility, TRUE);}static void g_seis_view_tool_magnify_init (GSeisViewToolMagnify *self) {    GSeisViewToolMagnifyPrivate *private = G_SEIS_VIEW_TOOL_MAGNIFY_GET_PRIVATE (self);    (G_SEIS_VIEW_TOOL (self))->event_mask |= G_SEIS_VIEW_TOOL_MOTION_EVENT |                                             G_SEIS_VIEW_TOOL_BUTTON_EVENT |                                             G_SEIS_VIEW_TOOL_SCROLL_EVENT |                                             G_SEIS_VIEW_TOOL_REDRAW_EVENT;    (G_SEIS_VIEW_TOOL (self))->show_cross = TRUE;    private->slow_start_data = 0.375;    private->slow_end_data = 0.625;    private->fast_start_data = 0.375;    private->fast_end_data = 0.625;    private->dragging = FALSE;    private->has_rectangle = TRUE;    private->horiz_scale_cursor = gdk_cursor_new (GDK_SB_V_DOUBLE_ARROW);    private->vert_scale_cursor = gdk_cursor_new (GDK_SB_H_DOUBLE_ARROW);    private->ur_angle_cursor = gdk_cursor_new (GDK_UR_ANGLE);    private->ul_angle_cursor = gdk_cursor_new (GDK_UL_ANGLE);    private->lr_angle_cursor = gdk_cursor_new (GDK_LR_ANGLE);    private->ll_angle_cursor = gdk_cursor_new (GDK_LL_ANGLE);    private->fleur_cursor = gdk_cursor_new (GDK_FLEUR);    private->current_cursor = NULL;    private->rect_element = G_SEIS_VIEW_TOOL_RECT_OUTSIDE;    private->is_threaded = FALSE;    private->data_mutex = NULL;#ifdef DEBUG    g_print ("<GSeisViewToolMagnify is inited>\n");#endif}static void g_seis_view_tool_magnify_finalize (GObject *object) {    GSeisViewToolMagnifyPrivate *private = G_SEIS_VIEW_TOOL_MAGNIFY_GET_PRIVATE (G_SEIS_VIEW_TOOL_MAGNIFY (object));    if (private->horiz_scale_cursor)        gdk_cursor_unref (private->horiz_scale_cursor);    if (private->vert_scale_cursor)        gdk_cursor_unref (private->vert_scale_cursor);    if (private->ur_angle_cursor)        gdk_cursor_unref (private->ur_angle_cursor);    if (private->ul_angle_cursor)        gdk_cursor_unref (private->ul_angle_cursor);    if (private->lr_angle_cursor)        gdk_cursor_unref (private->lr_angle_cursor);    if (private->ll_angle_cursor)        gdk_cursor_unref (private->ll_angle_cursor);    if (private->fleur_cursor)        gdk_cursor_unref (private->fleur_cursor);    if (private->data_mutex)        g_mutex_free (private->data_mutex);#ifdef DEBUG    g_print ("<GSeisViewToolMagnify is finalized>\n");#endif    if (G_OBJECT_CLASS (g_seis_view_tool_magnify_parent_class)->finalize)        G_OBJECT_CLASS (g_seis_view_tool_magnify_parent_class)->finalize (object);}enum {    PROP_0,    PROP_SLOW_START,    PROP_SLOW_END,    PROP_FAST_START,    PROP_FAST_END   };static void g_seis_view_tool_magnify_set_property (GObject *object, guint prop_id,                                                   const GValue *value, GParamSpec *pspec) {    GSeisViewToolMagnify *self = G_SEIS_VIEW_TOOL_MAGNIFY (object);    GSeisViewToolMagnifyPrivate *private = G_SEIS_VIEW_TOOL_MAGNIFY_GET_PRIVATE (self);    if (private->data_mutex)        g_mutex_lock (private->data_mutex);    switch (prop_id) {        case PROP_SLOW_START:            private->slow_start_data =  g_value_get_double (value);            g_object_notify (object, "slow_start");            break;        case PROP_SLOW_END:            private->slow_end_data =  g_value_get_double (value);            g_object_notify (object, "slow_end");            break;        case PROP_FAST_START:            private->fast_start_data =  g_value_get_double (value);            g_object_notify (object, "fast_start");            break;        case PROP_FAST_END:            private->fast_end_data =  g_value_get_double (value);            g_object_notify (object, "fast_end");            break;        default:            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);            break;    }    if (private->data_mutex)        g_mutex_unlock (private->data_mutex);}static void g_seis_view_tool_magnify_get_property (GObject *object, guint prop_id,                                                   GValue *value, GParamSpec *pspec) {    GSeisViewToolMagnify *self = G_SEIS_VIEW_TOOL_MAGNIFY (object);    GSeisViewToolMagnifyPrivate *private = G_SEIS_VIEW_TOOL_MAGNIFY_GET_PRIVATE (self);    if (private->data_mutex)        g_mutex_lock (private->data_mutex);    switch (prop_id) {        case PROP_SLOW_START:            g_value_set_double (value, private->slow_start_data);            break;        case PROP_SLOW_END:            g_value_set_double (value, private->slow_end_data);            break;        case PROP_FAST_START:            g_value_set_double (value, private->fast_start_data);            break;        case PROP_FAST_END:            g_value_set_double (value, private->fast_end_data);            break;        default:            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);            break;    }    if (private->data_mutex)        g_mutex_unlock (private->data_mutex);}static void g_seis_view_tool_magnify_class_init (GSeisViewToolMagnifyClass *klass) {    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);    GSeisViewToolClass *tool_class = G_SEIS_VIEW_TOOL_CLASS (klass);    gobject_class->finalize = g_seis_view_tool_magnify_finalize;    gobject_class->set_property = g_seis_view_tool_magnify_set_property;    gobject_class->get_property = g_seis_view_tool_magnify_get_property;    g_type_class_add_private (klass, sizeof (GSeisViewToolMagnifyPrivate));    tool_class->view_attach_notify = g_seis_view_tool_attach_notify_int;    tool_class->view_detach_notify = g_seis_view_tool_detach_notify_int;    tool_class->view_button_event = g_seis_view_tool_button_event_int;    tool_class->view_scroll_event = g_seis_view_tool_scroll_event_int;    tool_class->view_motion_event = g_seis_view_tool_motion_event_int;    tool_class->view_redraw_event = g_seis_view_tool_redraw_event_int;    klass->magnify_viewport = NULL;    klass->magnify_viewport_id = g_signal_new ("magnify_viewport",                                               G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)),                                               G_SIGNAL_RUN_LAST,                                               G_STRUCT_OFFSET (GSeisViewToolMagnifyClass, magnify_viewport),                                               NULL, NULL,                                               gtkseisviewgl_marshal_VOID__DOUBLE_DOUBLE_DOUBLE_DOUBLE,                                               G_TYPE_NONE, 4,                                               G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE);    g_object_class_install_property (gobject_class,                                     PROP_SLOW_START,                                     g_param_spec_double ("slow_start", "SlowStart",                                     "Start position of the magnify area in the data space [0; 1] (slow dimension)",                                     0, 1, 0.375,                                     G_PARAM_READWRITE));    g_object_class_install_property (gobject_class,                                     PROP_SLOW_END,                                     g_param_spec_double ("slow_end", "SlowEnd",                                     "End position of the magnify area in the data space [0; 1] (slow dimesnion)",                                     0, 1, 0.625,                                     G_PARAM_READWRITE));    g_object_class_install_property (gobject_class,                                     PROP_FAST_START,                                     g_param_spec_double ("fast_start", "FastStart",                                     "Start position of the magnify area in the data space [0; 1] (fast dimension)",                                     0, 1, 0.375,                                     G_PARAM_READWRITE));    g_object_class_install_property (gobject_class,                                     PROP_FAST_END,                                     g_param_spec_double ("fast_end", "FastEnd",                                     "End position of the magnify area in the data space [0; 1] (fast dimesnion)",                                     0, 1, 0.625,                                     G_PARAM_READWRITE));#ifdef DEBUG    g_print ("<GSeisViewToolMagnify class is inited>\n");#endif}GSeisViewToolMagnify* g_seis_view_tool_magnify_new () {    return g_object_new (G_SEIS_TYPE_VIEW_TOOL_MAGNIFY, NULL);}

⌨️ 快捷键说明

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