gseisviewtool.c

来自「segy 显示程序!希望能给正在做这部分朋友提供一部分资料」· C语言 代码 · 共 380 行 · 第 1/2 页

C
380
字号
/*  * GTKSEISVIEWGL - Library for rendering of 2D seismic data * * 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 <gdk/gdkkeysyms.h>#include "gseisviewtool.h"G_DEFINE_TYPE (GSeisViewTool, g_seis_view_tool, G_TYPE_OBJECT)#define G_SEIS_VIEW_TOOL_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), G_SEIS_TYPE_VIEW_TOOL, GSeisViewToolPrivate))typedef struct _GSeisViewToolPrivate GSeisViewToolPrivate;struct _GSeisViewToolPrivate {    GSeisViewTool *current_tool;    GSeisViewTool *alt_tool1;    GSeisViewTool *alt_tool2;    GSeisViewTool *alt_tool3;};static void g_seis_view_tool_attach_notify_base (GSeisViewTool *self, GtkWidget *seis_view_gl) {}static void g_seis_view_tool_detach_notify_base (GSeisViewTool *self, GtkWidget *seis_view_gl) {}static void g_seis_view_tool_button_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventButton *event,                                                GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_scroll_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventScroll *event,                                                GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_enter_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventCrossing *event,                                               GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_leave_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventCrossing *event,                                               GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_motion_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventMotion *event,                                                GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_key_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventKey *event,                                             GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_redraw_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl,                                                GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_resize_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl,                                                GSeisViewDataVisibility *data_visibility) {}void g_seis_view_tool_set_alt_tool1 (GSeisViewTool *tool, GSeisViewTool *alt_tool1) {    GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool);    if (private->alt_tool1)        g_object_unref (G_OBJECT (private->alt_tool1));    private->alt_tool1 = alt_tool1;    if (private->alt_tool1)        g_object_ref (G_OBJECT (private->alt_tool1));}void g_seis_view_tool_set_alt_tool2 (GSeisViewTool *tool, GSeisViewTool *alt_tool2) {    GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool);    if (private->alt_tool2)        g_object_unref (G_OBJECT (private->alt_tool2));    private->alt_tool2 = alt_tool2;    if (private->alt_tool2)        g_object_ref (G_OBJECT (private->alt_tool2));}void g_seis_view_tool_set_alt_tool3 (GSeisViewTool *tool, GSeisViewTool *alt_tool3) {    GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool);    if (private->alt_tool3)        g_object_unref (G_OBJECT (private->alt_tool3));    private->alt_tool3 = alt_tool3;    if (private->alt_tool3)        g_object_ref (G_OBJECT (private->alt_tool3));}void g_seis_view_tool_attach_notify (GSeisViewTool *tool, GtkWidget *seis_view_gl) {    GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool);    G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_attach_notify (private->current_tool, seis_view_gl);    if (private->current_tool != tool)        tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_detach_notify (GSeisViewTool *tool, GtkWidget *seis_view_gl) {    GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool);    G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_detach_notify (private->current_tool, seis_view_gl);    if (private->current_tool != tool)        tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_button_event (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventButton *event,                                    GSeisViewDataVisibility *data_visibility) {    GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool);    if (0 == (private->current_tool->event_mask & G_SEIS_VIEW_TOOL_BUTTON_EVENT))        return;    G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_button_event (private->current_tool, seis_view_gl,                                                                                      event, data_visibility);    if (private->current_tool != tool)        tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_scroll_event (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventScroll *event,                                    GSeisViewDataVisibility *data_visibility) {    GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool);    if (0 == (private->current_tool->event_mask & G_SEIS_VIEW_TOOL_SCROLL_EVENT))        return;    G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_scroll_event (private->current_tool, seis_view_gl,                                                                                      event, data_visibility);    if (private->current_tool != tool)        tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_enter_event (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventCrossing *event,                                   GSeisViewDataVisibility *data_visibility) {    GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool);    if (0 == (private->current_tool->event_mask & G_SEIS_VIEW_TOOL_ENTER_EVENT))        return;    G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_enter_event (private->current_tool, seis_view_gl,                                                                                     event, data_visibility);    if (private->current_tool != tool)        tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_leave_event (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventCrossing *event,                                   GSeisViewDataVisibility *data_visibility) {    GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool);    if (0 == (private->current_tool->event_mask & G_SEIS_VIEW_TOOL_LEAVE_EVENT))        return;    G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_leave_event (private->current_tool, seis_view_gl,                                                                                     event, data_visibility);    if (private->current_tool != tool)        tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_motion_event (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventMotion *event,                                    GSeisViewDataVisibility *data_visibility) {    GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool);    if (0 == (private->current_tool->event_mask & G_SEIS_VIEW_TOOL_MOTION_EVENT))        return;    G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_motion_event (private->current_tool, seis_view_gl,                                                                                      event, data_visibility);    if (private->current_tool != tool)        tool->show_cross = private->current_tool->show_cross;

⌨️ 快捷键说明

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