]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.98
authorfred <fred>
Wed, 27 Mar 2002 00:01:30 +0000 (00:01 +0000)
committerfred <fred>
Wed, 27 Mar 2002 00:01:30 +0000 (00:01 +0000)
30 files changed:
flower/include/interval.hh
input/test/lyrics-multi-stanza.ly
lily/auto-beam-engraver.cc
lily/break-align-item.cc
lily/include/axis-group-interface.hh
lily/include/chord-name.hh
lily/include/hara-kiri-group-spanner.hh
lily/include/item.hh
lily/include/key-item.hh
lily/include/line-of-score.hh
lily/include/rest-collision.hh
lily/include/score-element.hh
lily/include/separation-item.hh
lily/include/side-position-interface.hh
lily/include/slur.hh
lily/include/stem.hh
lily/include/tuplet-spanner.hh
lily/input-smob.cc
lily/repeat-acknowledge-engraver.cc
lily/score-element.cc
lily/side-position-interface.cc
lily/slur-bezier-bow.cc
lily/stem.cc
lily/tie.cc
lily/unfolded-repeat-iterator.cc
lily/volta-engraver.cc
ly/engraver.ly
scm/element-descriptions.scm
scm/generate-documentation.scm
scm/lily.scm

index e00db6914e8cc48047c1c37f267d6af6fc3d957d..0e1bae660048136f9ca6e0dc398d4870b63d4c32 100644 (file)
@@ -67,6 +67,10 @@ struct Interval_t : public Drul_array<T> {
     }
     return *this;
   }
+
+  Real linear_combination (Real x) const {
+    return ((1.0 - x) * Real (elem (LEFT))  + (x + 1.0) * Real (elem(RIGHT))) * 0.5;
+  }
   String str() const;    
   void print () const;
   bool elem_b (T r);
index d80bcba78b6a736c656a85b93b325b83e77e05c0..dba9d1e56af25eccd2145f78f0352c934b85d110 100644 (file)
 }
 
 allup = \notes{
-       \property Voice.verticalDirection = \up
-       \property Voice.slurVerticalDirection = \up
-        \property Voice.tieVerticalDirection = \up
-       \property Voice.dynamicDirection = \up
+       \stemUp
+       \slurUp
+        \tieUp
+       \property Voice.DynamicLineSpanner \push #'direction = #1
        \autoBeamOff
 }
+
 alldown = \notes{
-       \property Voice.verticalDirection = \down
-       \property Voice.slurVerticalDirection = \down
-        \property Voice.tieVerticalDirection = \down
-       \property Voice.dynamicDirection = \down
+       \stemDown
+       \slurDown
+        \tieDown
+       \property Voice.DynamicLineSpanner \push #'direction = #-1
        \autoBeamOff
 }
 
index 4481ce67b33b3203256181b5349e32094cd422fa..62fa32579a8b22e9e801430cd17b6f1b74d834bc 100644 (file)
@@ -1,4 +1,3 @@
-
 /*   
   auto-beam-engraver.cc --  implement Auto_beam_engraver
   
@@ -7,6 +6,7 @@
   (c) 1999--2000 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
+
 #include "beaming.hh"
 #include "musical-request.hh"
 #include "beam.hh"
@@ -19,6 +19,9 @@
 #include "item.hh"
 #include "spanner.hh"
 
+/*
+  TODO: figure what to do in grace?
+ */
 class Auto_beam_engraver : public Engraver
 {
 public:
@@ -56,16 +59,8 @@ private:
   Beaming_info_list*finished_grouping_p_;
 };
 
-
-
-
 ADD_THIS_TRANSLATOR (Auto_beam_engraver);
 
-
-/*
-  TODO: remove all references to Timing_engraver; should read properties.
-  
- */
 Auto_beam_engraver::Auto_beam_engraver ()
 {
   stem_l_arr_p_ = 0;
@@ -75,7 +70,6 @@ Auto_beam_engraver::Auto_beam_engraver ()
   grouping_p_ = 0;
 }
 
-
 bool
 Auto_beam_engraver::do_try_music (Music*) 
 {
@@ -95,7 +89,6 @@ Auto_beam_engraver::consider_end_and_begin (Moment test_mom)
 
   int num = *unsmob_moment (get_property("measureLength")) / one_beat;
   int den = one_beat.den_i ();
-
   
   String time_str = String ("time") + to_str (num) + "_" + to_str (den);
 
@@ -219,7 +212,7 @@ Auto_beam_engraver::consider_end_and_begin (Moment test_mom)
     return;
 
   if (begin_mom)
-    r =     unsmob_moment (get_property ("measurePosition"))->mod_rat (begin_mom);
+    r = unsmob_moment (get_property ("measurePosition"))->mod_rat (begin_mom);
   if (!stem_l_arr_p_ && (!begin_mom || !r))
     begin_beam ();
 }
@@ -449,4 +442,3 @@ Auto_beam_engraver::process_acknowledged ()
        }
     }
 }
-
index 1ffdb1325c7fab7e08d9a14ce46d6705c111237b..5eed84b17cf2283a69e2eef6d95cba8c8ea2aa28 100644 (file)
@@ -213,8 +213,6 @@ Break_align_interface::do_alignment (Score_element *me)
   column->set_elt_property ("stretch-distance",
                            gh_cons (gh_double2scm (-dists[0]),
                                     gh_double2scm (stretch_distance)));
-
-
 }
 
 
index 3c4676b9899170b4ffabe07851231411f51059c5..62b65810782134e04e5337b95de2019bea6abcaf 100644 (file)
 #include "group-interface.hh"
 
 /**
-   Treat a group of elements as a union. This sets the parent of any S
-   added to ELT_L_ to ELT_L_.
 
-   Properties:
 */
 struct Axis_group_interface 
 {
index d0f620a2c4bc0e84eb7a7952f219fa97b4f231f6..729af54e49a854be3468fc5b3aa51e5c0ac69f6d 100644 (file)
 #include "lily-guile.hh"
 #include "molecule.hh"
 
-/**
-   elt_properties:
-   pitches: list of musical-pitch
-   inversion(optional): musical-pitch
-   bass(optional): musical-pitch
- */
+
 class Chord_name
 {
 public:
index 0c3268ea20cb8dd2502eb1b6b1ab16d5de409a74..7bee6ca5085e2eab7e317ef67073511ed32ed6ff 100644 (file)
 #include "lily-guile.hh"
 #include "lily-proto.hh"
 
-/** 
-  As Vertical_group_spanner, but keep track of interesting items.  If
-  we don't contain any interesting items after linebreaking, then
-  gracefully commit suicide.  Objective: don't disgrace Lily by
-  typesetting empty lines in orchestral scores.
 
-  properties:
-
-  items-worth-living -- list of interesting items. If empty in a particular system,
-    clear this line
-
-
-    todo: naming
-*/
 class Hara_kiri_group_spanner 
 {
 public:
index 85c58aa4a9d971f41090472164bb6df0f18d84b4..ce597312c7d6b3a0b2c5416815562c63f3e66630 100644 (file)
   Item is the datastructure for printables whose width is known
   before the spacing is calculated
 
-  NB. This doesn't mean an Item has to initialize the output field before
-  spacing calculation. 
-  
-  
-  Element properties
-  
-  visibility-lambda -- a function that takes the break
-  direction and returns a (transparent, empty) cons
-
-  breakable -- boolean indicating if this is a breakable item (clef,
-  barline, key sig, etc.)
-
-   */
+*/
 class Item : public Score_element
 {
   Drul_array<Item*> broken_to_drul_;
index 3f48ff410dba285f2260ef48828c9acd3a2ad34c..0f2c4d14df36c0cb3a881179b95a809a9b93f25e 100644 (file)
 #include "lily-guile.hh"
 #include "lily-proto.hh"
 
-/**
 
-
-  Properties:
-
-
- */
 struct Key_item
 {
   static int calculate_position(Score_element*,SCM pair) ;
index bd1186d54edcb199102d6236b4e25aa6ac33abb8..330df38719b719fa9922471bb96a7baa613f4b69 100644 (file)
 #include "column-x-positions.hh"
 #include "spanner.hh"
 
-/**
-   The columns of a score that form one line.  The toplevel element.
-   Any element has a Line_of_score as both X and Y reference
-   point. The Paper_score contains one element of this type. Control
-   enters the Score_element dependency calculation from this single
-   Line_of_score object.
-   
-   
-  properties:
-
-    all-elements -- list of all score elements in this line. Needed
-      for protecting elements from GC.
-
-    columns -- list of all paper columns
-
-  */
 class Line_of_score : public Spanner
 {
 public:
index 94055324c7ea3821f86cab0050bd6800105a4fa7..23ba1a6963834b2d42124545a9727c78ca835e76 100644 (file)
 
 
 
-/*
-  Move rests in note-columns so that they do not collide.
-  
-  properties:
-
-  read-only
-
-  maximum-rest-count -- kill off rests so we don't more than this
-    number left.
-
-  minimum-distance -- minimum distance between notes and rests.
-
-  read/write
-  
-  elements -- list of elts (both rests and notes) participating in the
-    collision.
-
-
-  sets in elements:
-
-    rest-collision -- pointer to self.
-
-    
-  
-    
-*/
-
-class Rest_collision           // interface
+class Rest_collision
 {
 public:
   static void add_column (Score_element*me,Score_element*);
index 81fa3115fce0ad28a88e22ae4dfcb56ea4611f10..90a056b60fb9f264fd2f558a82e2f99ed867ac84 100644 (file)
@@ -24,30 +24,12 @@ enum Score_element_status {
   PRECALCED,           // calcs before spacing done
   POSTCALCING,         // busy calculating. This is used to trap cyclic deps.
   POSTCALCED,          // after spacing calcs done
-  BREWING,
-  BREWED,
 };
 
 typedef void (Score_element::*Score_element_method_pointer) (void);
 
-/**
+/*
    Basic output object.
-
-    Element Properties:
-
-   transparent -- boolean: if true, do not print anything black.
-
-   dependencies -- list of score-element pointers that indicate who to
-   compute first.
-
-   interfaces -- list of symbols indicating the interfaces supported
-   by this object.
-
-   extra-offset -- pair of reals (a cons) forcing an extra offset
-   before outputting
-
-   glyph -- afm character name to output.
-   
 */
 class Score_element  {
   /**
@@ -138,8 +120,6 @@ public:
   bool has_interface (SCM intf);
   void set_interface (SCM intf);
 
-
-  DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM ));
   virtual void handle_broken_dependencies ();
   virtual void handle_prebroken_dependencies ();
 
index 74c0b0b4d3d5626507f75783c828f109fe4a4282..51e0b18760c534f4f3f00c204be03b35c43c98d4 100644 (file)
 
 #include "lily-proto.hh"
 
-/** Calc dimensions for the Separating_group_spanner; this has to be
-   an item to get dependencies correct.  It can't be an element_group
-   since these usually are in a different X_group
-
-   Properties:
-
-
-   elements -- list of items.
-   
-   no-spacing-rods -- read from elements: boolean that makes Separation_item ignore
-     this item
-   
+/**  
 */
 struct Separation_item
 {
index 6c9cb6e5ed1de644ce086cb2b16d878e86e10bfc..d5392ee73df095e0a44b10adeb20f6f2145ddfb1 100644 (file)
 #include "spanner.hh"
 #include "item.hh"
 
-/**
-   Position victim object (ELT_L_) next to other objects (the support).
+/*
+  TODO: move  out unrelated callbacks.
 
-   side-support -- list of score elements
-
-   direction-source -- in case side-relative-direction is set, where
-     to get the direction
-
-   TODO: move  out unrelated callbacks.
-
-   TODO: reduce number of methods.
+  TODO: reduce number of methods.
 */
 struct Side_position
 {
index c788b68e0f07156a3ca89869c0c112b74cdf81f6..d4f2e11c01eea1754bd8a501331b2a3803d3f50f 100644 (file)
@@ -11,8 +11,6 @@
 #include "lily-proto.hh"
 #include "rod.hh"
 
-/**
-*/
 class Slur
 {
 public:
index 55e30a0f5cbcbb003f0ad27dcb7b9537d943cf14..dfc939ab712d6ad1e5debda9d62d32c0a2c96d37 100644 (file)
 #include "lily-guile.hh"
 #include "stem-info.hh"
 
-/**the rule attached to the ball.
-  takes care of:
-
-  \begin{itemize}
-  \item the rule
-  \item the flag
-  \item up/down position.
-  \end{itemize}
-
-  should move beam_{left, right} into Beam
-
-  TODO.
-  
-  Stem size depends on flag.
-
-  elt properties:
-
-  beam_dir: direction of the beam (int)
-
-  dir_force: is direction explicitely specified? (bool)
-
-  /// how many abbrev beam don't reach stem?
-  int beam_gap_i_;
-  
-  */
 class Stem 
 {
 public:
   DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM ));
 
-  /// log of the duration. Eg. 4 -> 16th note -> 2 flags
   static  int flag_i (Score_element*) ;
   static int beam_count (Score_element*,Direction) ;
   static void set_beaming (Score_element*,int,  Direction d);
-  /** 
-      don't print flag when in beam.
-      our beam, for aligning abbrev flags
-  */
   static Score_element * beam_l (Score_element*);
   static Score_element * first_head (Score_element*) ;
   static Drul_array<Score_element*> extremal_heads (Score_element*);
   static Score_element * support_head (Score_element*) ;
-  
-  /// ensure that this Stem also encompasses the Notehead #n#
   static void add_head (Score_element*me, Score_element*n);
   static Stem_info calc_stem_info (Score_element *) ;
   static Real chord_start_f (Score_element *) ;
@@ -65,8 +33,6 @@ public:
   static int get_center_distance(Score_element *,Direction) ;
   static int heads_i (Score_element *) ;
   static bool invisible_b(Score_element *) ;
-  /// heads that the stem encompasses (positions)
   static Interval head_positions(Score_element *) ;
   static Real get_default_stem_end_position (Score_element*me) ;
   static void position_noteheads(Score_element*);
index 5d317cda256ea8dc2bd0c51d697bd783ec425cd7..8e96b27683c16e672461094a8e74ba67bf9ca561 100644 (file)
@@ -9,20 +9,13 @@
 
 #include "lily-guile.hh"
 
-/** supportable plet: triplets, eentweetjes, ottava, etc.
+/*
 
     TODO: quantise, we don't want to collide with staff lines.
     (or should we be above staff?)
 
   todo: handle breaking elegantly.
-properties:
-
-  beams -- list of beam ptrs.
-
-  columns -- list of note-columns.
-
 */
-
 class Tuplet_spanner
 {
 public:
index 992c0e5baff13ffa7b7f7158dffd838167778745..4b6f455a556fb216ce39dbe66b5668eb461971e8 100644 (file)
@@ -35,6 +35,12 @@ scm_sizet free_smob (SCM s)
   return 0;
 }
 
+SCM
+ly_input_p (SCM x)
+{
+  return unsmob_input (x) ? SCM_BOOL_T : SCM_BOOL_F ;
+}
+
 static
 void start_input_smobs()
 {
@@ -42,6 +48,8 @@ void start_input_smobs()
     = scm_make_smob_type_mfpe ("input", 0,
                               mark_smob, free_smob,
                               print_smob, 0);
+  scm_make_gsubr ("ly-input-location?", 1, 0, 0, (Scheme_function_unknown)ly_input_p);
 }
 
 SCM
@@ -73,3 +81,4 @@ ADD_SCM_INIT_FUNC(input, start_input_smobs);
 
 
 Input dummy_input_global;
+
index bf888bc1b068d9bbdb825996252557929b914765..e119ab714adf7c1dadce2d7bfaf093932a6fa55a 100644 (file)
@@ -64,10 +64,11 @@ Repeat_acknowledge_engraver::do_process_music ()
     return ; 
   
   SCM cs = get_property ("repeatCommands");
-
+  
   String s = "";
-  bool start  = false;
+  bool start = false;
   bool end = false;
+  bool volta_found = false;
   while (gh_pair_p (cs))
     {
       SCM command = gh_car (cs);
@@ -75,6 +76,8 @@ Repeat_acknowledge_engraver::do_process_music ()
        start = true;
       else if (command == ly_symbol2scm ("end-repeat"))
        end = true;
+      else if (gh_pair_p (command) && gh_car (command) == ly_symbol2scm ("volta"))
+       volta_found = true;
       cs = gh_cdr (cs);      
     }
 
@@ -85,7 +88,10 @@ Repeat_acknowledge_engraver::do_process_music ()
   else if (end)
     s = ":|";
 
-  if (s != "")
+  /*
+    TODO: line breaks might be allowed if we set whichBar to "". 
+   */
+  if (s != "" || (volta_found && !gh_string_p (get_property ("whichBar"))))
     {
       daddy_trans_l_->set_property ("whichBar", ly_str02scm(s.ch_C()));
     }
index 4a4c59d60da5972de8767809233786472562ac12..6f5f97bd65582ee562be32a318167328bf2f708f 100644 (file)
@@ -296,9 +296,8 @@ Score_element::get_molecule ()  const
   Molecule m (create_molecule (mol));
 
   /*
-    This is almost the same as setting molecule-callback to #f, but
-    this retains the dimensions of this element, which means that you
-    can erase elements individually.  */
+    transparent retains dimensions of element.
+   */
   if (to_boolean (get_elt_property ("transparent")))
     m = Molecule (m.extent_box (), SCM_EOL);
 
@@ -320,26 +319,6 @@ Score_element::do_break_processing()
 
 
 
-MAKE_SCHEME_CALLBACK(Score_element,brew_molecule,1)
-
-/*
-  ugh.
- */  
-SCM
-Score_element::brew_molecule (SCM smob) 
-{
-  Score_element * sc = unsmob_element (smob);
-  SCM glyph = sc->get_elt_property ("glyph");
-  if (gh_string_p (glyph))
-    {
-      return sc->lookup_l ()->afm_find (String (ly_scm2string (glyph))).create_scheme ();
-    }
-  else
-    {
-      return SCM_EOL;
-    }
-}
-
 
 Line_of_score *
 Score_element::line_l() const
index 756993387e61f3c3f4f175f5c2f1a4c9de09c8a4..c7bbf78aaac7ddf21e7191793d3975958bd16748 100644 (file)
@@ -129,8 +129,7 @@ Side_position::aligned_on_self (SCM element_smob, SCM axis)
        }
       else
        {
-         Real lambda = (0.5 - gh_scm2double (align) / 2.0);
-         return gh_double2scm (- (lambda * ext[LEFT] + (1 - lambda) * ext[RIGHT]));
+         return gh_double2scm (- ext.linear_combination (gh_scm2double (align)));
        }
     }
   else if (unsmob_element (align))
index b9f3396206ed96215e8d5a5bafff1de7e002ae0c..5e611e7c179969b5c44a286dfb838e3155feafae 100644 (file)
@@ -186,7 +186,7 @@ Slur_bezier_bow::minimise_enclosed_area (Paper_def* paper_l, Real beauty)
       curve_.control_[2][X_AXIS] -= da[1] * u * pct;
     }
 
-  Real area = enclosed_area_f ();
+  //  Real area = enclosed_area_f ();
 }
 
 
index a7fe2500b3880625a2255b113cc89edcacf9a020..f0a78fa2778369e5483d79a5e93b5d2d0475ccd3 100644 (file)
@@ -238,16 +238,10 @@ Stem::get_default_dir (Score_element*me)
   return to_dir (me->get_elt_property ("default-neutral-direction"));
 }
 
-/*
-  ugh. A is used for different purposes. This functionality should be
-  moved into scheme at some point to get rid of the silly
-  conversions. (but lets wait till we have namespaces in SCM)
- */
 Real
 Stem::get_default_stem_end_position (Score_element*me) 
 {
   bool grace_b = to_boolean (me->get_elt_property ("grace"));
-  String type_str = grace_b ? "grace-" : "";
   SCM s;
   Array<Real> a;
 
@@ -301,14 +295,14 @@ Stem::get_default_stem_end_position (Score_element*me)
    Real st = head_positions(me)[dir] + dir * length_f;
   
    bool no_extend_b = to_boolean (me->get_elt_property ("no-stem-extend"));
-    if (!grace_b && !no_extend_b && dir * st < 0)
+   if (!grace_b && !no_extend_b && dir * st < 0) // junkme?
       st = 0.0;
 
   return st;
 }
 
 /*
-  FIXME: wrong name
+  Number of hooks on the flag, ie. the log of the duration.
  */
 int
 Stem::flag_i (Score_element*me) 
index 39bc2306de81bbc0e3156c945b4f8cc115419d12..ffbf5f40fa68009290a924dbc847c3140321405c 100644 (file)
@@ -129,17 +129,27 @@ Tie::get_control_points (SCM smob)
 
   Real x_gap_f = gh_scm2double (me->get_elt_property ("x-gap"));
 
-  Score_element* commonx = me->common_refpoint (me->get_bound (LEFT), X_AXIS);
-  commonx = me->common_refpoint (me->get_bound (RIGHT), X_AXIS);
-  
   Score_element* l = me->get_bound (LEFT);
   Score_element* r = me->get_bound (RIGHT);  
 
+  Score_element* commonx = me->common_refpoint (l, X_AXIS);
+  commonx = me->common_refpoint (r, X_AXIS);
+  
   Real left_x;
+
+  /*
+    this is a kludge: the tie has to be long enough to be
+    visible, but should not go through key sigs.
+
+    (please fixme)
+   */
+  Real lambda = 0.5;           
+  
   if (Note_head::has_interface (me->get_bound (LEFT)))
     left_x = l->extent (l, X_AXIS)[RIGHT] + x_gap_f;
   else
-    left_x = l->extent (l, X_AXIS).length () / 2;
+    left_x = l->extent (l, X_AXIS).linear_combination (lambda);
+  
 
   Real width;
   if (Note_head::has_interface (me->get_bound (LEFT))
@@ -157,10 +167,9 @@ Tie::get_control_points (SCM smob)
          - l->extent (commonx, X_AXIS)[RIGHT]
          - 2 * x_gap_f;
       else
-       width = 
-         - l->extent (l, X_AXIS).length () / 2
+       width =
+         - l->extent (commonx, X_AXIS).linear_combination (lambda)  
          + r->extent (commonx, X_AXIS)[LEFT]
-         - l->relative_coordinate (commonx, X_AXIS)
          - 2 * x_gap_f;
     }
   
@@ -212,9 +221,12 @@ Tie::get_control_points (SCM smob)
 
   /*
     Avoid colliding of the horizontal part with stafflines.
+
     
-    should do me for slurs as well.
+    TODO: redo this, heuristic is half-baken, and ties often look ugly
+    as a result.
 
+    TODO: doesn't work when on staff with even number of lines.
    */
   Array<Real> horizontal (b.solve_derivative (Offset (1,0)));
   if (horizontal.size ())
@@ -233,7 +245,20 @@ Tie::get_control_points (SCM smob)
        if (fabs (y) <= Staff_symbol_referencer::staff_radius (me)
          && fabs (diff) < clear)
        {
-         newy = ry - 0.5 * staff_space * sign (diff) ;
+         Real y1 = ry + clear;
+         Real y2 = ry - clear;
+         
+         newy =  (fabs (y1 - y) < fabs (y2 - y)) ? y1 : y2;
+         
+         //      newy = ry - 0.5 * staff_space * sign (diff) ;
+
+         /*
+           we don't want horizontal ties
+          */
+         if (fabs (newy - b.control_[0][Y_AXIS]) < 1e-2)
+           {
+             newy = newy + dir * staff_space; 
+           }
        }
 
       Real y0 = b.control_ [0][Y_AXIS];
index 47eabef881a6341b14734d9fbb6ca5465461ecb9..044ba7e8427a37bdfbee081ecbd39402f9d195a6 100644 (file)
@@ -53,6 +53,8 @@ Unfolded_repeat_iterator::next_element (bool side_effect)
 
        - go to alternative if we're a volta
 
+       - make a :| if there are no alternatives   
+       
        - do something intelligent when we're fully unfolding (fixcomment)
        */
       
@@ -74,7 +76,11 @@ Unfolded_repeat_iterator::next_element (bool side_effect)
                                             ly_str02scm (repstr.ch_C()), SCM_UNDEFINED));
            }     
        }
-      else if (done_count_ <  repmus->repeats_i_ && !repmus->volta_fold_b_) 
+      else if (repmus->volta_fold_b_)
+       {
+         add_repeat_command (ly_symbol2scm ("end-repeat"));
+       }
+      else if (done_count_ <  repmus->repeats_i_)
        {
          current_iter_p_ = get_iterator_p (repmus->body ());
          do_main_b_ = true;
index d80304ad9b1ea1ee3a941c4e3f4257e18e2fee22..d208b44a105a241e4915c50214987086125c0b4b 100644 (file)
@@ -162,3 +162,7 @@ Volta_engraver::do_pre_move_processing ()
       end_volta_span_p_ =0;
     }
 }
+
+/*
+  TODO: should attach volta to paper-column if no bar is found.
+ */
index 8d5be1e0642a83a21994b6e8c12d4f3f5c0b1b24..60c71da79679865b9a67b87eca7fb8f145955fcf 100644 (file)
@@ -55,7 +55,7 @@ ChoirStaffContext = \translator {
        \name ChoirStaff;
        alignmentReference = \center;
        \consists "System_start_delimiter_engraver";
-       systemStartDelimiterGlyph = #'bracket
+       SystemStartDelimiter \push #'glyph = #'bracket
 
        \accepts "Staff";
        \accepts "RhythmicStaff";
@@ -142,7 +142,7 @@ GraceContext=\translator {
        \consists "Stem_engraver";
        \consists "Beam_engraver";
        \consists "Slur_engraver";
-       
+
        \consists "Auto_beam_engraver";
        \consists "Align_note_column_engraver";
 
@@ -194,7 +194,7 @@ GrandStaffContext=\translator{
        \consists "Span_bar_engraver";
        \consists "Span_arpeggio_engraver";
        \consists "System_start_delimiter_engraver";
-       systemStartDelimiterGlyph = #'brace
+       SystemStartDelimiter \push #'glyph = #'brace
        
        \consists "Property_engraver";  
        Generic_property_list = #generic-grand-staff-properties
@@ -220,7 +220,8 @@ StaffGroupContext= \translator {
        \consists "Span_bar_engraver";
        \consists "Span_arpeggio_engraver";
        \consists "Output_property_engraver";   
-       systemStartDelimiterGlyph = #'bracket
+       SystemStartDelimiter \push #'glyph = #'bracket
+
        \consists "System_start_delimiter_engraver";
        \accepts "Staff";
        \accepts "RhythmicStaff";
@@ -398,7 +399,7 @@ ScoreContext = \translator {
        alignmentReference = \down;
        defaultClef = #"treble"
        defaultBarType = #"|"
-       systemStartDelimiterGlyph = #'bar-line
+
        explicitClefVisibility = #all-visible
        explicitKeySignatureVisibility = #all-visible
        
index 80613065f48950c5702480e65f6763ca02da7945..dedecbf7a17ffcc7fb958818e158d260aa6daf5b 100644 (file)
@@ -77,7 +77,7 @@
        ))
 
        (Clef . (
-          (molecule-callback . ,Score_element::brew_molecule)
+          (molecule-callback . ,Clef::brew_molecule)
           (before-line-breaking-callback . ,Clef::before_line_breaking)
           (breakable . #t)
           (break-align-symbol . Clef_item)
        
        (InstrumentName . (
                (breakable . #t)
-               (Y-offset-callbacks . (,Side_position::centered_on_parent))
+               (Y-offset-callbacks . (,Side_position::centered_on_parent
+                                      ,Side_position::aligned_on_self))
+               (self-alignment-Y . 0)
                (molecule-callback . ,Text_item::brew_molecule)         
                (break-align-symbol . Instrument_name)
                (visibility-lambda . ,begin-of-line-visible)
        
        (LineOfScore . (
                (axes . (0 1))
-               (meta . ,(element-description "LineOfScore"  axis-group-interface))
+               (meta . ,(element-description "LineOfScore"  line-of-score-interface axis-group-interface))
        ))
        
        (LyricExtender . (
                (arch-height . 1.5)
                (arch-angle . 50.0)
                (arch-thick . 0.25)
+               (glyph . bar-line)
                (arch-width . 1.5)
                (bracket-thick . 0.25)
                (bracket-width . 2.0)
+               (Y-extent-callback . #f)
                (meta . ,(element-description "SystemStartDelimiter" system-start-delimiter ))
        ))
 
        (Tie . (
                (molecule-callback . ,Tie::brew_molecule)
                (spacing-procedure . ,Tie::set_spacing_rods)
-               (staffline-clearance . 0.24)
+               (staffline-clearance . 0.35)
                (details . ((ratio . 0.333) (height-limit . 1.0)))
                (thickness . 1.2)
                (x-gap . 0.2)
index 9f33bdf1e7f2432d5f569578861de0e802d85062..4868dfa3a026e213663c085012ce751607d7a0d8 100644 (file)
   )
   
 (define (self-evaluating? x)
-  (or (number? x) (string? x) (procedure? x))
+  (or (number? x) (string? x) (procedure? x) (boolean? x))
   )
 
-(define (type-name  predicate)
-  (cond
-   ((eq? predicate dir?) "direction")
-   ((eq? predicate ly-element?) "graphic element")
-   ((eq? predicate pair?) "pair")
-   ((eq? predicate integer?) "integer")
-   ((eq? predicate list?) "list")
-   ((eq? predicate symbol?) "symbol")
-   ((eq? predicate string?) "string")
-   ((eq? predicate boolean?) "string")
-   ((eq? predicate number?) "number")
-   ((eq? predicate char?) "char")
-   ((eq? predicate input-port?) "input port")
-   ((eq? predicate output-port?) "output port")   
-   ((eq? predicate vector?) "vector")
-   ((eq? predicate procedure?) "procedure") 
-   (else "(unknown)")
-  ))
 
 (define (htmlfy x)
   (let*
         (name (cdr (assoc 'name meta)))
         (ifaces (cdr (assoc 'interface-descriptions meta)))
         (ifacedoc (map (lambda (x) (document-interface x description))
-                               ifaces))
+                               (reverse ifaces)))
         (outname  (string-append name ".html"))
         (out (open-output-file outname))
         )
index d7f25a10af59bae2351803fb2ea5b38eb5e0c549..fd0b407b71cd34712840e9e6d71cd1071d2aedbb 100644 (file)
 
 (use-modules (ice-9 regex))
 
+(define (number-pair?  x)
+  (and (pair? x) (number? (car x)) (number? (cdr x))))
+
+(define (type-name  predicate)
+  (cond
+   ((eq? predicate dir?) "direction")
+   ((eq? predicate number-pair?) "pair of numbers")
+   ((eq? predicate ly-input-location?) "input location")   
+   ((eq? predicate ly-element?) "graphic element")
+   ((eq? predicate pair?) "pair")
+   ((eq? predicate integer?) "integer")
+   ((eq? predicate list?) "list")
+   ((eq? predicate symbol?) "symbol")
+   ((eq? predicate string?) "string")
+   ((eq? predicate boolean?) "boolean")
+   ((eq? predicate moment?) "moment")
+   ((eq? predicate number?) "number")
+   ((eq? predicate char?) "char")
+   ((eq? predicate input-port?) "input port")
+   ((eq? predicate output-port?) "output port")   
+   ((eq? predicate vector?) "vector")
+   ((eq? predicate procedure?) "procedure") 
+   (else "unknown type")
+  ))
+
+
 ;; The regex module may not be available, or may be broken.
 (define use-regex
   (let ((os (string-downcase (vector-ref (uname) 0))))