X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fsystem-start-text.cc;h=ece932bd766194ff9cfde580135e53bb3c99df6f;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=494ab149b883f8f024df6d37ca685dca8e171dbf;hpb=d2300573cae3c1920400d040faddd33f17b43c2d;p=lilypond.git diff --git a/lily/system-start-text.cc b/lily/system-start-text.cc index 494ab149b8..ece932bd76 100644 --- a/lily/system-start-text.cc +++ b/lily/system-start-text.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2006--2007 Han-Wen Nienhuys + (c) 2006--2008 Han-Wen Nienhuys */ @@ -45,7 +45,23 @@ System_start_text::get_stencil (Grob *me_grob) SCM align_y = me_grob->get_property ("self-alignment-Y"); if (scm_is_number (align_y)) p->align_to (Y_AXIS, robust_scm2double (align_y, 0.0)); - return *p; + + /* Horizontal alignment according to the self-alignment-X property + * and indent value. */ + Output_def *layout = me_grob->layout (); + Real indent; + if (me->get_break_index () == 0) + indent = robust_scm2double (layout->c_variable ("indent"), 0); + else + indent = robust_scm2double (layout->c_variable ("short-indent"), 0); + Real align_x = robust_scm2double (me->get_property ("self-alignment-X"), 0); + Interval p_extent_x = p->extent (X_AXIS); + Interval padding (0.0, max (0.0, indent - p_extent_x.length ())); + Real right_padding = padding.length () - padding.linear_combination (align_x); + Box box (Interval (p_extent_x[LEFT], p_extent_x[RIGHT] + right_padding), + p->extent (Y_AXIS)); + Stencil *aligned_p = new Stencil (box, p->expr ()); + return *aligned_p; } return Stencil (); } @@ -101,4 +117,5 @@ ADD_INTERFACE (System_start_text, "text " "long-text " "self-alignment-Y " + "self-alignment-X " );