]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/enclosing-bracket.cc (width): new function.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 19 Feb 2006 00:14:59 +0000 (00:14 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 19 Feb 2006 00:14:59 +0000 (00:14 +0000)
* lily/align-interface.cc (align_elements_to_extents): reinstate
warning.

ChangeLog
lily/align-interface.cc
lily/enclosing-bracket.cc
lily/horizontal-bracket.cc
scm/define-grobs.scm

index a727c6de84527ad5e8f000fb2d33e312acc36e78..384436cc5e805f40ee067767f5c698a58b0c507c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-02-19  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+       * lily/enclosing-bracket.cc (width): new function.
+
+       * lily/align-interface.cc (align_elements_to_extents): reinstate
+       warning.
+
 2006-02-18  Heikki Junes  <hjunes@cc.hut.fi>
 
        * Documentation/index.html.in: fix spelling: thankyous.
index 0b8bfc0b9c83731a156965bd6d5ecec1e8b03cdf..c315e4ec32258ff19eec3acea76b8ed89f8c7738 100644 (file)
@@ -13,6 +13,7 @@
 #include "pointer-group-interface.hh"
 #include "hara-kiri-group-spanner.hh"
 #include "grob-array.hh"
+#include "international.hh"
 
 /*
   TODO: for vertical spacing, should also include a rod & spring
@@ -27,7 +28,7 @@ Align_interface::calc_positioning_done (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
   SCM axis = scm_car (me->get_property ("axes"));
-  Axis ax = (Axis)scm_to_int (axis);
+  Axis ax = Axis (scm_to_int (axis));
 
   SCM force = me->get_property ("forced-distance");
   if (scm_is_number (force))
@@ -152,7 +153,14 @@ Align_interface::align_elements_to_extents (Grob *me, Axis a)
 
   SCM line_break_details = SCM_EOL;
   if (a == Y_AXIS && me_spanner)
-    line_break_details =  me_spanner->get_bound (LEFT)->get_property ("line-break-system-details");
+    {
+      line_break_details = me_spanner->get_bound (LEFT)->get_property ("line-break-system-details");
+
+      if (!me->get_system ())
+       me->warning (_ ("vertical alignment called before line-breaking.\n"
+                       "Only do cross-staff spanners with PianoStaff."));
+
+    }
   
   Direction stacking_dir = robust_scm2dir (me->get_property ("stacking-dir"),
                                           DOWN);
index c1e6f57cf55075e18aa5040a1028af05af1846bc..81a292a2ecbefb208cf0f80d0fbdde609de94964 100644 (file)
@@ -19,25 +19,59 @@ struct Enclosing_bracket
   
 public:
   DECLARE_SCHEME_CALLBACK(print, (SCM));
+  DECLARE_SCHEME_CALLBACK(width, (SCM));
 };
 
 
 ADD_INTERFACE(Enclosing_bracket,
              "enclosing-bracket-interface",
+             
              "Brackets alongside bass figures.",
              
              /* props */
              "bracket-flare "
-             "shorten-pair "
              "edge-height "
+             "elements "
              "padding "
+             "shorten-pair "
              "thickness "
-             "elements "
              );
 
 /* ugh: should make bracket interface. */
 
 
+MAKE_SCHEME_CALLBACK (Enclosing_bracket, width, 1);
+SCM
+Enclosing_bracket::width (SCM grob)
+{
+  /*
+     UGH. cut & paste code.
+  */
+  Grob *me = unsmob_grob (grob);
+  extract_grob_set (me, "elements", elements);
+  if (elements.empty ())
+    {
+      me->suicide ();
+      return SCM_EOL;
+    }
+
+  Grob *common_x = common_refpoint_of_array (elements, me, X_AXIS); 
+  Interval xext = Axis_group_interface::relative_group_extent (elements, common_x, X_AXIS);
+
+  Stencil left_br = Horizontal_bracket::make_bracket (me, 10.0, Y_AXIS, LEFT);
+  Stencil right_br = Horizontal_bracket::make_bracket (me, 10.0, Y_AXIS, LEFT);
+
+
+  xext.widen (robust_scm2double (me->get_property ("padding"), 0.25));
+  left_br.translate_axis (xext[LEFT], X_AXIS);
+  right_br.translate_axis (xext[RIGHT], X_AXIS);
+
+  left_br.add_stencil (right_br);
+  left_br.translate_axis (-me->relative_coordinate (common_x, X_AXIS), X_AXIS);
+
+  return ly_interval2scm (left_br.extent (X_AXIS));
+}
+
 MAKE_SCHEME_CALLBACK (Enclosing_bracket, print, 1);
 SCM
 Enclosing_bracket::print (SCM grob)
index bd8435d032fd5f8005c99225ca034a4df6219cdf..80baa95de5742306d454fdbee80c4eef0e179160 100644 (file)
@@ -88,8 +88,9 @@ ADD_INTERFACE (Horizontal_bracket,
               "A horizontal bracket encompassing notes.",
 
               /* props */                
-              "columns "
               "bracket-flare "
+              "columns "
+              "edge-height "
               "shorten-pair "
-              "edge-height");
+              );
 
index 8fc764618b800156cff7995c206ad33e769fe870..527adae8c95f9ed438771d8326fcc49620818f32 100644 (file)
                                font-interface))))))
     (BassFigureBracket
      . (
-       ;
        (stencil . ,ly:enclosing-bracket::print)
-
+       (X-extent . ,ly:enclosing-bracket::width)
        (edge-height . (0.2 . 0.2))
        (meta . ((class . Item)
                 (interfaces . (enclosing-bracket-interface)) ))
        ))
     (BassFigureContinuation
      . (
-
        (stencil . ,ly:figured-bass-continuation::print)
-
        (Y-offset . ,ly:figured-bass-continuation::center-on-figures)
        (meta . ((class . Spanner)
                 (interfaces . (figured-bass-continuation-interface))
     (BassFigureLine
      . (
        (axes . (,Y))
-
        (Y-extent . ,ly:axis-group-interface::height)
-
        (meta . ((class . Spanner)
                 (interfaces . (axis-group-interface
                                ))))))
      . (
        (axes . (,Y))
        (threshold . (2 . 1000))
-
        (positioning-done . ,ly:align-interface::calc-positioning-done)
        (Y-extent . ,ly:axis-group-interface::height)
-                                       
        (stacking-dir . -1)
        (meta . ((class . Spanner)
                 (interfaces . (align-interface