2 stem.hh -- declare Stem
4 (c) 1996--2000 Han-Wen Nienhuys
10 #include "lily-proto.hh"
11 #include "lily-guile.hh"
12 #include "stem-info.hh"
14 /**the rule attached to the ball.
20 \item up/down position.
23 should move beam_{left, right} into Beam
27 Stem size depends on flag.
31 beam_dir: direction of the beam (int)
33 dir_force: is direction explicitely specified? (bool)
35 /// how many abbrev beam don't reach stem?
42 static SCM brew_molecule (SCM);
44 /// log of the duration. Eg. 4 -> 16th note -> 2 flags
45 static int flag_i (Score_element*) ;
46 static int beam_count (Score_element*,Direction) ;
47 static void set_beaming (Score_element*,int, Direction d);
49 don't print flag when in beam.
50 our beam, for aligning abbrev flags
52 static Score_element * beam_l (Score_element*);
53 static Score_element * first_head (Score_element*) ;
54 static Drul_array<Score_element*> extremal_heads (Score_element*);
55 static Score_element * support_head (Score_element*) ;
57 /// ensure that this Stem also encompasses the Notehead #n#
58 static void add_head (Score_element*me, Score_element*n);
59 static Stem_info calc_stem_info (Score_element *) ;
60 static Real chord_start_f (Score_element *) ;
61 static Direction get_direction (Score_element*) ;
62 static int type_i (Score_element *) ;
63 static void set_stemend (Score_element *,Real);
64 static Direction get_default_dir(Score_element *) ;
65 static int get_center_distance(Score_element *,Direction) ;
66 static int heads_i (Score_element *) ;
67 static bool invisible_b(Score_element *) ;
69 /// heads that the stem encompasses (positions)
70 static Interval head_positions(Score_element *) ;
71 static Real get_default_stem_end_position (Score_element*me) ;
72 static void position_noteheads(Score_element*);
73 static Real stem_end_position (Score_element*) ;
74 static Real off_callback (Score_element *, Axis);
75 static Molecule flag (Score_element*);
76 static SCM before_line_breaking (SCM);
77 static Interval dim_callback (Score_element *,Axis);
78 static bool has_interface (Score_element*);
79 static void set_interface (Score_element*);
81 static void set_spacing_hints (Score_element*me) ;