//view void mShowToolBoxSlot(GtkWidget * widget, gpointer user_data) { if (!gtk_widget_set_gl_capability (glade_xml_get_widget(xml, "glfixed"), configure_gl(), gtk_widget_get_gl_context(view->drawing_area), 0, 0)) printf("glwidget creation failed \n"); }
int main (int argc, char *argv[]) { GtkWidget *window; GdkGLConfig *glconfig; /* Initialize GTK. */ gtk_init (&argc, &argv); /* Initialize GtkGLExt. */ gtk_gl_init (&argc, &argv); /* Configure OpenGL framebuffer. */ glconfig = configure_gl (); /* Create and show the application window. */ window = create_window (glconfig); gtk_widget_show (window); gtk_main (); return 0; }
gboolean NewGLArea(GtkWidget* vboxwin) { GtkWidget* frame; /* gchar *info_str; */ GtkWidget* table; GtkWidget* hboxtoolbar; GtkWidget* vbox; #define DIMAL 13 int k = 0; GdkGLConfig *glconfig; k = 0; /* if(openGLOptions.alphaSize!=0) { attrlist[k++] = GDK_GL_ALPHA_SIZE; attrlist[k++] = 1; } if(openGLOptions.depthSize!=0) { attrlist[k++] = GDK_GL_DEPTH_SIZE; attrlist[k++] = 1; } if(openGLOptions.doubleBuffer!=0) attrlist[k++] = GDK_GL_DOUBLEBUFFER; */ set_show_symbols(FALSE); set_show_distances(FALSE); trackball(Quat , 0.0, 0.0, 0.0, 0.0); frame = gtk_frame_new (NULL); gtk_container_set_border_width (GTK_CONTAINER (frame), 0); gtk_frame_set_shadow_type( GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT); gtk_box_pack_start (GTK_BOX (vboxwin), frame, TRUE, TRUE, 0); gtk_widget_show (frame); table = gtk_table_new(2,2,FALSE); gtk_container_add(GTK_CONTAINER(frame),table); gtk_widget_show(GTK_WIDGET(table)); /* hboxtoolbar = gtk_hbox_new (FALSE, 0); gtk_widget_show (hboxtoolbar); gtk_table_attach(GTK_TABLE(table), hboxtoolbar,0,1,0,1, (GtkAttachOptions)(GTK_FILL | GTK_SHRINK ), (GtkAttachOptions)(GTK_FILL | GTK_EXPAND ), 0,0); */ vbox = gtk_vbox_new (FALSE, 0); gtk_table_attach(GTK_TABLE(table), vbox, 0,1, 0,1, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_show(vbox); add_menu_button(PrincipalWindow, vbox); hboxtoolbar = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hboxtoolbar, TRUE, TRUE, 0); gtk_widget_show(hboxtoolbar); gtk_quit_add_destroy(1, GTK_OBJECT(PrincipalWindow)); /* Create new OpenGL widget. */ /* pthread_mutex_init (&theRender_mutex, NULL);*/ GLArea = gtk_drawing_area_new (); gtk_drawing_area_size(GTK_DRAWING_AREA(GLArea),(gint)(ScreenHeight*0.2),(gint)(ScreenHeight*0.2)); gtk_table_attach(GTK_TABLE(table),GLArea,1,2,0,1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND ), (GtkAttachOptions)(GTK_FILL | GTK_EXPAND ), 0,0); gtk_widget_show(GTK_WIDGET(GLArea)); /* Events for widget must be set before X Window is created */ gtk_widget_set_events(GLArea, GDK_EXPOSURE_MASK| GDK_BUTTON_PRESS_MASK| GDK_BUTTON_RELEASE_MASK| GDK_POINTER_MOTION_MASK| GDK_POINTER_MOTION_HINT_MASK | GDK_SCROLL_MASK ); /* prepare GL */ glconfig = configure_gl(); if (!glconfig) { g_assert_not_reached (); } if (!gtk_widget_set_gl_capability (GLArea, glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE)) { g_assert_not_reached (); } g_signal_connect(G_OBJECT(GLArea), "realize", G_CALLBACK(init), NULL); g_signal_connect(G_OBJECT(GLArea), "configure_event", G_CALLBACK(reshape), NULL); g_signal_connect(G_OBJECT(GLArea), "expose_event", G_CALLBACK(draw), NULL); /*gtk_widget_set_size_request(GTK_WIDGET(GLArea ),(gint)(ScreenHeight*0.2),(gint)(ScreenHeight*0.2));*/ gtk_widget_realize(GTK_WIDGET(PrincipalWindow)); /* info_str = gdk_gl_get_info(); Debug("%s\n",info_str); g_free(info_str); */ g_signal_connect (G_OBJECT(GLArea), "button_press_event", G_CALLBACK(glarea_button_press), NULL); g_signal_connect_after(G_OBJECT(GLArea), "button_press_event", G_CALLBACK(event_dispatcher), NULL); g_signal_connect_after(G_OBJECT(GLArea), "motion_notify_event", G_CALLBACK(glarea_motion_notify), NULL); g_signal_connect (G_OBJECT(GLArea), "button_release_event", G_CALLBACK(glarea_button_release), NULL); create_toolbar_and_popup_menu_GL(hboxtoolbar); g_signal_connect(G_OBJECT (PrincipalWindow), "key_press_event", (GCallback) set_key_press, GLArea); g_signal_connect(G_OBJECT (PrincipalWindow), "key_release_event", (GCallback) set_key_release, NULL); return TRUE; }