contrib/brl/vvid/bin/vidfpl_menus.cxx
Go to the documentation of this file.
00001 #include "vidfpl_menus.h"
00002 
00003 #include <vcl_cstdlib.h> // for vcl_exit()
00004 #include <vgui/vgui.h>
00005 #include <vgui/vgui_dialog.h>
00006 #include <vgui/vgui_key.h>
00007 #include <vgui/vgui_menu.h>
00008 #include <vvid/vvid_file_manager.h>
00009 
00010 #ifdef HAS_MPEG2
00011 # include <vidl_vil1/vidl_vil1_mpegcodec.h>
00012 # include <vidl_vil1/vidl_vil1_io.h>
00013 
00014 //define mpeg callback here
00015 //this dialog box queries the user for info
00016 //necessary to initialize the codec. normally, this
00017 //would be done by reading the header, but that is
00018 //not implemented here.
00019 static void
00020 vidfpl_load_mpegcodec_callback(vidl_vil1_codec * vc)
00021 {
00022   vgui_dialog dialog( "MPEG player setup");
00023 
00024   bool grey_scale = false;
00025   bool demux_video = true;
00026   vcl_string pid = "0x00";
00027   int numframes = -1;
00028 
00029   dialog.checkbox("gray scale",grey_scale);
00030   dialog.checkbox("demux",demux_video);
00031   dialog.field("pid",pid);
00032   dialog.field("total frames. if not known, leave it.",numframes);
00033 
00034   if ( !dialog.ask())
00035   {
00036     vcl_cout << "vidfpl_load_mpegcodec_callback. did not initialize codec.\n";
00037   }
00038 
00039   vidl_vil1_mpegcodec * mpegcodec = vc->castto_vidl_vil1_mpegcodec();
00040   if (!mpegcodec) return;
00041 
00042   mpegcodec->set_grey_scale(grey_scale);
00043   if (demux_video) mpegcodec->set_demux_video();
00044   mpegcodec->set_pid(pid.c_str());
00045   mpegcodec->set_number_frames(numframes);
00046   mpegcodec->init();
00047 }
00048 
00049 #endif // HAS_MPEG2
00050 
00051 //Static munu callback functions
00052 void vidfpl_menus::load_video_callback()
00053 {
00054 #ifdef HAS_MPEG2
00055    //need to define callbacks
00056    vidl_vil1_io::load_mpegcodec_callback = &vidfpl_load_mpegcodec_callback;
00057 #endif
00058    vvid_file_manager::instance()->load_video_file();
00059 }
00060 
00061 void vidfpl_menus::pause_video_callback()
00062 {
00063   vvid_file_manager::instance()->pause_video();
00064 }
00065 
00066 void vidfpl_menus::next_frame_callback()
00067 {
00068   vvid_file_manager::instance()->next_frame();
00069 }
00070 
00071 void vidfpl_menus::prev_frame_callback()
00072 {
00073   vvid_file_manager::instance()->prev_frame();
00074 }
00075 
00076 
00077 void vidfpl_menus::start_frame_callback()
00078 {
00079   vvid_file_manager::instance()->start_frame();
00080 }
00081 
00082 void vidfpl_menus::end_frame_callback()
00083 {
00084   vvid_file_manager::instance()->end_frame();
00085 }
00086 
00087 void vidfpl_menus::play_video_callback()
00088 {
00089   vvid_file_manager::instance()->play_video();
00090 }
00091 
00092 void vidfpl_menus::stop_video_callback()
00093 {
00094   vvid_file_manager::instance()->stop_video();
00095 }
00096 
00097 void vidfpl_menus::easy2D_tableau_demo_callback()
00098 {
00099   vvid_file_manager::instance()->easy2D_tableau_demo();
00100 }
00101 
00102 void vidfpl_menus::no_op_callback()
00103 {
00104   vvid_file_manager::instance()->no_op();
00105 }
00106 
00107 void vidfpl_menus::difference_frames_callback()
00108 {
00109   vvid_file_manager::instance()->difference_frames();
00110 }
00111 
00112 void vidfpl_menus::compute_motion_callback()
00113 {
00114   vvid_file_manager::instance()->compute_motion();
00115 }
00116 
00117 void vidfpl_menus::compute_lucas_kanade_callback()
00118 {
00119   vvid_file_manager::instance()->compute_lucas_kanade();
00120 }
00121 
00122 void vidfpl_menus::compute_harris_corners_callback()
00123 {
00124   vvid_file_manager::instance()->compute_harris_corners();
00125 }
00126 
00127 void vidfpl_menus::compute_vd_edges_callback()
00128 {
00129   vvid_file_manager::instance()->compute_vd_edges();
00130 }
00131 
00132 void vidfpl_menus::compute_line_fit_callback()
00133 {
00134   vvid_file_manager::instance()->compute_line_fit();
00135 }
00136 
00137 void vidfpl_menus::compute_grid_match_callback()
00138 {
00139   vvid_file_manager::instance()->compute_grid_match();
00140 }
00141 
00142 void vidfpl_menus::compute_corr_tracking_callback()
00143 {
00144   vvid_file_manager::instance()->compute_corr_tracking();
00145 }
00146 
00147 void vidfpl_menus::compute_info_tracking_callback()
00148 {
00149   vvid_file_manager::instance()->compute_info_tracking();
00150 }
00151 
00152 void vidfpl_menus::display_poly_track_callback()
00153 {
00154   vvid_file_manager::instance()->display_poly_track();
00155 }
00156 
00157 void vidfpl_menus::display_art_model_track_callback()
00158 {
00159   vvid_file_manager::instance()->display_art_model_track();
00160 }
00161 
00162 void vidfpl_menus::start_save_display_callback()
00163 {
00164   vvid_file_manager::instance()->start_save_display();
00165 }
00166 
00167 void vidfpl_menus::end_save_display_callback()
00168 {
00169   vvid_file_manager::instance()->end_save_display();
00170 }
00171 
00172 void vidfpl_menus::generate_basis_sequence_callback()
00173 {
00174   vvid_file_manager::instance()->generate_basis_sequence();
00175 }
00176 
00177 void vidfpl_menus::compute_fourier_transform_callback()
00178 {
00179   vvid_file_manager::instance()->compute_fourier_transform();
00180 }
00181 
00182 void vidfpl_menus::spatial_filter_callback()
00183 {
00184   vvid_file_manager::instance()->spatial_filter();
00185 }
00186 
00187 void vidfpl_menus::create_box_callback()
00188 {
00189   vvid_file_manager::instance()->create_box();
00190 }
00191 
00192 void vidfpl_menus::create_polygon_callback()
00193 {
00194   vvid_file_manager::instance()->create_polygon();
00195 }
00196 
00197 void vidfpl_menus::create_stem_callback()
00198 {
00199   vvid_file_manager::instance()->create_stem();
00200 }
00201 
00202 void vidfpl_menus::create_long_arm_tip_callback()
00203 {
00204   vvid_file_manager::instance()->create_long_arm_tip();
00205 }
00206 
00207 void vidfpl_menus::create_short_arm_tip_callback()
00208 {
00209   vvid_file_manager::instance()->create_short_arm_tip();
00210 }
00211 
00212 void vidfpl_menus::create_background_model_callback()
00213 {
00214   vvid_file_manager::instance()->create_background_model();
00215 }
00216 
00217 
00218 void vidfpl_menus::exercise_art_model_callback()
00219 {
00220   vvid_file_manager::instance()->exercise_art_model();
00221 }
00222 
00223 void vidfpl_menus::track_art_model_callback()
00224 {
00225   vvid_file_manager::instance()->track_art_model();
00226 }
00227 
00228 void vidfpl_menus::display_ihs_callback()
00229 {
00230   vvid_file_manager::instance()->display_ihs();
00231 }
00232 
00233 void vidfpl_menus::save_frame_callback()
00234 {
00235   vvid_file_manager::instance()->save_frame();
00236 }
00237 
00238 void vidfpl_menus::save_half_res_callback()
00239 {
00240   vvid_file_manager::instance()->save_half_res();
00241 }
00242 
00243 
00244 void vidfpl_menus::display_tracked_hist_data_callback()
00245 {
00246   vvid_file_manager::instance()->display_tracked_hist_data();
00247 }
00248 
00249 void vidfpl_menus::capture_feature_data_callback()
00250 {
00251   vvid_file_manager::instance()->capture_feature_data();
00252 }
00253 
00254 void vidfpl_menus::capture_snippets_callback()
00255 {
00256  vvid_file_manager::instance()->capture_snippets();
00257 }
00258 
00259 void vidfpl_menus::quit_callback()
00260 {
00261   vcl_exit(1);
00262 }
00263 
00264 
00265 //vidfpl_menus definition
00266 vgui_menu vidfpl_menus::get_menu()
00267 {
00268   vgui_menu menubar;
00269   vgui_menu menufile;
00270   vgui_menu menuview;
00271   vgui_menu menuedit;
00272   vgui_menu menutrack;
00273   vgui_menu menuprocess;
00274   vgui_menu menudebug;
00275 
00276   //file menu entries
00277   menufile.add( "Load", load_video_callback);
00278   menufile.add( "Quit", quit_callback,(vgui_key)'q', vgui_CTRL);
00279   menufile.add( "Start Save Display", start_save_display_callback);
00280   menufile.add( "End Save Display", end_save_display_callback,
00281                 (vgui_key)'e', vgui_CTRL);
00282   menufile.add( "Save Current Frame", save_frame_callback);
00283   menufile.add( "Save Half Resolution Video", save_half_res_callback);
00284   menufile.add( "Capture Snippets from Track", capture_snippets_callback);
00285 
00286   //view menu entries
00287 
00288   menuview.add( "Start Frame", start_frame_callback);
00289   menuview.add( "End Frame", end_frame_callback);
00290   menuview.add( "Play", play_video_callback);
00291   menuview.add( "Pause", pause_video_callback,(vgui_key)'p', vgui_CTRL);
00292   menuview.add( "Next", next_frame_callback,(vgui_key)'f', vgui_CTRL);
00293   menuview.add( "Prev", prev_frame_callback,(vgui_key)'b', vgui_CTRL);
00294   menuview.add( "Stop", stop_video_callback,(vgui_key)'s', vgui_CTRL);
00295   menuview.add( "Display Track", display_poly_track_callback);
00296   menuview.add( "Display Histogram Track Image",
00297                 display_tracked_hist_data_callback);
00298 
00299   menuview.add( "Display Art Model Track", display_art_model_track_callback);
00300 
00301   //edit menu entries
00302   menuedit.add( "Create Box", create_box_callback);
00303   menuedit.add( "Create Polygon", create_polygon_callback,(vgui_key)'a', vgui_CTRL);
00304 
00305   menuedit.add( "Create Background Model", create_background_model_callback,
00306                 (vgui_key)'4', vgui_CTRL);
00307 
00308   menuedit.add( "Create Stem", create_stem_callback,
00309                 (vgui_key)'1', vgui_CTRL);
00310   menuedit.add( "Create Long Arm Tip", create_long_arm_tip_callback,
00311                 (vgui_key)'2', vgui_CTRL);
00312   menuedit.add( "Create Short Arm Tip", create_short_arm_tip_callback,
00313                 (vgui_key)'3', vgui_CTRL);
00314 
00315   //Process menu entries
00316   menuprocess.add( "No Op", no_op_callback);
00317   menuprocess.add( "Frame Difference", difference_frames_callback);
00318   menuprocess.add( "Compute Motion", compute_motion_callback);
00319   menuprocess.add( "Compute Lucas-Kanade Flow", compute_lucas_kanade_callback);
00320   menuprocess.add( "Compute Harris Corners", compute_harris_corners_callback);
00321   menuprocess.add( "Compute VD Edges", compute_vd_edges_callback);
00322   menuprocess.add( "Compute Line Fit", compute_line_fit_callback);
00323   menuprocess.add( "Compute Grid Match", compute_grid_match_callback);
00324   menuprocess.add( "Generate Basis ", generate_basis_sequence_callback);
00325   menuprocess.add( "Compute Fourier Transform ",
00326                    compute_fourier_transform_callback);
00327   menuprocess.add( "Spatial Filter ", spatial_filter_callback);
00328   menuprocess.add( "Capture Feature Data ", capture_feature_data_callback);
00329 
00330   //Tracking menu entries
00331   menutrack.add( "Compute Corr Tracking", compute_corr_tracking_callback);
00332   menutrack.add( "Compute Info Tracking", compute_info_tracking_callback);
00333   menutrack.add( "Exercise Art Model", exercise_art_model_callback);
00334   menutrack.add( "Track Art Model", track_art_model_callback);
00335 
00336   // debug menu entries
00337   menudebug.add( "Display IHS", display_ihs_callback);
00338   menudebug.add( "easy2D Demo", easy2D_tableau_demo_callback);
00339 
00340   //Top level menu layout
00341   menubar.add( "File", menufile);
00342   menubar.add( "View", menuview);
00343   menubar.add( "Edit", menuedit);
00344   menubar.add( "Track", menutrack);
00345   menubar.add( "Process", menuprocess);
00346   menubar.add( "Debug", menudebug);
00347   return menubar;
00348 }