#include <stdlib.h>
#include <gtk/gtk.h>
#include <unicap.h>
#include "unicapgtk_videodisplay.h"

/*
  invert the first half of the image data
 */
void predisplay_cb( GtkWidget *ugtk, unicap_data_buffer_t *buffer, gpointer user_data )
{
   int i;
   
   for ( i = 0; i < buffer->buffer_size/2; i++ )
       *( buffer->data + i ) = ~(*( buffer->data + i ));
}

int main( int   argc,
          char *argv[] )
{
  GtkWidget *window;
  GtkWidget *ugtk;
  
  gtk_init (&argc, &argv);

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  
  g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (exit), NULL);
  
  ugtk = unicapgtk_videodisplay_new( NULL );  
  gtk_container_add (GTK_CONTAINER (window), ugtk);

  gtk_widget_show_all (window);

  // register a callback which is called immediately before an image is displayed
  g_signal_connect( G_OBJECT( ugtk ), "unicapgtk_videodisplay_predisplay", 
                   G_CALLBACK( predisplay_cb ), NULL );

  unicapgtk_videodisplay_start( UNICAPGTK_VIDEODISPLAY( ugtk ) );
  
  gtk_main ();
  
  return 0;
}

