---- ../lilypond-1.1.23.jcn3/NEWS Thu Jan 21 18:57:17 1999
+--- ../lilypond-1.1.23.jcn4/NEWS Fri Jan 22 17:54:13 1999
+++ b/NEWS Sat Jan 23 16:13:25 1999
+@@ -1,3 +1,6 @@
+pl 23.jcn5
+ - verder hakken aan repeat-engraver URG
+
+ pl 23.jcn4
+ - hakken aan repeat-engaver
+ --- ../lilypond-1.1.23.jcn3/NEWS Thu Jan 21 18:57:17 1999
++ b/NEWS Fri Jan 22 17:54:13 1999
@@ -1,3 +1,6 @@
pl 23.jcn4
MAJOR_VERSION=1
MINOR_VERSION=1
PATCH_LEVEL=23
-MY_PATCH_LEVEL=jcn4
+MY_PATCH_LEVEL=jcn5
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
\score{
<
\type Staff \notes\relative c'{
- c d e f
+ c4 d e f
\repeat 2 { g a b c }
- \alternative { { c b a g } { f e d c } }
- }
- \type Lyrics \lyrics {
- De eer- ste < { maat } { moet } >
- \repeat 2 { }
- \alternative <
- { en dan twee keer }
- { een koe- plet _ }
- >
- en dan nog dit er ach- ter aan
+% \alternative { { c b a g } { f e d c } } c c c c
+ \alternative { { c b a g } { f e d c } { c d e f } }
+ g g g g
+ \repeat 2 { c c c c }
+ \repeat 2 { c c c c }
}
>
}
Bar_engraver::Bar_engraver()
{
bar_p_ =0;
- bar_l_ =0;
do_post_move_processing();
}
{
if (Bar *b = dynamic_cast<Bar *> (i.elem_l_))
{
- bar_l_ = b;
- // auto_create_bar_b_ = false;
+ // only bar-engraver should create bars
+ assert (0);
}
}
}
}
+void
+Bar_engraver::request_bar (String type_str)
+{
+#if 0 // will dump core at announce_element (invalid daddy_grav_l_...)
+ create_bar ();
+#else
+ if (!bar_p_)
+ {
+ bar_p_ = new Bar;
+ bar_p_->break_priority_i_ = 0;
+ // urg: "" != empty...
+ String default_type = get_property ("defaultBarType", 0);
+ if (default_type.length_i ())
+ {
+ bar_p_->type_str_ = default_type;
+ }
+ }
+#endif
+ if (((type_str == "|:") && (bar_p_->type_str_ == ":|"))
+ || ((type_str == ":|") && (bar_p_->type_str_ == "|:")))
+ bar_p_->type_str_ = ":|:";
+ else
+ bar_p_->type_str_ = type_str;
+}
void
Bar_engraver::do_creation_processing ()
Time_description const *time = get_staff_info().time_C_;
if (bar_req_l_)
{
- if (!bar_p_)
- create_bar ();
-
+ create_bar ();
bar_p_->type_str_ = bar_req_l_->type_str_;
}
else
}
}
- /*
- hmm, perhaps it's Better to create empty bars if you want none
- displayed, and keep bars for breakpoints ?
- */
-#if 0
- if ((time && time->whole_in_measure_)
- && !always.to_bool ()
- && !bar_p_ && !bar_l_)
-#endif
- if (!bar_p_ && !bar_l_)
+ if (!bar_p_)
{
Break_req r;
r.penalty_i_ = Break_req::DISALLOW;
void
Bar_engraver::do_pre_move_processing()
{
- if (bar_l_)
- {
- bar_l_ = 0;
- if (bar_p_)
- {
- bar_p_->unlink ();
- bar_p_ = 0;
- }
- }
if (bar_p_)
{
typeset_element (bar_p_);
*/
-#ifndef BARGRAV_HH
-#define BARGRAV_HH
+#ifndef BAR_ENGRAVER_HH
+#define BAR_ENGRAVER_HH
+
#include "engraver.hh"
/**
generate bars. Either user ("|:"), or default (new measure)
*/
-class Bar_engraver : public Engraver {
- Bar_req * bar_req_l_;
- Bar * bar_p_;
- Bar * bar_l_;
- bool auto_create_bar_b_;
-
- void create_bar ();
+class Bar_engraver : public Engraver
+{
public:
- VIRTUAL_COPY_CONS(Translator);
Bar_engraver();
+ VIRTUAL_COPY_CONS(Translator);
-
-
+ void request_bar (String type_str);
+
protected:
virtual void acknowledge_element (Score_element_info i);
virtual void do_creation_processing ();
virtual void do_process_requests();
virtual void do_pre_move_processing();
virtual void do_post_move_processing();
+
+private:
+ void create_bar ();
+
+ Bar_req * bar_req_l_;
+ Bar * bar_p_;
+ bool auto_create_bar_b_;
};
-#endif // BARGRAV_HH
+#endif // BAR_ENGRAVER_HH
VIRTUAL_COPY_CONS (Score_element);
virtual void do_add_processing ();
+ virtual Interval do_height () const;
virtual void do_post_processing ();
virtual void do_substitute_dependency (Score_element*,Score_element*);
};
#include "repeat-engraver.hh"
#include "bar.hh"
+#include "bar-engraver.hh"
#include "musical-request.hh"
#include "multi-measure-rest.hh"
#include "command-request.hh"
#include "time-description.hh"
#include "volta-spanner.hh"
#include "note-column.hh"
+#include "paper-def.hh"
ADD_THIS_TRANSLATOR (Repeat_engraver);
typeset_element (volta_p_arr_[i]);
}
+#define URG
+
void
Repeat_engraver::do_process_requests ()
{
Moment now = now_moment ();
+ Time_description const *time = get_staff_info().time_C_;
+ Bar_engraver* bar_engraver_l = dynamic_cast <Bar_engraver*>
+ (paper ()->find_translator_l ("Bar_engraver"));
for (int i = bar_p_arr_.size (); i < repeated_music_arr_.size (); i++)
{
- Bar* bar_p = new Bar;
- bar_p-> type_str_ = "|:";
- bar_p_arr_.push (bar_p);
- if (now > Moment (0))
- announce_element (Score_element_info (bar_p, repeated_music_arr_[i]));
+#ifndef URG
+ //suck me plenty
+ // nou hw, ik heb 't geprobeerd, maar ik snap er geen ruk van:
+ // zodra ik het via gevonden bar-engraver doe, dumpt ze koor
+ // in create_bar::announce_element, of ze zet helemaal geen ":|".
+ // het lijkt erop alsof ik een heel andere bar-engraver vind
+ // dan die ik zoek, ofzo??
+ if (bar_engraver_l && (now > Moment (0)))
+ bar_engraver_l->request_bar (":|");
+ else
+#endif
+ if (now > Moment (0))
+ {
+ Bar* bar_p = new Bar;
+ bar_p-> type_str_ = "|:";
+ bar_p_arr_.push (bar_p);
+#ifndef URG
+ announce_element (Score_element_info (bar_p,
+ repeated_music_arr_[i]));
+#endif
+ }
}
for (int i = 0; i < bar_p_arr_.size (); i++)
{
if (!bar_p_arr_[i] && (now >= stop_mom_arr_[i]))
{
- Bar* bar_p = new Bar;
- bar_p-> type_str_ = ":|";
- bar_p_arr_[i] = bar_p;
- announce_element (Score_element_info (bar_p, repeated_music_arr_[i]));
+#ifndef URG
+ //suck me plenty
+ if (bar_engraver_l)
+ bar_engraver_l->request_bar ("|:");
+ else
+#endif
+ {
+ Bar* bar_p = new Bar;
+ bar_p-> type_str_ = ":|";
+ bar_p_arr_[i] = bar_p;
+#ifndef URG
+ announce_element (Score_element_info (bar_p,
+ repeated_music_arr_[i]));
+#endif
+ }
}
}
int bees = volta_p_arr_.size ();
dot_p_->style_str_ = "bold";
}
+Interval
+Volta_spanner::do_height () const
+{
+ /*
+ in most cases, it's a lot better not no have height...
+ */
+ Interval i;
+ return i;
+}
+
void
Volta_spanner::do_post_processing ()
{