X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Fcatalogue.cpp;fp=source%2Flibmarklin%2Fcatalogue.cpp;h=0000000000000000000000000000000000000000;hb=1ff06c5bc46a677fa389ef86c6b26664368f1653;hp=82dde18fdf9ccf76512576dc5157517f480ffd79;hpb=9b05c573a38639827697fe393d55b7c76f5bde45;p=r2c2.git diff --git a/source/libmarklin/catalogue.cpp b/source/libmarklin/catalogue.cpp deleted file mode 100644 index 82dde18..0000000 --- a/source/libmarklin/catalogue.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/* $Id$ - -This file is part of the MSP Märklin suite -Copyright © 2006-2010 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - -#include -#include -#include "catalogue.h" -#include "tracktype.h" -#include "vehicletype.h" - -using namespace std; -using namespace Msp; - -namespace Marklin { - -Catalogue::Catalogue(): - scale(1), - gauge(1.524), - layout(*this) -{ } - -Catalogue::~Catalogue() -{ - for(TrackMap::iterator i=tracks.begin(); i!=tracks.end(); ++i) - delete i->second; - for(VehicleMap::iterator i=vehicles.begin(); i!=vehicles.end(); ++i) - delete i->second; -} - -float Catalogue::get_rail_elevation() const -{ - return ballast_profile.get_height()+rail_profile.get_height(); -} - -void Catalogue::add_track(TrackType &track) -{ - if(tracks.count(track.get_article_number())) - throw Exception("Duplicate track type"); - - tracks[track.get_article_number()] = &track; - signal_track_added.emit(track); -} - -const TrackType &Catalogue::get_track(const ArticleNumber &art_nr) const -{ - TrackMap::const_iterator i=tracks.find(art_nr); - if(i==tracks.end()) - throw KeyError("Unknown track type"); - - return *i->second; -} - -void Catalogue::add_vehicle(VehicleType &veh) -{ - if(vehicles.count(veh.get_article_number())) - throw Exception("Duplicate vehicle type"); - - vehicles[veh.get_article_number()] = &veh; - signal_vehicle_added.emit(veh); -} - -const VehicleType &Catalogue::get_vehicle(const ArticleNumber &art_nr) const -{ - VehicleMap::const_iterator i = vehicles.find(art_nr); - if(i==vehicles.end()) - throw KeyError("Unknown vehicle type"); - - return *i->second; -} - - -Catalogue::Loader::Loader(Catalogue &c): - DataFile::BasicLoader(c) -{ - add("ballast_profile", &Loader::ballast_profile); - add("gauge", &Loader::gauge); - add("layout", &Loader::layout); - add("rail_profile", &Loader::rail_profile); - add("scale", &Loader::scale); - add("track", static_cast(&Loader::track)); - add("track", static_cast(&Loader::track)); - add("vehicle", static_cast(&Loader::vehicle)); - add("vehicle", static_cast(&Loader::vehicle)); -} - -void Catalogue::Loader::ballast_profile() -{ - load_sub(obj.ballast_profile); -} - -void Catalogue::Loader::gauge(float g) -{ - obj.gauge = g/1000; - obj.path_profile = Profile(); - obj.path_profile.append_point(Point(0.1*obj.gauge, 0)); - obj.path_profile.append_point(Point(-0.1*obj.gauge, 0)); -} - -void Catalogue::Loader::layout() -{ - load_sub(obj.layout); -} - -void Catalogue::Loader::rail_profile() -{ - load_sub(obj.rail_profile); -} - -void Catalogue::Loader::scale(float n, float d) -{ - obj.scale = n/d; -} - -void Catalogue::Loader::track(unsigned art_nr) -{ - track(ArticleNumber(art_nr)); -} - -void Catalogue::Loader::track(ArticleNumber art_nr) -{ - if(obj.tracks.count(art_nr)) - throw KeyError("Duplicate track type", art_nr.str()); - - RefPtr trk = new TrackType(art_nr); - load_sub(*trk); - obj.add_track(*trk.release()); -} - -void Catalogue::Loader::vehicle(unsigned art_nr) -{ - vehicle(ArticleNumber(art_nr)); -} - -void Catalogue::Loader::vehicle(ArticleNumber art_nr) -{ - if(obj.vehicles.count(art_nr)) - throw KeyError("Duplicate vehicle type", art_nr.str()); - - RefPtr veh = new VehicleType(art_nr); - load_sub(*veh); - obj.add_vehicle(*veh.release()); -} - -} // namespace Marklin