1 // This is core/vpgl/xio/vpgl_xio_lvcs.cxx
2 #include "vpgl_xio_lvcs.h"
3 #include "vpgl/vpgl_lvcs.h"
4 #include "vsl/vsl_basic_xml_element.h"
5 
6 #include <utility>
7 
8 //=================================================================================
9 void
x_write(std::ostream & os,vpgl_lvcs const & v,std::string element_name)10 x_write(std::ostream & os, vpgl_lvcs const & v, std::string element_name)
11 {
12   vsl_basic_xml_element xml_element(std::move(element_name));
13   xml_element.add_attribute("cs_name", v.cs_name_strings[v.get_cs_name()]);
14 
15   double lat, lon, elev;
16   v.get_origin(lat, lon, elev);
17   xml_element.add_attribute("origin_lon", lon);
18   xml_element.add_attribute("origin_lat", lat);
19   xml_element.add_attribute("origin_elev", elev);
20 
21   double lat_scale, lon_scale;
22   v.get_scale(lat_scale, lon_scale);
23   xml_element.add_attribute("lon_scale", lon_scale);
24   xml_element.add_attribute("lat_scale", lat_scale);
25 
26   std::string len_u = "meters", ang_u = "degrees";
27   if (v.local_length_unit() == v.FEET)
28     len_u = "feet";
29   if (v.geo_angle_unit() == v.RADIANS)
30     ang_u = "radians";
31   xml_element.add_attribute("local_XYZ_unit", len_u);
32   xml_element.add_attribute("geo_angle_unit", ang_u);
33 
34   double lox, loy, theta;
35   v.get_transform(lox, loy, theta);
36   xml_element.add_attribute("local_origin_x", lox);
37   xml_element.add_attribute("local_origin_y", loy);
38   xml_element.add_attribute("theta", theta);
39   xml_element.x_write(os);
40 }
41