]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' of ssh+git://hanwen@git.sv.gnu.org/srv/git/lilypond
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 30 Dec 2006 13:52:15 +0000 (14:52 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 30 Dec 2006 13:52:15 +0000 (14:52 +0100)
Documentation/user/lilypond-book.itely
input/test/makam.ly
lily/general-scheme.cc
lily/key-signature-interface.cc
lily/parser.yy
scm/define-grobs.scm
scm/framework-ps.scm
scm/lily.scm
scm/output-lib.scm
scripts/lilypond-book.py

index a493cbf38e627171ee78e90b403c2880fca2e50b..571bdbc199f3c1eeab5607e7d6f2c67b49a35f0a 100644 (file)
@@ -776,6 +776,17 @@ cd out
 ...
 @end example
 
+@itemx --padding=@var{amount}
+Pad EPS boxes by this much. @var{amount} is measured in milimeters,
+and is 3.0 by default.  This option should be used if the lines of
+music stick out of the right margin.
+
+The width of a tightly clipped systems can vary, due to notation
+elements that stick into the left margin, such as bar numbers and
+instrument names. This option will shorten each line and move each 
+line to the right by the same amount.
+
+
 @item -P @var{process}
 @itemx --process=@var{command}
 Process LilyPond snippets using @var{command}.  The default command is
index 7f9a8905fac5c1b421fd3d122f8226986277b66a..53dd69cc1a5b9dfe57f946a852ab49cda8ea57d1 100644 (file)
@@ -8,11 +8,24 @@
 
 \version "2.11.6"
 
+%{
+
+Define 1/9 alterations.
+
+%}
+
+
 #(define-public KOMA 1/9)
 #(define-public BAKIYE 4/9)
 #(define-public KUCUK 5/9)
 #(define-public BUYUKMUCENNEB 8/9)
 
+%{
+
+Define pitch names
+
+%}
+
 makamPitchNames = #`(
   (c . ,(ly:make-pitch -1 0 NATURAL))
   (d . ,(ly:make-pitch -1 1 NATURAL))
@@ -89,6 +102,8 @@ makamPitchNames = #`(
 
 )
 
+
+%% set pitch names.
 pitchnames = \makamPitchNames 
 #(ly:parser-set-note-names parser makamPitchNames)
 
@@ -98,23 +113,9 @@ pitchnames = \makamPitchNames
 }
 
 \relative {
-  \override Accidental #'glyph-name-alist = #'((1 . "accidentals.doublesharp")
-       (8/9 . "accidentals.sharp.slashslashslash.stemstem")
-       (5/9 . "accidentals.sharp.slashslashslash.stem")
-       (4/9 . "accidentals.sharp")
-       (1/9 . "accidentals.sharp.slashslash.stem")
-       (0 . "accidentals.natural")
-       (-1/9 . "accidentals.mirroredflat")
-       (-4/9 . "accidentals.flat.slash")
-       (-5/9 . "accidentals.flat")
-       (-8/9 . "accidentals.flat.slashslash")
-       (-1 . "accidentals.flatflat")
-       )
 
-%{
+  %{ define alteration <-> symbol mapping. The following glyphs are available.
 
-  available glyphs:
-  
   accidentals.sharp 
   accidentals.sharp.slashslash.stem 
   accidentals.sharp.slashslashslash.stemstem 
@@ -130,7 +131,22 @@ pitchnames = \makamPitchNames
   accidentals.flatflat.slash 
   accidentals.doublesharp 
 
-%}
+  %}
+
+  
+  \override Accidental #'glyph-name-alist = #'((1 . "accidentals.doublesharp")
+       (8/9 . "accidentals.sharp.slashslashslash.stemstem")
+       (5/9 . "accidentals.sharp.slashslashslash.stem")
+       (4/9 . "accidentals.sharp")
+       (1/9 . "accidentals.sharp.slashslash.stem")
+       (0 . "accidentals.natural")
+       (-1/9 . "accidentals.mirroredflat")
+       (-4/9 . "accidentals.flat.slash")
+       (-5/9 . "accidentals.flat")
+       (-8/9 . "accidentals.flat.slashslash")
+       (-1 . "accidentals.flatflat")
+       )
+
   
   
   c cc db fk gbm gfc gfb efk dfbm
index 1cb51a10ff27b34cea174434eee275511b1fa529..5e161474dc312fbebb1b8c7a5a1e02cbbc999841 100644 (file)
@@ -135,12 +135,12 @@ LY_DEFINE (ly_assoc_get, "ly:assoc-get",
           "(or #f if not specified).")
 {
   SCM handle = scm_assoc (key, alist);
-
+  if (scm_is_pair (handle))
+    return scm_cdr (handle);
+  
   if (default_value == SCM_UNDEFINED)
     default_value = SCM_BOOL_F;
 
-  if (scm_is_pair (handle))
-    return scm_cdr (handle);
   return default_value;
 }
 
index 8351696f30ab0fe4f19709bc19ace50123f8138e..bea2aafbc7f7c20216e513a47d5c5b0426ca94a3 100644 (file)
 #include "lookup.hh"
 #include "output-def.hh"
 #include "staff-symbol-referencer.hh"
+#include "rational.hh"
 
 struct Key_signature_interface
 {
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-
   DECLARE_GROB_INTERFACE();
 };
 
@@ -62,10 +62,17 @@ Key_signature_interface::print (SCM smob)
   for (SCM s = me->get_property ("alteration-alist"); scm_is_pair (s); s = scm_cdr (s))
     {
       SCM alt = is_cancellation
-       ? scm_from_int (0) 
+       ? scm_from_int (0)
        : scm_cdar (s);
 
       SCM glyph_name = ly_assoc_get (alt, alist, SCM_BOOL_F);
+      if (!scm_is_string (glyph_name))
+       {
+         me->warning (_f ("No glyph found for alteration: %s",
+                          ly_scm2rational (alt).to_string ().c_str ()));
+         continue;
+       }
+      
       Stencil acc (fm->find_by_name (ly_scm2string (glyph_name)));
 
       if (acc.is_empty ())
index ebb322d7731ef9009e247d1df953896b9b71afa5..d895d41d623e663c9c74ebd13da2190edd0a568e 100644 (file)
@@ -975,7 +975,7 @@ prefix_composite_music:
        generic_prefix_music_scm {
                $$ = run_music_function (PARSER, $1);
        }
-       | CONTEXT    simple_string optional_id optional_context_mod music {
+       | CONTEXT simple_string optional_id optional_context_mod music {
                $$ = MAKE_SYNTAX ("context-specification", @$, $2, $3, $5, $4, SCM_BOOL_F);
        }
        | NEWCONTEXT simple_string optional_id optional_context_mod music {
@@ -1609,7 +1609,7 @@ direction_reqd_event:
 octave_check:
        /**/ { $$ = SCM_EOL; }
        | '='  { $$ = scm_from_int (0); }
-       | '=' sub_quotes { $$ = scm_from_int ($2); }
+       | '=' sub_quotes { $$ = scm_from_int (-$2); }
        | '=' sup_quotes { $$ = scm_from_int ($2); }
        ;
 
index da5bdcd1003a5591252d80f0875908b1fad4db6d..c4246b6589e5097c0626314e37b5f0338edc63ef 100644 (file)
     (KeyCancellation
      . (
        (stencil . ,ly:key-signature-interface::print)
+       (glyph-name-alist . ,cancellation-glyph-name-alist)
        (space-alist . (
                        (time-signature . (extra-space . 1.25))
                        (staff-bar . (extra-space . 0.6))
index 23d0f10dfc1ebc00074b507b6df9c0136a609147..e63cb262e8ee4def523bf8fce9207e2098d7c524 100644 (file)
   (let*
       ((xext (ly:stencil-extent dump-me X))
        (yext (ly:stencil-extent dump-me Y))
-       (left-overshoot (ly:get-option 'eps-box-padding))
+       (left-overshoot (*
+                       -1
+                       (ly:get-option 'eps-box-padding)
+                       (ly:output-def-lookup paper 'mm)
+                       ))
        (bbox
        (map
         (lambda (x)
index 7f73a3dfde450fd001649cb109fce4dab437bd92..a403861990399ad17a94141c5b3a73ea910fd7ff 100644 (file)
@@ -31,16 +31,18 @@ ensure that all refs to parsed objects are dead.  This is an internal option, an
                                         "delete unusable PostScript files")
              (dump-signatures #f "dump output signatures of each system")
              (dump-tweaks #f "dump page layout and tweaks for each score having the tweak-key layout property set.")
+             
+             (eps-box-padding #f "Pad EPS bounding box left edge by this much to guarantee alignment between systems")
+
              (gs-load-fonts #f
                            "load fonts via Ghostscript.")
+             (gui #f "running from gui; redirect stderr to log file")
+
              (include-book-title-preview #t "include book-titles in preview images.")
              (include-eps-fonts #t "Include fonts in separate-system EPS files.")
              (job-count #f "Process in parallel") 
-
-             (eps-box-padding #f "Pad EPS bounding box left edge by this much to guarantee alignment between systems")
-
-             (gui #f "running from gui; redirect stderr to log file")
              (log-file #f "redirect output to log FILE.log")
+
              (old-relative #f
                            "relative for simultaneous music works
 similar to chord syntax")
index 3360fbb80851a9590c92514c9df00439e0ecb901..42ec6932e750c1be0870da1911a8eea52b6d27d8 100644 (file)
@@ -354,16 +354,24 @@ centered, X==1 is at the right, X == -1 is at the left."
 (define-public (accidental-interface::calc-alteration grob)
   (ly:pitch-alteration  (ly:event-property (event-cause grob) 'pitch)))
 
+
+(define-public cancellation-glyph-name-alist
+  '((0 . "accidentals.natural")))
+
 (define-public standard-alteration-glyph-name-alist
-     '((1 . "accidentals.doublesharp")
-       (3/4 . "accidentals.sharp.slashslash.stemstemstem")
+     '(
+       ;; ordered for optimal performance.
+       (0 . "accidentals.natural")
+       (-1/2 . "accidentals.flat")
        (1/2 . "accidentals.sharp")
+
+       (1 . "accidentals.doublesharp")
+       (-1 . "accidentals.flatflat")
+       
+       (3/4 . "accidentals.sharp.slashslash.stemstemstem")
        (1/4 . "accidentals.sharp.slashslash.stem")
-       (0 . "accidentals.natural")
        (-1/4 . "accidentals.mirroredflat")
-       (-1/2 . "accidentals.flat")
        (-3/4 . "accidentals.mirroredflat.flat")
-       (-1 . "accidentals.flatflat")
        ))
 
 (define-public makam-alteration-glyph-name-alist
index 472101b8b53338edd2d542bcd60c0feee1ea9e57..340c1f0e442910a7ffbf932c50675c0314da2c7f 100644 (file)
@@ -80,7 +80,6 @@ _ ("Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document
 authors = ('Jan Nieuwenhuizen <janneke@gnu.org>',
       'Han-Wen Nienhuys <hanwen@xs4all.nl>')
 
-    
 ################################################################
 def exit (i):
     if global_options.verbose:
@@ -139,11 +138,19 @@ def get_option_parser ():
                   metavar=_ ("DIR"),
                   action='append', dest='include_path',
                   default=[os.path.abspath (os.getcwd ())])
+
+    p.add_option ('--left-padding', 
+                  metavar=_("PAD"),
+                  dest="padding_mm",
+                  help="Pad left side of music to align music inspite of uneven bar numbers. (in mm)",
+                  type="float",
+                  default=-3.0)
     
     p.add_option ("-o", '--output', help=_ ("write output to DIR"),
                   metavar=_ ("DIR"),
                   action='store', dest='output_name',
                   default='')
+    
     p.add_option ('-P', '--process', metavar=_ ("COMMAND"),
                   help = _ ("process ly_files using COMMAND FILE..."),
                   action='store', 
@@ -698,6 +705,8 @@ PREAMBLE_LY = '''%%%% Generated by %(program_name)s
   #(define dump-extents #t)
   %(font_dump_setting)s
   %(paper_string)s
+  force-assignment = #""
+  line-width = #(- line-width (* mm  %(padding_mm)f))
 }
 
 \layout {
@@ -1052,7 +1061,7 @@ class Lilypond_snippet (Snippet):
                       '\n  ') % vars ()
         preamble_string = string.join (compose_dict[PREAMBLE],
                        '\n  ') % override
-        
+        padding_mm = global_options.padding_mm
         font_dump_setting = ''
         if FONTLOAD in self.option_dict:
             font_dump_setting = '#(define-public force-eps-font-include #t)\n'
@@ -1762,6 +1771,22 @@ def do_options ():
         
     return args
 
+def psfonts_warning (options, basename):
+    if options.format in (TEXINFO, LATEX):
+        psfonts_file = os.path.join (options.output_name, basename + '.psfonts')
+        output = os.path.join (options.output_name, basename +  '.dvi' )
+
+        if not options.create_pdf:
+            if not options.psfonts:
+                warning (_ ("option --psfonts not used"))
+                warning (_ ("processing with dvips will have no fonts"))
+            else:
+                progress ('\n')
+                progress (_ ("DVIPS usage:"))
+                progress ('\n')
+                progress ("    dvips -h %(psfonts_file)s %(output)s" % vars ())
+                progress ('\n')
+
 def main ():
     # FIXME: 85 lines of `main' macramee??
     files = do_options ()
@@ -1790,15 +1815,16 @@ def main ():
     if global_options.format in (TEXINFO, LATEX):
         ## prevent PDF from being switched on by default.
         global_options.process_cmd += ' --formats=eps '
-        
-    if (global_options.format in (TEXINFO, LATEX)
-        and global_options.create_pdf):
-        global_options.process_cmd += "--pdf -dinclude-eps-fonts -dgs-load-fonts "
+        if global_options.create_pdf:
+            global_options.process_cmd += "--pdf -dinclude-eps-fonts -dgs-load-fonts "
     
     if global_options.verbose:
         global_options.process_cmd += " --verbose "
 
-    global_options.process_cmd += " -dread-file-list -deps-box-padding=-3 "
+    if global_options.padding_mm:
+        global_options.process_cmd += " -deps-box-padding=%f " % global_options.padding_mm
+        
+    global_options.process_cmd += " -dread-file-list "
 
     identify ()
 
@@ -1822,19 +1848,7 @@ def main ():
     except Compile_error:
         exit (1)
 
-    if global_options.format in (TEXINFO, LATEX):
-        psfonts_file = os.path.join (global_options.output_name, basename + '.psfonts')
-        output = os.path.join (global_options.output_name, basename +  '.dvi' )
-        
-        if not global_options.psfonts and not global_options.create_pdf:
-            warning (_ ("option --psfonts not used"))
-            warning (_ ("processing with dvips will have no fonts"))
-        else:
-            progress ('\n')
-            progress (_ ("DVIPS usage:"))
-            progress ('\n')
-            progress ("    dvips -h %(psfonts_file)s %(output)s" % vars ())
-            progress ('\n')
+    psfonts_warning (global_options, basename)
 
     inputs = note_input_file ('')
     inputs.pop ()