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

📄 gseisviewtoolhlight.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 2 页
字号:
    }    if (1 == event->button && FALSE == private->drawing_rubberband &&        GDK_BUTTON_RELEASE == event->type) {        gtk_seis_view_gl_set_highlight_area (GTK_SEIS_VIEW_GL (seis_view_gl), data_visibility->slow_pointer_pos_data, 0.0);        gtk_seis_view_gl_redraw (seis_view);    }}static void g_seis_view_tool_scroll_event_int (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventScroll *event,                                               GSeisViewDataVisibility *data_visibility) {    GSeisViewToolHighlightPrivate *private = G_SEIS_VIEW_TOOL_HIGHLIGHT_GET_PRIVATE (G_SEIS_VIEW_TOOL (tool));    if (FALSE == private->drawing_rubberband) {        if (GDK_SCROLL_UP == event->direction)            g_idle_add ((GSourceFunc)g_seis_view_tool_highlight_scroll_up_signal, (gpointer)G_SEIS_VIEW_TOOL_HIGHLIGHT (tool));        else if (GDK_SCROLL_DOWN == event->direction)            g_idle_add ((GSourceFunc)g_seis_view_tool_highlight_scroll_down_signal, (gpointer)G_SEIS_VIEW_TOOL_HIGHLIGHT (tool));    }}static void g_seis_view_tool_motion_event_int (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventMotion *event,                                               GSeisViewDataVisibility *data_visibility) {    GSeisViewToolHighlightPrivate *private = G_SEIS_VIEW_TOOL_HIGHLIGHT_GET_PRIVATE (G_SEIS_VIEW_TOOL (tool));    GdkGLContext *gl_context = gtk_widget_get_gl_context (seis_view_gl);    GdkGLDrawable *gl_drawable = gtk_widget_get_gl_drawable (seis_view_gl);    if (private->drawing_rubberband) {        if (private->is_threaded)            gdk_threads_enter ();        if (gdk_gl_drawable_gl_begin (gl_drawable, gl_context)) {            glDrawBuffer (GL_FRONT);            glEnable (GL_COLOR_LOGIC_OP);            glLogicOp (GL_XOR);            glColor3f (1, 1, 1);            if (private->rubberband_is_drawn) {                glBegin (GL_LINE_STRIP);                glVertex2f (private->rubberband_slow_start_object, private->rubberband_fast_start_object);                glVertex2f (private->rubberband_slow_end_object, private->rubberband_fast_end_object);                glEnd ();            }            private->hlight_area_end = data_visibility->slow_pointer_pos_data;            private->rubberband_slow_end_object = data_visibility->slow_pointer_pos_object;            private->rubberband_fast_end_object = data_visibility->fast_pointer_pos_object;            glBegin (GL_LINE_STRIP);            glVertex2f (private->rubberband_slow_start_object, private->rubberband_fast_start_object);            glVertex2f (private->rubberband_slow_end_object, private->rubberband_fast_end_object);            glEnd ();            glLogicOp (GL_SET);            glDisable (GL_COLOR_LOGIC_OP);            glDrawBuffer (GL_BACK);            glFlush ();            gdk_gl_drawable_gl_end (gl_drawable);            private->rubberband_is_drawn = TRUE;        }        if (private->is_threaded)            gdk_threads_leave ();    }}void g_seis_view_tool_highlight_set_rubberband_selection (GSeisViewToolHighlight *self, gboolean on) {    GSeisViewToolHighlightPrivate *private = G_SEIS_VIEW_TOOL_HIGHLIGHT_GET_PRIVATE (self);    if (private->data_mutex)        g_mutex_lock (private->data_mutex);    private->rubberband_selection = on;    g_idle_add ((GSourceFunc)g_seis_view_tool_highlight_rb_selection_notify_signal, (gpointer)self);    if (private->data_mutex)        g_mutex_unlock (private->data_mutex);}static void g_seis_view_tool_highlight_init (GSeisViewToolHighlight *self) {    GSeisViewToolHighlightPrivate *private = G_SEIS_VIEW_TOOL_HIGHLIGHT_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 (self))->show_cross = TRUE;    private->drawing_rubberband = FALSE;    private->rubberband_is_drawn = FALSE;    private->cursor_window = NULL;    private->hand1_cursor = gdk_cursor_new (GDK_HAND1);    private->hand2_cursor = gdk_cursor_new (GDK_HAND2);    private->is_threaded = FALSE;    private->data_mutex = NULL;    private->rubberband_selection = TRUE;#ifdef DEBUG    g_print ("<GSeisViewToolHighlight is inited>\n");#endif}static void g_seis_view_tool_highlight_finalize (GObject *object) {    GSeisViewToolHighlightPrivate *private = G_SEIS_VIEW_TOOL_HIGHLIGHT_GET_PRIVATE (G_SEIS_VIEW_TOOL_HIGHLIGHT (object));    if (private->hand1_cursor)        gdk_cursor_unref (private->hand1_cursor);    if (private->hand2_cursor)        gdk_cursor_unref (private->hand2_cursor);    if (private->data_mutex)        g_mutex_free (private->data_mutex);#ifdef DEBUG    g_print ("<GSeisViewToolHighlight is finalized>\n");#endif    if (G_OBJECT_CLASS (g_seis_view_tool_highlight_parent_class)->finalize)        G_OBJECT_CLASS (g_seis_view_tool_highlight_parent_class)->finalize (object);}enum {    PROP_0,    PROP_RUBBERBAND_SELECTION};static void g_seis_view_tool_highlight_set_property (GObject *object, guint prop_id,                                                     const GValue *value, GParamSpec *pspec) {    GSeisViewToolHighlight *self = G_SEIS_VIEW_TOOL_HIGHLIGHT (object);    GSeisViewToolHighlightPrivate *private = G_SEIS_VIEW_TOOL_HIGHLIGHT_GET_PRIVATE (self);    if (private->data_mutex)        g_mutex_lock (private->data_mutex);    switch (prop_id) {        case PROP_RUBBERBAND_SELECTION:            g_seis_view_tool_highlight_set_rubberband_selection (self, g_value_get_boolean (value));            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_highlight_get_property (GObject *object, guint prop_id,                                                   GValue *value, GParamSpec *pspec) {    GSeisViewToolHighlight *self = G_SEIS_VIEW_TOOL_HIGHLIGHT (object);    GSeisViewToolHighlightPrivate *private = G_SEIS_VIEW_TOOL_HIGHLIGHT_GET_PRIVATE (self);    if (private->data_mutex)        g_mutex_lock (private->data_mutex);    switch (prop_id) {        case PROP_RUBBERBAND_SELECTION:            g_value_set_boolean (value, private->rubberband_selection);            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_highlight_class_init (GSeisViewToolHighlightClass *klass) {    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);    GSeisViewToolClass *tool_class = G_SEIS_VIEW_TOOL_CLASS (klass);    gobject_class->finalize = g_seis_view_tool_highlight_finalize;    gobject_class->set_property = g_seis_view_tool_highlight_set_property;    gobject_class->get_property = g_seis_view_tool_highlight_get_property;    g_type_class_add_private (klass, sizeof (GSeisViewToolHighlightPrivate));    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;    klass->highlight_scroll_up = NULL;    klass->highlight_scroll_down = NULL;    klass->highlight_scroll_up_id = g_signal_new ("highlight_scroll_up",                                                  G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)),                                                  G_SIGNAL_RUN_LAST,                                                  G_STRUCT_OFFSET (GSeisViewToolHighlightClass, highlight_scroll_up),                                                  NULL, NULL,                                                  gtkseisviewgl_marshal_VOID__VOID,                                                  G_TYPE_NONE, 0);    klass->highlight_scroll_down_id = g_signal_new ("highlight_scroll_down",                                                    G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)),                                                    G_SIGNAL_RUN_LAST,                                                    G_STRUCT_OFFSET (GSeisViewToolHighlightClass, highlight_scroll_down),                                                    NULL, NULL,                                                    gtkseisviewgl_marshal_VOID__VOID,                                                    G_TYPE_NONE, 0);    g_object_class_install_property (gobject_class,                                     PROP_RUBBERBAND_SELECTION,                                     g_param_spec_boolean ("rubberband_selection", "RubberbandSelection",                                     "If TRUE then MB3 drag performs the highlight selection with the rubberband",                                     TRUE,                                     G_PARAM_READWRITE));#ifdef DEBUG    g_print ("<GSeisViewToolHighlight class is inited>\n");#endif}GSeisViewToolHighlight* g_seis_view_tool_highlight_new () {    return g_object_new (G_SEIS_TYPE_VIEW_TOOL_HIGHLIGHT, NULL);}

⌨️ 快捷键说明

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