]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.28
authorfred <fred>
Tue, 26 Mar 2002 22:46:09 +0000 (22:46 +0000)
committerfred <fred>
Tue, 26 Mar 2002 22:46:09 +0000 (22:46 +0000)
21 files changed:
Documentation/topdocs/INSTALL.texi
Documentation/topdocs/index.tely
buildscripts/mutopia-index.py
input/test/GNUmakefile
input/test/sleur.ly
lily/crescendo.cc
lily/dimension-cache.cc
lily/include/atom.hh
lily/include/lily-guile.hh
lily/include/lily-proto.hh
lily/include/tuplet-spanner.hh
lily/lily-guile.cc
lily/lookup.cc
lily/paper-score.cc
lily/tie.cc
lily/tuplet-spanner.cc
lily/volta-spanner.cc
make/mutopia-targets.make
make/toplevel.make.in
scm/lily.scm
scripts/ly2dvi.py

index b0a5d56567b1f25c52f89391819f6dc043a5a11a..8678c583b19ff06500f36f2e24d167b2dda06356 100644 (file)
 
 This document explains what you need to install LilyPond, and what you
 should do.  If you are going to compile and install LilyPond often,
-e.g. when doing development, you might want to check out the 
-@file{buildscripts/set-lily.sh} script.  It sets some environment 
-variables and symlinks, which comes in handly when you have to compile 
-LilyPond more often.  
+e.g. when doing development, you might want to check out the
+@file{buildscripts/set-lily.sh} script.  It sets some environment
+variables and symlinks, which comes in handy when you have to compile
+LilyPond more often.
 
 @section Obtaining
 
index e87837690fc7b0e12bb4d60d0580abe6b638f875..e1211293a7edad2497faf4c5f01e44ee25668f01 100644 (file)
@@ -70,7 +70,7 @@ almost no restrictions.  LilyPond is part of the
 The version numbers are in Linux-kernel style: even numbered versions
 are `stable'. The webpages for the stable version (1.2) reside at GNU,
 here: @uref{http://www.gnu.org/software/lilypond}. Big enhancements go
-into the latest odd numbered version (1.3), which webpages are on 
+into the latest odd numbered version (1.3); its  webpages are on 
  @uref{http://www.cs.uu.nl/~hanwen/lilypond/,Han-Wen's site}.
 
 If want more information, you can browse the
@@ -91,8 +91,8 @@ For the latest and greatest features, check out the
 
 
 If you are interested in sheet music typeset by LilyPond, have a look at
-the examples included. We have @uref{./input/out-www/index.html,short
-examples} and @uref{./mutopia/out-www/index.html,longer examples}. The
+the examples included. We have @uref{short-examples.html,short
+examples} and @uref{long-examples.html,longer examples}. The
 examples include sound bites  in MIDI, pictures in PNG, printable scores
 in PostScript, and LilyPond input.
 
@@ -112,9 +112,9 @@ large archive of public domain sheet music under construction.
 
 If you want to compile LilyPond from source, download here:
 @itemize @bullet
-@item    Download stable releases at
+@item Download stable releases at
 @uref{ftp://ftp.gnu.org/gnu/lilypond/}
-@item    Download development releases at
+@item Download development releases at
 @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/}
 @item Canadian mirror   @uref{http://sca.uwaterloo.ca/lilypond/} and @uref{ftp://sca.uwaterloo.ca/pub/} 
 @item Another site in Europe
@@ -122,7 +122,8 @@ If you want to compile LilyPond from source, download here:
 @end itemize
 
 Installing and compiling requires many additional packages, which are
-listed in the  @uref{Documentation/topdocs/out-www/INSTALL.html, installation instructions}.
+listed in the @uref{Documentation/topdocs/out-www/INSTALL.html,
+installation instructions}.
 
 There are binaries available, but alas they are not updated for every version released.
 @itemize @bullet
@@ -144,25 +145,6 @@ If you have questions, do write to the mailing lists!
  (But don't forget to read the @uref{Documentation/out-www/faq.html,
 Frequently Asked Questions} first.)
 
-@html
-<p align=center>
-[
-    <a href="#download">Download</a>
-    |
-    <a href="Documentation/out-www/faq.html">FAQ</a>
-    |
-    <a href="Documentation/out-www/index.html">Documentation</a>
-    |
-    <a href="#music">Music archives</a>
-    |
-    <a href="#mailing-lists">Mailing lists</a>
-    |
-    <a href="Documentation/programmer/out-www/regression-test.html">
-    Regression test</a>
-    |
-    <a href="Documentation/out-www/CHANGES.txt">News</a>
-]
-@end html
 
 @table @samp
 @item info-gnu-music@@gnu.org
index be4163087bd25fb365783db9736e676364d23134..9e05102b94005f7feb55b3af7850275761c3e865 100644 (file)
@@ -46,7 +46,7 @@ yourself."""
 # FIXME breaks on multiple strings.
 #
 def read_mudela_header (fn):
-       s = gulp_file(fn)
+       s = open(fn).read ()
        s = re.sub('%.*$', '', s)
        s = re.sub('\n', ' ', s)                
 
@@ -77,47 +77,36 @@ def help ():
        sys.stdout.write (r"""Usage: mutopia-index [options] INFILE OUTFILE
 Generate index for mutopia\n
 Options:
-  -h, --help                        print this help
-  --prefix=PRE                  specify prefix
+  -h, --help                 print this help
+  -o,-output=FILE            write output to file.
   -s, --subdirs=DIR         add subdir
   --suffix=SUF                  specify suffix"""
                                          )
        sys.exit (0)
 
 # ugh.
-def gen_list(inputs, subdir, filename):
-       (pre, subdirs, post)=subdir
+def gen_list(inputs, filename):
        print "generating HTML list %s\n" % filename
-       list = open(filename, 'w')
+       if filename:
+               list = open(filename, 'w')
+       else:
+               list = sys.stdout
        list.write ('<html><TITLE>Rendered Examples</TITLE>\n')
        list.write ('<body bgcolor=white>')
-       if subdirs:
-               list.write  ('<h2>subdirectories</h2>')
-               list.write  ('<ul>')                
-               for ex in subdirs:
-                       print 'subdir %s ' % ex
-                       list.write ('<li><a href=%s/index.html>Subdirectory: %s</a></li>\n' % (pre + ex + post , ex))
-
-               list.write ('</ul>')
-
-
-
+       
        if inputs:
-                       list.write('<h2>Contents of this directory</h2>\n');
-
                        list.write (headertext)
        else:
                        list.write (headertext_nopics)
 
 
        for ex in inputs:
-               ex_ext = '.ly'
+               (base, ext) = os.path.splitext (ex)
+               (base, ext2) = os.path.splitext (base)          
+               ext = ext2 + ext
+               
                print '%s, ' % ex
-               try:
-                       header = read_mudela_header(ex + ex_ext + '.txt')
-               except:
-                       ex_ext = '.fly'
-                       header = read_mudela_header(ex + ex_ext + '.txt')
+               header = read_mudela_header(ex)
                
                def read_dict(s, default, h =header):
                                try:
@@ -125,7 +114,7 @@ def gen_list(inputs, subdir, filename):
                                except KeyError:
                                        ret = default
                                return ret
-               head = read_dict('title', ex)
+               head = read_dict('title', os.path.basename (base))
                composer = read_dict('composer', '')
                desc = read_dict('description', '')
                list.write('<hr>')
@@ -142,14 +131,15 @@ def gen_list(inputs, subdir, filename):
                                l.write (' (%s %dk)' % (type, (size + 512) / 1024))
                                pictures = ['jpeg', 'png', 'xpm']
                                l.write ('\n')
-               list_item(ex + ex_ext + '.txt', 'The input', 'ASCII')
+
+               list_item(base + ext, 'The input', 'ASCII')
                for pageno in range(1,100):
-                       f  = ex + '-page%d.png' % pageno
+                       f  = base + '-page%d.png' % pageno
                        if not file_exist_b (f):
                                break
                        list_item(f, 'The output, page %d' % pageno, 'png')
-               list_item(ex + '.ps.gz', 'The output', 'gzipped PostScript')
-               list_item(ex + '.midi', 'The output', 'MIDI')
+               list_item(base + '.ps.gz', 'The output', 'gzipped PostScript')
+               list_item(base + '.midi', 'The output', 'MIDI')
                list.write ("</ul>");
 
        list.write( "</BODY></HTML>");
@@ -158,23 +148,31 @@ def gen_list(inputs, subdir, filename):
 import getopt
 
 (options, files) = getopt.getopt(sys.argv[1:], 
-  'hp:s:', ['help', 'subdirs=', 'suffix=',  'prefix='])
-subdir_pre=''
-subdir_suf =''
+  'ho:', ['help', 'output='])
+outfile = 'examples.html'
 
 subdirs =[]
 for opt in options:
        o = opt[0]
        a = opt[1]
-       if o == '--subdirs' or o == '-s':
-               subdirs.append (a)
-       elif o == '--prefix':
-               subdir_pre = a
-       elif o == '--suffix':
-               subdir_suf = a
+       if o == '--help' or o == '-h':
+               help()
+       elif o == '--output' or o == '-o':
+               outfile = a
 
-               
-allfiles = find.find ('*.ly') + find.find ('*.ly.txt')
+dirs  = []
+for f in files:
+       dirs = dirs + find.find ('out-www', f);
+
+if not dirs:
+       dirs = ['.']
+
+allfiles = []
+
+for d in dirs:
+       allfiles = allfiles + find.find ('*.ly.txt', d)
+
+print allfiles
 
-gen_list (files, (subdir_pre, subdirs, subdir_suf), 'index.html')
+gen_list (allfiles, outfile)
 
index 00cddc0806aa24194d8ef3e74561607407e45715..0923318b9973a52651f3dd0559fa0981bfddc0e7 100644 (file)
@@ -1,7 +1,7 @@
 # input/test/Makefile
 
 depth = ../..
-examples=font20  sleur
+examples=font20  
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
 include $(depth)/make/stepmake.make 
index f9f6cd1d8ff9a83c05fa9309fd854db1a2c779d0..0b69da1a7b5add4fc1f467337faa624b75c25dcd 100644 (file)
@@ -1,8 +1,8 @@
 \header{
+title = "sleur";
+subtitle = "test slurs.";
 enteredby =     "jcn";
 copyright =     "public domain";
-TestedFeatures =        "This file tests Feta embedded slurs" +
-        "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
 \version "1.3.5";
index b8d1744fb4cc298209d84038f2f97b34ba127537..481d30bca713b4c7335cf3542176dfec5a55b89a 100644 (file)
@@ -83,14 +83,14 @@ Crescendo * me = (Crescendo*)this;
   m->dim_.x () = Interval (0, width);
   m->dim_.y () = Interval (-2*height, 2*height);
 
-  Atom *a = new Atom(gh_list (ly_symbol2scm (hairpin),
+  SCM at = gh_list (ly_symbol2scm (hairpin),
                     gh_double2scm (thick),
                     gh_double2scm (width),
                     gh_double2scm (height),
                     gh_double2scm (continued ? height/2 : 0.0),
-                    SCM_UNDEFINED));
+                    SCM_UNDEFINED);
 
-  m->add_atom (a->self_scm_);
+  m->add_atom (at);
   m->translate_axis (extra_left, X_AXIS);
   return m;
 }
index 005499624b6a1b3f0d743dec272a63ec5bc48526..69ff282b0a929ec1f3bb13a89795bc16e600e8c8 100644 (file)
@@ -90,16 +90,16 @@ Dimension_cache::get_offset () const
 Dimension_cache *
 Dimension_cache::common_refpoint (Dimension_cache const* s) const
 {
-  Link_array<Dimension_cache> my_groups;
-  for (Dimension_cache const *c = this; c ; c = c->parent_l_)
-    my_groups.push ((Dimension_cache*)c);
-  
-  Dimension_cache const *common=0;
-  
-  for (Dimension_cache const * d = s; !common && d; d = d->parent_l_)
-    common = (Dimension_cache const*)my_groups.find_l (d);
-
-  return (Dimension_cache*) common;
+  /*
+    I don't like the quadratic aspect of this code. Maybe this should
+    be rewritten some time, but the largest chain of parents might be
+    10 high or so, so it shouldn't be a real issue. */
+  for (Dimension_cache const *c = this; c; c = c->parent_l_)
+    for (Dimension_cache const * d = s; d; d = d->parent_l_)
+      if (d == c)
+       return (Dimension_cache*)d;
+
+  return 0;
 }
 
 Interval
index 877cdd999ec19dd6bef3e5e90af5d63282a36e76..10b6fcb3645fdf377940927f0ea04fadae5b1601 100644 (file)
@@ -9,35 +9,12 @@
 #ifndef ATOM_HH
 #define ATOM_HH
 
-#include "protected-scm.hh"
-#include "string.hh"
-#include "box.hh"
 #include "lily-proto.hh"
+#include "box.hh"
 #include "lily-guile.hh"
-#include "smobs.hh"
-
-/**
-   Atoms should only be created on the heap, ie. with
-   "new Atom"
- */
-class Atom {
-  Offset off_;
-
-  friend class Molecule;
-  friend class Paper_outputter;
-public:
-  Atom (SCM s);
-  Atom (Atom const&);
-  
-  DECLARE_SMOBS;
-
-  /*
-    SCM expression that (when evaluated) gives a TeX string
-representing a musical notation symbol.  */
-  SCM func_;
-  void fontify (Font_metric*);
-};
 
-Atom* unsmob_atom (SCM);
+SCM translate_atom (Offset, SCM);
+SCM translate_atom_axis (Real, Axis,SCM); 
+SCM fontify_atom (Font_metric*, SCM atom);
 
 #endif
index 28cf68fa91959506904208e434b227e91f74fb07..8d808ac4039208a140aee1bc946175836c90181f 100644 (file)
@@ -21,7 +21,7 @@ SCM ly_symbol2scm (char const *);
 String ly_symbol2string (SCM);
 
 SCM ly_offset2scm (Offset o);
-
+Offset ly_scm2offset (SCM s);
 SCM ly_eval (SCM a);
 SCM ly_parse_scm (char const* s, int* n);
 SCM ly_quote_scm (SCM s);
index 52a930409ce82894e7d887e5fbf78b6721bb66eb..af8c468994ea0e53f9a7d2cdfe3d5ac72de960bd 100644 (file)
@@ -18,7 +18,6 @@ struct Adobe_font_metric;
 struct Align_element;
 struct All_font_metrics;
 struct Articulation_req;
-struct Atom;
 struct Audio_column;
 struct Audio_element;
 struct Audio_element_info;
index de429e895409b8797f4873a859e0025851e00a8e..e20141319792a79f8b16e235319141cf5b9ca7c4 100644 (file)
@@ -25,7 +25,8 @@ public:
   void add_column (Note_column*);
   void add_beam (Beam*);
 protected:
-  void calc_position_and_height (Real*,Real*)const;
+  void calc_dy (Real *) const;
+  void calc_position_and_height (Real*,Real *dy)const;
   
   virtual Molecule* do_brew_molecule_p () const;
   VIRTUAL_COPY_CONS(Score_element);
index 036bd19039bfe4614ba41f1a2f6291c56d9802f8..0ed09ec2de6e83fd1b810e93a9c7e2ecddb6b2cd 100644 (file)
@@ -91,9 +91,6 @@ ly_parse_scm (char const* s, int* n)
   return answer;
 }
 
-/*
-  scm_m_quote doesn't use any env, but needs one for a good signature in GUILE.
-*/
 SCM
 ly_quote_scm (SCM s)
 {
@@ -335,3 +332,10 @@ ly_offset2scm (Offset o)
 {
   return gh_cons (gh_double2scm (o[X_AXIS]), gh_double2scm(o[Y_AXIS]));
 }
+
+Offset
+ly_scm2offset (SCM s)
+{
+  return Offset (gh_scm2double (gh_car (s)),
+                gh_scm2double (gh_cdr (s)));
+}
index f074bab26a7c55b2b858ea5079339f83016898f9..28a50a073eeb96b44316f1950668ac6cc15eb218 100644 (file)
@@ -66,13 +66,13 @@ Lookup::afm_find (String s, bool warn) const
       return m;
     }
   
-  Atom* at = new Atom (gh_list (ly_symbol2scm ("char"),
+  SCM at =  (gh_list (ly_symbol2scm ("char"),
                    gh_int2scm (cm->code),
                    SCM_UNDEFINED));
 
-  at->fontify (afm_l_);
+  at= fontify_atom (afm_l_,at);
   m.dim_ = afm_bbox_to_box (cm->charBBox);
-  m.add_atom (at->self_scm_);
+  m.add_atom (at);
   return m;
 }
 
@@ -182,14 +182,13 @@ Lookup::beam (Real slope, Real width, Real thick)
   m.dim_[Y_AXIS] = Interval (min_y, max_y);
 
   
-  Atom *at = new Atom
-    (gh_list (ly_symbol2scm ("beam"),
+  SCM at = (gh_list (ly_symbol2scm ("beam"),
              gh_double2scm (width),
              gh_double2scm (slope),
              gh_double2scm (thick),
              SCM_UNDEFINED));
 
-  m.add_atom (at->self_scm_);
+  m.add_atom (at);
   return m;
 }
 
@@ -204,13 +203,13 @@ Lookup::dashed_slur (Bezier b, Real thick, Real dash)
       l = gh_cons (ly_offset2scm (b.control_[i]), l);
     }
 
-  Atom *at = new Atom(gh_list (ly_symbol2scm ("dashed-slur"),
+  SCM at = (gh_list (ly_symbol2scm ("dashed-slur"),
                               gh_double2scm (thick), 
                               gh_double2scm (dash),
                               ly_quote_scm (l),
                               SCM_UNDEFINED));
   Molecule m;
-  m.add_atom (at->self_scm_);
+  m.add_atom (at);
   return m;
 }
 
@@ -231,7 +230,7 @@ Lookup::filledbox (Box b )
 {
   Molecule m;
   
-  Atom* at  = new Atom(gh_list (ly_symbol2scm ("filledbox"),
+  SCM  at  = (gh_list (ly_symbol2scm ("filledbox"),
                     gh_double2scm (-b[X_AXIS][LEFT]),
                     gh_double2scm (b[X_AXIS][RIGHT]),                 
                     gh_double2scm (-b[Y_AXIS][DOWN]),
@@ -239,7 +238,7 @@ Lookup::filledbox (Box b )
                     SCM_UNDEFINED));
 
   m.dim_ = b;
-  m.add_atom (at->self_scm_);
+  m.add_atom (at);
   return m;
 }
 
@@ -364,12 +363,12 @@ Lookup::text (String style, String text, Paper_def *paper_l)
     
   m.dim_ = metric_l->text_dimension (text);
   
-  Atom *at = new Atom (gh_list (ly_symbol2scm ("text"),
+  SCM at = (gh_list (ly_symbol2scm ("text"),
                     ly_str02scm (text.ch_C()),
                     SCM_UNDEFINED));
-  at->fontify (metric_l);
+  at = fontify_atom (metric_l,at);
   
-  m.add_atom (at->self_scm_);
+  m.add_atom (at);
   return m;
 }
   
@@ -393,13 +392,13 @@ Lookup::staff_brace (Real y, int staff_size)
     nm = ly_scm2string (gh_cdr (l));
   nm += to_str (staff_size);
   SCM e =gh_list (ly_symbol2scm ("char"), gh_int2scm (idx), SCM_UNDEFINED);
-  Atom *at = new Atom (e);
+  SCM at = (e);
 
-  at->fontify (all_fonts_global_p->find_font (nm));
+  at = fontify_atom (all_fonts_global_p->find_font (nm), at);
   
   m.dim_[Y_AXIS] = Interval (-y/2,y/2);
   m.dim_[X_AXIS] = Interval (0,0);
-  m.add_atom (at->self_scm_);
+  m.add_atom (at);
   return m;
 }
  
@@ -434,7 +433,7 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick)
     }
   
   
-  Atom *at = new Atom (gh_list (ly_symbol2scm ("bezier-sandwich"),
+  SCM at = (gh_list (ly_symbol2scm ("bezier-sandwich"),
                     ly_quote_scm (list),
                     gh_double2scm (linethick),
                     SCM_UNDEFINED));
@@ -442,7 +441,7 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick)
   Molecule m; 
   m.dim_[X_AXIS] = curve.extent (X_AXIS);
   m.dim_[Y_AXIS] = curve.extent (Y_AXIS);
-  m.add_atom (at->self_scm_);
+  m.add_atom (at);
   return m;
 }
 
@@ -450,7 +449,7 @@ Molecule
 Lookup::staff_bracket (Real height, Paper_def* paper_l)
 {
   Molecule m;
-  Atom *at = new Atom  ( gh_list (ly_symbol2scm ("bracket"),
+  SCM at = ( gh_list (ly_symbol2scm ("bracket"),
                      gh_double2scm (paper_l->get_var("bracket_arch_angle")),
                      gh_double2scm (paper_l->get_var("bracket_arch_width")),
                      gh_double2scm (paper_l->get_var("bracket_arch_height")),
@@ -460,7 +459,7 @@ Lookup::staff_bracket (Real height, Paper_def* paper_l)
                      gh_double2scm (paper_l->get_var("bracket_thick")),
                      SCM_UNDEFINED));
   
-  m.add_atom (at->self_scm_);                           
+  m.add_atom (at);                              
   m.dim_[Y_AXIS] = Interval (-height/2,height/2);
   m.dim_[X_AXIS] = Interval (0,4 PT);
 
index 0b487a077b78a6d7af26b57fcaf40c453182cf38..6bd6e33e0507530b68c9ffeed23e343ef72bb4ec 100644 (file)
@@ -110,7 +110,6 @@ Paper_score::calc_breaking ()
 void
 Paper_score::process ()
 {
-
   print ();
   progress_indication (_ ("Preprocessing elements...") + " ");
   line_l_->breakable_col_processing ();
@@ -133,7 +132,7 @@ Paper_score::process ()
       Score_element *sc = unsmob_element (gh_car (s));
       sc->handle_broken_dependencies ();
     }
-
+  
   outputter_l_ = new Paper_outputter ;
   outputter_l_->output_header ();
 
index 989861002c8890150dc0f7ebbcaf550245691736..b96a815dfa3b6a4df8b40d7dcc5f3564d0847976 100644 (file)
@@ -241,7 +241,7 @@ Tie::get_curve () const
       Real y0 = c.control_ [0][Y_AXIS];
       c.control_[2][Y_AXIS] = 
       c.control_[1][Y_AXIS] =
-       (c.control_[1][Y_AXIS] - y0)  * (newy / y) + y0; 
+       (c.control_[1][Y_AXIS] - y0)  * ((newy - y0) / (y - y0)) + y0; 
     }
   else
     programming_error ("Tie is nowhere horizontal");
index 2a1098181386c10bccb1fbfa43f86a8255378602..766b636fe0d18317df743708365c44173ff33d53 100644 (file)
@@ -90,16 +90,16 @@ Tuplet_spanner::do_brew_molecule_p () const
        {
          Real gap = paper_l () -> get_var ("tuplet_spanner_gap");
          Real height = staff_space;
-         Atom *at = new Atom (gh_list(ly_symbol2scm ("tuplet"),
+         SCM at =gh_list(ly_symbol2scm ("tuplet"),
                                       gh_double2scm (height),
                                       gh_double2scm (gap),
                                       gh_double2scm (w),
                                       gh_double2scm (dy),
                                       gh_double2scm (thick),
                                       gh_int2scm (dir),
-                                      SCM_UNDEFINED));
+                                      SCM_UNDEFINED);
 
-         mol_p->add_atom (at->self_scm_);
+         mol_p->add_atom (at);
        }
 
       mol_p->translate_axis (dir * staff_space, Y_AXIS);
@@ -120,6 +120,8 @@ Tuplet_spanner::do_add_processing ()
     }
 }
 
+
+
 /*
   use first -> last note for slope, and then correct for disturbing
   notes in between.  */
@@ -131,8 +133,26 @@ Tuplet_spanner::calc_position_and_height (Real *offset, Real * dy) const
 
  
   Direction d = directional_element (this).get ();
-  *dy = column_arr.top ()->extent (Y_AXIS) [d]
-    - column_arr[0]->extent (Y_AXIS) [d];
+
+  /*
+    Use outer non-rest columns to determine slope
+   */
+  int l = 0;
+  while (l <column_arr.size() && column_arr[l]->rest_b())
+    l ++;
+
+  int r = column_arr.size ()- 1;
+  while (r >= l && column_arr[r]->rest_b())
+    r--;
+  
+  if (l < r)
+    {
+      *dy = column_arr[r]->extent (Y_AXIS) [d]
+       - column_arr[l]->extent (Y_AXIS) [d];
+    }
+  else
+    * dy = 0;
+
 
   *offset = - d * infinity_f;
   
@@ -152,6 +172,21 @@ Tuplet_spanner::calc_position_and_height (Real *offset, Real * dy) const
     }
 }
 
+/*
+  use first -> last note for slope,
+*/
+void
+Tuplet_spanner::calc_dy (Real * dy) const
+{
+  Link_array<Note_column> column_arr=
+    Group_interface__extract_elements (this, (Note_column*)0, "columns");
+
+  Direction d = directional_element (this).get ();
+  *dy = column_arr.top ()->extent (Y_AXIS) [d]
+    - column_arr[0]->extent (Y_AXIS) [d];
+}
+
 void
 Tuplet_spanner::do_post_processing ()
 {
@@ -174,7 +209,9 @@ Tuplet_spanner::do_post_processing ()
     }
   Real dy, offset;
 
-  calc_position_and_height (&offset, &dy);
+calc_position_and_height  (&offset,&dy);
+  // calc_position (&offset, dy);
+  
   set_elt_property ("delta-y", gh_double2scm (dy));
 
   translate_axis (offset, Y_AXIS);
index 72ace70c4f1f1c30399b55cd848b790ef5de5be1..fba5da483193ee74d88c127e5311fcd35754373b 100644 (file)
@@ -70,7 +70,7 @@ Volta_spanner::do_brew_molecule_p () const
 
   Molecule volta; 
 
-  Atom *at = new Atom(gh_list (ly_symbol2scm ("volta"),
+  SCM at = (gh_list (ly_symbol2scm ("volta"),
                     gh_double2scm (h),
                     gh_double2scm (w),
                     gh_double2scm (t),
@@ -80,7 +80,7 @@ Volta_spanner::do_brew_molecule_p () const
 
   volta.dim_[Y_AXIS] = Interval (- h/2, h/2);
   volta.dim_[X_AXIS] = Interval (0, w);
-  volta.add_atom (at->self_scm_);
+  volta.add_atom (at);
   
   Molecule num (lookup_l ()->text ("volta",
                                   ly_scm2string (get_elt_property("text")),
index 35b8afd3be33d83ec672ba1ad70543dfd6b741a3..8fd98809577ecb3999512695b462c4abaf01232a 100644 (file)
@@ -3,8 +3,8 @@
 all: $(OUT_FILES)
 
 local-WWW: $(ly_examples) $(fly_examples) $(ps_examples) $(png_examples)
-       (cd $(outdir); $(PYTHON) ../$(buildscripts)/mutopia-index.py --prefix=../ --suffix=/$(outdir) $(html_subdirs) $(all_examples))
-       echo $^ > $(depth)/wwwlist
+#      (cd $(outdir); $(PYTHON) ../$(buildscripts)/mutopia-index.py --prefix=../ --suffix=/$(outdir) $(html_subdirs) $(all_examples))
+#      echo $^ > $(depth)/wwwlist
 #      $(footify) $(outdir)/index.html
 
 local-web:
index f23ac55661de52ff97d0c692fa57a73c6c51d5ac..ed42272d1a0eea64bc30728c5b325975ed30f5ab 100644 (file)
@@ -36,6 +36,10 @@ examples:
        $(MAKE) CONFIGSUFFIX='www' -C input WWW
        $(MAKE) CONFIGSUFFIX='www' -C mutopia WWW
        $(footify-all-command)
+       $(PYTHON) $(buildscripts)/mutopia-index.py -o short-examples.html input/
+       $(PYTHON) $(buildscripts)/mutopia-index.py -o long-examples.html mutopia/
+
+
        tar --exclude='*.dvi' --exclude='*.tex' --exclude='*.ps' --exclude='*.ppm' -czf $(outdir)/examples.tar.gz  `find input mutopia -type d -name 'out-www' -print`
 
 localinstall:
index b6ea62e1df2dc049d3cb04cef482195e7b286f93..582c55e24be4b06338f12212a772ebdde8450925 100644 (file)
         (map (lambda (x)
                (font-load-command (car x) (cdr x))) font-name-alist)
   ))
-  
+
+(define (fontify name exp)
+  (string-append (select-font name)
+                exp)
+  )
+
 ;;;;;;;;;;;;;;;;;;;;
 
 
 
 
 
+;;;;;;;;;;;;;;;;;;; generic output
 
+(define (translate-atom offset exp)
+  exp)
 
 
 ;;;;;;;;;;;;;;;;;;; TeX output
index 6c27cae35ff88abd31817e386450d1ba22bb40f9..a07fef4d7a6a434eea9c69302b1375a8e512b6b3 100644 (file)
@@ -341,7 +341,7 @@ class TeXOutput:
         this.write(r"""
 %% \vfill\hfill{\mudelatagline}
 \makeatletter
-\renewcommand{\@oddfoot}{\mudelatagline}%
+\renewcommand{\@oddfoot}{\hfil\mudelatagline}%
 \makeatother
 \end{document}
 """)