1 #ifndef bwm_observer_generic_cam_h_
2 #define bwm_observer_generic_cam_h_
3 
4 #include <iostream>
5 #include <iosfwd>
6 #include "bwm_observer_cam.h"
7 
8 #ifdef _MSC_VER
9 #  include <vcl_msvc_warnings.h>
10 #endif
11 
12 #include <vgl/vgl_fwd.h>
13 
14 #include <vpgl/vpgl_generic_camera.h>
15 
16 #include <bmsh3d/bmsh3d_vertex.h>
17 
18 #include <vil/vil_image_resource.h>
19 
20 class bwm_observer_generic_cam : public bwm_observer_cam
21 {
22  public:
23 
24   bwm_observer_generic_cam(bgui_image_tableau_sptr img,
25                            std::string name,
26                            std::string& image_path,
27                            std::string& cam_path,
28                            std::string& sub_type,
29                            bool display_image_path);
30 
31   // set the initial projection plane to z=0
32   bwm_observer_generic_cam(bgui_image_tableau_sptr img, const char* n="unnamed")
bwm_observer_cam(img,n)33     : bwm_observer_cam(img, n) {}
34 
~bwm_observer_generic_cam()35   virtual ~bwm_observer_generic_cam(){}
36 
type_name()37   virtual std::string type_name() const { return "bwm_observer_generic_cam"; }
38 
set_camera(vpgl_generic_camera<double> * camera,std::string cam_path)39   void set_camera(vpgl_generic_camera<double> *camera, std::string cam_path)
40   { bwm_observer_cam::set_camera(camera, cam_path);}
41 
42   virtual bool intersect_ray_and_plane(vgl_point_2d<double> img_point,
43                                        vgl_plane_3d<double> plane,
44                                        vgl_point_3d<double> &world_point);
45 
46   vil_image_resource_sptr ray_image(int component, int level) const;
47 
48 
49  protected:
50 };
51 
52 #endif // bwm_observer_generic_cam_h_
53