57 GdkGLContext *glcontext = gtk_widget_get_gl_context(widget);
58 GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget);
61 float ambient[] = {0.0f, 0.0f, 0.0f, 1.0f};
62 float diffuse[] = {0.5f, 0.5f, 0.5f, 1.0f};
63 float position[] = {0.0f, 3.0f, 3.0f, 0.0f};
65 float lmodel_ambient[] = {0.2f, 0.2f, 0.2f, 1.0f};
66 float local_view[] = {0.0f};
69 if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
74 glClear(GL_COLOR_BUFFER_BIT);
77 glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
78 glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
79 glLightfv(GL_LIGHT0, GL_POSITION,
position);
80 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
81 glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view);
85 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
86 gdk_gl_drawable_gl_end(gldrawable);
96 GdkEventConfigure * event, gpointer
data)
103 GdkGLContext *glcontext = gtk_widget_get_gl_context(widget);
104 GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget);
105 view->
w = widget->allocation.width;
106 view->
h = widget->allocation.height;
112 if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
116 glGetIntegerv(GL_VIEWPORT, vPort);
118 glMatrixMode(GL_PROJECTION);
120 if (widget->allocation.width > 1)
134 glMatrixMode(GL_MODELVIEW);
135 gdk_gl_drawable_gl_end(gldrawable);
153 GdkGLContext *glcontext = gtk_widget_get_gl_context(widget);
154 GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget);
157 if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
159 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
163 if (gdk_gl_drawable_is_double_buffered(gldrawable))
164 gdk_gl_drawable_swap_buffers(gldrawable);
167 gdk_gl_drawable_gl_end(gldrawable);
184 GdkEventButton * event, gpointer
data)
189 if (
view->
g == 0)
return FALSE;
194 if (event->button == 1)
197 if (event->button == 3)
199 if (event->button == 2)
213 GdkEventButton * event, gpointer
data)
223 if (event->button == 1)
225 if (event->button == 3)
227 if (event->button == 2)
264 if (seconds > 0.005) {
266 if (event->direction == 0)
268 if (event->direction == 1)
284 GdkEventMotion * event, gpointer
data)
288 float x = (float) event->x;
289 float y = (float) event->y;
325 gdk_window_invalidate_rect(widget->window, &widget->allocation,FALSE);
336 GdkGLConfig *glconfig;
338 glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB |
341 if (glconfig ==
NULL) {
342 g_print(
"\n*** Cannot find the double-buffered visual.\n");
343 g_print(
"\n*** Trying single-buffered visual.\n");
346 glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB |
348 if (glconfig ==
NULL) {
349 g_print(
"*** No appropriate OpenGL-capable visual found.\n");
371 gdk_gl_query_version(&major, &minor);
380 glconfig,
NULL, TRUE, GDK_GL_RGBA_TYPE);
383 GDK_BUTTON_MOTION_MASK |
384 GDK_POINTER_MOTION_MASK |
385 GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS |
386 GDK_BUTTON_RELEASE_MASK |
387 GDK_SCROLL | GDK_VISIBILITY_NOTIFY_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK );
414 gtk_widget_add_events(glade_xml_get_widget(
xml,
"frmMain"),
415 GDK_BUTTON_MOTION_MASK |
416 GDK_POINTER_MOTION_MASK |
417 GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS |
418 GDK_BUTTON_RELEASE_MASK |
419 GDK_SCROLL | GDK_VISIBILITY_NOTIFY_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK );
422 g_signal_connect(G_OBJECT(glade_xml_get_widget(
xml,
"frmMain")),
"key_release_event", G_CALLBACK(
key_release_event),
NULL);
423 g_signal_connect(G_OBJECT(glade_xml_get_widget(
xml,
"frmMain")),
"key_press_event", G_CALLBACK(
key_press_event),
NULL);
void appmouse_left_click_up(ViewInfo *v, int x, int y)
void appmouse_right_drag(ViewInfo *v, int x, int y)
void appmouse_middle_click_up(ViewInfo *v, int x, int y)
void appmouse_right_click_up(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_drag(ViewInfo *v, int x, int y)
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_left_drag(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 configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data)
static gboolean button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
static gboolean scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer data)
static void realize(GtkWidget *widget, gpointer data)
static gboolean key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
static glMouseButtonType getGlCompMouseType(int n)
static gboolean motion_notify_event(GtkWidget *widget, GdkEventMotion *event, gpointer data)
static gboolean key_release_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
static gboolean button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
GdkGLConfig * configure_gl(void)
void create_window(GdkGLConfig *glconfig, GtkWidget *vbox)
gboolean expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
#define GL_VIEWPORT_FACTOR
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)