1 #include "volm_osm_object_polygon.h"
2 //:
3 // \file
4
print()5 void volm_osm_object_polygon::print()
6 {
7 std::cout << " object property: ";
8 prop_.print();
9 std::cout << " polygon: ";
10 poly_.print(std::cout);
11 }
12
b_write(vsl_b_ostream & os)13 void volm_osm_object_polygon::b_write(vsl_b_ostream& os)
14 {
15 vsl_b_write(os, this->version());
16 vsl_b_write(os, prop_.id_);
17 vsl_b_write(os, prop_.name_);
18 vsl_b_write(os, prop_.level_);
19 vsl_b_write(os, prop_.width_);
20 vsl_b_write(os, poly_.num_sheets());
21 for (unsigned i = 0; i < poly_.num_sheets(); i++) {
22 unsigned n_vert = poly_[i].size();
23 vsl_b_write(os, n_vert);
24 for (unsigned j = 0; j < n_vert; j++) {
25 vsl_b_write(os, poly_[i][j].x());
26 vsl_b_write(os, poly_[i][j].y());
27 }
28 }
29 }
30
b_read(vsl_b_istream & is)31 void volm_osm_object_polygon::b_read(vsl_b_istream& is)
32 {
33 unsigned ver;
34 vsl_b_read(is, ver);
35 if (ver == 1) {
36 unsigned char id, level;
37 std::string name;
38 double width;
39 unsigned n_sheet;
40 vsl_b_read(is, id);
41 vsl_b_read(is, name);
42 vsl_b_read(is, level);
43 vsl_b_read(is, width);
44 vsl_b_read(is, n_sheet);
45 for (unsigned i = 0; i < n_sheet; i++) {
46 poly_.new_sheet();
47 unsigned n_vert;
48 vsl_b_read(is, n_vert);
49 for (unsigned j = 0; j < n_vert; j++) {
50 double x, y;
51 vsl_b_read(is, x);
52 vsl_b_read(is, y);
53 poly_.push_back(vgl_point_2d<double>(x, y));
54 }
55 }
56 if (name.compare("invalid") == 0)
57 prop_ = volm_land_layer(id, name, level, width, vil_rgb<vxl_byte>(0,0,0));
58 else
59 prop_ = volm_land_layer(id, name, level, width);
60 }
61 else {
62 std::cout << "volm_osm_object_polygon -- unknown binary io version " << ver << '\n';
63 return;
64 }
65 }
66
vsl_b_write(vsl_b_ostream & os,const volm_osm_object_polygon * rptr)67 void vsl_b_write(vsl_b_ostream& os, const volm_osm_object_polygon* rptr)
68 {
69 if (rptr == nullptr) {
70 vsl_b_write(os, false);
71 return;
72 }
73 else
74 vsl_b_write(os, true);
75 auto* ptr = const_cast<volm_osm_object_polygon*>(rptr);
76 ptr->b_write(os);
77 }
78
vsl_b_read(vsl_b_istream & is,volm_osm_object_polygon * & rptr)79 void vsl_b_read(vsl_b_istream& is, volm_osm_object_polygon*& rptr)
80 {
81 bool valid_ptr = false;
82 vsl_b_read(is, valid_ptr);
83 if (valid_ptr) {
84 rptr = new volm_osm_object_polygon();
85 rptr->b_read(is);
86 return;
87 }
88 rptr = nullptr;
89 }
90
vsl_b_write(vsl_b_ostream & os,const volm_osm_object_polygon_sptr & sptr)91 void vsl_b_write(vsl_b_ostream& os, const volm_osm_object_polygon_sptr& sptr)
92 {
93 volm_osm_object_polygon* rptr = sptr.ptr();
94 vsl_b_write(os, rptr);
95 }
96
vsl_b_read(vsl_b_istream & is,volm_osm_object_polygon_sptr & sptr)97 void vsl_b_read(vsl_b_istream& is, volm_osm_object_polygon_sptr& sptr)
98 {
99 volm_osm_object_polygon* rptr = nullptr;
100 vsl_b_read(is, rptr);
101 sptr = rptr;
102 }
103