X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftext-item.cc;h=b6252548673cafea2353d7422e8d9625db60e54a;hb=8a4b84458c8fc5e8e1e2288a92da01cd5eda1b2f;hp=6d3b67d003e0623bb331d72cd8f8923b75146f3c;hpb=52102901e53611ad7bad111c2f9d414d2e593bc3;p=lilypond.git diff --git a/lily/text-item.cc b/lily/text-item.cc index 6d3b67d003..b625254867 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -1,9 +1,9 @@ /* text-item.cc -- implement Text_item - source file of the LilyPond music typesetter + source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ @@ -13,63 +13,73 @@ #include "stem.hh" #include "molecule.hh" #include "lookup.hh" +#include "debug.hh" -Text_item::Text_item(Text_def *tdef_l, int d) - : Staff_side(this) +Text_item::Text_item (General_script_def* tdef_l, Direction d) { - dir_i_ = d; - fat_b_ = false; - tdef_p_ = new Text_def(*tdef_l); - pos_i_ =0; + dir_ = d; + fat_b_ = false; + tdef_p_ = tdef_l->clone (); } -Text_def* -Text_item::tdef_l() +Text_item::~Text_item () { - return tdef_p_; -} - -Text_item::~Text_item() -{ - delete tdef_p_; + delete tdef_p_; } void -Text_item::set_default_index() +Text_item::do_pre_processing () { - pos_i_ = get_position_i(tdef_p_->create_atom().extent().y ); + if (!dir_) + dir_ = DOWN; } -void -Text_item::do_pre_processing() +Real +Text_item::get_position_f () const { - if (!dir_i_) - dir_i_ = -1; - tdef_p_->pdef_l_ = paper(); + // uhuh, tdef/gdef? + if (Text_def *tdl = dynamic_cast(tdef_p_)) + { + if (tdl->style_str_ != "finger") // HUHH? + return Staff_side::get_position_f (); + } + + if (!dir_) + { + warning (_ ("Text_item::get_position_f(): " + "somebody forgot to set my vertical direction, returning -20")); + return -20; + } + + Interval v = support_extent (); + // add no extra: fingers should be just above note, no? + return v[dir_]; } -void -Text_item::do_post_processing() +Interval +Text_item::symbol_height () const { - set_default_index(); + return tdef_p_->get_atom (paper (), dir_).dim_.y (); } - - + Molecule* -Text_item::brew_molecule_p() const +Text_item::brew_molecule_p () const { - Atom a(tdef_p_->create_atom()); + Atom a (tdef_p_->get_atom (paper (), dir_)); + - if ( fat_b_) - a.sym.dim.x = tdef_p_->width(); + if (fat_b_) + a.dim_[X_AXIS] = tdef_p_->width (paper ()); + Molecule* mol_p = new Molecule (a); - Molecule* mol_p = new Molecule(a); + if (dir_<0) // should do something better anyway. + mol_p->translate_axis (mol_p->extent ().y ().left , Y_AXIS); + mol_p->translate_axis (coordinate_offset_f_, Y_AXIS); + // fine for one lyric, urg for lyric chord + mol_p->translate_axis (a.dim_.y ().length (), Y_AXIS); - if(dir_i_<0 ) // should do something better anyway. - mol_p->translate(Offset(0, -mol_p->extent().y.left )); - mol_p->translate(Offset(0, pos_i_ * paper()->internote())); - - return mol_p; + return mol_p; } -IMPLEMENT_STATIC_NAME(Text_item); + +