From: fred Date: Wed, 27 Mar 2002 00:34:39 +0000 (+0000) Subject: lilypond-1.3.117 X-Git-Tag: release/1.5.59~1037 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=9a25370e7f7d18b574a9e26be83170fcbabcfac6;p=lilypond.git lilypond-1.3.117 --- diff --git a/Documentation/regression-test.tely b/Documentation/regression-test.tely index 98d6a1b34d..34d110de79 100644 --- a/Documentation/regression-test.tely +++ b/Documentation/regression-test.tely @@ -89,12 +89,20 @@ and documenting bugfixes. @lilypondfile{beam-rest.ly} +@lilypondfile{beam-length.ly} + @lilypondfile{slur-nice.ly} @lilypondfile{slur-symmetry.ly} @lilypondfile{slur-symmetry-1.ly} @lilypondfile{slur-broken-trend.ly} +@lilypondfile{slur-attachment.ly} + +@lilypondfile{slur-attachment-override.ly} + +@lilypondfile{ophee-slurs.ly} + @lilypondfile{tie.ly} @lilypondfile{tie-chord.ly} diff --git a/Documentation/user/GNUmakefile b/Documentation/user/GNUmakefile index e1b1d32f0d..32f8816323 100644 --- a/Documentation/user/GNUmakefile +++ b/Documentation/user/GNUmakefile @@ -29,29 +29,64 @@ dvi: $(DVI_FILES) ps: $(PS_FILES) -# Cancel default info rule + +# Cancel default info generation rule. We want to generate info from +# `.nexi', making sure we don't run LilyPond for inline pictures, when +# generating info. $(outdir)/%.info: $(outdir)/%.texi default: -# info is now built by default via texinfo-rules -# we must build them by default, otherwise they get built during make install +# Info is now built by default via texinfo-rules. +# We must build them by default, otherwise they get built during make install info: $(INFO_FILES) +# The next version of makeinfo should split html files into their own +# directory. For now available only as patches from +# http://appel.lilypond.org/software +SPLITTING_MAKEINFO = $(shell makeinfo --version | grep 4.0.jcn2) + + +# Generic rule using % twice not possible? +# $(outdir)/%/%.html: $(outdir)/%.texi +$(outdir)/lilypond/lilypond.html: $(outdir)/lilypond.texi + -$(MAKEINFO) --force --output=$@ --html $< + -mv -f $(outdir)/*.png $(outdir)/lilypond + $(deep-footify) $(sort $(wildcard $(outdir)/$(*F)/*.html)) + +$(outdir)/lilypond-internals/lilypond-internals.html: $(outdir)/lilypond-internals.texi + -$(MAKEINFO) --force --output=$@ --html $< + -mv -f $(outdir)/*.png $(outdir)/lilypond-internals + $(deep-footify) $(sort $(wildcard $(outdir)/$(*F)/*.html)) + +$(outdir)/features/features.html: $(outdir)/features.texi + -$(MAKEINFO) --force --output=$@ --html $< + -mv -f $(outdir)/*.png $(outdir)/features + $(deep-footify) $(sort $(wildcard $(outdir)/$(*F)/*.html)) + +ifneq ($(SPLITTING_MAKEINFO),) + DEEP_HTML_FILES = $(outdir)/lilypond/lilypond.html $(outdir)/lilypond-internals/lilypond-internals.html +else + +DEEP_HTML_FILES = $(outdir)/lilypond.html $(outdir)/lilypond-internals.html + +endif + + local-WWW: $(HTML_FILES) $(datafiles) $(PS_GZ_FILES) $(DEEP_HTML_FILES) $(SHELL) $(buildscript-dir)/install-info-html.sh --dir=$(outdir) lilypond lilypond-internals $(MAKE) footify - -mkdir $(outdir)/lilypond - cp -f $(outdir)/*.png $(outdir)/lilypond $(MAKE) deep-footify # $(PYTHON) $(step-bindir)/ls-latex.py --title 'User documentation' \ # $(DOC_FILES) $(TEX_FILES) $(TELY_FILES) \ # | sed "s!$(outdir)/!!g" > $(outdir)/index.html + + $(outdir)/%.bib: %.bib ln -f $< $@ # we want footers even if website builds (or is built) partly @@ -71,24 +106,7 @@ $(outdir)/lilypond-internals.nexi $(outdir)/lilypond-internals.texi: -ln $(outdir)/lilypond-internals.texi $(outdir)/lilypond-internals.nexi else $(outdir)/lilypond-internals.nexi $(outdir)/lilypond-internals.texi: -## -cd $(outdir) && lilypond ../$(src-depth)/ly/generate-documentation -##programming error: Improbable offset for translation: setting to zero (Continuing; cross thumbs) -##programming error: Molecule::add_at_edge: adding empty molecule. (Continuing; cross thumbs) touch $@ touch $(outdir)/$(*F).nexi endif -# Generic rule not possible? -# $(outdir)/%/%.html: $(outdir)/%.texi -$(outdir)/lilypond/lilypond.html: $(outdir)/lilypond.texi - -$(MAKEINFO) --force --output=$@ --html $< -# we want footers even if website builds (or is built) partly - $(deep-footify) $(sort $(wildcard $(outdir)/$(*F)/*.html)) - - -$(outdir)/lilypond-internals/lilypond-internals.html: $(outdir)/lilypond-internals.texi - -$(MAKEINFO) --force --output=$@ --html $< -# we want footers even if website builds (or is built) partly - $(deep-footify) $(sort $(wildcard $(outdir)/$(*F)/*.html)) - - diff --git a/input/bugs/no-bars.ly b/input/bugs/no-bars.ly new file mode 100644 index 0000000000..0ab9bf606a --- /dev/null +++ b/input/bugs/no-bars.ly @@ -0,0 +1,20 @@ +\header{ +texidoc=" +defaultBarType is cheched by Timing_translator, but has no effect? +"; +} + +\score { + \notes \relative c'' { + a b c d + d c b a + } + \paper { + \translator { + \StaffContext + defaultBarType = #"" + \remove "Time_signature_engraver"; + linewidth = -1.; + } + } +} diff --git a/input/bugs/slur-attachment.ly b/input/bugs/slur-attachment.ly new file mode 100644 index 0000000000..7a00de8687 --- /dev/null +++ b/input/bugs/slur-attachment.ly @@ -0,0 +1,19 @@ +\header{ +texidoc=" +Slurs should be attached to note heads, except when they would collide +with beams. Also see: ophee-slurs. +"; +} +\score{ + \notes \relative c''{ + \property Voice.Slur \set #'direction = #1 + a8( a )a4 + a4( a8 )a + a8 a()a4 + a4() a8 a + } + \paper{ + indent = 0.0; + linewidth = 100.\mm; + } +} diff --git a/input/test/beam-length.ly b/input/test/beam-length.ly index 0b39c8e46a..3c2a8f16be 100644 --- a/input/test/beam-length.ly +++ b/input/test/beam-length.ly @@ -1,10 +1,14 @@ +\header{ +texidoc=" +beams should look the same +"; +} + \score { \context Voice \notes\relative c { - % beams should look the same + [d''8 d d] [d g d] c c } - \paper { } - \midi { } } diff --git a/input/test/ophee-slurs.ly b/input/test/ophee-slurs.ly index 402aba2322..1e595dca67 100644 --- a/input/test/ophee-slurs.ly +++ b/input/test/ophee-slurs.ly @@ -1,6 +1,13 @@ +\header{ +texidoc=" +Slurs can be forced to always attach to note heads. +"; +} + + \score{ \notes \relative c''{ - \property Voice.slurVerticalDirection = #1 + \property Voice.VerticalDirection = #1 \property Voice.slurBeginAttachment = #'head \property Voice.slurEndAttachment = #'head g16()g()g()g()d'()d()d()d diff --git a/input/test/slur-attachment-override.ly b/input/test/slur-attachment-override.ly new file mode 100644 index 0000000000..caac6ff210 --- /dev/null +++ b/input/test/slur-attachment-override.ly @@ -0,0 +1,19 @@ +\header{ +texidoc=" +In some cases, you may want to set slur attachments by hand. +"; +} + +\score{ + \notes \relative c''{ + \property Voice.Stem \set #'length = #5.5 + \property Voice.Slur \set #'direction = #1 + \property Voice.Slur \set #'attachment = #'(stem . stem) + g8(g)g4 + g4(g8)g + } + \paper{ + indent = 0.0; + linewidth = 60.\mm; + } +} diff --git a/input/test/slur-attachment.ly b/input/test/slur-attachment.ly index 4f7e8d4991..7a00de8687 100644 --- a/input/test/slur-attachment.ly +++ b/input/test/slur-attachment.ly @@ -1,17 +1,19 @@ +\header{ +texidoc=" +Slurs should be attached to note heads, except when they would collide +with beams. Also see: ophee-slurs. +"; +} \score{ \notes \relative c''{ - % URG, make stem length match beam! - \property Voice.stemLength = #5 - - \property Voice.slurVerticalDirection = #1 - \property Voice.slurEndAttachment = #'stem - a8(a)a4 - \property Voice.slurEndAttachment = ##f - \property Voice.slurBeginAttachment = #'stem - a4(a8)a + \property Voice.Slur \set #'direction = #1 + a8( a )a4 + a4( a8 )a + a8 a()a4 + a4() a8 a } - \paper{ + \paper{ indent = 0.0; - linewidth = 60.0\mm; + linewidth = 100.\mm; } } diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index 98e7d17c5f..dcbc09cd40 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -252,10 +252,6 @@ Dynamic_engraver::create_grobs () cresc_p_ = new Spanner (get_property ("TextSpanner")); cresc_p_->set_grob_property ("type", s); - // urg. Can't set this into Text_spanner, because we - // only want this for (de)crescendi spanners. - cresc_p_->set_grob_property ("padding", gh_double2scm (1)); - daddy_trans_l_->set_property (start_type + "Spanner", SCM_UNDEFINED); s = get_property ((start_type + "Text").ch_C()); diff --git a/lily/hairpin.cc b/lily/hairpin.cc index b4b646caaa..c4520adef0 100644 --- a/lily/hairpin.cc +++ b/lily/hairpin.cc @@ -36,7 +36,7 @@ Hairpin::brew_molecule (SCM smob) /* Ugh, must be same as Text_spanner::brew_molecule. */ - Real padding = gh_scm2double (me->get_grob_property ("padding")); + Real padding = gh_scm2double (me->get_grob_property ("if-text-padding")); Real broken_left = spanner->get_broken_left_end_align (); Real width = spanner->spanner_length (); width -= broken_left; diff --git a/lily/slur.cc b/lily/slur.cc index 3a21afe015..901c8fc417 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -37,8 +37,9 @@ void Slur::set_interface (Grob*me) { - me->set_grob_property ("attachment", gh_cons (SCM_BOOL_F, SCM_BOOL_F)); - me->set_interface (ly_symbol2scm ("slur-interface")); + /* Ugh, junked this function, but if we don't do this, we somehow + won't be able to write to it */ + me->set_grob_property ("attachment", me->get_grob_property ("attachment")); } void diff --git a/lily/text-spanner-engraver.cc b/lily/text-spanner-engraver.cc index e004d14ae2..69b6056406 100644 --- a/lily/text-spanner-engraver.cc +++ b/lily/text-spanner-engraver.cc @@ -117,6 +117,12 @@ Text_spanner_engraver::create_grobs () { current_req_ = req_drul_[START]; span_ = new Spanner (get_property ("TextSpanner")); + + /* Ugh. Reset (de)cresc. specific properties */ + span_->set_grob_property ("outer", SCM_BOOL_T); + span_->set_grob_property ("if-text-padding", gh_double2scm (0)); + span_->set_grob_property ("width-correct", gh_double2scm (0)); + Side_position::set_axis (span_, Y_AXIS); Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); span_->set_bound (LEFT, e); diff --git a/lily/text-spanner.cc b/lily/text-spanner.cc index 5280703bad..22d400cc6b 100644 --- a/lily/text-spanner.cc +++ b/lily/text-spanner.cc @@ -37,7 +37,7 @@ Text_spanner::brew_molecule (SCM smob) /* Ugh, must be same as Hairpin::brew_molecule. */ - Real padding = gh_scm2double (me->get_grob_property ("padding")); + Real padding = gh_scm2double (me->get_grob_property ("if-text-padding")); Real broken_left = spanner->get_broken_left_end_align (); Real width = spanner->spanner_length (); width -= broken_left; @@ -57,13 +57,23 @@ Text_spanner::brew_molecule (SCM smob) Real r = 0.0; if (!e.empty_b ()) r = e[-d] + padding; - width += d * r; - extra_off[d] = r; + /* Text spanners such as ottava, should span from outer limits of + noteheads, iso (de)cresc. spanners that span the inner space */ + if (me->get_grob_property ("outer") != SCM_EOL) + // r *= -1; // huh? + { + width -= d * r; + } + else + { + width += d * r; + extra_off[d] = r; + } } } while (flip (&d) != LEFT); - // FIXME: ecs tells us + // FIXME: ecs tells us -- only for (de)cresc. spanners width += gh_scm2double (me->get_grob_property ("width-correct")); /* /Ugh */ diff --git a/scm/backend-property.scm b/scm/backend-property.scm index c098361b9b..e7c7c4e558 100644 --- a/scm/backend-property.scm +++ b/scm/backend-property.scm @@ -161,6 +161,7 @@ is used by @ref{note-collision-interface}") (grob-property-description 'kern number? "amount of extra white space to add before text. This is `relative'(?) to the current alignment.") (grob-property-description 'kern number? "space after a thick line") (grob-property-description 'left-padding number? "space left of accs") +(grob-property-description 'length number? "Stem length for unbeamed stems, only for user override") (grob-property-description 'lengths list? "Stem length given multiplicity of flag") (grob-property-description 'line-count integer? "Number of staff lines") (grob-property-description 'line-thickness number? "the thickness[stafflinethickness] of the line") @@ -189,7 +190,7 @@ length") (grob-property-description 'new-accidentals list? "list of (pitch, accidental) pairs") (grob-property-description 'no-spacing-rods boolean? "read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM)") (grob-property-description 'non-default boolean? "not set because of existence of a bar?") -(grob-property-description 'note-width 'number? "unit for horizontal translation, measured in staff-space.") +(grob-property-description 'note-width number? "unit for horizontal translation, measured in staff-space.") (grob-property-description 'number-gap number? "") (grob-property-description 'old-accidentals list? "list of (pitch, accidental) pairs") (grob-property-description 'origin ly-input-location? "location in input file of the definition") diff --git a/scm/element-descriptions.scm b/scm/element-descriptions.scm index 73e7776671..b5958a2fad 100644 --- a/scm/element-descriptions.scm +++ b/scm/element-descriptions.scm @@ -126,9 +126,11 @@ (Hairpin . ( (molecule-callback . ,Hairpin::brew_molecule) (thickness . 1.0) - (padding . 1.0) (height . 0.6666) + + (if-text-padding . 1.0) (width-correct . -1.0) + (dash-thickness . 1.2) (dash-length . 4.0) (self-alignment-Y . 0) @@ -403,6 +405,7 @@ (bezier-area-steps . 1.0))) (beautiful . 0.5) (y-free . 0.75) + (attachment . (#f . #f)) (attachment-offset . ((0 . 0) . (0 . 0))) (slope-limit . 0.8) (meta . ,(grob-description "Slur" slur-interface)) @@ -553,9 +556,11 @@ (molecule-callback . ,Text_spanner::brew_molecule) (font-shape . italic) (type . "line") - ;;; urg - ;;;(padding . 1.0) - (width-correct . -1) ;ughr + + ;; urg, only for (de)cresc. text spanners + (if-text-padding . 1.0) + (width-correct . -1) + (direction . 1) (meta . ,(grob-description "TextSpanner" text-spanner-interface font-interface)) ))