source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+ (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
*/
-
-#include "mark-engraver.hh"
-#include "text-def.hh"
-#include "script.hh"
-#include "paper-def.hh"
#include "command-request.hh"
-#include "time-description.hh"
+#include "mark-engraver.hh"
#include "engraver-group.hh"
+#include "g-text-item.hh"
+
-IMPLEMENT_IS_TYPE_B1 (Mark_engraver, Engraver);
ADD_THIS_TRANSLATOR (Mark_engraver);
Mark_engraver::Mark_engraver ()
{
mark_req_l_ = 0;
- script_p_ = 0;
+ axis_ = Y_AXIS;
+ type_ = "mark";
}
-bool
-Mark_engraver::do_try_request (Request* r_l)
+void
+Mark_engraver::do_post_move_processing ()
{
- Command_req* c_l = dynamic_cast <Command_req *> (r_l);
- if (!c_l || !dynamic_cast <Mark_req *> (c_l) || mark_req_l_)
- return false;
-
- mark_req_l_ = dynamic_cast <Mark_req *> (c_l);
-
- return true;
+ mark_req_l_ = 0;
}
-void
-Mark_engraver::do_process_requests ()
-{
- if (!mark_req_l_ || script_p_)
- return;
-
- script_p_ = new Script;
- script_p_->breakable_b_ = true;
- Text_def *td_p = new Text_def;
-
- td_p->text_str_ = mark_req_l_->str_;
- td_p->align_dir_ = CENTER;
-
- td_p->style_str_ = td_p->text_str_.index_any_i ("0123456789") >= 0
- ? "mark" : "Large";
-
- script_p_->dir_ = LEFT;
- script_p_->specs_p_ = td_p->clone ();
- script_p_->postbreak_only_b_ = true;
-
- Scalar padding = get_property ("markScriptPadding");
- if (padding.length_i() && padding.isnum_b ())
- {
- script_p_->padding_f_ = Real(padding);
- }
- Scalar break_priority = get_property ("markBreakPriority");
- if (break_priority.length_i() && break_priority.isnum_b ())
+bool
+Mark_engraver::do_try_music (Music* r_l)
+{
+ if (Mark_req *mr = dynamic_cast <Mark_req *> (r_l))
{
- script_p_->break_priority_i_ = int(break_priority);
+ mark_req_l_ = mr;
+ return true;
}
-
-
- announce_element (Score_element_info (script_p_, mark_req_l_));
+ return false;
}
-void
-Mark_engraver::do_pre_move_processing ()
+void
+Mark_engraver::do_process_requests ()
{
- if (script_p_)
+ if (mark_req_l_)
{
- typeset_element (script_p_);
- script_p_ = 0;
- mark_req_l_ = 0;
+ create_items (mark_req_l_);
+ text_p_->text_str_ = mark_req_l_->str_;
+ text_p_->style_str_ = text_p_->text_str_.index_any_i ("0123456789") >= 0
+ ? "mark" : "Large";
}
}
-