From 42c6cca28cdfb8f06e65429e28deb198df915e16 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 7 Jun 2000 23:16:59 +0200 Subject: [PATCH] patch::: 1.3.57.jcn2 1.3.57.jcn2 =========== * Cleaned-up scheme list to text conversion for Chord_name and fixed horizontal kerning. * Added examples for american (slashed o) and jazz (black triangle), see input/test/{american-chords.ly,jazz-chords.ly} --- CHANGES | 9 +++ VERSION | 2 +- input/test/american-chords.ly | 1 + input/test/jazz-chords.ly | 44 ++++++++++++++ lily/chord-name.cc | 109 ++++++++++++++++------------------ lily/include/chord-name.hh | 2 +- ly/paper16.ly | 1 + ly/paper20.ly | 1 + scm/chord-names.scm | 8 ++- scm/lily.scm | 1 + 10 files changed, 116 insertions(+), 62 deletions(-) create mode 100644 input/test/jazz-chords.ly diff --git a/CHANGES b/CHANGES index 8de9ee0b5d..5f13a72ea6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,12 @@ +1.3.57.jcn2 +=========== + +* Cleaned-up scheme list to text conversion for Chord_name and +fixed horizontal kerning. + +* Added examples for american (slashed o) and jazz (black triangle), + see input/test/{american-chords.ly,jazz-chords.ly} + 1.3.57.jcn1 =========== diff --git a/VERSION b/VERSION index 3e527182ca..cb018d0592 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 PATCH_LEVEL=57 -MY_PATCH_LEVEL=jcn1 +MY_PATCH_LEVEL=jcn2 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/test/american-chords.ly b/input/test/american-chords.ly index 3c812fce6d..9aa0536f44 100644 --- a/input/test/american-chords.ly +++ b/input/test/american-chords.ly @@ -1,6 +1,7 @@ #(set! chord::names-alist-american (append '( + ;; any changes here, see scm/chord-names.scm ) chord::names-alist-american)) diff --git a/input/test/jazz-chords.ly b/input/test/jazz-chords.ly new file mode 100644 index 0000000000..2e18444a95 --- /dev/null +++ b/input/test/jazz-chords.ly @@ -0,0 +1,44 @@ +% +% Make sure the correct msamxx.tfm is where lily can find it +% (ie cwd or lily's tfm dir). +% +% For normal (20pt) paper, do +% +% cp locate `msam9.tfm` $LILYPONDPREFIX/tfm +% + +#(set! chord::names-alist-american + (append + '( + ;; any changes here, see scm/chord-names.scm + + + ;(((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . (("o7" (type . "super")))) + ;jazz: the delta, see jazz-chords.ly + (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . (("N" (type . "super") (style . "msam") (size . -3)))) + + ;(((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (("x7" (type . "super")))) + ; slashed o + (((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (("o" (type . "super")) ("/" (size . -2) (offset . (-0.58 . 0.5))) ("7" (type . "super")))) + + ) + chord::names-alist-american)) + +chord = \notes\transpose c''\chords{ +\property ChordNames.chordNameStyle = "american" +c:m5-.7- +c:m5-.7 +} + +\score{ +< +\context ChordNames \chord +\context Staff \chord +> + \paper + { + \translator { \ChordNameContext chordNameWordSpace = #1 } + \translator { \LyricsContext textScriptWordSpace = #0.3 } + } +} + diff --git a/lily/chord-name.cc b/lily/chord-name.cc index 90b81c57fd..052a5b99dd 100644 --- a/lily/chord-name.cc +++ b/lily/chord-name.cc @@ -21,86 +21,75 @@ */ /* - word is roman text or styled text: + word is roman text or property-styled text: "text" - ("style" . "text") + ("text" . property-alist) */ -/* - UGH. remove Dictionary< > and use Scheme_hash_table - */ Molecule -Chord_name::ly_word2molecule (SCM word) const +Chord_name::ly_word2molecule (SCM word, Real* x) const { - /* - junkme. - - Using the dict doesn't save code, since you have to compare - dict entries by hand later on anyway. - - */ - Dictionary option_dict; + *x = 0; + + SCM options = SCM_EOL; if (gh_pair_p (word)) { - SCM options = gh_cdr (word); + options = gh_cdr (word); word = gh_car (word); - while (gh_pair_p (options)) - { - SCM option = gh_car (options); - if (gh_pair_p (option)) - { - SCM key = gh_car (option); - SCM val = gh_cdr (option); - String k; - if (gh_symbol_p (key)) - k = ly_symbol2string (key); - else if (gh_string_p (key)) - k = ly_scm2string (key); - else - continue; - option_dict[k] = val; - } - options = gh_cdr (options); - } } - /* - UGH. Should read from font metric structure. - */ - Real ex = lookup_l ()->text ("", "x", paper_l ()).extent(Y_AXIS).length (); if (gh_string_p (word)) { - String w = ly_scm2string (word); - Molecule mol; - Offset offset; + /* + UGH. Should read from font metric structure. + */ + Real ex = lookup_l ()->text ("", "x", + paper_l ()).extent (Y_AXIS).length (); + Real em = lookup_l ()->text ("", "m", + paper_l ()).extent (X_AXIS).length (); - int size = 0; - if (option_dict.elem_b ("size")) - size = gh_scm2int (option_dict["size"]); + String w = ly_scm2string (word); String style; - if (option_dict.elem_b ("style")) - style = ly_scm2string (option_dict["style"]); + SCM s = scm_assoc (ly_symbol2scm ("style"), options); + if (s != SCM_BOOL_F) + { + style = ly_scm2string (gh_cdr (s)); + } - if (option_dict.elem_b ("type") - && ly_scm2string (option_dict["type"]) == "super") + Offset offset; + int size = 0; + /* + urg, `type' + */ + s = scm_assoc (ly_symbol2scm ("type"), options); + if (s != SCM_BOOL_F && ly_scm2string (gh_cdr (s)) == "super") { Real super_y = ex / 2; - //super_y += -acc.extent (Y_AXIS)[MIN]; offset = Offset (0, super_y); if (!size) size = -2; } - if (option_dict.elem_b ("offset")) + + s = scm_assoc (ly_symbol2scm ("size"), options); + if (s != SCM_BOOL_F) + { + size = gh_scm2int (gh_cdr (s)); + } + + s = scm_assoc (ly_symbol2scm ("offset"), options); + if (s != SCM_BOOL_F) { // hmm - SCM s = option_dict["offset"]; - if (gh_pair_p (s)) - offset = Offset (gh_scm2double (gh_car (s)), - gh_scm2double (gh_cdr (s))) * ex; + SCM o = gh_cdr (s); + if (gh_pair_p (o)) + offset = Offset (0, gh_scm2double (gh_cdr (o))) * ex; + *x = gh_scm2double (gh_car (o)) * em; } - if (option_dict.elem_b ("font") - && ly_scm2string (option_dict["font"]) == "feta") + + Molecule mol; + s = scm_assoc (ly_symbol2scm ("font"), options); + if (s != SCM_BOOL_F && ly_scm2string (gh_cdr (s)) == "feta") mol = paper_l ()->lookup_l (size)->afm_find (w); else mol = paper_l ()->lookup_l (size)->text (style, w, paper_l ()); @@ -124,16 +113,18 @@ Chord_name::ly_text2molecule (SCM text) const { while (gh_cdr (text) != SCM_EOL) { - Molecule m = ly_word2molecule (gh_car (text)); + Real x; + Molecule m = ly_word2molecule (gh_car (text), &x); if (!m.empty_b ()) - mol.add_at_edge (X_AXIS, RIGHT, m, 0); + mol.add_at_edge (X_AXIS, RIGHT, m, x); text = gh_cdr (text); } text = gh_car (text); } - Molecule m = ly_word2molecule (text); + Real x; + Molecule m = ly_word2molecule (text, &x); if (!m.empty_b ()) - mol.add_at_edge (X_AXIS, RIGHT, m, 0); + mol.add_at_edge (X_AXIS, RIGHT, m, x); return mol; } diff --git a/lily/include/chord-name.hh b/lily/include/chord-name.hh index f2c930c031..80bc855e43 100644 --- a/lily/include/chord-name.hh +++ b/lily/include/chord-name.hh @@ -25,7 +25,7 @@ public: static SCM scheme_molecule (SCM); VIRTUAL_COPY_CONS (Score_element); - Molecule ly_word2molecule (SCM scm) const; + Molecule ly_word2molecule (SCM scm, Real* x) const; Molecule ly_text2molecule (SCM scm) const; Chord_name(SCM s); protected: diff --git a/ly/paper16.ly b/ly/paper16.ly index 1256998bd2..c098eb0bb4 100644 --- a/ly/paper16.ly +++ b/ly/paper16.ly @@ -23,6 +23,7 @@ paper_sixteen = \paper { font_timesig = 8.; font_dynamic = 10.; font_mark = 10.; + font_msam = 8.; 0 = \font "feta16" -1 = \font "feta13" diff --git a/ly/paper20.ly b/ly/paper20.ly index fc0566e536..c3bade0b38 100644 --- a/ly/paper20.ly +++ b/ly/paper20.ly @@ -16,6 +16,7 @@ paper_twenty = \paper { font_number = 10.; font_timesig = 10.; font_mark = 12.; + font_msam = 9.; % what about: "font_number-1" = 8.; diff --git a/scm/chord-names.scm b/scm/chord-names.scm index a7ef7bf276..5fa71559ac 100644 --- a/scm/chord-names.scm +++ b/scm/chord-names.scm @@ -74,8 +74,14 @@ (((0 . 0) (4 . 0)) . (("5" (type . "super")))) (((0 . 0) (3 . 0) (4 . 0)) . ("sus")) (((0 . 0) (2 . -1) (4 . -1)) . (("o" (type . "super")))) + (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . (("o7" (type . "super")))) - (((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (("x7" (type . "super")))) + ;jazz: the delta, see jazz-chords.ly + ;(((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . (("N" (type . "super") (style . "msam") (size . -3)))) + + ;(((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (("x7" (type . "super")))) + ; slashed o + (((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (("o" (type . "super")) ("/" (size . -2) (offset . (-0.58 . 0.5))) ("7" (type . "super")))) (((0 . 0) (2 . 0) (4 . 1)) . ("aug")) (((0 . 0) (2 . 0) (4 . 1) (6 . -1)) . (("aug" ("7" (type . "super"))))) diff --git a/scm/lily.scm b/scm/lily.scm index 62417660b1..d68cdd9384 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -171,6 +171,7 @@ ("feta-2" . "feta") ("typewriter" . "cmtt") ("italic" . "cmti") + ("msam" . "msam") ("roman" . "cmr") ("script" . "cmr") ("large" . "cmbx") -- 2.39.5