2004-02-14 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * lily/accidental-engraver.cc (acknowledge_grob): don't make
+ accidentals for harmonic notes
+
+ * lily/new-fingering-engraver.cc (acknowledge_grob): kill dots,
+ for harmonic notes.
+
* scm/document-backend.scm (interface-doc): prune Grob
documentation: don't duplicate interface information.
@itemize @bullet
+@item The program reference has been cleaned up and revised.
+
@item The syntax for setting properties has been simplified:
the following table lists the differences:
\header
{
texidoc = " The handling of stems for harmonic notes must be
- completely identical to normal note heads."
+ completely identical to normal note heads.
+
+ Harmonic heads do not get accidentals or dots."
}
\version "2.1.22"
\score {
\notes {
- < c'' f''\harmonic >4
+ < c'' f''\harmonic >4
\stemUp
- < c'' f''\harmonic >
+ < c'' f''\harmonic >4.
+ < cis'' fis''\harmonic >8
}
\paper {
-\version "2.1.22"
+\version "2.1.23"
\header { texidoc = "@cindex Staff Size
}
\new Staff \with {
fontSize = #-1
- StaffSymbol \set #'staff-space = #(magstep -1)
+ \override StaffSymbol #'staff-space = #(magstep -1)
} {
\clef bass
c8 c c c c c c c
Music * note = info.music_cause ();
if (note
- && note->is_mus_type("note-event")
- && Rhythmic_head::has_interface (info.grob_))
+ && note->is_mus_type ("note-event")
+ && Rhythmic_head::has_interface (info.grob_)
+ && !gh_equal_p (info.grob_->get_grob_property ("style"), ly_symbol2scm ("harmonic"))
+ )
{
Accidental_entry entry ;
entry.head_ = info.grob_;
#include <math.h>
#include <libc-extension.hh>
+
#include "item.hh"
#include "skyline.hh"
#include "music.hh"
We copy the reqs into scratch note reqs, to make sure that we get
all durations exactly right.
- */
+*/
class Completion_heads_engraver : public Engraver
{
else if (m->is_mus_type ("harmonic-event"))
{
inf.grob_->set_grob_property ("style", ly_symbol2scm ("harmonic"));
+ Grob * d = unsmob_grob (inf.grob_->get_grob_property ("dot"));
+ if (d)
+ d->suicide ();
}
}
Duration dur = *unsmob_duration (req->get_mus_property ("duration"));
note->set_grob_property ("duration-log", gh_int2scm (dur.duration_log ()));
-
if (dur.dot_count ())
{
Item * d = make_item ("Dots");
$3, $5, SCM_UNDEFINED));
$$= context_spec_music (gh_car ($2), SCM_UNDEFINED, $$, SCM_EOL);
}
- | SET context_prop_spec '=' scalar {
- $$ = property_op_to_music (scm_list_n (
- ly_symbol2scm ("assign"),
- gh_cadr ($2),
- $4, SCM_UNDEFINED));
- $$= context_spec_music (gh_car ($2), SCM_UNDEFINED, $$, SCM_EOL);
- }
| REVERT context_prop_spec embedded_scm {
$$ = property_op_to_music (scm_list_n (
ly_symbol2scm ("pop"),
$$= context_spec_music (gh_car ($2), SCM_UNDEFINED, $$, SCM_EOL);
}
+ | SET context_prop_spec '=' scalar {
+ $$ = property_op_to_music (scm_list_n (
+ ly_symbol2scm ("assign"),
+ gh_cadr ($2),
+ $4, SCM_UNDEFINED));
+ $$= context_spec_music (gh_car ($2), SCM_UNDEFINED, $$, SCM_EOL);
+ }
| UNSET context_prop_spec {
$$ = property_op_to_music (scm_list_n (
ly_symbol2scm ("unset"),
me->set_grob_property ("dot", dot->self_scm ());
}
-
-
int
Rhythmic_head::duration_log (Grob*me)
{
return gh_number_p (s) ? gh_scm2int (s) : 0;
}
-
-
ADD_INTERFACE (Rhythmic_head,"rhythmic-head-interface",
"Note head or rest",
"dot stem duration-log");
ADD_INTERFACE (Separating_group_spanner,"separation-spanner-interface",
- "A spanner that calculates spacing constraints (\"rods\") "
- "using the @code{separation-item-interface} grobs in @code{elements}.",
- "elements padding");
+ "A spanner that calculates spacing constraints (\"rods\") "
+ "using the @code{separation-item-interface} grobs in @code{elements}.",
+ "elements padding");
ADD_INTERFACE (Separation_item,"separation-item-interface",
- "Item that computes widths to generate spacing rods.\n"
-"\n"
-"Calculate dimensions for the Separating_group_spanner; this has to be "
-"an item to get dependencies correct. "
-, "padding X-extent conditional-elements elements");
+ "Item that computes widths to generate spacing rods. "
+ "This is done in concert with @ref{separation-spanner-interface}."
+
+ ,
+
+ "padding X-extent conditional-elements elements");
(dashed ,number? " number representing the length of the dashes.")
(neutral-direction ,ly:dir? "Where to go if we're on the neutral
-position of the staff (see also grob-property neutral-position).")
+position of the staff.")
;; todo: why is this tunable?
(neutral-position ,number? "Position (in half staff spaces) where
whether a melisma is active. This can be used to signal melismas on
top of those automatically detected. ")
(graceSettings ,vector?
- "Overrides for grace notes. This
-property should be manipulated through the @code{add-grace-property}
-function.")
- (currentCommandColumn ,ly:grob? "Grob that is X-parent to all current breakable (clef, key signature, etc.) items.")
- (currentMusicalColumn ,ly:grob? "Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).")
+ "Overrides for grace notes. This property should
+be manipulated through the @code{add-grace-property} function.")
+ (currentCommandColumn ,ly:grob? "Grob that is X-parent to all
+current breakable (clef, key signature, etc.) items.")
+ (currentMusicalColumn ,ly:grob? "Grob that is X-parent to all
+non-breakable items (note heads, lyrics, etc.).")
(breakableSeparationItem ,ly:grob?
- "The breakable items in this time step, for this staff.")
+ "The breakable items in this time step,
+for this staff.")
(localKeySignature ,list? "the key signature at this point in the
-measure. The format is the same as for keySignature, but can also contain
-((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs. It is reset at every
-bar line.
-" )
+measure. The format is the same as for keySignature, but can also
+contain ((@var{octave} . @var{name}) . (@var{alter} . @var{barnumber}))
+pairs. It is reset at every bar line." )
- (localKeySignatureChanges ,list? "Experimental.
- [DOCME]")
+ (localKeySignatureChanges ,list? "Experimental. [DOCME]")
(finalizations ,list? "List of expressions to evaluate before proceeding to next time step. Internal variable.")
- (busyGrobs ,list? "
-a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only.
-This property contains the grobs which are still busy (eg. noteheads, spanners, etc.)
+ (busyGrobs ,list? "a queue of (@var{end-moment} . @var{GROB})
+conses. This is for internal (C++) use only. This property contains
+the grobs which are still busy (eg. noteheads, spanners, etc.)
")
(barCheckLastFail ,ly:moment? "Where in the measurze did the last barcheck fail?")
(associatedVoiceContext ,ly:context? "The context object of the Voice that has the melody for this Lyrics.")
context.")
(beamMelismaBusy ,boolean? "Signal if a beam is present.")
-(dynamicAbsoluteVolumeFunction ,procedure? "[DOCUMENT-ME]
-")
+ (dynamicAbsoluteVolumeFunction ,procedure? "[DOCUMENT-ME]")
-(lastKeySignature ,list? "Last key
-signature before a key signature change.")
+ (lastKeySignature ,list? "Last key signature before a key
+signature change.")
-(scriptDefinitions ,list? "
-Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See @file{scm/script.scm} for more information
+ (scriptDefinitions ,list? "Description of scripts. This is used by
+Script_engraver for typesetting note-super/subscripts. See
+@file{scm/script.scm} for more information
")
-(stavesFound ,grob-list? "list of all staff-symbols found.")
-(tieMelismaBusy ,boolean? "Signal whether a tie is present.")
+ (stavesFound ,grob-list? "list of all staff-symbols found.")
+ (tieMelismaBusy ,boolean? "Signal whether a tie is present.")
)
))
;;; Jan Nieuwenhuizen <janneke@gnu.org>
-;;; This file generates documentation for the backend of lilypond.
-
-;; alist of property descriptions
-
-;;
-"
-TODO:
-
-
-Grob bla
-
-Created by:
-
- * preset properties + explanation
-
-Interfaces:
-
- * properties available.
-
-"
-
-
(define (interface-doc-string interface grob-description)
(let*
((name (car interface))
(make <texi-node>
#:name "User backend properties"
#:desc "All tunable properties in a big list"
- #:text (backend-properties-doc-string all-internal-grob-properties))
+ #:text (backend-properties-doc-string all-user-grob-properties))
(make <texi-node>
#:name "Internal backend properties"
#:desc "All internal layout properties in a big list"
- #:text (backend-properties-doc-string all-user-grob-properties))
+ #:text (backend-properties-doc-string all-internal-grob-properties))
)))
"(" typename ")"
(if handle
(string-append
- ":\n\n @code{"
+ ":\n\n"
(scm->texi (cdr handle))
- "}\n\n")
+ "\n\n")
"")