]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/beaming-pattern.hh
Take invisible beams into account when beaming.
[lilypond.git] / lily / include / beaming-pattern.hh
index 134c4488d5e4a986c0cb3ef317fe2e57d330b19d..f69857482acc867ebb6a102fd04782038aa5741e 100644 (file)
 #include "moment.hh"
 #include "lily-proto.hh"
 
+struct Beaming_options
+{
+  SCM grouping_;
+  bool subdivide_beams_;
+  Moment beat_length_;
+  Moment measure_length_;
+
+  Beaming_options ();
+  void from_context (Context*);  
+};
+
 struct Beam_rhythmic_element
 {
   Moment start_moment_;
@@ -21,8 +32,9 @@ struct Beam_rhythmic_element
   Moment beat_start_;
   Moment beat_length_;
   Moment group_start_;
+  bool invisible_;
   
-  Beam_rhythmic_element (Moment, int);
+  Beam_rhythmic_element (Moment, int, bool);
   Beam_rhythmic_element ();
 
   int count (Direction d);
@@ -38,9 +50,9 @@ class Beaming_pattern
 public:
   Beaming_pattern ();
   
-  void beamify (Context*);
+  void beamify (Beaming_options const&);
   void de_grace ();
-  void add_stem (Moment d, int beams);
+  void add_stem (Moment d, int beams, bool invisible);
   int beamlet_count (int idx, Direction d) const;
   
 private:
@@ -48,6 +60,8 @@ private:
   void beamify (bool);
   int beam_extend_count (Direction) const;
   int best_splitpoint_index (bool *split) const;
+  void unbeam_invisible_stems ();
+  bool is_next_to_invisible_stem (vsize) const;
 };
 
 #endif /* BEAMING_PATTERN_HH */