Matt23488

Gtk with Video

May 20th, 2011
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. gboolean
  2. expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
  3. {
  4.     GtkImage *gtkImage;
  5.     gtkImage = GTK_IMAGE (data);
  6.     GdkImage **gdkImage;
  7.     gtk_image_get_image (gtkImage, gdkImage, NULL);
  8.  
  9.     gdk_draw_image (
  10.         widget->window,
  11.         widget->style->fg_gc[gtk_widget_get_state (widget)],
  12.         *gdkImage,
  13.         0,
  14.         0,
  15.         widget->allocation.width,
  16.         widget->allocation.height,
  17.         640,
  18.         480
  19.         );
  20.  
  21.     return TRUE;
  22. }
  23.  
  24. void
  25. buttonShowVid_clicked (GtkButton *button, gpointer user_data)
  26. {
  27.     GtkEntry *entry;
  28.     entry = GTK_ENTRY (user_data);
  29.  
  30.     CvCapture *video;
  31.     video = cvCreateFileCapture (gtk_entry_get_text (entry));
  32.  
  33.     if(video == NULL)
  34.     {
  35.         GtkWidget *errDialog;
  36.         errDialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Error loading video \"%s\"", gtk_entry_get_text (entry));
  37.         gtk_dialog_run (GTK_DIALOG (errDialog));
  38.         gtk_widget_destroy (errDialog);
  39.         return;
  40.     }
  41.  
  42.     GtkWidget *window;
  43.     GtkWidget *vbox;
  44.     GtkWidget *draw;
  45.  
  46.     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  47.     vbox = gtk_vbox_new (FALSE, 0);
  48.     draw = gtk_drawing_area_new ();
  49.     gtk_widget_set_size_request (draw, 640, 480);
  50.  
  51.     gtk_container_add (GTK_CONTAINER (window), vbox);
  52.     gtk_box_pack_start (GTK_BOX (vbox), draw, FALSE, FALSE, 0);
  53.  
  54.     gtk_widget_show_all (window);
  55.  
  56.     while(cvGrabFrame(video))
  57.     {
  58.         IplImage *image;
  59.         image = cvRetrieveFrame(video);
  60.  
  61.         GdkPixbuf *pix;
  62.         pix = convertOpenCvToGtk (image);
  63.  
  64.         GtkWidget *gtkImage;
  65.         gtkImage = gtk_image_new_from_pixbuf(pix);
  66.  
  67.         g_signal_connect (G_OBJECT (draw), "expose-event", G_CALLBACK (expose_event_callback), (gpointer)gtkImage);
  68.     }
  69.  
  70.    
  71.  
  72.    
  73. }
Advertisement
Add Comment
Please, Sign In to add comment