54 GdkGLContext *glcontext = gtk_widget_get_gl_context(widget);
55 GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget);
58 float ambient[] = {0.0f, 0.0f, 0.0f, 1.0f};
59 float diffuse[] = {0.5f, 0.5f, 0.5f, 1.0f};
60 float position[] = {0.0f, 3.0f, 3.0f, 0.0f};
62 float lmodel_ambient[] = {0.2f, 0.2f, 0.2f, 1.0f};
63 float local_view[] = {0.0f};
66 if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
72 glClear(GL_COLOR_BUFFER_BIT);
75 glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
76 glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
77 glLightfv(GL_LIGHT0, GL_POSITION,
position);
78 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
79 glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view);
83 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
84 gdk_gl_drawable_gl_end(gldrawable);
100 GdkGLContext *glcontext = gtk_widget_get_gl_context(widget);
101 GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget);
102 view->
w = widget->allocation.width;
103 view->
h = widget->allocation.height;
109 if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
113 glGetIntegerv(GL_VIEWPORT, vPort);
115 glMatrixMode(GL_PROJECTION);
117 if (widget->allocation.width > 1)
131 glMatrixMode(GL_MODELVIEW);
132 gdk_gl_drawable_gl_end(gldrawable);
148 GdkGLContext *glcontext = gtk_widget_get_gl_context(widget);
149 GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget);
152 if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
154 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
158 if (gdk_gl_drawable_is_double_buffered(gldrawable))
159 gdk_gl_drawable_swap_buffers(gldrawable);
162 gdk_gl_drawable_gl_end(gldrawable);
182 if (
view->
g == 0)
return FALSE;
190 if (event->button == 1)
193 if (event->button == 3)
195 if (event->button == 2)
221 if (event->button == 1 || event->button == 2 || event->button == 3)
256 if (seconds > 0.005) {
258 if (event->direction == 0)
260 if (event->direction == 1)
279 float x = (float) event->x;
280 float y = (float) event->y;
302 gdk_window_invalidate_rect(widget->window, &widget->allocation,FALSE);
313 GdkGLConfig *glconfig;
315 glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB |
318 if (glconfig ==
NULL) {
319 g_print(
"\n*** Cannot find the double-buffered visual.\n");
320 g_print(
"\n*** Trying single-buffered visual.\n");
323 glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB |
325 if (glconfig ==
NULL) {
326 g_print(
"*** No appropriate OpenGL-capable visual found.\n");
349 glconfig,
NULL, TRUE, GDK_GL_RGBA_TYPE);
352 GDK_BUTTON_MOTION_MASK |
353 GDK_POINTER_MOTION_MASK |
354 GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS |
355 GDK_BUTTON_RELEASE_MASK |
356 GDK_SCROLL | GDK_VISIBILITY_NOTIFY_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK );
383 gtk_widget_add_events(glade_xml_get_widget(
xml,
"frmMain"),
384 GDK_BUTTON_MOTION_MASK |
385 GDK_POINTER_MOTION_MASK |
386 GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS |
387 GDK_BUTTON_RELEASE_MASK |
388 GDK_SCROLL | GDK_VISIBILITY_NOTIFY_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK );
391 g_signal_connect(G_OBJECT(glade_xml_get_widget(
xml,
"frmMain")),
"key_release_event", G_CALLBACK(
key_release_event),
NULL);
392 g_signal_connect(G_OBJECT(glade_xml_get_widget(
xml,
"frmMain")),
"key_press_event", G_CALLBACK(
key_press_event),
NULL);
void appmouse_drag(ViewInfo *v, int x, int y)
void appmouse_key_release(ViewInfo *v)
void appmouse_move(ViewInfo *v, int x, int y)
void appmouse_key_press(ViewInfo *v, int key)
void appmouse_middle_click_down(ViewInfo *v, int x, int y)
void appmouse_left_click_down(ViewInfo *v, int x, int y)
void appmouse_right_click_down(ViewInfo *v, int x, int y)
void appmouse_up(ViewInfo *v, int x, int y)
void init_arcBall(ArcBall_t *a, float NewWidth, float NewHeight)
static NORETURN void graphviz_exit(int status)
void glcompsetUpdateBorder(glCompSet *s, int w, int h)
int glexpose_main(ViewInfo *vi)
static gboolean button_press_event(GtkWidget *widget, GdkEventButton *event, void *data)
static gboolean configure_event(GtkWidget *widget, GdkEventConfigure *event, void *data)
static void realize(GtkWidget *widget, void *data)
static gboolean button_release_event(GtkWidget *widget, GdkEventButton *event, void *data)
static gboolean motion_notify_event(GtkWidget *widget, GdkEventMotion *event, void *data)
static gboolean scroll_event(GtkWidget *widget, GdkEventScroll *event, void *data)
gboolean expose_event(GtkWidget *widget, GdkEventExpose *event, void *data)
static gboolean key_press_event(GtkWidget *widget, GdkEventKey *event, void *data)
static glMouseButtonType getGlCompMouseType(int n)
static gboolean key_release_event(GtkWidget *widget, GdkEventKey *event, void *data)
GdkGLConfig * configure_gl(void)
void create_window(GdkGLConfig *glconfig, GtkWidget *vbox)
#define GL_VIEWPORT_FACTOR
GtkWidget * drawing_area
open gl canvas
glcompmouseupfunc_t mouseup
glcompmousedownfunc_t mousedown
glcompmouseoverfunc_t mouseover
glCompCallBacks functions
void close_graph(ViewInfo *vi)
int add_graph_to_viewport_from_file(char *fileName)