X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Finclude%2Fspring.hh;h=4288af58848b5b4f848e9307749cf6aa762c6ced;hb=b76907a5a0c3663895350205e29c7462db4b2b45;hp=2ccd5facf8f1799f0aa8cb5c270ca7f1a0b1f3e4;hpb=75eebcb49e52d296b1da3e1074e0825d2c780db4;p=lilypond.git diff --git a/lily/include/spring.hh b/lily/include/spring.hh index 2ccd5facf8..4288af5884 100644 --- a/lily/include/spring.hh +++ b/lily/include/spring.hh @@ -1,9 +1,9 @@ /* - spring.hh -- declare Spring, Column_spring + spring.hh -- declare Spring source file of the GNU LilyPond music typesetter - (c) 1999--2006 Han-Wen Nienhuys + (c) 1999--2009 Han-Wen Nienhuys */ #ifndef SPRING_HH @@ -12,33 +12,45 @@ #include "lily-proto.hh" #include "smobs.hh" -struct Spring_smob +class Spring { - Grob *other_; Real distance_; - bool expand_only_b_; - Real inverse_strength_; + Real min_distance_; - DECLARE_SIMPLE_SMOBS (Spring_smob, dummy); -public: - Spring_smob (); -}; -DECLARE_UNSMOB (Spring_smob, spring); + Real inverse_stretch_strength_; + Real inverse_compress_strength_; -struct Spring -{ - Drul_array item_drul_; - Real distance_; - bool expand_only_b_; - - /* - TODO: make 2 strengths: one for stretching, and one for shrinking. - */ - Real inverse_strength_; - void add_to_cols (); - void set_to_cols (); + Real blocking_force_; + + void update_blocking_force (); + + DECLARE_SIMPLE_SMOBS (Spring); +public: Spring (); + Spring (Real distance, Real min_distance); + + Real distance () const {return distance_;} + Real min_distance () const {return min_distance_;} + Real inverse_stretch_strength () const {return inverse_stretch_strength_;} + Real inverse_compress_strength () const {return inverse_compress_strength_;} + Real blocking_force () const {return blocking_force_;} + + Real length (Real f) const; + + void set_distance (Real); + void set_min_distance (Real); + void ensure_min_distance (Real); + void set_inverse_stretch_strength (Real); + void set_inverse_compress_strength (Real); + void set_blocking_force (Real); + void set_default_strength (); + + void operator*= (Real); + bool operator> (Spring const&) const; }; +DECLARE_UNSMOB (Spring, spring); + +Spring merge_springs (vector const &springs); #endif /* SPRING_HH */