]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/trackattachment.cpp
Create another track iterator class that holds an offset as well
[r2c2.git] / source / libr2c2 / trackattachment.cpp
index eb2d563561c6fcf7864d00c1a8a170f943c7e624..64704b11b5290bab5e17d24da21e06f61b9eb230 100644 (file)
@@ -8,8 +8,7 @@ using namespace std;
 namespace R2C2 {
 
 TrackAttachment::TrackAttachment(Layout &l):
-       Object(l),
-       offset(0)
+       Object(l)
 {
        layout.signal_object_removed.connect(sigc::mem_fun(this, &TrackAttachment::object_removed));
 }
@@ -23,18 +22,17 @@ TrackAttachment::~TrackAttachment()
 float TrackAttachment::get_offset_from_endpoint(unsigned epi) const
 {
        if(epi==track.entry())
-               return offset;
+               return track.offset();
        else
-               return track->get_type().get_path_length(0)-offset;
+               return track->get_type().get_path_length(0)-track.offset();
 }
 
-void TrackAttachment::attach_to(const TrackIter &t, float o)
+void TrackAttachment::attach_to(const TrackOffsetIter &t)
 {
        if(track)
                track->remove_attachment(*this);
 
        track = t;
-       offset = o;
 
        if(track)
                track->add_attachment(*this);
@@ -74,13 +72,13 @@ void TrackAttachment::attach_to_closest(float limit)
                        if(adiff<Angle::quarter_turn())
                        {
                                TrackIter iter(trk, i);
-                               attach_to(iter, find_offset(iter, closest));
+                               attach_to(TrackOffsetIter(iter, find_offset(iter, closest)));
                                break;
                        }
                }
        }
        else
-               attach_to(TrackIter(), 0);
+               attach_to(TrackOffsetIter());
 }
 
 float TrackAttachment::find_offset(const TrackIter &trk, const Vector &point)