Vector minp;
Vector maxp;
- const set<Track *> &tracks = layout.get_tracks();
+ const set<Track *> &tracks = layout.get_all<Track>();
for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
{
xmlpp::Element *elem = root->add_child("g");
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
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());
}