source file of the GNU LilyPond music typesetter
- (c) 1997--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "all-font-metrics.hh"
#include "score-engraver.hh"
#include "paper-score.hh"
#include "paper-column.hh"
-#include "command-request.hh"
+
#include "paper-def.hh"
#include "axis-group-interface.hh"
-#include "translator-def.hh"
+#include "context-def.hh"
#include "staff-spacing.hh"
#include "note-spacing.hh"
command_column_->set_grob_property ("breakable", SCM_BOOL_T);
- Grob_info i1 (command_column_);
+ Grob_info i1;
+ i1.grob_ = command_column_;
i1.origin_trans_ = this;
- Grob_info i2 (musical_column_);
+ announce_grob (i1);
+
+ Grob_info i2;
+ i2.grob_ = musical_column_;
i2.origin_trans_ = this;
-
- announce_grob (i1);
announce_grob (i2);
-
-
}
}
progress_indication ("[" + to_string (breaks_) + "]");
check_removal ();
- removal_processing ();
-
+ finalize ();
}
/*
error (_f ("can't find `%s'", "feta20.afm")
+ "\n" +_ ("Fonts have not been installed properly. Aborting"));
- unsmob_translator_def (definition_)->apply_property_operations (this);
+ unsmob_context_def (definition_)->apply_default_property_operations (this);
assert (dynamic_cast<Paper_def *> (output_def_));
assert (!daddy_trans_);
}
stop_translation_timestep ();
+
+ apply_finalizations ();
check_removal ();
Grob *g = announce_infos_[i].grob_;
if (!dynamic_cast<Paper_column*> (g)) // ugh.
{
-
String msg= "Grob "
+ g->name()
+ " was created too late!";
if (!elem)
programming_error ("Score_engraver: empty elt\n");
else
-
elems_.push (elem);
}
{
bool gotcha = Engraver_group_engraver::try_music (r);
- if (!gotcha)
+ if (!gotcha && r->is_mus_type ("break-event"))
{
- if (Break_req* b = dynamic_cast<Break_req *> (r))
- {
- gotcha = true;
+ gotcha = true;
+ SCM pen = command_column_->get_grob_property ("penalty");
+ Real total_penalty = gh_number_p (pen)
+ ? gh_scm2double (pen)
+ : 0.0;
- SCM pen = command_column_->get_grob_property ("penalty");
- Real total_penalty = gh_number_p (pen)
- ? gh_scm2double (pen)
- : 0.0;
-
- SCM rpen = b->get_mus_property ("penalty");
- if (gh_number_p (rpen))
- total_penalty += gh_scm2double (rpen);
+ SCM rpen = r->get_mus_property ("penalty");
+ if (gh_number_p (rpen))
+ total_penalty += gh_scm2double (rpen);
- if (total_penalty > 10000.0) // ugh. arbitrary.
- forbid_breaks ();
+ if (total_penalty > 10000.0) // ugh. arbitrary.
+ forbid_breaks ();
- command_column_->set_grob_property ("penalty",
- gh_double2scm (total_penalty));
- }
+ command_column_->set_grob_property ("penalty",
+ gh_double2scm (total_penalty));
}
- return gotcha;
+ return gotcha;
}
/*
ENTER_DESCRIPTION(Score_engraver,
-/* descr */ "Top level engraver. Takes care of generating columns and the complete system (ie. System)
-
-
-This engraver decides whether a column is breakable. The default is
-that a column is always breakable. However, when every Bar_engraver
-that does not have a barline at a certain point will call
-Score_engraver::forbid_breaks to stop linebreaks. In practice, this
-means that you can make a breakpoint by creating a barline (assuming
-that there are no beams or notes that prevent a breakpoint.)
-
-
-",
-/* creats*/ "System PaperColumn NonMusicalPaperColumn",
+/* descr */ "Top level engraver. Takes care of generating columns and the complete system (ie. System) "
+"\n\n "
+"This engraver decides whether a column is breakable. The default is "
+"that a column is always breakable. However, when every Bar_engraver "
+"that does not have a barline at a certain point will call "
+"Score_engraver::forbid_breaks to stop linebreaks. In practice, this "
+"means that you can make a breakpoint by creating a barline (assuming "
+"that there are no beams or notes that prevent a breakpoint.) "
+,
+/* creats*/ "System PaperColumn NonMusicalPaperColumn",
+/* accepts */ "break-event",
/* acks */ "note-spacing-interface staff-spacing-interface",
/* reads */ "currentMusicalColumn currentCommandColumn",
/* write */ "");