]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/paper-column.cc
(spelling) change "excentricity" to "eccentricity".
[lilypond.git] / lily / paper-column.cc
index 6b8d7a43647af9da6ce14d81f0783dbb57a8e556..a518e02c8f384d9ee36f8cab5f13ab2a70961984 100644 (file)
@@ -3,23 +3,26 @@
 
   source file of the GNU LilyPond music typesetter
 
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1997--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 */
 
-#include "moment.hh"
 #include "paper-column.hh"
 #include "paper-column.hh"
+
+#include "moment.hh"
 #include "paper-score.hh"
 #include "warn.hh"
 #include "axis-group-interface.hh"
 #include "spaceable-grob.hh"
 #include "paper-score.hh"
 #include "warn.hh"
 #include "axis-group-interface.hh"
 #include "spaceable-grob.hh"
-#include "stencil.hh"
-#include "text-item.hh"
+#include "text-interface.hh"
 #include "lookup.hh"
 #include "font-interface.hh"
 #include "lookup.hh"
 #include "font-interface.hh"
-#include "paper-def.hh"
-
-
+#include "output-def.hh"
 
 
+Grob *
+Paper_column::clone (int count) const
+{
+  return new Paper_column (*this, count);
+}
 
 ADD_INTERFACE (Paper_column, "paper-column-interface",
               "@code{Paper_column} objects form the top-most X-parents for items. "
 
 ADD_INTERFACE (Paper_column, "paper-column-interface",
               "@code{Paper_column} objects form the top-most X-parents for items. "
@@ -33,10 +36,9 @@ ADD_INTERFACE (Paper_column, "paper-column-interface",
               "  Since many columns go unused, you should only use the rank field to\n"
               "  get ordering information.  Two adjacent columns may have\n"
               "  non-adjacent numbers.\n"
               "  Since many columns go unused, you should only use the rank field to\n"
               "  get ordering information.  Two adjacent columns may have\n"
               "  non-adjacent numbers.\n"
-              "\n"
-              ,
+              "\n",
               "between-cols when bounded-by-me "
               "between-cols when bounded-by-me "
-              "shortest-playing-duration shortest-starter-duration");
+              "page-penalty shortest-playing-duration shortest-starter-duration");
 
 void
 Paper_column::do_break_processing ()
 
 void
 Paper_column::do_break_processing ()
@@ -45,42 +47,45 @@ Paper_column::do_break_processing ()
   Item::do_break_processing ();
 }
 
   Item::do_break_processing ();
 }
 
-
 int
 int
-Paper_column::get_rank (Grob*me) 
+Paper_column::get_rank (Grob *me)
 {
 {
-  return dynamic_cast<Paper_column*> (me)->rank_;
+  return dynamic_cast<Paper_column *> (me)->rank_;
 }
 
 }
 
-System*
+System *
 Paper_column::get_system () const
 {
   return system_;
 }
 
 Paper_column::get_system () const
 {
   return system_;
 }
 
-Paper_column*
+Paper_column *
 Paper_column::get_column () const
 {
 Paper_column::get_column () const
 {
-  return (Paper_column*) (this);
+  return (Paper_column *) (this);
 }
 
 }
 
-Paper_column::Paper_column (SCM l)
-  : Item (l)           // guh.?
+Paper_column::Paper_column (SCM l, Object_key const *key)
+  : Item (l, key)              // guh.?
 {
 {
-  system_=0;
+  system_ = 0;
   rank_ = -1;
 }
 
   rank_ = -1;
 }
 
+Paper_column::Paper_column (Paper_column const &src, int count)
+  : Item (src, count)
+{
+  system_ = 0;
+  rank_ = src.rank_;
+}
+
 Moment
 Moment
-Paper_column::when_mom (Grob*me)
+Paper_column::when_mom (Grob *me)
 {
   SCM m = me->get_property ("when");
 {
   SCM m = me->get_property ("when");
-  Moment s (0);
-  if (unsmob_moment (m))
-    {
-      return *unsmob_moment (m);
-    }
-  return s;
+  if (Moment *when = unsmob_moment (m))
+    return *when;
+  return Moment (0);
 }
 
 bool
 }
 
 bool
@@ -94,41 +99,47 @@ Paper_column::is_musical (Grob *me)
     }
   return s != Moment (0);
 }
     }
   return s != Moment (0);
 }
-  
 
 bool
 
 bool
-Paper_column::is_used (Grob*me)
+Paper_column::is_used (Grob *me)
 {
 {
-  return is_pair (me->get_property ("elements")) ||  Item::is_breakable (me)
-    || is_pair (me->get_property ("bounded-by-me"))
-    ;
+  return scm_is_pair (me->get_property ("elements")) || Item::is_breakable (me)
+    || scm_is_pair (me->get_property ("bounded-by-me"));
 }
 
 /*
 }
 
 /*
-  Print a vertical line and  the rank number, to aid debugging.  
- */
+  Print a vertical line and  the rank number, to aid debugging.
+*/
 
 
-MAKE_SCHEME_CALLBACK (Paper_column,print,1);
+MAKE_SCHEME_CALLBACK (Paper_column, print, 1);
 SCM
 Paper_column::print (SCM p)
 {
   Grob *me = unsmob_grob (p);
 
   String r = to_string (Paper_column::get_rank (me));
 SCM
 Paper_column::print (SCM p)
 {
   Grob *me = unsmob_grob (p);
 
   String r = to_string (Paper_column::get_rank (me));
+
+  Moment *mom = unsmob_moment (me->get_property ("when"));
+  String when = mom ? mom->to_string () : "?/?";
+    
   SCM properties = Font_interface::text_font_alist_chain (me);
 
   SCM properties = Font_interface::text_font_alist_chain (me);
 
-  SCM scm_mol = Text_item::interpret_markup (me->get_paper ()->self_scm (),
-                                            properties,
-                                            scm_makfrom0str (r.to_str0 ()));
+  SCM scm_mol = Text_interface::interpret_markup (me->get_layout ()->self_scm (),
+                                                 properties,
+                                                 scm_makfrom0str (r.to_str0 ()));
+  SCM when_mol = Text_interface::interpret_markup (me->get_layout ()->self_scm (),
+                                                  properties,
+                                                  scm_makfrom0str (when.to_str0 ()));
   Stencil t = *unsmob_stencil (scm_mol);
   Stencil t = *unsmob_stencil (scm_mol);
+  t.add_at_edge (Y_AXIS, DOWN, *unsmob_stencil (when_mol), 0.1, 0.1);
   t.align_to (X_AXIS, CENTER);
   t.align_to (Y_AXIS, DOWN);
   t.align_to (X_AXIS, CENTER);
   t.align_to (Y_AXIS, DOWN);
-  
+
   Stencil l = Lookup::filled_box (Box (Interval (-0.01, 0.01),
                                       Interval (-2, -1)));
 
   t.add_stencil (l);
   Stencil l = Lookup::filled_box (Box (Interval (-0.01, 0.01),
                                       Interval (-2, -1)));
 
   t.add_stencil (l);
-  return t.smobbed_copy ();                                            
+  return t.smobbed_copy ();
 }
 
 /*
 }
 
 /*
@@ -136,9 +147,9 @@ Paper_column::print (SCM p)
   columns are kept "alive". Unfortunately, when spanners are suicided,
   this falls apart again. (sigh.)
 
   columns are kept "alive". Unfortunately, when spanners are suicided,
   this falls apart again. (sigh.)
 
-  THIS IS BROKEN KLUDGE. WE SHOULD INVENT SOMETHING BETTER. 
- */
-MAKE_SCHEME_CALLBACK (Paper_column,before_line_breaking,1);
+  THIS IS BROKEN KLUDGE. WE SHOULD INVENT SOMETHING BETTER.
+*/
+MAKE_SCHEME_CALLBACK (Paper_column, before_line_breaking, 1);
 SCM
 Paper_column::before_line_breaking (SCM grob)
 {
 SCM
 Paper_column::before_line_breaking (SCM grob)
 {
@@ -147,13 +158,13 @@ Paper_column::before_line_breaking (SCM grob)
   SCM c = me->get_property ("bounded-by-me");
   SCM *ptrptr = &c;
 
   SCM c = me->get_property ("bounded-by-me");
   SCM *ptrptr = &c;
 
-  while (is_pair (*ptrptr))
+  while (scm_is_pair (*ptrptr))
     {
     {
-      Grob * g = unsmob_grob (ly_car (*ptrptr));
+      Grob *g = unsmob_grob (scm_car (*ptrptr));
 
 
-      if (!g || !g->live ())
+      if (!g || !g->is_live ())
        {
        {
-         *ptrptr = ly_cdr (*ptrptr);
+         *ptrptr = scm_cdr (*ptrptr);
        }
       else
        {
        }
       else
        {