(c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "translator-group.hh"
-#include "axis-group-engraver.hh"
#include "paper-column.hh"
#include "align-interface.hh"
#include "span-bar.hh"
#include "engraver.hh"
#include "spanner.hh"
-class Vertical_align_engraver : public Engraver {
+class Vertical_align_engraver : public Engraver
+{
Spanner * valign_p_;
bool qualifies_b (Score_element_info) const;
public:
VIRTUAL_COPY_CONS(Translator);
-
Vertical_align_engraver();
protected:
-
virtual void acknowledge_element (Score_element_info);
virtual void do_creation_processing();
virtual void do_removal_processing();
};
-
Vertical_align_engraver::Vertical_align_engraver()
{
valign_p_ =0;
void
Vertical_align_engraver::do_creation_processing()
{
- valign_p_ =new Spanner (SCM_EOL); // todo -> basic props
- Align_interface (valign_p_).set_interface ();
- Align_interface (valign_p_).set_axis (Y_AXIS);
- valign_p_->set_elt_property ("stacking-dir",
- gh_int2scm (DOWN));
-
- valign_p_->set_bound(LEFT,get_staff_info().command_pcol_l ());
- announce_element (Score_element_info (valign_p_ , 0));
+ valign_p_ =new Spanner (get_property ("VerticalAlignment"));
+ valign_p_->set_bound(LEFT,unsmob_element (get_property ("currentCommandColumn")));
+ announce_element (valign_p_ , 0);
}
void
Vertical_align_engraver::do_removal_processing()
{
- SCM min = get_property ("maxVerticalAlign");
- SCM max = get_property ("minVerticalAlign");
-
- if (gh_number_p (min) || gh_number_p (max))
- {
- min = gh_number_p (min) ? min : gh_double2scm (0.0);
- max = gh_number_p (max) ? max : gh_double2scm (infinity_f);
-
- valign_p_->set_elt_property ("threshold",
- gh_cons (min,max));
- }
- valign_p_->set_bound(RIGHT,get_staff_info().command_pcol_l ());
+ valign_p_->set_bound(RIGHT,unsmob_element (get_property ("currentCommandColumn")));
typeset_element (valign_p_);
valign_p_ =0;
}
{
int sz = i.origin_trans_l_arr ((Translator*)this).size() ;
-
- Axis_group_interface agi(i.elem_l_);
-
- return sz > 1 && agi.has_interface_b ()
- && !i.elem_l_->parent_l (Y_AXIS) && agi.axis_b (Y_AXIS);
+ return sz > 1 && Axis_group_interface::has_interface (i.elem_l_)
+ && !i.elem_l_->parent_l (Y_AXIS) && Axis_group_interface::axis_b (i.elem_l_, Y_AXIS);
}
void
{
if (qualifies_b (i))
{
- Align_interface(valign_p_).add_element (i.elem_l_);
+ Align_interface::add_element (valign_p_,i.elem_l_);
}
}
-
-
ADD_THIS_TRANSLATOR(Vertical_align_engraver);