]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/span-score-bar-engraver.cc
patch::: 1.3.18.jcn3
[lilypond.git] / lily / span-score-bar-engraver.cc
index d3cff445e5fe397baabad9a2632d7e0096989066..ecccf6e4a9eff92e93652f3c632d0ca44663b677 100644 (file)
@@ -1,62 +1,81 @@
 /*
-  span-score-bar-grav.cc -- implement Span_score_bar_engraver,
+  span-score-bar-engraver.cc -- implement Span_score_bar_engraver,
   Piano_bar_engraver and Staff_group_bar_engraver
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "span-score-bar.hh"
-#include "piano-brace.hh"
-#include "staff-bracket.hh"
+#include "span-bar.hh"
 #include "span-score-bar-engraver.hh"
 #include "paper-def.hh"
+#include "dimension-cache.hh"
 
+ADD_THIS_TRANSLATOR (Piano_bar_engraver);
+ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
+ADD_THIS_TRANSLATOR (Span_score_bar_engraver);
 
 Span_bar*
 Span_score_bar_engraver::get_span_bar_p () const
 {
-  Span_bar*s =  new Span_score_bar;
-  s->break_priority_i_ = -4;
-    
+  Span_bar*s =  new Span_bar;
+  s->set_elt_property ("default-glyph",  gh_str02scm ("scorebar"));
+  s->set_elt_property ("break-aligned",SCM_BOOL_T);
+
   return s;
 }
 
-
-IMPLEMENT_IS_TYPE_B1 (Span_score_bar_engraver, Span_bar_engraver);
-IMPLEMENT_IS_TYPE_B1 (Piano_bar_engraver, Span_score_bar_engraver);
-IMPLEMENT_IS_TYPE_B1 (Staff_group_bar_engraver, Span_score_bar_engraver);
+Span_score_bar_engraver::Span_score_bar_engraver ()
+{
+  use_priority_b_ = true;
+}
 
 Span_bar*
 Piano_bar_engraver::get_span_bar_p () const
 {
-  Span_bar *s= new Piano_brace;
-  s->break_priority_i_ = -4;
+  Span_bar *s= new Span_bar;
+  s->set_empty (X_AXIS);
+  s->set_elt_property ("default-glyph", gh_str02scm ("brace"));
   return s;
 }
 
+void
+Piano_bar_engraver::acknowledge_element (Score_element_info i)
+{
+  Base_span_bar_engraver::acknowledge_element (i);
+
+  if (Span_bar * b = dynamic_cast<Span_bar *> (i.elem_l_))
+    {
+      SCM g = b->get_elt_property ("default-glyph");
+      if (gh_string_p (g) && (ly_scm2string (g) == "bracket"))
+       spanbar_p_->set_elt_property ("other", b->self_scm_);
+    }
+}
+
 Span_bar*
 Staff_group_bar_engraver::get_span_bar_p () const
 {
-  Span_bar *s= new Staff_bracket;
-  s->break_priority_i_ = -4;
+  Span_bar *s= new Span_bar;
+  s->set_empty (X_AXIS);
+  s->set_elt_property ("default-glyph",  gh_str02scm ("bracket"));
   return s;
 }
 
 void
 Staff_group_bar_engraver::acknowledge_element (Score_element_info i)
 {
-  Span_bar_engraver::acknowledge_element (i);
-  if (i.elem_l_->is_type_b (Piano_brace::static_name ()))
+  Base_span_bar_engraver::acknowledge_element (i);
+
+  if (!spanbar_p_)
+    return;
+
+  if (Span_bar * b = dynamic_cast<Span_bar *> (i.elem_l_))
     {
-      Span_bar* b =  dynamic_cast <Span_bar *> (i.elem_l_);
-      Piano_brace * piano_l = (Piano_brace*) b;
-      piano_l->extra_move_left_f_  = paper ()->interline_f (); // ugh
+      SCM g = b->get_elt_property ("default-glyph");
+      if (gh_string_p (g) && (ly_scm2string (g) == "brace"))
+       spanbar_p_->set_elt_property ("other", b->self_scm_);
     }
 }
 
-ADD_THIS_TRANSLATOR (Piano_bar_engraver);
-ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
-ADD_THIS_TRANSLATOR (Span_score_bar_engraver);