/** determine the distance to translate lyrics to get correct alignment
Rules: If alignment is centre, translate = 0
Otherwise,
- If (length of longest lyric) < (property {begin,end}-alignment) * (length of shortest lyric),
+ If (length of longest lyric) < property("end-alignment") * (length of shortest lyric),
- centre longest lyric on notehead
Otherwise
- move so shortest lyric just reaches notehead centre
{
Real translate = 0.0;
if (alignment_i_ != CENTER) {
- switch (alignment_i_) {
- // FIXME: do we really know the lyric extent here? Some font sizing comes later?
- case LEFT:
- translate = longest_lyric_l_->extent (longest_lyric_l_, X_AXIS).length () / gh_scm2double (longest_lyric_l_->get_grob_property("begin-alignment"));
- break;
- case RIGHT:
- translate = longest_lyric_l_->extent (longest_lyric_l_, X_AXIS).length () / gh_scm2double (longest_lyric_l_->get_grob_property("end-alignment"));
- break;
- }
- if (!gh_scm2bool(longest_lyric_l_->get_grob_property("ignore-length-mismatch"))) {
- Real l = shortest_lyric_l_->extent (shortest_lyric_l_, X_AXIS).length ();
- translate = l <? translate;
- }
-
+ // FIXME: do we really know the lyric extent here? Some font sizing comes later?
+ Real l1 = longest_lyric_l_->extent (longest_lyric_l_, X_AXIS).length () / gh_scm2double (longest_lyric_l_->get_grob_property("end-alignment"));
+ Real l2 = shortest_lyric_l_->extent (shortest_lyric_l_, X_AXIS).length ();
+
+ translate = l1 <? l2;
translate *= alignment_i_ ;
}
return translate;