nsect(Free Software)
-LilyPond is url(free software)(http://www.fsf.org/copyleft/copyleft.html).
-We believe that
-url(software should be free)(http://www.fsf.org/philosophy/why-free.html).
-For more url(information)(http://www.fsf.org/philosophy/philosophy.html),
-see the url(Free Software Foundation)(http://www.fsf.org/).
-Just say ``No'' to proprietary software.
-
+Of course LilyPond, being part of the GNU project, is url(free
+software)(http://www.fsf.org/copyleft/copyleft.html). For more
+url(information)(http://www.fsf.org/philosophy/philosophy.html), see
+the url(Free Software Foundation)(http://www.fsf.org/).
nsect(Preview)
---- ../lilypond-1.1.29.jcn3/NEWS Wed Feb 10 15:21:05 1999
-++ b/NEWS Wed Feb 10 17:56:14 1999
-@@ -1,3 +1,6 @@
-pl 29.jcn4
- - unsuccessful try at fixing repeat-iter::ok () constness
-
- pl 29.jcn3
- - fix: slur-case3.ly
- - init.sly: .fly with linewidt=-1--- ../lilypond-1.1.29.jcn2/NEWS Tue Feb 9 22:46:07 1999
-++ b/NEWS Wed Feb 10 15:21:05 1999
-@@ -1,3 +1,7 @@
+pl 30 (feb 15)
+
+pl 29.uu1
+ - typewriter font
+ - star-spangled-banner bf (slur.cc).
+
+
pl 29.jcn3
- fix: slur-case3.ly
- init.sly: .fly with linewidt=-1
- pl 29.jcn2
- - resurrected ps output
- --- ../lilypond-1.1.29.jcn1/NEWS Tue Feb 9 17:15:49 1999
-++ b/NEWS Tue Feb 9 22:46:07 1999
-@@ -1,3 +1,6 @@
pl 29.jcn2
- resurrected ps output
- pl 29.jcn1
- - bf: volta sizes
- - GNU stuff on home page--- ../lilypond-1.1.29/NEWS Tue Feb 9 13:54:27 1999
-++ b/NEWS Tue Feb 9 17:15:49 1999
-@@ -1,3 +1,7 @@
+pl 29.hwn1
+ - bf: coord relative to self.
+ - bf: error msg if no AFM found
+ - bf: hang script on bar in other axis too (fixes staff-side-slur bug)
+ - hang on scripts on clef as well (more to left for single staffs)
+
+
pl 29.jcn1
- - bf: volta sizes
- - GNU stuff on home page
+ - bf: volta sizes
+ - GNU stuff on home page
+
+*******
+pl 29
- xl 28.jcn1
- - new outline TODO + .emacs setup
- pl 28.hwn1
+pl 28.hwn1
- bf: mid measure clefs (breakable items in non-breakable columns.)
- spanner.cc assert changed to warning
- (c) 1998 -> 1999 search replace.
.* BUGS
. * .ly files
-. * input/praeludium-fuga-E.ly
-. * input/font20
. * mutopia/J.S.Bach/wtk1-fugue2.ly
+. * input/test/grace
. * fix: text on rests: rediculous dims
. * fix midi output:
. * default duration? d
. * turn slope-damping on/off
. * c4 \! \> c4
. * tremolo stuff
-. * gallina barlines.
. * fix height of / collisions with lyrics (chords),
see input/test/vertical-text.ly; input/test/repeat.ly
+. * We need feta-din*.mf files for more sizes than 10.
. * latex bla.tex broken (titles / \lilyfooter stuff?)
. * fix dynamics decently, ie. use kerning & ligatures.
. * fix "I've been drinking too much"
. * support_l_arr_ empty in staff-margin's G_staff_side_item
. * remove old preformats in RPM
+. * minVerticalAlign for StaffGroups.
+. * I have tried the barAuto property to get barlines when
+typesetting rhythms. Lily prints all barlines except
+between first and second bar. Where is my mistake??
+
+\score{
+ \type RhythmicStaff<
+ \property RhythmicStaff.barAuto=1
+ \notes{
+ \time 3/4;
+ c4 c c | c c c | c c c
+ }
+ >
+}
. * declaring \score
. * is \break broken? input/test/hara-kiri.ly
. * fix OrchestralScore and Hara-kiri (i.e., fix Coriolan)
-. *
-\score{
- \type Staff \notes\relative c''{
- \property Staff.instrument = "Toeters"
- c c c c(\break
- )c c c c ~\break
- c c c c\break
- }
- \paper{
- linewidth=60.0\mm;
-% \translator { \HaraKiriStaffContext }
- \translator { \OrchestralScoreContext }
- \translator {
- \StaffContext
- \consists "Staff_margin_engraver";
- }
- }
-}
-
-. *
-Phrasing: Indicating the textual underlay of a piece, or
- otherwise dividing a piece into phrases.
+. * Phrasing: Indicating the textual underlay of a piece, or
+otherwise dividing a piece into phrases.
There are distinct ways of specifying the first two (although at
present, they're not properly distinguished) but no distinct way to
specify the third. Should there be?
.* TODO before 1.2
-. *
-> Yes. I want ties to tie only notes of the same pitch, so that
-> f < a~ a,> a
+. * Check gcc 2.8.1 compatibility
+. * use Drul_array for Interval.
+. * ties to tie only notes of the same pitch, so that
+> < a~ a,> a
> works as you'd expect it to.
-
-I don't think that's functional, but there is a bug (--jcn):
-Lily will set a tie between the a and the preceeding f.
. * 1. Can Lily be told where to start numbering?
-Fix: set bar-number to 0 if first bar is an anacrouse?
. * The timpani part has rests the full first line. Is it possible
to force lilypond to print all parts on the first page of the score
but use the hara-kiri mechanism on the remaining pages?
. * do scaled fonts.
. * profile atom smobs
-. * make ly2dvi test page.
. * Try to use Killing_cons iso. Pointer_list
. * make dependencies () a virtual function.
+. * fix Repeated_music_iterator::ok() (constness.)
. * one big ly2dvi input that includes *all* tests.
. * Don't use boolean properties (0,1), instead check existence
of property.
. * 'hinterfleisch' before bar (e.g. wtk1-fugue2)?
. * \type Voice \times 2/3 { [c8 c16 c16 c16 c16] }
. * repeat bars: need distance after ":|" and before "|:"
-.* Summary of minor spelling irregularities:
-. * capitalization/use of underscores in property names
-. * fix SkipBars -> skipBars
+. * Summary of minor spelling irregularities:
+. * capitalization/use of underscores in property names
+. * fix SkipBars -> skipBars
. * fix marks/barnumbers/marginal notes
. * broken scripts:
rfheel = \script { "fheel" 0 0 1 0 0 }
lftoe = \script { "ftoe" 0 0 -1 0 0 }
rftoe = \script { "ftoe" 0 0 1 0 0 }
-
and also
-
portato= \script { "portato" 0 -1 0 1 0 }
. * ly2dvi
. * bottomnote for ly2dvi
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=1
-PATCH_LEVEL=29
-MY_PATCH_LEVEL=jcn4
+PATCH_LEVEL=30
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
+++ /dev/null
-\score{
- \type Staff \notes\relative c''{
- % length matters...
-% \property Staff.instrument = "Tot"
- \property Staff.instrument = "ToetersToetersToeters"
- c c c c(\break
- )c c c c ~\break
- c c c c\break
- }
- \paper{
- linewidth=60.0\mm;
-% \translator { \HaraKiriStaffContext }
- \translator { \OrchestralScoreContext }
- \translator {
- \StaffContext
- \consists "Staff_margin_engraver";
- }
- }
-}
-
# input/test/Makefile
depth = ../..
-examples=font20 mark knee beam-interstaff slur-interstaff denneboom sleur repeat hara-kiri grace
+examples=font20 mark knee beam-interstaff slur-interstaff denneboom sleur repeat hara-kiri
LOCALSTEPMAKE_TEMPLATES=mutopia
include $(depth)/make/stepmake.make
>
\paper {
linewidth = 120.0\mm;
+ \translator { \VoiceContext }
}
}
--- /dev/null
+\score{
+ \type Staff \notes\relative c''{
+ \property Staff.instrument = "Toeters"
+ c c c c(\break
+ )c c c c ~\break
+ c c c c\break
+ }
+ \paper{
+ linewidth=60.0\mm;
+% \translator { \HaraKiriStaffContext }
+ \translator { \OrchestralScoreContext }
+ \translator {
+ \StaffContext
+ \consists "Staff_margin_engraver";
+ marginHangOnClef = 1;
+ }
+ }
+}
+
#include "bar-script-engraver.hh"
#include "bar.hh"
+#include "clef-item.hh"
#include "g-staff-side.hh"
#include "g-text-item.hh"
#include "lily-guile.hh"
axis_ = Y_AXIS;
staff_side_p_ = 0;
text_p_ =0;
+ hang_on_clef_b_ = false;
visibility_lambda_
= gh_eval_str ("non_postbreak_visibility");
}
void
-Bar_script_engraver::acknowledge_element (Score_element_info i)
+Bar_script_engraver::do_creation_processing ()
+{
+ Scalar prop = get_property (type_ + "HangOnClef", 0);
+ if (prop.to_bool ())
+ {
+ hang_on_clef_b_ = true;
+ }
+}
+
+void
+Bar_script_engraver::do_acknowledge_element (Item *i)
{
Axis other_axis = Axis((axis_ + 1)%2);
-
if (staff_side_p_ && !staff_side_p_->dim_cache_[other_axis].parent_l_)
{
- Bar * bar_l = dynamic_cast<Bar*> (i.elem_l_);
- if (!bar_l)
+ staff_side_p_->dim_cache_[other_axis].parent_l_
+ = &i->dim_cache_[other_axis];
+ staff_side_p_->dim_cache_[axis_].parent_l_
+ = &i->dim_cache_[axis_];
+
+ staff_side_p_->add_support (i);
+ i->add_dependency (staff_side_p_); // UGH.
+ }
+}
+
+
+Item*
+Bar_script_engraver::cast_to_interesting_item (Score_element *e)
+{
+ Item * i =0;
+ if (hang_on_clef_b_)
+ {
+ i = dynamic_cast<Clef_item*> (e);
+ }
+ else
+ {
+ i = dynamic_cast<Bar*> (e);
+ }
+ return i;
+}
+
+void
+Bar_script_engraver::acknowledge_element (Score_element_info inf)
+{
+ if (inf.origin_grav_l_arr_.size () == 1)
+ {
+ Item *i=cast_to_interesting_item (inf.elem_l_);
+ if (!i)
return;
-
+
/* Only put numbers on bars that are at our own level (don't put
numbers over the staffs of a GrandStaff, only over the GrandStaff
itself */
- if (i.origin_grav_l_arr_.size () == 1)
- {
- staff_side_p_->dim_cache_[other_axis].parent_l_ = &bar_l->dim_cache_[other_axis];
- // staff_side_p_->dim_cache_[axis_].parent_l_ = &bar_l->dim_cache_[axis_];
- staff_side_p_->add_support (i.elem_l_);
- bar_l->add_dependency (staff_side_p_); // UGH.
- }
+ if (inf.origin_grav_l_arr_.size () != 1)
+ return;
+
+ do_acknowledge_element (i);
}
}
return;
}
+ prev_start_req_ = reqs_drul_[START];
beam_p_ = new Beam;
grouping_p_ = new Rhythmic_grouping;
void
Beam_engraver::do_post_move_processing ()
{
- if (reqs_drul_[START])
- {
- prev_start_req_ = reqs_drul_[START];
- reqs_drul_ [START] =0;
- }
+ reqs_drul_ [START] =0;
}
void
if (rhythmic_req->duration_.durlog_i_<= 2)
{
rhythmic_req->warning (_ ("stem doesn't fit in beam"));
- reqs_drul_[LEFT]->warning (_ ("beam was started here"));
+ prev_start_req_->warning (_ ("beam was started here"));
return;
}
return iv;
}
+#if 0
Interval
Bow::do_width () const
{
Real dx = i.length();
return Interval (0, dx);
}
+#endif
Array<Offset>
Bow::get_controls () const
return r;
}
+/*
+ what *should* these functions *do* anyway.
+ */
Real
Dimension_cache::relative_coordinate (Dimension_cache *d) const
{
Real r =0.0;
+ if (d == this) // UGH
+ return 0.0;
for (Dimension_cache* c = parent_l_;
c != d;
-
/*
- direction.cc -- implement
+ direction.cc -- implement Direction
source file of the GNU LilyPond music typesetter
if (extender_spanner_p_)
{
span_reqs_drul_[LEFT]->warning (_ ("unterminated extender"));
- extender_spanner_p_->unlink ();
- delete extender_spanner_p_;
- extender_spanner_p_ = 0;
- span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
+ extender_spanner_p_->set_bounds(RIGHT, get_staff_info ().command_l ());
}
}
#include "protected-scm.hh"
/**
- put stuff over or next to bars
+ put stuff over or next to bars. Examples: bar numbers, marginal notes,
+ rehearsal marks.
*/
class Bar_script_engraver : public Engraver
{
Protected_scm visibility_lambda_;
String type_;
Axis axis_;
-
+ bool hang_on_clef_b_;
protected:
+ /**
+ Put the script on #it#
+ */
+ void do_acknowledge_element (Item *it);
+ /**
+ Return non-nil if we want to hang something on this.
+ */
+ Item *cast_to_interesting_item (Score_element*);
Bar_script_engraver ();
+ virtual void do_creation_processing ();
virtual void do_pre_move_processing ();
virtual void acknowledge_element (Score_element_info);
void create_items(Request*);
protected:
virtual Molecule* do_brew_molecule_p () const;
- virtual Interval do_width () const;
+ // virtual Interval do_width () const;
Array<Offset> get_controls () const;
virtual Array<Offset> get_encompass_offset_arr () const;
virtual Interval do_height () const;
/*
- cons.hh -- declare
+ cons.hh -- declare LISP like datatypes
source file of the GNU LilyPond music typesetter
#ifndef CONS_HH
#define CONS_HH
+#if 0
+template<class T, class U>
+class NCons
+{
+public:
+ T car_;
+ U cdr_;
+ NCons (T t, U u) : car_ (t), cdr_ (u) {}
+ virtual ~NCons () {}
+};
+
+template<class T>
+class Pointer_cons : public NCons<T, NCons*>
+{
+ Pointer_cons () : Cons<T, Cons*> (0,0){}
+ Pointer_cons (T t, Pointer_cons<T>*c)
+ : Cons<T, Cons*> (t,c)
+ {
+ car_ = t;
+ next_ = c;
+ }
+};
+#endif
+
template<class T>
class Cons
public:
T * car_;
Cons * next_;
- virtual ~Cons ();
Cons () {
car_=0;
next_ =0;
car_ = t;
next_ = c;
}
+ virtual ~Cons ()
+ {
+ delete next_;
+ }
};
template<class T>
virtual ~Killing_cons ();
};
+
+template<class T>
+class Cons_list
+{
+public:
+ Cons<T> * head_;
+ Cons<T> ** tail_;
+ Cons_list () { head_ =0; tail_ = &head_; }
+};
+
+
+template<class T>
+Cons_list<T> copy_killing_cons_list (Cons<T> *src);
+template<class T>
+Cons_list<T> clone_killing_cons_list (Cons<T> *src);
+
+
#endif /* CONS_HH */
#ifndef KILLING_CONS_TCC
#define KILLING_CONS_TCC
+
template<class T>
-Cons<T>::~Cons ()
+Killing_cons<T>::~Killing_cons ()
{
+ delete car_;
}
template<class T>
-Killing_cons<T>::~Killing_cons ()
+Cons_list<T>
+copy_killing_cons_list (Cons<T> *src)
{
- delete car_;
- delete next_;
+ Cons_list<T> kl;
+
+ for (; src; src = src->next_)
+ {
+ T *t = new T(*src->car_);
+ *kl.tail_ = new Killing_cons<T> (t, 0);
+ kl.tail_ = &(*kl.tail_)->next_;
+ }
+
+ return kl;
+}
+
+template<class T>
+Cons_list<T>
+clone_killing_cons_list (Cons<T> *src)
+{
+ Cons_list<T> kl;
+
+ for (; src; src = src->next_)
+ {
+ T *t = src->car_->clone ();
+ *kl.tail_ = new Killing_cons<T> (t, 0);
+ kl.tail_ = &(*kl.pp)->next_;
+ }
+
+ return kl;
}
#include "bar-script-engraver.hh"
-/**
+/**Print rehearsal marks.
*/
class Mark_engraver : public Bar_script_engraver
{
to the top, to the right, etc. */
class Molecule {
// Protected_scm atom_list_; // change to List<Atom>?
- Killing_cons<Atom> *atom_list_;
+ Cons<Atom> *atom_list_;
friend class Paper_outputter;
public:
Box dim_;
private:
void start_next_element ();
- bool done_b_;
int unfold_i_;
Moment here_mom_;
Music_iterator* repeat_iter_p_;
virtual void do_add_processing ();
virtual void do_pre_processing ();
virtual void do_substitute_dependency (Score_element*, Score_element*);
- virtual Interval do_width () const;
Array<Rod> get_rods () const;
};
public:
Tie ();
void set_head (Direction, Note_head*head_l);
-
-
VIRTUAL_COPY_CONS(Score_element);
bool same_pitch_b_;
virtual void do_post_processing ();
virtual void set_default_dir();
virtual void do_substitute_dependency (Score_element*,Score_element*);
- virtual Interval do_width () const;
- Array<Rod> get_rods () const;
+ virtual Array<Rod> get_rods () const;
Array<Offset> get_controls () const;
};
{
warning (_f("Can't open `%s'\n", font_name_));
warning (_f("Search path %s\n", global_path.str ().ch_C()));
+ error (_f("Aborting"));
}
}
Adobe_font_char_metric cm = afm_l_->find_char (s, warn);
{"bold", "cmbx"},
{"dynamic", "feta-din"},
{"finger", "feta-nummer"},
+ {"typewriter", "cmtt"},
{"italic", "cmti"},
{"roman", "cmr"},
{"large", "cmbx"},
cout << _ ("GNU LilyPond is Free software, see --warranty");
cout << '\n';
cout << '\n';
- cout << _f ("Copyright (c) %s by", "1996, 1997, 1998");
+ cout << _f ("Copyright (c) %s by", "1996--1999");
cout << '\n';
cout << " " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
cout << " " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
cout << '\n';
cout << _ ("GNU LilyPond -- The GNU Project music typesetter");
cout << '\n';
- cout << _f ("Copyright (c) %s by", "1996, 1997, 1998");
+ cout << _f ("Copyright (c) %s by", "1996--1999");
cout << '\n';
cout << " " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
cout << " " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
#include "molecule.hh"
#include "atom.hh"
#include "debug.hh"
+
#include "killing-cons.tcc"
Box
Molecule::translate_axis (Real x,Axis a)
{
for (Cons<Atom> * ptr = atom_list_; ptr; ptr = ptr->next_)
- {
ptr->car_->off_[a] += x;
- }
+
dim_[a] += x;
}
void
Molecule::add_molecule (Molecule const &m)
{
- for (Cons<Atom> * ptr = m.atom_list_; ptr; ptr = ptr->next_)
+ Cons_list<Atom> al (copy_killing_cons_list (m.atom_list_));
+
+ if (al.head_)
{
- add_atom (ptr->car_);
+ *al.tail_ = atom_list_;
+ atom_list_ = al.head_;
}
-
dim_.unite (m.dim_);
}
alternative_iter_p_ = 0;
here_mom_ = 0;
unfold_i_ = -1;
- done_b_ = false;
}
Repeated_music_iterator::~Repeated_music_iterator ()
void
Repeated_music_iterator::construct_children ()
{
- done_b_ = false;
repeat_iter_p_ = get_iterator_p (dynamic_cast<Repeated_music const*> (music_l_)->repeat_p_);
}
if (!success)
music_l_->warning ( _("No one to print a volta bracket"));
}
-
- if (!ok ())
- start_next_element ();
-
- // if (!ok())
- // return;
-
if (repeat_iter_p_ && repeat_iter_p_->ok ())
repeat_iter_p_->process_and_next (m - here_mom_);
- else if (alternative_iter_p_ && alternative_iter_p_->ok ())
- alternative_iter_p_->process_and_next (m - here_mom_);
else
- return;
-
+ alternative_iter_p_->process_and_next (m - here_mom_);
Music_iterator::do_process_and_next (m);
}
return r->alternative_p_->length_mom () + here_mom_;
}
+/*
+ FIXME
+ */
bool
Repeated_music_iterator::ok () const
{
- return !done_b_;
+ if (!repeat_iter_p_ && !alternative_iter_p_)
+ return false;
+
+ if ((repeat_iter_p_ && repeat_iter_p_->ok ())
+ || (alternative_iter_p_ && alternative_iter_p_->ok ()))
+ return true;
+
+ Repeated_music_iterator *urg = (Repeated_music_iterator*)this;
+ // urg, we're const
+ urg->start_next_element ();
+
+ return ok ();
}
+
void
Repeated_music_iterator::start_next_element ()
{
Repeated_music const*rep =dynamic_cast<Repeated_music const*> (music_l_);
- if (repeat_iter_p_)
+
+ if (repeat_iter_p_)
{
assert (!repeat_iter_p_->ok ());
assert (!alternative_iter_p_);
unfold_i_--;
repeat_iter_p_ = get_iterator_p (rep->repeat_p_);
// urg, assume same length alternatives for now...
- // here_mom_ += rep->alternative_p_->music_p_list_p_->top ()->length_mom ();
+// here_mom_ += rep->alternative_p_->music_p_list_p_->top ()->length_mom ();
/*
URG
this is *wrong* but at least it doesn't dump core
when unfolding, the alternative (sequential) music
shouldn't automatically move to the next alternative
-
+
how to intercept this...
- */
+ */
here_mom_ += rep->alternative_p_->length_mom ();
}
}
-
- if ((!repeat_iter_p_ || !repeat_iter_p_->ok ())
- && (!alternative_iter_p_ || !alternative_iter_p_->ok ()))
- done_b_ = true;
}
if (d == LEFT)
dy_f_drul_[u] += dir_ * internote_f;
- dy_f_drul_[d] = dy_f_drul_[(Direction)-d];
+ dy_f_drul_[d] = dy_f_drul_[u];
}
}
while (flip(&d) != LEFT);
if (sign (dy) != sign (note_dy))
{
Real damp_f = paper ()->get_var ("slur_slope_follow_music_factor");
- Real dy = note_dy * damp_f;
- Direction adjust_dir = (Direction)(- dir_ * sign (dy));
+ Real realdy = note_dy * damp_f;
+ Direction adjust_dir = (Direction)(- dir_ * sign (realdy));
+ if (!adjust_dir)
+ adjust_dir = -dir_;
/*
adjust only if no beam gets in the way
*/
|| (extrema[adjust_dir]->stem_l_->beams_i_drul_[-adjust_dir] < 1))
{
dy_f_drul_[adjust_dir] = dy_f_drul_[-adjust_dir]
- + 2 * adjust_dir * dy;
+ + 2 * adjust_dir * realdy;
Real dx = notewidth_f / 2;
if (adjust_dir != extrema[adjust_dir]->stem_l_->dir_)
dx /= 2;
Real damp_f = paper ()->get_var ("slur_slope_damping");
Offset d_off = Offset (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT],
dy_f_drul_[RIGHT] - dy_f_drul_[LEFT]);
- d_off.x () += extent (X_AXIS).length ();
+ d_off[X_AXIS] += extent (X_AXIS).length ();
- Real ratio_f = abs (d_off.y () / d_off.x ());
+ Real ratio_f = abs (d_off[Y_AXIS] / d_off[X_AXIS]);
if (ratio_f > damp_f)
- dy_f_drul_[(Direction)(- dir_ * sign (d_off.y ()))] +=
- dir_ * (ratio_f - damp_f) * d_off.x ();
+ dy_f_drul_[(Direction)(- dir_ * sign (d_off[Y_AXIS]))] +=
+ dir_ * (ratio_f - damp_f) * d_off[X_AXIS];
}
Array<Offset>
Real internote = paper ()->internote_f ();
Offset left = Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]);
- left.x () += encompass_arr_[0]->stem_l_->hpos_f ();
+ left[X_AXIS] += encompass_arr_[0]->stem_l_->hpos_f ();
/*
<URG>
*/
if (dir_ != encompass_arr_[0]->stem_l_->dir_)
- left.x () += - 0.5 * notewidth * encompass_arr_[0]->stem_l_->dir_
+ left[X_AXIS] += - 0.5 * notewidth * encompass_arr_[0]->stem_l_->dir_
+ gap;
else if (encompass_arr_[0]->stem_l_->dir_ == UP)
- left.x () -= notewidth;
+ left[X_AXIS] -= notewidth;
if ((dir_ == encompass_arr_[0]->stem_l_->dir_)
&& (encompass_arr_[0]->stem_l_->dir_ == DOWN))
- left.y () -= internote * encompass_arr_[0]->stem_l_->dir_;
+ left[Y_AXIS] -= internote * encompass_arr_[0]->stem_l_->dir_;
/* </URG> */
Offset d = Offset (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT],
dy_f_drul_[RIGHT] - dy_f_drul_[LEFT]);
- d.x () += extent (X_AXIS).length ();
+ d[X_AXIS] += extent (X_AXIS).length ();
int first = 1;
int last = encompass_arr_.size () - 1;
Encompass_info info (encompass_arr_[i], dir_);
notes.push (info.o_ - left);
}
- Encompass_info info (encompass_arr_[encompass_arr_.size () - 1], dir_);
-
+ Encompass_info info (encompass_arr_.top (), dir_);
+ // [encompass_arr_.size () - 1]
+
// urg:
Slur* urg = (Slur*)this;
urg->interstaff_f_ = info.interstaff_f_;
- d.y () += interstaff_f_;
+ d[Y_AXIS] += interstaff_f_;
// prebreak
if (interstaff_f_ && (encompass_arr_.top () != spanned_drul_[RIGHT]))
{
Encompass_info info (encompass_arr_[encompass_arr_.size () - 1], dir_);
- d.y () -= info.o_.y () - interstaff_f_;
+ d[Y_AXIS] -= info.o_[Y_AXIS] - interstaff_f_;
}
notes.push (d);
return notes;
}
-Interval
-Slur::do_width () const
-{
- Real min_f = paper ()->get_var ("slur_x_minimum");
- Interval width_int = Bow::do_width ();
- return width_int.length () < min_f ? Interval (0, min_f) : width_int;
-}
Array<Rod>
Slur::get_rods () const
Array<Rod> a;
Rod r;
r.item_l_drul_ = spanned_drul_;
- r.distance_f_ = do_width ().length ();
+ r.distance_f_ = paper ()->get_var ("slur_x_minimum");
+
a.push (r);
return a;
}
Interval
Spanner::do_width() const
{
+
+
Real l = spanned_drul_[LEFT]->absolute_coordinate (X_AXIS);
Real r = spanned_drul_[RIGHT]->absolute_coordinate (X_AXIS);
}
-
/*
TODO
- fix alignment/support
should be able to set whole paragraph (multiple lines, centre) to
left (right?) of staff, e.g.:
|______________
*/
void
-Staff_margin_engraver::acknowledge_element (Score_element_info i)
+Staff_margin_engraver::acknowledge_element (Score_element_info inf)
{
- Bar * b =dynamic_cast<Bar *> (i.elem_l_);
- if (!b)
- return ;
-
- if (i.origin_grav_l_arr_.size() != 1)
+ Item *i = cast_to_interesting_item (inf.elem_l_);
+ if (!i || inf.origin_grav_l_arr_.size() != 1)
return;
create_items (0);
text_p_->text_str_ = long_str;
staff_side_p_->dir_ = LEFT;
- Bar_script_engraver::acknowledge_element(i);
+ Bar_script_engraver::do_acknowledge_element (i);
}
+++ /dev/null
-/*
- template4.cc -- instantiate Link_list baseclass.
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#if 0
-#ifndef __CYGWIN32__
-#include "proto.hh"
-#include "pcursor.hh"
-#include "plist.hh"
-#include "spanner.hh"
-#include "audio-column.hh"
-#include "audio-item.hh"
-#include "audio-staff.hh"
-#include "p-col.hh"
-#include "p-score.hh"
-#include "cursor.tcc"
-#include "list.tcc"
-#include "pcursor.tcc"
-#include "plist.tcc"
-
-#endif
-#endif
head_l_drul_[RIGHT] = new_l;
}
+#if 0
Interval
Tie::do_width () const
{
- Real min_f = paper ()->get_var ("tie_x_minimum");
+ Real min_f =
Interval width_int = Bow::do_width ();
return width_int.length () < min_f ? Interval (0, min_f) : width_int;
}
+#endif
Array<Rod>
Tie::get_rods () const
Array<Rod> a;
Rod r;
r.item_l_drul_ = spanned_drul_;
- r.distance_f_ = do_width ().length ();
+ r.distance_f_ = paper ()->get_var ("tie_x_minimum");
a.push (r);
return a;
}
font_finger = 4.;
font_volta = 5.;
font_number = 8.;
- font_mark = 10.;
+ font_dynamic = 10.;
+ font_mark = 10.;
arithmetic_basicspace = 2.;
arithmetic_multiplier = 4.8\pt;
Begin3
Titel: LilyPond
-Versie: 1.1.28
-Inschrijf datum: 08FEB99
+Versie: 1.1.30
+Inschrijf datum: 15FEB99
Beschrijving: @FLAPTEKST@
Trefwoorden: muziek typezetten midi notatie
Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
- 770k lilypond-1.1.28.tar.gz
+ 770k lilypond-1.1.30.tar.gz
Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.1.28.tar.gz
+ 770k lilypond-1.1.30.tar.gz
Copi-eer voorwaarden: GPL
End
Begin3
Title: LilyPond
-Version: 1.1.28
-Entered-date: 08FEB99
+Version: 1.1.30
+Entered-date: 15FEB99
Description:
LilyPond is the GNU Project music typesetter. This program can print
beautiful sheet music from a music definition file. It can also play
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 770k lilypond-1.1.28.tar.gz
+ 770k lilypond-1.1.30.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.1.28.tar.gz
+ 770k lilypond-1.1.30.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.1.28
+Version: 1.1.30
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.28.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.30.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
depth = ../..
-examples=cadenza
+examples=# cadenza
LOCALSTEPMAKE_TEMPLATES=mutopia
include $(depth)/make/stepmake.make
; (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
-(debug-enable 'backtrace)
+;(debug-enable 'backtrace)
;;; library funtions
(define