]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/text-def.cc
patch::: 0.1.31.jcn1: minder ugh
[lilypond.git] / lily / text-def.cc
index 22affae7edbc6a29546f2d0ea61c2344849eafdd..c41bfeb58a404bc90c42f019826a98bee6727b62 100644 (file)
@@ -1,31 +1,63 @@
+/*
+  text-def.cc -- implement Text_def
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
 #include "debug.hh"
 #include "lookup.hh"
 #include "paper-def.hh"
 #include "molecule.hh"
 #include "text-def.hh"
+#include "dimen.hh"
+
+Interval
+Text_def::width (Paper_def * p) const
+{
+  Atom a = get_atom (p,CENTER);
+
+  Real guess_width_f = text_str_.length_i() * a.dim_.x ().length (); // ugh
+  Interval i (0, guess_width_f);
+  i += - (align_i_ + 1)* i.center();
+  return i;
+}
+
+void
+Text_def::do_print() const
+{
+#ifndef NPRINT
+  DOUT << "align " <<align_i_ << " `" << text_str_ << "'";
+#endif
+}
 
 Text_def::Text_def()
 {   
-    align_i_ = 1;                      // right
-    style_str_ = "roman";
-    defined_ch_C_ = 0;
+  align_i_ = 1;                        // right
+  style_str_ = "roman";
 }
+
 bool
-Text_def::compare(Text_def const &def)
+Text_def::do_equal_b (General_script_def const *gdef) const
 {
-    return align_i_ == def.align_i_ && text_str_ == def.text_str_
-       && style_str_ == def.style_str_;
+  Text_def const *def= (Text_def*)gdef;
+  return align_i_ == def->align_i_ && text_str_ == def->text_str_
+       && style_str_ == def->style_str_;
 }
 
 Atom
-Text_def::create_atom(Paper_def*p) const
+Text_def::get_atom (Paper_def *p, Direction) const
 {
-    return p->lookup_l()->text(style_str_, text_str_, -align_i_);
+  return p->lookup_l()->text (style_str_, text_str_, -align_i_);
 }
 
 void
 Text_def::print() const
 {
-    mtor << "Text `" << text_str_ << "\', style " <<
+  DOUT << "Text `" << text_str_ << "\', style " <<
        style_str_ << "align " << align_i_ << '\n';
 }
+
+
+IMPLEMENT_IS_TYPE_B1(Text_def,General_script_def);