Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
int
main(int argc, char *argv[])
{
        srand(time(NULL));
        mk_points(points, n_points);

        gtk_init(&argc, &argv);

        GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);


        /* set up GL window */
        GtkWidget *gl_area = gtk_gl_area_new();
        gtk_gl_area_set_has_depth_buffer(GTK_GL_AREA(gl_area), TRUE);

        g_signal_connect(gl_area, "create-context",
                         G_CALLBACK(create_context), NULL);
        g_signal_connect(gl_area, "realize", G_CALLBACK(realize), NULL);
        g_signal_connect(gl_area, "render", G_CALLBACK(render), NULL);
        g_signal_connect(gl_area, "resize", G_CALLBACK(resize), NULL);
        g_signal_connect(gl_area, "unrealize", G_CALLBACK(unrealize), NULL);

        gtk_container_add(GTK_CONTAINER(window), gl_area);


        gtk_widget_show_all(window);

        gtk_main();
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
void GLArea::create_gl_area(int* attrList) {
  GtkWidget* gtkglarea = gtk_gl_area_new(attrList);
  m_glarea = Glib::wrap(GTK_DRAWING_AREA(gtkglarea));

  m_glarea->add_events(
    Gdk::ALL_EVENTS_MASK);

  m_glarea->signal_realize().connect(
    sigc::mem_fun(this, &GLArea::glarea_on_realize));
  m_glarea->signal_expose_event().connect(
    sigc::mem_fun(this, &GLArea::glarea_on_expose_event));
  m_glarea->signal_configure_event().connect(
    sigc::mem_fun(this, &GLArea::glarea_on_configure_event));

  add(*m_glarea);
  m_glarea->show();
}
Exemplo n.º 6
0
Arquivo: glarea.c Projeto: GNOME/gtk
GtkWidget *
create_glarea_window (GtkWidget *do_widget)
{
  GtkWidget *window, *box, *button, *controls;
  int i;

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_display (GTK_WINDOW (window),  gtk_widget_get_display (do_widget));
  gtk_window_set_title (GTK_WINDOW (window), "OpenGL Area");
  gtk_window_set_default_size (GTK_WINDOW (window), 400, 600);
  g_signal_connect (window, "destroy", G_CALLBACK (close_window), NULL);

  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE);
  g_object_set (box, "margin", 12, NULL);
  gtk_box_set_spacing (GTK_BOX (box), 6);
  gtk_container_add (GTK_CONTAINER (window), box);

  gl_area = gtk_gl_area_new ();
  gtk_widget_set_hexpand (gl_area, TRUE);
  gtk_widget_set_vexpand (gl_area, TRUE);
  gtk_container_add (GTK_CONTAINER (box), gl_area);

  /* We need to initialize and free GL resources, so we use
   * the realize and unrealize signals on the widget
   */
  g_signal_connect (gl_area, "realize", G_CALLBACK (realize), NULL);
  g_signal_connect (gl_area, "unrealize", G_CALLBACK (unrealize), NULL);

  /* The main "draw" call for GtkGLArea */
  g_signal_connect (gl_area, "render", G_CALLBACK (render), NULL);

  controls = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE);
  gtk_container_add (GTK_CONTAINER (box), controls);
  gtk_widget_set_hexpand (controls, TRUE);

  for (i = 0; i < N_AXIS; i++)
    gtk_container_add (GTK_CONTAINER (controls), create_axis_slider (i));

  button = gtk_button_new_with_label ("Quit");
  gtk_widget_set_hexpand (button, TRUE);
  gtk_container_add (GTK_CONTAINER (box), button);
  g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);

  return window;
}
Exemplo n.º 7
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;
}
Exemplo n.º 8
0
Arquivo: glarea.c Projeto: 3v1n0/gtk
GtkWidget *
create_glarea_window (GtkWidget *do_widget)
{
  GtkWidget *window, *box, *button, *controls;
  int i;

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_screen (GTK_WINDOW (window), gtk_widget_get_screen (do_widget));
  gtk_window_set_title (GTK_WINDOW (window), "GtkGLArea - Golden Triangle");
  gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);
  gtk_container_set_border_width (GTK_CONTAINER (window), 12);
  g_signal_connect (window, "destroy", G_CALLBACK (close_window), NULL);

  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE);
  gtk_box_set_spacing (GTK_BOX (box), 6);
  gtk_container_add (GTK_CONTAINER (window), box);

  gl_area = gtk_gl_area_new ();
  gtk_widget_set_hexpand (gl_area, TRUE);
  gtk_widget_set_vexpand (gl_area, TRUE);
  gtk_container_add (GTK_CONTAINER (box), gl_area);

  /* the main "draw" call for GtkGLArea */
  g_signal_connect (gl_area, "render", G_CALLBACK (render), NULL);

  controls = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE);
  gtk_container_add (GTK_CONTAINER (box), controls);
  gtk_widget_set_hexpand (controls, TRUE);

  for (i = 0; i < N_AXIS; i++)
    gtk_container_add (GTK_CONTAINER (controls), create_axis_slider (i));

  button = gtk_button_new_with_label ("Quit");
  gtk_widget_set_hexpand (button, TRUE);
  gtk_container_add (GTK_CONTAINER (box), button);
  g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);

  return window;
}
Exemplo n.º 9
0
static void
gt_player_mpv_init(GtPlayerMpv* self)
{
    GtPlayerMpvPrivate* priv = gt_player_mpv_get_instance_private(self);

    priv->mpv = mpv_create();
    priv->opengl_area = gtk_gl_area_new();
    priv->opengl_ready = FALSE;
    priv->chat_view = GTK_WIDGET(gt_chat_new());

    check_mpv_error(mpv_set_option_string(priv->mpv, "vo", "opengl-cb"));

    check_mpv_error(mpv_initialize(priv->mpv));

    priv->mpv_opengl = mpv_get_sub_api(priv->mpv, MPV_SUB_API_OPENGL_CB);

    mpv_opengl_cb_set_update_callback(priv->mpv_opengl, (mpv_opengl_cb_update_fn) opengl_cb, self);

    g_signal_connect(priv->opengl_area, "render", G_CALLBACK(render_cb), self);

    gtk_container_add(GTK_CONTAINER(self), priv->opengl_area);
    gtk_widget_show_all(GTK_WIDGET(self));
}
static void
gt_player_backend_mpv_opengl_init(GtPlayerBackendMpvOpenGL* self)
{
    GtPlayerBackendMpvOpenGLPrivate* priv = gt_player_backend_mpv_opengl_get_instance_private(self);

    MESSAGE("Init");

    setlocale(LC_NUMERIC, "C");

    priv->widget = gtk_gl_area_new();
    priv->mpv = mpv_create();

    g_object_set(priv->widget, "expand", TRUE, NULL);

    gtk_widget_add_events(priv->widget, GDK_BUTTON_PRESS_MASK);

    check_mpv_error(mpv_set_option_string(priv->mpv, "audio-client-name", "GNOME Twitch"));
    check_mpv_error(mpv_set_option_string(priv->mpv, "title", ""));
    check_mpv_error(mpv_set_option_string(priv->mpv, "vo", "opengl-cb"));
    check_mpv_error(mpv_set_option_string(priv->mpv, "softvol", "yes"));
    check_mpv_error(mpv_set_option_string(priv->mpv, "softvol-max", "100"));
    check_mpv_error(mpv_observe_property(priv->mpv, 0, "volume", MPV_FORMAT_DOUBLE));
    check_mpv_error(mpv_observe_property(priv->mpv, 0, "cache-buffering-state", MPV_FORMAT_INT64));

    check_mpv_error(mpv_initialize(priv->mpv));

    mpv_set_wakeup_callback(priv->mpv, mpv_wakeup_cb, self);

    priv->mpv_opengl = mpv_get_sub_api(priv->mpv, MPV_SUB_API_OPENGL_CB);

    mpv_opengl_cb_set_update_callback(priv->mpv_opengl, (mpv_opengl_cb_update_fn) opengl_cb, self);

    g_signal_connect(priv->widget, "destroy", G_CALLBACK(widget_destroy_cb), self);
    g_signal_connect(priv->widget, "realize", G_CALLBACK(realise_oneshot_cb), self);
    g_signal_connect(priv->widget, "render", G_CALLBACK(render_cb), self);
}
Exemplo n.º 11
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;
}
Exemplo n.º 12
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;
}