]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/track.h
Add a generic snapping interface in Object
[r2c2.git] / source / libr2c2 / track.h
index 883fb5eda506ab04a0614bbbebf1333560bbe41f..b8a9a3d330bc6f472818f24a006266e111c9552b 100644 (file)
@@ -70,18 +70,21 @@ public:
        bool is_path_changing() const { return path_changing; }
 
        int get_endpoint_by_link(Track &) const;
-       Vector get_endpoint_position(unsigned) const;
-       float get_endpoint_direction(unsigned) const;
        bool snap_to(Track &, bool, float = 0);
-       bool snap(Vector &, float &) const;
        void break_link(Track &);
        void break_links();
        const std::vector<Track *> &get_links() const { return links; }
        Track *get_link(unsigned) const;
        TrackPoint get_point(unsigned, unsigned, float) const;
        TrackPoint get_point(unsigned, float) const;
-       TrackPoint get_nearest_point(const Vector &) const;
 
+       virtual unsigned get_n_snap_nodes() const;
+       virtual Snap get_snap_node(unsigned) const;
+       virtual bool snap(Snap &, float, SnapType = SNAP_DEFAULT) const;
+private:
+       virtual SnapType get_default_snap_type_to(const Object &) const;
+
+public:
        virtual bool collide_ray(const Vector &, const Vector &) const;
 
        void save(std::list<Msp::DataFile::Statement> &) const;