* Bit of temporary makefile hacking to stay in sync with makeinfo patch.
-1.3.104.jcn2
-============
-
* Separate interface description (test phase).
* Makeinfo --html split fix: http://appel.lilypond.org/fred/software/texinfo-4.0.jcn2.diff
* Use headers for makeinfo html output.
-1.3.104.jcn1
-============
-
* Made some --scrdir build fixes.
-1.3.103.jcn5
-============
+1.3.104.uu1
+===========
+
+* Smobified molecule, and cache molecule (ie. generate each molecule
+only once). Lily should be faster now. (approx. 6 % ?)
+
+* Coded properties-to-font-name in C++. Measured speedup: 14% (wtk1-fugue2)
+
+* Use music properties for Request data.
+
+1.3.104
+=======
* Documentation build fix: don't run LilyPond when generating plain info doc.
* Resurrected info documentation and made cross links between manual
and generated doco, some small fixes.
-* Made small Time signature style fix.
+* Made small time signature style fix.
* Generate texinfo iso html documentation.
- direct #... to scm parser (Thanks to Gary Houston)
-
-# Local variables:
-# mode: change-log
-# left-margin: 0
-# End:
info: $(INFO_FILES)
-default: info
+default:
local-WWW: $(HTML_FILES) $(datafiles) $(PS_GZ_FILES) backdoc-WWW
$(SHELL) $(buildscript-dir)/install-info-html.sh $(outdir) lilypond lilypond-internals
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=3
-PATCH_LEVEL=104
-MY_PATCH_LEVEL=jcn3
+PATCH_LEVEL=105
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
--- /dev/null
+\header {
+ title = "ancient font test";
+ date = "2000";
+}
+
+\version "1.3.59";
+
+\include "paper26.ly"
+
+global = \notes {
+ \property Score.timing = 1
+ \property Staff.TimeSignature \push #'style = #"old"
+ \time 2/2;
+}
+
+upperVoice = \context Staff = upperVoice <
+ \global
+ \property Staff.numberOfStaffLines = 4
+ \notes \transpose c' {
+ \property Staff.Custos \push #'style = #'"vaticana"
+ \clef "vaticana_fa2";
+ c1 d e f g
+ \clef "vaticana_do2";
+ a b c' \bar "|";
+ b a g f
+ \clef "vaticana_fa1";
+ e d c\breve \bar "|";
+
+ \property Staff.Custos \push #'style = #"medicaea"
+ \clef "medicaea_fa2";
+ c1 d e f g
+ \clef "medicaea_do2";
+ a b c' \bar "|";
+ b a g f
+ \clef "medicaea_fa1";
+ e d c\breve \bar "|";
+
+ \property Staff.Custos \push #'style = #'"hufnagel"
+ \clef "hufnagel_fa2";
+ c1 d e f g
+ \clef "hufnagel_do2";
+ a b c' \bar "|";
+ b a g f
+ \clef "hufnagel_fa1";
+ e d c\breve \bar "||";
+ }
+>
+
+lowerVoice = \context Staff = lowerNotes <
+ \global
+ \property Staff.numberOfStaffLines = 5
+ \notes \transpose c'' {
+ \property Staff.Custos \push #'style = #'"mensural"
+ \clef "mensural1_c2";
+ c1 d e f g
+ \clef "mensural1_c2";
+ a b c' \bar "|";
+ b a g f
+ \clef "mensural2_c2";
+ e d c\breve \bar "|";
+
+ \clef "mensural2_c2";
+ c1 d e f g
+ \clef "mensural3_c2";
+ a b c' \bar "|";
+ b a g f
+ \clef "mensural3_c2";
+ e d c\breve \bar "|";
+
+ \clef "mensural_f";
+ c1 d e f g
+ \clef "mensural_f";
+ a b c' \bar "|";
+ b a g f
+ \clef "mensural_f";
+ e d c\breve \bar "|";
+
+ \clef "hufnagel";
+ c,1 d, e, f, g,
+ \clef "hufnagel";
+ a, b, c \bar "||";
+ }
+>
+
+\score {
+ \context ChoirStaff <
+ \upperVoice
+ \lowerVoice
+ >
+ \paper {
+% \paper_twentysix
+ linewidth = 17.25\cm;
+ textheight = 26.0\cm;
+ indent = 0.0;
+ \translator {
+ \StaffContext
+ \consists "Custos_engraver";
+% custosStyle = "mensural";
+ }
+ }
+}
+
}
mol.translate_axis (heads[LEFT], Y_AXIS);
- return mol.create_scheme ();
+ return mol.smobbed_copy () ;
}
/*
if (sz < 0)
return SCM_EOL;
- return compound_barline (me, str, sz).create_scheme ();
+ return compound_barline (me, str, sz).smobbed_copy ();
}
return SCM_EOL;
}
{
if (Span_req * c = dynamic_cast<Span_req*>(m))
{
- if (c->span_type_str_ == "abort")
+ if (scm_equal_p (c->get_mus_property ("span-type"),
+ ly_str02scm ("abort")) == SCM_BOOL_T)
{
reqs_drul_[START] = 0;
reqs_drul_[STOP] = 0;
beam_p_->suicide ();
beam_p_ = 0;
}
- else if (c->span_type_str_ == "beam")
+ else if (scm_equal_p (c->get_mus_property ("span-type"),
+ ly_str02scm ("beam")) == SCM_BOOL_T)
{
Direction d =c->get_span_dir ();
mol.translate_axis (x0
- dynamic_cast<Spanner*> (me)->get_bound (LEFT)->relative_coordinate (0, X_AXIS), X_AXIS);
- return mol.create_scheme ();
+ return mol.smobbed_copy ();
}
int
Interval i1(0, space / 6), i2(-space / 2, space / 2);
Box b(i1, i2);
- return Lookup::filledbox(b).create_scheme ();
+ return Lookup::filledbox(b).smobbed_copy ();
}
MAKE_SCHEME_CALLBACK(Breathing_sign,offset_callback,2);
Staff_symbol_referencer::staff_space (me));
}
- return mol.create_scheme ();
+ return mol.smobbed_copy ();
}
if (Clef_change_req *cl = dynamic_cast <Clef_change_req *> (r_l))
{
clef_req_l_ = cl;
- if (!set_type (cl->clef_str_))
+ String t = ly_scm2string (cl->get_mus_property ("clef-type"));
+ if (!set_type (t))
cl->origin ()->warning (_ ("unknown clef type"));
return true;
SCM glyph = sc->get_elt_property ("glyph");
if (gh_string_p (glyph))
{
- return Font_interface::get_default_font (sc)->find_by_name (String (ly_scm2string (glyph))).create_scheme ();
+ return Font_interface::get_default_font (sc)->find_by_name (String (ly_scm2string (glyph))).smobbed_copy ();
}
else
{
}
-Clef_change_req::Clef_change_req (String s)
+Clef_change_req::Clef_change_req ()
{
- clef_str_ = s;
+
}
Time_signature_change_req const* m
= dynamic_cast <Time_signature_change_req const*> (r);
+#if 0
return m && m->beats_i_ == beats_i_
&& one_beat_i_ == m->one_beat_i_;
+#endif
+ return m;
}
Time_signature_change_req::Time_signature_change_req ()
{
- beats_i_ = 0;
- one_beat_i_ =0;
}
Tempo_req::Tempo_req ()
{
- metronome_i_ = 60;
dur_. durlog_i_ = 2;
}
{
Tempo_req const *t = dynamic_cast <Tempo_req const*> (r);
- return t&& t->dur_.length_mom ()== dur_.length_mom () && metronome_i_ == t->metronome_i_;
+ return t&& t->dur_.length_mom ()== dur_.length_mom ();
+ // && metronome_i_ == t->metronome_i_;
}
Molecule mol (b, hairpin);
mol.translate_axis (broken_left, X_AXIS);
- return mol.create_scheme ();
+ return mol.smobbed_copy ();
}
else
{
add_streepjes(me, (int)pos, interspaces, &molecule);
- SCM result = molecule.create_scheme();
- return result;
+ return molecule.smobbed_copy();
}
}
else
mol.add_at_edge (X_AXIS, RIGHT, d, dw);
}
}
- return mol.create_scheme ();
+ return mol.smobbed_copy ();
}
}
else if (Span_req* s = dynamic_cast <Span_req*> (m))
{
- if (s->span_type_str_ == "abort")
+ String t = ly_scm2string (s->get_mus_property ("span-type"));
+ if (t== "abort")
{
accepted_spanreqs_drul_[LEFT] = 0;
accepted_spanreqs_drul_[RIGHT] = 0;
cresc_p_->suicide ();
cresc_p_ = 0;
}
- else if ((s->span_type_str_ == "crescendo"
- || s->span_type_str_ == "decrescendo"))
+ else if (t == "crescendo"
+ || t == "decrescendo")
{
accepted_spanreqs_drul_[s->get_span_dir()] = s;
return true;
/*
TODO: Use symbols.
*/
- SCM s = get_property ((accepted_spanreqs_drul_[START]->span_type_str_ + "Spanner").ch_C());
+ String start_type = ly_scm2string (accepted_spanreqs_drul_[START]->get_mus_property ("span-type"));
+
+ /*
+ ugh. Use push/pop?
+ */
+ SCM s = get_property ((start_type + "Spanner").ch_C());
if (!gh_string_p (s) || ly_scm2string (s) == "hairpin")
{
cresc_p_ = new Spanner (get_property ("Crescendo"));
cresc_p_->set_elt_property ("grow-direction",
- gh_int2scm ((accepted_spanreqs_drul_[START]->span_type_str_ == "crescendo")
+ gh_int2scm ((start_type == "crescendo")
? BIGGER : SMALLER));
}
{
cresc_p_ = new Spanner (get_property ("TextSpanner"));
cresc_p_->set_elt_property ("type", s);
- daddy_trans_l_->set_property (accepted_spanreqs_drul_[START]->span_type_str_
+ daddy_trans_l_->set_property (start_type
+ "Spanner", SCM_UNDEFINED);
- s = get_property ((accepted_spanreqs_drul_[START]->span_type_str_ + "Text").ch_C());
+ s = get_property ((start_type + "Text").ch_C());
if (gh_string_p (s))
{
cresc_p_->set_elt_property ("edge-text",
gh_cons (s, ly_str02scm ("")));
- daddy_trans_l_->set_property (accepted_spanreqs_drul_[START]->span_type_str_
- + "Text", SCM_UNDEFINED);
+ daddy_trans_l_->set_property (start_type + "Text",
+ SCM_UNDEFINED);
}
}
#include "font-interface.hh"
#include "score-element.hh"
#include "paper-def.hh"
+#include "warn.hh"
SCM
}
return chain;
}
+
+/*
+SCM routines:
+
+Interpreting music...
+MIDI output to wtk1-fugue2.midi...
+Track ...
+
+real 0m31.862s
+user 0m29.110s
+sys 0m0.260s
+
+real 0m26.964s
+user 0m24.850s
+sys 0m0.280s
+
+
+so a 14% speedup.
+
+*/
+
+static SCM name_sym, shape_sym, family_sym, series_sym, rel_sz_sym, pt_sz_sym;
+
+
+static void
+init_syms ()
+{
+ name_sym = scm_permanent_object (ly_symbol2scm ("font-name"));
+ shape_sym = scm_permanent_object (ly_symbol2scm ("font-shape"));
+ family_sym = scm_permanent_object (ly_symbol2scm ("font-family"));
+ series_sym = scm_permanent_object (ly_symbol2scm ("font-series"));
+ rel_sz_sym = scm_permanent_object (ly_symbol2scm ("font-relative-size"));
+ pt_sz_sym = scm_permanent_object (ly_symbol2scm ("font-point-size"));
+}
+
+
+ADD_SCM_INIT_FUNC(Font_interface_syms,init_syms);
+
+
+MAKE_SCHEME_CALLBACK(Font_interface,properties_to_font_name,2);
+SCM
+Font_interface::properties_to_font_name (SCM fonts, SCM alist_chain)
+{
+ SCM name = ly_assoc_chain (name_sym, alist_chain);
+
+ SCM shape = SCM_BOOL_F;
+ SCM family = SCM_BOOL_F;
+ SCM series = SCM_BOOL_F;
+
+
+ SCM point_sz = ly_assoc_chain (pt_sz_sym, alist_chain);
+ SCM rel_sz = SCM_BOOL_F;
+
+ if (!gh_pair_p (name))
+ {
+ shape = ly_assoc_chain (shape_sym, alist_chain);
+ family = ly_assoc_chain (family_sym, alist_chain);
+ series = ly_assoc_chain (series_sym, alist_chain);
+
+ if (gh_pair_p (shape))
+ shape = gh_cdr (shape);
+ if (gh_pair_p (family))
+ family = gh_cdr (family);
+ if (gh_pair_p (series))
+ series = gh_cdr (series);
+ }
+ else
+ name = gh_cdr (name);
+
+
+ if (gh_pair_p (point_sz))
+ point_sz = gh_cdr (point_sz);
+ else
+ {
+ rel_sz = ly_assoc_chain (rel_sz_sym, alist_chain);
+ if (gh_pair_p (rel_sz))
+ rel_sz = gh_cdr (rel_sz);
+ }
+
+ for (SCM s = fonts ; gh_pair_p (s); s = gh_cdr (s))
+ {
+ SCM qlist = gh_caar (s);
+
+ if (name != SCM_BOOL_F)
+ {
+ if (scm_list_ref (qlist, gh_int2scm (4)) != name)
+ continue;
+ }
+ else
+ {
+ if (series != SCM_BOOL_F
+ && scm_list_ref (qlist, gh_int2scm (1)) != series)
+ continue;
+ if (shape != SCM_BOOL_F
+ && scm_list_ref (qlist, gh_int2scm (2)) != shape)
+ continue;
+ if (family != SCM_BOOL_F
+ && scm_list_ref (qlist, gh_int2scm (3)) != family)
+ continue;
+ }
+
+ if (point_sz != SCM_BOOL_F)
+ {
+ if (scm_list_ref (qlist, gh_int2scm (4)) != name)
+ continue;
+ }
+ else
+ {
+ if (rel_sz != SCM_BOOL_F
+ && gh_car (qlist) != rel_sz)
+ continue;
+ }
+
+
+ SCM qname = gh_cdar (s);
+ return qname;
+ }
+
+ warning (_("couldn't find any font satisfying ") );
+ scm_write (gh_list (name, point_sz, shape, series , family, rel_sz, SCM_UNDEFINED), scm_current_error_port ());
+
+ return gh_str02scm ("cmr10");
+
+}
{
if (Span_req * sp = dynamic_cast<Span_req*> (m))
{
- if (sp->span_type_str_ == "slur")
+ if (scm_equal_p (sp->get_mus_property ("span-type"), ly_str02scm ("slur"))
+ == SCM_BOOL_T)
// return true;
return false;
}
mol.translate_axis (bounds.center ()
-sp->relative_coordinate (common, X_AXIS),
X_AXIS);
- return mol.create_scheme ();
+ return mol.smobbed_copy ();
}
void
#include "musical-pitch.hh"
#include "protected-scm.hh"
+/*
+ Real penalty_f_;
+ */
class Break_req : public Request {
public:
- Real penalty_f_;
+
Break_req ();
protected:
VIRTUAL_COPY_CONS(Music);
VIRTUAL_COPY_CONS(Music);
};
-
+/*
+ int metronome_i_;
+ */
class Tempo_req : public Timing_req
{
public:
Duration dur_;
- int metronome_i_;
+
Tempo_req();
protected:
/**
todo: allow C time_signature
+
+ int beats_i_;
+ int one_beat_i_;
+
*/
class Time_signature_change_req : public Timing_req {
public:
- int beats_i_;
- int one_beat_i_;
-
Time_signature_change_req();
-protected:
+protected:
bool do_equal_b (Request const *) const;
VIRTUAL_COPY_CONS(Music);
};
bool do_equal_b (Request const * )const;
};
+/*
+ String clef_str_;
+ */
+
class Clef_change_req : public Request {
public:
- String clef_str_;
- Clef_change_req (String);
+
+ Clef_change_req ();
protected:
VIRTUAL_COPY_CONS(Music);
static Font_metric * get_font (Score_element*, SCM alist_chain);
static Font_metric * get_default_font (Score_element*);
static SCM add_style (Score_element*, SCM style, SCM alist_chain);
+ DECLARE_SCHEME_CALLBACK(properties_to_font_name, (SCM,SCM));
};
#endif /* FONT_INTERFACE_HH */
String ly_symbol2string (SCM);
SCM ly_offset2scm (Offset);
Offset ly_scm2offset (SCM);
-
+SCM ly_assoc_chain (SCM key, SCM achain);
Interval ly_scm2interval (SCM);
SCM ly_interval2scm (Interval);
#include "axes.hh"
#include "direction.hh"
#include "lily-guile.hh"
+#include "smobs.hh"
/** a group of individually translated symbols. You can add molecules
to the top, to the right, etc.
Empty molecules have empty dimensions. If add_at_edge is used to
init the molecule, we assume that
DIMENSIONS = (Interval(0,0),Interval(0,0)
-
- TODO: go full smob with Molecule.
-
*/
class Molecule {
- /// can't alloc on heap.
- void * operator new (size_t s);
Box dim_;
SCM expr_;
-public:
-
- SCM get_expr () const;
+ DECLARE_SIMPLE_SMOBS(Molecule,);
+public:
Molecule (Box, SCM s);
Molecule();
+
+ SCM smobbed_copy () const;
+ SCM get_expr () const;
+
/**
Set dimensions to empty, or to (Interval(0,0),Interval(0,0) */
void set_empty (bool);
bool empty_b() const;
};
+
+Molecule *unsmob_molecule (SCM);
SCM fontify_atom (Font_metric*, SCM atom);
Molecule create_molecule (SCM brew_molecule);
--- /dev/null
+/*
+ score-element-callback.hh -- declare Score_element callbacks
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef SCORE_ELEMENT_CALLBACK_HH
+#define SCORE_ELEMENT_CALLBACK_HH
+
+#include "lily-proto.hh"
+#include "lily-guile.hh"
+
+typedef void * (*Cpp_function) (SCM param);
+SCM smobify_cpp_function (Cpp_function cb);
+
+
+#endif /* SCORE_ELEMENT_CALLBACK_HH */
+
Interpretation_context_handle handle_;
};
+
+
+
+
+
+
#endif // MUSIC_ITERATOR_HH
public:
Duration duration_;
-
bool do_equal_b (Request const*) const;
void compress (Moment);
virtual Moment length_mom () const;
struct Tremolo_req : public Request {
VIRTUAL_COPY_CONS (Music);
Tremolo_req ();
- int type_i_;
+ void set_type (int);
+ int get_type () const;
};
class Articulation_req : public Script_req
{
public:
- String articulation_str_;
+ String get_articulation_str();
protected:
virtual bool do_equal_b (Request const*) const;
VIRTUAL_COPY_CONS (Music);
};
-/// Put a note of specified type, height, and with accidental on the staff.
-class Note_req : public Rhythmic_req, virtual public Melodic_req {
-public:
-
- /// force/supress printing of accidental.
+/*
+ Put a note of specified type, height, and with accidental on the staff.
+ /// force/supress printing of accidental.
bool forceacc_b_;
/// Cautionary, i.e. parenthesized accidental.
bool cautionary_b_;
+
+ */
+class Note_req : public Rhythmic_req, virtual public Melodic_req {
+public:
+
Note_req();
protected:
{
public:
VIRTUAL_COPY_CONS (Music);
- Part_combine_music (String, Music*, Music*);
+ Part_combine_music (SCM what_str, Music*, Music*);
Music * first_l () const;
Music * second_l () const;
virtual Moment length_mom () const;
virtual Musical_pitch to_relative_octave (Musical_pitch);
virtual void compress (Moment);
-
- String what_str_;
};
#endif /* PART_COMBINE_MUSIC_HH */
*/
class Span_req : public virtual Request {
public:
- String span_type_str_;
+ String get_span_type_str () const;
+ void set_span_type_str (String);
void set_span_dir (Direction d);
Direction get_span_dir () const;
+++ /dev/null
-/*
- score-element-callback.hh -- declare Score_element callbacks
-
- source file of the GNU LilyPond music typesetter
-
- (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef SCORE_ELEMENT_CALLBACK_HH
-#define SCORE_ELEMENT_CALLBACK_HH
-
-#include "lily-proto.hh"
-#include "lily-guile.hh"
-
-typedef SCM (* Score_element_callback) (Score_element * , SCM extra_params);
-SCM smobify_callback (Score_element_callback cb);
-
-
-#endif /* SCORE_ELEMENT_CALLBACK_HH */
-
virtual void discretionary_processing ();
virtual SCM do_derived_mark ();
- Molecule get_molecule () const;
+ Molecule * get_molecule () const;
void suicide ();
DECLARE_SCHEME_CALLBACK(preset_extent, (SCM smob, SCM axis));
}
}
- return mol.create_scheme();
+ return mol.smobbed_copy();
}
}
+
+
+SCM
+ly_assoc_chain (SCM key, SCM achain)
+{
+ if (gh_pair_p (achain))
+ {
+ SCM handle = scm_assoc (key, gh_car (achain));
+ if (gh_pair_p (handle))
+ return handle;
+ else
+ return ly_assoc_chain (key, gh_cdr (achain));
+ }
+ else
+ return SCM_BOOL_F;
+}
(ugh. This is not very memory efficient.) */
for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
- unsmob_element (gh_car (s))->get_molecule ();
-
+ {
+ unsmob_element (gh_car (s))->get_molecule ();
+ }
/*
font defs;
*/
*/
for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
{
- Score_element * sc = unsmob_element (gh_car (s));
- Molecule m = sc->get_molecule ();
+ Score_element *sc = unsmob_element (gh_car (s));
+ Molecule *m = sc->get_molecule ();
+ if (!m)
+ continue;
Offset o (sc->relative_coordinate (this, X_AXIS),
sc->relative_coordinate (this, Y_AXIS));
if (gh_pair_p (e))
{
o[X_AXIS] += gh_scm2double (gh_car (e));
- o[Y_AXIS] += gh_scm2double (gh_cdr (e));
+ o[Y_AXIS] += gh_scm2double (gh_cdr (e));
}
- output_molecule (m.get_expr (), o);
+ output_molecule (m->get_expr (), o);
}
if (last_line)
{
bool different = prev_acc != a;
bool tie_changes = tied_l_arr_.find_l (support_l) && different;
- if ((note_l->forceacc_b_ || different) && !tie_changes)
+ if ((to_boolean (note_l->get_mus_property ("force-accidental"))
+ || different) && !tie_changes)
{
if (!key_item_p_)
{
&& abs(prev_acc) == 2;
Local_key_item::add_pitch (key_item_p_, note_l->pitch_,
- note_l->cautionary_b_,
+ to_boolean (note_l->get_mus_property ("cautionary")),
extra_natural);
Side_position::add_support (key_item_p_,support_l);
}
} while ( flip (&d)!= LEFT);
}
- return mol.create_scheme();
+ return mol.smobbed_copy();
}
bool
Real h = sl * gh_scm2double (sp->get_elt_property ("height"));
Molecule mol (Lookup::filledbox ( Box (Interval (0,w), Interval (0,h))));
mol.translate (Offset (leftext, 0));
- return mol.create_scheme();
+ return mol.smobbed_copy();
}
void
#include "debug.hh"
#include "killing-cons.tcc"
+#include "ly-smobs.icc"
+
+
+SCM
+Molecule::smobbed_copy () const
+{
+ Molecule * m = new Molecule(*this);
+
+ return m->smobbed_self ();
+}
+
Interval
Molecule::extent(Axis a) const
{
return expr_;
}
-Molecule
-create_molecule (SCM scm_mol)
-{
- if (!gh_pair_p (scm_mol))
- return Molecule ();
- SCM exp = gh_car (scm_mol);
- scm_mol = gh_cdr (scm_mol);
- Box b ;
- if (gh_pair_p (scm_mol))
- {
- Interval i1 = ly_scm2interval (gh_car (scm_mol));
- Interval i2 = ly_scm2interval (gh_cdr (scm_mol));
- b = Box (i1,i2);
- }
- return Molecule (b, exp);
+
+Box
+Molecule::extent_box () const
+{
+ return dim_;
}
+IMPLEMENT_SIMPLE_SMOBS(Molecule);
-SCM
-Molecule::create_scheme () const
+
+int
+Molecule::print_smob (SCM s, SCM port, scm_print_state *)
{
- return gh_cons (expr_,
- gh_cons (ly_interval2scm (dim_[X_AXIS]),
- ly_interval2scm (dim_[Y_AXIS])));
+ Molecule *r = (Molecule *) gh_cdr (s);
+
+ scm_puts ("#<Molecule ", port);
+ /* String str(r->str());
+ scm_puts ((char *)str.ch_C(), port);*/
+ scm_puts (" >", port);
+
+ return 1;
}
-Box
-Molecule::extent_box () const
+
+SCM
+Molecule::mark_smob (SCM s)
{
- return dim_;
+ Molecule *r = (Molecule *) gh_cdr (s);
+
+ return r->expr_;
}
+
+IMPLEMENT_TYPE_P(Molecule, "molecule?");
+IMPLEMENT_DEFAULT_EQUAL_P(Molecule);
+IMPLEMENT_UNSMOB(Molecule, molecule);
{
if (Span_req * sp = dynamic_cast<Span_req*> (req_l))
{
- if (sp->span_type_str_ == "rest")
+
+ if (scm_equal_p (sp->get_mus_property ("span-type"),
+ ly_str02scm ("rest")))
{
if (sp->get_span_dir() == STOP)
{
mol.add_molecule (s);
}
mol.translate_axis (x_off, X_AXIS);
- return mol.create_scheme();
+ return mol.smobbed_copy();
}
/*
--- /dev/null
+/*
+ score-element-callback.cc -- implement Callback smob.
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "music-iterator-ctor.hh"
+
+static long callback_tag;
+
+static
+SCM mark_smob (SCM)
+{
+ return SCM_EOL;
+}
+
+static int
+print_smob (SCM, SCM port, scm_print_state *)
+{
+ scm_puts ("#<encapsulated C++ function>", port);
+ return 1;
+}
+
+static
+scm_sizet free_smob (SCM)
+{
+ return 0;
+}
+
+static
+void start_callback_smobs()
+{
+ callback_tag = scm_make_smob_type_mfpe ("callback", 0,
+ mark_smob, free_smob,
+ print_smob, 0);
+}
+
+SCM
+smobify_callback (Cpp_function cb )
+{
+ SCM z;
+
+ SCM_NEWCELL(z);
+ SCM_SETCDR (z, (SCM)cb);
+ SCM_SETCAR (z, (SCM)callback_tag);
+
+ return z;
+}
+
+ADD_SCM_INIT_FUNC(callback, start_callback_smobs);
+
Tremolo_req::Tremolo_req ()
{
- type_i_ = 0;
}
Note_req::Note_req ()
{
- cautionary_b_ = false;
- forceacc_b_ = false;
}
{
Articulation_req const* a = dynamic_cast<Articulation_req const*> (r);
- return a && articulation_str_ == a->articulation_str_;
+ return a; // && articulation_str_ == a->articulation_str_;
}
out.add_molecule (s);
}
}
- return out.create_scheme();
+ return out.smobbed_copy();
}
bool
junk this ? there already is tempo stuff in
music.
*/
- dynamic_cast<Midi_def*> ($$)->set_tempo ($2->dur_.length_mom (), $2->metronome_i_);
+ int m = gh_scm2int ( $2->get_mus_property ("metronome-count"));
+ dynamic_cast<Midi_def*> ($$)->set_tempo ($2->dur_.length_mom (), m);
}
| music_output_def_body error {
$$ = new Tempo_req;
$$->dur_ = *$2;
delete $2;
- $$-> metronome_i_ = $4;
+ $$-> set_mus_property ("metronome-count", gh_int2scm ( $4));
}
;
part_combined_music:
PARTCOMBINE STRING Music Music {
- Part_combine_music * p = new Part_combine_music (ly_scm2string ($2), $3, $4);
+ Part_combine_music * p = new Part_combine_music ($2, $3, $4);
$$ = p;
}
;
| '[' {
Span_req*b= new Span_req;
b->set_span_dir(START);
- b->span_type_str_ = "beam";
+ b->set_mus_property ("span-type", ly_str02scm ("beam"));
$$ =b;
}
| ']' {
- Span_req*b= new Span_req;
- b->set_span_dir( STOP);
- b->span_type_str_ = "beam";
- $$ = b;
+ Span_req*b= new Span_req;
+ b->set_span_dir( STOP);
+ b->set_mus_property ("span-type", ly_str02scm ("beam"));
+ $$ = b;
}
| BREATHE {
$$ = new Breathing_sign_req;
| COMMANDSPANREQUEST bare_int STRING {
Span_req * sp_p = new Span_req;
sp_p-> set_span_dir ( Direction($2));
- sp_p->span_type_str_ = ly_scm2string ($3);
+ sp_p->set_mus_property ("span-type",$3);
sp_p->set_spot (THIS->here_input ());
$$ = sp_p;
}
| TIME_T bare_unsigned '/' bare_unsigned {
Time_signature_change_req *m = new Time_signature_change_req;
- m->beats_i_ = $2;
- m->one_beat_i_=$4;
+ m->set_mus_property ("beats", gh_int2scm ( $2));
+ m->set_mus_property ("one-beat", gh_int2scm ($4));
$$ = m;
}
| PENALTY bare_int {
Break_req * b = new Break_req;
- b->penalty_f_ = $2 / 100.0;
+ b->set_mus_property ("penalty", gh_double2scm ( $2 / 100.0));
b->set_spot (THIS->here_input ());
$$ = b;
}
$$ = $1;
}
| CLEF STRING {
- $$ = new Clef_change_req (ly_scm2string ($2));
+ $$ = new Clef_change_req;
+ $$->set_mus_property ("clef-type", $2);
}
| KEY {
SCM s = THIS->lexer_p_->lookup_identifier ("dash-" + ly_scm2string ($1));
Articulation_req *a = new Articulation_req;
if (gh_string_p (s))
- a->articulation_str_ = ly_scm2string (s);
+ a->set_mus_property ("articulation-type", s);
else THIS->parser_error (_ ("Expecting string as script definition"));
$$ = a;
}
| SPANREQUEST bare_int STRING {
Span_req * sp_p = new Span_req;
sp_p->set_span_dir( Direction($2));
- sp_p->span_type_str_ = ly_scm2string ($3);
+ sp_p->set_mus_property ("span-type", $3);
sp_p->set_spot (THIS->here_input ());
$$ = sp_p;
}
| tremolo_type {
Tremolo_req* a = new Tremolo_req;
a->set_spot (THIS->here_input ());
- a->type_i_ = $1;
+ a->set_mus_property ("tremolo-type", gh_int2scm ($1));
$$ = a;
}
| SCRIPT STRING {
Articulation_req * a = new Articulation_req;
- a->articulation_str_ = ly_scm2string ($2);
+ a->set_mus_property ("articulation-type", $2);
a->set_spot (THIS->here_input ());
$$ = a;
}
'(' {
Span_req* s= new Span_req;
$$ = s;
- s->span_type_str_ = "slur";
+ s->set_mus_property ("span-type", ly_str02scm( "slur"));
}
| E_SMALLER {
Span_req*s =new Span_req;
$$ = s;
- s->span_type_str_ = "crescendo";
+ s->set_mus_property ("span-type", ly_str02scm ( "crescendo"));
}
| E_BIGGER {
Span_req*s =new Span_req;
$$ = s;
- s->span_type_str_ = "decrescendo";
+ s->set_mus_property ("span-type", ly_str02scm ("decrescendo"));
}
;
open_request:
open_request_parens {
$$ = $1;
- dynamic_cast<Span_req*> ($$)->set_span_dir ( STOP);
+ dynamic_cast<Span_req*> ($$)->set_span_dir (STOP);
}
;
open_request_parens:
E_EXCLAMATION {
Span_req *s = new Span_req;
- s->span_type_str_ = "crescendo";
+ s->set_mus_property ("span-type", ly_str02scm ( "crescendo"));
+
$$ = s;
}
| ')' {
Span_req* s= new Span_req;
$$ = s;
- s->span_type_str_ = "slur";
+ s->set_mus_property ("span-type", ly_str02scm( "slur"));
}
;
n->pitch_ = *$1;
n->duration_ = *$4;
- n->cautionary_b_ = $3 % 2;
- n->forceacc_b_ = $2 % 2 || n->cautionary_b_;
+ if ($3 % 2)
+ n->set_mus_property ("cautionary", SCM_BOOL_T);
+ if ( $2 % 2 || $3 % 2)
+ n->set_mus_property ("force-accidental", SCM_BOOL_T);
Simultaneous_music*v = new Request_chord (gh_list (n->self_scm (), SCM_UNDEFINED));
Span_req *sp2 = new Span_req;
sp1-> set_span_dir ( START);
sp2-> set_span_dir ( STOP);
- sp1->span_type_str_ = sp2->span_type_str_ = "rest";
+ SCM r = ly_str02scm ("rest");
+ sp1->set_mus_property ("span-type", r);
+ sp2->set_mus_property ("span-type", r);
Request_chord * rqc1 = new Request_chord (gh_list (sp1->self_scm (), SCM_UNDEFINED));
Request_chord * rqc2 = new Request_chord (gh_list (sk->self_scm (), SCM_UNDEFINED));;
{
int state = UNKNOWN;
Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l_);
- Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "one" + suffix_);
+
+ String w = ly_scm2string (p->get_mus_property ("what"));
+
+
+ Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (w, "one" + suffix_);
SCM s = first_translator->get_property (ly_symbol2scm ("changeMoment"));
if (!gh_pair_p (s))
return state;
}
+static Span_req* abort_req = NULL;
+
void
Part_combine_music_iterator::process (Moment m)
{
/*
When combining, abort all running spanners
*/
+
+ if (!abort_req)
+ {
+ abort_req = new Span_req;
+ abort_req->set_mus_property ("span-type", ly_str02scm ("abort"));
+ }
+
if (combine_b && combine_b != previously_combined_b)
{
-#if 0
- // Urg: Error in unknown function during GC: rogue pointer in heap
- // Who deletes this 'pointer'?
- Span_req abort;
- abort.span_type_str_ = "abort";
if (second_iter_p_ && second_iter_p_->ok ())
- second_translator->try_music (&abort);
-#else
- Span_req* abort = new Span_req;
- abort->span_type_str_ = "abort";
- if (second_iter_p_ && second_iter_p_->ok ())
- second_iter_p_->try_music (abort);
-#endif
+ second_iter_p_->try_music (abort_req);
}
-
+ String w = ly_scm2string (p->get_mus_property ("what"));
if (combine_b != previously_combined_b)
- change_to (second_iter_p_, p->what_str_, (combine_b ? "one" : "two")
+ change_to (second_iter_p_, w, (combine_b ? "one" : "two")
+ suffix_);
- Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "one" + suffix_);
- Translator_group *second_translator = second_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "two" + suffix_);
+ Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (w, "one" + suffix_);
+ Translator_group *second_translator = second_iter_p_->report_to_l ()->find_create_translator_l (w, "two" + suffix_);
/*
hmm
#include "part-combine-music.hh"
#include "musical-pitch.hh"
-Part_combine_music::Part_combine_music (String what, Music * f, Music * s)
+Part_combine_music::Part_combine_music (SCM what, Music * f, Music * s)
{
- what_str_ = what;
+ assert (gh_string_p (what));
+ set_mus_property ("what", what);
set_mus_property ("one", f->self_scm ());
set_mus_property ("two", s->self_scm ());
{
for (Pedal_info*p = info_list_; p->name_; p ++)
{
- if (s->span_type_str_ == p->name_)
+ if (scm_equal_p (s->get_mus_property ("span-type"),
+ ly_str02scm (p->name_))==SCM_BOOL_T)
{
p->req_l_drul_[s->get_span_dir()] = s;
return true;
{
for (Pedal_info*p = info_alist_; p->name_; p ++)
{
- if (s->span_type_str_ == String (p->name_))
+ if (scm_equal_p (s->get_mus_property ("span-type"),
+ ly_str02scm (p->name_)) == SCM_BOOL_T)
{
p->req_l_drul_[s->get_span_dir()] = s;
return true;
String idx = ("rests-") + to_str (gh_scm2int (balltype))
+ (ledger_b ? "o" : "") + style;
- return Font_interface::get_default_font (me)->find_by_name (idx).create_scheme();
+ return Font_interface::get_default_font (me)->find_by_name (idx).smobbed_copy();
}
Score_element *s = unsmob_element (element_smob);
Axis a = (Axis) gh_scm2int (scm_axis);
- Molecule m = s->get_molecule ();
- return ly_interval2scm ( m.extent(a));
+ Molecule *m = s->get_molecule ();
+ Interval e ;
+ if (m)
+ e = m->extent(a);
+ return ly_interval2scm ( e);
}
MAKE_SCHEME_CALLBACK(Score_element,preset_extent,2);
}
-Molecule
+Molecule *
Score_element::get_molecule () const
{
+ SCM mol = get_elt_property ("molecule");
+ if (unsmob_molecule (mol))
+ return unsmob_molecule (mol);
+
SCM proc = get_elt_property ("molecule-callback");
- SCM mol = SCM_EOL;
+ mol = SCM_EOL;
if (gh_procedure_p (proc))
mol = gh_apply (proc, gh_list (this->self_scm (), SCM_UNDEFINED));
-
+
+ /*
+ TODO: add option for not copying origin info.
+ */
SCM origin =get_elt_property ("origin");
if (!unsmob_input (origin))
origin =ly_symbol2scm ("no-origin");
mol = gh_cons (gh_list (origin, gh_car (mol), SCM_UNDEFINED), gh_cdr (mol));
}
+ Molecule *m = unsmob_molecule (mol);
- Molecule m (create_molecule (mol));
-
+
/*
transparent retains dimensions of element.
*/
- if (to_boolean (get_elt_property ("transparent")))
- m = Molecule (m.extent_box (), SCM_EOL);
+ if (m && to_boolean (get_elt_property ("transparent")))
+ mol = Molecule (m->extent_box (), SCM_EOL).smobbed_copy ();
+ Score_element *me = (Score_element*)this;
+ me->set_elt_property ("molecule", mol);
+
+ m = unsmob_molecule (mol);
return m;
}
? gh_scm2double(pen)
: 0.0;
- total_penalty += b->penalty_f_;
- if (b->penalty_f_ > 10000.0) // ugh. arbitrary.
+ SCM rpen = b->get_mus_property ("penalty");
+ if (gh_number_p (rpen))
+ total_penalty += gh_scm2double (rpen);
+
+ if (total_penalty > 10000.0) // ugh. arbitrary.
forbid_breaks ();
command_column_l_->set_elt_property ("penalty",
Articulation_req* l=script_req_l_arr_[i];
SCM alist = get_property ("scriptDefinitions");
- SCM list = scm_assoc (ly_str02scm (l->articulation_str_.ch_C ()), alist);
+ SCM list = scm_assoc (l->get_mus_property ("articulation-type"), alist);
if (list == SCM_BOOL_F)
{
- l->origin ()->warning (_f ("Don't know how to interpret articulation `%s'",
- l->articulation_str_.ch_C ()));
+ String a = ly_scm2string (l->get_mus_property ("articulation-type"));
+ l->origin ()->warning (_f ("Don't know how to interpret articulation `%s'", a.ch_C()));
+
continue;
}
// todo -> use result of articulation-to-scriptdef directly as basic prop list.
Script::brew_molecule (SCM smob)
{
Score_element *me= unsmob_element (smob);
-// Direction dir = DOWN;
-// SCM d = me->get_elt_property ("direction");
-// if (isdir_b (d))
-// dir = to_dir (d);
+#if 0
+ Direction dir = DOWN;
+ SCM d = me->get_elt_property ("direction");
+ if (isdir_b (d))
+ dir = to_dir (d);
+#endif
Direction dir = Side_position::get_direction(me);
- return get_molecule (me, dir).create_scheme();
+ return get_molecule (me, dir).smobbed_copy();
}
bool
{
if (Span_req *sl = dynamic_cast <Span_req *> (req_l))
{
- if (sl->span_type_str_ == "abort")
+ String t = ly_scm2string (sl->get_mus_property ("span-type"));
+ if (t == "abort")
{
for (int i = 0; i < slur_l_stack_.size (); i++)
{
requests_arr_.clear ();
new_slur_req_l_arr_.clear ();
}
- else if (sl->span_type_str_ == "slur")
+ else if (t == "slur")
{
/*
Let's not start more than one slur per moment.
else
a = Lookup::slur (one, Directional_element_interface::get (me) * thick, thick);
- return a.create_scheme();
+ return a.smobbed_copy();
}
void
if (span_req_l_drul_[START])
{
- dir_ = span_req_l_drul_[START]->span_type_str_ == "crescendo"
- ? RIGHT : LEFT;
+ String t = ly_scm2string (span_req_l_drul_[START]->get_mus_property ("span-type"));
+ dir_ = (t == "crescendo") ? RIGHT : LEFT;
span_start_req_l_ = span_req_l_drul_[START];
dynamic_tuple_arr_.clear ();
{
if (Span_req * s = dynamic_cast<Span_req*>(r))
{
- if (s-> span_type_str_ == "crescendo"
- || s->span_type_str_ == "decrescendo")
+ String t = ly_scm2string (s->get_mus_property ("span-type"));
+ if (t == "crescendo" || t == "decrescendo")
{
span_req_l_drul_[s->get_span_dir()] = s;
return true;
m.add_molecule (a);
}
- return m.create_scheme();
+ return m.smobbed_copy ();
}
int
the first and last (quarter) note bothe get one tremolo flag.
*/
- int requested_type = tremolo_req_l_->type_i_;
+ int requested_type = gh_scm2int (tremolo_req_l_->get_mus_property ("tremolo-type"));
+
SCM f = get_property ("tremoloFlags");
if (!requested_type && gh_number_p (f))
requested_type = gh_scm2int (f);
whole_note_correction, dy));
}
- return mol.create_scheme();
+ return mol.smobbed_copy ();
}
mol.add_molecule (fl);
}
- return mol.create_scheme();
+ return mol.smobbed_copy ();
}
MAKE_SCHEME_CALLBACK(Stem,off_callback,2);
Molecule mol;
SCM glyph = e->get_elt_property ("text");
if (!gh_string_p (glyph))
- return mol.create_scheme();
+ return mol.smobbed_copy ();
String text = ly_scm2string (glyph);
for (int i = 0; i < text.length_i (); i++)
mol.add_at_edge (X_AXIS, RIGHT, m, 0);
}
- return mol.create_scheme ();
+ return mol.smobbed_copy ();
}
global with binsearch.
-
real 0m19.352s
user 0m18.710s
sys 0m0.230s
+
local binsearch
user 18.8
- local with binsearch, and other optimizations.
+ local with binsearch, and other optimizations.
17.7
*/
m.translate_axis (ext.center (), Y_AXIS);
- return m.create_scheme ();
+ return m.smobbed_copy ();
}
Molecule
{
if (tempo_req_l_)
{
+
+ SCM met = tempo_req_l_->get_mus_property ("metronome-count");
audio_p_ = new Audio_tempo (tempo_req_l_->dur_.length_mom () /
Moment (1, 4)
- * Moment(tempo_req_l_->metronome_i_));
+ * Moment(gh_scm2int (met)));
+
Audio_element_info info (audio_p_, tempo_req_l_);
announce_element (info);
tempo_req_l_ = 0;
}
return Molecule ();
}
-
-SCM
-ly_assoc_chain (SCM key, SCM achain)
-{
- if (gh_pair_p (achain))
- {
- SCM handle = scm_assoc (key, gh_car (achain));
- if (gh_pair_p (handle))
- return handle;
- else
- return ly_assoc_chain (key, gh_cdr (achain));
- }
- else
- return SCM_BOOL_F;
-}
Molecule
Text_item::string2molecule (Score_element *me, SCM text, SCM alist_chain)
mol.add_at_edge (X_AXIS, RIGHT, m, gh_scm2double (space)
* Staff_symbol_referencer::staff_space (me));
}
- return mol.create_scheme ();
+ return mol.smobbed_copy ();
}
{
if (Span_req *s = dynamic_cast <Span_req*> (m))
{
- if (s->span_type_str_ == "abort")
+ String t = ly_scm2string (s->get_mus_property ("span-type"));
+ if (t == "abort")
{
req_drul_[LEFT] = 0;
req_drul_[RIGHT] = 0;
span_->suicide ();
span_ = 0;
}
- else if (s->span_type_str_ == "text")
+ else if (t == "text")
{
req_drul_[s->get_span_dir()] = s;
return true;
m.add_at_edge (X_AXIS, RIGHT, edge[RIGHT], 0);
m.translate_axis (broken_left, X_AXIS);
- return m.create_scheme ();
+ return m.smobbed_copy ();
}
Molecule a = Lookup::slur (b, Directional_element_interface::get (me) * thick, thick);
- return a.create_scheme ();
+ return a.smobbed_copy ();
}
{
if (time_signature_req_l_)
{
- audio_p_ = new Audio_time_signature (time_signature_req_l_->beats_i_, time_signature_req_l_->one_beat_i_);
+ int b = gh_scm2int (time_signature_req_l_->get_mus_property ("beats"));
+ int o = gh_scm2int (time_signature_req_l_->get_mus_property ("one-beat"));
+
+ audio_p_ = new Audio_time_signature (b,o);
Audio_element_info info (audio_p_, time_signature_req_l_);
announce_element (info);
time_signature_req_l_ = 0;
#include "font-interface.hh"
MAKE_SCHEME_CALLBACK(Time_signature,brew_molecule,1);
-
+/*
+ TODO: make different functions for special and normal timesigs.
+ */
SCM
Time_signature::brew_molecule (SCM smob)
{
String style (ly_scm2string (st));
if (style[0]=='1')
{
- return time_signature (me, n, 0).create_scheme();
+ return time_signature (me, n, 0).smobbed_copy ();
}
else
{
- return special_time_signature (me, style, n, d).create_scheme();
+ return special_time_signature (me, style, n, d).smobbed_copy ();
}
}
else
- return time_signature (me, n,d).create_scheme();
+ return time_signature (me, n,d).smobbed_copy ();
}
Molecule
*/
if (Time_signature_change_req *c
= dynamic_cast <Time_signature_change_req *> (t))
- set_time_signature (c->beats_i_, c->one_beat_i_);
-
+ {
+ int b = gh_scm2int (c->get_mus_property ("beats"));
+ int o = gh_scm2int (c->get_mus_property ("one-beat"));
+
+ set_time_signature (b, o);
+
+ }
timing_req_l_arr_.push(t);
return true;
}
mol.add_molecule (Molecule (b, at));
}
}
- return mol.create_scheme();
+ return mol.smobbed_copy ();
}
{
if (Span_req *s = dynamic_cast <Span_req *> (m))
{
- if (s->span_type_str_ == *p)
+ if (scm_equal_p (s->get_mus_property ("span-type"),
+ ly_str02scm ( *p)) == SCM_BOOL_T)
{
return true;
}
mol.add_at_edge (X_AXIS, LEFT, num, - num.extent (X_AXIS).length ()
- 1.0);
mol.translate_axis (left, X_AXIS);
- return mol.create_scheme();
+ return mol.smobbed_copy ();
}
Begin3
Title: LilyPond
-Version: 1.3.104
-Entered-date: 06NOV00
+Version: 1.3.105
+Entered-date: 09NOV00
Description:
Keywords: music notation typesetting midi fonts engraving
Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 1000k lilypond-1.3.104.tar.gz
+ 1000k lilypond-1.3.105.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 1000k lilypond-1.3.104.tar.gz
+ 1000k lilypond-1.3.105.tar.gz
Copying-policy: GPL
End
%define info yes
Name: lilypond
-Version: 1.3.104
+Version: 1.3.105
Release: 1
License: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.104.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.105.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
# Icon: lilypond-icon.gif
font-descr-alist)
)
+;; should really have name/pt size at the front of the list.
+;;
+;; (also tried to vary the order of this list, with little effect)
(define paper20-style-sheet-alist
'(
((3 medium upright number feta-nummer 13) . "feta-nummer13")
(Large . ((font-series . bold) (font-family . roman) (font-relative-size . 2)))
(dynamic . ((font-series . bold) (font-family . dynamic) (font-relative-size . 0)))
))
- (properties-to-font . ,properties-to-font-name)
+ (properties-to-font .
+
+ ,Font_interface::properties_to_font_name)
+ ; ,properties-to-font-name)
;; FIXME: this is a not-so-cool idea to use ALIGN
;; RAISE, LOOKUP, since they are not proper elt-properties,
(define no-copies #f)
(let* ((doc (string-append
- (document-paper "LilyPond interpretation contexts")
- (document-all-engravers "LilyPond engravers")
- (document-all-elements "LilyPond backend")
- (document-all-interfaces "LilyPond interfaces")))
+ (document-paper "LilyPond interpretation contexts")
+ (document-all-engravers "LilyPond engravers")
+ (document-all-elements "LilyPond backend")
+ (document-all-interfaces "LilyPond interfaces"))
+ )
(name "lilypond-internals")
(outname (string-append name ".texi"))
(out (open-output-file outname)))
-
+
(writing-wip outname)
(display
(string-append
("LilyPond engravers" . "Engravers create Elements")
("LilyPond backend" . "Detailed description of all Elements")
("LilyPond interfaces" . "Element Interfaces")))
-
+
doc
"\n@bye")
- out))
+ out))
(newline (current-error-port))
DO_STRIP=true
LOOP=$(foreach i, $(SUBDIRS), $(MAKE) PACKAGE=$(PACKAGE) -C $(i) $@ &&) true
-ETAGS_FLAGS=-CT
+# different redhat releases need different flags for etags. Just use defaults.
+ETAGS_FLAGS= # -CT
CTAGS_FLAGS=-h
include $(stepdir)/files.make