23 #ifndef _FIREVISION_TOOLS_FIRESTATION_FIRESTATION_H_
24 #define _FIREVISION_TOOLS_FIRESTATION_FIRESTATION_H_
26 #include <fvutils/base/roi.h>
27 #include <fvutils/color/colorspaces.h>
28 #include <netcomm/dns-sd/avahi_thread.h>
32 namespace firevision {
34 class SharedMemoryImageBuffer;
37 class FuseImageListWidget;
38 class MirrorCalibTool;
41 class AvahiDispatcher;
56 class ShmColumnRecord :
public Gtk::TreeModel::ColumnRecord
65 Gtk::TreeModelColumn<int> m_id;
66 Gtk::TreeModelColumn<Glib::ustring> m_name;
70 class FuseColumnRecord :
public Gtk::TreeModel::ColumnRecord
78 add(m_service_domain);
79 add(m_service_hostname);
82 add(m_image_width), add(m_image_height);
83 add(m_image_colorspace);
86 Gtk::TreeModelColumn<int> m_id;
87 Gtk::TreeModelColumn<Glib::ustring> m_name;
88 Gtk::TreeModelColumn<Glib::ustring> m_service_name;
89 Gtk::TreeModelColumn<Glib::ustring> m_service_type;
90 Gtk::TreeModelColumn<Glib::ustring> m_service_domain;
91 Gtk::TreeModelColumn<Glib::ustring> m_service_hostname;
92 Gtk::TreeModelColumn<unsigned short int> m_service_port;
93 Gtk::TreeModelColumn<Glib::ustring> m_image_id;
94 Gtk::TreeModelColumn<unsigned int> m_image_width;
95 Gtk::TreeModelColumn<unsigned int> m_image_height;
96 Gtk::TreeModelColumn<Glib::ustring> m_image_colorspace;
100 typedef enum { SRC_NONE, SRC_FILE, SRC_SHM, SRC_FUSE } ImageSource;
102 typedef enum { MODE_VIEWER, MODE_COLOR_TRAIN, MODE_MIRROR_CALIB, MODE_MIRROR_CALIB_EVAL } OpMode;
108 bool call_update_image();
109 void enable_cont_img_trans();
114 void on_fuse_image_selected();
115 void on_colormap_updated();
116 bool image_click(GdkEventButton *);
121 void pre_open_img_src();
122 void post_open_img_src();
123 void resize_image(Gtk::Allocation &allocation);
127 firevision::hint_t ct_get_fg_object();
128 void ct_object_changed();
130 double mc_line_angle_deg;
132 void mc_set_center();
134 void mc_simulate_clicks();
136 bool mc_on_line_angle_changed(Gtk::ScrollType scroll,
double value);
140 Glib::Dispatcher m_update_img;
145 Gtk::Window * m_wnd_main;
146 Gtk::Dialog * m_dlg_open_shm;
147 Gtk::Dialog * m_dlg_open_fuse;
148 Gtk::CheckButton * m_ckb_fuse_jpeg;
149 Gtk::CheckButton * m_ckb_cont_trans;
150 Gtk::SpinButton * m_spb_update_time;
151 Gtk::FileChooserDialog *m_fcd_open_image;
152 Gtk::FileChooserDialog *m_fcd_save_image;
153 Gtk::ToolButton * m_tbtn_open_file;
154 Gtk::ToolButton * m_tbtn_open_folder;
155 Gtk::ToolButton * m_tbtn_open_shm;
156 Gtk::ToolButton * m_tbtn_open_fuse;
157 Gtk::ToolButton * m_tbtn_update;
158 Gtk::ToolButton * m_tbtn_save;
159 Gtk::ToolButton * m_tbtn_close_camera;
160 Gtk::ToolButton * m_tbtn_exit;
161 Gtk::Image * m_img_image;
162 Gtk::EventBox * m_evt_image;
163 Gtk::TreeView * m_trv_shm_image_ids;
164 Gtk::TreeView * m_trv_fuse_services;
165 Gtk::Statusbar * m_stb_status;
168 Gtk::ComboBox * m_cmb_ct_type;
169 Gtk::ToggleButton *m_btn_ct_start;
170 Gtk::ToggleButton *m_btn_ct_seg;
171 Gtk::SpinButton * m_spbtn_depth;
172 Gtk::SpinButton * m_spbtn_width;
173 Gtk::SpinButton * m_spbtn_height;
176 Gtk::FileChooserDialog *m_fcd_mc_load_mask;
177 Gtk::FileChooserDialog *m_fcd_mc_save;
178 Gtk::FileChooserDialog *m_fcd_mc_load;
179 Gtk::Button * m_btn_mc_load_mask;
180 Gtk::ToggleButton * m_btn_mc_set_center;
181 Gtk::Button * m_btn_mc_memorize;
182 Gtk::Button * m_btn_mc_simulate_clicks;
183 Gtk::Scale * m_scl_mc_line;
184 Gtk::Button * m_btn_mc_load;
185 Gtk::Button * m_btn_mc_save;
186 Gtk::Entry * m_ent_mc_dist;
187 Gtk::Entry * m_ent_mc_ori;
189 ShmColumnRecord m_shm_columns;
190 Glib::RefPtr<Gtk::ListStore> m_shm_list_store;
192 FuseColumnRecord m_fuse_columns;
193 Glib::RefPtr<Gtk::TreeStore> m_fuse_tree_store;
199 ImageSource m_img_src;
203 unsigned char *m_yuv_orig_buffer;
204 unsigned char *m_yuv_draw_buffer;
205 unsigned char *m_yuv_scaled_buffer;
206 unsigned char *m_rgb_scaled_buffer;
208 unsigned int m_img_width;
209 unsigned int m_img_height;
210 unsigned int m_scaled_img_width;
211 unsigned int m_scaled_img_height;
212 unsigned int m_max_img_width;
213 unsigned int m_max_img_height;
215 firevision::colorspace_t m_img_cs;
217 bool m_cont_img_trans;
218 float m_scale_factor;
220 #ifdef HAVE_MIRROR_CALIB