1 #ifndef segv_misc_manager_h_
2 #define segv_misc_manager_h_
3 //--------------------------------------------------------------------------------
4 //:
5 // \file
6 // \brief Manager for segmentation algorithm execution and display
7 // \author
8 //   J.L. Mundy
9 //
10 // \verbatim
11 //  Modifications:
12 //   J.L. Mundy November 18, 2002    Initial version.
13 // \endverbatim
14 //---------------------------------------------------------------------------
15 
16 #include <iostream>
17 #include <vector>
18 #ifdef _MSC_VER
19 #  include <vcl_msvc_warnings.h>
20 #endif
21 #include <vil/vil_image_resource.h>
22 #include <vsol/vsol_line_2d_sptr.h>
23 #include <vsol/vsol_conic_2d_sptr.h>
24 #include <vsol/vsol_polyline_2d_sptr.h>
25 #include <vtol/vtol_edge_2d_sptr.h>
26 #include <vsol/vsol_point_2d_sptr.h>
27 #include <vtol/vtol_intensity_face_sptr.h>
28 #include <vtol/vtol_face_2d_sptr.h>
29 #include <vgui/vgui_wrapper_tableau.h>
30 #include <vgui/vgui_style.h>
31 #include <vgui/vgui_style_sptr.h>
32 #include <vgui/vgui_grid_tableau_sptr.h>
33 #include <vgui/vgui_range_map_params_sptr.h>
34 #include <bgui/bgui_picker_tableau_sptr.h>
35 #include <bgui/bgui_vtol2D_tableau_sptr.h>
36 #include <bgui/bgui_image_tableau_sptr.h>
37 #include <bgui/bgui_bargraph_clipon_tableau_sptr.h>
38 #include <bgui/bgui_graph_tableau_sptr.h>
39 #include <bgui/bgui_graph_tableau.h>
40 
41 class vgui_window;
42 
43 class segv_misc_manager : public vgui_wrapper_tableau
44 {
45  public:
46   segv_misc_manager();
47   ~segv_misc_manager();
48   static segv_misc_manager *instance();
49   void quit();
50   void load_image();
51   void save_image();
52 #if 0
53   //: visualization
54   void set_range_params();
55   void inline_viewer();
56   void intensity_profile();
57   void intensity_histogram();
58 #endif
59 
60  //:utilities
61   void clear_display();
62   void clear_all();
63   void init();
64 #if 0
65   void remove_image();
66   void convert_to_grey();
67 #endif
68   //:debug and development routines
69   void project_on_subm();
70   void project_on_articulation();
71   //: access to the window
get_window()72   vgui_window* get_window(){return win_;}
set_window(vgui_window * win)73   void set_window(vgui_window* win){win_=win;}
74 
75  protected:
76   void draw_edges(std::vector<vtol_edge_2d_sptr>& edges, bool verts=false);
77   void draw_lines(std::vector<vsol_line_2d_sptr> const & line_segs,
78                   const vgui_style_sptr& style = nullptr);
79 
80   void draw_conics(std::vector<vsol_conic_2d_sptr> const & conic_segs,
81                   const vgui_style_sptr& style = nullptr);
82 
83   void draw_polylines(std::vector<vsol_polyline_2d_sptr> const & polys,
84                       vgui_style_sptr style=(vgui_style*)nullptr);
85   void draw_regions(std::vector<vtol_intensity_face_sptr>& regions,
86                     bool verts=false);
87   void draw_points(std::vector<vsol_point_2d_sptr> const & points,
88                    const vgui_style_sptr& style);
89 
90   void set_selected_grid_image(vil_image_resource_sptr const& image,
91                                vgui_range_map_params_sptr const& rmps =nullptr);
92 
93   void add_image_at(vil_image_resource_sptr const& image,
94                     const unsigned col, const unsigned row,
95                     vgui_range_map_params_sptr const& rmps = nullptr);
96 
97   void add_image(vil_image_resource_sptr const& image,
98                  vgui_range_map_params_sptr const& rmps =nullptr);
99 
100   vil_image_resource_sptr selected_image();
101   vil_image_resource_sptr image_at(const unsigned col, const unsigned row);
102   bool
103   set_image_at(const unsigned col, const unsigned row, vil_image_resource_sptr const& image);
104   bgui_image_tableau_sptr selected_image_tab();
105   bgui_vtol2D_tableau_sptr vtol2D_tab_at(const unsigned col,const unsigned row);
106   bgui_vtol2D_tableau_sptr selected_vtol2D_tab();
107   bgui_picker_tableau_sptr selected_picker_tab();
108   vtol_face_2d_sptr face_at(const int col, const int row);
109   vgui_range_map_params_sptr range_params(vil_image_resource_sptr const& image);
110  private:
111   //flags
112   bool first_; //first image load
113   vgui_window* win_;
114   vgui_grid_tableau_sptr grid_;
115   vtol_face_2d_sptr foreground_face_;
116   vtol_face_2d_sptr background_face_;
117   bgui_bargraph_clipon_tableau_sptr bargraph_;
118   static segv_misc_manager *instance_;
119 };
120 
121 #endif // segv_misc_manager_h_
122