contrib/brl/vvid/bin/vidfpl_vil_menus.cxx
Go to the documentation of this file.
00001 #include "vidfpl_vil_menus.h"
00002 
00003 #include <vgui/vgui.h>
00004 #include <vgui/vgui_dialog.h>
00005 #include <vgui/vgui_key.h>
00006 #include <vgui/vgui_menu.h>
00007 #include <vvid/vvid_vil_file_manager.h>
00008 
00009 #ifdef HAS_MPEG2
00010 # include <vidl1/vidl1_mpegcodec.h>
00011 # include <vidl1/vidl1_io.h>
00012 
00013 //define mpeg callback here
00014 //this dialog box queries the user for info
00015 //necessary to initialize the codec. normally, this
00016 //would be done by reading the header, but that is
00017 //not implemented here.
00018 static void
00019 vidfpl_vil_load_mpegcodec_callback(vidl1_codec * vc)
00020 {
00021   vgui_dialog dialog( "MPEG player setup");
00022 
00023   bool grey_scale = false;
00024   bool demux_video = true;
00025   vcl_string pid = "0x00";
00026   int numframes = -1;
00027 
00028   dialog.checkbox("gray scale",grey_scale);
00029   dialog.checkbox("demux",demux_video);
00030   dialog.field("pid",pid);
00031   dialog.field("total frames. if not known, leave it.",numframes);
00032 
00033   if ( !dialog.ask())
00034   {
00035     vcl_cout << "vidfpl_vil_load_mpegcodec_callback. did not initialize codec.\n";
00036   }
00037 
00038   vidl1_mpegcodec * mpegcodec = vc->castto_vidl1_mpegcodec();
00039   if (!mpegcodec) return;
00040 
00041   mpegcodec->set_grey_scale(grey_scale);
00042   if (demux_video) mpegcodec->set_demux_video();
00043   mpegcodec->set_pid(pid.c_str());
00044   mpegcodec->set_number_frames(numframes);
00045   mpegcodec->init();
00046 }
00047 
00048 #endif // HAS_MPEG2
00049 
00050 //Static munu callback functions
00051 void vidfpl_vil_menus::load_video_callback()
00052 {
00053 #ifdef HAS_MPEG2
00054    //need to define callbacks
00055    vidl1_io::load_mpegcodec_callback = &vidfpl_vil_load_mpegcodec_callback;
00056 #endif
00057    vvid_vil_file_manager::instance()->load_video_file();
00058 }
00059 
00060 void vidfpl_vil_menus::load_pyramid_video_callback()
00061 {
00062   vvid_vil_file_manager::instance()->load_pyramid_video();
00063 }
00064 
00065 void vidfpl_vil_menus::pause_video_callback()
00066 {
00067   vvid_vil_file_manager::instance()->pause_video();
00068 }
00069 
00070 void vidfpl_vil_menus::next_frame_callback()
00071 {
00072   vvid_vil_file_manager::instance()->next_frame();
00073 }
00074 
00075 void vidfpl_vil_menus::prev_frame_callback()
00076 {
00077   vvid_vil_file_manager::instance()->prev_frame();
00078 }
00079 
00080 
00081 void vidfpl_vil_menus::start_frame_callback()
00082 {
00083   vvid_vil_file_manager::instance()->start_frame();
00084 }
00085 
00086 void vidfpl_vil_menus::end_frame_callback()
00087 {
00088   vvid_vil_file_manager::instance()->end_frame();
00089 }
00090 
00091 void vidfpl_vil_menus::play_video_callback()
00092 {
00093   vvid_vil_file_manager::instance()->play_video();
00094 }
00095 
00096 void vidfpl_vil_menus::play_pyramid_callback()
00097 {
00098   vvid_vil_file_manager::instance()->play_pyramid();
00099 }
00100 
00101 void vidfpl_vil_menus::stop_video_callback()
00102 {
00103   vvid_vil_file_manager::instance()->stop_video();
00104 }
00105 
00106 void vidfpl_vil_menus::set_range_params_callback()
00107 {
00108   vvid_vil_file_manager::instance()->set_range_params();
00109 }
00110 
00111 
00112 void vidfpl_vil_menus::create_box_callback()
00113 {
00114   vvid_vil_file_manager::instance()->create_box();
00115 }
00116 
00117 void vidfpl_vil_menus::save_roi_callback()
00118 {
00119   vvid_vil_file_manager::instance()->save_roi();
00120 }
00121 
00122 void vidfpl_vil_menus::quit_callback()
00123 {
00124   vvid_vil_file_manager::instance()->quit();
00125 }
00126 
00127 
00128 //vidfpl_vil_menus definition
00129 vgui_menu vidfpl_vil_menus::get_menu()
00130 {
00131   vgui_menu menubar;
00132   vgui_menu menufile;
00133   vgui_menu menuview;
00134   vgui_menu menuedit;
00135   vgui_menu menutrack;
00136   vgui_menu menuprocess;
00137   vgui_menu menudebug;
00138 
00139   //file menu entries
00140   menufile.add( "Load", load_video_callback);
00141   menufile.add( "Load Pyramid", load_pyramid_video_callback);
00142 
00143   menufile.add( "Save with ROI", save_roi_callback);
00144   menufile.add( "Quit", quit_callback,(vgui_key)'q', vgui_CTRL);
00145 
00146   //view menu entries
00147 
00148   menuview.add( "Start Frame", start_frame_callback);
00149   menuview.add( "End Frame", end_frame_callback);
00150   menuview.add( "Play", play_video_callback);
00151   menuview.add( "Play Pyramid", play_pyramid_callback);
00152   menuview.add( "Pause", pause_video_callback,(vgui_key)'p', vgui_CTRL);
00153   menuview.add( "Next", next_frame_callback,(vgui_key)'f', vgui_CTRL);
00154   menuview.add( "Prev", prev_frame_callback,(vgui_key)'b', vgui_CTRL);
00155   menuview.add( "Stop", stop_video_callback,(vgui_key)'s', vgui_CTRL);
00156   menuview.add( "Set Range Map", set_range_params_callback);
00157 
00158   //edit menu entries
00159   menuedit.add( "Create Box", create_box_callback);
00160   //Process menu entries
00161 
00162   // debug menu entries
00163 
00164   //Top level menu layout
00165   menubar.add( "File", menufile);
00166   menubar.add( "View", menuview);
00167   menubar.add( "Edit", menuedit);
00168   menubar.add( "Track", menutrack);
00169   menubar.add( "Process", menuprocess);
00170   menubar.add( "Debug", menudebug);
00171   return menubar;
00172 }