From: fred Date: Tue, 26 Mar 2002 23:55:07 +0000 (+0000) Subject: lilypond-1.3.82 X-Git-Tag: release/1.5.59~1344 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=2f2cd97b9f19b8a35e2b1339b7d04e37de1d4311;p=lilypond.git lilypond-1.3.82 --- diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index 606c93ef8b..57d42f3113 100644 --- a/lily/axis-group-engraver.cc +++ b/lily/axis-group-engraver.cc @@ -27,8 +27,7 @@ protected: virtual void process_acknowledged (); virtual Spanner* get_spanner_p () const; virtual void add_element (Score_element*) ; -public: - +public: VIRTUAL_COPY_CONS(Translator); Axis_group_engraver (); }; @@ -83,7 +82,7 @@ Axis_group_engraver::do_removal_processing () && gh_number_p (gh_cdr (dims))) staffline_p_->set_elt_property ("extra-extent-Y", dims); -Score_element * it = unsmob_element (get_property ("currentCommandColumn")); + Score_element * it = unsmob_element (get_property ("currentCommandColumn")); Pointer_group_interface (it, "bounded-by-me").add_element (staffline_p_); staffline_p_->set_bound(RIGHT,it); @@ -98,6 +97,10 @@ Axis_group_engraver::acknowledge_element (Score_element_info i) elts_.push (i.elem_l_); } +/* + maybe should check if our parent_l is set, because we now get a + cyclic parent relationship if we have two Axis_group_engravers in + the context. */ void Axis_group_engraver::process_acknowledged () { @@ -120,8 +123,7 @@ Axis_group_engraver::add_element (Score_element*e) } //////////////////////////////////////////////////////// - -// maybenot sucsh a good idea after all. +// maybenot such a good idea after all., to put classes in .cc #include "hara-kiri-group-spanner.hh" #include "rhythmic-head.hh" diff --git a/lily/translator-group-initializer.cc b/lily/translator-group-initializer.cc new file mode 100644 index 0000000000..b7a5aecf28 --- /dev/null +++ b/lily/translator-group-initializer.cc @@ -0,0 +1,95 @@ + /* + translator-group-initializer.cc -- implement Translator_group_initializer + + source file of the GNU LilyPond music typesetter + + (c) 2000 Han-Wen Nienhuys + + */ + +#include "translator-group.hh" +#include "warn.hh" + + +void +Translator_group_initializer::set_acceptor (Translator *me,SCM name, bool add) +{ + if (add) + me->accepts_name_list_ = gh_append2 (me->accepts_name_list_, gh_cons (name, SCM_EOL)); + else + me->accepts_name_list_ = scm_delete_x (name, me->accepts_name_list_); +} + + +SCM +Translator_group_initializer::modify_definition (SCM list, SCM str, bool add) +{ + String s = ly_scm2string (str); + if (!get_translator_l (s)) + error (_ ("Program has no such type")); + + if (add) + { + if (scm_memq (str, list) != SCM_BOOL_F) + { + warning (_f("Already contains: `%s'", s)); + warning (_f("Not adding translator: `%s'", s)); + } + else + list= gh_cons (str, list); + } + else + { + list = scm_delete_x (str, list); + } + return list; +} + + + +void +Translator_group_initializer::remove_element (Translator *me,SCM s) +{ + me->end_consists_name_list_ = modify_definition (me->end_consists_name_list_, s, false); + me->consists_name_list_ = modify_definition (me->consists_name_list_, s, false); +} + +void +Translator_group_initializer::add_element (Translator *me,SCM s) +{ + me->consists_name_list_ = modify_definition (me->consists_name_list_, s, true); +} + +void +Translator_group_initializer::add_last_element (Translator *me,SCM s) +{ + me->end_consists_name_list_ = modify_definition (me->end_consists_name_list_, s, true); +} +void +Translator_group_initializer::add_push_property (Translator * me, + SCM props, SCM syms, SCM vals) +{ + me->property_pushes_ = gh_cons (gh_list (props, syms, vals, SCM_UNDEFINED), + me->property_pushes_); +} + +void +Translator_group_initializer::add_pop_property (Translator * me, + SCM props, SCM syms) +{ + me->property_pushes_ = gh_cons (gh_list (props, syms, SCM_UNDEFINED), + me->property_pushes_); +} + +/* + Do it. SYMS maybe a symbol or a list of symbols. VAL is + SCM_UNDEFINED in case of a pop +*/ +void +Translator_group_initializer::apply_pushpop_property (Translator *trans, SCM syms, SCM eprop, SCM val) +{ + if (gh_symbol_p (syms)) + dynamic_cast(trans)->execute_single_pushpop_property (syms, eprop, val); + else for (SCM s = syms; gh_pair_p (s); s = gh_cdr (s)) + dynamic_cast(trans)->execute_single_pushpop_property (gh_car (s), eprop, val); +}