o Neil Jerram <nj104@cus.cam.ac.uk>. parts of Documenta-
tion/Vocab*
-o Donald Ervin Knuth, http://www.cs-staff.stan-
+o Donald Ervin Knuth, http://www-cs-staff.stan-
ford.edu/~knuth/ mf/ital-*.mf (these were taken from
the CM fonts)
debian package: debian/*
it()nemail(Neil Jerram)(nj104@cus.cam.ac.uk).
parts of Documentation/Vocab*
-it()Donald Ervin Knuth, lurl(http://www.cs-staff.stanford.edu/~knuth/)
+it()Donald Ervin Knuth, lurl(http://www-cs-staff.stanford.edu/~knuth/)
mf/ital-*.mf (these were taken from the CM fonts)
it()nemail(Werner Lemberg)(xlwy01@uxp1.hrz.uni-dortmund.de),
misc bugfixes, some Beam and Stem code.
---- ../lilypond-1.1.37.mb1/NEWS Wed Mar 31 22:12:22 1999
-++ b/NEWS Mon Apr 5 22:54:57 1999
-@@ -1,3 +1,9 @@
+pl 37.script2
+ - bf: AFM for BlueSky AFM files.
+ - \penalty = 4278 -> \penalty 4278
+ - URG!! fixed major (unnoticed) bug in dependency engine
+ - Further Script hacking:
+ * G_script_column
+ * G_script_column_engraver
+
+ pl 37.script1
+ - major Script rehack:
+ * G_stem_staff_side_item
+ * G_script
+ * G_script_engraver
+ * G_script_req
+ - junked Text_def, changed \property textstyle -> \property textStyle
+(todo -> convert-mudela)
+ - Line_of_score is an Axis_group_element, no more overlapping
+lines, hopefully.
+ - mf: whole diamond head tweak
+
pl 37.mb2
- Added property clefStyle: "" / "transparent" / "fullSizeChanges"
- New example: input/test/incipit.ly
- Documented clefStyle and restStyle in refman.tex
- Partial bug fix: octaviated clefs. Still broken!!!
- pl 37.mb1
- - Added property restStyle.
- - mensural 4th, 8th and 16th rests.--- ../lilypond-1.1.37/NEWS Wed Mar 31 21:50:35 1999
-++ b/NEWS Sun Apr 4 00:42:55 1999
-@@ -1,4 +1,13 @@
-pl 37.script1
- - major Script rehack.
- - junked Text_def, changed \property textstyle -> \property textStyle
-(todo -> convert-mudela)
- - Line_of_score is an Axis_group_element, no more overlapping
-lines, hopefully.
- - mf: whole diamond head tweak
-*****
-pl 37 (march 30, 1999)
- - diamond heads (probably really ugly).
- - cross head.
- - tweaked harmonic head a bit.pl 37.mb1
+pl 37.mb1
- Added property restStyle.
- - mensural 4th, 8th and 16th rests.
+ - mensural 4th, 8th and 16th rests.
+pl 37.uu1
+ - FreeBSD bf
-*************
-
- - diamond heads (probably really ugly).
- - cross head.
- - tweaked harmonic head a bit.
- - property noteHeadStyle
+****
+pl 37 (march 30, 1999)
+ - note head styles, see input/test/noteheadstyle.fly
+ * \property noteHeadStyle:
+ * diamond note heads (probably really ugly)
+ * cross note head.
+ * harmonic head (mf sources were tweaked)
+ * transparent for no \heads
+ * \property noteHeadStyle ="" for normal heads.
pl 36.mb2
- bf: timeSignatureStyle
- debian fixes.
- don't insert extra alignment space for empty stuff.
- Align_element derives from Axis_group_element
+ - junk cruft for detecting upbeam / downbeam.
- junk all *{horizontal,vertical}* Score_element derived classes.
- G_staff_side_item::padding_f_ now generic property.
- some tweaking of beam & stem.
- junk pointerlist in Sources
- - junk Stem::mult_i_, Stem::beam_gap_i_, G_staff_side_item::padding
+ - junk Stem::mult_i_, Stem::beam_gap_i_, G_staff_side_item::padding,
Bar::at_line_start_b_, Key_item::c_position_, Note_head::type_str_,
Note_head::staff_size, Stem::xdir_
> with the note "a4" there will be a black note at the ledger line where
> "c" would be too. However, only the "a4" will have the extra blob.
. * ps/lily.ps
-. * AFM for BlueSky AFM files.
. * devise standard for functioning of Vertical_align_element.
. * fix interstaff slurs & beams.
. * staff size for post/prebreaks
. * mutopia/J.S.Bach/wtk1-fugue2.ly
. * input/test/grace
. * fix: text on rests: ridiculous dims
-. * \score { \notes { c8 c8 c8 c c c }
-\paper { \translator { \VoiceContext \remove "Auto_beam_engraver";}}
-}
+. * clefs.ly
. * m=\notes\relative c'''{
\time 2/4;
. * latex bla.tex broken (titles / \lilyfooter stuff?
. * fix dynamics decently, ie. use kerning & ligatures.
. * support_l_arr_ empty in staff-margin's G_staff_side_item
+. * slurs colllide with lyrics.
. * minVerticalAlign for StaffGroups.
. * fix OrchestralScore and Hara-kiri (i.e., fix Coriolan)
. * Phrasing: Indicating the textual underlay of a piece, or
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?
+. * spacing of mmrests.
+
+.* Cleanups needed
+. * Beam
+. * Stem + Notehead
+. * Slur
+. * Repeats
+. * Rhythmic_grouping
+. * Duration
+. * Spring generation
+. * Collision
+. * Rest_collision
.* TODO before 1.2
. * \selectmusic to cut pieces from music.
. * fix Repeated_music design
. * one big ly2dvi input that includes *all* tests.
. * store req -> element, element -> element causes for warnings
-. * use G_text_item in stead.
-. * junk Script_def
. * include examples in RPM.
. * fix partial measures in meaningful way.
. * add scripts to bars eg. |^"bla"
. * uniformise property names...
. * ydirection <-> yDirection
. * rather allow '_' in identifiers first (i.e. junk ^ and _),
- and do y_direction?
+and do y_direction?
. * typo checks on property names?
. * use streambufs and iostream
to provide IO handling for TeX stream, mudela stream, data-file.
. * abbrev -> tremolo
. * abbreviation-beam -> (measured/unmeasured) tremolo
. * partial -> anacrouse
-. * shared lib
. * robustify Beam (in case of no stems, 32nd notes)
-. * decentralised spring factory
. * move paper vars into engraver properties
. * check for groff / troff/ nroff et
. * more intelligent file searching
. * handle ^C for tmp/file creation.
. * make LilyPond RPM fully relocatable
. * dots & rest collisions.
-. * documentation
-. * remove links to non-free SW.
-. * internal documentation
-. * a general paper.
-. * \properties
-. * left/rightbeamcount
-. * various other new properties.
-. * introduction?
-. * info?
-. * LaTeX?
-. * more manpages?
. * the warning about the negative slur/tie length appears twice
which is irritating.
. * better hshift (dots, distance, head dependent)
. * slurs
. * accents
. * dynamics
-
> Would it be hard to add support for proper dynamics in MIDI output? I
> would really like to have this feature...
. * PS lines to .eps files
. * write custom prolog
-. * NIFF ?
-. * Common Music Notation
-. * PostScript output (esp. Beams, Slurs, etc)
-. * Move all Score_elems, into libmutype.a
-. * SGML
+. * SGML input
. * Documentation
+. * remove links to non-free SW.
+. * internal documentation
+. * a general paper.
+. * \properties
+. * left/rightbeamcount
+. * various other new properties.
+. * introduction?
+. * info?
+. * LaTeX?
+. * more manpages?
. * Doc (C) stuff of sheet music
. * a better format? SGML? TeX? Info?
. * a better tutorial
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=1
-PATCH_LEVEL=37
-MY_PATCH_LEVEL=mb2
+PATCH_LEVEL=38
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
NO_AXES=2,
};
-#ifndef STANDALONE
#include "string.hh" // ugh
String axis_name_str (Axis);
-#endif // STANDALONE
/**
the operator ++ for Axis.
}
#endif
+
+/*
+ free bsd fix by John Galbraith
+ */
+
Offset
complex_multiply (Offset z1, Offset z2)
{
Offset z;
- z[X_AXIS] = z1[X_AXIS] * z2[X_AXIS] - z1[Y_AXIS]*z2[Y_AXIS];
- z[Y_AXIS] = z1[X_AXIS] * z2[Y_AXIS] + z1[Y_AXIS] * z2[X_AXIS];
+ if(!isinf(z2[Y_AXIS]))
+ {
+ z[X_AXIS] = z1[X_AXIS] * z2[X_AXIS] - z1[Y_AXIS]*z2[Y_AXIS];
+ z[Y_AXIS] = z1[X_AXIS] * z2[Y_AXIS] + z1[Y_AXIS] * z2[X_AXIS];
+ }
return z;
}
+
+
Offset
complex_exp (Offset o)
{
--- /dev/null
+%c''4^|^.^"foo"^"klap"
+c''4^|^.^"foo"^"klap"^"puk"^\fermata^\stopped
+c4_|_._"foo"_"klap"_"puk"_\fermata_\stopped
String c = strip_leading_white (a[i]);
Array<String> b = String_convert::split_arr (c, ' ');
+ if (!b.size ())
+ continue;
if (b[0] == "C")
char_metric.C_ = b[1].value_i ();
else if (b[0] == "WX")
Adobe_font_char_metric afm_char =read_char_metric (s, size);
char_metrics_.push (afm_char);
int i = char_metrics_.size ()-1;
- ascii_to_metric_idx_ [afm_char.C_] = i;
+
+ // TFM files uses neg. charcodes to store Space
+ if (afm_char.C_ >= 0)
+ ascii_to_metric_idx_ [afm_char.C_] = i;
name_to_metric_dict_ [afm_char.N_] = i;
}
}
void
Collision::add_column (Note_column* ncol_l)
{
- // ugh. Fixme.
clash_l_arr_.push (ncol_l);
add_element (ncol_l);
add_dependency (ncol_l);
assert (abs (dir) == 1);
int j = dir > 0 ? 0 : 3;
if (h_shift_b)
- j += dir;
+ j += dir;
return j;
}
Collision::do_pre_processing()
{
if (clash_l_arr_.size() <= 1)
- return;
+ return;
/*
[stem up, stem up shifted, stem down shifted, stem down]
- */
+ */
Array<Note_column*> clash_group_arr_a[4];
for (int i=0; i < clash_l_arr_.size(); i++)
{
Note_column* c_l = clash_l_arr_[i];
- if (! c_l->dir_)
+ Direction d = c_l->dir ();
+ if (!d)
{
warning (_ ("No stem direction set. Ignoring column in clash."));
continue;
}
- int d = (c_l->dir_);
SCM shift = c_l->remove_elt_property (horizontal_shift_scm_sym);
bool shift_b = (shift != SCM_BOOL_F);
x_off[idx (d, true)] = d *1.0 ;
} while ((d *= -1) != 1);
+
if (!middle.empty_b()
&& middle.length() < 2 && col_l_a[idx (1,0)] && col_l_a[idx (-1,0)]) {
// reproduction of bugfix at 3am ?
{
if (col_l_a[j])
{
- /* collision.cc:138: request for method `translate' is ambiguous
-
- (shaddup)
- */
Offset o (x_off[j] * wid_f, 0);
col_l_a[j]->translate (o);
- // ((Score_element*)col_l_a[j])->translate (o);
}
}
}
text_p_->style_str_ = prop.length_i () ? prop : "dynamic";
staff_side_p_ = new G_staff_side_item;
+ staff_side_p_->set_elt_property (script_priority_scm_sym,
+ gh_int2scm (100));
+
staff_side_p_->set_victim (text_p_);
staff_side_p_->axis_ = Y_AXIS;
--- /dev/null
+/*
+ g-script-column-engraver.cc -- implement G_script_column_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "engraver.hh"
+#include "g-script-column.hh"
+#include "g-staff-side.hh"
+
+/**
+ Find potentially colliding scripts, and put them in a
+ G_script_column, that will fix the collisions. */
+class G_script_column_engraver : public Engraver
+{
+ G_script_column *scol_p_;
+ Link_array<Item> script_l_arr_;
+ Link_array<G_staff_side_item> staff_side_l_arr_;
+public:
+ G_script_column_engraver ();
+ VIRTUAL_COPY_CONS(Translator);
+protected:
+ virtual void acknowledge_element (Score_element_info);
+ virtual void process_acknowledged ();
+ virtual void do_pre_move_processing ();
+ virtual void do_post_move_processing ();
+};
+
+
+G_script_column_engraver::G_script_column_engraver()
+{
+ scol_p_ =0;
+}
+
+void
+G_script_column_engraver::do_pre_move_processing ()
+{
+ if (scol_p_)
+ {
+ typeset_element (scol_p_);
+ scol_p_ =0;
+ }
+}
+
+void
+G_script_column_engraver::do_post_move_processing ()
+{
+ script_l_arr_.clear ();
+ staff_side_l_arr_.clear ();
+}
+
+void
+G_script_column_engraver::acknowledge_element( Score_element_info inf)
+{
+ Item *thing = dynamic_cast<Item*>(inf.elem_l_);
+ if (!thing)
+ return;
+
+ Dimension_cache * parcache = thing->dim_cache_[Y_AXIS].parent_l_;
+ if (!parcache || !thing)
+ return ;
+
+ Graphical_element *parent = parcache->element_l ();
+
+ if (G_staff_side_item * ss = dynamic_cast<G_staff_side_item*>(parent))
+ {
+ if (!ss->breakable_b ())
+ {
+ script_l_arr_.push (thing);
+ }
+ }
+}
+
+void
+G_script_column_engraver::process_acknowledged ()
+{
+ if (!scol_p_ && script_l_arr_.size () > 1)
+ {
+ scol_p_ = new G_script_column;
+ announce_element (Score_element_info (scol_p_, 0));
+ }
+
+ if (scol_p_)
+ {
+ for (int i=0; i < script_l_arr_.size (); i++)
+ scol_p_->add_staff_sided (script_l_arr_[i]);
+ script_l_arr_.clear ();
+ }
+}
+ADD_THIS_TRANSLATOR(G_script_column_engraver);
--- /dev/null
+/*
+ g-script-column.cc -- implement G_script_column
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+#include "g-script-column.hh"
+#include "g-staff-side.hh"
+
+static G_staff_side_item *
+get_g_staff_side (Item *i)
+{
+ Graphical_element *e1 = i->dim_cache_[Y_AXIS].parent_l_->element_l ();
+
+ return dynamic_cast<G_staff_side_item*>(e1);
+}
+
+void
+G_script_column::add_staff_sided (Item *i)
+{
+ SCM p = get_g_staff_side (i)->get_elt_property (script_priority_scm_sym);
+ if (p == SCM_BOOL_F)
+ return;
+
+ staff_sided_item_l_arr_.push (i);
+ add_dependency (i);
+}
+
+static int
+staff_side_compare (Item * const &i1,
+ Item * const &i2)
+{
+ Score_element *e1 = get_g_staff_side (i1);
+ Score_element *e2 = get_g_staff_side (i2);
+
+ SCM p1 = e1->get_elt_property (script_priority_scm_sym);
+ SCM p2 = e2->get_elt_property (script_priority_scm_sym);
+
+ return gh_scm2int (SCM_CDR(p1)) - gh_scm2int (SCM_CDR(p2));
+}
+
+void
+G_script_column::do_pre_processing ()
+{
+ Drul_array<Link_array<Item> > arrs;
+
+ for (int i=0; i < staff_sided_item_l_arr_.size (); i++)
+ {
+ G_staff_side_item * ip = get_g_staff_side (staff_sided_item_l_arr_[i]);
+ arrs[ip->dir_].push (staff_sided_item_l_arr_[i]);
+ }
+
+ Direction d = DOWN;
+ do {
+ Link_array<Item> &arr(arrs[d]);
+
+ arr.sort (staff_side_compare);
+
+ Item * last = 0;
+ for (int i=0; i < arr.size (); i++)
+ {
+ G_staff_side_item * gs = get_g_staff_side (arr[i]);
+ if (last)
+ {
+ gs->add_support (last);
+ gs->add_support (get_g_staff_side (last));
+ }
+
+ gs->remove_elt_property (script_priority_scm_sym);
+ last = arr[i];
+ }
+
+ } while (flip (&d) != DOWN);
+}
TODO: Quantisation support (staccato dots between stafflines)
*/
-
+#include "debug.hh"
#include "g-script.hh"
#include "lookup.hh"
#include "g-staff-side.hh"
{
return new Molecule (get_molecule (staff_side_l_->dir_));
}
+
+void
+G_script::do_print () const
+{
+ DOUT << "Indices: " << indices_drul_[LEFT] << ", " << indices_drul_[RIGHT];
+}
#include "g-staff-side.hh"
#include "staff-symbol.hh"
+#include "debug.hh"
G_staff_side_item::G_staff_side_item ()
{
add_support (staff_symbol_l ());
}
}
+
+Interval
+G_staff_side_item::do_height () const
+{
+ Interval i;
+ if (to_position_l_)
+ return to_position_l_->extent (Y_AXIS);
+ return i;
+}
+
+Interval
+G_staff_side_item::do_width () const
+{
+ Interval i;
+ if (to_position_l_)
+ return to_position_l_->extent (X_AXIS);
+ return i;
+}
+void
+G_staff_side_item::do_print () const
+{
+#ifndef NPRINT
+ if (to_position_l_)
+ DOUT << "positioning " << to_position_l_->name();
+
+ DOUT << "axis == " << axis_name_str (axis_)
+ << ", dir == " << to_str (dir_ );
+#endif
+}
*/
#include "g-text-item.hh"
-
+#include "debug.hh"
#include "molecule.hh"
#include "paper-def.hh"
#include "lookup.hh"
{
style_str_ = "roman";
}
+
+void
+G_text_item::do_print () const
+{
+ DOUT << "text= " << text_str_;
+}
+++ /dev/null
-
-/*
- general-script-def.cc -- implement General_script_def
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "molecule.hh"
-#include "general-script-def.hh"
-#include "debug.hh"
-
-
-Direction
-General_script_def::staff_dir() const
-{
- return DOWN;
-}
-
-Direction
-General_script_def::rel_stem_dir() const
-{
- return CENTER;
-}
-int
-General_script_def::priority_i() const
-{
- return 1000;
-}
-
-bool
-General_script_def::inside_b() const
-{
- return false;
-}
-
-bool
-General_script_def::equal_b (General_script_def const&g) const
-{
- return do_equal_b (&g);
-}
-
-bool
-General_script_def::do_equal_b (General_script_def const*) const
-{
- return true;
-}
-
-
-void
-General_script_def::print() const
-{
- DOUT << classname(this) << "{";
- do_print();
- DOUT << "}";
-}
-
-void
-General_script_def::do_print() const
-{
-}
-
-Molecule
-General_script_def::get_molecule (Paper_def*, Direction) const
-{
- Molecule s;
- return Molecule (s);
-}
-
-
-
-
-
--- /dev/null
+/*
+ g-script-column.hh -- declare G_script_column
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef G_SCRIPT_COLUMN_HH
+#define G_SCRIPT_COLUMN_HH
+
+#include "item.hh"
+
+class G_script_column : public Item
+{
+ /**
+ Array of objects that are placed by staffsides
+ */
+ Link_array<Item> staff_sided_item_l_arr_;
+public:
+ void add_staff_sided (Item*);
+protected:
+ virtual void do_pre_processing ();
+};
+
+
+#endif /* G_SCRIPT_COLUMN_HH */
+
+
void set_staff_side (G_staff_side_item*);
protected:
+virtual void do_print () const;
virtual void do_substitute_element_pointer (Score_element*o,
Score_element*n);
virtual void do_pre_processing ();
class G_staff_side_item : public Item, public Staff_symbol_referencer
{
void position_self ();
-public:
+public:
Score_element * to_position_l_;
Direction dir_;
Link_array<Score_element> support_l_arr_;
Axis axis_;
-
+ //junkme.
bool staff_support_b_;
G_staff_side_item ();
VIRTUAL_COPY_CONS(Score_element);
virtual Direction get_default_direction () const;
protected:
+ virtual Interval do_height () const;
+ virtual Interval do_width () const;
+ virtual void do_print () const;
virtual void do_add_processing ();
virtual void do_substitute_element_pointer (Score_element*,Score_element*);
virtual void do_pre_processing ();
G_text_item ();
VIRTUAL_COPY_CONS (Score_element);
protected:
+ virtual void do_print () const;
virtual Molecule *do_brew_molecule_p () const;
};
+++ /dev/null
-/*
- general-script-def.hh -- declare General_script_def
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef GENERAL_SCRIPT_DEF_HH
-#define GENERAL_SCRIPT_DEF_HH
-
-
-
-#include "lily-proto.hh"
-#include "input.hh"
-#include "virtual-methods.hh"
-#include "direction.hh"
-
-/**
- Definition of anything that is put aside staff/notes.
- */
-class General_script_def : public Input {
-public:
- VIRTUAL_COPY_CONS(General_script_def);
-
- virtual Direction staff_dir() const;
- void print() const;
- virtual Direction rel_stem_dir() const;
- virtual int priority_i() const;
- virtual bool inside_b() const;
- virtual Molecule get_molecule (Paper_def* p, Direction dir_) const;
- bool equal_b (General_script_def const&) const;
- virtual ~General_script_def() {}
-protected:
- virtual bool do_equal_b (General_script_def const *) const;
- virtual void do_print() const;
-};
-
-#endif // GENERAL_SCRIPT_DEF_HH
+++ /dev/null
-/*
- lookup.hh -- declare Lookup
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef LOOKUP_HH
-#define LOOKUP_HH
-
-#include "molecule.hh"
-#include "fproto.hh"
-#include "direction.hh"
-#include "box.hh"
-
-/** handy interface to symbol table
- */
-class Lookup
-{
-public:
- Lookup ();
- Lookup (Lookup const&);
-
- Molecule simple_bar (String s, Real w) const;
- Molecule accidental (int, bool cautionary) const;
- Molecule afm_find (String, bool warn=true) const;
- Molecule notehead (int, String) const;
-
- Molecule bar (String, Real height) const;
- Molecule beam (Real, Real, Real) const;
- Molecule clef (String) const;
- Molecule dashed_slur (Array<Offset> controls, Real thick, Real dash) const;
- Molecule dots () const;
- Molecule ledger_line (Interval) const;
- Molecule fill (Box b) const;
- Molecule filledbox (Box b) const;
- Molecule flag (int, Direction) const;
- Molecule hairpin (Real width, bool decresc, bool continued) const;
- Molecule plet (Real dy, Real dx, Direction dir) const;
- Molecule rest (int, bool outside, String) const;
- Molecule rule_symbol (Real height, Real width) const;
- Molecule script (String idx) const;
- Molecule stem (Real y1_pos, Real y2_pos) const;
- Molecule slur (Array<Offset> controls) const;
- Molecule streepje (int type) const;
- Molecule text (String style, String text) const;
- Molecule staff_brace (Real dy) const;
- Molecule staff_bracket (Real dy) const;
- Molecule volta (Real w, bool last_b) const;
- Molecule special_time_signature (String, int,int) const;
- Molecule time_signature (int n,int d) const;
-
- Paper_def * paper_l_;
-
- String font_name_;
- Adobe_font_metric * afm_l_;
-};
-
-#endif // LOOKUP_HH
public:
String articulation_str_;
protected:
+ virtual bool do_equal_b (Request*) const;
virtual void do_print () const;
VIRTUAL_COPY_CONS(Music);
};
public:
VIRTUAL_COPY_CONS(Music);
};
-
+/*
+ merge with Articulation_req?
+ */
class Absolute_dynamic_req : public Dynamic_req {
public:
String loudness_str_;
- String loudness_str () const;
Absolute_dynamic_req();
protected:
#define NOTE_COLUMN_HH
#include "item.hh"
-#include "script-column.hh"
+#include "axis-group-item.hh"
/** a struct for treating a group of noteheads (noteheads, stem
(chord) and scripts) as a single entity. */
-class Note_column : public Script_column {
+class Note_column : public Axis_group_item {
protected:
- virtual void do_pre_processing();
+
virtual void do_print () const;
virtual void do_substitute_element_pointer (Score_element*,Score_element*);
public:
JUNKME.v
*/
- Direction dir_;
+ Direction dir () const;
Stem* stem_l_;
-
Link_array<Note_head> head_l_arr_;
Link_array<Rest> rest_l_arr_;
// Interval width () const;
void translate_rests(int dy);
-
Note_column ();
void set_stem (Stem*);
void set_dotcol (Dot_column*);
void add_head (Rhythmic_head*);
bool rest_b () const;
- virtual void add_script (Script*s);
void sort ();
};
#include "parray.hh"
class Rhythmic_column_engraver :public Engraver {
- Link_array<Script> script_l_arr_;
Link_array<Rhythmic_head> rhead_l_arr_;
Stem * stem_l_;
Note_column *ncol_p_;
class Score_element : public virtual Graphical_element {
Protected_scm element_property_alist_;
Link_array<Score_element> dependency_arr_;
+ /**
+ The lookup, determined by the font size. Cache this value.
+ */
Lookup * lookup_l_;
public:
Score_element *original_l_;
bool linked_b () const;
VIRTUAL_COPY_CONS(Score_element);
- // ugh: no protection. Denk na, Vrij Veilig
+ /**
+ Recursively track all dependencies of this Score_element. The
+ status_i_ field is used as a mark-field. It is marked with
+ #busy# during execution of this function, and marked with #final#
+ when finished.
+
+ #funcptr# is the function to call to update this element.
+ */
void calculate_dependencies (int final, int busy, Score_element_method_pointer funcptr);
protected:
+++ /dev/null
-/*
- script-column.hh -- declare Script_column
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef SCRIPT_COLUMN_HH
-#define SCRIPT_COLUMN_HH
-
-#include "axis-group-item.hh"
-
-/** a struct for treating a group of noteheads (noteheads, stem
- (chord) and scripts) as a single entity. */
-class Script_column : public Axis_group_item {
-
-protected:
- virtual void do_print() const;
- virtual void do_substitute_element_pointer (Score_element*, Score_element*);
- virtual void do_pre_processing() ;
-public:
- Link_array<Script> script_l_arr_;
- Link_array<Item> support_l_arr_;
-
-
- virtual void add_script (Script *);
- void add_support (Item*);
- Script_column ();
-};
-
-#endif // SCRIPT_COLUMN_HH
+++ /dev/null
-/*
- script-def.hh -- part of GNU LilyPond
-
- (c) 1996--1999 Han-Wen Nienhuys
-*/
-
-#ifndef SCRIPTDEF_HH
-#define SCRIPTDEF_HH
-#include "string.hh"
-#include "general-script-def.hh"
-
-#error
-/** The characteristics of a certain kind of accent. It is not the
- accent itself. */
-class Script_def : public General_script_def {
- /// invert if below staff?
- bool invertsym_b_;
- String symidx_str_;
-
-
- /// on the other side of the stem?
- Direction rel_stem_dir_;
-
- /// below or above staff?
- Direction staff_dir_;
-
- /// how close to the note do we want to be?
- int priority_i_;
-
- /// follow the ball inside staff?
- bool inside_staff_b_;
-
-public:
- virtual Direction staff_dir() const;
- virtual Direction rel_stem_dir() const;
- virtual int priority_i() const;
- virtual bool inside_b() const;
- virtual Molecule get_molecule (Paper_def* p, Direction dir_) const;
-
-
- virtual bool do_equal_b (General_script_def const *) const;
- virtual void do_print() const;
- Script_def();
- void set_from_input (String, bool, int, int ,bool,int);
-protected:
- VIRTUAL_COPY_CONS(General_script_def);
-
-};
-
-
-
-
-
-#endif // SCRIPTDEF_HH
-
+++ /dev/null
-/*
- script.hh -- part of GNU LilyPond
-
- (c) 1996--1999 Han-Wen Nienhuys
-*/
-
-#ifndef SCRIPT_HH
-#define SCRIPT_HH
-
-#include "staff-side.hh"
-#include "item.hh"
-
-/**
- Accents that are put over a note-group.
- */
-class Script : public Item, public Staff_side {
- Stem *stem_l_;
-
-protected:
- Molecule *do_brew_molecule_p() const;
- virtual void do_substitute_element_pointer (Score_element*,Score_element*);
- virtual void do_print() const;
- virtual Interval symbol_height() const;
- virtual void do_pre_processing();
- virtual Interval do_width() const;
- VIRTUAL_COPY_CONS(Score_element);
-private:
-
- void set_default_dir();
-public:
- General_script_def *specs_p_;
-
- static int compare (Script *const&, Script *const&) ;
- Script();
- ~Script ();
- Script (Script const&);
-
- void set_stem (Stem*);
-};
-
-
-#endif // SCRIPT_HH
-
Drul_array<int> beams_i_drul_;
+ void set_direction (Direction d);
/// direction stem (that's me)
Direction dir_;
/// heads that the stem encompasses (positions)
Interval_t<int> head_positions() const;
- virtual ~Stem ();
+
protected:
virtual void do_substitute_element_pointer (Score_element*,Score_element*);
virtual void do_pre_processing();
mark_req_l_ = 0;
axis_ = Y_AXIS;
type_ = "mark";
+ visibility_lambda_ = gh_eval_str ("mark-visibility");
}
void
#include "bar.hh"
#include "lookup.hh"
#include "rest.hh"
-#include "script.hh"
-
#include "molecule.hh"
#include "misc.hh"
{
DOUT << articulation_str_;
}
+
+bool
+Articulation_req::do_equal_b (Request*r) const
+{
+ Articulation_req * a = dynamic_cast<Articulation_req*>(r);
+ return articulation_str_ == a->articulation_str_;
+}
return v;
}
-// junk me
-Simultaneous_music *
-My_lily_parser::get_note_element (Note_req *rq, Duration * duration_p)
-{
- Simultaneous_music*v = new Request_chord;
- v->set_spot (here_input ());
-
- v->add_music (rq);
-
- rq->duration_ = *duration_p;
- rq->set_spot (here_input ());
- delete duration_p ;
- return v;
-}
Input
*/
#include "dot-column.hh"
#include "note-column.hh"
-#include "script.hh"
+
#include "note-head.hh"
#include "stem.hh"
#include "rest.hh"
Note_column::Note_column()
{
+ set_axes (X_AXIS,X_AXIS);
stem_l_ = 0;
- dir_ =CENTER;
}
void
return iv;
}
-void
-Note_column::do_pre_processing()
+Direction
+Note_column::dir () const
{
- if (!dir_)
- {
- if (stem_l_)
- dir_ = stem_l_->dir_;
- else if (head_l_arr_.size ())
- {
- // assert (false); // looks obsolete?
- dir_ = sign (head_positions_interval().center ());
- }
- }
- Script_column::do_pre_processing();
+ if (stem_l_)
+ return stem_l_->dir_;
+ else if (head_l_arr_.size ())
+ return sign (head_positions_interval().center ());
+
+ assert (false);
+ return CENTER;
}
-
void
Note_column::set_stem (Stem * stem_l)
{
- add_support (stem_l);
stem_l_ = stem_l;
- /*
- don't add stem to support; mostly invisible for rest-columns (and possibly taken . .)
- */
- Score_element::add_dependency (stem_l);
- for (int i=0; i < script_l_arr_.size(); i++)
- script_l_arr_[i]->set_stem (stem_l);
+ add_dependency (stem_l);
+ add_element (stem_l);
}
-void
-Note_column::add_script (Script *script_l)
-{
- Script_column::add_script (script_l) ;
- if (stem_l_)
- script_l->set_stem (stem_l_);
-}
void
Note_column::do_substitute_element_pointer (Score_element*o, Score_element*n)
head_l_arr_.substitute (dynamic_cast<Note_head *> (o),
(n)? dynamic_cast<Note_head *> (n) : 0);
}
- Script_column::do_substitute_element_pointer (o,n);
+
if (dynamic_cast<Rest *> (o))
{
rest_l_arr_.substitute (dynamic_cast<Rest *> (o),
if (Rest*r=dynamic_cast<Rest *> (h))
{
rest_l_arr_.push (r);
- add_support (r);
}
if (Note_head *nh=dynamic_cast<Note_head *> (h))
{
head_l_arr_.push (nh);
- add_support (nh);
}
+ add_element (h);
}
/**
Musical_pitch * pitch;
Midi_def* midi;
Moment *moment;
- Note_req *notereq;
Notename_table *notenametab;
Paper_def *paper;
Real real;
Request * request;
Scalar *scalar;
- Simultaneous_music *chord;
+
String *string;
Tempo_req *tempo;
Translator* trans;
char c;
- const char *consstr;
int i;
int ii[10];
}
/* escaped */
%token E_EXCLAMATION E_SMALLER E_BIGGER E_CHAR
-%type <i> dots
+%type <i> dots exclamations questions
%token <i> DIGIT
%token <pitch> NOTENAME_PITCH
%token <pitch> TONICNAME_PITCH
%type <request> gen_text_def
%type <pitch> explicit_musical_pitch steno_musical_pitch musical_pitch absolute_musical_pitch
%type <pitch> steno_tonic_pitch
-%type <notereq> steno_notepitch
+
%type <pitch_arr> pitch_list
%type <music> chord notemode_chord
%type <pitch_arr> chord_additions chord_subtractions chord_notes
;
embedded_scm:
- SCMFILE STRING ';' {
+ SCMFILE STRING semicolon {
read_lily_scm_file (*$2);
delete $2;
}
- | SCM_T STRING ';' {
+ | SCM_T STRING semicolon {
gh_eval_str ($2->ch_l ());
delete $2;
};
check_version:
- VERSION STRING ';' {
+ VERSION STRING semicolon {
Mudela_version ver (*$2);
if (!((ver >= oldest_version) && (ver <= version))) {
if (THIS->ignore_version_b_) {
$$ = new Scope;
THIS->lexer_p_-> scope_l_arr_.push ($$);
}
- | mudela_header_body assignment ';' {
+ | mudela_header_body assignment semicolon {
}
;
$$ = $1->access_content_Translator (true);
$$-> set_spot (THIS->here_input ());
}
- | TYPE STRING ';' {
+ | TYPE STRING semicolon {
Translator* t = get_translator_l (*$2);
Translator_group * tg = dynamic_cast<Translator_group*> (t);
$$ = t;
delete $2;
}
- | translator_spec_body STRING '=' identifier_init ';' {
+ | translator_spec_body STRING '=' identifier_init semicolon {
Identifier* id = $4;
String_identifier *s = dynamic_cast<String_identifier*> (id);
Real_identifier *r= dynamic_cast<Real_identifier*>(id);
Translator_group * tr = dynamic_cast<Translator_group*>($$);
tr->set_property (*$2, str);
}
- | translator_spec_body NAME STRING ';' {
+ | translator_spec_body NAME STRING semicolon {
$$->type_str_ = *$3;
delete $3;
}
- | translator_spec_body CONSISTS STRING ';' {
+ | translator_spec_body CONSISTS STRING semicolon {
dynamic_cast<Translator_group*> ($$)-> set_element (*$3, true);
delete $3;
}
- | translator_spec_body ACCEPTS STRING ';' {
+ | translator_spec_body ACCEPTS STRING semicolon {
dynamic_cast<Translator_group*> ($$)-> set_acceptor (*$3, true);
delete $3;
}
- | translator_spec_body REMOVE STRING ';' {
+ | translator_spec_body REMOVE STRING semicolon {
dynamic_cast<Translator_group*> ($$)-> set_element (*$3, false);
delete $3;
}
delete $5;
$$->set_lookup ($2, l);
}
- | paper_def_body assignment ';' {
+ | paper_def_body assignment semicolon {
}
| paper_def_body translator_spec_block {
$$->assign_translator ($2);
}
- | paper_def_body SHAPE '=' shape_array ';' {
+ | paper_def_body SHAPE '=' shape_array semicolon {
$$->shape_int_a_ = *$4;
delete $4;
}
| midi_body translator_spec_block {
$$-> assign_translator ($2);
}
- | midi_body tempo_request ';' {
+ | midi_body tempo_request semicolon {
$$->set_tempo ($2->dur_.length_mom (), $2->metronome_i_);
delete $2;
}
command_req:
abbrev_command_req
- | verbose_command_req ';' { $$ = $1; }
+ | verbose_command_req semicolon { $$ = $1; }
;
abbrev_command_req:
m->one_beat_i_=$4;
$$ = m;
}
- | PENALTY '=' int {
+ | PENALTY int {
Break_req * b = new Break_req;
- b->penalty_i_ = $3;
+ b->penalty_i_ = $2;
b-> set_spot (THIS->here_input ());
$$ = b;
}
$$ = key_p;
delete $2;
}
- | KEYSIGNATURE pitch_list {
+ | KEYSIGNATURE pitch_list {
Key_change_req *key_p= new Key_change_req;
key_p->pitch_arr_ = *$2;
key_p->ordinary_key_b_ = false;
$$ = key_p;
delete $2;
}
- | GROUPING intastint_list {
+ | GROUPING intastint_list {
Measure_grouping_req * mr_p = new Measure_grouping_req;
for (int i=0; i < $2->size();)
{
| explicit_musical_pitch
;
-steno_notepitch:
- musical_pitch {
- $$ = new Note_req;
-
- $$->pitch_ = *$1;
- delete $1;
- }
- | steno_notepitch '!' {
- $$->forceacc_b_ = ! $$->forceacc_b_;
- }
- | steno_notepitch '?' {
- $$->forceacc_b_ = ! $$->forceacc_b_;
- $$->cautionary_b_ = ! $$->cautionary_b_;
- }
- ;
-
-
explicit_duration:
DURATION '{' int_list '}' {
$$ = new Duration;
}
;
-dots:
- '.' { $$ = 1; }
- | dots '.' { $$ ++; }
- ;
-
entered_notemode_duration:
- /* */ {
+ dots {
$$ = new Duration (THIS->default_duration_);
- }
- | dots {
- $$ = new Duration (THIS->default_duration_);
- $$->dots_i_ = $1;
+ if ($1)
+ $$->dots_i_ = $1;
}
| steno_duration {
THIS->set_last_duration ($1);
;
-
simple_element:
- steno_notepitch notemode_duration {
+ musical_pitch exclamations questions notemode_duration {
if (!THIS->lexer_p_->note_state_b ())
THIS->parser_error (_ ("have to be in Note mode for notes"));
- $1->duration_ = *$2;
- $$ = THIS->get_note_element ($1, $2);
+
+
+ Note_req *n = new Note_req;
+
+ n->pitch_ = *$1;
+ delete $1;
+ n->duration_ = *$4;
+ delete $4;
+ n->forceacc_b_ = $2 % 2;
+ n->cautionary_b_ = $3 % 2;
+
+ Simultaneous_music*v = new Request_chord;
+ v->set_spot (THIS->here_input ());
+ n->set_spot (THIS->here_input ());
+
+ v->add_music (n);
+
+ $$ = v;
}
| RESTNAME notemode_duration {
$$ = THIS->get_rest_element (*$1, $2);
+dots:
+ { $$ = 0; }
+ | dots '.' { $$ ++; }
+ ;
+
+
+
+exclamations:
+ { $$ = 0; }
+ | exclamations '!' { $$ ++; }
+ ;
+
+questions:
+ { $$ = 0; }
+ | questions '?' { $$ ++; }
+ ;
+semicolon:
+ ';'
+ ;
%%
void
Request::do_equal_b (Request*) const
{
return true;
+
}
#include "collision.hh"
#include "paper-def.hh"
-
-
-
void
Rest_collision::add_column (Note_column *nc_l)
{
{
int dy = rest_l_arr_.size() > 2 ? 6 : 4;
- rest_l_arr_[0]->translate_rests (rest_l_arr_[0]->dir_ *dy);
+ rest_l_arr_[0]->translate_rests (rest_l_arr_[0]->dir () *dy);
// top is last element...
- rest_l_arr_.top()->translate_rests (rest_l_arr_.top ()->dir_* dy);
+ rest_l_arr_.top()->translate_rests (rest_l_arr_.top ()->dir ()* dy);
}
// meisjes met jongetjes
else
{
// int dir_i = - ncol_l_arr_[0]->dir_;
- Direction dir = rest_l_arr_[0]->dir_;
+ Direction dir = rest_l_arr_[0]->dir ();
// minimum move
int minpos = 4;
#include "note-head.hh"
#include "stem.hh"
#include "note-column.hh"
-#include "script.hh"
#include "dot-column.hh"
#include "musical-request.hh"
ncol_p_->set_stem (stem_l_);
stem_l_ = 0;
}
-
- for (int i=0; i < script_l_arr_.size(); i++)
- {
- if (ncol_p_)
- ncol_p_->add_script (script_l_arr_[i]);
- }
-
- script_l_arr_.clear();
}
}
Item * item = dynamic_cast <Item *> (i.elem_l_);
if (!item)
return;
- if (Script *s=dynamic_cast<Script *> (item))
- {
- if (i.req_l_)
- {
- script_l_arr_.push (s);
- }
- }
- else if (Stem*s=dynamic_cast<Stem *> (item))
+ if (Stem*s=dynamic_cast<Stem *> (item))
{
stem_l_ = s;
}
{
ncol_p_->set_elt_property (horizontal_shift_scm_sym, SCM_BOOL_T);
}
-
- if (! ncol_p_->dir_)
- ncol_p_->dir_ =(Direction) int(get_property ("ydirection", 0));
typeset_element (ncol_p_);
ncol_p_ =0;
void
Rhythmic_column_engraver::do_post_move_processing()
{
- script_l_arr_.clear();
dotcol_l_ =0;
stem_l_ =0;
}
+++ /dev/null
-/*
- script-column.cc -- implement Script_column
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "script-column.hh"
-#include "debug.hh"
-#include "script.hh"
-#include "note-head.hh"
-#include "stem.hh"
-#include "general-script-def.hh"
-
-void
-Script_column::add_script (Script*s_l)
-{
- script_l_arr_.push (s_l);
- add_dependency (s_l);
- add_element (s_l);
-}
-
-
-void
-Script_column::do_print() const
-{
-#ifndef NPRINT
- DOUT << "scripts: " << script_l_arr_.size() << '\n';
-#endif
-}
-
-static int
-idx (bool inside, int dir)
-{
- int j = (dir+1);
- if (!inside)
- j ++;
- return j;
-}
-
-
-Script_column::Script_column ()
-{
- set_axes (X_AXIS,X_AXIS);
-}
-
-void
-Script_column::do_pre_processing()
-{
- if (!script_l_arr_.size())
- return;
-
- /* up+inside, up+outside, down+inside, down+outside */
- Array<Script*> placed_l_arr_a[4];
- for (int i=0; i < script_l_arr_.size(); i++)
- {
- Script*s_l = script_l_arr_[i];
- placed_l_arr_a[idx (s_l->specs_p_->inside_b(),
- s_l->dir_) ].push (s_l);
- }
-
- for (int j =0; j <4; j++)
- {
- placed_l_arr_a[j].sort (Script::compare);
- }
-
-
- for (int j =0; j < 4; j++)
- {
- if (placed_l_arr_a[j].size())
- for (int i=0; i < support_l_arr_.size(); i++)
- placed_l_arr_a[j][0]->add_support (support_l_arr_[i]);
- }
-
- Item * support_l=0;
- int j = 0;
- for (; j < 2; j++)
- {
- for (int i=0; i < placed_l_arr_a[j].size(); i++)
- {
- if (support_l)
- placed_l_arr_a[j][i]->add_support (support_l);
- support_l = placed_l_arr_a[j][i];
- }
- }
- support_l = 0;
- for (; j < 4; j++)
- {
- for (int i=0; i < placed_l_arr_a[j].size(); i++)
- {
- if (support_l)
- placed_l_arr_a[j][i]->add_support (support_l);
- support_l = placed_l_arr_a[j][i];
- }
- }
-}
-
-
-void
-Script_column::add_support (Item*i_l)
-{
- support_l_arr_.push (i_l);
- add_dependency (i_l);
- add_element (i_l);
-}
-
-void
-Script_column::do_substitute_element_pointer (Score_element*o,Score_element*n)
-{
- if (dynamic_cast <Item *> (o))
- {
- script_l_arr_.substitute (dynamic_cast<Script *> (o),
- dynamic_cast <Script *> (n));
- support_l_arr_.substitute (dynamic_cast <Item *> (o),
- dynamic_cast <Item *> (n));
- }
-}
-
+++ /dev/null
-/*
- script.cc -- implement Script
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include "general-script-def.hh"
-#include "musical-request.hh"
-#include "paper-def.hh"
-#include "script.hh"
-#include "stem.hh"
-#include "molecule.hh"
-#include "lookup.hh"
-
-void
-Script::do_print () const
-{
-#ifndef NPRINT
- specs_p_->print ();
-#endif
-}
-
-void
-Script::do_substitute_element_pointer (Score_element*o,Score_element*n)
-{
- Staff_side::do_substitute_element_pointer (o,n);
- if (o == stem_l_)
- {
- stem_l_ = dynamic_cast<Stem *> (n);
- }
-}
-
-void
-Script::set_stem (Stem*st_l)
-{
- stem_l_ = st_l;
- add_support (st_l);
-}
-
-
-Script::Script ()
-{
- axis_ = Y_AXIS;
- specs_p_ = 0;
- stem_l_ = 0;
- dir_ = CENTER;
-}
-
-void
-Script::set_default_dir ()
-{
- int s_i=specs_p_->rel_stem_dir ();
- if (s_i)
- {
- if (stem_l_)
- dir_ = Direction (stem_l_->dir_ * s_i);
- else
- {
- specs_p_->warning (_ ("script needs stem direction"));
- dir_ = DOWN;
- }
- }
- else
- {
- dir_ =specs_p_->staff_dir ();
- }
- assert (dir_);
-}
-
-
-Interval
-Script::do_width () const
-{
- return specs_p_->get_molecule (paper_l (), dir_).extent ().x ();
-}
-
-void
-Script::do_pre_processing ()
-{
- Staff_side::do_pre_processing ();
- if (axis_ == Y_AXIS && !dir_)
- set_default_dir ();
-}
-
-Interval
-Script::symbol_height () const
-{
- return specs_p_->get_molecule (paper_l (), dir_).extent ().y ();
-}
-
-
-Molecule*
-Script::do_brew_molecule_p () const
-{
- Real dx =0.;
-
- Molecule*mol_p = new Molecule (specs_p_->get_molecule (paper_l (), dir_));
- /*
- ugh, staccato dots are not centred between stafflines (how?)?
- */
- Real correct =0.0;
- if (axis_ == Y_AXIS){
- dx = paper_l ()->note_width ()/2;
- correct = - (Real)dir_ * 2.0 * paper_l ()->rule_thickness ();
- mol_p->translate_axis (dx, X_AXIS); // FIXME! ugh
- }
-
- mol_p->translate_axis (coordinate_offset_f_ + correct, axis_);
-
- return mol_p;
-}
-
-
-
-
-int
-Script::compare (Script *const&l1, Script *const&l2)
-{
- return l1->specs_p_->priority_i() - l2->specs_p_->priority_i ();
-}
-
-Script::~Script ()
-{
- delete specs_p_;
-}
-
-Script::Script (Script const&s)
- : Item (s), Staff_side(s)
-{
- specs_p_ = s.specs_p_ ? s.specs_p_->clone (): 0;
- stem_l_ =s.stem_l_;
-}
-
dir_ = DOWN;
for (int i=0; i < encompass_arr_.size (); i ++)
{
- if (encompass_arr_[i]->dir_ < 0)
+ if (encompass_arr_[i]->dir () < 0)
{
dir_ = UP;
break;
#include "beam.hh"
#include "rest.hh"
-Stem::~Stem ()
+void
+Stem::set_direction (Direction d)
{
+ if (!dir_)
+ warning ("Stem direction set already!");
+
+ dir_ = d;
+
+ /*
+ todo
+ */
}
Stem::Stem ()
void
Super_element::pre_processing ()
{
- calculate_dependencies (PRECALCING, PRECALCED, &Score_element::do_pre_processing);
+ calculate_dependencies (PRECALCED, PRECALCING, &Score_element::do_pre_processing);
}
void
Super_element::space_processing ()
{
- calculate_dependencies (SPACING, SPACED, &Score_element::do_space_processing);
+ calculate_dependencies (SPACED, SPACING, &Score_element::do_space_processing);
}
/* for break processing, use only one status, because copies have to
void
Super_element::post_processing ()
{
- calculate_dependencies (POSTCALCING, POSTCALCED, &Score_element::do_post_processing);
+ calculate_dependencies (POSTCALCED, POSTCALCING, &Score_element::do_post_processing);
}
void
Super_element::output_all ()
{
- calculate_dependencies (BREWING, BREWED, &Score_element::output_processing);
+ calculate_dependencies (BREWED, BREWING, &Score_element::output_processing);
}
G_staff_side_item *ss = new G_staff_side_item;
ss->set_victim (text);
+ ss->set_elt_property (script_priority_scm_sym,
+ gh_int2scm (200));
+
ss->dir_ = r->dir_;
text->text_str_ = r->text_str_;
dir_ = UP;
for (int i=0; i < column_arr_.size (); i ++)
{
- if (column_arr_[i]->dir_ < 0)
+ if (column_arr_[i]->dir () < 0)
{
dir_ = DOWN;
break;
center=0
-break = { \penalty = 10000; }
-nobreak = { \penalty = -10000; }
+break = \penalty 10000;
+nobreak = \penalty -10000;
major = 0
minor = 3
% ugh. Order matters here.
\consists "Text_engraver";
-% \consists "Script_engraver";
\consists "G_script_engraver";
+ \consists "G_script_column_engraver";
\consists "Rhythmic_column_engraver";
\consists "Font_size_engraver";
\consists "Slur_engraver";
Begin3
Titel: LilyPond
-Versie: 1.1.37
-Inschrijf datum: 29MAR99
+Versie: 1.1.38
+Inschrijf datum: 06APR99
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.37.tar.gz
+ 770k lilypond-1.1.38.tar.gz
Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.1.37.tar.gz
+ 770k lilypond-1.1.38.tar.gz
Copi-eer voorwaarden: GPL
End
Begin3
Title: LilyPond
-Version: 1.1.37
-Entered-date: 29MAR99
+Version: 1.1.38
+Entered-date: 06APR99
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.37.tar.gz
+ 770k lilypond-1.1.38.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.1.37.tar.gz
+ 770k lilypond-1.1.38.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.1.37
+Version: 1.1.38
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.37.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.38.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>
%%%% Compare to the definition in init/engraver.ly.
% \remove "Beam_engraver";
+% \remove "Auto_beam_engraver";
}
-
}
\midi{
\tempo 4=80;
(define (spanbar_non_postbreak_visibility d) (if (= d -1) '(#t . #t) '(#f . #f)))
(define (non_postbreak_visibility d) (if (= d 1) '(#t . #t) '(#f . #f)))
+(define (non_prebreak_visibility d) (if (= d -1) '(#t . #t) '(#f . #f)))
;; Score_span_bars are only visible at start of line
;; i.e. if break_dir == RIGHT == 1
(define Span_bar_engraver_visibility non_postbreak_visibility)
-
+(define mark-visibility non_prebreak_visibility)
(define Span_score_bar_engraver_visibility postbreak_only_visibility)
(define Piano_bar_engraver_visibility postbreak_only_visibility)
(define Staff_group_bar_engraver_visibility postbreak_only_visibility)
-;; (name . '((downindexstring upindexstring)
+;; (name . '((downindexstring . upindexstring)
;; follow-into-staff :: bool
;; dir-relative-to-stem :: int
;; force-dir :: int
("portato" . (("dportato" . "uportato") #f -1 0 0))
("fermata" . (("dfermata" . "ufermata") #f 1 0 0))
("stopped" . (("stopped" . "stopped") #f 0 1 0))
- ("staccato" . (("staccato" . "staccato") #t -1 0 0))
- ("tenuto" . (("tenuto" "tenuto") 1 -1 0 0))
+ ("staccato" . (("staccato" . "staccato") #t -1 0 -100))
+ ("tenuto" . (("tenuto" . "tenuto") 1 -1 0 0))
("upbow" . (("upbow" . "upbow") #f 0 1 0))
("downbow" . (("downbow" . "downbow") #f 0 1 0))
("lheel" . (("upedalheel" . "upedalheel") #f 0 -1 0))
open file and set private class variable __fd. The search
sequence is: current directory followed by the directories
found in include property list. Each directory is searched
- for file, file.ly, and file.fly.
+ for file, file.ly, file.sly and file.fly.
input: file filename
output: void
for i in [''] + Props.get('include')[0:]:
ifile = os.path.join(i,file)
- for j in ['','.ly','.fly']:
+ for j in ['','.ly','.fly', 'sly']:
jfile = ifile+j
try:
this.__fd = open( jfile, 'r' )