1 #include "segv_vil_menus.h"
2 //:
3 // \file
4 #include "vgui/vgui.h"
5 #include "vgui/vgui_key.h"
6 #include "vgui/vgui_menu.h"
7 #include "segv_vil_segmentation_manager.h"
8
9 // Static menu callback functions
10
quit_callback()11 void segv_vil_menus::quit_callback()
12 {
13 segv_vil_segmentation_manager::instance()->quit();
14 }
15
16
load_image_callback()17 void segv_vil_menus::load_image_callback()
18 {
19 segv_vil_segmentation_manager::instance()->load_image();
20 }
21
save_image_callback()22 void segv_vil_menus::save_image_callback()
23 {
24 segv_vil_segmentation_manager::instance()->save_image();
25 }
26
save_camera_callback()27 void segv_vil_menus::save_camera_callback()
28 {
29 segv_vil_segmentation_manager::instance()->save_nitf_camera();
30 }
31
remove_image_callback()32 void segv_vil_menus::remove_image_callback()
33 {
34 segv_vil_segmentation_manager::instance()->remove_image();
35 }
36
37
convert_to_grey_callback()38 void segv_vil_menus::convert_to_grey_callback()
39 {
40 segv_vil_segmentation_manager::instance()->convert_to_grey();
41 }
42
set_range_params_callback()43 void segv_vil_menus::set_range_params_callback()
44 {
45 segv_vil_segmentation_manager::instance()->set_range_params();
46 }
47
clear_display_callback()48 void segv_vil_menus::clear_display_callback()
49 {
50 segv_vil_segmentation_manager::instance()->clear_display();
51 }
52
threshold_image_callback()53 void segv_vil_menus::threshold_image_callback()
54 {
55 segv_vil_segmentation_manager::instance()->threshold_image();
56 }
57
gradient_mag_angle_callback()58 void segv_vil_menus::gradient_mag_angle_callback()
59 {
60 segv_vil_segmentation_manager::instance()->gradient_mag_angle();
61 }
62
fft_callback()63 void segv_vil_menus::fft_callback()
64 {
65 segv_vil_segmentation_manager::instance()->fft();
66 }
67
harris_corners_callback()68 void segv_vil_menus::harris_corners_callback()
69 {
70 segv_vil_segmentation_manager::instance()->harris_corners();
71 }
72
nonmaximal_suppression_callback()73 void segv_vil_menus::nonmaximal_suppression_callback()
74 {
75 segv_vil_segmentation_manager::instance()->nonmaximal_suppression();
76 }
77
vd_edges_callback()78 void segv_vil_menus::vd_edges_callback()
79 {
80 segv_vil_segmentation_manager::instance()->vd_edges();
81 }
82
third_order_edges_callback()83 void segv_vil_menus::third_order_edges_callback()
84 {
85 segv_vil_segmentation_manager::instance()->third_order_edges();
86 }
87
fit_lines_callback()88 void segv_vil_menus::fit_lines_callback()
89 {
90 segv_vil_segmentation_manager::instance()->fit_lines();
91 }
92
fit_conics_callback()93 void segv_vil_menus::fit_conics_callback()
94 {
95 segv_vil_segmentation_manager::instance()->fit_conics();
96 }
97
fit_overlay_conics_callback()98 void segv_vil_menus::fit_overlay_conics_callback()
99 {
100 segv_vil_segmentation_manager::instance()->fit_overlay_conics();
101 }
102
mser_conics_callback()103 void segv_vil_menus::mser_conics_callback()
104 {
105 segv_vil_segmentation_manager::instance()->mser_conics();
106 }
107
108
regions_callback()109 void segv_vil_menus::regions_callback()
110 {
111 segv_vil_segmentation_manager::instance()->regions();
112 }
113
rotate_image_callback()114 void segv_vil_menus::rotate_image_callback()
115 {
116 segv_vil_segmentation_manager::instance()->rotate_image();
117 }
118
reduce_image_callback()119 void segv_vil_menus::reduce_image_callback()
120 {
121 segv_vil_segmentation_manager::instance()->reduce_image();
122 }
123
reduce_image_bicubic_callback()124 void segv_vil_menus::reduce_image_bicubic_callback()
125 {
126 segv_vil_segmentation_manager::instance()->reduce_image_bicubic();
127 }
128
expand_image_callback()129 void segv_vil_menus::expand_image_callback()
130 {
131 segv_vil_segmentation_manager::instance()->expand_image();
132 }
133
expand_image_bicubic_callback()134 void segv_vil_menus::expand_image_bicubic_callback()
135 {
136 segv_vil_segmentation_manager::instance()->expand_image_bicubic();
137 }
138
flip_image_lr_callback()139 void segv_vil_menus::flip_image_lr_callback()
140 {
141 segv_vil_segmentation_manager::instance()->flip_image_lr();
142 }
143
display_images_as_color_callback()144 void segv_vil_menus::display_images_as_color_callback()
145 {
146 segv_vil_segmentation_manager::instance()->display_images_as_color();
147 }
148
add_images_callback()149 void segv_vil_menus::add_images_callback()
150 {
151 segv_vil_segmentation_manager::instance()->add_images();
152 }
153
subtract_images_callback()154 void segv_vil_menus::subtract_images_callback()
155 {
156 segv_vil_segmentation_manager::instance()->subtract_images();
157 }
158
negate_image_callback()159 void segv_vil_menus::negate_image_callback()
160 {
161 segv_vil_segmentation_manager::instance()->negate_image();
162 }
163
extrema_callback()164 void segv_vil_menus::extrema_callback()
165 {
166 segv_vil_segmentation_manager::instance()->extrema();
167 }
168
rot_extrema_callback()169 void segv_vil_menus::rot_extrema_callback()
170 {
171 segv_vil_segmentation_manager::instance()->rot_extrema();
172 }
173
beaudet_callback()174 void segv_vil_menus::beaudet_callback()
175 {
176 segv_vil_segmentation_manager::instance()->beaudet();
177 }
178
parallel_coverage_callback()179 void segv_vil_menus::parallel_coverage_callback()
180 {
181 segv_vil_segmentation_manager::instance()->parallel_coverage();
182 }
183
entropy_callback()184 void segv_vil_menus::entropy_callback()
185 {
186 segv_vil_segmentation_manager::instance()->entropy();
187 }
188
minfo_callback()189 void segv_vil_menus::minfo_callback()
190 {
191 segv_vil_segmentation_manager::instance()->minfo();
192 }
193
max_trace_scale_callback()194 void segv_vil_menus::max_trace_scale_callback()
195 {
196 segv_vil_segmentation_manager::instance()->max_trace_scale();
197 }
198
color_order_callback()199 void segv_vil_menus::color_order_callback()
200 {
201 segv_vil_segmentation_manager::instance()->color_order();
202 }
203
inline_viewer_callback()204 void segv_vil_menus::inline_viewer_callback()
205 {
206 segv_vil_segmentation_manager::instance()->inline_viewer();
207 }
208
intensity_profile_callback()209 void segv_vil_menus::intensity_profile_callback()
210 {
211 segv_vil_segmentation_manager::instance()->intensity_profile();
212 }
213
intensity_histogram_callback()214 void segv_vil_menus::intensity_histogram_callback()
215 {
216 segv_vil_segmentation_manager::instance()->intensity_histogram();
217 }
218
219 // JIM PROJECT POINTS
project_points_callback()220 void segv_vil_menus::project_points_callback()
221 {
222 segv_vil_segmentation_manager::instance()->project_points();
223 }
224
image_as_vrml_points_callback()225 void segv_vil_menus::image_as_vrml_points_callback()
226 {
227 segv_vil_segmentation_manager::instance()->image_as_vrml_points();
228 }
229
line_image_callback()230 void segv_vil_menus::line_image_callback()
231 {
232 segv_vil_segmentation_manager::instance()->draw_line_image();
233 }
display_roi_callback()234 void segv_vil_menus::display_roi_callback()
235 {
236 segv_vil_segmentation_manager::instance()->display_roi();
237 }
create_roi_callback()238 void segv_vil_menus::create_roi_callback()
239 {
240 segv_vil_segmentation_manager::instance()->create_roi();
241 }
crop_image_callback()242 void segv_vil_menus::crop_image_callback()
243 {
244 segv_vil_segmentation_manager::instance()->crop_image();
245 }
gaussian_callback()246 void segv_vil_menus::gaussian_callback()
247 {
248 segv_vil_segmentation_manager::instance()->gaussian();
249 }
250
abs_value_callback()251 void segv_vil_menus::abs_value_callback()
252 {
253 segv_vil_segmentation_manager::instance()->abs_value();
254 }
255
256 //segv_vil_menus definition
get_menu()257 vgui_menu segv_vil_menus::get_menu()
258 {
259 vgui_menu menubar;
260 vgui_menu menufile;
261 vgui_menu menuview;
262 vgui_menu menuedit;
263 vgui_menu menuops;
264 //file menu entries
265 menufile.add( "Quit", quit_callback,(vgui_key)'q', vgui_CTRL);
266 menufile.add( "Load Image", load_image_callback,(vgui_key)'l', vgui_CTRL);
267 menufile.add( "Save Image", save_image_callback);
268 menufile.add( "Save NITF Camera", save_camera_callback);
269
270 //view menu entries
271 menuview.add("Remove Image", remove_image_callback);
272 menuview.add("Clear Spatial Objects", clear_display_callback);
273 menuview.add("Display ROI", display_roi_callback);
274 menuview.add("Intensity Profile", intensity_profile_callback);
275 menuview.add("Set Range Params", set_range_params_callback);
276 menuview.add("Inline Histogram Viewer", inline_viewer_callback);
277 menuview.add("Histogram Plot ", intensity_histogram_callback);
278 menuview.add("RotateImage ", rotate_image_callback);
279 menuview.add("ReduceImage(Burt)", reduce_image_callback);
280 menuview.add("ReduceImage(bicubic)", reduce_image_bicubic_callback);
281 menuview.add("ExpandImage(Burt) ", expand_image_callback);
282 menuview.add("ExpandImage(bicubic) ", expand_image_bicubic_callback);
283 menuview.add("Flip Image (LR)", flip_image_lr_callback);
284 menuview.add("Images as Color", display_images_as_color_callback);
285 menuview.add("Project Points RPC", project_points_callback);
286 menuview.add("Image as VRML Points", image_as_vrml_points_callback);
287
288 //edit menu entries
289
290 menuedit.add("Threshold", threshold_image_callback);
291 menuedit.add("Harris", harris_corners_callback);
292 menuedit.add("Beaudet", beaudet_callback);
293 menuedit.add("Parallel Coverage", parallel_coverage_callback);
294
295 menuedit.add("VD Edges", vd_edges_callback);
296 menuedit.add("Third Order Edges", third_order_edges_callback);
297 menuedit.add("Line Segments", fit_lines_callback);
298 menuedit.add("Conic Segments", fit_conics_callback);
299 menuedit.add("Overlay Conic Segments", fit_overlay_conics_callback);
300 menuedit.add("MSER Conic Regions", mser_conics_callback);
301 menuedit.add("Edgel Regions", regions_callback);
302 menuedit.add("Non-Maximal Suppression", nonmaximal_suppression_callback);
303 menuedit.add("Load Line Image", line_image_callback);
304
305 //operation menu entries
306 menuops.add("Create ROI:" , create_roi_callback);
307 menuops.add("Convert To Greyscale:", convert_to_grey_callback);
308 menuops.add("Crop Image:", crop_image_callback);
309 menuops.add("Add Images:", add_images_callback);
310 menuops.add("Subtract Images:", subtract_images_callback);
311 menuops.add("Negate Image:", negate_image_callback);
312 menuops.add("Gaussian Smoothing:", gaussian_callback);
313 menuops.add("Absolute Value:", abs_value_callback);
314 menuops.add("Entropy", entropy_callback);
315 menuops.add("Mutal Information", minfo_callback);
316 menuops.add("Max Trace Scale", max_trace_scale_callback);
317 menuops.add("Color Order", color_order_callback);
318 menuops.add("Extrema", extrema_callback);
319 menuops.add("Rotational Extrema", rot_extrema_callback);
320 menuops.add("GradMagAngle", gradient_mag_angle_callback);
321 menuops.add("FFT", fft_callback);
322 //Top level menu layout
323 menubar.add( "File", menufile);
324 menubar.add( "View", menuview);
325 menubar.add( "Edit", menuedit);
326 menubar.add( "Image Ops", menuops);
327 return menubar;
328 }
329