]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/svgexporter.cpp
Rename TrackPoint to a more generic OrientedPoint
[r2c2.git] / source / designer / svgexporter.cpp
index 9f42ab4eacfe8c907b5218fa366982a1c56dfed8..bb8cf4e88eb737e31a4f851f0097a5d17f73b66e 100644 (file)
@@ -90,30 +90,30 @@ void SvgExporter::save_track(const Track &track, xmlpp::Element &group)
        const vector<TrackPart> &parts = type.get_parts();
        for(vector<TrackPart>::const_iterator i=parts.begin(); i!=parts.end(); ++i)
        {
-               TrackPoint start = i->get_point(0);
-               TrackPoint end = i->get_point(i->get_length());
+               OrientedPoint start = i->get_point(0);
+               OrientedPoint end = i->get_point(i->get_length());
                if(i->is_curved())
                {
                        xmlpp::Element *elem = group.add_child("path");
                        elem->set_attribute("class", "rail");
 
-                       Vector delta1 = rotated_vector(Vector(0, (gauge+rail_width)*0.5, 0), start.dir);
-                       Vector delta2 = rotated_vector(Vector(0, (gauge+rail_width)*0.5, 0), end.dir);
+                       Vector delta1 = rotated_vector(Vector(0, (gauge+rail_width)*0.5, 0), start.rotation);
+                       Vector delta2 = rotated_vector(Vector(0, (gauge+rail_width)*0.5, 0), end.rotation);
                        // Largely an educated guess, but seems to be accurate enough
                        float clen = i->get_length()*1000/2.9;
-                       Vector ctrl1 = rotated_vector(Vector(clen, 0, 0), start.dir);
-                       Vector ctrl2 = rotated_vector(Vector(clen, 0, 0), end.dir);
+                       Vector ctrl1 = rotated_vector(Vector(clen, 0, 0), start.rotation);
+                       Vector ctrl2 = rotated_vector(Vector(clen, 0, 0), end.rotation);
 
                        string data = format("M %.3f %.3f C %.3f %.3f %.3f %.3f %.3f %.3f")
-                               (start.pos.x*1000+delta1.x)(-start.pos.y*1000-delta1.y)
-                               (start.pos.x*1000+delta1.x+ctrl1.x)(-start.pos.y*1000-delta1.y-ctrl1.y)
-                               (end.pos.x*1000+delta2.x-ctrl2.x)(-end.pos.y*1000-delta2.y+ctrl2.y)
-                               (end.pos.x*1000+delta2.x)(-end.pos.y*1000-delta2.y).str();
+                               (start.position.x*1000+delta1.x)(-start.position.y*1000-delta1.y)
+                               (start.position.x*1000+delta1.x+ctrl1.x)(-start.position.y*1000-delta1.y-ctrl1.y)
+                               (end.position.x*1000+delta2.x-ctrl2.x)(-end.position.y*1000-delta2.y+ctrl2.y)
+                               (end.position.x*1000+delta2.x)(-end.position.y*1000-delta2.y).str();
                        data += format(" M %.3f %.3f C %.3f %.3f %.3f %.3f %.3f %.3f")
-                               (start.pos.x*1000-delta1.x)(-start.pos.y*1000+delta1.y)
-                               (start.pos.x*1000-delta1.x+ctrl1.x)(-start.pos.y*1000+delta1.y-ctrl1.y)
-                               (end.pos.x*1000-delta2.x-ctrl2.x)(-end.pos.y*1000+delta2.y+ctrl2.y)
-                               (end.pos.x*1000-delta2.x)(-end.pos.y*1000+delta2.y).str();
+                               (start.position.x*1000-delta1.x)(-start.position.y*1000+delta1.y)
+                               (start.position.x*1000-delta1.x+ctrl1.x)(-start.position.y*1000+delta1.y-ctrl1.y)
+                               (end.position.x*1000-delta2.x-ctrl2.x)(-end.position.y*1000+delta2.y+ctrl2.y)
+                               (end.position.x*1000-delta2.x)(-end.position.y*1000+delta2.y).str();
                        elem->set_attribute("d", data);
                }
                else
@@ -121,30 +121,30 @@ void SvgExporter::save_track(const Track &track, xmlpp::Element &group)
                        xmlpp::Element *elem = group.add_child("path");
                        elem->set_attribute("class", "rail");
 
-                       Vector delta = rotated_vector(Vector(0, (gauge+rail_width)*0.5, 0), start.dir);
+                       Vector delta = rotated_vector(Vector(0, (gauge+rail_width)*0.5, 0), start.rotation);
 
                        string data = format("M %.3f %.3f L %.3f %.3f",
-                               start.pos.x*1000+delta.x, -start.pos.y*1000-delta.y,
-                               end.pos.x*1000+delta.x, -end.pos.y*1000-delta.y);
+                               start.position.x*1000+delta.x, -start.position.y*1000-delta.y,
+                               end.position.x*1000+delta.x, -end.position.y*1000-delta.y);
                        data += format(" M %.3f %.3f L %.3f %.3f",
-                               start.pos.x*1000-delta.x, -start.pos.y*1000+delta.y,
-                               end.pos.x*1000-delta.x, -end.pos.y*1000+delta.y);
+                               start.position.x*1000-delta.x, -start.position.y*1000+delta.y,
+                               end.position.x*1000-delta.x, -end.position.y*1000+delta.y);
                        elem->set_attribute("d", data);
                }
        }
 
-       TrackPoint label_pt = parts.front().get_point(parts.front().get_length()/2);
+       OrientedPoint label_pt = parts.front().get_point(parts.front().get_length()/2);
 
-       label_pt.dir.wrap_with_base(-Angle::quarter_turn());
-       if(label_pt.dir>Angle::quarter_turn())
-               label_pt.dir -= Angle::half_turn();
+       label_pt.rotation.wrap_with_base(-Angle::quarter_turn());
+       if(label_pt.rotation>Angle::quarter_turn())
+               label_pt.rotation -= Angle::half_turn();
 
-       label_pt.pos *= 1000;
-       label_pt.pos += rotated_vector(Vector(0, -gauge*0.25, 0), label_pt.dir);
+       label_pt.position *= 1000;
+       label_pt.position += rotated_vector(Vector(0, -gauge*0.25, 0), label_pt.rotation);
 
        xmlpp::Element *elem = group.add_child("text");
        elem->set_attribute("class", "artnr");
        elem->set_attribute("transform", format("translate(%.3f %.3f) rotate(%.3f)",
-               label_pt.pos.x, -label_pt.pos.y, -label_pt.dir.degrees()));
+               label_pt.position.x, -label_pt.position.y, -label_pt.rotation.degrees()));
        elem->set_child_text(track.get_type().get_article_number().str());
 }