- if (s.right_str(2) == "_8") // Down one octave
- {
- octave_dir_ = DOWN;
- s = s.left_str(s.length_i() - 2);
- }
- else if (s.right_str(2) == "^8") // Up one octave
- {
- octave_dir_ = UP;
- s = s.left_str(s.length_i() - 2);
- }
- else
- octave_dir_ = CENTER;
-
- SCM c = get_property ("supportedClefTypes");
- SCM p = get_property ("clefPitches");
-
- if (gh_list_p (c))
- {
- SCM found = scm_assoc (ly_str02scm (s.ch_C()), c);
- if (found == SCM_BOOL_F)
- return false;
-
- clef_glyph_ = gh_cadr (found);
- SCM pos = gh_caddr (found);
-
- clef_position_i_ = gh_scm2int (pos);
-
- found = scm_assoc (clef_glyph_, p);
- if (found == SCM_BOOL_F)
- return false;
-
- c0_position_i_ = clef_position_i_ + gh_scm2int (gh_cdr (found));
- }
-
- c0_position_i_ -= (int) octave_dir_ * 7;