]> git.donarmstrong.com Git - lilypond.git/commitdiff
* input/regression/tuplet-gap.ly: new file.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 24 Mar 2004 13:08:47 +0000 (13:08 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 24 Mar 2004 13:08:47 +0000 (13:08 +0000)
* lily/tuplet-bracket.cc (make_bracket): take gap interval.
(print): compute gap length from number size, include italic
correction.

* scm/define-grobs.scm (all-grob-descriptions): remove gap from
tuplet-bracket

* scm/paper.scm (set-default-paper-size): new function, to be
called at toplevel.
(set-paper-size): new function, to be called inside \paper {}
(set-default-paper-size): new function, to be called at toplevel.

* lily/paper-def.cc (LY_DEFINE): ly:paper-def?: new function.

14 files changed:
ChangeLog
Documentation/user/changing-defaults.itely
input/regression/tuplet-gap.ly [new file with mode: 0644]
input/test/page-breaks.ly
lily/include/tuplet-bracket.hh
lily/lily-guile.cc
lily/ottava-bracket.cc
lily/paper-def.cc
lily/piano-pedal-bracket.cc
lily/tuplet-bracket.cc
ly/declarations-init.ly
scm/define-grobs.scm
scm/paper.scm
scripts/convert-ly.py

index 5b9ba6c5d923493cfb429d42a4c183e94bdfb8d6..b19f54124f5c0546259b727ce3c6427702ac5eaa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,21 @@
 2004-03-24  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
+       * input/regression/tuplet-gap.ly: new file.
+
+       * lily/tuplet-bracket.cc (make_bracket): take gap interval.
+       (print): compute gap length from number size, include italic
+       correction.
+
+       * scm/define-grobs.scm (all-grob-descriptions): remove gap from
+       tuplet-bracket
+
+       * scm/paper.scm (set-default-paper-size): new function, to be
+       called at toplevel.
+       (set-paper-size): new function, to be called inside \paper {}
+       (set-default-paper-size): new function, to be called at toplevel.
+
+       * lily/paper-def.cc (LY_DEFINE): ly:paper-def?: new function. 
+
        * lily/beam-performer.cc (process_music): idem.
 
        * lily/slur-performer.cc (process_music): stop melisma for stop event.
index 56168b0dee6628d12de4013cfa9fcae7476b757f..0ec0a80c8861d083f462632740925fabec8c20f7 100644 (file)
@@ -1965,13 +1965,14 @@ The predefined command @code{\newpage} also does this.
 @cindex page size
 @cindex @code{papersize}
 
-To change the paper size, use the following Scheme code:
+To change the paper size, there are two commands,
 @example
+        #(set-default-paper-size "a4")
         \paper@{
            #(set-paper-size "a4")
         @}
 @end example
-
+The second one sets the size of the @code{\paper} block that it's in.
 
 @refcommands
 
diff --git a/input/regression/tuplet-gap.ly b/input/regression/tuplet-gap.ly
new file mode 100644 (file)
index 0000000..e23799f
--- /dev/null
@@ -0,0 +1,18 @@
+\header {
+
+    texidoc = "The size of the tuplet bracket gap is adjusted to the
+    width of the text."
+
+      }
+
+\paper {
+   indent = 0.0\mm
+   raggedright = ##t
+}
+
+\score{
+    \notes \relative c'' {
+       \set tupletNumberFormatFunction = #fraction-tuplet-formatter
+       \times  17/12  { c8 c4 c8 c8}
+       }
+}
index ff03bf09e2c2c14aed950eacd4e909797c131678..2a988bf05a68f889075ee56693609aff2ec39d88 100644 (file)
@@ -17,6 +17,7 @@
     piece = "Piece"
 }
 
+
 \score {
     \context Staff \notes \relative c' {
        %% 16: ideally cramped
        \repeat unfold 17 { a b c d \break }
     }
     \paper {
-       %% #(set-paper-size "a6")
-       linewidth = 80\mm
-       vsize = 150 \mm
-       hsize = 105 \mm
+       #(set-paper-size "a6")
        #(define page-breaking ly:optimal-page-breaks)
     }
 }
index b875a2f2cb6ee1976e3c5e282763e8771f84af25..620f6b28cc4b33d6fa91e8704592a6db87ff4430 100644 (file)
@@ -33,7 +33,7 @@ public:
   DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM ));
   static Stencil make_bracket (Grob *me,  Axis protusion_axis,
                                Offset dz,  Drul_array<Real> height,
-                               Real gap, Drul_array<Real> widen,
+                               Interval gap, Drul_array<Real> widen,
                                Drul_array<Real> shorten);
   static Direction get_default_dir (Grob*);
 };
index 3b2b85640218c5aa473d0f9b27a2d89e85563d06..9562ba7bd52f492de0bdda6fc3797ced9e5907bc 100644 (file)
@@ -150,9 +150,10 @@ index_set_cell (SCM s, Direction d, SCM v)
 }
   
 LY_DEFINE (ly_warning,"ly:warn", 1, 0, 0,
-  (SCM str),"Scheme callable function to issue the warning @code{msg}.")
+  (SCM str), "Scheme callable function to issue the warning @code{msg}.")
 {
   SCM_ASSERT_TYPE (gh_string_p (str), str, SCM_ARG1, __FUNCTION__, "string");
+  progress_indication ("\n");
   warning ("lily-guile: " + ly_scm2string (str));
   return SCM_BOOL_T;
 }
index ef0f02404cf9ce1011075ae9b8abafe82701576d..e1e033a9d315b9862ef13a9a8bb5fe7d2ec820b5 100644 (file)
@@ -131,11 +131,12 @@ Ottava_bracket::print (SCM smob)
     edge_height[RIGHT] = 0.0;
   
   Stencil b;
+  Interval empty;
   if (!bracket_span_points.is_empty () && bracket_span_points.length () > 0.001)
     b = Tuplet_bracket::make_bracket (me,
                                      Y_AXIS, Offset (bracket_span_points.length (), 0),
                                       edge_height,
-                                     0.0,
+                                     empty,
                                      flare, shorten);
 
   /*
index 99e371a9999f306c8ef8ffdfbb9e6fca100cd50e..144a944a6121768ca2a02524d10167271e39ccea 100644 (file)
@@ -151,3 +151,13 @@ unsmob_paper (SCM x)
   return dynamic_cast<Paper_def*> (unsmob_music_output_def (x));
 }
   
+
+LY_DEFINE (ly_paper_def_p, "ly:paper-def?",
+          1, 0,0, (SCM def),
+          "Is @var{def} a paper definition?")
+{
+  Paper_def *op = dynamic_cast<Paper_def*> (unsmob_music_output_def (def));
+
+  bool pap = op;
+  return gh_bool2scm (pap);
+}
index 74e09979fd59d510ec951445e1a80256ccf45f4b..b0d87558e9879b225ecfcd6d5063556121fbbce0 100644 (file)
@@ -84,7 +84,7 @@ Piano_pedal_bracket::print (SCM smob)
       m = Tuplet_bracket::make_bracket (me, Y_AXIS,
                                        Offset (span_points.length (), 0),
                                        height,
-                                       0.0,
+                                       Interval (),
                                        flare, shorten);
     }
   m.translate_axis (span_points[LEFT]
index 2ef78c968c35010eeee79ccc30cdca6a2b27e599..b75b602b5434c74dd0ebc64ff08be44572387861 100644 (file)
@@ -169,11 +169,12 @@ Tuplet_bracket::print (SCM smob)
   SCM number = me->get_property ("text");
 
   Paper_def *pap = me->get_paper ();
-  if (gh_string_p (number) && number_visibility)
+  Stencil num;
+ if (gh_string_p (number) && number_visibility)
     {
       SCM properties = Font_interface::text_font_alist_chain (me);
       SCM snum = Text_item::interpret_markup (pap->self_scm (), properties, number);
-      Stencil num = *unsmob_stencil (snum);
+      num = *unsmob_stencil (snum);
       num.align_to (X_AXIS, CENTER);
       num.translate_axis (w/2, X_AXIS);
       num.align_to (Y_AXIS, CENTER);
@@ -198,8 +199,10 @@ Tuplet_bracket::print (SCM smob)
   if (bracket_visibility)      
     {
       Real ss =   Staff_symbol_referencer::staff_space (me);
-      Real gap = robust_scm2double (me->get_property ("gap"), 1.0)
-       * ss;
+      Real gap=0.;
+
+      if (!num.extent (X_AXIS).is_empty ())
+       gap = num.extent (X_AXIS).length () + 1.0;
       
       SCM fl = me->get_property ("bracket-flare");
       SCM eh = me->get_property ("edge-height");
@@ -220,7 +223,12 @@ Tuplet_bracket::print (SCM smob)
       
       Stencil brack = make_bracket (me, Y_AXIS,
                                     Offset (w, ry - ly), 
-                                    height, gap,
+                                    height,
+                                   /*
+                                     0.1 = more space at right due to italics
+                                     TODO: use italic correction of font.
+                                    */
+                                   Interval (-0.5, 0.5) * gap + 0.1,
                                     flare, shorten);
       mol.add_stencil (brack);
     }
@@ -241,7 +249,7 @@ Tuplet_bracket::make_bracket (Grob *me,     // for line properties.
                              Axis protusion_axis,
                              Offset dz,
                              Drul_array<Real> height,
-                             Real gap,
+                             Interval gap,
                              Drul_array<Real> flare,
                              Drul_array<Real> shorten)
 {
@@ -260,14 +268,11 @@ Tuplet_bracket::make_bracket (Grob *me,   // for line properties.
     straight_corners[d] += - d * shorten[d] /length * dz;
   } while (flip (&d) != LEFT);
 
-  /*
-    UGH: the shortening factor is magic.
-   */
-  gap = gap <?
-    (0.66 * (straight_corners[RIGHT] - straight_corners[LEFT]).length ());
-  
+
+  if (gap.is_empty())
+    gap = Interval (0,0);
   do {
-    gap_corners[d] = (dz * 0.5) + d * 0.5 * gap / length * dz;
+    gap_corners[d] = (dz * 0.5) + gap[d] / length * dz;
   } while (flip (&d) != LEFT);
 
   Drul_array<Offset> flare_corners = straight_corners;
@@ -537,5 +542,5 @@ Tuplet_bracket::add_column (Grob*me, Item*n)
 
 ADD_INTERFACE (Tuplet_bracket,"tuplet-bracket-interface",
   "A bracket with a number in the middle, used for tuplets.",
-  "note-columns bracket-flare edge-height shorten-pair padding gap left-position right-position bracket-visibility number-visibility thickness direction");
+  "note-columns bracket-flare edge-height shorten-pair padding left-position right-position bracket-visibility number-visibility thickness direction");
 
index 428c78d248aa0bc5cc3ea8a5e98de9c0e2231474..c2b185f66e44ef87cd1ac3a6d148afc1fe8ff3a6 100644 (file)
@@ -51,6 +51,10 @@ melismaEnd = #(make-span-event 'ManualMelismaEvent STOP)
     pt = #(/  in 72.27)
     cm = #(* 10 mm)
 
+    raggedright = ##f
+    packed = ##f
+    #(define $is-paper #t)
+    
     #(define font-defaults
       '((font-encoding . music))
       )
@@ -67,7 +71,7 @@ melismaEnd = #(make-span-event 'ManualMelismaEvent STOP)
     \include "engraver-init.ly"
 }
 
-#(set-paper-size "a4")
+#(set-default-paper-size "a4")
 
 
 %{
@@ -81,7 +85,6 @@ for the format of myfonts, see font.scm
 
 %}
 
-
 paperEleven = \paper {
     #(paper-set-staff-size (* 11.0 pt))
 }
index e0ff307d61f24ae7ca2ebbfdd3d7e3a6330c8c9d..3f096cb215c72900bf7a5239d6a21af720ca9b6b 100644 (file)
 
     (TupletBracket
      . (
-       (gap . 1.5)
        (padding . 1.1)
        (thickness . 1.6)
        (edge-height . (0.7 . 0.7))
index e97e11bfbbddc2f8b9052ab0279b89bacc2288a2..ae0ca635b5b3c7c7e9df0164e5ea83d475cf4185 100644 (file)
   "Set the default staff size, where SZ is thought to be in PT."
   (let* ((old-mod (current-module))
         (pap (eval '$defaultpaper old-mod))
+
+
+        ;; Huh? Why is it necessary to clone object? 
         (new-paper (ly:output-def-clone pap))
         (new-scope (ly:output-def-scope new-paper)))
+    
     (set-current-module new-scope)
     (paper-set-staff-size (* sz (eval 'pt new-scope)))
     (set-current-module old-mod)
@@ -54,8 +58,6 @@
     (module-define! m 'hsize w)
     (module-define! m 'vsize h)
     (module-define! m 'linewidth (- w (* 20 mm)))
-    (module-define! m 'raggedright #f)
-    (module-define! m 'packed #f)
     (module-define! m 'indent (/ w 14))
 
     ;; page layout - what to do with (printer specific!) margin settings?
     (module-define! m 'head-sep (* 4 mm))
     (module-define! m 'foot-sep (* 4 mm))))
 
-(define-public (set-paper-size name)
+
+
+(define (internal-set-paper-size module name)
   (let* ((entry (assoc name paper-alist))
-        (pap (eval '$defaultpaper (current-module)))
-        (new-paper (ly:output-def-clone pap))
-        (m (ly:output-def-scope new-paper))
-        (mm (eval 'mm m)))
+        (is-paper? (module-defined? module '$is-paper))
+        (mm (eval 'mm module)))
     
-    (if (pair? entry)
-       (begin
-         (set! entry (eval  (cdr entry) m))
-         (set-paper-dimensions m (car entry) (cdr entry))
-         (module-define! m 'papersize name)
-         (module-define! m 'papersizename name)
-         (set-paper-dimensions m (car entry) (cdr entry))
-         (module-define! (current-module) '$defaultpaper new-paper))
-       (ly:warning (string-append "Unknown papersize: " name)))))
+    (cond
+     ((not is-paper?)
+      (ly:warning "This is not a \\paper {} object:")
+      (display module))
+     ((pair? entry)
+      (set! entry (eval  (cdr entry) module))
+         (set-paper-dimensions module (car entry) (cdr entry))
+         (module-define! module 'papersize name)
+         (module-define! module 'papersizename name)
+         (set-paper-dimensions module (car entry) (cdr entry)))
+     (else
+      (ly:warn (string-append "Unknown papersize: " name))))
+
+    ))
+
+(define-public (set-default-paper-size name)
+  (internal-set-paper-size (ly:output-def-scope (eval '$defaultpaper (current-module)))
+                          name))
+
+(define-public (set-paper-size name)
+  (if (module-defined? (current-module) '$is-paper)
+      (internal-set-paper-size (current-module) name)
+
+      ;;; TODO: should raise (generic) exception with throw, and catch
+      ;;; that in parse-scm.cc
+      (ly:warn "Must use #(set-paper-size .. ) within \\paper { ... }")))
index 8a970b4ed2895c3744891b2b4d0eb7df86a37943..2a98feb3676c589678629d0a7e1dce286df443fe 100644 (file)
@@ -2031,6 +2031,14 @@ def conv (str):
 conversions.append (((2,1,33), conv,
                     '''breakAlignOrder -> break-align-orders.'''))
 
+def conv (str):
+       str = re.sub (r"\(set-paper-size",
+                     "(set-default-paper-size",str)
+       return str
+
+conversions.append (((2,1,34), conv,
+                    '''set-paper-size -> set-default-paper-size.'''))
+
 ################################
 #      END OF CONVERSIONS      
 ################################