📄 gseisviewtoolmagnify.c
字号:
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 + -