]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/tracktype.cpp
Make LCD output selectable at runtime through an extra I/O pin
[r2c2.git] / source / libmarklin / tracktype.cpp
index 8c1505b87033ca821526a7831f9a33d58d5b00cc..9f2979bebff80ca4112eb2c3013d6a4209da1ddf 100644 (file)
@@ -13,9 +13,10 @@ using namespace Msp;
 
 namespace Marklin {
 
-TrackType::TrackType(unsigned a):
-       art_nr(a),
-       double_address(false)
+TrackType::TrackType(const ArticleNumber &an):
+       art_nr(an),
+       double_address(false),
+       autofit_preference(1)
 { }
 
 float TrackType::get_total_length() const
@@ -58,6 +59,14 @@ bool TrackType::is_dead_end() const
        return endpoints.size()<2;
 }
 
+const TrackType::Endpoint &TrackType::get_endpoint(unsigned i) const
+{
+       if(i>=endpoints.size())
+               throw InvalidParameterValue("Endpoint index out of range");
+
+       return endpoints[i];
+}
+
 TrackPoint TrackType::get_point(unsigned epi, unsigned path, float d) const
 {
        if(epi>=endpoints.size())
@@ -164,6 +173,7 @@ TrackType::Endpoint::Endpoint(float x, float y, float d, unsigned p):
 TrackType::Loader::Loader(TrackType &t):
        Msp::DataFile::BasicLoader<TrackType>(t)
 {
+       add("autofit_preference", &TrackType::autofit_preference);
        add("description", &TrackType::description);
        add("double_address", &TrackType::double_address);
        add("part",        &Loader::part);