#include "lookup.hh"
#include "staff-symbol-referencer.hh"
#include "note-head.hh"
-#include "paper-def.hh"
+#include "output-def.hh"
#include "bezier.hh"
#include "warn.hh"
Real line_thickness)
{
Real staff_space = Staff_symbol_referencer::staff_space (me);
- Stencil stencil = Stencil ();
+ Stencil stencil;
Real right_height = 0.6 * staff_space;
Real interval;
- SCM flexa_height_scm = me->get_grob_property ("flexa-height");
+ SCM flexa_height_scm = me->get_property ("flexa-height");
if (flexa_height_scm != SCM_EOL)
{
- interval = gh_scm2int (flexa_height_scm);
+ interval = ly_scm2int (flexa_height_scm);
}
else
{
me->warning (_ ("ascending vaticana style flexa"));
}
- Real width = robust_scm2double ( me->get_grob_property ("flexa-width"), 2);
+ Real width = robust_scm2double ( me->get_property ("flexa-width"), 2);
/*
* Compensate curve thickness that appears to be smaller in steep
*/
Real left_height =
right_height +
- min (0.12 * abs(interval), 0.3) * staff_space;
+ min (0.12 * abs (interval), 0.3) * staff_space;
/*
* Compensate optical illusion regarding vertical position of left
* and right endings due to curved shape.
*/
- Real ypos_correction = -0.1*staff_space * sign(interval);
- Real interval_correction = 0.2*staff_space * sign(interval);
+ Real ypos_correction = -0.1*staff_space * sign (interval);
+ Real interval_correction = 0.2*staff_space * sign (interval);
Real corrected_interval = interval*staff_space + interval_correction;
/*
inner_top_curve.translate (Offset (0.0, -line_thickness));
Stencil top_edge =
Lookup::bezier_sandwich (top_curve, inner_top_curve);
- stencil.add_stencil(top_edge);
+ stencil.add_stencil (top_edge);
Bezier inner_bottom_curve = bottom_curve;
inner_bottom_curve.translate (Offset (0.0, +line_thickness));
Stencil bottom_edge =
Lookup::bezier_sandwich (bottom_curve, inner_bottom_curve);
- stencil.add_stencil(bottom_edge);
+ stencil.add_stencil (bottom_edge);
/*
* TODO: Use horizontal slope with proper slope value rather
Box left_edge_box (Interval (0, line_thickness),
Interval (-0.5*left_height, +0.5*left_height));
Stencil left_edge = Lookup::filled_box (left_edge_box);
- stencil.add_stencil(left_edge);
+ stencil.add_stencil (left_edge);
Box right_edge_box (Interval (-line_thickness, 0),
Interval (-0.5*right_height, +0.5*right_height));
Stencil right_edge = Lookup::filled_box (right_edge_box);
right_edge.translate_axis (width, X_AXIS);
right_edge.translate_axis (corrected_interval / 2.0, Y_AXIS);
- stencil.add_stencil(right_edge);
+ stencil.add_stencil (right_edge);
}
stencil.translate_axis (ypos_correction, Y_AXIS);
return stencil;
return Lookup::round_filled_box (join_box, blotdiameter);
}
-void
-vaticana_add_ledger_lines (Grob *me, Stencil *out, int pos, Real offs,
- bool ledger_take_space)
-{
- int interspaces = Staff_symbol_referencer::line_count (me)-1;
- if (abs (pos) - interspaces > 1)
- {
- Interval hd = out->extent (X_AXIS);
- Real left_ledger_protusion = hd.length ()/4;
- Real right_ledger_protusion = left_ledger_protusion;
-
- Interval l_extents = Interval (hd[LEFT] - left_ledger_protusion,
- hd[RIGHT] + right_ledger_protusion);
- Stencil ledger_lines =
- Note_head::brew_ledger_lines (me, pos, interspaces,
- l_extents, 0,
- ledger_take_space);
- ledger_lines.translate_axis (offs, Y_AXIS);
- out->add_stencil (ledger_lines);
- }
-}
-
Stencil
-vaticana_brew_primitive (Grob *me, bool ledger_take_space)
+vaticana_brew_primitive (Grob *me)
{
- SCM glyph_name_scm = me->get_grob_property ("glyph-name");
+ SCM glyph_name_scm = me->get_property ("glyph-name");
if (glyph_name_scm == SCM_EOL)
{
me->programming_error ("Vaticana_ligature: "
Stencil out;
int flexa_height = 0;
- Real thickness = robust_scm2double ( me->get_grob_property ("thickness"), 1);
+ Real thickness = robust_scm2double ( me->get_property ("thickness"), 1);
Real line_thickness =
- thickness * me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
+ thickness * me->get_paper ()->get_dimension (ly_symbol2scm ("linethickness"));
Real blotdiameter =
- (me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter")));
+ (me->get_paper ()->get_dimension (ly_symbol2scm ("blotdiameter")));
- int pos = (int)rint (Staff_symbol_referencer::get_position (me));
+ int pos = Staff_symbol_referencer::get_rounded_position (me);
- SCM delta_pitch_scm = me->get_grob_property ("delta-pitch");
+ SCM delta_pitch_scm = me->get_property ("delta-pitch");
int delta_pitch;
if (delta_pitch_scm != SCM_EOL)
- delta_pitch = gh_scm2int (delta_pitch_scm);
+ delta_pitch = ly_scm2int (delta_pitch_scm);
else
delta_pitch = 0;
- Real x_offset = robust_scm2double ( me->get_grob_property ("x-offset"), 0);
+ Real x_offset = robust_scm2double ( me->get_property ("x-offset"), 0);
- bool add_stem = to_boolean (me->get_grob_property ("add-stem"));
- bool add_cauda = to_boolean (me->get_grob_property ("add-cauda"));
- bool add_join = to_boolean (me->get_grob_property ("add-join"));
+ bool add_stem = to_boolean (me->get_property ("add-stem"));
+ bool add_cauda = to_boolean (me->get_property ("add-cauda"));
+ bool add_join = to_boolean (me->get_property ("add-join"));
if (!String::compare (glyph_name, ""))
{
* flexa_width.)
*/
Real staff_space = Staff_symbol_referencer::staff_space (me);
- Real flexa_width = robust_scm2double ( me->get_grob_property ("flexa-width"), 2) *staff_space;
+ Real flexa_width = robust_scm2double ( me->get_property ("flexa-width"), 2) *staff_space;
out =
Lookup::blank (Box (Interval (0, 0.5*flexa_width), Interval (0,0)));
}
out.add_stencil (join);
}
- vaticana_add_ledger_lines(me, &out, pos, 0, ledger_take_space);
- if (!String::compare (glyph_name, "flexa"))
- {
- pos += flexa_height;
- vaticana_add_ledger_lines(me, &out, pos, 0.5*flexa_height,
- ledger_take_space);
- }
-
return out;
}
Vaticana_ligature::brew_ligature_primitive (SCM smob)
{
Grob *me = unsmob_grob (smob);
- SCM primitive = vaticana_brew_primitive (me, false).smobbed_copy ();
+ SCM primitive = vaticana_brew_primitive (me).smobbed_copy ();
return primitive;
}