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

📄 gseisviewtoolmagnify.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 3 页
字号:
        } else if (GDK_SCROLL_DOWN == event->direction) {            slow_size_data = (new_slow_end_data - new_slow_start_data) * zoom_rate;            fast_size_data = (new_fast_end_data - new_fast_start_data) * zoom_rate;        }        new_slow_start_data -= (private->slow_end_data - private->slow_start_data - slow_size_data) / 2.0;        new_slow_end_data += (private->slow_end_data - private->slow_start_data - slow_size_data) / 2.0;        new_fast_start_data -= (private->fast_end_data - private->fast_start_data - fast_size_data) / 2.0;        new_fast_end_data += (private->fast_end_data - private->fast_start_data - fast_size_data) / 2.0;        if (new_slow_start_data < 0)            new_slow_start_data = 0;        if (new_slow_end_data > data_visibility->slow_size_data)            new_slow_end_data = data_visibility->slow_size_data;        if (new_fast_start_data < 0)            new_fast_start_data = 0;        if (new_fast_end_data > data_visibility->fast_size_data)            new_fast_end_data = data_visibility->fast_size_data;        if (private->data_mutex)            g_mutex_lock (private->data_mutex);        gboolean slow_start_changed = (private->slow_start_data != new_slow_start_data);        gboolean slow_end_changed = (private->slow_end_data != new_slow_end_data);        gboolean fast_start_changed = (private->fast_start_data != new_fast_start_data);        gboolean fast_end_changed = (private->fast_end_data != new_fast_end_data);        private->slow_start_data = new_slow_start_data;        private->slow_end_data = new_slow_end_data;        private->fast_start_data = new_fast_start_data;        private->fast_end_data = new_fast_end_data;        if (private->data_mutex)            g_mutex_unlock (private->data_mutex);        if (slow_start_changed)            g_idle_add ((GSourceFunc)g_seis_view_tool_magnify_slow_start_notify_signal,                        (gpointer)G_SEIS_VIEW_TOOL_MAGNIFY (tool));        if (slow_end_changed)            g_idle_add ((GSourceFunc)g_seis_view_tool_magnify_slow_end_notify_signal,                        (gpointer)G_SEIS_VIEW_TOOL_MAGNIFY (tool));        if (fast_start_changed)            g_idle_add ((GSourceFunc)g_seis_view_tool_magnify_fast_start_notify_signal,                        (gpointer)G_SEIS_VIEW_TOOL_MAGNIFY (tool));        if (fast_end_changed)            g_idle_add ((GSourceFunc)g_seis_view_tool_magnify_fast_end_notify_signal,                        (gpointer)G_SEIS_VIEW_TOOL_MAGNIFY (tool));        g_idle_add ((GSourceFunc)g_seis_view_tool_magnify_viewport_signal, (gpointer)G_SEIS_VIEW_TOOL_MAGNIFY (tool));        g_seis_view_tool_magnify_draw_rect (tool, seis_view_gl, data_visibility, FALSE);    }}static void g_seis_view_tool_motion_event_int (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventMotion *event,                                               GSeisViewDataVisibility *data_visibility) {    GSeisViewToolMagnifyPrivate *private = G_SEIS_VIEW_TOOL_MAGNIFY_GET_PRIVATE (G_SEIS_VIEW_TOOL (tool));    gdouble slow_epsilon = 4.0 * data_visibility->slow_size_data / (gdouble)data_visibility->slow_size_screen;    gdouble fast_epsilon = 4.0 * data_visibility->fast_size_data / (gdouble)data_visibility->fast_size_screen;    gdouble upper_horiz_dist = data_visibility->fast_pointer_pos_data - private->fast_start_data;    gdouble lower_horiz_dist = data_visibility->fast_pointer_pos_data - private->fast_end_data;    gdouble vert_left_dist = data_visibility->slow_pointer_pos_data - private->slow_start_data;    gdouble vert_right_dist = data_visibility->slow_pointer_pos_data - private->slow_end_data;    if (private->dragging) {        gdouble new_slow_start_data = private->slow_start_data, new_slow_end_data = private->slow_end_data;        gdouble new_fast_start_data = private->fast_start_data, new_fast_end_data = private->fast_end_data;        g_seis_view_tool_magnify_draw_rect (tool, seis_view_gl, data_visibility, FALSE);        switch (private->rect_element) {            case G_SEIS_VIEW_TOOL_RECT_INSIDE:                new_slow_start_data = private->slow_start_data - private->slow_pointer_data +                                                                 data_visibility->slow_pointer_pos_data;                new_slow_end_data = private->slow_end_data - private->slow_pointer_data +                                                             data_visibility->slow_pointer_pos_data;                new_fast_start_data = private->fast_start_data - private->fast_pointer_data +                                                                 data_visibility->fast_pointer_pos_data;                new_fast_end_data = private->fast_end_data - private->fast_pointer_data +                                                             data_visibility->fast_pointer_pos_data;                if (new_slow_start_data < 0) {                    new_slow_start_data = 0;                    new_slow_end_data = private->slow_end_data - private->slow_start_data;                }                if (new_slow_end_data > data_visibility->slow_size_data) {                    new_slow_end_data = data_visibility->slow_size_data;                    new_slow_start_data = new_slow_end_data - (private->slow_end_data - private->slow_start_data);                }                if (new_fast_start_data < 0) {                    new_fast_start_data = 0;                    new_fast_end_data = private->fast_end_data - private->fast_start_data;                }                if (new_fast_end_data > data_visibility->fast_size_data) {                    new_fast_end_data = data_visibility->fast_size_data;                    new_fast_start_data = new_fast_end_data - (private->fast_end_data - private->fast_start_data);                }                break;            case G_SEIS_VIEW_TOOL_RECT_UH:                new_fast_start_data = private->fast_start_data - private->fast_pointer_data +                                                                 data_visibility->fast_pointer_pos_data;                if (new_fast_start_data < 0)                    new_fast_start_data = 0;                if (new_fast_start_data > (new_fast_end_data - 2 * fast_epsilon))                    new_fast_start_data = new_fast_end_data - 2 * fast_epsilon;                break;            case G_SEIS_VIEW_TOOL_RECT_LH:                new_fast_end_data = private->fast_end_data - private->fast_pointer_data +                                                             data_visibility->fast_pointer_pos_data;                if (new_fast_end_data > data_visibility->fast_size_data)                    new_fast_end_data = data_visibility->fast_size_data;                if (new_fast_end_data < (new_fast_start_data + 2 * fast_epsilon))                    new_fast_end_data = new_fast_start_data + 2 * fast_epsilon;                break;            case G_SEIS_VIEW_TOOL_RECT_VR:                new_slow_end_data = private->slow_end_data - private->slow_pointer_data +                                                             data_visibility->slow_pointer_pos_data;                if (new_slow_end_data > data_visibility->slow_size_data)                    new_slow_end_data = data_visibility->slow_size_data;                if (new_slow_end_data < (new_slow_start_data + 2 * slow_epsilon))                    new_slow_end_data = new_slow_start_data + 2 * slow_epsilon;                break;            case G_SEIS_VIEW_TOOL_RECT_VL:                new_slow_start_data = private->slow_start_data - private->slow_pointer_data +                                                                 data_visibility->slow_pointer_pos_data;                if (new_slow_start_data < 0)                    new_slow_start_data = 0;                if (new_slow_start_data > (new_slow_end_data - 2 * slow_epsilon))                    new_slow_start_data = new_slow_end_data - 2 * slow_epsilon;                break;            case G_SEIS_VIEW_TOOL_RECT_UR:                new_slow_end_data = private->slow_end_data - private->slow_pointer_data +                                                             data_visibility->slow_pointer_pos_data;                new_fast_start_data = private->fast_start_data - private->fast_pointer_data +                                                                 data_visibility->fast_pointer_pos_data;                if (new_slow_end_data > data_visibility->slow_size_data)                    new_slow_end_data = data_visibility->slow_size_data;                if (new_slow_end_data < (new_slow_start_data + 2 * slow_epsilon))                    new_slow_end_data = new_slow_start_data + 2 * slow_epsilon;                if (new_fast_start_data < 0)                    new_fast_start_data = 0;                if (new_fast_start_data > (new_fast_end_data - 2 * fast_epsilon))                    new_fast_start_data = new_fast_end_data - 2 * fast_epsilon;                break;            case G_SEIS_VIEW_TOOL_RECT_UL:                new_slow_start_data = private->slow_start_data - private->slow_pointer_data +                                                                 data_visibility->slow_pointer_pos_data;                new_fast_start_data = private->fast_start_data - private->fast_pointer_data +                                                                 data_visibility->fast_pointer_pos_data;                if (new_slow_start_data < 0)                    new_slow_start_data = 0;                if (new_slow_start_data > (new_slow_end_data - 2 * slow_epsilon))                    new_slow_start_data = new_slow_end_data - 2 * slow_epsilon;                if (new_fast_start_data < 0)                    new_fast_start_data = 0;                if (new_fast_start_data > (new_fast_end_data - 2 * fast_epsilon))                    new_fast_start_data = new_fast_end_data - 2 * fast_epsilon;                break;            case G_SEIS_VIEW_TOOL_RECT_LR:                new_slow_end_data = private->slow_end_data - private->slow_pointer_data +                                                             data_visibility->slow_pointer_pos_data;                new_fast_end_data = private->fast_end_data - private->fast_pointer_data +                                                             data_visibility->fast_pointer_pos_data;                if (new_slow_end_data > data_visibility->slow_size_data)                    new_slow_end_data = data_visibility->slow_size_data;                if (new_slow_end_data < (new_slow_start_data + 2 * slow_epsilon))                    new_slow_end_data = new_slow_start_data + 2 * slow_epsilon;                if (new_fast_end_data > data_visibility->fast_size_data)                    new_fast_end_data = data_visibility->fast_size_data;                if (new_fast_end_data < (new_fast_start_data + 2 * fast_epsilon))                    new_fast_end_data = new_fast_start_data + 2 * fast_epsilon;                break;            case G_SEIS_VIEW_TOOL_RECT_LL:                new_slow_start_data = private->slow_start_data - private->slow_pointer_data +                                                                 data_visibility->slow_pointer_pos_data;                new_fast_end_data = private->fast_end_data - private->fast_pointer_data +                                                             data_visibility->fast_pointer_pos_data;                if (new_slow_start_data < 0)                    new_slow_start_data = 0;                if (new_slow_start_data > (new_slow_end_data - 2 * slow_epsilon))                    new_slow_start_data = new_slow_end_data - 2 * slow_epsilon;                if (new_fast_end_data > data_visibility->fast_size_data)                    new_fast_end_data = data_visibility->fast_size_data;                if (new_fast_end_data < (new_fast_start_data + 2 * fast_epsilon))                    new_fast_end_data = new_fast_start_data + 2 * fast_epsilon;                break;            default:                break;        }        if (private->data_mutex)            g_mutex_lock (private->data_mutex);        private->slow_start_data = new_slow_start_data;        private->slow_end_data = new_slow_end_data;        private->fast_start_data = new_fast_start_data;        private->fast_end_data = new_fast_end_data;        if (private->data_mutex)            g_mutex_unlock (private->data_mutex);        g_idle_add ((GSourceFunc)g_seis_view_tool_magnify_viewport_signal, (gpointer)G_SEIS_VIEW_TOOL_MAGNIFY (tool));        private->slow_pointer_data = data_visibility->slow_pointer_pos_data;        private->fast_pointer_data = data_visibility->fast_pointer_pos_data;        g_seis_view_tool_magnify_draw_rect (tool, seis_view_gl, data_visibility, FALSE);    } else {        GdkCursor *new_cursor = NULL;        GSeisViewToolRectElement new_rect_element = G_SEIS_VIEW_TOOL_RECT_OUTSIDE;        if (upper_horiz_dist < 0)            upper_horiz_dist = -upper_horiz_dist;        if (lower_horiz_dist < 0)            lower_horiz_dist = -lower_horiz_dist;        if (vert_left_dist < 0)            vert_left_dist = -vert_left_dist;        if (vert_right_dist < 0)            vert_right_dist = -vert_right_dist;        if (upper_horiz_dist < fast_epsilon) {            if (vert_left_dist < slow_epsilon) {                new_cursor = private->ul_angle_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_UL;            } else if (vert_right_dist < slow_epsilon) {                new_cursor = private->ur_angle_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_UR;            } else if (data_visibility->slow_pointer_pos_data > private->slow_start_data &&                       data_visibility->slow_pointer_pos_data < private->slow_end_data) {                new_cursor = private->horiz_scale_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_UH;            }        } else if (lower_horiz_dist < fast_epsilon) {            if (vert_left_dist < slow_epsilon) {                new_cursor = private->ll_angle_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_LL;            } else if (vert_right_dist < slow_epsilon) {                new_cursor = private->lr_angle_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_LR;            } else if (data_visibility->slow_pointer_pos_data > private->slow_start_data &&                       data_visibility->slow_pointer_pos_data < private->slow_end_data) {                new_cursor = private->horiz_scale_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_LH;            }        } else if (vert_left_dist < slow_epsilon) {            if (upper_horiz_dist < fast_epsilon) {                new_cursor = private->ul_angle_cursor;                new_rect_element = G_SEIS_VIEW_TOOL_RECT_UL;            } else if (lower_horiz_dist < fast_epsilon) {                new_cursor = private->ll_angle_cursor;

⌨️ 快捷键说明

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