From: fred <fred> Date: Sun, 24 Mar 2002 20:12:52 +0000 (+0000) Subject: lilypond-1.0.1 X-Git-Tag: release/1.5.59~3034 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=bdbe50cf0257a63aa2856a3fda3e6c49bc8e3cd3;p=lilypond.git lilypond-1.0.1 --- diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index bd6873d0d2..8ac916b547 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> + (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ #include "proto.hh" @@ -12,13 +12,13 @@ #include "engraver.hh" #include "debug.hh" #include "p-score.hh" -#include "score-elem.hh" +#include "score-element.hh" IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Engraver, Translator_group); ADD_THIS_TRANSLATOR(Engraver_group_engraver); void -Engraver_group_engraver::announce_element (Score_elem_info info) +Engraver_group_engraver::announce_element (Score_element_info info) { announce_info_arr_.push (info); Engraver::announce_element (info); @@ -46,7 +46,7 @@ Engraver_group_engraver::do_announces() { for (int j =0; j < announce_info_arr_.size(); j++) { - Score_elem_info info = announce_info_arr_[j]; + Score_element_info info = announce_info_arr_[j]; if (!info.req_l_) info.req_l_ = &dummy_req; diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc new file mode 100644 index 0000000000..6689e91eac --- /dev/null +++ b/lily/font-size-engraver.cc @@ -0,0 +1,36 @@ +/* + font-size-grav.cc -- implement Font_size_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> + + */ + +#include "font-size-engraver.hh" +#include "score-element.hh" + +Font_size_engraver::Font_size_engraver () +{ + size_i_ = 0; +} + +void +Font_size_engraver::do_process_requests () +{ + Scalar s (get_property ("fontsize")); + + if (s.length_i () && s.isnum_b ()) + { + size_i_ = int (s); + } +} + +void +Font_size_engraver::acknowledge_element (Score_element_info e) +{ + e.elem_l_->size_i_ = size_i_; +} + +ADD_THIS_TRANSLATOR (Font_size_engraver); +IMPLEMENT_IS_TYPE_B1(Font_size_engraver,Engraver); diff --git a/lily/horizontal-group-elem.cc b/lily/horizontal-group-elem.cc index 85ca745509..804dd6d9b3 100644 --- a/lily/horizontal-group-elem.cc +++ b/lily/horizontal-group-elem.cc @@ -1,5 +1,4 @@ - -#include "horizontal-group-elem.hh" +#include "horizontal-group-element.hh" #include "interval.hh" #include "item.hh" #include "debug.hh" @@ -7,28 +6,14 @@ IMPLEMENT_IS_TYPE_B1(Horizontal_group_element, Axis_group_element); -void -Horizontal_group_element::remove_all() -{ - axis_admin_.remove_all (X_AXIS,X_AXIS); -} - -void -Horizontal_group_element::add_element (Graphical_element*e) +Horizontal_group_element::Horizontal_group_element () + : Axis_group_element (X_AXIS,X_AXIS) { - axis_admin_.add_element (e,this, X_AXIS,X_AXIS); } -void -Horizontal_group_element::remove_element (Graphical_element*e) -{ - axis_admin_.remove_element (e,X_AXIS,X_AXIS); -} - - Interval Horizontal_group_element::do_width() const { - return axis_admin_.extent (X_AXIS); + return Graphical_axis_group::extent (X_AXIS); } diff --git a/lily/horizontal-vertical-group-elem.cc b/lily/horizontal-vertical-group-elem.cc index 6b5ddd79b6..9021d88da6 100644 --- a/lily/horizontal-vertical-group-elem.cc +++ b/lily/horizontal-vertical-group-elem.cc @@ -1,24 +1,13 @@ -#include "horizontal-vertical-group-elem.hh" +#include "horizontal-vertical-group-element.hh" #include "interval.hh" #include "item.hh" #include "debug.hh" -void -Horizontal_vertical_group_element::remove_all() +Horizontal_vertical_group_element::Horizontal_vertical_group_element() { - axis_admin_.remove_all (X_AXIS,Y_AXIS); -} -void -Horizontal_vertical_group_element::add_element (Graphical_element *e) -{ - axis_admin_.add_element (e, this, X_AXIS, Y_AXIS); -} - -void -Horizontal_vertical_group_element::remove_element (Graphical_element*e) -{ - axis_admin_.remove_element (e, X_AXIS, Y_AXIS); + axis1_ = X_AXIS; + axis2_ = Y_AXIS; } diff --git a/lily/include/align-element.hh b/lily/include/align-element.hh new file mode 100644 index 0000000000..0b18f18f54 --- /dev/null +++ b/lily/include/align-element.hh @@ -0,0 +1,58 @@ +/* + align-item.hh -- declare Align_elem + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> +*/ + + +#ifndef VERTICAL_ALIGN_ITEM_HH +#define VERTICAL_ALIGN_ITEM_HH + +#include "score-element.hh" +#include "interval.hh" +#include "direction.hh" +#include "axes.hh" + +/** + Order elements top to bottom. + + TODO: merge with Horizontal_align_item + */ +class Align_element : virtual public Score_element { + Link_array<Score_element> elem_l_arr_; + Array<int> priority_i_arr_; + void sort_elements (); +public: + Interval threshold_interval_ ; + + /** + Should high priorities be first or last? + */ + + Direction stacking_dir_; + + /** + Which side to align? + -1: left side, 0: centered (around center_l_ if not nil), 1: right side + */ + + Direction align_dir_; + + Axis axis_; + Score_element * center_l_; + + Align_element (); + void add_element (Score_element*); + void add_element_priority (Score_element*, int); + bool contains_b (Score_element const*) const; + DECLARE_MY_RUNTIME_TYPEINFO; +protected: + virtual void do_print() const; + virtual void do_substitute_dependency (Score_element*,Score_element*); + virtual void do_post_processing() ; + virtual void do_pre_processing (); + virtual void do_side_processing (); +}; +#endif // VERTICAL_ALIGN_ITEM_HH diff --git a/lily/include/axis-group-element.hh b/lily/include/axis-group-element.hh index f3bfb3f702..f1389deebd 100644 --- a/lily/include/axis-group-element.hh +++ b/lily/include/axis-group-element.hh @@ -3,34 +3,35 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> + (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ #ifndef AXIS_GROUP_ELEMENT_HH #define AXIS_GROUP_ELEMENT_HH -#include "score-elem.hh" -#include "axis-group-administration.hh" +#include "score-element.hh" +#include "graphical-axis-group.hh" + /** Treat a group of elements a unity in either or both axis sense . This is a wrapper around Axis_group_administration */ -class Axis_group_element : public virtual Score_elem { +class Axis_group_element : public virtual Score_element, + public Graphical_axis_group { protected: - Axis_group_administration axis_admin_; virtual void do_print() const; - virtual Link_array<Score_elem> get_extra_dependencies() const; + virtual Link_array<Score_element> get_extra_dependencies() const; virtual void do_unlink(); virtual void do_junk_links(); + virtual Axis_group_element * access_Axis_group_element (); public: - virtual Link_array<Score_elem> elem_l_arr() const; - Axis_group_element(); - virtual void remove_all()=0; - virtual void add_element (Graphical_element*)=0; - virtual void remove_element (Graphical_element*)=0; - virtual bool contains_b (Graphical_element const *) const; + virtual Link_array<Score_element> elem_l_arr() const; + Axis_group_element(Axis,Axis); + Axis_group_element(); + virtual Link_array<Score_element> get_children (); + DECLARE_MY_RUNTIME_TYPEINFO; }; diff --git a/lily/include/bar.hh b/lily/include/bar.hh index df39cea389..c00677cc0f 100644 --- a/lily/include/bar.hh +++ b/lily/include/bar.hh @@ -1,7 +1,7 @@ /* bar.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef BAR_HH @@ -17,13 +17,15 @@ public: String type_str_; DECLARE_MY_RUNTIME_TYPEINFO; - SCORE_ELEM_CLONE(Bar); - Bar(); -private: - void do_print() const; + SCORE_ELEMENT_CLONE (Bar); + Bar (); + protected: - virtual void do_pre_processing(); - Molecule*brew_molecule_p() const; + virtual void do_pre_processing (); + Molecule* brew_molecule_p () const; + +private: + void do_print () const; }; #endif // BAR_HH diff --git a/lily/include/beam.hh b/lily/include/beam.hh index e4bad88c1c..f6f59c8c9e 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -1,7 +1,7 @@ /* beam.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef BEAM_HH @@ -21,6 +21,7 @@ public: especially at small slopes. */ enum Quantisation { NONE, NORMAL, TRADITIONAL, TEST }; + enum Dir_algorithm { /* DOWN=-1, UP=1, */ MAJORITY=2, MEAN, MEDIAN }; Link_array<Stem> stems_; /// the slope of the beam in posns / point (dimension) @@ -40,11 +41,11 @@ public: DECLARE_MY_RUNTIME_TYPEINFO; Beam(); - void add (Stem*); + void add_stem (Stem*); void set_grouping (Rhythmic_grouping def, Rhythmic_grouping current); void set_stemlens (); - SCORE_ELEM_CLONE (Beam); + SCORE_ELEMENT_CLONE (Beam); protected: virtual Interval do_width () const; @@ -52,7 +53,7 @@ protected: void set_default_dir (); virtual void do_pre_processing (); virtual void do_post_processing (); - virtual void do_substitute_dependent (Score_elem*, Score_elem*); + virtual void do_substitute_dependent (Score_element*, Score_element*); virtual void do_print() const; diff --git a/lily/include/clef-item.hh b/lily/include/clef-item.hh index 3b82f9d426..54c5bf1a0c 100644 --- a/lily/include/clef-item.hh +++ b/lily/include/clef-item.hh @@ -1,7 +1,7 @@ /* clef-item.hh -- declare Clef_item - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef CLEFITEM_HH @@ -9,37 +9,36 @@ #include "item.hh" #include "text-def.hh" #include "direction.hh" +#include "pointer.hh" /** Set a clef in a staff. */ class Clef_item : public Item { protected: - virtual void do_pre_processing(); - Molecule* brew_molecule_p() const; + virtual void do_pre_processing(); + virtual Molecule* brew_molecule_p() const; public: - String symbol_; - int y_position_i_; + String symbol_; + int y_position_i_; - /// is this a change clef (smaller size)? - bool change_b_; + /// is this a change clef (smaller size)? + bool change_b_; - /// set because of existence of a bar - bool default_b_; - - /// should we print an octave symbol (8), and where? (up=1, down=1)? - Direction octave_dir_; - - /// text def to put above/below clef (ugh: should be const) - Text_def * octave_marker_td_p_; - - /* *************** */ - DECLARE_MY_RUNTIME_TYPEINFO; - SCORE_ELEM_CLONE(Clef_item); - Clef_item(); - void read (Clef_engraver const&); - void read (String); + /// set because of existence of a bar + bool default_b_; + + /// should we print an octave symbol (8), and where? (up=1, down=-1)? + Direction octave_dir_; + + /// text def to put above/below clef? + P<Text_def> octave_marker_td_p_; + + DECLARE_MY_RUNTIME_TYPEINFO; + SCORE_ELEMENT_CLONE(Clef_item); + Clef_item(); + void read (Clef_engraver const&); }; #endif // CLEFITEM_HH diff --git a/lily/include/directional-spanner.hh b/lily/include/directional-spanner.hh index 7854a348ce..99594b12ce 100644 --- a/lily/include/directional-spanner.hh +++ b/lily/include/directional-spanner.hh @@ -1,7 +1,7 @@ /* directional-spanner.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef DIRECTIONALSPANNER_HH diff --git a/lily/include/elem-group.hh b/lily/include/elem-group.hh index 6ad1d1d243..d1092d98bd 100644 --- a/lily/include/elem-group.hh +++ b/lily/include/elem-group.hh @@ -3,14 +3,14 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> + (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ #ifndef ELEM_GROUP_HH #define ELEM_GROUP_HH -#include "score-elem.hh" +#include "score-element.hh" #include "axis-group-element.hh" diff --git a/lily/include/engraver-group.hh b/lily/include/engraver-group.hh index 125021cdf6..636842ce77 100644 --- a/lily/include/engraver-group.hh +++ b/lily/include/engraver-group.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> + (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ @@ -13,7 +13,7 @@ #include "lily-proto.hh" #include "parray.hh" #include "plist.hh" -#include "score-elem-info.hh" +#include "score-element-info.hh" #include "engraver.hh" #include "translator-group.hh" @@ -26,7 +26,7 @@ class Engraver_group_engraver : public Engraver, public virtual Translator_group { protected: - Array<Score_elem_info> announce_info_arr_; + Array<Score_element_info> announce_info_arr_; public: TRANSLATOR_CLONE(Engraver_group_engraver); Engraver_group_engraver(); @@ -36,7 +36,7 @@ public: virtual Staff_info get_staff_info() const; virtual void do_announces(); - virtual void announce_element (Score_elem_info); + virtual void announce_element (Score_element_info); }; #endif // ENGRAVERGROUP_HH diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh index f6b4f6bafa..e6e5b7fe76 100644 --- a/lily/include/engraver.hh +++ b/lily/include/engraver.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> + (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ @@ -11,15 +11,15 @@ #define ENGRAVER_HH #include "lily-proto.hh" -#include "varray.hh" +#include "array.hh" #include "request.hh" -#include "score-elem-info.hh" +#include "score-element-info.hh" #include "staff-info.hh" #include "translator.hh" /** - a struct which processes requests, and creates the #Score_elem#s. + a struct which processes requests, and creates the #Score_element#s. It may use derived classes. Hungarian postfix: grav */ @@ -35,7 +35,7 @@ protected: /** Invoke walker method to typeset element. Default: pass on to daddy. */ - virtual void typeset_element (Score_elem*elem_p); + virtual void typeset_element (Score_element*elem_p); /** take note of item/spanner @@ -43,7 +43,7 @@ protected: Default: ignore the info */ - virtual void acknowledge_element (Score_elem_info) {} + virtual void acknowledge_element (Score_element_info) {} /** Do things with stuff found in acknowledge_element. Ugh. Should be looped with acknowledge_element. @@ -53,7 +53,7 @@ protected: /** Announce element. Default: pass on to daddy. Utility */ - virtual void announce_element (Score_elem_info); + virtual void announce_element (Score_element_info); /** Get information on the staff. Default: ask daddy. diff --git a/lily/include/grouping.hh b/lily/include/grouping.hh index d88ed2876b..b0bff2363d 100644 --- a/lily/include/grouping.hh +++ b/lily/include/grouping.hh @@ -1,14 +1,14 @@ /* grouping.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef GROUPING_HH #define GROUPING_HH #include "minterval.hh" -#include "varray.hh" +#include "array.hh" /** data structure which represents rhythmic units this is a tree. It groupes notes according to rules diff --git a/lily/include/horizontal-align-item.hh b/lily/include/horizontal-align-item.hh index da0794d760..20ef3a4336 100644 --- a/lily/include/horizontal-align-item.hh +++ b/lily/include/horizontal-align-item.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> + (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ @@ -11,38 +11,20 @@ #define HORIZONTAL_ALIGN_ITEM_HH #include "item.hh" +#include "align-element.hh" /** Order elems left to right. - - TODO: insert (order, elem) */ -class Horizontal_align_item : public Item { -protected: - Link_array<Item> item_l_arr_; - Array<int> priority_i_arr_; - +class Horizontal_align_item : public Item , public Align_element { public: - Item * center_l_; - /** - Which side to align? - -1: left side, 0: centered (around center_l_ if not nil), 1: right side - */ - int align_i_; - - DECLARE_MY_RUNTIME_TYPEINFO; - SCORE_ELEM_CLONE(Horizontal_align_item); - void add (Item*, int p); - Horizontal_align_item(); -protected: - - virtual void do_substitute_dependency (Score_elem * , Score_elem *); - /// do calculations before determining horizontal spacing - virtual void do_pre_processing(); - virtual void do_print() const; - virtual Interval do_width() const; - bool contains_b (Item*) const; + DECLARE_MY_RUNTIME_TYPEINFO; + SCORE_ELEMENT_CLONE(Horizontal_align_item); + void add_item (Item*, int p); + Horizontal_align_item(); + virtual void do_print() const; + }; #endif // HORIZONTAL_ALIGN_ITEM_HH diff --git a/lily/include/horizontal-group-item.hh b/lily/include/horizontal-group-item.hh index d94e0df1a4..8c6f9ea7b9 100644 --- a/lily/include/horizontal-group-item.hh +++ b/lily/include/horizontal-group-item.hh @@ -3,14 +3,14 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> + (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ #ifndef HORIZONTAL_GROUP_ITEM_HH #define HORIZONTAL_GROUP_ITEM_HH -#include "horizontal-group-elem.hh" +#include "horizontal-group-element.hh" #include "axis-group-item.hh" /** @@ -18,7 +18,6 @@ */ class Horizontal_group_item : public Axis_group_item, public Horizontal_group_element { protected: - virtual void remove_all() { Horizontal_group_element::remove_all (); } virtual void do_unlink () { Axis_group_item::do_unlink (); } @@ -27,10 +26,9 @@ protected: } virtual void do_print() const; public: - virtual void add_element (Graphical_element*e) { Horizontal_group_element::add_element (e); } - virtual void remove_element (Graphical_element*e) { Horizontal_group_element::remove_element (e); } + Horizontal_group_item (); DECLARE_MY_RUNTIME_TYPEINFO; - SCORE_ELEM_CLONE(Horizontal_group_item); + SCORE_ELEMENT_CLONE(Horizontal_group_item); }; #endif // HORIZONTAL_GROUP_ITEM_HH diff --git a/lily/include/horizontal-vertical-group-item.hh b/lily/include/horizontal-vertical-group-item.hh index 50e1e9ef56..2a6a0bf425 100644 --- a/lily/include/horizontal-vertical-group-item.hh +++ b/lily/include/horizontal-vertical-group-item.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> + (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ @@ -11,7 +11,7 @@ #define HORIZONTAL_VERTICAL_GROUP_ITEM_HH #include "axis-group-item.hh" -#include "horizontal-vertical-group-elem.hh" +#include "horizontal-vertical-group-element.hh" /** @@ -20,12 +20,10 @@ class Horizontal_vertical_group_item : public Axis_group_item, public Horizontal_vertical_group_element { protected: virtual void do_print() const; - virtual void remove_all() { Horizontal_vertical_group_element::remove_all (); } virtual void do_unlink () { Horizontal_vertical_group_element::do_unlink (); } - SCORE_HORIZONTAL_VERTICAL_CLONE(Horizontal_vertical_group_item); + SCORE_ELEMENT_CLONE(Horizontal_vertical_group_item); public: - virtual void add_element (Graphical_element*e) { Horizontal_vertical_group_element::add_element (e); } - virtual void remove_element (Graphical_element*e) { Horizontal_vertical_group_element::remove_element (e); } + Horizontal_vertical_group_item (); DECLARE_MY_RUNTIME_TYPEINFO; }; diff --git a/lily/include/idealspacing.hh b/lily/include/idealspacing.hh index 198b7e000b..20ff60fee5 100644 --- a/lily/include/idealspacing.hh +++ b/lily/include/idealspacing.hh @@ -1,7 +1,7 @@ /* idealspacing.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef IDEALSPACING_HH diff --git a/lily/include/identifier.hh b/lily/include/identifier.hh index 85a398ae0e..56898a043e 100644 --- a/lily/include/identifier.hh +++ b/lily/include/identifier.hh @@ -1,7 +1,7 @@ /* identifier.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef IDENTIFIER_HH @@ -12,8 +12,8 @@ #include "input.hh" #include "virtual-methods.hh" -#define IDACCESSOR(Class, accessor)\ -virtual Class * accessor () const { error (#Class + String ("_identifier")); return 0; } +#define IDACCESSOR(Class)\ +virtual Class * access_ ## Class (bool=true) const { error (#Class + String ("_identifier")); return 0; } /** A declarable data structure in mudela. @@ -33,19 +33,19 @@ struct Identifier : public Input { DECLARE_MY_RUNTIME_TYPEINFO; void error (String) const; String str () const; - IDACCESSOR(Translator, translator) - IDACCESSOR(Music, music) - IDACCESSOR(General_script_def, script) - IDACCESSOR(Symtables, symtables) - IDACCESSOR(Midi_def, mididef) - IDACCESSOR(Paper_def, paperdef) - IDACCESSOR(Lookup,lookup) - IDACCESSOR(Real,real) - IDACCESSOR(String,string) - IDACCESSOR(Request, request) - IDACCESSOR(Score, score) - IDACCESSOR(int, intid) - IDACCESSOR(Duration, duration) + IDACCESSOR(Translator) + IDACCESSOR(Music) + IDACCESSOR(General_script_def) + IDACCESSOR(Symtables) + IDACCESSOR(Midi_def) + IDACCESSOR(Paper_def) + IDACCESSOR(Lookup) + IDACCESSOR(Real) + IDACCESSOR(String) + IDACCESSOR(Request) + IDACCESSOR(Score) + IDACCESSOR(int) + IDACCESSOR(Duration) VIRTUAL_COPY_CONS (Identifier, Identifier); protected: @@ -53,33 +53,33 @@ protected: virtual String do_str () const; }; -#define DECLARE_ID_CLASS(Class, accessor) \ +#define DECLARE_ID_CLASS(Class) \ struct Class ## _identifier : Identifier {\ Class *data_p_; \ DECLARE_MY_RUNTIME_TYPEINFO; \ Class ## _identifier (Class ## _identifier const&);\ Class ## _identifier (Class*st, int code);\ VIRTUAL_COPY_CONS (Class ## _identifier, Identifier);\ - virtual Class* accessor () const;\ + virtual Class* access_ ## Class (bool copy_b = true) const;\ ~Class ## _identifier();\ virtual void do_print () const; \ virtual String do_str () const; \ }\ -DECLARE_ID_CLASS(Translator, translator); -DECLARE_ID_CLASS(Duration, duration); -DECLARE_ID_CLASS(Real, real); -DECLARE_ID_CLASS(String, string); -DECLARE_ID_CLASS(General_script_def, script); -DECLARE_ID_CLASS(Lookup, lookup); -DECLARE_ID_CLASS(Symtables, symtables); -DECLARE_ID_CLASS(Music, music); -DECLARE_ID_CLASS(int, intid); -DECLARE_ID_CLASS(Score, score); -DECLARE_ID_CLASS(Request, request); -DECLARE_ID_CLASS(Paper_def, paperdef); -DECLARE_ID_CLASS(Midi_def, mididef); +DECLARE_ID_CLASS(Translator); +DECLARE_ID_CLASS(Duration); +DECLARE_ID_CLASS(Real); +DECLARE_ID_CLASS(String); +DECLARE_ID_CLASS(General_script_def); +DECLARE_ID_CLASS(Lookup); +DECLARE_ID_CLASS(Symtables); +DECLARE_ID_CLASS(Music); +DECLARE_ID_CLASS(int); +DECLARE_ID_CLASS(Score); +DECLARE_ID_CLASS(Request); +DECLARE_ID_CLASS(Paper_def); +DECLARE_ID_CLASS(Midi_def); #endif // IDENTIFIER_HH diff --git a/lily/include/item.hh b/lily/include/item.hh index 0a20e76148..3201029829 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -3,15 +3,15 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> + (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ #ifndef ITEM_HH #define ITEM_HH -#include "boxes.hh" +#include "box.hh" #include "string.hh" -#include "score-elem.hh" +#include "score-element.hh" #include "drul-array.hh" /** @@ -24,22 +24,22 @@ spacing calculation. */ -class Item : public virtual Score_elem { +class Item : public virtual Score_element { public: Link_array<Spanner> attached_span_l_arr_; Drul_array<Item*> broken_to_drul_; /// should be put in a breakable col. bool breakable_b_; - Direction break_status_i_; + Direction break_status_dir_; int break_priority_i_; /// nobreak = 0, pre = -1, post = 1 - int break_status_i() const; + Direction break_status_dir() const; Item * find_prebroken_piece (Direction) const; Item * find_prebroken_piece (Line_of_score*) const; - virtual Item *item() { return this; } + virtual Item *access_Item() ; Item(); Real hpos_f() const; DECLARE_MY_RUNTIME_TYPEINFO; @@ -47,6 +47,8 @@ public: virtual Paper_column * column_l () const; static int left_right_compare (Item const *, Item const*); + + Item (Item const &); protected: virtual void do_unlink (); virtual void do_junk_links(); diff --git a/lily/include/key.hh b/lily/include/key.hh index 90c1479235..b00b1723c1 100644 --- a/lily/include/key.hh +++ b/lily/include/key.hh @@ -1,13 +1,13 @@ /* key.hh -- declare Key, Octave_key - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef KEY_HH #define KEY_HH -#include "varray.hh" +#include "array.hh" #include "scalar.hh" #include "lily-proto.hh" diff --git a/lily/include/keyword.hh b/lily/include/keyword.hh index 4b40a979fc..1f01b93d60 100644 --- a/lily/include/keyword.hh +++ b/lily/include/keyword.hh @@ -1,7 +1,7 @@ /* keyword.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef KEYWORD_HH diff --git a/lily/include/leastsquares.hh b/lily/include/leastsquares.hh index c813f36bc4..63f88b6097 100644 --- a/lily/include/leastsquares.hh +++ b/lily/include/leastsquares.hh @@ -1,12 +1,12 @@ /* leastsquare.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef LEASTSQUARE_HH #define LEASTSQUARE_HH -#include "varray.hh" +#include "array.hh" #include "offset.hh" diff --git a/lily/include/line-of-score.hh b/lily/include/line-of-score.hh new file mode 100644 index 0000000000..894b39a5ba --- /dev/null +++ b/lily/include/line-of-score.hh @@ -0,0 +1,43 @@ +/* + scoreline.hh -- part of GNU LilyPond + + (c) 1996--1998 Han-Wen Nienhuys +*/ + +#ifndef SCORELINE_HH +#define SCORELINE_HH + +#include "colhpos.hh" +#include "spanner.hh" + +/// the columns of a score that form one line. +class Line_of_score : public Spanner +{ +public: + Link_array<Paper_column> cols; + bool error_mark_b_; + + DECLARE_MY_RUNTIME_TYPEINFO; + Line_of_score(); + + void add_element (Score_element *); + + /// is #c# contained in #*this#? + bool contains_b (Paper_column const *c) const; + + Link_array<Line_of_score> get_lines() const; + void set_breaking (Array<Column_x_positions> const&); + +protected: + virtual Link_array<Score_element> get_extra_dependencies () const; + + virtual void do_unlink (); + virtual void do_junk_links (); + virtual void break_into_pieces (bool); + virtual Interval do_width() const; + virtual void do_print() const; + SCORE_ELEMENT_CLONE(Line_of_score); +}; + +#endif + diff --git a/lily/include/local-key-item.hh b/lily/include/local-key-item.hh index ec41cb3a54..d08ca2b490 100644 --- a/lily/include/local-key-item.hh +++ b/lily/include/local-key-item.hh @@ -1,13 +1,13 @@ /* local-key-item.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef LOCALKEYITEM_HH #define LOCALKEYITEM_HH #include "item.hh" -#include "varray.hh" +#include "array.hh" #include "musical-pitch.hh" /** @@ -26,16 +26,14 @@ public: DECLARE_MY_RUNTIME_TYPEINFO; Array<Musical_pitch> accs; Link_array<Item> support_items_; - int c0_position; - - + int c0_position_i_; - Local_key_item (int c0position); + Local_key_item (); void add_support (Item*); void add (Musical_pitch); protected: virtual void do_pre_processing(); - virtual void do_substitute_dependency (Score_elem*,Score_elem*); + virtual void do_substitute_dependency (Score_element*,Score_element*); virtual Molecule* brew_molecule_p() const; }; #endif // LOCALKEYITEM_HH diff --git a/lily/include/note-head.hh b/lily/include/note-head.hh index 6ed35ce263..07d3185a06 100644 --- a/lily/include/note-head.hh +++ b/lily/include/note-head.hh @@ -1,7 +1,7 @@ /* note-head.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef NOTEHEAD_HH diff --git a/lily/include/notename.hh b/lily/include/notename.hh index 426f7e4564..716217ef84 100644 --- a/lily/include/notename.hh +++ b/lily/include/notename.hh @@ -1,7 +1,7 @@ /* notename.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef NOTENAME_HH diff --git a/lily/include/parseconstruct.hh b/lily/include/parseconstruct.hh index a48ce2c022..7a85104846 100644 --- a/lily/include/parseconstruct.hh +++ b/lily/include/parseconstruct.hh @@ -1,7 +1,7 @@ /* parseconstruct.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef PARSECONSTRUCT_HH diff --git a/lily/include/script-def.hh b/lily/include/script-def.hh index ac5bf63561..a68628c9ef 100644 --- a/lily/include/script-def.hh +++ b/lily/include/script-def.hh @@ -1,7 +1,7 @@ /* script-def.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef SCRIPTDEF_HH diff --git a/lily/include/script.hh b/lily/include/script.hh index 35a945af5a..105cb4f15c 100644 --- a/lily/include/script.hh +++ b/lily/include/script.hh @@ -1,7 +1,7 @@ /* script.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef SCRIPT_HH @@ -14,28 +14,31 @@ Accents that are put over a note-group. */ class Script : public Item, public Staff_side { - - Stem *stem_l_; + Stem *stem_l_; protected: - Molecule *brew_molecule_p() const; - virtual void do_substitute_dependency (Score_elem*,Score_elem*); - virtual void do_print() const; - virtual Interval symbol_height() const; - virtual void do_pre_processing(); - virtual Interval do_width() const; - SCORE_ELEM_CLONE(Script); + Molecule *brew_molecule_p() const; + virtual void do_substitute_dependency (Score_element*,Score_element*); + virtual void do_print() const; + virtual Interval symbol_height() const; + virtual Interval symbol_width () const; + virtual void do_pre_processing(); + virtual Interval do_width() const; + SCORE_ELEMENT_CLONE(Script); private: - void set_default_dir(); + void set_default_dir(); public: - General_script_def *specs_l_; + General_script_def *specs_p_; + bool postbreak_only_b_; - static int compare (Script *const&, Script *const&) ; - Script(); - void set_stem (Stem*); - DECLARE_MY_RUNTIME_TYPEINFO; - + static int compare (Script *const&, Script *const&) ; + Script(); + ~Script (); + Script (Script const&); + + void set_stem (Stem*); + DECLARE_MY_RUNTIME_TYPEINFO; }; diff --git a/lily/include/slur.hh b/lily/include/slur.hh index 07ceb99374..c77f6f9865 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -1,7 +1,7 @@ /* slur.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef SLUR_HH @@ -19,11 +19,11 @@ class Slur : public Bow { public: Link_array<Note_column> encompass_arr_; - void add (Note_column*); + void add_column (Note_column*); Slur (); - SCORE_ELEM_CLONE(Slur); + SCORE_ELEMENT_CLONE(Slur); DECLARE_MY_RUNTIME_TYPEINFO; protected: @@ -33,7 +33,7 @@ protected: virtual void do_post_processing (); virtual void do_add_processing (); virtual void do_pre_processing (); - virtual void do_substitute_dependency (Score_elem*, Score_elem*); + virtual void do_substitute_dependency (Score_element*, Score_element*); }; #endif // SLUR_HH diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh index 0559dce40d..d5688cb8e0 100644 --- a/lily/include/spanner.hh +++ b/lily/include/spanner.hh @@ -1,14 +1,14 @@ /* spanner.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef SPANNER_HH #define SPANNER_HH #include "lily-proto.hh" -#include "score-elem.hh" +#include "score-element.hh" #include "drul-array.hh" #include "rod.hh" @@ -32,21 +32,21 @@ length of stems of notes they encompass. */ -class Spanner : public virtual Score_elem { +class Spanner : public virtual Score_element { public: Drul_array<Item*> spanned_drul_; - void set_bounds(Direction d, Item*); + void set_bounds (Direction d, Item*); DECLARE_MY_RUNTIME_TYPEINFO; - virtual Spanner* spanner() { return this; } - Spanner(); - bool broken_b() const; + virtual Spanner* access_Spanner (); + Spanner (); + bool broken_b () const; virtual Array<Rod> get_rods () const; Spanner* find_broken_piece (Line_of_score*) const; protected: - void set_my_columns(); - SCORE_ELEM_CLONE(Spanner); + void set_my_columns (); + SCORE_ELEMENT_CLONE (Spanner); /** this is virtual; for instance, Line_of_score overrides it. @@ -55,13 +55,13 @@ protected: Link_array<Spanner> broken_into_l_arr_; - virtual void do_unlink(); - virtual void do_junk_links(); + virtual void do_unlink (); + virtual void do_junk_links (); virtual void do_brew_molecule (); virtual void do_space_processing (); - virtual void do_break_processing(); - virtual Interval do_width() const; - virtual void do_print() const; - virtual Line_of_score*line_l() const; + virtual void do_break_processing (); + virtual Interval do_width () const; + virtual void do_print () const; + virtual Line_of_score*line_l () const; }; #endif diff --git a/lily/include/staff-side.hh b/lily/include/staff-side.hh index 9762887458..5c95249868 100644 --- a/lily/include/staff-side.hh +++ b/lily/include/staff-side.hh @@ -3,21 +3,24 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> + (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ #ifndef STAFF_SIDE_HH #define STAFF_SIDE_HH -#include "score-elem.hh" +#include "score-element.hh" #include "interval.hh" #include "direction.hh" -/** A symbol which sits along a staff. +/** - */ -class Staff_side : virtual Score_elem + A symbol which sits either below or above "something" (usually, a + staff). + +*/ +class Staff_side : virtual Score_element { public: @@ -25,25 +28,33 @@ public: Vertical dir of symbol relative to staff. -1 = below staff? */ Direction dir_; + Axis axis_; Interval sym_int_; - Real y_; + Real coordinate_offset_f_; + /** + Add extra vertical space to the support symbols. + */ + Real padding_f_; - void set_staffsym (Staff_symbol * ); Staff_side (); - void add_support (Score_elem*); + void add_support (Score_element*); DECLARE_MY_RUNTIME_TYPEINFO; protected: virtual Interval symbol_height () const; + virtual Interval symbol_width () const; + Interval symbol_extent () const; virtual Real get_position_f () const; - virtual void do_substitute_dependency (Score_elem *, Score_elem*); + virtual void do_substitute_dependency (Score_element *, Score_element*); + virtual void do_pre_processing (); virtual void do_post_processing (); - Interval support_height () const; + Interval support_extent () const; private: - Link_array<Score_elem> support_l_arr_; -// Interval support_height () const; + void do_side_processing (); + Link_array<Score_element> support_l_arr_; }; + #endif // STAFF_SIDE_HH diff --git a/lily/include/stem.hh b/lily/include/stem.hh index aa6f1b44ca..6bef757c91 100644 --- a/lily/include/stem.hh +++ b/lily/include/stem.hh @@ -1,13 +1,13 @@ /* stem.hh -- declare Stem - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef STEM_HH #define STEM_HH #include "item.hh" -#include "varray.hh" +#include "array.hh" #include "moment.hh" #include "molecule.hh" @@ -82,7 +82,7 @@ public: Stem (); /// ensure that this Stem also encompasses the Notehead #n# - void add (Rhythmic_head*n); + void add_head (Rhythmic_head*n); DECLARE_MY_RUNTIME_TYPEINFO; @@ -93,10 +93,10 @@ public: void do_print() const; void set_stemend (Real); - Direction get_default_dir(); - Direction get_dir (); + Direction get_default_dir() const; + Direction get_dir () const; - int get_center_distance(Direction); + int get_center_distance(Direction) const; void set_default_dir(); void set_default_stemlen(); void set_default_extents(); @@ -111,8 +111,9 @@ public: /// heads that the stem encompasses (positions) Interval_t<int> head_positions() const; + virtual ~Stem (); protected: - virtual void do_substitute_dependency (Score_elem*,Score_elem*); + virtual void do_substitute_dependency (Score_element*,Score_element*); virtual void do_pre_processing(); virtual Interval do_width() const; Molecule* brew_molecule_p() const; diff --git a/lily/include/text-item.hh b/lily/include/text-item.hh index 581446cfd4..8c6ba84f69 100644 --- a/lily/include/text-item.hh +++ b/lily/include/text-item.hh @@ -1,7 +1,7 @@ /* text-item.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef TEXT_ITEM_HH diff --git a/lily/include/text-spanner.hh b/lily/include/text-spanner.hh index ab81d9099e..e7cd556cd9 100644 --- a/lily/include/text-spanner.hh +++ b/lily/include/text-spanner.hh @@ -1,7 +1,7 @@ /* textspanner.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef TEXTSPANNER_HH @@ -24,10 +24,10 @@ public: Text_spanner(); Text_spanner (Text_spanner const&); protected: - SCORE_ELEM_CLONE(Text_spanner); + SCORE_ELEMENT_CLONE(Text_spanner); ~Text_spanner(); virtual void do_add_processing (); - virtual void do_substitute_dependency (Score_elem*,Score_elem*); + virtual void do_substitute_dependency (Score_element*,Score_element*); virtual void do_pre_processing(); virtual void do_post_processing(); virtual Interval height() const ; diff --git a/lily/include/time-description.hh b/lily/include/time-description.hh index 5a84817ed9..f92b48ba79 100644 --- a/lily/include/time-description.hh +++ b/lily/include/time-description.hh @@ -1,7 +1,7 @@ /* moment.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1998 Han-Wen Nienhuys */ #ifndef tdes_HH @@ -9,7 +9,7 @@ #include "moment.hh" #include "lily-proto.hh" -#include "varray.hh" +#include "array.hh" /// full info on where we are struct Time_description { @@ -39,14 +39,14 @@ struct Time_description { void OK() const; Time_description(); void add (Moment dt); - bool allow_meter_change_b(); + bool allow_time_signature_change_b(); String str() const; void print() const; void setpartial (Moment p); String try_set_partial_str (Moment) const; Moment barleft() const; Moment next_bar_moment() const; - void set_meter (int,int); + void set_time_signature (int,int); static int compare (const Time_description&, const Time_description&); }; diff --git a/lily/include/time-signature.hh b/lily/include/time-signature.hh new file mode 100644 index 0000000000..762f465b98 --- /dev/null +++ b/lily/include/time-signature.hh @@ -0,0 +1,31 @@ +/* + time_signature.hh -- declare Time_signature + + (c) 1996--1998 Han-Wen Nienhuys +*/ + +#ifndef METER_HH +#define METER_HH +#include "item.hh" +#include "array.hh" +#include "scalar.hh" + +/** + Print a time_signature sign. + TODO: + + C style time_signatures, 2+3+2/8 time_signatures, alla breve. + + */ +class Time_signature: public Item { + Array<Scalar> args; + +protected: + virtual Molecule*brew_molecule_p() const; +public: + Time_signature (Array<Scalar> args) ; + DECLARE_MY_RUNTIME_TYPEINFO; + SCORE_ELEMENT_CLONE(Time_signature); +}; +#endif // METER_HH +