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