]> git.donarmstrong.com Git - lilypond.git/commitdiff
(create_ambitus): change name to
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 23 Jul 2004 15:33:04 +0000 (15:33 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 23 Jul 2004 15:33:04 +0000 (15:33 +0000)
AmbitusLine. Create AmbitusAccidental and AmbitusNoteHead for
other ambitus parts.
(create_ambitus): group grobs in Ambitus grouping object.

ChangeLog
Documentation/topdocs/NEWS.texi
Documentation/user/notation.itely
lily/ambitus-engraver.cc
lily/ambitus.cc
scm/define-grobs.scm

index 46c784045997cf28d250aa249778624f820188e8..9f8d288cb0b8761dfcbcda9a25fa18dd3ccf0811 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
        * lily/ambitus-engraver.cc (create_ambitus): change name to
        AmbitusLine. Create AmbitusAccidental and AmbitusNoteHead for
        other ambitus parts.
+       (create_ambitus): group grobs in Ambitus grouping object. 
 
        * lily/include/pitch-interval.hh (Pitch>): new file.
 
index 218a487421b93057c477e24e6a93d1c7f75c23ff..580d94c99d821c93d03f68f1f5111a8d84d36d5a 100644 (file)
@@ -8,6 +8,13 @@
 
 @itemize @bullet
 
+@item Support ambituses has been rewritten. The Ambitus object is now
+a grouping object, composed of @code{AmbitusLine},
+@code{AmbitusAccidental} and @code{AmbitusNoteHead}. These objects may
+be tuned similar to accidentals and note heads.
+
+@item Ledger lines are now shortened to prevent them from colliding.
+
 @item Slur formatting has been rewritten. The new slur code
 works similar to the Beam formatter: scores are assigned for all
 esthetic components of a slur. A large number of combinations for
index ebd2d1fdd39897927ce1dbab90c9ffa0077644b0..87ebcc272e439b0f690bd84215c6b55becde9455 100644 (file)
@@ -3720,7 +3720,9 @@ example is in @inputfileref{input/test,ambitus-mixed.ly}.
 
 @seealso
 
-Program reference: @internalsref{Ambitus}.
+Program reference: @internalsref{Ambitus},
+@internalsref{AmbitusLine}, @internalsref{AmbitusNoteHead},
+@internalsref{AmbitusAccidental}.
 
 Examples:  @inputfileref{input/regression,ambitus.ly},
 @inputfileref{input/test,ambitus-mixed.ly}.
index 71f00f7aa8d14aa4e156c8ed4f56aee476d3292d..c9d6b570abad5ceaf677616f441eee0ff5c22894 100644 (file)
 #include "engraver.hh"
 #include "item.hh"
 #include "note-head.hh"
-#include "staff-symbol-referencer.hh"
 #include "event.hh"
 #include "pitch.hh"
 #include "pitch-interval.hh"
 #include "protected-scm.hh"
+#include "staff-symbol-referencer.hh"
+#include "axis-group-interface.hh"
 #include "side-position-interface.hh"
 
-
 class Ambitus_engraver : public Engraver
 {
 public:
@@ -32,6 +32,7 @@ TRANSLATOR_DECLARATIONS (Ambitus_engraver);
 private:
   void create_ambitus ();
   Item *ambitus_;
+  Item *group_;
   Drul_array<Item *> heads_;
   Drul_array<Item *> accidentals_;
   Pitch_interval pitch_interval_;
@@ -44,16 +45,22 @@ void
 Ambitus_engraver::create_ambitus ()
 {
   ambitus_ = make_item ("AmbitusLine",SCM_EOL);
+  group_ = make_item ("Ambitus",SCM_EOL);
   Direction d = DOWN;
   do
     {
       heads_[d] = make_item ("AmbitusNoteHead", SCM_EOL);
       accidentals_[d] = make_item ("AmbitusAccidental", SCM_EOL);
+      accidentals_[d]->set_parent (heads_[d], Y_AXIS);
       heads_[d]->set_property ("accidental-grob", accidentals_[d]->self_scm ());
+      Axis_group_interface::add_element (group_, heads_[d]);
+      Axis_group_interface::add_element (group_, accidentals_[d]);
       Side_position_interface::add_support (accidentals_[d], heads_[d]);
     }
   while (flip (&d) != DOWN);
   ambitus_->set_parent (heads_[DOWN], X_AXIS);
+  Axis_group_interface::add_element (group_, ambitus_);
+  
   is_typeset_ = false;         
 }
 
@@ -61,6 +68,9 @@ Ambitus_engraver::create_ambitus ()
 Ambitus_engraver::Ambitus_engraver ()
 {
   ambitus_ = 0;
+  heads_[LEFT] = heads_[RIGHT] = 0;
+  accidentals_[LEFT] = accidentals_[RIGHT] = 0;
+  group_ = 0;
   is_typeset_ = false;
 }
 
@@ -133,7 +143,11 @@ Ambitus_engraver::finalize ()
                                            scm_from_int (p.get_notename ())),
                                  start_key_sig_);
 
-         int sig_alter = (handle != SCM_BOOL_F) ? ly_scm2int (ly_car (handle)) : 0;
+         if (handle == SCM_BOOL_F)
+           handle = scm_assoc (scm_from_int (p.get_notename ()),
+                               start_key_sig_);
+         
+         int sig_alter = (handle != SCM_BOOL_F) ? ly_scm2int (ly_cdr (handle)) : 0;
          if (sig_alter == p.get_alteration ())
            {
              accidentals_[d]->suicide();
@@ -165,7 +179,7 @@ Ambitus_engraver::finalize ()
 
 ENTER_DESCRIPTION (Ambitus_engraver,
 /* descr */       "",
-/* creats*/       "Ambitus",
+/* creats*/       "Ambitus AmbitusLine AmbitusNoteHead AmbitusAccidental",
 /* accepts */ "",
 /* acks  */     "note-head-interface",
 /* reads */       "",
index bfcc7fd5c6a0f9dddfb73f631084804adbe09a6a..cb46229ec05fdf800a15e84c9e8d56c16844befc 100644 (file)
@@ -44,15 +44,15 @@ Ambitus::print (SCM smob)
        }
 
       Real pad = 0.35;
-      Real pmax = maxh->relative_coordinate (common, Y_AXIS) - pad;
-      Real pmin = minh->relative_coordinate (common, Y_AXIS) + pad;
+      Real pmax = maxh->extent (common, Y_AXIS)[DOWN] - pad;
+      Real pmin = minh->extent (common, Y_AXIS)[UP] + pad;
       
       if (pmin < pmax)
        {
-         Real linethickness = me->get_paper ()->get_dimension (ly_symbol2scm ("linethickness"));
+         Real linethickness = me->get_paper ()->get_dimension (ly_symbol2scm ("linethickness")) * robust_scm2double (me->get_property ("thickness"), 1.0); 
          Real blotdiameter = me->get_paper ()->get_dimension (ly_symbol2scm ("blotdiameter"));
-         Interval x_extent = 0.5 * Interval (-linethickness, +linethickness);
-         Interval y_extent = 0.5 * Interval (pmin, pmax);
+         Interval x_extent = 0.5 * linethickness *Interval (-1,1);
+         Interval y_extent = Interval (pmin, pmax);
          Box line_box (x_extent, y_extent);
 
          Stencil line = Lookup::round_filled_box (line_box, blotdiameter);
index bdec00c635dba3f7b54c0a751b561fce2d806768..0a47d53427453d00f19c525b6ae5e269a68bfe17 100644 (file)
        (right-padding . 0.15)
        (meta . ((interfaces . (item-interface accidental-placement-interface))))
        ))
+    (Ambitus
+     . (
+       (axes . (0 1))
+       (X-extent-callback . ,Axis_group_interface::group_extent_callback)
+       (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
+       (space-alist . (
+                       (clef . (extra-space . 0.5))
+                       (key-signature . (extra-space . 0.0))
+                       (staff-bar . (extra-space . 0.0))
+                       (time-signature . (extra-space . 0.0)) 
+                       (first-note . (fixed-space . 0.0))
+                       ))
+       (breakable . #t)
+       (break-align-symbol . ambitus)
+       (break-visibility . ,begin-of-line-visible)
+       (meta . ((interfaces . (axis-group-interface break-aligned-interface ambitus-interface item-interface ))))
+       ))
 
     (AmbitusLine
      . (
-       (breakable . #t)
-       (break-align-symbol . ambitus)
        (print-function . ,Ambitus::print)
        (join-heads . #t)
-       (X-offset-callbacks (,Self_alignment_interface::centered_on_parent))
-       (break-visibility . ,begin-of-line-visible)
-       (space-alist . (
-                      (clef . (extra-space . 0.0))
-                      (key-signature . (extra-space . 0.0))
-                      (staff-bar . (extra-space . 0.0))
-                      (time-signature . (extra-space . 0.0)) 
-                      (first-note . (fixed-space . 0.0))
-                      ))
-       (meta . ((interfaces . (ambitus-interface staff-symbol-referencer-interface break-aligned-interface item-interface  font-interface))))
+       (thickness . 2)
+       (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent))
+    
+       (meta . ((interfaces . (ambitus-interface staff-symbol-referencer-interface item-interface  font-interface))))
        ))
     (AmbitusAccidental
      . (
        (print-function . ,Accidental_interface::print)
        (font-family . music)
+       (padding . 0.5)
        (X-offset-callbacks . (,Side_position_interface::aligned_side))
        (direction . -1) 
        (cautionary-style . parentheses)
-       (after-line-breaking-callback . ,Accidental_interface::after_line_breaking)             (meta . ((interfaces . (item-interface accidental-interface font-interface))))
+       (after-line-breaking-callback . ,Accidental_interface::after_line_breaking)             (meta . ((interfaces . (item-interface accidental-interface break-aligned-interface side-position-interface font-interface))))
        ))
     (AmbitusNoteHead
      . (
        (duration-log . 2)
        (style . default)
-       (breakable . #t)
        (print-function . ,Note_head::print)
-       (break-align-symbol . ambitus)
-        (break-visibility . ,begin-of-line-visible)
        (glyph-name-procedure . ,find-notehead-symbol)
        (X-extent-callback . ,Note_head::extent)
        (Y-extent-callback . ,Note_head::extent)