vpgl_io_local_rational_camera.hxx
Go to the documentation of this file.
1 #ifndef vpgl_io_local_rational_camera_hxx_
2 #define vpgl_io_local_rational_camera_hxx_
3 
5 //:
6 // \file
10 #include <vpgl/io/vpgl_io_lvcs.h>
11 
12 template <class T>
14 {
15  if (!os) return;
16  unsigned version = 1;
17  vsl_b_write(os, version);
18  // write rational camera parent
19  vpgl_rational_camera<T> const& rat_cam = static_cast<vpgl_rational_camera<T> const& >(camera);
20  vsl_b_write(os, rat_cam);
21  vpgl_lvcs lvcs = camera.lvcs();
22  vsl_b_write(os, lvcs);
23 }
24 
25 //: Binary load camera from stream.
26 template <class T>
28 {
29  if (!is) return;
30  short ver;
31  vsl_b_read(is, ver);
32  switch (ver)
33  {
34  case 1:
35  {
36  // read rational camera
38  vsl_b_read(is, rat_cam);
39  vpgl_lvcs lvcs;
40  // read lvcs
41  vsl_b_read(is, lvcs);
42  vpgl_local_rational_camera<T> lrat_cam(lvcs, rat_cam);
43  camera = lrat_cam;
44  break;
45  }
46  default:
47  std::cerr << "I/O ERROR: vpgl_local_rational_camera::b_read(vsl_b_istream&)\n"
48  << " Unknown version number "<< ver << '\n';
49  is.is().clear(std::ios::badbit); // Set an unrecoverable IO error on stream
50  return;
51  }
52 }
53 
54 //: Print human readable summary of object to a stream
55 template <class T>
56 void vsl_print_summary(std::ostream& os,const vpgl_local_rational_camera<T> & c)
57 {
58  os << c << '\n';
59 }
60 
61 
62 #define VPGL_IO_LOCAL_RATIONAL_CAMERA_INSTANTIATE(T) \
63 template void vsl_b_write(vsl_b_ostream & os, vpgl_local_rational_camera<T > const& camera); \
64 template void vsl_b_read(vsl_b_istream & is, vpgl_local_rational_camera<T > &camera); \
65 template void vsl_print_summary(std::ostream& os,const vpgl_local_rational_camera<T > & b)
66 
67 #endif // vpgl_io_local_rational_camera_hxx_
void vsl_print_summary(std::ostream &os, const vpgl_local_rational_camera< T > &c)
Print human readable summary of object to a stream.
void vsl_b_write(vsl_b_ostream &os, vpgl_local_rational_camera< T > const &camera)
Binary save camera to stream.
std::istream & is() const
A local rational camera model.
void vsl_b_read(vsl_b_istream &is, vpgl_local_rational_camera< T > &camera)
Binary load camera from stream.