X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftracktype.cpp;h=9f2979bebff80ca4112eb2c3013d6a4209da1ddf;hb=f4ffb776aa0d4f51c058d27fb0f51449c05302c3;hp=1a39877a94bbb649d86b193e133c4030aa61a1a1;hpb=f409cd39a687900724d987c9db629cbff0dd49be;p=r2c2.git diff --git a/source/libmarklin/tracktype.cpp b/source/libmarklin/tracktype.cpp index 1a39877..9f2979b 100644 --- a/source/libmarklin/tracktype.cpp +++ b/source/libmarklin/tracktype.cpp @@ -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()) @@ -154,10 +163,17 @@ void TrackType::collect_endpoints() } } +TrackType::Endpoint::Endpoint(float x, float y, float d, unsigned p): + pos(x, y), + dir(d), + paths(p) +{ } + TrackType::Loader::Loader(TrackType &t): Msp::DataFile::BasicLoader(t) { + add("autofit_preference", &TrackType::autofit_preference); add("description", &TrackType::description); add("double_address", &TrackType::double_address); add("part", &Loader::part);