source file of the GNU LilyPond music typesetter
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#define REST_COLLISION_HH
#include "lily-proto.hh"
-#include "item.hh"
+#include "lily-guile.hh"
-class Rest_collision : public Item {
- Link_array<Note_column> rest_l_arr_;
- Link_array<Note_column> ncol_l_arr_;
+
+
+/*
+ Move rests in note-columns so that they do not collide.
+
+ properties:
+
+ read-only
+
+ maximum-rest-count -- kill off rests so we don't more than this
+ number left.
+
+ minimum-distance -- minimum distance between notes and rests.
+
+ read/write
+
+ elements -- list of elts (both rests and notes) participating in the
+ collision.
+
+
+ sets in elements:
+
+ rest-collision -- pointer to self.
+
+
+
+
+*/
+
+class Rest_collision // interface
+{
public:
- void add (Note_column*);
- DECLARE_MY_RUNTIME_TYPEINFO;
- Rest_collision();
-protected:
- virtual void do_post_processing();
- virtual void do_pre_processing();
- virtual void do_print() const;
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ static void add_column (Score_element*me,Score_element*);
+ static void set_interface (Score_element*me);
+ static bool has_interface (Score_element*);
+ static Real force_shift_callback (Score_element *, Axis);
+ static SCM do_shift (Score_element*,SCM);
};
#endif // REST_COLLISION_HH