Layout3D::~Layout3D()
{
- for(Track3DSeq::iterator i=tracks.begin(); i!=tracks.end(); ++i)
+ for(list<Track3D *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
delete *i;
}
void Layout3D::set_quality(unsigned q)
{
quality=q;
- for(Track3DSeq::iterator i=tracks.begin(); i!=tracks.end(); ++i)
+ for(list<Track3D *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
(*i)->set_quality(quality);
}
-void Layout3D::render(bool endpoints)
+void Layout3D::render(bool endpoints) const
{
GL::Texture::unbind();
glEnable(GL_DEPTH_TEST);
- for(Track3DSeq::iterator i=tracks.begin(); i!=tracks.end(); ++i)
+ for(list<Track3D *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
(*i)->render();
if(endpoints)
{
glDepthMask(false);
- for(Track3DSeq::iterator i=tracks.begin(); i!=tracks.end(); ++i)
+ for(list<Track3D *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
(*i)->render_endpoints();
glDepthMask(true);
}
}
-Track3D *Layout3D::get_track(const Track *t)
+Track3D &Layout3D::get_track(const Track &t) const
{
- for(Track3DSeq::iterator i=tracks.begin(); i!=tracks.end(); ++i)
- if(&(*i)->get_track()==t)
- return *i;
-
- return 0;
+ for(list<Track3D *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
+ if(&(*i)->get_track()==&t)
+ return **i;
+
+ throw KeyError("Unknown track");
}
-Track3D *Layout3D::pick_track(float x, float y, float size)
+Track3D *Layout3D::pick_track(float x, float y, float size) const
{
vector<GL::SelectRecord> select_buf;
GL::select_buffer(select_buf);
void Layout3D::track_removed(Track &t)
{
- for(Track3DSeq::iterator i=tracks.begin(); i!=tracks.end(); ++i)
+ for(list<Track3D *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
if(&(*i)->get_track()==&t)
{
delete *i;