From: fred Date: Sun, 24 Mar 2002 19:41:22 +0000 (+0000) Subject: lilypond-0.0.38 X-Git-Tag: release/1.5.59~4835 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=08953eee84ba92d60b6bc5c7e0b6fff2a149f76b;p=lilypond.git lilypond-0.0.38 --- diff --git a/hdr/barreg.hh b/hdr/barreg.hh deleted file mode 100644 index 0b99ec0a52..0000000000 --- a/hdr/barreg.hh +++ /dev/null @@ -1,30 +0,0 @@ -/* - barreg.hh -- declare Bar_register - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef BARREG_HH -#define BARREG_HH -#include "register.hh" - -/** - generate bars. Either user ("|:"), or default (new measure) - */ -class Bar_register : public Request_register { - void split_bar(Bar *& pre, Bar * no, Bar * &post); -public: - Bar_req * bar_req_l_; - Bar * bar_p_; - - virtual bool try_request(Request *req_l); - virtual void process_request(); - virtual void do_pre_move_process(); - virtual void do_post_move_process(); - Bar_register(Complex_walker*); -}; - -#endif // BARREG_HH diff --git a/hdr/clefitem.hh b/hdr/clefitem.hh deleted file mode 100644 index 2e67a7d094..0000000000 --- a/hdr/clefitem.hh +++ /dev/null @@ -1,31 +0,0 @@ - -/* - clefitem.hh -- declare Clef_item - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef CLEFITEM_HH -#define CLEFITEM_HH -#include "item.hh" - - -struct Clef_item : Item { - String type; - int y_off; - - /// is this a change clef (smaller size)? - bool change; - - - /* *************** */ - const char * name() const; - Clef_item(); - void read(Clef_register const&); - void read(String); - Molecule* brew_molecule_p()const; -}; - -#endif // CLEFITEM_HH - - diff --git a/hdr/clefreg.hh b/hdr/clefreg.hh deleted file mode 100644 index 8f9e25042c..0000000000 --- a/hdr/clefreg.hh +++ /dev/null @@ -1,29 +0,0 @@ -/* - clef.hh -- part of LilyPond - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef CLEF_HH -#define CLEF_HH -#include "scalar.hh" -#include "varray.hh" -#include "register.hh" - -/// where is c-0 in the staff? -class Clef_register : public Request_register { - Clef_item *clef_p_; -public: - int c0_position_i_; - String clef_type_str_; - - /* ************** */ - virtual void process_request(); - virtual void do_pre_move_process(); - virtual bool try_request(Request*); - Clef_register(Complex_walker*); - void read_req(Clef_change_req*); - bool set_type(String); -}; -#endif // CLEF_HH - diff --git a/hdr/complexstaff.hh b/hdr/complexstaff.hh deleted file mode 100644 index 74ecef4732..0000000000 --- a/hdr/complexstaff.hh +++ /dev/null @@ -1,25 +0,0 @@ -/* - complexstaff.hh -- declare Complex_staff - - (c) 1996,1997 Han-Wen Nienhuys -*/ - -#ifndef COMPLEXSTAF_HH -#define COMPLEXSTAF_HH - - -#include "key.hh" -#include "staff.hh" -#include "staffwalker.hh" - -/// -struct Complex_staff : Staff { - - /* *************** */ - - virtual void set_output(PScore *); - virtual Staff_walker *get_walker_p(); -}; - -#endif // COMPLEXSTAF_HH - diff --git a/hdr/complexwalker.hh b/hdr/complexwalker.hh deleted file mode 100644 index a67d5b881a..0000000000 --- a/hdr/complexwalker.hh +++ /dev/null @@ -1,95 +0,0 @@ -/* - complexwalker.hh -- declare Complex_walker - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef COMPLEXWALKER_HH -#define COMPLEXWALKER_HH - -#include "proto.hh" -#include "assoc.hh" -#include "staffwalker.hh" -#include "staffeleminfo.hh" -#include "plist.hh" - -/** - A staff walker which uses registers to decide what to print - */ -class Complex_walker: public Staff_walker { - bool try_command_request(Command_req *req_l); - void do_change_group( Voice * v, String group_id_str); - void do_announces(); - void try_request(Request*req); - int c0_position_i_; - - Array prebreak_item_p_arr_; - Array nobreak_item_p_arr_; - Array postbreak_item_p_arr_; - -public: - - IPointerList voice_reg_list_; - IPointerList group_reg_list_; - Assoc voice_group_map_; - - Array announce_info_arr_; - Walker_registers *walk_regs_p_; - - /* *************** */ - - Voice_registers *find_voice_reg(Voice*v_l)const; - Voice_registers *get_voice_reg(Voice*v_l); - - /** search for voice_group containing #v_l# - - @return - pointer if found, 0 if not found. - */ - Voice_group_registers *find_voice_group(Voice* v_l)const; - - /// search. Create if necessary - Voice_group_registers *get_voice_group(Voice* v_l); - /** search for voice_group named #id# - - @return - pointer if found, 0 if not found. - */ - Voice_group_registers *find_voice_group(const char* id)const; - - /** - search for voice_group named #id#, create if necessary - */ - Voice_group_registers *get_voice_group(const char*); - - Array get_voice_regs(Voice_group_registers *) const; - - void regs_process_requests(); - void typeset_breakable_item(Item * pre_p , - Item * nobreak_p, Item * post_p); - void typeset_element(Staff_elem *elem_p); - void announce_element(Staff_elem_info); - virtual void process_requests(); - virtual void do_post_move(); - virtual void do_pre_move(); - /** - @return the position of central c. - */ - int c0_position_i() const; - - /** - set the position of central c. - @param the new position - */ - void set_c0_position(int j); - Complex_walker(Complex_staff*); - ~Complex_walker(); - - Complex_staff *staff(); -private: -}; - - -#endif // COMPLEXWALKER_HH - - diff --git a/hdr/directionalspanner.hh b/hdr/directionalspanner.hh deleted file mode 100644 index 1578edf574..0000000000 --- a/hdr/directionalspanner.hh +++ /dev/null @@ -1,26 +0,0 @@ -/* - directionalspanner.hh -- part of LilyPond - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef DIRECTIONALSPANNER_HH -#define DIRECTIONALSPANNER_HH - -#include "spanner.hh" - -/// a spanner which can be pointing "up" or "down" -struct Directional_spanner : Spanner{ - - /// -1 below heads, +1 above heads. - int dir_i_; - - /// offset of "center" relative to left-column/0-pos of staff - virtual Offset center() const=0; - virtual void set_default_dir()=0; - Directional_spanner(); - -}; - -#endif // DIRECTIONALSPANNER_HH - diff --git a/hdr/inputfile.hh b/hdr/inputfile.hh deleted file mode 100644 index 5e55050299..0000000000 --- a/hdr/inputfile.hh +++ /dev/null @@ -1,28 +0,0 @@ -/* - inputfile.hh -- declare Input_file - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#ifndef INPUT_FILE_HH -#define INPUT_FILE_HH -#include -#include "proto.hh" -#include "fproto.hh" -#include "varray.hh" -#include "string.hh" - -struct Input_file { - istream* is; - char const* defined_ch_c_l_; - Source_file* sourcefile_l_; - int line; - String name; - - Input_file(String); - ~Input_file(); -}; - -#endif // INPUT_FILE_HH diff --git a/hdr/inputmusic.hh b/hdr/inputmusic.hh deleted file mode 100644 index da3030f11b..0000000000 --- a/hdr/inputmusic.hh +++ /dev/null @@ -1,140 +0,0 @@ -/* - inputmusic.hh -- part of LilyPond - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef INPUTMUSIC_HH -#define INPUTMUSIC_HH - -#include "plist.hh" -#include "proto.hh" -#include "voice.hh" -#include "moment.hh" - -struct Voice_list : public PointerList { - void translate_time(Moment dt); -}; - -/** - - A set voices. - Input_music is anything that can simply be regarded as/converted to - a set of voices "cooperating" or independant. It has some basic - characteristics that real music has too: - - - it is rhythmic (it has a length, and can be translated horizontally) - - a pitch (it can be transposed) - - */ -struct Input_music { - virtual Voice_list convert()const=0; - void check_plet(Voice_element* velt_l); - virtual Moment length()const=0; - virtual void translate_time(Moment dt)=0; - virtual ~Input_music(){} - virtual void print() const =0; - virtual void set_default_group(String)=0; - virtual bool find_plet_start_bo(char c, Moment& moment_r) = 0; - virtual void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i) = 0; - // virtual void transpose(...) const =0; - - - virtual Input_music *clone() const = 0; - virtual Simple_music *simple() { return 0; } -}; - -/// Simple music consists of one voice -struct Simple_music : Input_music { - Voice voice_; - - /* *** */ - virtual Simple_music*simple() { return this; } - void add(Voice_element*); - virtual void set_default_group(String g) { voice_.set_default_group(g); } - virtual Moment length()const; - virtual Voice_list convert()const; - virtual void translate_time(Moment dt); - virtual void print() const; - virtual bool find_plet_start_bo(char c, Moment& moment_r); - virtual void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i); - virtual Input_music *clone() const { - return new Simple_music(*this); - } - -}; - -/// Complex_music consists of multiple voices -struct Complex_music : Input_music { - IPointerList elts; - /* *************** */ - virtual void set_default_group(String g); - void add(Input_music*); - Complex_music(); - Complex_music(Complex_music const &); - virtual void print() const ; - void concatenate(Complex_music*); - virtual bool find_plet_start_bo(char c, Moment& moment_r); - virtual void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i); - -}; - - -/** - A voice like list of music. - - different music forms which start after each other ( concatenated, - stacked "horizontally ) - - */ - -struct Music_voice : Complex_music { - - - /* *************** */ - Moment length()const; - virtual void translate_time(Moment dt); - virtual Voice_list convert()const; - void add_elt(Voice_element*); - virtual Input_music *clone() const { - return new Music_voice(*this); - } - virtual void print() const ; -}; - -/** - Multiple musicstuff stacked on top of each other - chord like : - - - different music forms which start at the same time ( stacked "vertically" ) - - */ -struct Music_general_chord : Complex_music { - - - /* *************** */ - - virtual Moment length()const; - virtual Voice_list convert()const; - virtual void translate_time(Moment dt); - void add_elt(Voice_element*); - virtual Input_music *clone() const { - return new Music_general_chord(*this); - } - - virtual void print() const ; -}; - -struct Multi_voice_chord : Music_general_chord { - void set_default_group(String); - virtual Input_music *clone() const { - return new Multi_voice_chord(*this); - } -}; -struct Voice_group_chord : Music_general_chord { - - virtual Input_music *clone() const { - return new Voice_group_chord(*this); - } -}; -#endif // INPUTMUSIC_HH diff --git a/hdr/inputscore.hh b/hdr/inputscore.hh deleted file mode 100644 index 88cc1894a8..0000000000 --- a/hdr/inputscore.hh +++ /dev/null @@ -1,46 +0,0 @@ -/* - inputscore.hh -- declare - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef INPUTSCORE_HH -#define INPUTSCORE_HH - -#include "varray.hh" -#include "proto.hh" -#include "plist.hh" -#include "string.hh" - - -/// the total music def of one movement -struct Input_score { - /// defined where? - const char* defined_ch_c_l_; - int errorlevel_i_; - - /// paper_, staffs_ and commands_ form the problem definition. - Paperdef *paper_p_; - Midi_def* midi_p_; - IPointerList staffs_; - - Input_music * score_wide_music_p_; - - /* *************************************************************** */ - Input_score(); - Input_score(Input_score const&); - - void add(Input_staff*); - ~Input_score(); - /// construction - void set(Paperdef*); - void set(Midi_def* midi_p); - void print() const; - Score*parse(); - void set(Input_music*); -}; - -#endif diff --git a/hdr/inputstaff.hh b/hdr/inputstaff.hh deleted file mode 100644 index f72cac8ba1..0000000000 --- a/hdr/inputstaff.hh +++ /dev/null @@ -1,35 +0,0 @@ -/* - inputstaff.hh -- declare Input_staff - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef INPUTSTAFF_HH -#define INPUTSTAFF_HH - -#include "string.hh" -#include "plist.hh" -#include "varray.hh" -#include "proto.hh" - -struct Input_staff { - - const char * defined_ch_c_l_; - String type; - - IPointerList music_; - Input_music * score_wide_music_p_; - - /* *************** */ - ~Input_staff(); - void add(Input_music*m); - Input_staff(Input_staff const&); - Input_staff(String); - void set_score_wide(Input_music*m); - Staff* parse(Score*, Input_music *score_wide); - void print() const; -}; - - -#endif // INPUTSTAFF_HH - diff --git a/hdr/keyitem.hh b/hdr/keyitem.hh deleted file mode 100644 index 86dae4d9fc..0000000000 --- a/hdr/keyitem.hh +++ /dev/null @@ -1,31 +0,0 @@ -/* - keyitem.hh -- part of LilyPond - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef KEYITEM_HH -#define KEYITEM_HH - -#include "item.hh" -#include "varray.hh" - - -/// An item which places accidentals at the start of the line -struct Key_item : Item { - Array pitch; - Array acc; - int c_position; - - - /* *************** */ - const char * name() const; - Key_item(int cposition); - void add(int pitch, int acc); - void read(const Key_register&); - void set_c_position(int); - void preprocess(); - Molecule* brew_molecule_p()const; -}; - -#endif // KEYITEM_HH diff --git a/hdr/keyreg.hh b/hdr/keyreg.hh deleted file mode 100644 index 6cf6a37242..0000000000 --- a/hdr/keyreg.hh +++ /dev/null @@ -1,34 +0,0 @@ -/* - keyreg.hh -- declare Key_register - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef KEYREG_HH -#define KEYREG_HH - -#include "register.hh" -#include "key.hh" - -struct Key_register : Request_register { - Key key_; - Key_change_req * keyreq_l_; - Key_item * kit_p_; - Array accidental_idx_arr_; - bool default_key_b_; - - virtual bool try_request(Request *req_l); - virtual void process_request(); - virtual void do_pre_move_process(); - virtual void do_post_move_process(); - virtual void acknowledge_element(Staff_elem_info); - Key_register(Complex_walker*); -private: - - void read_req(Key_change_req * r); -}; - -#endif // KEYREG_HH diff --git a/hdr/localkeyitem.hh b/hdr/localkeyitem.hh deleted file mode 100644 index e9640023d4..0000000000 --- a/hdr/localkeyitem.hh +++ /dev/null @@ -1,33 +0,0 @@ -/* - localkeyitem.hh -- part of LilyPond - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef LOCALKEYITEM_HH -#define LOCALKEYITEM_HH -#include "item.hh" -#include "varray.hh" - -struct Local_acc { - int name , acc, octave; - static int compare(Local_acc&, Local_acc&); -}; - -struct Local_key_item : Item { - const char * name() const; - Array accs; - Array support_items_; - int c0_position; - - /* *************** */ - - Local_key_item(int c0position); - void add(Item*); - void add(int oct, int pitch, int acc); - void add(Melodic_req*); - void do_pre_processing(); - Molecule* brew_molecule_p()const; -}; -#endif // LOCALKEYITEM_HH - diff --git a/hdr/localkeyreg.hh b/hdr/localkeyreg.hh deleted file mode 100644 index 07c016678c..0000000000 --- a/hdr/localkeyreg.hh +++ /dev/null @@ -1,24 +0,0 @@ -/* - localkeyreg.hh -- declare Local_key_register - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef LOCALKEYREG_HH -#define LOCALKEYREG_HH -#include "register.hh" -#include "key.hh" - -struct Local_key_register : Request_register { - Local_key local_key_; - Local_key_item* key_item_p_; - const Key *key_c_l_; - /* *************** */ - virtual void process_request(); - virtual void acknowledge_element(Staff_elem_info); - virtual void do_pre_move_process(); - Local_key_register(Complex_walker*); -}; - -#endif // LOCALKEYREG_HH diff --git a/hdr/lyricitem.hh b/hdr/lyricitem.hh deleted file mode 100644 index 46873d8f51..0000000000 --- a/hdr/lyricitem.hh +++ /dev/null @@ -1,19 +0,0 @@ -// -// lyricitem.hh -- part of LilyPond -// -// copyright 1997 Jan Nieuwenhuizen - -#ifndef LYRIC_ITEM_HH -#define LYRIC_ITEM_HH - -#include "textitem.hh" - -struct Lyric_item : Text_item { - /* *************** */ - Lyric_item(Lyric_req* lreq_l, int voice_count_i); - virtual void do_pre_processing(); -}; - - -#endif // LYRIC_ITEM_HH // - diff --git a/hdr/meterreg.hh b/hdr/meterreg.hh deleted file mode 100644 index f14e2ecb9e..0000000000 --- a/hdr/meterreg.hh +++ /dev/null @@ -1,28 +0,0 @@ -/* - meterreg.hh -- declare Meter_register - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef METERREG_HH -#define METERREG_HH -#include "register.hh" - -/** - generate meters. - */ -class Meter_register : public Request_register { -public: - Meter_change_req * meter_req_l_; - Meter * meter_p_; - - virtual bool try_request(Request *req_l); - virtual void process_request(); - virtual void do_pre_move_process(); - virtual void do_post_move_process(); - Meter_register(Complex_walker*); -}; -#endif // METERREG_HH diff --git a/hdr/mididef.hh b/hdr/mididef.hh deleted file mode 100644 index 9a24fa51ff..0000000000 --- a/hdr/mididef.hh +++ /dev/null @@ -1,38 +0,0 @@ -/* - mididef.hh -- declare - - source file of the LilyPond music typesetter - - (c) 1997 Jan Nieuwenhuizen -*/ - - -#ifndef MIDIDEF_HH -#define MIDIDEF_HH -#include "proto.hh" -#include "real.hh" -#include "string.hh" -#include "moment.hh" - - -/** - */ -struct Midi_def { - /// output file name - String outfile_str_; - - /// duration of whole note - Real whole_seconds_f_; - - Midi_def(); - Midi_def(Midi_def const& midi_c_r); - ~Midi_def(); - - Real duration_to_seconds_f(Moment); - int get_tempo_i( Moment moment ); - void set_tempo( Moment moment, int count_per_minute_i ); - void print() const; -}; - -#endif // MIDIDEF_HH // - diff --git a/hdr/midiitem.hh b/hdr/midiitem.hh deleted file mode 100644 index f4b14aa5ef..0000000000 --- a/hdr/midiitem.hh +++ /dev/null @@ -1,85 +0,0 @@ -// -// midiitem.hh -- part of LilyPond -// -// copyright 1997 Jan Nieuwenhuizen - -#ifndef MIDI_ITEM_HH -#define MIDI_ITEM_HH -#include "string.hh" -#include "proto.hh" - -struct Midi_item { - /* *************** */ - static String i2varint_str( int i ); - virtual void output_midi( Midi_stream& midi_stream_r ); - virtual String str() = 0; -}; - -struct Midi_note : public Midi_item { - /* *************** */ - int const c0_pitch_i_c_ = 60; - Byte dynamic_byte_; - - /** - Generate a note-event on a channel pitch. - - @param #melreq_l# is the pitch. - */ - Midi_note( Melodic_req* melreq_l, int channel_i, bool on_b ); - - virtual String str(); - - int channel_i_; - int on_b_; - int pitch_i_; -}; - -struct Midi_duration : public Midi_item { - /* *************** */ - Midi_duration( Real seconds_f ); - - virtual String str(); - - Real seconds_f_; -}; - -struct Midi_chunk : Midi_item { - /* *************** */ - Midi_chunk(); - - void add( String str ); - void set( String header_str, String data_str, String footer_str ); - virtual String str(); - -private: - String data_str_; - String footer_str_; - String header_str_; -}; - -struct Midi_header : Midi_chunk { - /* *************** */ - Midi_header( int format_i, int tracks_i, int clocks_per_4_i ); -}; - -struct Midi_tempo : Midi_item { - /* *************** */ - Midi_tempo( int tempo_i ); - - virtual String str(); - - int tempo_i_; -}; - -struct Midi_track : Midi_chunk { - /* *************** */ - int number_i_; - Midi_track( int number_i ); - - void add( int delta_time_i, String event ); -// void add( Moment delta_time_moment, Midi_item& mitem_r ); - void add( Moment delta_time_moment, Midi_item* mitem_l ); -}; - -#endif // MIDI_ITEM_HH // - diff --git a/hdr/midioutput.hh b/hdr/midioutput.hh deleted file mode 100644 index 34d7f7b039..0000000000 --- a/hdr/midioutput.hh +++ /dev/null @@ -1,21 +0,0 @@ -/* - midioutput.hh -- declare Midi_output - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef MIDIOUTPUT_HH -#define MIDIOUTPUT_HH -#include "pscore.hh" - -struct Midi_output { - Midi_stream* midi_stream_l_; - Midi_output(Score* score_l, Midi_def* ); - void do_staff(Staff*st_l, int count); - - Midi_def* midi_l_; -}; -#endif // MIDIOUTPUT_HH diff --git a/hdr/midistream.hh b/hdr/midistream.hh deleted file mode 100644 index 769cd23250..0000000000 --- a/hdr/midistream.hh +++ /dev/null @@ -1,32 +0,0 @@ -// -// midistream.hh -- part of LilyPond -// -// copyright 1997 Jan Nieuwenhuizen - -#ifndef MIDI_STREAM_HH -#define MIDI_STREAM_HH - -#include -#include "string.hh" - -/// Midi output -struct Midi_stream { - ostream* os_p_; - String filename_str_; - int clocks_per_4_i_; - int tracks_i_; - - Midi_stream( String filename_str, int tracks_i, int clocks_per_4_i_ ); - ~Midi_stream(); - - Midi_stream& operator <<( String str ); - Midi_stream& operator <<( Midi_item& mitem_r ); - Midi_stream& operator <<( int i ); - - void header(); - void open(); - -//private: -// Midi_stream(Midi_stream const&); -}; -#endif // MIDI_STREAM_HH // diff --git a/hdr/midiwalker.hh b/hdr/midiwalker.hh deleted file mode 100644 index 839ba11a7f..0000000000 --- a/hdr/midiwalker.hh +++ /dev/null @@ -1,41 +0,0 @@ -/* - midiwalker.hh -- declare Midi_walker - - (c) 1996,97 Han-Wen Nienhuys, Jan Nieuwenhuizen - */ - -#ifndef MIDIWALKER_HH -#define MIDIWALKER_HH - -#include "proto.hh" -#include "grouping.hh" -#include "staffwalker.hh" -#include "pcursor.hh" -#include "pqueue.hh" - - -/** - a simple walker which collects midi stuff, and then outputs. - - Should derive from Staff_walker - */ -class Midi_walker : public PCursor { - Midi_track *track_l_; - PQueue stop_notes; - Moment last_moment_; - - /* *************** */ - void do_stop_notes(Moment); - - void output_event(Midi_item&, Moment); -public: - - Midi_walker(Staff*, Midi_track*); - void process_requests(); - ~Midi_walker(); -}; - - -#endif // MIDIWALKER_HH - - diff --git a/hdr/paperdef.hh b/hdr/paperdef.hh deleted file mode 100644 index 03abf6abdc..0000000000 --- a/hdr/paperdef.hh +++ /dev/null @@ -1,54 +0,0 @@ -/* - paperdef.hh -- declare - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef PAPERDEF_HH -#define PAPERDEF_HH -#include "proto.hh" -#include "real.hh" -#include "string.hh" -#include "moment.hh" - - -/** symbols, dimensions and constants - - This struct takes care of all kinds of symbols, dimensions and - constants. Most of them are related to the point-size of the fonts, - so therefore, the lookup table for symbols is also in here. - - see TODO - */ -struct Paperdef { - Lookup *lookup_p_; - String outfile; - - Real linewidth; - - /// how much space does a whole note take (ideally?) - Real whole_width; - - /// ideal = geometric_ ^ log2(duration) - Real geometric_; - - /* *************** */ - void reinit(); - Paperdef(Lookup*); - void set(Lookup*); - ~Paperdef(); - Paperdef(Paperdef const&); - Real interline()const; - Real internote()const; - Real rule_thickness()const; - Real standard_height()const; - Real note_width() const; - void print() const; - Real duration_to_dist(Moment); -}; - -#endif // PAPERDEF_HH - diff --git a/hdr/scorecolumn.hh b/hdr/scorecolumn.hh deleted file mode 100644 index e961d04920..0000000000 --- a/hdr/scorecolumn.hh +++ /dev/null @@ -1,59 +0,0 @@ -/* - sccol.hh -- part of LilyPond - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef SCCOL_HH -#define SCCOL_HH -#include "proto.hh" -#include "varray.hh" -#include "moment.hh" - - -/** - - When typesetting hasn't started on PScore yet, the columns which - contain data have a rhythmical position. Score_column is the type - with a rhythmical time attached to it. The calculation of - idealspacing is done with data in these columns. (notably: the - #durations# field) - - */ - -class Score_column { - friend class Score; - friend class Score_walker; - - bool musical_b_; - Moment when_; - void set_breakable(); -public: - /// indirection to column - PCol * pcol_l_; - - /// length of notes/rests in this column - Array durations; - - /* *************** */ - - Moment when() { return when_; } - Score_column(Moment when); - static int compare(Score_column & c1, Score_column &c2); - void add_duration(Moment ); - void preprocess(); - bool breakable_b(); - bool musical_b() { return musical_b_; } - bool used_b(); - void print() const; - - -}; - -instantiate_compare(Score_column&, Score_column::compare); - -#endif // SCCOL_HH - - - - diff --git a/hdr/scorewalker.hh b/hdr/scorewalker.hh deleted file mode 100644 index fdbad24fae..0000000000 --- a/hdr/scorewalker.hh +++ /dev/null @@ -1,37 +0,0 @@ -/* - scorewalker.hh -- declare Score_walker - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef SCOREWALKER_HH -#define SCOREWALKER_HH -#include "pcursor.hh" -#include "proto.hh" -#include "varray.hh" - - -/** - walk through the score_columns, and while doing so, walk all staffs in a score. - */ -class Score_walker : public PCursor -{ - Score* score_l_; - /// walkers for the individual staves. - Array walker_p_arr_; - Array disallow_break_walk_l_arr; - int disallow_break_count_; - void reinit(); -public: - void allow_break(Staff_walker*w); - Score_walker(Score*); - ~Score_walker(); - Moment when(); - void operator++(int); - /// process staff walkers. - void process(); -}; -#endif // SCOREWALKER_HH diff --git a/hdr/scriptdef.hh b/hdr/scriptdef.hh deleted file mode 100644 index 3c22681d23..0000000000 --- a/hdr/scriptdef.hh +++ /dev/null @@ -1,25 +0,0 @@ -/* - scriptdef.hh -- part of LilyPond - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef SCRIPTDEF_HH -#define SCRIPTDEF_HH -#include "string.hh" -struct Script_def{ - int stemdir; - int staffdir; - - bool invertsym; - String symidx; - - /* *************** */ - int compare(Script_def const &); - void print() const; - Script_def(String, int, int ,bool); -}; - - -#endif // SCRIPTDEF_HH - diff --git a/hdr/scriptreg.hh b/hdr/scriptreg.hh deleted file mode 100644 index 72953427d5..0000000000 --- a/hdr/scriptreg.hh +++ /dev/null @@ -1,26 +0,0 @@ -/* - scriptreg.hh -- part of LilyPond - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef SCRIPTREG_HH -#define SCRIPTREG_HH - -#include "register.hh" - - -struct Script_register : Request_register { - Script * script_p_; - int dir_i_; - /* *************** */ - void set_dir(int dir_i_); - Script_register(Complex_walker*); - virtual bool try_request(Request*); - virtual void process_request(); - virtual void acknowledge_element(Staff_elem_info); - virtual void do_pre_move_process(); -}; - -#endif // SCRIPTREG_HH diff --git a/hdr/slurreg.hh b/hdr/slurreg.hh deleted file mode 100644 index 701b60a279..0000000000 --- a/hdr/slurreg.hh +++ /dev/null @@ -1,28 +0,0 @@ -/* - slurreg.hh -- declare Slur_register - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef SLURREG_HH -#define SLURREG_HH - -#include "register.hh" - -struct Slur_register : Request_register { - Array requests_arr_; - Array slur_l_stack_; - Array end_slur_l_arr_; - int dir_i_; - /* *************** */ - ~Slur_register(); - Slur_register(Complex_walker*); - virtual bool try_request(Request*); - virtual void process_request(); - virtual void acknowledge_element(Staff_elem_info); - virtual void do_pre_move_process(); - virtual void set_dir(int); -}; - -#endif // SLURREG_HH diff --git a/hdr/sourcefile.hh b/hdr/sourcefile.hh deleted file mode 100644 index 251efd517e..0000000000 --- a/hdr/sourcefile.hh +++ /dev/null @@ -1,42 +0,0 @@ -// -// sourcefile.hh -- declare Source_file -// -// copyright 1997 Jan Nieuwenhuizen - -#ifndef SOURCE_FILE_HH -#define SOURCE_FILE_HH - -/// class for reading and mapping a file. -class Source_file -{ -public: - /** - @return path to opened file. - */ - // jcn: ugh! filename gets changed!, why? - Source_file( String& filename_str ); - virtual ~Source_file(); - - char const* ch_c_l(); - virtual String error_str( char const* pos_ch_c_l ); - istream* istream_l(); - bool in_b( char const* pos_ch_c_l ); - off_t length_off(); - virtual int line_i( char const* pos_ch_c_l ); - String name_str(); - String file_line_no_str( char const* ch_c_l ); - -private: - void close(); - void map(); - void open(); - void unmap(); - - istream* istream_p_; - int fildes_i_; - String name_str_; - off_t size_off_; - caddr_t data_caddr_; -}; - -#endif // SOURCE_FILE_HH // diff --git a/hdr/staffcolumn.hh b/hdr/staffcolumn.hh deleted file mode 100644 index d80b6fa7b3..0000000000 --- a/hdr/staffcolumn.hh +++ /dev/null @@ -1,47 +0,0 @@ -/* - staffcolumn.hh -- declare Staff_column - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef STAFFCOLUMN_HH -#define STAFFCOLUMN_HH -#include "proto.hh" -#include "varray.hh" -#include "moment.hh" - -/// store simultaneous requests -class Staff_column { - - Staff_column(Staff_column const&); - -public: - Array musicalreq_l_arr_; - Array commandreq_l_arr_; - Staff * staff_l_; - - /// fields to collect timing data vertically. - Array timing_req_l_arr_; - Score_column *musical_column_l_, *command_column_l_; - - /* *************** */ - - Staff_column(); - - Moment when() const; - void set_cols(Score_column *c1, Score_column *c2); - void add(Voice_element*ve); - void OK() const; - ~Staff_column(); - void typeset_breakable_items(Array &pre_p_arr, - Array &nobreak_p_arr, - Array &post_p_arr); - void typeset_musical_item(Item *i); -protected: - void setup_one_request(Request*); -}; - - - -#endif // STAFFCOLUMN_HH - diff --git a/hdr/staffelem.hh b/hdr/staffelem.hh deleted file mode 100644 index 3928c994e9..0000000000 --- a/hdr/staffelem.hh +++ /dev/null @@ -1,84 +0,0 @@ -/* - staffelem.hh -- part of LilyPond - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef STAFFELEM_HH -#define STAFFELEM_HH -#include "varray.hh" -#include "proto.hh" -#include "offset.hh" -#include "molecule.hh" - -/** Both Spanner and Item are Staff_elem's. Most Staff_elem's depend - on other Staff_elem's, eg, Beam needs to know and set direction of - Stem. So the Beam has to be calculated *before* Stem. This is - accomplished with the dependencies field of struct Staff_elem. - - */ -struct Staff_elem { - enum Status { - ORPHAN, // not yet added to pstaff - VIRGIN, // added to pstaff - PRECALCING, - PRECALCED, // calcs before spacing done - POSTCALCING, - POSTCALCED, // after spacing calcs done - OUTPUT, // molecule has been output - } status; - - /// the pstaff it is in - PStaff *pstaff_l_; - - /* *************** */ - Staff_elem(Staff_elem const&); - String TeXstring () const ; - virtual void print() const; - virtual Interval width() const; - virtual Interval height() const; - Paperdef *paper() const; - virtual ~Staff_elem(); - Staff_elem(); - - void translate(Offset); - void add_processing(); - void pre_processing(); - void post_processing(); - void molecule_processing(); - virtual const char *name() const; // to find out derived classes. - virtual Spanner* spanner() { return 0; } - virtual Item * item() { return 0; } - void add_depedency(Staff_elem* ); - void substitute_dependency(Staff_elem* old, Staff_elem * newdep); -protected: - - /// do printing of derived info. - virtual void do_print() const=0; - /// generate the molecule - virtual Molecule* brew_molecule_p()const=0; - ///executed directly after the item is added to the PScore - virtual void do_add_processing(); - /// do calculations before determining horizontal spacing - virtual void do_pre_processing(); - - /// do calculations after determining horizontal spacing - virtual void do_post_processing(); - - Array dependants; - -private: - /// member: the symbols - Molecule *output; // should scrap, and use temp var? - - - /** - This is needed, because #output# may still be - NULL. - */ - Offset offset_; - Array dependencies; -}; -#define NAME_METHOD(c) const char *c::name()const{ return #c; } struct c -#endif // STAFFELEM_HH - diff --git a/hdr/staffeleminfo.hh b/hdr/staffeleminfo.hh deleted file mode 100644 index b8af8aeb22..0000000000 --- a/hdr/staffeleminfo.hh +++ /dev/null @@ -1,28 +0,0 @@ -/* - staffeleminfo.hh -- declare Staff_elem_info - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef STAFFELEMINFO_HH -#define STAFFELEMINFO_HH - -#include "proto.hh" - -/// data container. -struct Staff_elem_info { - Staff_elem * elem_p_; - Request*req_l_; - const Voice * voice_l_; - Voice_group_registers * group_regs_l_; - Request_register * origin_reg_l_; - - /* *** */ - Staff_elem_info(Staff_elem*, Request*, Request_register*); - Staff_elem_info(); -}; - -#endif // STAFFELEMINFO_HH diff --git a/hdr/staffwalker.hh b/hdr/staffwalker.hh deleted file mode 100644 index aed371ef32..0000000000 --- a/hdr/staffwalker.hh +++ /dev/null @@ -1,47 +0,0 @@ -/* - staffwalker.hh -- declare Staff_walker - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef STAFFWALKER_HH -#define STAFFWALKER_HH - -#include "proto.hh" -#include "timedescription.hh" -#include "pcursor.hh" - -/** - manage run-time info when walking staffcolumns such as: key, - meter, pending beams & slurs - */ -struct Staff_walker : public PCursor { - Staff * staff_l_; - PScore * pscore_l_; - Score_walker *score_walk_l_; - Time_description time_; - Rhythmic_grouping *default_grouping; - - /* *************** */ - - Moment when() const; - virtual ~Staff_walker(); - Staff_walker(Staff*, PScore*); - void process() ; - - void operator++(int); - void allow_break(); - -protected: - /// every time before ++ is called - virtual void do_pre_move(){} - /// every time after ++ is called - virtual void do_post_move(){} - virtual void process_requests()=0; -private: - void process_timing_reqs(); - Staff_walker(Staff_walker const&); -}; - -#endif // STAFFWALKER_HH - diff --git a/hdr/stembeamreg.hh b/hdr/stembeamreg.hh deleted file mode 100644 index 3d9d6026df..0000000000 --- a/hdr/stembeamreg.hh +++ /dev/null @@ -1,32 +0,0 @@ -/* - stembeamreg.hh -- part of LilyPond - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef STEMBEAMREG_HH -#define STEMBEAMREG_HH -#include "register.hh" - -struct Stem_beam_register : Request_register { - Stem * stem_p_; - Beam * beam_p_; - Beam_req * beam_req_l_; - Stem_req * stem_req_l_; - Beam_req * start_req_l_; - bool end_beam_b_; - Rhythmic_grouping *current_grouping; - int default_dir_i_; - - /* *************** */ - Stem_beam_register(Complex_walker*); - ~Stem_beam_register(); - void set_dir(int dir_i_); - virtual bool try_request(Request*); - virtual void process_request(); - virtual void acknowledge_element(Staff_elem_info); - virtual void do_pre_move_process(); - virtual void do_post_move_process(); -}; -#endif // STEMBEAMREG_HH diff --git a/hdr/textdef.hh b/hdr/textdef.hh deleted file mode 100644 index da0055281d..0000000000 --- a/hdr/textdef.hh +++ /dev/null @@ -1,29 +0,0 @@ -/* - textdef.hh -- part of LilyPond - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef TEXTDEF_HH -#define TEXTDEF_HH - -#include "string.hh" -#include "proto.hh" - -struct Text_def { - int align_i_; - String text_str_; - String style_str_; - char const* defined_ch_c_l_; - - - /* ****************/ - virtual ~Text_def() {}; - bool compare(const Text_def&); - Text_def(); - virtual void print() const; - virtual Atom create_atom(Paperdef*) const; -}; - -#endif // TEXTDEF_HH - diff --git a/hdr/textreg.hh b/hdr/textreg.hh deleted file mode 100644 index 3dd2172335..0000000000 --- a/hdr/textreg.hh +++ /dev/null @@ -1,23 +0,0 @@ -/* - textreg.hh -- part of LilyPond - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef TEXTREG_HH -#define TEXTREG_HH -#include "register.hh" - -struct Text_register : Request_register{ - Text_item * text_p_; - int dir_i_; - /* *************** */ - void set_dir(int dir_i); - Text_register(Complex_walker*); - virtual bool try_request(Request*); - virtual void process_request(); - virtual void do_pre_move_process(); -}; - -#endif // TEXTREG_HH diff --git a/hdr/timedescription.hh b/hdr/timedescription.hh deleted file mode 100644 index 7e366ec4c2..0000000000 --- a/hdr/timedescription.hh +++ /dev/null @@ -1,50 +0,0 @@ -/* - moment.hh -- part of LilyPond - - (c) 1996,97 Han-Wen Nienhuys -*/ - -#ifndef tdes_HH -#define tdes_HH - -#include "moment.hh" - -/// full info on where we are -struct Time_description { - Moment when_; - - /// if true, no bars needed, no reduction of whole_in_measure - bool cadenza_b_; - - /// current measure info - Moment whole_per_measure_; - - /// where am i - Moment whole_in_measure_; - - /// how long is one beat? - Moment one_beat_; - - /// idem - int bars_i_; - - /* *************** */ - void set_cadenza(bool); - void OK() const; - Time_description(); - void add(Moment dt); - String str()const; - void print() const; - void setpartial(Moment p); - Moment barleft(); - void set_meter(int,int); - static int compare (Time_description&, Time_description&); -}; - -#include "compare.hh" - - -instantiate_compare(Time_description&,Time_description::compare); - -#endif // Time_description_HH - diff --git a/hdr/tstream.hh b/hdr/tstream.hh deleted file mode 100644 index 4d5805c556..0000000000 --- a/hdr/tstream.hh +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef TSTREAM__HH -#define TSTREAM__HH - -#include -#include "string.hh" - - -/** TeX output. - Use this class for writing to a TeX file. - It counts braces to prevent nesting errors, and - it will add a comment sign before each newline. - */ -struct Tex_stream { - bool outputting_comment; - ostream *os; - int nest_level; - - /// open a file for writing - Tex_stream(String filename); - void header(); - /// delegate conversion to string class. - Tex_stream &operator<<(String); - - /// close the file - ~Tex_stream(); -private: - Tex_stream(Tex_stream const&); -}; -#endif diff --git a/hdr/voicegroupregs.hh b/hdr/voicegroupregs.hh deleted file mode 100644 index 649be8e600..0000000000 --- a/hdr/voicegroupregs.hh +++ /dev/null @@ -1,27 +0,0 @@ -/* - voicegroupregs.hh -- declare - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef VOICEGROUPREGS_HH -#define VOICEGROUPREGS_HH - -#include "registergroup.hh" - -struct Voice_group_registers : Register_group { - String group_id_str_; - Complex_walker * walk_l_; - - /* *************** */ - void set_dir(int i); - static bool acceptable_request_b(Request*); - - void acknowledge_element(Staff_elem_info info); - Voice_group_registers(Complex_walker*, String id = ""); - bool try_request(Request*); -}; -#endif // VOICEGROUPREGS_HH diff --git a/hdr/voiceregs.hh b/hdr/voiceregs.hh deleted file mode 100644 index c9e809b618..0000000000 --- a/hdr/voiceregs.hh +++ /dev/null @@ -1,27 +0,0 @@ -/* - voiceregs.hh -- declare Voice_registers - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef VOICEREGS_HH -#define VOICEREGS_HH - -#include "registergroup.hh" - -struct Voice_registers : Register_group { - Voice *voice_l_; - - /* *************** */ - - static bool acceptable_request_b(Request*); - virtual void acknowledge_element(Staff_elem_info info); - - Voice_registers(Complex_walker*,Voice*); -}; - - -#endif // VOICEREGS_HH diff --git a/src/barreg.cc b/src/barreg.cc deleted file mode 100644 index f0b32fd3df..0000000000 --- a/src/barreg.cc +++ /dev/null @@ -1,82 +0,0 @@ -/* - barreg.cc -- implement Bar_register - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "barreg.hh" -#include "bar.hh" -#include "commandrequest.hh" -#include "complexwalker.hh" -#include "scorecolumn.hh" - - -Bar_register::Bar_register(Complex_walker*w) - : Request_register(w) -{ - do_post_move_process(); -} - -bool -Bar_register::try_request(Request*r_l) -{ - if (!r_l->command()->bar()) - return false; - - assert(!bar_req_l_); - bar_req_l_ = r_l->command()->bar(); - - return true; -} - -void -Bar_register::process_request() -{ - - if (bar_req_l_ ) { - bar_p_ = new Bar(bar_req_l_->type_str_); - } else if (!walk_l_->time_.whole_in_measure_) { - bar_p_ = new Bar("|"); - } - - if (bar_p_){ - walk_l_->allow_break(); - announce_element(Staff_elem_info(bar_p_, bar_req_l_, this) ); - } -} - -void -Bar_register::split_bar(Bar *& pre, Bar * no, Bar * &post) -{ - String s= no->type; - if (s == ":|:") { - pre = new Bar(":|"); - post = new Bar("|:"); - }else if (s=="|:") { - post = new Bar(s); - } else { - pre = new Bar(*no); - } -} - -void -Bar_register::do_pre_move_process() -{ - if (bar_p_) { - Bar * post_p =0; - Bar * pre_p =0; - split_bar(pre_p, bar_p_, post_p); - - typeset_breakable_item(pre_p, bar_p_, post_p); - bar_p_ =0; - } -} - -void -Bar_register::do_post_move_process() -{ - bar_req_l_ = 0; - bar_p_ =0; -} diff --git a/src/clefitem.cc b/src/clefitem.cc deleted file mode 100644 index 037aab69b8..0000000000 --- a/src/clefitem.cc +++ /dev/null @@ -1,54 +0,0 @@ -/* - clefitem.cc -- implement Clef_item - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "clefitem.hh" -#include "string.hh" -#include "molecule.hh" -#include "paperdef.hh" -#include "lookup.hh" -#include "clefreg.hh" - -NAME_METHOD(Clef_item); - -Clef_item::Clef_item() -{ - change = true; - read("violin"); -} - -void -Clef_item::read(String t) -{ - type = t; - if (type == "violin") - y_off = 2; - if (type == "alto") - y_off = 4; - if (type == "tenor") - y_off = 6; - if (type == "bass") - y_off = 6; -} -void -Clef_item::read(Clef_register const &k) -{ - read(k.clef_type_str_); -} - -Molecule* -Clef_item::brew_molecule_p()const -{ - String t = type; - if (change) - t += "_change"; - Symbol s = paper()->lookup_p_->clef(t); - Molecule*output = new Molecule(Atom(s)); - output->translate(Offset(0, paper()->internote() * y_off)); - return output; -} - diff --git a/src/clefreg.cc b/src/clefreg.cc deleted file mode 100644 index ed6f78073b..0000000000 --- a/src/clefreg.cc +++ /dev/null @@ -1,97 +0,0 @@ -/* - clef.cc -- implement Clef_register - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys , - Mats Bengtsson -*/ - -#include "clefreg.hh" -#include "clefitem.hh" -#include "debug.hh" -#include "commandrequest.hh" -#include "timedescription.hh" -#include "complexwalker.hh" -#include "staffcolumn.hh" - -Clef_register::Clef_register(Complex_walker*w) - : Request_register(w) -{ - clef_p_ = 0; - - set_type("violin"); -} -bool -Clef_register::set_type(String s) -{ - clef_type_str_ = s; - if (clef_type_str_ == "violin") { - c0_position_i_= -2; - } else if (clef_type_str_ == "alto") { - c0_position_i_= 4; - } else if (clef_type_str_ == "tenor") { - c0_position_i_= 6; - } else if (clef_type_str_ == "bass") { - c0_position_i_= 10; - }else - return false; - walk_l_->set_c0_position(c0_position_i_); - return true; -} - -void -Clef_register::read_req(Clef_change_req*c_l) -{ - if (!set_type(c_l->clef_str_)) - error("unknown clef type ", c_l->defined_ch_c_l_); -} - -bool -Clef_register::try_request(Request * r_l) -{ - - Command_req* creq_l= r_l->command(); - if (!creq_l || !creq_l->clefchange()) - return false; - - accepted_req_arr_.push(creq_l); - // do it now! Others have to read c0_pos. - read_req(creq_l->clefchange()); - return true; -} - -void -Clef_register::process_request() -{ - const Time_description *time_l = &walk_l_->time_; - if (!accepted_req_arr_.size() && - (!time_l->whole_in_measure_|| !time_l->when_)) { - - clef_p_ = new Clef_item; - clef_p_->change = false; - } else if (accepted_req_arr_.size()) { - clef_p_ = new Clef_item; - clef_p_->change = true; - } - if (clef_p_) { - clef_p_->read(*this); -// announce_element(Staff_elem_info(clef_p_, -// accepted_req_arr_[0], this)); - } -} - -void -Clef_register::do_pre_move_process() -{ - if (!clef_p_) - return; - if (clef_p_->change) { - typeset_breakable_item(new Clef_item(*clef_p_), - clef_p_, new Clef_item(*clef_p_) ); - } else { - typeset_breakable_item(0, 0, clef_p_); - } - clef_p_ = 0; -} - diff --git a/src/complexstaff.cc b/src/complexstaff.cc deleted file mode 100644 index 627b5745e2..0000000000 --- a/src/complexstaff.cc +++ /dev/null @@ -1,42 +0,0 @@ -#include "debug.hh" -#include "complexstaff.hh" -#include "complexwalker.hh" -#include "score.hh" -#include "pscore.hh" -#include "staffsym.hh" -#include "pscore.hh" -#include "bar.hh" -#include "meter.hh" -#include "scorecolumn.hh" -#include "commandrequest.hh" - -const NO_LINES = 5; - -/** Aside from putting fields right, this generates the staff symbol. - */ -void -Complex_staff::set_output(PScore* pscore_l ) -{ - pstaff_l_ = new PStaff(pscore_l); - pscore_l_ = pscore_l; - pscore_l_->add(pstaff_l_); - - Staff_symbol *span_p = new Staff_symbol(NO_LINES); - - Score_column* col_last - =score_l_->find_col(score_l_->last(), false); - Score_column* col_first= - score_l_->find_col(0, false); - - span_p->set_extent(col_first->pcol_l_->postbreak_p_, - col_last->pcol_l_->prebreak_p_); - - pscore_l_->typeset_spanner(span_p, pstaff_l_); -} - - -Staff_walker * -Complex_staff::get_walker_p() -{ - return new Complex_walker(this); -} diff --git a/src/complexwalker.cc b/src/complexwalker.cc deleted file mode 100644 index e3bcade138..0000000000 --- a/src/complexwalker.cc +++ /dev/null @@ -1,279 +0,0 @@ -/* - complexwalker.cc -- implement Complex_walker - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "associter.hh" -#include "script.hh" -#include "musicalrequest.hh" -#include "staffcolumn.hh" -#include "voice.hh" -#include "pscore.hh" -#include "complexstaff.hh" -#include "debug.hh" -#include "voicegroupregs.hh" -#include "voiceregs.hh" -#include "complexwalker.hh" -#include "misc.hh" -#include "commandrequest.hh" -#include "walkregs.hh" - - -void -Complex_walker::announce_element(Staff_elem_info info) -{ - info.group_regs_l_ = find_voice_group((Voice*)info.voice_l_); - announce_info_arr_.push(info); -} - -void -Complex_walker::do_announces() -{ - Request dummy_req; - for (int i = 0; i < announce_info_arr_.size(); i++){ - Staff_elem_info info = announce_info_arr_[i]; - - if (!info.req_l_) - info.req_l_ = &dummy_req; - - walk_regs_p_->acknowledge_element(info); - for (iter_top(voice_reg_list_,j); j.ok(); j++) { - j->acknowledge_element(info); - } - for (iter_top ( group_reg_list_, j); j.ok(); j++) { - j->acknowledge_element(info); - } - } -} - -Voice_registers * -Complex_walker::find_voice_reg(Voice*v_l)const -{ - for (iter_top(voice_reg_list_, i); i.ok(); i++) { - if (i->voice_l_ == v_l) - return i; - } - return 0; -} - -Voice_registers* -Complex_walker::get_voice_reg(Voice*v_l) -{ - Voice_registers *regs_p=find_voice_reg(v_l); - if (regs_p) - return regs_p; - - regs_p = new Voice_registers(this,v_l); - voice_reg_list_.bottom().add (regs_p); - return regs_p; -} - -Voice_group_registers * -Complex_walker::find_voice_group(Voice* v_l)const -{ - if (!voice_group_map_.elt_query(v_l)) - return 0; - else return voice_group_map_[v_l]; -} - -Voice_group_registers * -Complex_walker::find_voice_group(const char *id)const -{ - for (iter_top(group_reg_list_, i); i.ok(); i++) - if (i->group_id_str_ == id) - return i; - return 0; -} - - -Voice_group_registers * -Complex_walker::get_voice_group(Voice *v_l) -{ - Voice_group_registers *group_p = find_voice_group(v_l); - if (group_p) - return group_p; - - group_p = new Voice_group_registers(this); - group_reg_list_.bottom().add(group_p); - voice_group_map_[v_l] = group_p; - return group_p; -} - - -Voice_group_registers * -Complex_walker::get_voice_group(const char* id) -{ - Voice_group_registers *group_p = find_voice_group(id); - if (group_p) - return group_p; - group_p = new Voice_group_registers(this,id); - group_reg_list_.bottom().add(group_p); - return group_p; -} - -void -Complex_walker::do_change_group(Voice * v, String group_id_str) -{ - voice_group_map_[v] = get_voice_group(group_id_str); -} - -bool -Complex_walker::try_command_request(Command_req *req_l) -{ - bool b=false; - Voice *voice_l = (Voice*)req_l->elt_l_->voice_l_; // ugh - if (req_l->groupchange()){ - do_change_group(voice_l, req_l->groupchange()->newgroup_str_); - b|= true; - } else if(req_l->groupfeature()) { - Voice_group_registers* reg_l = get_voice_group(voice_l); - b |= reg_l->try_request(req_l); - } else { - b |= walk_regs_p_->try_request(req_l); - } - return b; -} - -void -Complex_walker::try_request(Request*req) -{ - bool b=false; - Voice *voice_l = (Voice*)req->elt_l_->voice_l_; // ahh. This sux - - if (req->command()) { - b = try_command_request(req->command()); - } else if (Voice_registers::acceptable_request_b(req)) { - Voice_registers *vregs_l = get_voice_reg(voice_l); - b = vregs_l->try_request(req); - } else if (Voice_group_registers::acceptable_request_b(req)){ - Voice_group_registers* reg_l = get_voice_group(voice_l); - b = reg_l->try_request(req); - } - - if (!b) - warning("junking request: " + String(req->name()), - req->defined_ch_c_l_); -} - -void -Complex_walker::process_requests() -{ - Staff_column*c =ptr(); - - for (int i=0; i < c->commandreq_l_arr_.size(); i++) { - try_request(c->commandreq_l_arr_[i]); - } - - for (int i=0; i < c->musicalreq_l_arr_.size(); i++) { - try_request(c->musicalreq_l_arr_[i]); - } - - regs_process_requests(); - do_announces(); -} - -void -Complex_walker::regs_process_requests() -{ - walk_regs_p_->process_requests(); - for (iter_top(voice_reg_list_, j); j.ok(); j++) { - j->process_requests(); - } - for (iter_top(group_reg_list_, j); j.ok(); j++) - j->process_requests(); -} - -void -Complex_walker::typeset_element(Staff_elem *elem_p) -{ - if (!elem_p) - return; - if (elem_p->spanner()) - pscore_l_->typeset_spanner(elem_p->spanner(), staff()->pstaff_l_); - else - ptr()->typeset_musical_item(elem_p->item()); -} - -Complex_walker::Complex_walker(Complex_staff*s) - : Staff_walker(s, s->pstaff_l_->pscore_l_) -{ - walk_regs_p_ = new Walker_registers(this); - do_post_move(); -} - - -Complex_walker::~Complex_walker() -{ -} - -int -Complex_walker::c0_position_i()const -{ - return c0_position_i_; -} - -void -Complex_walker::set_c0_position(int p) -{ - c0_position_i_ =p; -} - -Complex_staff* -Complex_walker::staff() -{ - return (Complex_staff*) staff_l_; -} - - -void -Complex_walker::do_pre_move() -{ - walk_regs_p_->pre_move_processing(); - for (iter_top(voice_reg_list_,i); i.ok(); i++) { - i->pre_move_processing(); - } - for (iter_top (group_reg_list_, j); j.ok(); j++) - j->pre_move_processing(); - - ptr()->typeset_breakable_items(prebreak_item_p_arr_, - nobreak_item_p_arr_, - postbreak_item_p_arr_); -} - -void -Complex_walker::do_post_move() -{ - walk_regs_p_->post_move_processing(); - for (iter_top(voice_reg_list_,i); i.ok(); i++) { - i->post_move_processing(); - } - announce_info_arr_.set_size(0); - for (iter_top (group_reg_list_, j); j.ok(); j++) - j->post_move_processing(); -} - -Array -Complex_walker::get_voice_regs(Voice_group_registers* group_regs_l) const - return l_arr; -{ - for (Assoc_iter i(voice_group_map_); - i.ok(); i++) { - if (i.val() == group_regs_l) - l_arr.push(find_voice_reg(i.key())); - } -} - -void -Complex_walker::typeset_breakable_item(Item * pre_p , Item * nobreak_p, - Item * post_p) -{ - if (pre_p) - prebreak_item_p_arr_.push(pre_p); - if (nobreak_p) - nobreak_item_p_arr_.push(nobreak_p); - if (post_p) - postbreak_item_p_arr_.push(post_p); -} diff --git a/src/directionalspanner.cc b/src/directionalspanner.cc deleted file mode 100644 index e7ce9c7ddc..0000000000 --- a/src/directionalspanner.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "directionalspanner.hh" - -Directional_spanner::Directional_spanner() -{ - dir_i_ = 0; -} diff --git a/src/inputfile.cc b/src/inputfile.cc deleted file mode 100644 index 9e1a496834..0000000000 --- a/src/inputfile.cc +++ /dev/null @@ -1,47 +0,0 @@ -/* - inputfile.cc -- implement Input_file - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys Jan Nieuwenhuizen -*/ - -#include -#include -#include "proto.hh" -#include "plist.hh" -#include "inputfile.hh" -#include "debug.hh" -#include "sourcefile.hh" -#include "binary-source-file.hh" -#include "source.hh" - -Input_file::Input_file(String s) -{ - name = s; - line = 1; - String pf(s); - if ( pf == "" ) { - is = &cin; - defined_ch_c_l_ = 0; - sourcefile_l_ = 0; - } - else { - Source_file* sourcefile_p = 0; - // ugh, very dirty, need to go away - if ( ( pf.right_str( 3 ).lower_str() == "mid" ) || ( pf.right_str( 4 ).lower_str() == "midi" ) ) - sourcefile_p = new Binary_source_file( pf ); - else - sourcefile_p = new Source_file( pf ); - source_l_g->add( sourcefile_p ); - sourcefile_l_ = sourcefile_p; - is = sourcefile_l_->istream_l(); - defined_ch_c_l_ = sourcefile_l_->ch_c_l(); - } - cout << "[" << pf << flush; -} - -Input_file::~Input_file() -{ - cout << "]" << flush; -} diff --git a/src/inputmusic.cc b/src/inputmusic.cc deleted file mode 100644 index b7ad70b0ab..0000000000 --- a/src/inputmusic.cc +++ /dev/null @@ -1,251 +0,0 @@ -#include "debug.hh" -#include "inputmusic.hh" -#include "voice.hh" -#include "musicalrequest.hh" - -void -Input_music::check_plet(Voice_element* velt_l) -{ - for (iter_top(velt_l->reqs,i); i.ok(); i++) - if ( i->plet() ) { - Moment start_moment = 0; - if ( !find_plet_start_bo( i->plet()->type_c_, start_moment ) ) { - error( "begin of plet not found", i->defined_ch_c_l_ ); - break; - } - Moment moment = 0; - set_plet_backwards( moment, start_moment, i->plet()->dur_i_, i->plet()->type_i_ ); - i.del(); - break; - } -} - -void -Simple_music::add(Voice_element*v) -{ - voice_.add(v); -} - -Moment -Simple_music::length()const -{ - return voice_.last(); -} -void -Simple_music::translate_time(Moment t) -{ - voice_.start += t; -} - -Voice_list -Simple_music::convert()const -{ - Voice_list l; - l.bottom().add(new Voice(voice_)); - return l; -} - - -void -Simple_music::print() const -{ - mtor << "Simple_music {"; - voice_.print(); - mtor << "}\n"; -} -bool -Simple_music::find_plet_start_bo(char c, Moment& moment_r) -{ - return voice_.find_plet_start_bo(c, moment_r); -} -void -Simple_music::set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i) -{ - voice_.set_plet_backwards(now_moment_r, until_moment, num_i, den_i); -} - -/* *************** */ - -void -Complex_music::add(Input_music*v) -{ - elts.bottom().add(v); -} - -void -Complex_music::print() const -{ - for (iter_top(elts,i); i.ok(); i++) - i->print(); -} - -void -Complex_music::concatenate(Complex_music*h) -{ - for (iter_top(h->elts,i); i.ok(); i++) - add(i->clone()); -} - -Complex_music::Complex_music() -{ -} - -Complex_music::Complex_music(Complex_music const&s) -{ - for (iter_top(s.elts,i); i.ok(); i++) - add(i->clone()); -} -void -Complex_music::set_default_group(String g) -{ - for (iter_top(elts,i); i.ok(); i++) - i->set_default_group(g); -} -bool -Complex_music::find_plet_start_bo(char c, Moment& moment_r) -{ - for (iter_bot(elts,i); i.ok(); i--) { - if ( i->find_plet_start_bo(c, moment_r) ) - return true; - } - return false; -} -void -Complex_music::set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i) -{ - for (iter_bot(elts,i); i.ok(); i--) { - i->set_plet_backwards(now_moment_r, until_moment, num_i, den_i); - } -} -/* *************************************************************** */ - -void -Music_voice::print() const -{ - mtor << "Music_voice {"; - Complex_music::print(); - mtor << "}\n"; -} - -void -Music_voice::add_elt(Voice_element*v) -{ - PCursor c(elts.bottom()); - if (!c.ok() || !c->simple()) { - Simple_music*vs = new Simple_music; - - c.add(vs); - } - - c = elts.bottom(); - Simple_music *s = c->simple(); - s->add(v); - - check_plet(v); -} - -Moment -Music_voice::length()const -{ - Moment l = 0; - - for (iter_top(elts,i); i.ok(); i++) - l += i->length(); - return l; -} - - -Voice_list -Music_voice::convert()const -{ - Voice_list l; - Moment here = 0; - - for (iter_top(elts,i); i.ok(); i++) { - Moment len = i->length(); - Voice_list k(i->convert()); - k.translate_time(here); - l.concatenate(k); - here +=len; - } - return l; -} - -void -Music_voice::translate_time(Moment t) -{ - elts.bottom()->translate_time(t); -} - - - -/* *************** */ - -void -Music_general_chord::add_elt(Voice_element*v) -{ - Simple_music*vs = new Simple_music; - vs->add(v); - elts.bottom().add(vs); - - check_plet(v); -} - -void -Music_general_chord::print() const -{ - mtor << "Music_general_chord {"; - Complex_music::print(); - mtor << "}\n"; -} - -void -Music_general_chord::translate_time(Moment t) -{ - for (iter_top(elts,i); i.ok(); i++) - i->translate_time(t); -} - -Moment -Music_general_chord::length()const -{ - Moment l =0; - - for (iter_top(elts,i); i.ok(); i++) - l = l >? i->length(); - return l; -} - -Voice_list -Music_general_chord::convert()const -{ - Voice_list l; - for (iter_top(elts,i); i.ok(); i++) { - Voice_list k(i->convert()); - l.concatenate(k); - } - return l; -} - -/* *************** */ - -void -Multi_voice_chord::set_default_group(String g) -{ - int j=0; - for (iter_top(elts, i); i.ok(); i++) { - i->set_default_group(g + String(j)); - j++; - } -} - - -/* *************** */ - -void -Voice_list::translate_time(Moment x) -{ - for (iter_top(*this,i); i.ok(); i++) - i->start += x; -} - diff --git a/src/inputscore.cc b/src/inputscore.cc deleted file mode 100644 index 6fca9dc8eb..0000000000 --- a/src/inputscore.cc +++ /dev/null @@ -1,102 +0,0 @@ -/* - inputscore.cc -- implement Input_score - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "debug.hh" -#include "inputscore.hh" -#include "inputstaff.hh" -#include "inputmusic.hh" -#include "score.hh" -#include "paperdef.hh" -#include "mididef.hh" -#include "staff.hh" - - -void -Input_score::add(Input_staff*s) -{ - staffs_.bottom().add(s); -} - -void -Input_score::set(Paperdef*p) -{ - delete paper_p_; - paper_p_ = p; -} - -void -Input_score::set(Midi_def* midi_p) -{ - delete midi_p_; - midi_p_ = midi_p; -} - -Input_score::Input_score(Input_score const&s) -{ - paper_p_ = (s.paper_p_)? new Paperdef(*s.paper_p_) :0; - midi_p_ = (s.midi_p_)? new Midi_def(*s.midi_p_) : 0; - defined_ch_c_l_ = s.defined_ch_c_l_; - errorlevel_i_ = s.errorlevel_i_; - score_wide_music_p_ = (s.score_wide_music_p_) ? - s.score_wide_music_p_->clone():0; -} - -Score* -Input_score::parse() -{ - Score *s_p = new Score; - s_p->defined_ch_c_l_= defined_ch_c_l_; - s_p->errorlevel_i_ = errorlevel_i_; - if (midi_p_) - s_p->set(new Midi_def(*midi_p_)); - if (paper_p_) - s_p->set( new Paperdef(*paper_p_)); - - for (iter_top(staffs_,i); i.ok(); i++) { - Staff* staf_p=i->parse(s_p, score_wide_music_p_); - s_p->add(staf_p); - } - - return s_p; -} - -void -Input_score::set(Input_music *m_p) -{ - delete score_wide_music_p_; - score_wide_music_p_ =m_p; -} - - -Input_score::~Input_score() -{ - delete paper_p_; - delete score_wide_music_p_; - delete midi_p_; -} - -Input_score::Input_score() -{ - score_wide_music_p_ =0; - defined_ch_c_l_=0; - paper_p_= 0; - midi_p_ = 0; - errorlevel_i_ = 0; -} - -void -Input_score::print()const -{ -#ifndef NPRINT - mtor << "Input_score {\n"; - for (iter_top(staffs_,i); i.ok(); i++) { - i->print(); - } - mtor << "}\n"; -#endif -} diff --git a/src/inputstaff.cc b/src/inputstaff.cc deleted file mode 100644 index 952af6bd71..0000000000 --- a/src/inputstaff.cc +++ /dev/null @@ -1,88 +0,0 @@ -/* - inputstaff.cc -- implement Input_staff - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "debug.hh" -#include "score.hh" -#include "inputmusic.hh" -#include "inputstaff.hh" -#include "staff.hh" -#include "complexstaff.hh" -#include "lyricstaff.hh" - -#include "lexer.hh" - - -Input_staff::Input_staff(String s) -{ - score_wide_music_p_ =0; - type= s; - defined_ch_c_l_ = 0; -} - -void -Input_staff::add(Input_music*m) -{ - music_.bottom().add(m); -} - -Staff* -Input_staff::parse(Score*score_l, Input_music *default_score_wide) -{ - Staff *p=0; - if (type == "melodic") - p = new Complex_staff; - else if (type == "lyric") - p = new Lyric_staff; - else { - error( "Unknown staff-type `" + type +"\'", defined_ch_c_l_ ); - exit( 1 ); - } - - p->score_l_ = score_l; - - for (iter_top(music_,i); i.ok(); i++) { - Voice_list vl = i->convert(); - p->add(vl); - } - Voice_list vl = (score_wide_music_p_) ? score_wide_music_p_->convert() - : default_score_wide->convert(); - p->add(vl); - return p; -} - -Input_staff::Input_staff(Input_staff const&s) -{ - for (iter_top(s.music_,i); i.ok(); i++) - add(i->clone()); - defined_ch_c_l_ = s.defined_ch_c_l_; - type = s.type; - score_wide_music_p_ = (s.score_wide_music_p_) ? - s.score_wide_music_p_->clone() : 0; -} - -void -Input_staff::print() const -{ -#ifndef NPRINT - mtor << "Input_staff {\n"; - for (iter_top(music_,i); i.ok(); i++) - i->print(); - mtor << "}\n"; -#endif -} -void -Input_staff::set_score_wide(Input_music *m_p) -{ - delete score_wide_music_p_; - score_wide_music_p_ = m_p; -} - -Input_staff::~Input_staff() -{ - delete score_wide_music_p_; -} diff --git a/src/keyitem.cc b/src/keyitem.cc deleted file mode 100644 index 6b465572dd..0000000000 --- a/src/keyitem.cc +++ /dev/null @@ -1,70 +0,0 @@ -#include "keyitem.hh" -#include "key.hh" -#include "debug.hh" -#include "molecule.hh" -#include "paperdef.hh" -#include "lookup.hh" -//#include "clefreg.hh" -#include "keyreg.hh" - -const int FLAT_TOP_PITCH=2; /* fes,ges,as and bes typeset in lower octave */ -const int SHARP_TOP_PITCH=4; /* ais and bis typeset in lower octave */ - -NAME_METHOD(Key_item); - -Key_item::Key_item(int c) -{ - set_c_position(c); -} - -void -Key_item::read(const Key_register& key_reg_r) -{ - const Array &idx_arr =key_reg_r.accidental_idx_arr_; - for (int i = 0 ; i< idx_arr.size(); i++) { - int note = idx_arr[i]; - int acc = key_reg_r.key_.acc(note); - - add(note, acc); - } -} - -void -Key_item::set_c_position(int c0) -{ - int octaves =(abs(c0) / 7) +1 ; - c_position=(c0 + 7*octaves)%7; -} - - -void -Key_item::add(int p, int a) -{ - if ((a<0 && p>FLAT_TOP_PITCH) || - (a>0 && p>SHARP_TOP_PITCH)) { - p -= 7; /* Typeset below c_position */ - } - pitch.push(p); - acc.push(a); -} - - -Molecule* -Key_item::brew_molecule_p()const -{ - Molecule*output = new Molecule; - Real inter = paper()->internote(); - - for (int i =0; i < pitch.size(); i++) { - Symbol s= paper()->lookup_p_->accidental(acc[i]); - Atom a(s); - a.translate(Offset(0,(c_position + pitch[i]) * inter)); - Molecule m(a); - output->add_right(m); - } - Molecule m(paper()->lookup_p_->fill(Box( - Interval(0, paper()->note_width()), - Interval(0,0)))); - output->add_right(m); - return output; -} diff --git a/src/keyreg.cc b/src/keyreg.cc deleted file mode 100644 index 197a8f6b31..0000000000 --- a/src/keyreg.cc +++ /dev/null @@ -1,98 +0,0 @@ -/* - keyreg.cc -- implement Key_register - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys - - todo: key undo - - */ - -#include "keyreg.hh" -#include "keyitem.hh" -#include "complexwalker.hh" -#include "commandrequest.hh" -#include "staffcolumn.hh" -#include "localkeyreg.hh" -#include "musicalrequest.hh" - -Key_register::Key_register(Complex_walker*w) - : Request_register(w) -{ - do_post_move_process(); -} - - -bool -Key_register::try_request(Request * req_l) -{ - if (!req_l->command()->keychange()) - return false; - assert(!keyreq_l_); // todo - keyreq_l_ = req_l->command()->keychange(); - read_req(keyreq_l_); - return true; -} - -void -Key_register::acknowledge_element(Staff_elem_info info) -{ - Command_req * r_l = info.req_l_->command() ; - if (r_l && r_l->clefchange() && !kit_p_) { - kit_p_ = new Key_item(walk_l_->c0_position_i()); - kit_p_->read(*this); - announce_element(Staff_elem_info(kit_p_, keyreq_l_, this)); - } -} - -void -Key_register::process_request() -{ - Time_description *time_l = &walk_l_->time_; - - if (!keyreq_l_ && - (!time_l->whole_in_measure_|| !time_l->when_)) { - default_key_b_ = true; - } - - if ( default_key_b_ || keyreq_l_) { - kit_p_ = new Key_item(walk_l_->c0_position_i()); - kit_p_->read(*this); - announce_element(Staff_elem_info(kit_p_, keyreq_l_, this)); - } -} - -void -Key_register::do_pre_move_process() -{ - if (kit_p_) { - if (default_key_b_) - typeset_breakable_item(0,0,kit_p_); - else - typeset_breakable_item( - new Key_item(*kit_p_), kit_p_, new Key_item(*kit_p_)); - kit_p_ = 0; - } -} - - - -void -Key_register::read_req(Key_change_req * r) -{ - accidental_idx_arr_.set_size(0); - for (int i = 0; i < r->melodic_p_arr_.size(); i ++) { - int n_i=r->melodic_p_arr_[i]->notename_i_; - key_.set(n_i, r->melodic_p_arr_[i]->accidental_i_); - accidental_idx_arr_.push(n_i); - } -} - -void -Key_register::do_post_move_process() -{ - keyreq_l_ = 0; - default_key_b_ = false; - kit_p_ = 0; -} diff --git a/src/localkeyitem.cc b/src/localkeyitem.cc deleted file mode 100644 index 77bad62b2e..0000000000 --- a/src/localkeyitem.cc +++ /dev/null @@ -1,93 +0,0 @@ -#include "localkeyitem.hh" -#include "molecule.hh" -#include "scalar.hh" -#include "lookup.hh" -#include "paperdef.hh" -#include "musicalrequest.hh" -#include "notehead.hh" -#include "misc.hh" - -NAME_METHOD(Local_key_item); - -Local_key_item::Local_key_item(int i) -{ - c0_position = i; -} - -void -Local_key_item::add(Item*head_l) -{ - support_items_.push(head_l); - add_depedency(head_l); -} - -void -Local_key_item::add(Melodic_req*m_l) -{ - add(m_l->octave_i_, m_l->notename_i_, m_l->accidental_i_); -} -void -Local_key_item::add (int o, int p , int a) -{ - Local_acc l; - l.octave = o; - l.name = p; - l.acc = a; - accs.push(l); -} - -void -Local_key_item::do_pre_processing() -{ - accs.sort(Local_acc::compare); -} - -Molecule* -Local_key_item::brew_molecule_p()const -{ - Molecule* output = new Molecule; - Molecule*octmol = 0; - int lastoct = -100; - for (int i = 0; i < accs.size(); i++) { - // do one octave - if (accs[i].octave != lastoct) { - if (octmol){ - Real dy =lastoct*7*paper()->internote(); - octmol->translate(Offset(0, dy)); - output->add(*octmol); - delete octmol; - } - octmol= new Molecule; - } - lastoct = accs[i].octave; - Symbol s =paper()->lookup_p_->accidental(accs[i].acc); - Atom a(s); - Real dy = (accs[i].name + c0_position) * paper()->internote(); - a.translate(Offset(0,dy)); - - octmol->add_right(a); - } - - if (octmol){ - Real dy =lastoct*7*paper()->internote(); - octmol->translate(Offset(0, dy)); - output->add(*octmol); - delete octmol; - } - - Interval head_width=itemlist_width(support_items_); - output->translate(Offset(-output->extent().x.right + head_width.left ,0)); - - return output; -} - -int -Local_acc::compare(Local_acc&a, Local_acc&b) -{ - if (a.octave - b.octave) - return a.octave - b.octave; - if (a.name - b.name) - return a.name - b.name; - - assert(false); -}; diff --git a/src/localkeyreg.cc b/src/localkeyreg.cc deleted file mode 100644 index 3817a36ba2..0000000000 --- a/src/localkeyreg.cc +++ /dev/null @@ -1,67 +0,0 @@ -/* - localkeyreg.cc -- implement Local_key_register - - (c) 1997 Han-Wen Nienhuys -*/ -#include "musicalrequest.hh" -#include "commandrequest.hh" -#include "localkeyreg.hh" -#include "localkeyitem.hh" -#include "complexwalker.hh" -#include "keyreg.hh" -#include "debug.hh" - -Local_key_register::Local_key_register(Complex_walker*w) - : Request_register(w) -{ - key_item_p_ = 0; - key_c_l_ = 0; -} - -void -Local_key_register::do_pre_move_process() -{ - if (key_item_p_) { - walk_l_->typeset_element(key_item_p_); - key_item_p_ = 0; - } -} -void -Local_key_register::acknowledge_element(Staff_elem_info info) -{ - if (info.req_l_->melodic()) { - Melodic_req * melodic_l_ = info.req_l_->melodic(); - - if( melodic_l_->forceacc_b_ || - local_key_.oct(melodic_l_->octave_i_).acc(melodic_l_->notename_i_) - != melodic_l_->accidental_i_) { - Item * support_l_ = info.elem_p_->item(); - - - if (!key_item_p_) { - key_item_p_ = new Local_key_item(walk_l_->c0_position_i()); - } - - key_item_p_->add(melodic_l_); - key_item_p_->add(support_l_); - local_key_.oct(melodic_l_->octave_i_) - .set(melodic_l_->notename_i_, melodic_l_->accidental_i_); - } - } else if (info.req_l_->command() && - info.req_l_->command()->keychange()) { - Key_register * key_reg_l = (Key_register*)info.origin_reg_l_; - key_c_l_ = &key_reg_l->key_; - local_key_.reset(*key_c_l_); - } -} - -void -Local_key_register::process_request() -{ - if (!walk_l_->time_.whole_in_measure_) { - if (key_c_l_) - local_key_.reset(*key_c_l_); - else if( walk_l_->when() >0) - warning ("Help me! can't figure current key", 0); - } -} diff --git a/src/lyricitem.cc b/src/lyricitem.cc deleted file mode 100644 index b35c866761..0000000000 --- a/src/lyricitem.cc +++ /dev/null @@ -1,28 +0,0 @@ -#include "musicalrequest.hh" -#include "paperdef.hh" -#include "lyricitem.hh" -#include "stem.hh" -#include "molecule.hh" -#include "lookup.hh" -#include "textdef.hh" -#include "sourcefile.hh" -#include "source.hh" -#include "debug.hh" -#include "main.hh" - -Lyric_item::Lyric_item(Lyric_req* lreq_l, int voice_count_i) - : Text_item(lreq_l,0) -{ - pos_i_ = -voice_count_i * 4 ; // 4 fontsize dependant. TODO - dir_i_ = -1; -} - -void -Lyric_item::do_pre_processing() -{ - // override Text_item - - // test context-error - if ( tdef_l_->text_str_.index_i( "Gates" ) )// :-) - warning( "foul word", tdef_l_->defined_ch_c_l_ ); -} diff --git a/src/meterreg.cc b/src/meterreg.cc deleted file mode 100644 index 3aab0fb291..0000000000 --- a/src/meterreg.cc +++ /dev/null @@ -1,63 +0,0 @@ -/* - meterreg.cc -- implement Meter_register - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "meterreg.hh" -#include "meter.hh" -#include "commandrequest.hh" - -Meter_register::Meter_register(Complex_walker*w) - : Request_register(w) -{ - do_post_move_process(); -} - -bool -Meter_register::try_request(Request*r_l) -{ - if (!r_l->command()->meterchange()) - return false; - - assert(!meter_req_l_); - meter_req_l_ = r_l->command()->meterchange(); - - return true; -} - -void -Meter_register::process_request() -{ - if (meter_req_l_ ) { - Array args; - args.push(meter_req_l_->beats_i_); - args.push(meter_req_l_->one_beat_i_); - - meter_p_ = new Meter(args); - } - - if (meter_p_) - announce_element(Staff_elem_info(meter_p_, meter_req_l_, this) ); -} - -void -Meter_register::do_pre_move_process() -{ - if (meter_p_) { - Meter * post_p =new Meter(*meter_p_); - Meter * pre_p =new Meter(*meter_p_); - - typeset_breakable_item(pre_p, meter_p_, post_p); - meter_p_ =0; - } -} - -void -Meter_register::do_post_move_process() -{ - meter_req_l_ = 0; - meter_p_ =0; -} diff --git a/src/mididef.cc b/src/mididef.cc deleted file mode 100644 index 2c7bf7a7a7..0000000000 --- a/src/mididef.cc +++ /dev/null @@ -1,64 +0,0 @@ -// -// mididef.cc -- implement midi output -// -// source file of the LilyPond music typesetter -// -// (c) 1997 Jan Nieuwenhuizen - -#include -#include "misc.hh" -#include "mididef.hh" -#include "debug.hh" - -// classes, alphasorted -// statics -// constructors -// destructor -// routines, alphasorted - -Midi_def::Midi_def() -{ - set_tempo( Moment( 1, 4 ), 60 ); - outfile_str_ = "lelie.midi"; -} - -Midi_def::Midi_def( Midi_def const& midi_c_r ) -{ - whole_seconds_f_ = midi_c_r.whole_seconds_f_; - outfile_str_ = midi_c_r.outfile_str_; -} - -Midi_def::~Midi_def() -{ -} - -Real -Midi_def::duration_to_seconds_f( Moment moment ) -{ - if (!moment) - return 0; - - return whole_seconds_f_ * moment; -} - -int -Midi_def::get_tempo_i( Moment moment ) -{ - return Moment( whole_seconds_f_ ) * Moment( 60 ) * moment; -} - -void -Midi_def::print() const -{ -#ifndef NPRINT - mtor << "Midi {4/min: " << Real( 60 ) / ( whole_seconds_f_ * 4 ); - mtor << "out: " << outfile_str_; - mtor << "}\n"; -#endif -} - -void -Midi_def::set_tempo( Moment moment, int count_per_minute_i ) -{ - whole_seconds_f_ = Moment( count_per_minute_i ) / Moment( 60 ) / moment; -} diff --git a/src/midiitem.cc b/src/midiitem.cc deleted file mode 100644 index c57f9ff5de..0000000000 --- a/src/midiitem.cc +++ /dev/null @@ -1,195 +0,0 @@ -// -// midiitem.cc -// -// source file of the LilyPond music typesetter -// -// (c) 1997 Jan Nieuwenhuizen - -#include -#include "plist.hh" -#include "pcol.hh" -#include "debug.hh" -#include "misc.hh" -#include "request.hh" -#include "musicalrequest.hh" -#include "voice.hh" -#include "midiitem.hh" -#include "midistream.hh" - -Midi_chunk::Midi_chunk() -{ -} - -void -Midi_chunk::add( String str ) -{ - data_str_ += str; -} - -void -Midi_chunk::set( String header_str, String data_str, String footer_str ) -{ - data_str_ = data_str; - footer_str_ = footer_str; - header_str_ = header_str; -} - -String -Midi_chunk::str() -{ - String str = header_str_; - String length_str = String_convert::i2hex_str( data_str_.length_i() + footer_str_.length_i(), 8, '0' ); - length_str = String_convert::hex2bin_str( length_str ); - str += length_str; - str += data_str_; - str += footer_str_; - return str; -} - -Midi_duration::Midi_duration( Real seconds_f ) -{ - seconds_f_ = seconds_f; -} - -String -Midi_duration::str() -{ - return String( ""; -} - -Midi_header::Midi_header( int format_i, int tracks_i, int clocks_per_4_i ) -{ - String str; - - String format_str = String_convert::i2hex_str( format_i, 4, '0' ); - str += String_convert::hex2bin_str( format_str ); - - String tracks_str = String_convert::i2hex_str( tracks_i, 4, '0' ); - str += String_convert::hex2bin_str( tracks_str ); - - String tempo_str = String_convert::i2hex_str( clocks_per_4_i, 4, '0' ); - str += String_convert::hex2bin_str( tempo_str ); - - set( "MThd", str, "" ); -} - -String -Midi_item::i2varint_str( int i ) -{ - int buffer_i = i & 0x7f; - while ( (i >>= 7) > 0 ) { - buffer_i <<= 8; - buffer_i |= 0x80; - buffer_i += (i & 0x7f); - } - - String str; - while ( 1 ) { - str += (char)buffer_i; - if ( buffer_i & 0x80 ) - buffer_i >>= 8; - else - break; - } - return str; -} - -void -Midi_item::output_midi( Midi_stream& midi_stream_r ) -{ - midi_stream_r << str(); -} - - -Midi_note::Midi_note( Melodic_req* melreq_l, int channel_i, bool on_bo ) -{ - assert(melreq_l); - pitch_i_ = melreq_l->pitch() + c0_pitch_i_c_; - channel_i_ = channel_i; - - // poor man-s staff dynamics: - dynamic_byte_ = (melreq_l)? 0x64 - 0x10 * channel_i_:0; - on_b_ = on_bo; -} - -String -Midi_note::str() -{ - if ( pitch_i_ != INT_MAX ) { - Byte status_byte = ( on_b_ ? 0x90 : 0x80 ) + channel_i_; - String str = String( (char)status_byte ); - str += (char)pitch_i_; - // poor man-s staff dynamics: - str += (char)dynamic_byte_; - return str; - } - return String( "" ); -} - -Midi_tempo::Midi_tempo( int tempo_i ) -{ - tempo_i_ = tempo_i; -} - -String -Midi_tempo::str() -{ - int useconds_per_4_i = 60 * (int)1e6 / tempo_i_; - String str = "ff5103"; - str += String_convert::i2hex_str( useconds_per_4_i, 6, '0' ); - return String_convert::hex2bin_str( str ); -} - -Midi_track::Midi_track( int number_i ) -{ -// 4D 54 72 6B MTrk -// 00 00 00 3B chunk length (59) -// 00 FF 58 04 04 02 18 08 time signature -// 00 FF 51 03 07 A1 20 tempo - -// FF 59 02 sf mi Key Signature -// sf = -7: 7 flats -// sf = -1: 1 flat -// sf = 0: key of C -// sf = 1: 1 sharp -// sf = 7: 7 sharps -// mi = 0: major key -// mi = 1: minor key - - number_i_ = number_i; - - char const* data_ch_c_l = "00" "ff58" "0404" "0218" "08" -// "00" "ff51" "0307" "a120" -// why a key at all, in midi? -// key: C - "00" "ff59" "02" "00" "00" -// key: F (scsii-menuetto) -// "00" "ff59" "02" "ff" "00" - ; - - String data_str; - // only for format 0 (currently using format 1)? - data_str += String_convert::hex2bin_str( data_ch_c_l ); - - char const* footer_ch_c_l = "00" "ff2f" "00"; - String footer_str = String_convert::hex2bin_str( footer_ch_c_l ); - - set( "MTrk", data_str, footer_str ); -} - -void -Midi_track::add( int delta_time_i, String event_str ) -{ - assert(delta_time_i >= 0); - Midi_chunk::add( i2varint_str( delta_time_i ) + event_str ); -} - -void -Midi_track::add( Moment delta_time_moment, Midi_item* mitem_l ) -{ - // use convention of 384 clocks per 4 - // use Duration_convert - int delta_time_i = delta_time_moment * Moment( 384 ) / Moment( 1, 4 ); - add( delta_time_i, mitem_l->str() ); -} - diff --git a/src/midioutput.cc b/src/midioutput.cc deleted file mode 100644 index f1e5e6b412..0000000000 --- a/src/midioutput.cc +++ /dev/null @@ -1,52 +0,0 @@ -/* - midioutput.cc -- implement Midi_output - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys , Jan Nieuwehuizen -*/ - -#include "plist.hh" -#include "debug.hh" -#include "score.hh" -#include "staff.hh" -#include "midistream.hh" -#include "mididef.hh" -#include "midioutput.hh" -#include "midiwalker.hh" -#include "midiitem.hh" -#include "staffcolumn.hh" -#include "musicalrequest.hh" - - -Midi_output:: Midi_output(Score* score_l, Midi_def* midi_l ) -{ - midi_l_ = midi_l; - - Midi_stream midi_stream(midi_l->outfile_str_, - score_l->staffs_.size(), - 384 ); -// oeps, not tempo, but clocks per 4 (384 convention) -// must set tempo in tempo request -// midi_l->get_tempo_i(Moment(1, 4))); - - midi_stream_l_ = &midi_stream; - int track_i=0; - - for (iter_top(score_l->staffs_,i); i.ok(); i++) { - do_staff(i, track_i++); - } - -} - -void -Midi_output::do_staff(Staff*st_l,int track_i) -{ - Midi_track midi_track( track_i ); - Midi_tempo midi_tempo( midi_l_->get_tempo_i( Moment( 1, 4 ) ) ); - midi_track.add( Moment( 0.0 ), &midi_tempo ); - for (Midi_walker w (st_l, &midi_track); w.ok(); w++) - w.process_requests(); - - *midi_stream_l_ << midi_track; -} diff --git a/src/midistream.cc b/src/midistream.cc deleted file mode 100644 index f561e0b946..0000000000 --- a/src/midistream.cc +++ /dev/null @@ -1,88 +0,0 @@ -// -// midistream.cc -// -// source file of the LilyPond music typesetter -// -// (c) 1997 Jan Nieuwenhuizen - -#include -#include -#include "main.hh" -#include "misc.hh" -#include "midiitem.hh" -#include "midistream.hh" -#include "debug.hh" - -Midi_stream::Midi_stream( String filename_str, int tracks_i, int clocks_per_4_i ) -{ - filename_str_ = filename_str; - tracks_i_ = tracks_i; - clocks_per_4_i_ = clocks_per_4_i; - os_p_ = 0; - open(); - header(); -} - -Midi_stream::~Midi_stream() -{ - delete os_p_; -} - -Midi_stream& -Midi_stream::operator <<( String str ) -{ - // still debugging... - if ( check_debug ) - str = String_convert::bin2hex_str( str ); - // string now 1.0.26-2 handles binary streaming - *os_p_ << str; - return *this; -} - -Midi_stream& -Midi_stream::operator <<( Midi_item& mitem_r ) -{ - mitem_r.output_midi( *this ); - if ( check_debug ) - *os_p_ << "\n"; - return *this; -} - -Midi_stream& -Midi_stream::operator <<( int i ) -{ - // output binary string ourselves - *this << Midi_item::i2varint_str( i ); - return *this; -} - -void -Midi_stream::header() -{ -// *os_p_ << "% Creator: " << get_version(); -// *os_p_ << "% Automatically generated, at "; -// time_t t(time(0)); -// *os_p_ << ctime(&t); - -// 4D 54 68 64 MThd -// String str = "MThd"; -// 00 00 00 06 chunk length -// 00 01 format 1 -// 00 01 one track -// 00 60 96 per quarter-note - -// char const ch_c_l = "0000" "0006" "0001" "0001" "0060"; -// str += String_convert::hex2bin_str( ch_c_l ); -// *os_p_ << str; - -// *this << Midi_header( 1, 1, tempo_i_ ); - *this << Midi_header( 1, tracks_i_, clocks_per_4_i_ ); -} - -void -Midi_stream::open() -{ - os_p_ = new ofstream( filename_str_ ); - if ( !*os_p_ ) - error ("can't open `" + filename_str_ + "\'" ); -} diff --git a/src/midiwalker.cc b/src/midiwalker.cc deleted file mode 100644 index b8350bc2cc..0000000000 --- a/src/midiwalker.cc +++ /dev/null @@ -1,71 +0,0 @@ -/* - midiwalker.cc -- implement Midi_walker - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys , Jan Nieuwenhuizen -*/ - -#include "musicalrequest.hh" -#include "pscore.hh" -#include "staff.hh" -#include "midiwalker.hh" -#include "midiitem.hh" -#include "midistream.hh" -#include "debug.hh" -#include "staffcolumn.hh" - -Midi_walker::Midi_walker(Staff *st_l, Midi_track* track_l) - : PCursor(st_l->cols_) -{ - track_l_ = track_l; - last_moment_= 0; -} - -/** - output notestop events for all notes which end before #max_moment# - */ -void -Midi_walker::do_stop_notes(Moment max_moment) -{ - while (stop_notes.size() && stop_notes.front_idx() <= max_moment) { - Moment stop_moment = stop_notes.front_idx(); - Melodic_req * req_l = stop_notes.get(); - - Midi_note note(req_l, track_l_->number_i_, false); - output_event(note, stop_moment); - } -} -/** advance the track to #now#, output the item, and adjust current - "moment". */ -void -Midi_walker::output_event(Midi_item &i, Moment now) -{ - Moment delta_t = now - last_moment_ ; - last_moment_ += delta_t; - track_l_->add(delta_t, &i ); -} - -void -Midi_walker::process_requests() -{ - do_stop_notes(ptr()->when()); - for ( int i = 0; i < ptr()->musicalreq_l_arr_.size(); i++ ) { - - Rhythmic_req *n = ptr()->musicalreq_l_arr_[i]->rhythmic(); - if ( !n) - continue; - Note_req * note_l = n->note(); - if (!note_l) - continue; - - Midi_note note(note_l, track_l_->number_i_, true); - stop_notes.enter(note_l, n->duration() + ptr()->when() ); - output_event(note, ptr()->when()); - } -} - -Midi_walker::~Midi_walker() -{ - do_stop_notes( last_moment_ + Moment(10,1)); // ugh -} diff --git a/src/paperdef.cc b/src/paperdef.cc deleted file mode 100644 index f5c3bcdfae..0000000000 --- a/src/paperdef.cc +++ /dev/null @@ -1,90 +0,0 @@ -#include -#include "misc.hh" -#include "paperdef.hh" -#include "debug.hh" -#include "lookup.hh" -#include "dimen.hh" - - - -// golden ratio -const Real PHI = (1+sqrt(5))/2; - -// see Roelofs, p. 57 -Real -Paperdef::duration_to_dist(Moment d) -{ - if (!d) - return 0; - - return whole_width * pow(geometric_, log_2(d)); -} - -Real -Paperdef::rule_thickness()const -{ - return 0.4 PT; -} - -Paperdef::Paperdef(Lookup *l) -{ - lookup_p_ = l; - linewidth = 15 *CM_TO_PT; // in cm for now - whole_width = 8 * note_width(); - geometric_ = sqrt(2); - outfile = "lelie.out"; -} - -Paperdef::~Paperdef() -{ - delete lookup_p_; -} -Paperdef::Paperdef(Paperdef const&s) -{ - lookup_p_ = new Lookup(*s.lookup_p_); - geometric_ = s.geometric_; - whole_width = s.whole_width; - outfile = s.outfile; - linewidth = s.linewidth; -} - -void -Paperdef::set(Lookup*l) -{ - assert(l != lookup_p_); - delete lookup_p_; - lookup_p_ = l; -} - -Real -Paperdef::interline() const -{ - return lookup_p_->ball(4).dim.y.length(); -} - -Real -Paperdef::internote() const -{ - return lookup_p_->internote(); -} -Real -Paperdef::note_width()const -{ - return lookup_p_->ball(4).dim.x.length( ); -} -Real -Paperdef::standard_height() const -{ - return 20 PT; -} - -void -Paperdef::print() const -{ -#ifndef NPRINT - mtor << "Paper {width: " << print_dimen(linewidth); - mtor << "whole: " << print_dimen(whole_width); - mtor << "out: " < -*/ - -#include "debug.hh" -#include "pcol.hh" -#include "scorecolumn.hh" - -int -Score_column::compare(Score_column & c1, Score_column &c2) -{ - return sign(c1.when_ - c2.when_); -} - -void -Score_column::set_breakable() -{ - pcol_l_->set_breakable(); -} - -Score_column::Score_column(Moment w) -{ - when_ = w; - pcol_l_ = new PCol(0); - musical_b_ = false; -} - -bool -Score_column::used_b() { - return pcol_l_->used_b(); -} - -void -Score_column::print() const -{ -#ifndef NPRINT - mtor << "Score_column { mus "<< musical_b_ <<" at " << when_<<'\n'; - mtor << "durations: ["; - for (int i=0; i < durations.size(); i++) - mtor << durations[i] << " "; - mtor << "]\n"; - pcol_l_->print(); - mtor << "}\n"; -#endif -} - -int -Moment_compare(Moment &a , Moment& b) -{ - return sign(a-b); -} - -void -Score_column::preprocess() -{ - durations.sort(Moment_compare); -} -void -Score_column::add_duration(Moment d) -{ - assert(d); - for (int i = 0; i< durations.size(); i++) { - if (d == durations[i]) - return ; - } - durations.push(d); -} - -bool -Score_column::breakable_b() -{ - return pcol_l_->breakable_b(); -} diff --git a/src/scorewalker.cc b/src/scorewalker.cc deleted file mode 100644 index c79031ab9a..0000000000 --- a/src/scorewalker.cc +++ /dev/null @@ -1,111 +0,0 @@ -/* - scorewalker.cc -- implement Score_walker - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ -#include "debug.hh" -#include "plist.hh" -#include "scorewalker.hh" -#include "score.hh" -#include "staffwalker.hh" -#include "staff.hh" -#include "scorecolumn.hh" - -Score_walker::Score_walker(Score *s) - :PCursor (s->cols_) -{ - score_l_ = s; - for (iter_top(s->staffs_,i); i.ok(); i++) { - Staff_walker* w_p=i->get_walker_p(); - w_p->score_walk_l_ =this; - walker_p_arr_.push(w_p); - } - - if(ok()) { - s->find_col(0, false)->set_breakable(); - s->find_col(s->last(), false)->set_breakable(); - } - reinit(); -} - - -void -Score_walker::reinit() -{ - disallow_break_walk_l_arr = walker_p_arr_; - disallow_break_count_ = disallow_break_walk_l_arr.size(); -} - - -/** Advance the cursor, and all Staff_walkers contained in this. Reset - runtime fields */ -void -Score_walker::operator ++(int ) -{ - Moment last = ptr()->when(); - - PCursor::operator++(0); - if (ok() && ptr()->when() == last) - PCursor::operator++(0); - reinit(); - if (!ok()) - return; - for (int i=0; i< walker_p_arr_.size(); i++) { - if (walker_p_arr_[i]->ok() && - walker_p_arr_[i]->when() < when()) { - - walker_p_arr_[i]->operator++(0); - } - } -} - -/** Allow the command_column to be breakable for one staff. If all - staffs allow, then allow a break here. */ -void -Score_walker::allow_break(Staff_walker*w) -{ - for (int i=0; i < disallow_break_walk_l_arr.size(); i++) { - if (w == disallow_break_walk_l_arr[i]) { - disallow_break_count_ --; - disallow_break_walk_l_arr[i] =0; - - if (!disallow_break_count_) { - PCursor col_cursor = *this; - if (ptr()->musical_b()) - col_cursor --; - col_cursor->set_breakable(); - } - } - } -} - -Moment -Score_walker::when() -{ - return ptr()->when(); -} - -void -Score_walker::process() -{ - for (int i=0; i < walker_p_arr_.size(); i++) { - Staff_walker *w = walker_p_arr_[i]; - if ( w->ok() && w->when() == when() ) { - walker_p_arr_[i]->process(); - } - } - if (when().denominator() == 1) { - *mlog << "." <find_col(score_l_->last(), true)->used_b()); -} - - diff --git a/src/scriptdef.cc b/src/scriptdef.cc deleted file mode 100644 index 508ae6a24b..0000000000 --- a/src/scriptdef.cc +++ /dev/null @@ -1,24 +0,0 @@ -#include "debug.hh" -#include "scriptdef.hh" - -Script_def::Script_def(String idx, int stem, int staff ,bool invert) -{ - symidx = idx ; - stemdir =stem; - staffdir = staff; - invertsym = invert; -} -void -Script_def::print() const -{ - mtor << "idx: " << symidx; - mtor << "direction, stem: " << stemdir << " staff : " << staffdir; -} -int -Script_def::compare(Script_def const & c) -{ - return !(symidx == c.symidx && - stemdir == c.stemdir&& - staffdir == c.staffdir&& - invertsym == c.invertsym); -} diff --git a/src/scriptreg.cc b/src/scriptreg.cc deleted file mode 100644 index bff07f54d2..0000000000 --- a/src/scriptreg.cc +++ /dev/null @@ -1,69 +0,0 @@ -/* - scriptreg.cc -- implement Script_register - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "scriptreg.hh" -#include "script.hh" -#include "musicalrequest.hh" -#include "complexwalker.hh" - -Script_register::Script_register(Complex_walker*w) - : Request_register(w) -{ - script_p_ = 0; -} - -bool -Script_register::try_request(Request *r_l) -{ - if (!r_l->script()) - return false ; - - if (accepted_req_arr_.size() - && Script_req::compare(*accepted_req_arr_[0]->script(), *r_l->script())) - - return false; - - accepted_req_arr_.push(r_l); - - return true; -} - -void -Script_register::process_request() -{ - if (accepted_req_arr_.size() ) { - script_p_ = new Script(accepted_req_arr_[0]->script(), 10); - announce_element( - Staff_elem_info(script_p_, accepted_req_arr_[0], this)); - } -} - -void -Script_register::acknowledge_element(Staff_elem_info info) -{ - if (!script_p_) - return; - if (info.elem_p_->name() == String("Stem")) - script_p_->set_stem((Stem*)info.elem_p_); - else if (info.req_l_->rhythmic()) - script_p_->set_support(info.elem_p_->item()); -} - -void -Script_register::do_pre_move_process() -{ - if (script_p_){ - script_p_->dir = dir_i_; - typeset_element(script_p_); - script_p_ = 0; - } -} - -void -Script_register::set_dir(int i) -{ - dir_i_ = i; -} diff --git a/src/slurreg.cc b/src/slurreg.cc deleted file mode 100644 index d1eb312d85..0000000000 --- a/src/slurreg.cc +++ /dev/null @@ -1,95 +0,0 @@ -/* - slurreg.cc -- implement Slur_register - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "plist.hh" -#include "musicalrequest.hh" -#include "complexwalker.hh" -#include "slurreg.hh" -#include "slur.hh" -#include "debug.hh" - - -void -Slur_register::set_dir(int i) -{ - dir_i_ = i; -} - -Slur_register::Slur_register(Complex_walker* w) - : Request_register(w) -{ - set_dir(0); -} - -bool -Slur_register::try_request(Request *req_l) -{ - if(!req_l->slur()) - return false; - - accepted_req_arr_.push(req_l); - return true; -} - -void -Slur_register::acknowledge_element(Staff_elem_info info) -{ - if (info.elem_p_->name() == String("Notehead")) { - Notehead *head_p =(Notehead*) info.elem_p_ ;// ugh - for (int i = 0; i < slur_l_stack_.size(); i++) - slur_l_stack_[i]->add(head_p ); - for (int i = 0; i < end_slur_l_arr_.size(); i++) - end_slur_l_arr_[i]->add(head_p); - } -} -/* - abracadabra - */ -void -Slur_register::process_request() -{ - Array start_slur_l_arr_; - for (int i=0; i< accepted_req_arr_.size(); i++) { - Slur_req* slur_req_l = accepted_req_arr_[i]->slur(); - // end slur: move the slur to other array - if (slur_req_l->spantype == Span_req::STOP) { - if (slur_l_stack_.empty()) - warning("can't find slur to end", - slur_req_l->defined_ch_c_l_); - else { - end_slur_l_arr_.push(slur_l_stack_.pop()); - requests_arr_.pop(); - } - } else if (slur_req_l->spantype == Span_req::START) { - // push a new slur onto stack. - //(use temp. array to wait for all slur STOPs) - Slur * s_p =new Slur; - requests_arr_.push(slur_req_l); - start_slur_l_arr_.push(s_p); - announce_element(Staff_elem_info(s_p, slur_req_l, this)); - } - } - for (int i=0; i < start_slur_l_arr_.size(); i++) - slur_l_stack_.push(start_slur_l_arr_[i]); -} - -void -Slur_register::do_pre_move_process() -{ - for (int i = 0; i < end_slur_l_arr_.size(); i++) { - if (dir_i_) - end_slur_l_arr_[i]->dir_i_ = dir_i_; - typeset_element(end_slur_l_arr_[i]); - } - end_slur_l_arr_.set_size(0); -} - -Slur_register::~Slur_register() -{ - for (int i=0; i < requests_arr_.size(); i++) { - warning("unterminated slur", requests_arr_[i]->defined_ch_c_l_); - } -} diff --git a/src/sourcefile.cc b/src/sourcefile.cc deleted file mode 100644 index 5caa8545fa..0000000000 --- a/src/sourcefile.cc +++ /dev/null @@ -1,207 +0,0 @@ -// -// sourcefile.cc -// - -#include // open, mmap -#include // open -#include // mmap -#include // INT_MAX -#include // open -#include // close, stat -#include // fdopen -#include // strerror -#include // errno -#include -#include - -#include "string.hh" -#include "proto.hh" -#include "plist.hh" -#include "lexer.hh" -#include "debug.hh" -#include "parseconstruct.hh" -#include "main.hh" // find_file - -#include "sourcefile.hh" - -Source_file::Source_file( String &filename_str ) -{ - data_caddr_ = 0; - fildes_i_ = 0; - size_off_ = 0; - name_str_ = filename_str; - istream_p_ = 0; - - open(); - map(); - // ugh!?, should call name_str() ! - filename_str = name_str_; -} - -Source_file::~Source_file() -{ - delete istream_p_; - istream_p_ = 0; - unmap(); - close(); -} - -char const* -Source_file::ch_c_l() -{ - assert( this ); - return (char const*)data_caddr_; -} - -void -Source_file::close() -{ - if ( fildes_i_ ) { - ::close( fildes_i_ ); - fildes_i_ = 0; - } -} - -String -Source_file::error_str( char const* pos_ch_c_l ) -{ - assert( this ); - if ( !in_b( pos_ch_c_l ) ) - return ""; - - char const* begin_ch_c_l = pos_ch_c_l; - char const* data_ch_c_l = ch_c_l(); - while ( begin_ch_c_l > data_ch_c_l ) - if ( *--begin_ch_c_l == '\n' ) { - begin_ch_c_l++; - break; - } - - char const* end_ch_c_l = pos_ch_c_l; - while ( end_ch_c_l < data_ch_c_l + size_off_ ) - if ( *end_ch_c_l++ == '\n' ) { - break; - } - end_ch_c_l--; - -#if 1 -// String( char const* p, int length ) is missing!? - String line_str( (Byte const*)begin_ch_c_l, end_ch_c_l - begin_ch_c_l ); -#else - int length_i = end_ch_c_l - begin_ch_c_l; - char* ch_p = new char[ length_i + 1 ]; - strncpy( ch_p, begin_ch_c_l, length_i ); - ch_p[ length_i ] = 0; - String line_str( ch_p ); - delete ch_p; -#endif - - int error_col_i = 0; - char const* scan_ch_c_l = begin_ch_c_l; - while ( scan_ch_c_l < pos_ch_c_l ) - if ( *scan_ch_c_l++ == '\t' ) - error_col_i = ( error_col_i / 8 + 1 ) * 8; - else - error_col_i++; - - String str = line_str.left_str( pos_ch_c_l - begin_ch_c_l ) - + String( '\n' ) - + String( ' ', error_col_i ) - + line_str.mid_str( pos_ch_c_l - begin_ch_c_l + 1, INT_MAX ); // String::mid should take 0 arg.. - return str; -} - -bool -Source_file::in_b( char const* pos_ch_c_l ) -{ - return ( pos_ch_c_l && ( pos_ch_c_l >= ch_c_l() ) && ( pos_ch_c_l < ch_c_l() + size_off_ ) ); -} - -istream* -Source_file::istream_l() -{ - assert( fildes_i_ ); - if ( !istream_p_ ) { - if ( size_off_ ) // can-t this be done without such a hack? - istream_p_ = new istrstream( ch_c_l(), size_off_ ); - else { - istream_p_ = new istrstream( "", 0 ); - istream_p_->set(ios::eofbit); - } - } - return istream_p_; -} - -off_t -Source_file::length_off() -{ - return size_off_; -} - -int -Source_file::line_i( char const* pos_ch_c_l ) -{ - if ( !in_b( pos_ch_c_l ) ) - return 0; - - int i = 1; - char const* scan_ch_c_l = ch_c_l(); - while ( scan_ch_c_l < pos_ch_c_l ) - if ( *scan_ch_c_l++ == '\n' ) - i++; - return i; -} - -void -Source_file::map() -{ - if ( fildes_i_ == -1 ) - return; - - data_caddr_ = (caddr_t)mmap( (void*)0, size_off_, PROT_READ, MAP_SHARED, fildes_i_, 0 ); - - if ( (int)data_caddr_ == -1 ) - // ugh: defined_ch_c_l... - warning( String( "can't map: " ) + name_str_ + String( ": " ) + strerror( errno ), defined_ch_c_l ); //lexer->here_ch_c_l() ); -} - -String -Source_file::name_str() -{ - return name_str_; -} - -void -Source_file::open() -{ - String name_str = find_file( name_str_ ); - if ( name_str != "" ) - name_str_ = name_str; - - fildes_i_ = ::open( name_str_, O_RDONLY ); - - if ( fildes_i_ == -1 ) { - warning( String( "can't open: " ) + name_str_ + String( ": " ) + strerror( errno ), defined_ch_c_l ); // lexer->here_ch_c_l() ); - return; - } - - struct stat file_stat; - fstat( fildes_i_, &file_stat ); - size_off_ = file_stat.st_size; -} - -void -Source_file::unmap() -{ - if ( data_caddr_ ) { - munmap( data_caddr_, size_off_ ); - data_caddr_ = 0; - size_off_ = 0; - } -} -String -Source_file::file_line_no_str(char const *ch_c_l ) -{ - return name_str() + ": " - + String( line_i( ch_c_l ) ); -} diff --git a/src/staffcolumn.cc b/src/staffcolumn.cc deleted file mode 100644 index 229ab69933..0000000000 --- a/src/staffcolumn.cc +++ /dev/null @@ -1,163 +0,0 @@ -/* - staffcolumn.cc -- implement Staff_column - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ -#include "staff.hh" -#include "voice.hh" -#include "timedescription.hh" -#include "scorecolumn.hh" -#include "staffcolumn.hh" -#include "commandrequest.hh" -#include "musicalrequest.hh" -#include "interval.hh" -#include "pscore.hh" -#include "item.hh" -#include "pcol.hh" - -void -Staff_column::OK() const -{ -#ifndef NDEBUG - assert (command_column_l_->when() == musical_column_l_->when()); -#endif -} - -Moment -Staff_column::when() const -{ - return (command_column_l_)? - command_column_l_->when(): - musical_column_l_->when(); -} - -void -Staff_column::add(Voice_element*ve) -{ - for (iter_top(ve->reqs,j); j.ok(); j++) { - if (j->command()) { - Command_req * c_l = j->command(); - if (c_l->timing()) { - timing_req_l_arr_.push(j->command()->timing()); - } - if (!c_l->barcheck() && !c_l->partial() && - !c_l->measuregrouping()) - setup_one_request(j); // no need to bother children - } else { - if (j->rhythmic()) { - musical_column_l_->add_duration(j->rhythmic()->duration()); - } - if (!j->musical()->skip()) - setup_one_request(j); - } - } -} - -Staff_column::Staff_column() -{ - musical_column_l_ = 0; - command_column_l_ = 0; - staff_l_ = 0; -} - - - - -Staff_column::~Staff_column() -{ -} - -void -Staff_column::set_cols(Score_column*c1, Score_column*c2) -{ - command_column_l_ = c1; - musical_column_l_ = c2; -} - -void -Staff_column::setup_one_request(Request * j) -{ - if (j->command()) // ugh - commandreq_l_arr_.push(j); - else if (j->musical()) - musicalreq_l_arr_.push(j); -} - -void -Staff_column::typeset_musical_item(Item*i) -{ - assert(i); - Score_column * scorecolumn_l = musical_column_l_; - musical_column_l_->pcol_l_->pscore_l_->typeset_item(i, scorecolumn_l->pcol_l_, - staff_l_->pstaff_l_); -} - -/** - align items in #item_l_arr#, - - @return the width of the items after aligning. - */ -Interval -align_items(Array item_l_arr) -{ - Interval wid(0,0); - for (int i =0; i < item_l_arr.size(); i++) { - Interval item_width= item_l_arr[i]->width(); - Real dx =wid.right - item_width.left; - item_width += dx; - item_l_arr[i]->translate(Offset(dx ,0)); - wid.unite(item_width); - } - return wid; -} - -void -translate_items(Real x, Array item_l_arr) -{ - for (int i =0; i < item_l_arr.size(); i++) - item_l_arr[i]->translate(Offset(x, 0)); -} -/* - UGR - This still sux - */ -void -Staff_column::typeset_breakable_items(Array &pre_p_arr, - Array &nobreak_p_arr, - Array &post_p_arr) -{ - PCol * c= command_column_l_->pcol_l_; - PScore *ps_l=command_column_l_->pcol_l_->pscore_l_; - - if (!c->breakable_b()) { - for (int i =0; i < pre_p_arr.size(); i++) - delete pre_p_arr[i]; - pre_p_arr.set_size(0); - for (int i =0; i < post_p_arr.size(); i++) - delete post_p_arr[i]; - post_p_arr.set_size(0); - } - - - for (int i =0; i < pre_p_arr.size(); i++) { - ps_l->typeset_item(pre_p_arr[i], c, staff_l_->pstaff_l_,0); - } - for (int i =0; i < nobreak_p_arr.size(); i++) { - ps_l->typeset_item(nobreak_p_arr[i], c, staff_l_->pstaff_l_,1); - } - for (int i =0; i < post_p_arr.size(); i++) { - ps_l->typeset_item(post_p_arr[i], c, staff_l_->pstaff_l_,2); - } - - Interval pre_wid= align_items(pre_p_arr); - translate_items( -pre_wid.right, pre_p_arr); - align_items(nobreak_p_arr); - Interval post_wid =align_items(post_p_arr); - translate_items (-post_wid.left , post_p_arr); - - pre_p_arr.set_size(0); - post_p_arr.set_size(0); - nobreak_p_arr.set_size(0); -} diff --git a/src/staffelem.cc b/src/staffelem.cc deleted file mode 100644 index 1b5e592762..0000000000 --- a/src/staffelem.cc +++ /dev/null @@ -1,200 +0,0 @@ -#include "pscore.hh" -#include "symbol.hh" -#include "pstaff.hh" -#include "molecule.hh" -#include "staffelem.hh" -#include "debug.hh" - -String -Staff_elem::TeXstring() const -{ - Molecule m(*output); - m.translate(offset_); // ugh? - return m.TeXstring(); -} - -Staff_elem::Staff_elem(Staff_elem const&s) - : dependants(s.dependants), - dependencies(s.dependencies) -{ - status = s.status; - assert(!s.output); - output = 0; - pstaff_l_ = s.pstaff_l_; - offset_ = Offset(0,0); -} -/** - TODO: - If deleted, then remove dependants depency! - */ -Staff_elem::~Staff_elem() -{ - delete output; -} - -void -Staff_elem::translate(Offset O) -{ - offset_ += O; -} -Interval -Staff_elem::width() const -{ - Interval r; - - if (!output){ - Molecule*m = brew_molecule_p(); - r = m->extent().x; - delete m; - } else - r = output->extent().x; - - if (!r.empty()) // float exception on DEC Alpha - r+=offset_.x; - - return r; -} -Interval -Staff_elem::height() const -{ - Interval r; - - if (!output){ - Molecule*m = brew_molecule_p(); - r = m->extent().y; - delete m; - } else - r = output->extent().y; - - if (!r.empty()) - r+=offset_.y; - - - return r; -} - -void -Staff_elem::print()const -{ -#ifndef NPRINT - mtor << name() << "{\n"; - do_print(); - if (output) - output->print(); - - mtor << "}\n"; -#endif -} - -NAME_METHOD(Staff_elem); - -Staff_elem::Staff_elem() -{ - pstaff_l_=0; - offset_ = Offset(0,0); - output = 0; - status = ORPHAN; -} - - -Paperdef* -Staff_elem::paper() const -{ - assert(pstaff_l_); - return pstaff_l_->pscore_l_->paper_l_; -} - -void -Staff_elem::add_processing() -{ - if (status >= VIRGIN) - return; - status = VIRGIN; - do_add_processing(); -} - -void -Staff_elem::pre_processing() -{ - if (status >= PRECALCED ) - return; - assert(status != PRECALCING); // cyclic dependency - status = PRECALCING; - - for (int i=0; i < dependencies.size(); i++) - if (dependencies[i]) - dependencies[i]->pre_processing(); - - - do_pre_processing(); - status = PRECALCED; -} -void -Staff_elem::post_processing() -{ - if (status >= POSTCALCED) - return; - assert(status != POSTCALCING);// cyclic dependency - status=POSTCALCING; - - for (int i=0; i < dependencies.size(); i++) - if (dependencies[i]) - dependencies[i]->post_processing(); - do_post_processing(); - status=POSTCALCED; -} - -void -Staff_elem::molecule_processing() -{ - if (status >= OUTPUT) - return; - status = OUTPUT; // do it only once. - for (int i=0; i < dependencies.size(); i++) - if (dependencies[i]) - dependencies[i]->molecule_processing(); - - output= brew_molecule_p(); -} - -void -Staff_elem::do_post_processing() -{ -} - -void -Staff_elem::do_pre_processing() -{ -} - -void -Staff_elem::do_add_processing() -{ -} - -void -Staff_elem::substitute_dependency(Staff_elem * old, Staff_elem * newdep) -{ - bool hebbes_b=false; - for (int i=0; i < dependencies.size(); i++) { - if (dependencies[i] == old){ - dependencies[i] = newdep; - hebbes_b = true; - } else if (dependencies[i] == newdep) { - hebbes_b = true; - } - } - if (!hebbes_b) - dependencies.push(newdep); -} - -void -Staff_elem::add_depedency(Staff_elem * p) -{ - for (int i=0; i < dependencies.size(); i ++) - if (dependencies[i] == p) - return; - - dependencies.push(p); - p->dependants.push(p); -} diff --git a/src/staffeleminfo.cc b/src/staffeleminfo.cc deleted file mode 100644 index 611000541d..0000000000 --- a/src/staffeleminfo.cc +++ /dev/null @@ -1,32 +0,0 @@ -/* - staffeleminfo.cc -- implement Staff_elem_info - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "staffeleminfo.hh" -#include "request.hh" -#include "voice.hh" - -Staff_elem_info::Staff_elem_info(Staff_elem*s_l, Request*r_l, - Request_register *reg_l) -{ - elem_p_ = s_l; - voice_l_ = (r_l)?r_l->elt_l_->voice_l_:0; - req_l_ = r_l; - group_regs_l_ = 0; - origin_reg_l_ = reg_l; -} - -Staff_elem_info::Staff_elem_info() -{ - elem_p_ = 0; - voice_l_ = 0; - - group_regs_l_ = 0; - origin_reg_l_ = 0; - req_l_ = 0; -} - diff --git a/src/staffwalker.cc b/src/staffwalker.cc deleted file mode 100644 index c3900d35f2..0000000000 --- a/src/staffwalker.cc +++ /dev/null @@ -1,109 +0,0 @@ -/* - staffwalker.cc -- implement Staff_walker - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "grouping.hh" -#include "staff.hh" -#include "musicalrequest.hh" -#include "staffwalker.hh" -#include "staffcolumn.hh" -#include "scorecolumn.hh" -#include "debug.hh" -#include "timedescription.hh" -#include "commandrequest.hh" -#include "grouping.hh" -#include "scorewalker.hh" - -Staff_walker::~Staff_walker() -{ - do_pre_move(); -} - -Staff_walker::Staff_walker(Staff_walker const &s) - :PCursor (s) -{ - assert(false); -} - -Staff_walker::Staff_walker(Staff * s, PScore*ps ) - : PCursor (s->cols_) -{ - staff_l_ = s; - pscore_l_ = ps; - - // should be in tdes. TODO - default_grouping = new Rhythmic_grouping(MInterval(0, 1), 4); - score_walk_l_ = 0; -} - -Moment -Staff_walker::when() const -{ - return ptr()->when(); -} - - -void -Staff_walker::process_timing_reqs() -{ - for (int i=0; i < ptr()->timing_req_l_arr_.size(); i++) { - Timing_req * tr_l = ptr()->timing_req_l_arr_[i]; - if (tr_l->meterchange()) { - int b_i=tr_l->meterchange()->beats_i_; - int o_i = tr_l->meterchange()->one_beat_i_; - time_.set_meter(b_i, o_i); - - *default_grouping = Rhythmic_grouping( - MInterval(0,Moment(b_i, o_i)), b_i); - } - } - - for (int i=0; i < ptr()->timing_req_l_arr_.size(); i++) { - Timing_req * tr_l = ptr()->timing_req_l_arr_[i]; - if (tr_l->partial()) { - time_.setpartial(tr_l->partial()->duration_); - } else if (tr_l->barcheck() && time_.whole_in_measure_) { - warning( "Barcheck failed", tr_l->defined_ch_c_l_ ); - } else if (tr_l->cadenza()) { - time_.set_cadenza(tr_l->cadenza()->on_b_); - } else if (tr_l->measuregrouping()) { - *default_grouping = parse_grouping( - tr_l->measuregrouping()->beat_i_arr_, - tr_l->measuregrouping()->elt_length_arr_); - } - } - time_.OK(); -} - -void -Staff_walker::operator++(int i) -{ - Moment last = when(); - - do_pre_move(); - PCursor::operator++(i); - if (ok() ) { - Moment delta_t = when() - last; - assert(delta_t >0); - time_.add( delta_t ); - } - do_post_move(); -} - -void -Staff_walker::process() -{ - process_timing_reqs(); - process_requests(); -} - -void -Staff_walker::allow_break() -{ - score_walk_l_->allow_break(this); -} - diff --git a/src/stembeamreg.cc b/src/stembeamreg.cc deleted file mode 100644 index 504ba6854f..0000000000 --- a/src/stembeamreg.cc +++ /dev/null @@ -1,155 +0,0 @@ -/* - stembeamreg.cc -- part of LilyPond - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "musicalrequest.hh" -#include "stembeamreg.hh" -#include "beam.hh" -#include "stem.hh" -#include "grouping.hh" -#include "textspanner.hh" -#include "complexwalker.hh" -#include "complexstaff.hh" -#include "debug.hh" -#include "grouping.hh" -Stem_beam_register::Stem_beam_register(Complex_walker*w) - :Request_register(w) -{ - do_post_move_process(); - current_grouping = 0; - beam_p_ = 0; - set_dir(0); - start_req_l_ = 0; -} - -bool -Stem_beam_register::try_request(Request*req_l) -{ - if ( req_l->beam() ) { - if (bool(beam_p_ ) == bool(req_l->beam()->spantype == Span_req::START)) - return false; - - if (beam_req_l_ && Beam_req::compare(*beam_req_l_ , *req_l->beam())) - return false; - - beam_req_l_ = req_l->beam(); - return true; - } - - if ( req_l->stem() ) { - if (current_grouping && !current_grouping->child_fit_query( - walk_l_->time_.whole_in_measure_)) - return false; - - if (stem_req_l_ && Stem_req::compare(*stem_req_l_, *req_l->stem())) - return false; - - stem_req_l_ = req_l->stem(); - return true; - } - return false; -} - -void -Stem_beam_register::process_request() -{ - if (beam_req_l_) { - if (beam_req_l_->spantype == Span_req::STOP) { - end_beam_b_ = true; - start_req_l_ = 0; - } else { - beam_p_ = new Beam; - start_req_l_ = beam_req_l_; - - current_grouping = new Rhythmic_grouping; - if (beam_req_l_->nplet) { - Text_spanner* t = new Text_spanner(); - t->set_support(beam_p_); - t->spec.align_i_ = 0; - t->spec.text_str_ = beam_req_l_->nplet; - t->spec.style_str_="italic"; - typeset_element(t); - } - - } - } - - if (stem_req_l_) { - stem_p_ = new Stem(4); - if (current_grouping) - current_grouping->add_child( - walk_l_->time_.whole_in_measure_, - stem_req_l_->duration()); - - stem_p_->flag = stem_req_l_->balltype; - - if (beam_p_) { - if (stem_req_l_->balltype<= 4) - warning( "stem doesn't fit in Beam", - stem_req_l_->defined_ch_c_l_); - else - beam_p_->add(stem_p_); - stem_p_->print_flag = false; - } else { - stem_p_->print_flag = true; - } - - announce_element(Staff_elem_info(stem_p_, - stem_req_l_, this)); - } -} - -void -Stem_beam_register::acknowledge_element(Staff_elem_info info) -{ - if (!stem_p_) - return; - - if (info.elem_p_->name() == String("Notehead") && - stem_req_l_->duration() == info.req_l_->rhythmic()->duration()) - - stem_p_->add((Notehead*)info.elem_p_); -} - -void -Stem_beam_register::do_pre_move_process() -{ - if (stem_p_) { - if (default_dir_i_) - stem_p_->dir = default_dir_i_; - - typeset_element(stem_p_); - stem_p_ = 0; - } - if (beam_p_ && end_beam_b_) { - walk_l_->default_grouping->extend(current_grouping->interval()); - beam_p_->set_grouping(*walk_l_->default_grouping, *current_grouping); - typeset_element(beam_p_); - delete current_grouping; - current_grouping = 0; - beam_p_ = 0; - } - end_beam_b_ = false; -} -void -Stem_beam_register::do_post_move_process() -{ - stem_p_ = 0; - beam_req_l_ = 0; - stem_req_l_ = 0; - end_beam_b_ = false; -} - -Stem_beam_register::~Stem_beam_register() -{ - if (beam_p_) - warning("unterminated beam", start_req_l_->defined_ch_c_l_); -} - -void -Stem_beam_register::set_dir(int i) -{ - default_dir_i_ = i; -} diff --git a/src/textdef.cc b/src/textdef.cc deleted file mode 100644 index d4e9824d1b..0000000000 --- a/src/textdef.cc +++ /dev/null @@ -1,31 +0,0 @@ -#include "debug.hh" -#include "lookup.hh" -#include "paperdef.hh" -#include "molecule.hh" -#include "textdef.hh" - -Text_def::Text_def() -{ - align_i_ = 1; // right - style_str_ = "roman"; - defined_ch_c_l_ = 0; -} -bool -Text_def::compare(const Text_def&def) -{ - return align_i_ == def.align_i_ && text_str_ == def.text_str_ - && style_str_ == def.style_str_; -} - -Atom -Text_def::create_atom(Paperdef*p) const -{ - return p->lookup_p_->text(style_str_, text_str_, -align_i_); -} - -void -Text_def::print() const -{ - mtor << "Text `" << text_str_ << "\', style " << - style_str_ << "align " << align_i_ << '\n'; -} diff --git a/src/textreg.cc b/src/textreg.cc deleted file mode 100644 index 7e6d59e2cb..0000000000 --- a/src/textreg.cc +++ /dev/null @@ -1,54 +0,0 @@ -/* - textreg.cc -- implement Text_register - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "musicalrequest.hh" -#include "textreg.hh" -#include "textitem.hh" - -Text_register::Text_register(Complex_walker*w) - : Request_register(w) -{ - text_p_ = 0; - set_dir(0); -} - -bool -Text_register::try_request(Request*req_l) -{ - if (!req_l->text()) - return false; - if (accepted_req_arr_.size() && - Text_req::compare(*req_l->text(), *accepted_req_arr_[0]->text())) - - return false; - - accepted_req_arr_.push(req_l); - return true; -} - -void -Text_register::process_request() -{ - - if (accepted_req_arr_.size()) { - text_p_ = new Text_item(accepted_req_arr_[0]->text(), 10); - announce_element(Staff_elem_info(text_p_, accepted_req_arr_[0], this)); - } -} -void -Text_register::do_pre_move_process() -{ - if (text_p_) { - text_p_->dir_i_ = dir_i_; - typeset_element(text_p_); - text_p_ = 0; - } -} -void -Text_register::set_dir(int i) -{ - dir_i_ = i; -} diff --git a/src/timedescription.cc b/src/timedescription.cc deleted file mode 100644 index 59d1189b11..0000000000 --- a/src/timedescription.cc +++ /dev/null @@ -1,119 +0,0 @@ -/* - timedescription.cc -- implement Time_description - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "timedescription.hh" -#include "debug.hh" - -String -Time_description::str()const -{ - String s( "Time_description { "); - if (cadenza_b_) - s+=String( " (cadenza) "); - s+= "at "; - s+=when_; - s+="\nmeter " + String(whole_per_measure_/one_beat_) +":" + - String(Rational(Rational(1)/one_beat_)); - s+= "\nposition "+String( bars_i_) + ":"+ whole_in_measure_ +"\n}\n"; - return s; -} - -void -Time_description::print() const -{ -#ifndef NPRINT - mtor << str(); -#endif -} -void -Time_description::OK() const -{ -#ifndef NDEBUG - if (!cadenza_b_) - assert(whole_in_measure_ < whole_per_measure_); - assert(0 <= whole_in_measure_); - assert(one_beat_); -#endif -} - -void -Time_description::set_cadenza(bool b) -{ - if (cadenza_b_ && !b) { - if (whole_in_measure_) { - bars_i_ ++; - whole_in_measure_ = 0; - } - } - cadenza_b_ = b ; -} - -Time_description::Time_description() -{ - whole_per_measure_ = 1; - whole_in_measure_ =0; - one_beat_ = Moment(1,4); - when_ = 0; - bars_i_ = 0; - cadenza_b_ = false; -} - -void -Time_description::add(Moment dt) -{ - assert(dt >= Rational(0)); - when_ += dt; - whole_in_measure_ += dt; - - while ( !cadenza_b_ && whole_in_measure_ >= whole_per_measure_ ) { - whole_in_measure_ -= whole_per_measure_; - bars_i_ ++; - } -} - -void -Time_description::set_meter(int l, int o) -{ - assert(o); - one_beat_ = Rational(1)/Moment(o); - whole_per_measure_ = Moment(l) * one_beat_; - if(whole_in_measure_) - error_t("Meterchange should be at start of measure", *this); -} - -void -Time_description::setpartial(Moment p) -{ - if (when_) - error_t ("Partial measure only allowed at beginning.", *this); - if (p whole_per_measure_) - error_t ("Partial measure has incorrect size", *this); - whole_in_measure_ = whole_per_measure_ - p; -} - -Moment -Time_description::barleft() -{ - assert(!cadenza_b_); - return whole_per_measure_-whole_in_measure_; -} - -int -Time_description::compare(Time_description &t1, Time_description&t2) -{ - int i = sign(t1.when_-t2.when_); - - if (!i) { - assert(t1.bars_i_==t2.bars_i_); - assert(t1.one_beat_ == t2.one_beat_); - assert(t1.whole_in_measure_ == t2.whole_in_measure_); - assert(t1.whole_per_measure_ == t2.whole_per_measure_); - } - - return i; -} diff --git a/src/tstream.cc b/src/tstream.cc deleted file mode 100644 index d56c58a3c4..0000000000 --- a/src/tstream.cc +++ /dev/null @@ -1,75 +0,0 @@ -#include -#include -#include "tex.hh" -#include "main.hh" -#include "tstream.hh" -#include "debug.hh" - -Tex_stream::Tex_stream(String filename) -{ - os = new ofstream(filename); - if (!*os) - error("can't open `" + filename+"\'"); - nest_level = 0; - outputting_comment=false; - header(); -} -void -Tex_stream::header() -{ - *os << "% Creator: " << get_version(); - *os << "% Automatically generated, at "; - time_t t(time(0)); - *os << ctime(&t); -//*os << "% from input file ..\n"; -} -Tex_stream::~Tex_stream() -{ - delete os; - assert(nest_level == 0); -} - -// print string. don't forget indent. -Tex_stream & -Tex_stream::operator<<(String s) -{ - - for (const char *cp = s; *cp; cp++) { - if (outputting_comment) { - *os << *cp; - if (*cp == '\n') { - outputting_comment=false; - - } - continue; - } - switch(*cp) - { - case '%': - outputting_comment = true; - *os << *cp; - break; - case '{': - nest_level++; - *os << *cp; - break; - case '}': - nest_level--; - *os << *cp; - assert (nest_level >= 0); - /* FALTHROUGH */ - - case '\n': - *os << "%\n"; - *os << String(' ', nest_level); - break; - default: - *os << *cp; - break; - } - } - return *this; -} - - -/* *************************************************************** */ diff --git a/src/voicegroupregs.cc b/src/voicegroupregs.cc deleted file mode 100644 index d23b58ac70..0000000000 --- a/src/voicegroupregs.cc +++ /dev/null @@ -1,70 +0,0 @@ -/* - voicegroup.cc -- implement Voice_group_registers - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "plist.hh" -#include "musicalrequest.hh" -#include "voiceregs.hh" -#include "voicegroupregs.hh" -#include "register.hh" -#include "textreg.hh" -#include "stembeamreg.hh" -#include "scriptreg.hh" -#include "complexwalker.hh" -#include "commandrequest.hh" - -static int temp_id_count; - -Voice_group_registers::Voice_group_registers(Complex_walker*w_l, String id) -{ - walk_l_ = w_l; - add(new Text_register(w_l)); - add(new Stem_beam_register(w_l)); - add(new Script_register(w_l)); - - if (id=="") // UGH - id = __FUNCTION__ + String(temp_id_count++); - group_id_str_ = id; -} - -bool -Voice_group_registers::try_request(Request*r_l) -{ - if (r_l->groupfeature()) { - set_dir(r_l->groupfeature()->stemdir_i_); - return true; - } - return Register_group::try_request(r_l); -} - -void -Voice_group_registers::acknowledge_element(Staff_elem_info i) -{ - if (i.group_regs_l_!= this) - return; - Register_group::acknowledge_element(i); -} -#if 1 -void -Voice_group_registers::set_dir(int i) -{ - Register_group::set_dir(i); - - // ughh - Array vr_arr (walk_l_->get_voice_regs(this)); - for (int j=0; jset_dir(i); - } -} -#endif -bool -Voice_group_registers::acceptable_request_b(Request*r) -{ - return (r->stem() || r->beam() || r->text() || r->script() || - r->groupfeature()); -} diff --git a/src/voiceregs.cc b/src/voiceregs.cc deleted file mode 100644 index ea56a5da46..0000000000 --- a/src/voiceregs.cc +++ /dev/null @@ -1,34 +0,0 @@ -/* - voiceregs.cc -- implement Voice_registers - - source file of the LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "musicalrequest.hh" -#include "voiceregs.hh" -#include "register.hh" -#include "slurreg.hh" -#include "headreg.hh" - -Voice_registers::Voice_registers(Complex_walker*c_l, Voice *v_p) -{ - voice_l_ = v_p; - add(new Notehead_register(c_l)); - add(new Slur_register(c_l)); -} - -void -Voice_registers::acknowledge_element(Staff_elem_info i) -{ - if (i.voice_l_ != voice_l_) - return; - Register_group::acknowledge_element(i); -} - -bool -Voice_registers::acceptable_request_b(Request*r) -{ - return (r->rest() || r->note() || r->slur()); -}