bool graph3d_gtk::screen_create(void) { /* Attribute list for gtkglarea widget. Specifies a list of Boolean attributes and enum/integer attribute/value pairs. The last attribute must be GDK_GL_NONE. See glXChooseVisual manpage for further explanation. */ int attrlist[] = { GDK_GL_RGBA, GDK_GL_RED_SIZE,1, GDK_GL_GREEN_SIZE,1, GDK_GL_BLUE_SIZE,1, GDK_GL_DOUBLEBUFFER, GDK_GL_NONE }; /* Check if OpenGL is supported. */ if(gdk_gl_query() == FALSE) { PERROR(FALSE, "OpenGL is not supported!"); return(FALSE); } assert(p_area == NULL); /* Create new OpenGL widget. */ p_area = GTK_WIDGET(gtk_gl_area_new(attrlist)); if(!p_area) { PERROR(true, "gtk_gl_area_new failed!"); } gtk_widget_set_size_request(GTK_WIDGET(p_area), graphics_width, graphics_height); screen_resize(graphics_width, graphics_height); return(TRUE); }
native_handle _chisel_native_openglview_create( ) { #ifndef _WIN32 int attrlist[] = { GDK_GL_RGBA, GDK_GL_RED_SIZE,1, GDK_GL_GREEN_SIZE,1, GDK_GL_BLUE_SIZE,1, GDK_GL_DOUBLEBUFFER, GDK_GL_NONE }; assert( gdk_gl_query() && "Application requires OpenGL" ); GtkWidget *glarea = GTK_WIDGET(gtk_gl_area_new(attrlist)); #else GtkWidget *glarea = GTK_WIDGET(gtk_drawing_area_new( )); #endif _chisel_gtk_setup_events( glarea ); gtk_widget_set_events( glarea, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK ); gtk_signal_connect( GTK_OBJECT(glarea), "expose_event", GTK_SIGNAL_FUNC(expose), NULL ); gtk_signal_connect( GTK_OBJECT(glarea), "configure_event", GTK_SIGNAL_FUNC(reshape), NULL ); gtk_signal_connect( GTK_OBJECT(glarea), "realize", GTK_SIGNAL_FUNC(reshape), NULL ); return (native_handle)glarea; }
int main (int argc, char **argv) { GtkWidget *window, *glarea; int attrlist[] = { GDK_GL_RGBA, GDK_GL_RED_SIZE, 1, GDK_GL_GREEN_SIZE, 1, GDK_GL_BLUE_SIZE, 1, GDK_GL_DOUBLEBUFFER, GDK_GL_NONE }; gtk_init (&argc, &argv); if (gdk_gl_query () == FALSE) return 0; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW(window), "Nuke Version 1.0"); gtk_container_set_border_width (GTK_CONTAINER(window), 15); g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL); /* You should always delete gtk_gl_area widgets before exit or else GLX contexts are left undeleted, this may cause problems (=core dump) in some systems. Destroy method of objects is not automatically called on exit. You need to manually enable this feature. Do gtk_quit_add_destroy() for all your top level windows unless you are certain that they get destroy signal by other means. */ gtk_quit_add_destroy (1, GTK_OBJECT(window)); glarea = GTK_WIDGET(gtk_gl_area_new (attrlist)); gtk_widget_set_size_request (GTK_WIDGET(glarea), 1000, 800); gtk_widget_set_events (GTK_WIDGET(glarea), GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK); g_signal_connect (glarea, "expose_event", G_CALLBACK(draw), NULL); g_signal_connect (glarea, "configure_event", G_CALLBACK(reshape), NULL); g_signal_connect (glarea, "realize", G_CALLBACK(init), NULL); gtk_container_add (GTK_CONTAINER(window), GTK_WIDGET(glarea)); gtk_widget_show (GTK_WIDGET(glarea)); gtk_widget_show (GTK_WIDGET(window)); gtk_main (); return 0; }
int main(int argc, char* argv[]) { Gtk::Main kit(argc, argv); if (!gdk_gl_query()) { std::cerr << "No OpenGL support" << std::endl; return -1; } Graal::level_editor::preferences prefs; boost::filesystem::path preferences_path; preferences_path = Glib::get_user_config_dir(); preferences_path = preferences_path / "gonstruct"; // Make sure all directories to this path exist boost::filesystem::create_directories(preferences_path); prefs.load(preferences_path / "preferences"); set_default_preferences(prefs); { // destroy window before preferences get serialised boost::scoped_ptr<Graal::level_editor::preferences_display> prefs_display; boost::scoped_ptr<Graal::level_editor::window> editor; if (!boost::filesystem::is_directory(prefs.graal_dir)) { prefs_display.reset(new Graal::level_editor::preferences_display(prefs)); prefs_display->signal_hide().connect( sigc::bind(&start_editor, argc, argv, sigc::ref(editor), sigc::ref(prefs))); prefs_display->show_all(); } else { Glib::signal_idle().connect( sigc::bind_return( sigc::bind(&start_editor, argc, argv, sigc::ref(editor), sigc::ref(prefs)), false)); } kit.run(); } prefs.save(preferences_path / "preferences"); return 0; }
//A foprogram int main(int argc, char **argv) { GtkWidget *window, *glarea; int attrlist[] = { GDK_GL_RGBA, GDK_GL_RED_SIZE, 1, GDK_GL_GREEN_SIZE, 1, GDK_GL_BLUE_SIZE, 1, GDK_GL_DOUBLEBUFFER, GDK_GL_NONE }; //Meghivjuk az init fuggvenyt gtk_init(&argc, &argv); if (gdk_gl_query() == FALSE) return 0; //Letrehozunk egy uj ablakot window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //Megadjuk az ablak cimet gtk_window_set_title(GTK_WINDOW(window), "Gtk+Opengl"); //Beallitjuk a szelek vastagsagat gtk_container_set_border_width(GTK_CONTAINER(window), 10); //Kilepeskor meghivja a delete_event-t g_signal_connect(window, "delete_event", G_CALLBACK (gtk_main_quit), NULL); gtk_quit_add_destroy(1, GTK_OBJECT(window) ); //Letrehozom az OpenGl rajzfeluletet glarea = GTK_WIDGET(gtk_gl_area_new (attrlist)); gtk_widget_set_size_request(GTK_WIDGET(glarea), 100, 100); //Az ablakra vontakozo esemenyek eseten a `glarea`-t is ujrarajzoljuk gtk_widget_set_events(GTK_WIDGET(glarea), GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK); g_signal_connect(glarea, "expose_event", G_CALLBACK(draw), NULL); g_signal_connect(glarea, "configure_event", G_CALLBACK(reshape), NULL); g_signal_connect(glarea, "realize", G_CALLBACK(init), NULL); //Az ablakhoz hozzaadok egy tarolot, majd ehhez a tarolohoz egy rajzfeluletet gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(glarea) ); gtk_widget_show(GTK_WIDGET(glarea) ); gtk_widget_show(GTK_WIDGET(window) ); gtk_main(); return 0; }
int main(int argc, char **argv) { GtkWidget *window,*vbox,*logo,*glarea; /* Attribute list for gtkglarea widget. Specifies a list of Boolean attributes and enum/integer attribute/value pairs. The last attribute must be GDK_GL_NONE. See glXChooseVisual manpage for further explanation. */ int attrlist[] = { GDK_GL_RGBA, GDK_GL_RED_SIZE,1, GDK_GL_GREEN_SIZE,1, GDK_GL_BLUE_SIZE,1, GDK_GL_DOUBLEBUFFER, GDK_GL_NONE }; #ifdef FULLSCREEN_MESA_3DFX setenv("MESA_GLX_FX", "", 1); setenv("FX_GLIDE_NO_SPLASH", "", 1); #endif /* initialize gtk */ gtk_init(&argc, &argv); /* Check if OpenGL (GLX extension) is supported. */ if (gdk_gl_query() == FALSE) { g_print("OpenGL not supported\n"); return 0; } /* Create new top level window. */ window = gtk_window_new( GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Zktor"); /* Quit form main if got delete event */ gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* You should always delete gtk_gl_area widgets before exit or else GLX contexts are left undeleted, this may cause problems (=core dump) in some systems. Destroy method of objects is not automatically called on exit. You need to manually enable this feature. Do gtk_quit_add_destroy() for all your top level windows unless you are certain that they get destroy signal by other means. */ gtk_quit_add_destroy(1, GTK_OBJECT(window)); vbox = GTK_WIDGET(gtk_vbox_new(FALSE, 0)); gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); logo = gtk_label_new("Zktor"); /* Create new OpenGL widget. */ glarea = GTK_WIDGET(gtk_gl_area_new(attrlist)); /* Events for widget must be set before X Window is created */ gtk_widget_set_events(GTK_WIDGET(glarea), GDK_EXPOSURE_MASK| GDK_KEY_PRESS_MASK| GDK_KEY_RELEASE_MASK); /* set minimum size */ /* gtk_widget_set_usize(GTK_WIDGET(glarea), 200,200); */ /* set default size */ gtk_gl_area_size(GTK_GL_AREA(glarea), 640,400); /* Connect signal handlers */ /* Redraw image when exposed. */ gtk_signal_connect(GTK_OBJECT(glarea), "expose_event", GTK_SIGNAL_FUNC(draw), NULL); /* When window is resized viewport needs to be resized also. */ gtk_signal_connect(GTK_OBJECT(glarea), "configure_event", GTK_SIGNAL_FUNC(reshape), NULL); /* Do initialization when widget has been realized. */ gtk_signal_connect(GTK_OBJECT(glarea), "realize", GTK_SIGNAL_FUNC(init), NULL); /* Capture keypress events */ gtk_signal_connect(GTK_OBJECT(glarea), "key_press_event", GTK_SIGNAL_FUNC(key_press_event), NULL); gtk_signal_connect(GTK_OBJECT(glarea), "key_release_event", GTK_SIGNAL_FUNC(key_release_event), NULL); /* construct widget hierarchy */ gtk_container_add(GTK_CONTAINER(window),GTK_WIDGET(vbox)); gtk_box_pack_start(GTK_BOX(vbox), logo, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), glarea, TRUE, TRUE, 0); /* show all widgets */ gtk_widget_show(GTK_WIDGET(glarea)); gtk_widget_show(GTK_WIDGET(logo)); gtk_widget_show(GTK_WIDGET(vbox)); gtk_widget_show(window); /* set focus to glarea widget */ GTK_WIDGET_SET_FLAGS(glarea, GTK_CAN_FOCUS); gtk_widget_grab_focus(GTK_WIDGET(glarea)); /* animating */ gtk_idle_add((GtkFunction)animate, glarea); game_init(); gtk_main(); return 0; }
int main(int argc, char *argv[]) { GtkWidget *window, *box, *glarea; gtk_init (&argc, &argv); EGLX_main(1); if (gdk_gl_query() == FALSE) { g_print ("GL not supported !\n"); return 0; } gchar *info_str; info_str = gdk_gl_get_info(); g_print (info_str); g_free (info_str); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW(window), "Simple Wayland-EGL"); gtk_container_set_border_width (GTK_CONTAINER(window), 10); borderw = gtk_container_get_border_width (GTK_CONTAINER(window)); titlebarw = 30; /* HOW DO WE OBTAIN THAT ? */ int attrs[] = { GDK_GL_RGBA, GDK_GL_RED_SIZE,1, GDK_GL_GREEN_SIZE,1, GDK_GL_BLUE_SIZE,1, GDK_GL_DOUBLEBUFFER, GDK_GL_NONE }; guint myborder = gtk_container_get_border_width (GTK_CONTAINER(window)); glarea = GTK_WIDGET(gtk_gl_area_new(attrs)); gtk_widget_set_size_request (GTK_WIDGET(glarea), 320,240); g_signal_connect (GTK_WIDGET(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect (GTK_WIDGET(glarea), "draw", G_CALLBACK(draw), NULL); g_signal_connect (GTK_WIDGET(glarea), "realize", G_CALLBACK(init), NULL); g_signal_connect (GTK_WIDGET(window), "draw", G_CALLBACK(resize), NULL); box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add (GTK_CONTAINER(box), GTK_WIDGET(glarea)); gtk_container_add (GTK_CONTAINER(window), GTK_WIDGET(box)); gtk_widget_show (window); gtk_widget_show (glarea); gtk_widget_show (box); gtk_main(); return 0; }
int main( int argc, char **argv ) { int opt_id; char *root_dir; /* Initialize global variables */ globals.fstree = NULL; globals.history = NULL; /* Set sane camera state so setup_modelview_matrix( ) in ogl.c * doesn't choke. (It does get called in splash screen mode) */ camera->fov = 45.0; camera->near_clip = 1.0; camera->far_clip = 2.0; #ifdef DEBUG debug_init( ); #endif #ifdef ENABLE_NLS /* Initialize internationalization (i8e i18n :-) */ setlocale( LC_ALL, "" ); bindtextdomain( PACKAGE, LOCALEDIR ); textdomain( PACKAGE ); #endif /* Parse command-line options */ for (;;) { opt_id = getopt_long( argc, argv, "", cli_opts, NULL ); if (opt_id < 0) break; switch (opt_id) { case OPT_DISCV: /* --discv */ initial_fsv_mode = FSV_DISCV; break; case OPT_MAPV: /* --mapv */ initial_fsv_mode = FSV_MAPV; break; case OPT_TREEV: /* --treev */ initial_fsv_mode = FSV_TREEV; break; case OPT_CACHEDIR: /* --cachedir <dir> */ printf( "cache directory: %s\n", optarg ); printf( "(caching not yet implemented)\n" ); /* TODO: Implement caching */ break; case OPT_NOCACHE: /* --nocache */ /* TODO: Implement caching */ break; case OPT_HELP: /* --help */ default: /* unrecognized option */ printf( _(usage_summary), argv[0] ); fflush( stdout ); exit( EXIT_SUCCESS ); break; } } /* Determine root directory */ if (optind < argc) { /* From command line */ root_dir = xstrdup( argv[optind++] ); if (optind < argc) { /* Excess arguments! */ fprintf( stderr, _("Junk in command line:") ); while (optind < argc) fprintf( stderr, " %s", argv[optind++] ); fprintf( stderr, "\n" ); fflush( stderr ); } } else { /* Use current directory */ root_dir = xstrdup( "." ); } /* Initialize GTK+ */ gtk_init( &argc, &argv ); /* Check for OpenGL support */ if (!gdk_gl_query( )) quit( _("fsv requires OpenGL support.") ); window_init( initial_fsv_mode ); color_init( ); fsv_load( root_dir ); xfree( root_dir ); gtk_main( ); return 0; }
int main(int argc, char **argv) { GtkWidget *window,*glarea; gtk_init(&argc, &argv); if (argc == 1) { fontname = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*"; } else if (argc == 2) { fontname = argv[1]; } else if (argc > 2) { g_print("Usage: gdkfont [font]\n"); return 0; } /* Check if OpenGL (GLX extension) is supported. */ if (gdk_gl_query() == FALSE) { g_print("OpenGL not supported\n"); return 0; } /* Create new top level window. */ window = gtk_window_new( GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "gdkfont"); gtk_container_set_border_width(GTK_CONTAINER(window), 10); /* Quit form main if got delete event */ gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* Delete widget before exit */ gtk_quit_add_destroy(1, GTK_OBJECT(window)); /* Create new OpenGL widget. */ glarea = GTK_WIDGET(gtk_gl_area_new_vargs(NULL, GDK_GL_RGBA, GDK_GL_RED_SIZE,1, GDK_GL_GREEN_SIZE,1, GDK_GL_BLUE_SIZE,1, GDK_GL_DEPTH_SIZE,1, GDK_GL_NONE)); gtk_widget_set_events(GTK_WIDGET(glarea), GDK_EXPOSURE_MASK| GDK_BUTTON_PRESS_MASK); /* Connect signal handlers */ gtk_signal_connect(GTK_OBJECT(glarea), "expose_event", GTK_SIGNAL_FUNC(draw), NULL); gtk_signal_connect(GTK_OBJECT(glarea), "configure_event", GTK_SIGNAL_FUNC(reshape), NULL); gtk_signal_connect(GTK_OBJECT(glarea), "realize", GTK_SIGNAL_FUNC(init), NULL); gtk_widget_set_usize(GTK_WIDGET(glarea), 450,100); /* put glarea into window and show it all */ gtk_container_add(GTK_CONTAINER(window),GTK_WIDGET(glarea)); gtk_widget_show(GTK_WIDGET(glarea)); gtk_widget_show(GTK_WIDGET(window)); gtk_main(); return 0; }
/*! \brief main() is the typical main function in a C program, it performs all core initialization, loading of all main parameters, initializing handlers and entering gtk_main to process events until program close \param argc is the count of command line arguments \param argv is the array of command line args \returns TRUE */ gint main(gint argc, gchar ** argv) { Serial_Params *serial_params = NULL; GAsyncQueue *queue = NULL; GTimer *timer = NULL; GCond *rtv_thread_cond = NULL; GMutex *dash_mutex = NULL; GMutex *rtt_mutex = NULL; GMutex *rtv_mutex = NULL; GMutex *rtv_thread_mutex = NULL; GMutex *serio_mutex = NULL; gint id = 0; setlocale(LC_ALL,""); #ifdef __WIN32__ bindtextdomain(PACKAGE, "C:\\Program Files\\MegaTunix\\dist\\locale"); #else bindtextdomain(PACKAGE, LOCALEDIR); #endif textdomain (PACKAGE); #ifdef DEBUG printf("This is a debug release, Git hash: %s\n",GIT_HASH); #endif // Not needed? // gdk_threads_init(); gtk_init(&argc, &argv); glade_init(); /* Check if OpenGL is supported. */ if (gdk_gl_query() == FALSE) { g_print("OpenGL not supported\n"); return 0; } else gl_ability = TRUE; // gdk_gl_init_check(&argc, &argv); // gl_ability = gtk_gl_init_check(&argc, &argv); global_data = g_new0(gconstpointer, 1); /* Condition Variables */ rtv_thread_cond = g_new0(GCond,1); g_cond_init(rtv_thread_cond); DATA_SET(global_data,"rtv_thread_cond",rtv_thread_cond); /* Mutexes */ dash_mutex = g_new0(GMutex, 1); g_mutex_init(dash_mutex); DATA_SET(global_data,"dash_mutex",dash_mutex); rtt_mutex = g_new0(GMutex, 1); g_mutex_init(rtt_mutex); DATA_SET(global_data,"rtt_mutex",rtt_mutex); rtv_mutex = g_new0(GMutex, 1); g_mutex_init(rtv_mutex); DATA_SET(global_data,"rtv_mutex",rtv_mutex); rtv_thread_mutex = g_new0(GMutex, 1); g_mutex_init(rtv_thread_mutex); DATA_SET(global_data,"rtv_thread_mutex",rtv_thread_mutex); serio_mutex = g_new0(GMutex, 1); g_mutex_init(serio_mutex); DATA_SET(global_data,"serio_mutex",serio_mutex); /* For testing if gettext works printf(_("Hello World!\n")); */ /* Build table of strings to enum values */ build_string_2_enum_table(); serial_params = (Serial_Params *)g_malloc0(sizeof(Serial_Params)); DATA_SET(global_data,"serial_params",serial_params); handle_args(argc,argv); /* handle CLI arguments */ /* This will exit mtx if the locking fails! */ /* Prevents multiple instances but stops esoteric usess too * create_mtx_lock(); * */ open_debug(); /* Open debug log */ ENTER(); /* Allocate memory */ init(); /* Initialize global vars */ make_mtx_dirs(); /* Create config file dirs if missing */ /* Create Message passing queues */ queue = g_async_queue_new(); DATA_SET_FULL(global_data,"io_data_queue",queue,g_async_queue_unref); queue = g_async_queue_new(); DATA_SET_FULL(global_data,"slave_msg_queue",queue,g_async_queue_unref); queue = g_async_queue_new(); DATA_SET_FULL(global_data,"io_repair_queue",queue,g_async_queue_unref); read_config(); setup_gui(); gtk_rc_parse_string("style \"override\"\n{\n\tGtkTreeView::horizontal-separator = 0\n\tGtkTreeView::vertical-separator = 0\n}\nwidget_class \"*\" style \"override\""); /* This doesn't do any GUI stuff so can run as is... */ id = g_timeout_add(2000,(GSourceFunc)flush_binary_logs,NULL); DATA_SET(global_data,"binlog_flush_id",GINT_TO_POINTER(id)); sleep_calib(); /* Check for first_time flag, if so, run first time wizard, otherwise load personality choice */ timer = g_timer_new(); DATA_SET_FULL(global_data,"mtx_uptime_timer",timer,g_timer_destroy); g_idle_add((GSourceFunc)check_for_first_time,NULL); DATA_SET(global_data,"ready",GINT_TO_POINTER(TRUE)); gdk_threads_enter(); gtk_main(); gdk_threads_leave(); EXIT(); return (0); }