]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/bar-line.cc
Merge branch 'master' of ssh://jomand@git.sv.gnu.org/srv/git/lilypond into lilypond...
[lilypond.git] / lily / bar-line.cc
index 4d2cbf9b5968b46b80f3f9c7b557379a09fde3d2..c9d9159a4cfff26591f12404053947c623ef6cba 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  (c) 1997--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
 #include "bar-line.hh"
@@ -145,11 +145,33 @@ Bar_line::compound_barline (Grob *me, string str, Real h,
       m.add_at_edge (X_AXIS, RIGHT, thick, kern);
       m.add_at_edge (X_AXIS, RIGHT, colon, kern);
     }
+  else if (str == ":|.|:")
+    {
+      m.add_at_edge (X_AXIS, LEFT, thick, 0);
+      m.add_at_edge (X_AXIS, LEFT, thin, kern);
+      m.add_at_edge (X_AXIS, LEFT, colon, kern);
+      m.add_at_edge (X_AXIS, RIGHT, thin, kern);
+      m.add_at_edge (X_AXIS, RIGHT, colon, kern);
+
+    }
+  else if (str == ":|.:")
+    {
+      m.add_at_edge (X_AXIS, LEFT, thick, 0);
+      m.add_at_edge (X_AXIS, LEFT, thin, kern);
+      m.add_at_edge (X_AXIS, LEFT, colon, kern);
+      m.add_at_edge (X_AXIS, RIGHT, colon, kern);
+    }
   else if (str == ".|.")
     {
       m.add_at_edge (X_AXIS, LEFT, thick, thinkern);
       m.add_at_edge (X_AXIS, RIGHT, thick, kern);
     }
+  else if (str == "|.|")
+    {
+      m.add_at_edge (X_AXIS, LEFT, thick, 0);
+      m.add_at_edge (X_AXIS, LEFT, thin, kern);
+      m.add_at_edge (X_AXIS, RIGHT, thin, kern);
+    }
   else if (str == "||")
     {
       /*
@@ -176,6 +198,10 @@ Bar_line::compound_barline (Grob *me, string str, Real h,
     {
       m = dashed_bar_line (me, h, hair);
     }
+  else if (str == "'")
+    {
+      m = tick_bar_line (me, h, rounded);
+    }
   else if (str == ".")
     {
       m = dot;
@@ -200,6 +226,22 @@ Bar_line::simple_barline (Grob *me,
                                        Interval (-h / 2, h / 2)), blot);
 }
 
+Stencil
+Bar_line::tick_bar_line (Grob *me, Real h, bool rounded)
+{
+  Real th = Staff_symbol_referencer::staff_space (me) / 2;
+  Real line_thick = Staff_symbol_referencer::line_thickness (me);
+
+  Real blot
+    = rounded
+    ? me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"))
+    : 0.0;
+
+  return Lookup::round_filled_box (Box (Interval (0, line_thick),
+                                        Interval (h / 2 - th, h / 2 + th)), blot);
+}
+
+
 MAKE_SCHEME_CALLBACK (Bar_line, calc_bar_size, 1);
 SCM
 Bar_line::calc_bar_size (SCM smob)
@@ -312,13 +354,17 @@ ADD_INTERFACE (Bar_line,
               "\n"
               "Print a special bar symbol.  It replaces the regular bar"
               " symbol with a special symbol.  The argument @var{bartype}"
-              " is a string which specifies the kind of bar to print."
-              "  Options are @code{:|}, @code{|:}, @code{:|:}, @code{||},"
-              " @code{|.}, @code{.|}, and @code{.|.}.\n"
+              " is a string which specifies the kind of bar line to print."
+              "  Options are @code{:|}, @code{|:}, @code{:|:}, @code{:|.|:},"
+              " @code{:|.:}, @code{||}, @code{|.}, @code{.|}, @code{.|.},"
+              " @code{|.|}, @code{:} and @code{dashed}.\n"
               "\n"
               "These produce, respectively, a right repeat, a left repeat,"
-              " a double repeat, a double bar, a start bar, an end bar, and"
-              " a thick double bar.  In addition, there is an option"
+              " a thick double repeat, a thin-thick-thin double repeat,"
+              " a thin-thick double repeat, a double bar, a start bar,"
+              " an end bar, a thick double bar, a thin-thick-thin bar,"
+              " a dotted bar and a dashed bar."
+              "  In addition, there is an option"
               " @code{||:} which is equivalent to @code{|:} except at line"
               " breaks, where it produces a double bar (@code{||}) at the"
               " end of the line and a repeat sign (@code{|:}) at the"
@@ -327,7 +373,7 @@ ADD_INTERFACE (Bar_line,
               "If @var{bartype} is set to @code{empty} then nothing is"
               " printed, but a line break is allowed at that spot.\n"
               "\n"
-              "@code{gap} is used for the gaps in dashed barlines.",
+              "@code{gap} is used for the gaps in dashed bar lines.",
 
               /* properties */
               "allow-span-bar "
@@ -341,5 +387,3 @@ ADD_INTERFACE (Bar_line,
               "bar-size "
               "bar-extent "
               );
-
-