X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fclef-item.cc;h=4407b8767ea6a134b1cea9833948142be6043af6;hb=b2cc0ee8300845fbe604b408adb597247464acc9;hp=d6c02e542cfda9d0c369eb821dd8017fc9a9eb5b;hpb=934d7fd539e587975098a6de6ee39cb25151ac48;p=lilypond.git diff --git a/lily/clef-item.cc b/lily/clef-item.cc index d6c02e542c..4407b8767e 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -3,67 +3,86 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--1999 Han-Wen Nienhuys */ +#include #include "clef-item.hh" #include "string.hh" #include "molecule.hh" #include "paper-def.hh" #include "lookup.hh" -#include "clef-grav.hh" - +#include "text-item.hh" +#include "paper-score.hh" +#include "dimension-cache.hh" +#include "side-position-interface.hh" void Clef_item::do_pre_processing() { - change_b_ = ! (break_status_i() == 1); - - if (default_b_) + SCM style_sym =get_elt_property ("style"); + String style; + if (gh_string_p (style_sym)) + style = ly_scm2string (style_sym); + + if (break_status_dir() != RIGHT && style != "fullSizeChanges") + symbol_ += "_change"; + + if (style == "transparent") // UGH. JUNKME { - set_empty(break_status_i() != 1); - transparent_b_ = (break_status_i() != 1); + set_elt_property ("transparent", SCM_BOOL_T); + set_empty (X_AXIS); } } +/* + JUNKME +*/ Clef_item::Clef_item() { - breakable_b_ =true; - default_b_ = false; - change_b_ = true; - read ("violin"); + symbol_ = "treble"; } void -Clef_item::read (String t) -{ - type_= t; - if (type_ == "violin") - y_position_i_ = -2; - if (type_ == "alto") - y_position_i_ = 0; - if (type_ == "tenor") - y_position_i_ = 2; - if (type_ == "bass") - y_position_i_ = 2; -} -void -Clef_item::read (Clef_engraver const &k) +Clef_item::do_add_processing () { - read (k.clef_type_str_); + if (!break_status_dir ()) // broken stuff takes care of their own texts + { + Text_item *g =0; + + SCM octave_dir = remove_elt_property ("octave-dir"); + if (isdir_b (octave_dir)) + { + g = new Text_item; + Side_position_interface spi (g); + spi.set_axis (Y_AXIS); + + pscore_l_->typeset_element (g); + + g->text_str_ = "8"; + g->set_elt_property ("style", gh_str02scm ("italic")); + g->set_parent (this, Y_AXIS); + g->set_parent (this, X_AXIS); + g->set_elt_property ("direction", octave_dir); + + add_dependency (g); // just to be sure. + SCM my_vis = get_elt_property ("visibility-lambda"); + if (gh_procedure_p (my_vis)) + g->set_elt_property ("visibility-lambda", my_vis); + + } + + } } Molecule* -Clef_item::brew_molecule_p() const +Clef_item::do_brew_molecule_p() const { - String t = type_; - if (change_b_) - t += "_change"; - Atom s = paper()->lookup_l ()->clef (t); - Molecule*output = new Molecule (Atom (s)); - output->translate_axis (paper()->internote_f () * y_position_i_, Y_AXIS); + Molecule*output = new Molecule (lookup_l ()->afm_find (String ("clefs-" + symbol_))); + return output; } -IMPLEMENT_IS_TYPE_B1(Clef_item,Item); + +