--- /dev/null
+/*
+ head-column.hh -- declare Head_column
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef HEAD_COLUMN_HH
+#define HEAD_COLUMN_HH
+
+#include "script-column.hh"
+
+class Head_column : public Script_column
+{
+public:
+ Link_array<Note_head> head_l_arr_;
+ /** The relative position of the "voice" containing this
+ chord. Normally this would be the same as the stem direction,
+ but rests do not have stems.
+
+ Hmm. outdated.. Rests *do* have stems.
+ */
+
+ int dir_i_;
+ Stem* stem_l_;
+
+ void add(Note_head*);
+ void add(Script*s) { Script_column::add(s) ; }
+ virtual void set(Stem*);
+ Head_column();
+ NAME_MEMBERS();
+protected:
+
+
+ virtual void do_pre_processing();
+ virtual void do_print()const;
+ virtual void do_substitute_dependency(Score_elem*,Score_elem*);
+};
+#endif // HEAD_COLUMN_HH
#define REST_COLUMN_HH
#include "script-column.hh"
+#include "head-column.hh"
/**
struct to treat a set of rests as union (one voicegroup should
only produce one rest.
*/
-class Rest_column : public Script_column {
- Link_array<Note_head> head_l_arr_;
+class Rest_column : public Head_column {
public:
- int dir_i_;
- Stem* stem_l_;
- void add(Note_head *);
- void add(Stem *);
NAME_MEMBERS();
- Rest_column();
void translate_heads(int dy);
-protected:
- virtual void do_print() const;
- virtual void do_substitute_dependency(Score_elem*, Score_elem*);
};
#endif // REST_COLUMN_HH
#include "stem.hh"
IMPLEMENT_STATIC_NAME(Rest_column);
-IMPLEMENT_IS_TYPE_B1(Rest_column,Item);
-
-Rest_column::Rest_column()
-{
- dir_i_ = 0;
- stem_l_ = 0;
-}
-
-void
-Rest_column::add(Note_head *n_l)
-{
- add_support(n_l);
- head_l_arr_.push(n_l);
-}
-
-void
-Rest_column::add(Stem*stem_l)
-{
- stem_l_ = stem_l;
- add_dependency(stem_l);
-// add_support(stem_l);
-}
-
-void
-Rest_column::do_print() const
-{
-#ifndef NPRINT
- mtor << "heads: " << head_l_arr_.size();
-#endif
-}
-
-void
-Rest_column::do_substitute_dependency(Score_elem*o,Score_elem*n)
-{
- Script_column::do_substitute_dependency(o,n);
- if (o == stem_l_)
- stem_l_ = n? (Stem*)n->item() :0;
-
- if (o->is_type_b( Note_head::static_name()) )
- head_l_arr_.substitute( (Note_head*)o->item(),
- (n)? (Note_head*)n->item() : 0);
-}
+IMPLEMENT_IS_TYPE_B1(Rest_column,Head_column);
/**