X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fdesigner.cpp;h=9edf816afcdef1ec7a557b42a9617c586777f3a4;hb=52cbe8d99669f843f8f75c51128e2748584dd03a;hp=d0bc940b4cea510e57083dd00e204c0d38f7aea6;hpb=36beacc579d3132642ed4d98ce5a6d99842b5812;p=r2c2.git diff --git a/source/designer/designer.cpp b/source/designer/designer.cpp index d0bc940..9edf816 100644 --- a/source/designer/designer.cpp +++ b/source/designer/designer.cpp @@ -5,12 +5,14 @@ #include #include #include +#include #include #include #include #include #include #include +#include "libmarklin/tracktype.h" #include "designer.h" #include "input.h" #include "manipulator.h" @@ -41,14 +43,14 @@ Designer::Designer(int argc, char **argv): cat_layout=new Layout(catalogue); cat_layout_3d=new Layout3D(*cat_layout); - const Catalogue::TrackMap &ctracks=catalogue.get_tracks(); + const map &ctracks=catalogue.get_tracks(); unsigned n=0; - for(Catalogue::TrackMap::const_iterator i=ctracks.begin(); i!=ctracks.end(); ++i, ++n) + for(map::const_iterator i=ctracks.begin(); i!=ctracks.end(); ++i, ++n) { - Track *track=i->second->copy(); + Track *track=new Track(*i->second); track->set_position(Point((n%11)*0.1-0.5, 0.2-n/11*0.3, 0)); track->set_rotation(M_PI/2); - cat_layout->add_track(track); + cat_layout->add_track(*track); } manipulator=new Manipulator(*this); @@ -96,14 +98,19 @@ int Designer::main() glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_CULL_FACE); + GL::Texture2D *font_tex=new GL::Texture2D; + font_tex->set_min_filter(GL::LINEAR); + font_tex->load_image("dejavu-20.png"); font=new GL::Font(); - Parser::load(*font, "dejavu-20.font"); + font->set_texture(*font_tex); + DataFile::load(*font, "dejavu-20.font"); mode=SELECT; Application::main(); delete font; + delete font_tex; delete input; SDL_Quit(); @@ -224,21 +231,22 @@ void Designer::tick() if(t3d) { const Track &track=t3d->get_track(); + const TrackType &ttype=track.get_type(); ostringstream ss; ss.precision(2); - ss<(ss.str()); + tooltip=ss.str(); move_tooltip(pointer_x, pointer_y); } else - tooltip=L""; + tooltip=""; tooltip_timeout=Time::TimeStamp(); } @@ -301,10 +309,10 @@ void Designer::key_press(unsigned key, unsigned mod, wchar_t ch) selection->select_more(); else if(key==SDLK_l && (mod&KMOD_SHIFT)) { - const TrackSeq &tracks=layout->get_tracks(); + const set &tracks=layout->get_tracks(); float len=0; - for(TrackSeq::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) - len+=(*i)->get_total_length(); + for(set::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) + len+=(*i)->get_type().get_total_length(); cout<<"Total length: "<get_tracks(); + set tracks=selection->get_tracks(); selection->clear(); - for(Selection::TrackSet::iterator i=tracks.begin(); i!=tracks.end(); ++i) + for(set::iterator i=tracks.begin(); i!=tracks.end(); ++i) { - layout->remove_track(*i); + layout->remove_track(**i); delete *i; } } else if(key==SDLK_f && (mod&KMOD_SHIFT)) { - const Selection::TrackSet &tracks=selection->get_tracks(); - const TrackSeq <racks=layout->get_tracks(); - for(Selection::TrackSet::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) + const set &tracks=selection->get_tracks(); + const set <racks=layout->get_tracks(); + for(set::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) { (*i)->set_flex(!(*i)->get_flex()); (*i)->break_links(); - for(TrackSeq::const_iterator j=ltracks.begin(); j!=ltracks.end(); ++j) + for(set::const_iterator j=ltracks.begin(); j!=ltracks.end(); ++j) if(*j!=*i) (*i)->snap_to(**j, true); @@ -366,7 +374,7 @@ void Designer::key_press(unsigned key, unsigned mod, wchar_t ch) else if(key==SDLK_t) { Track *track=selection->get_track(); - if(selection->size()==1 && track->get_n_routes()>1) + if(selection->size()==1 && track->get_type().get_n_routes()>1) { ostringstream ss; ss<get_turnout_id(); @@ -379,7 +387,7 @@ void Designer::key_press(unsigned key, unsigned mod, wchar_t ch) else if(key==SDLK_s) { Track *track=selection->get_track(); - if(selection->size()==1 && track->get_n_routes()==1) + if(selection->size()==1 && track->get_type().get_n_routes()==1) { ostringstream ss; ss<get_sensor_id(); @@ -441,7 +449,7 @@ void Designer::button_press(int x, int y, float gx, float gy, unsigned btn) { Track *track=ctrack->get_track().copy(); track->set_position(Point(gx, gy, 0)); - layout->add_track(track); + layout->add_track(*track); selection->clear(); selection->add_track(track); @@ -586,7 +594,7 @@ Track3D *Designer::pick_track(int x, int y) void Designer::manipulation_status(const string &status) { - tooltip=decode(status); + tooltip=status; } void Designer::manipulation_done(bool) @@ -603,7 +611,7 @@ void Designer::measure_changed() ostringstream ss; ss.precision(3); ss<<"Par "<(ss.str()); + tooltip=ss.str(); } void Designer::measure_done()