Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- gboolean
- expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
- {
- GtkImage *gtkImage;
- gtkImage = GTK_IMAGE (data);
- GdkImage **gdkImage;
- gtk_image_get_image (gtkImage, gdkImage, NULL);
- gdk_draw_image (
- widget->window,
- widget->style->fg_gc[gtk_widget_get_state (widget)],
- *gdkImage,
- 0,
- 0,
- widget->allocation.width,
- widget->allocation.height,
- 640,
- 480
- );
- return TRUE;
- }
- void
- buttonShowVid_clicked (GtkButton *button, gpointer user_data)
- {
- GtkEntry *entry;
- entry = GTK_ENTRY (user_data);
- CvCapture *video;
- video = cvCreateFileCapture (gtk_entry_get_text (entry));
- if(video == NULL)
- {
- GtkWidget *errDialog;
- 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));
- gtk_dialog_run (GTK_DIALOG (errDialog));
- gtk_widget_destroy (errDialog);
- return;
- }
- GtkWidget *window;
- GtkWidget *vbox;
- GtkWidget *draw;
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- vbox = gtk_vbox_new (FALSE, 0);
- draw = gtk_drawing_area_new ();
- gtk_widget_set_size_request (draw, 640, 480);
- gtk_container_add (GTK_CONTAINER (window), vbox);
- gtk_box_pack_start (GTK_BOX (vbox), draw, FALSE, FALSE, 0);
- gtk_widget_show_all (window);
- while(cvGrabFrame(video))
- {
- IplImage *image;
- image = cvRetrieveFrame(video);
- GdkPixbuf *pix;
- pix = convertOpenCvToGtk (image);
- GtkWidget *gtkImage;
- gtkImage = gtk_image_new_from_pixbuf(pix);
- g_signal_connect (G_OBJECT (draw), "expose-event", G_CALLBACK (expose_event_callback), (gpointer)gtkImage);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment