Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages | Examples

vetWindowGTK.cpp

Go to the documentation of this file.
00001 
00017 #include "vetWindowGTK.h"
00018 #include "../vetUtility.h"
00019 
00020 
00022 // may be implemented by user
00023 void destroy (GtkWidget *widget, gpointer data) {
00024         //printf("destroy\n");
00025  }
00026 void expose (GtkWidget *widget, gpointer data) {
00027         //printf("expose\n");
00028  }
00029 //
00031 
00032 
00038 vetWindowGTK::vetWindowGTK(GtkWidget *mainWindow) : vetOutput()
00039  {
00040         INFO("vetWindowGTK::vetWindowGTK() : vetOutput() [CONTRUCTOR]")
00041 
00042         image = NULL;
00043         window = mainWindow;
00044         height = VETWGTK_DEF_HEIGHT;
00045         width = VETWGTK_DEF_WIDTH;
00046         v_sleeptime = 0;
00047         setDithering();
00048         init();
00049  }
00050 
00059 vetWindowGTK::vetWindowGTK(unsigned int w, unsigned int h, GtkWidget *mainWindow) : vetOutput()
00060  {
00061         INFO("vetWindowGTK::vetWindowGTK() : vetOutput() [CONTRUCTOR]")
00062 
00063         image = NULL;
00064         window = mainWindow;
00065         height = h;
00066         width = w;
00067         v_sleeptime = 0;
00068         setDithering();
00069         init();
00070  }
00071 
00075 vetWindowGTK::~vetWindowGTK()
00076  {
00077         while ( gtk_events_pending() )
00078                 gtk_main_iteration();
00079 
00080     gdk_flush();
00081 //      gtk_main_quit();
00082  }
00083 
00088 int vetWindowGTK::init()
00089  {
00090         gtk_init(NULL,NULL);
00091 //      gdk_rgb_init(); not needed?
00092         gtk_widget_set_default_colormap(gdk_rgb_get_cmap());
00093         gtk_widget_set_default_visual(gdk_rgb_get_visual());
00094 
00095         if (window == NULL)
00096          {
00097                 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
00098                 gtk_window_set_title(GTK_WINDOW (window), "vetWindowGTK 1.0");
00099                 gtk_signal_connect(GTK_OBJECT (window), "destroy_event", GTK_SIGNAL_FUNC (destroy), NULL);
00100          }
00101 
00102         image = gtk_drawing_area_new();
00103         gtk_signal_connect (GTK_OBJECT (image), "expose_event",  GTK_SIGNAL_FUNC (expose), NULL);
00104 
00105         gtk_container_add(GTK_CONTAINER(window),image);
00106         gtk_drawing_area_size(GTK_DRAWING_AREA(image),width,height);
00107         gtk_widget_set_usize(GTK_WIDGET(image),width,height);
00108 
00109         //pthread_create(&vue, NULL, (void * (*)(void *))gtk_main, NULL);
00110         gdk_flush();
00111         while (gtk_events_pending())
00112                 gtk_main_iteration();
00113         gdk_flush();
00114 
00115         return VETRET_OK;
00116  }
00117 
00118 
00124 VETRESULT vetWindowGTK::setHeight(unsigned int value)
00125  {
00126         if (image == NULL)
00127 
00128                 return VETRET_ILLEGAL_USE;
00129 
00130         height = value;
00131         gtk_drawing_area_size(GTK_DRAWING_AREA(image),width,height);
00132         gtk_widget_set_usize(GTK_WIDGET(image),width,height);
00133 
00134         return VETRET_OK;
00135  }
00136 
00142 VETRESULT vetWindowGTK::setWidth(unsigned int value)
00143  {
00144         if (image == NULL)
00145                 return VETRET_ILLEGAL_USE;
00146 
00147         width = value;
00148         gtk_drawing_area_size(GTK_DRAWING_AREA(image),width,height);
00149         gtk_widget_set_usize(GTK_WIDGET(image),width,height);
00150 
00151         return VETRET_OK;
00152  }
00153 
00154 
00155 
00156 
00164 VETRESULT vetWindowGTK::setFrameRate(float fps)
00165  {
00166         if (fps < 0.)
00167                 return VETRET_PARAM_ERR;
00168 
00169         if ( fps == 0 )
00170                 v_sleeptime = 0;
00171         else
00172                 v_sleeptime = (long)( (float)1000 / fps ); // milliseconds
00173 
00174         return VETRET_OK;
00175  }
00176 
00185 VETRESULT vetWindowGTK::show(bool doShowWindow)
00186  {
00187         gtk_widget_show(image);
00188 
00189         if (doShowWindow)
00190 
00191                 gtk_widget_show(window);
00192 
00193         return VETRET_OK;
00194  }
00195 
00204 VETRESULT vetWindowGTK::hide(bool doHideWindow)
00205  {
00206         gtk_widget_hide(image);
00207 
00208         if (doHideWindow)
00209                 gtk_widget_hide(window);
00210 
00211         return VETRET_OK;
00212  }
00213 
00221 void vetWindowGTK::setDithering(int value)
00222  {
00223         switch (value)
00224          {
00225                 case 1:
00226                         currDith = GDK_RGB_DITHER_NORMAL;
00227                         break;
00228                 case 2:
00229                         currDith = GDK_RGB_DITHER_MAX;
00230                         break;
00231                 default:
00232                         currDith = GDK_RGB_DITHER_NONE;
00233          }
00234  }
00235 
00236 
00247 VETRESULT vetWindowGTK::importFrom(vetFrameYUV420& img)
00248  {
00249         INFO("int vetWindowGTK::importFrom(vetFrameYUV420& img) [reading data]")
00250 
00251         if (image == NULL)
00252                 return VETRET_INTERNAL_ERR;
00253 
00254         vetFrameRGB24 tmp(img.width, img.height);
00255 
00256         img >> tmp;
00257 
00258         importFrom(tmp);
00259 
00260         return VETRET_OK_DEPRECATED;
00261  }
00262 
00263 
00274 VETRESULT vetWindowGTK::importFrom(vetFrameRGB24& img)
00275  {
00276         INFO("int vetWindowGTK::importFrom(vetFrameRGB24& img) [reading data]")
00277 
00278         if (image == NULL)
00279                 return VETRET_INTERNAL_ERR;
00280 
00281     gdk_draw_rgb_image( image->window,
00282                                                 image->style->fg_gc[image->state],
00283                                                 0,0,
00284                                                 img.width,img.height,
00285                                                 currDith,
00286                                                 (guchar*)img.data[0],
00287                                                 img.width*3
00288                                           );
00289 
00290         return VETRET_OK;
00291  }
00292 
00293 
00305 VETRESULT vetWindowGTK::importFrom(vetFrameT<unsigned char>& img)
00306  {
00307         INFO("int vetWindowGTK::importFrom(vetFrameT& img) [reading data]")
00308 
00309         if (image == NULL)
00310                 return VETRET_INTERNAL_ERR;
00311 
00312         return VETRET_NOT_IMPLEMENTED;
00313  }
00314 
00315 
00316 
00317 
00318 

Generated on Tue Jan 24 11:59:06 2006 for VETLib by  doxygen 1.4.4