\type "Engraver_group_engraver";
\consists "Span_bar_engraver";
\consists "Vertical_align_engraver";
+ \consists "Staff_group_bar_engraver";
\consists "Line_group_engraver";
\accepts "Staff";
\accepts "Rhythmic_staff";
"bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
"dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt
"finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 4.0\pt
- "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt
+ "italic" "\setitalic{%}" 0.0\pt 7.5\pt 0.0\pt 8.0\pt
"large" "\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 10.0\pt
"roman" "\settext{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
}
"param" = \table {
% "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
"brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 80.0\pt
+ "bracket" "\staffbracket{%}" 0.0\pt 4.0\pt 16.0\pt 128.0\pt
"meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -8.0\pt 8.0\pt
"rule" "\rulesym{%}{%}"
"stem" "\stem{%}{%}"
"fill" "\hbox{}"
% ugh. 8pt
- "crescendosym" "\crescendosym{%}" 0.0\pt 0.0\pt -2.0\pt 2.0\pt
- "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt
+ "crescendosym" "\crescendosym{%}" 0.0\pt 0.0\pt -5.0\pt 5.0\pt
+ "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -5.0\pt 5.0\pt
}
"bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
"dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
"finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
- "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "italic" "\setitalic{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
"large" "\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
"roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
}
% dims ignored for this table
"param" = \table {
% "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
+ "bracket" "\staffbracket{%}" 0.0\pt 0.0\pt 20.0\pt 160.0\pt
"rule" "\rulesym{%}{%}"
"brace" "\pianobrace{%}" 0.0\pt 0.0\pt 40.0\pt 100.0\pt
"meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
"stem" "\stem{%}{%}"
"fill" "\hbox{}"
% ugh. 8\pt
- "crescendosym" "\crescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt
- "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt
+ "crescendosym" "\crescendosym{%}" 0.0\pt 0.0\pt -6.25\pt 6.25\pt
+ "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -6.25\pt 6.25\pt
}
"beamslopes" = \table {
\$melodic_staff
\$somewhat_long_lyrics_staff
% \$rather_long_lyrics_staff
-% \$quite_long_lyrics_staff
+ \$quite_long_lyrics_staff
>
\paper{
% castingalgorithm = \Wordwrap;
Atom streepje (int type) const;
Atom vbrace (Real &dy) const;
+ Atom vbracket (Real &dy) const;
Atom meter (Array<Scalar>) const;
Atom stem (Real y1_pos, Real y2_pos) const;
Atom rule_symbol (Real height, Real width) const;
class Span_score_bar_engraver : public Span_bar_engraver
{
public:
- TRANSLATOR_CLONE(Span_score_bar_engraver);
+ TRANSLATOR_CLONE (Span_score_bar_engraver);
DECLARE_MY_RUNTIME_TYPEINFO;
- virtual Span_bar* get_span_bar_p() const;
+ virtual Span_bar* get_span_bar_p () const;
};
/**
class Piano_bar_engraver : public Span_score_bar_engraver
{
public:
- TRANSLATOR_CLONE(Piano_bar_engraver);
+ TRANSLATOR_CLONE (Piano_bar_engraver);
DECLARE_MY_RUNTIME_TYPEINFO;
- virtual Span_bar * get_span_bar_p() const;
+ virtual Span_bar * get_span_bar_p () const;
+};
+
+/**
+
+ */
+class Staff_group_bar_engraver : public Span_score_bar_engraver
+{
+public:
+ TRANSLATOR_CLONE (Staff_group_bar_engraver);
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ virtual Span_bar * get_span_bar_p () const;
};
#endif // SPAN_SCORE_BAR_GRAV_HH
virtual Atom get_bar_sym (Real) const;
};
+class Staff_bracket : public Span_score_bar
+{
+public:
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ SCORE_ELEM_CLONE(Staff_bracket);
+protected:
+ virtual Interval do_width() const;
+ virtual Atom get_bar_sym (Real) const;
+};
+
#endif // SPAN_SCORE_BAR_HH
bool embedded_b = postscript_global_b;
String embed;
Atom ret;
+ Real height = paper_l_->get_var ("barsize") / 6;
if (embedded_b)
{
- Real height = paper_l_->get_var ("barsize") / 6;
embed = "\\embeddedps{\n" ;
embed += String (wid) + " "
+ String (height) + " "
ret.tex_ = substitute_args (ret.tex_, a);
}
- ret.dim_.x() = Interval (0,wid);
- // ret.translate_axis (-ret.dim_[Y_AXIS][DOWN], Y_AXIS);
+ ret.dim_.x () = Interval (0,wid);
+ ret.dim_.y () = Interval (-2*height,2*height);
+// ret.translate_axis (ret.dim_[Y_AXIS][DOWN], Y_AXIS);
return ret;
}
return brace;
}
+
+Atom
+Lookup::vbracket (Real &y) const
+{
+ Atom bracket = (*symtables_p_)("param")->lookup ("bracket");
+ Interval ydims = bracket.dim_[Y_AXIS];
+ Real min_y = ydims[LEFT];
+ Real max_y = ydims[RIGHT];
+ Real step = 1.0 PT;
+
+ if (y < min_y)
+ {
+ warning (_("bracket too small (") + print_dimen (y)+ ")");
+ y = min_y;
+ }
+ if (y > max_y)
+ {
+ warning (_("bracket too big (") + print_dimen (y)+ ")");
+ y = max_y;
+ }
+
+
+ int idx = int (rint ((y- min_y)/step)) + 1;
+
+ {
+ Array<String> a;
+ a.push (idx);
+ bracket.tex_ = substitute_args (bracket.tex_,a);
+ bracket.dim_[Y_AXIS] = Interval (-y/2,y/2);
+ }
+
+ return bracket;
+}
+
+
/*
- span-score-bar-grav.cc -- implement Span_score_bar_engraver and Piano_bar_engraver
+ span-score-bar-grav.cc -- implement Span_score_bar_engraver,
+ Piano_bar_engraver and Staff_group_bar_engraver
source file of the GNU LilyPond music typesetter
Span_bar*
-Span_score_bar_engraver::get_span_bar_p() const
+Span_score_bar_engraver::get_span_bar_p () const
{
Span_bar*s = new Span_score_bar;
s->break_priority_i_ = -4;
}
-IMPLEMENT_IS_TYPE_B1(Span_score_bar_engraver, Span_bar_engraver);
-IMPLEMENT_IS_TYPE_B1(Piano_bar_engraver, Span_score_bar_engraver);
+IMPLEMENT_IS_TYPE_B1 (Span_score_bar_engraver, Span_bar_engraver);
+IMPLEMENT_IS_TYPE_B1 (Piano_bar_engraver, Span_score_bar_engraver);
+IMPLEMENT_IS_TYPE_B1 (Staff_group_bar_engraver, Span_score_bar_engraver);
Span_bar*
-Piano_bar_engraver::get_span_bar_p() const
+Piano_bar_engraver::get_span_bar_p () const
{
Span_bar *s= new Piano_brace;
s->break_priority_i_ = -4;
return s;
}
-ADD_THIS_TRANSLATOR(Piano_bar_engraver);
-ADD_THIS_TRANSLATOR(Span_score_bar_engraver);
+Span_bar*
+Staff_group_bar_engraver::get_span_bar_p () const
+{
+ Span_bar *s= new Staff_bracket;
+ s->break_priority_i_ = -4;
+ return s;
+}
+
+ADD_THIS_TRANSLATOR (Piano_bar_engraver);
+ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
+ADD_THIS_TRANSLATOR (Span_score_bar_engraver);
+
return Interval (0,0);
}
+Atom
+Staff_bracket::get_bar_sym (Real dy) const
+{
+ return paper()->lookup_l ()->vbracket (dy);
+}
+
+Interval
+Staff_bracket::do_width() const
+{
+ return Interval (0,0);
+}
+
IMPLEMENT_IS_TYPE_B2(Span_score_bar, Span_bar, Score_bar);
IMPLEMENT_IS_TYPE_B1(Piano_brace, Span_score_bar);
+IMPLEMENT_IS_TYPE_B1(Staff_bracket, Span_score_bar);
Staff_symbol::do_height() const
{
int n = no_lines_i_ -1;
- return 2* inter_note_f () * Interval (-n, n);
+// return 2* inter_note_f () * Interval (-n, n);
+ return inter_note_f () * Interval (-n, n);
}
Molecule*
\score{
<
+ \textstyle "italic";
\$legno
\$koper
\$timpani_g
two = \melodic{
\octave c;
\textstyle "roman";
- c4-5 e-3 g-\mordent-"(\\textsharp)" 'g4 |
- d-\mordent-5 f-3 a-\mordent-"(\\textsharp)" 'a4 |
+ c4-5 e-3 g-\mordent^"(\\textsharp)" 'g4 |
+ d-\mordent-5 f-3 a-\mordent^"(\\textsharp)" 'a4 |
e-5 e'-\mordent-1 a-4 b-\upprall |
c'4 e-4 fis gis-\downprall |
a4 c-4 d e-\upprall |
f4-1 e d-3-\prall c |
- g-\mordent-"(\\textsharp)" 'g g-\mordent 'g |
+ g-\mordent^"(\\textsharp)" 'g g-\mordent 'g |
g-\mordent 'g g-\mordent 'g |
% ugh, f should be at upper staff
g-\mordent r r16 ['g-5( 'b-4 d] )f-1 s s s |
<
{
\voiceone;
- c'4-\mordent-"(\\textsharp)"\p r r |
- c'4-\mordent-"(\\textsharp)" r r
+ \textstyle "roman";
+ c'4-\mordent^"(\\textsharp)"\p r r |
+ c'4-\mordent^"(\\textsharp)" r r
+ \textstyle "italic";
}
{ \voicetwo; a4 r r | a4 r r }
> |
two = \melodic{
\clef "bass";
\octave c;
- [d32( cis )d8.] r4 r |
+% [d32( cis )d8.] r4 r |
+ d4-\mordent r r |
'd4 r r |
d-\mordent r r |
'd4 r r |
[g!-5 es'-1 c'-1 g-5 es'-1 c'-1 ] |
fis4-5 r r
d-4( ) fis d-5 |
- g4-\mordent-"(\\textsharp)" r r f!8 |
+ \textstyle "roman";
+ g4-\mordent^"(\\textsharp)" r r8 f!8 |
+ \textstyle "italic";
e4-\prall r r |
f4-\mordent r r8 e |
d4 r8 [f-1 e d] |
% 20pt music uses whole pagewidth
% ja Vette Pech. Koop maar een A3 printer
% huh? [jcn]
- linewidth= 195.\mm;
- arithmetic_multiplier = 7.\pt;
+ linewidth= 193.\mm;
+% arithmetic_multiplier = 7.\pt;
gourlay_maxmeasures = 9.;
\output "standchen-20.out";
\paper{
% 16pt mustn't use whole page width
linewidth= 160.\mm;
- arithmetic_multiplier = 6.\pt;
- gourlay_maxmeasures = 9.;
+% arithmetic_multiplier = 6.\pt;
+% gourlay_maxmeasures = 9.;
\output "standchen-16.out";
}
}
\paper{
% how does this work?
% previously we had the clear 'ideal whole note space' setting?
- arithmetic_multiplier = 6.\pt;
+% arithmetic_multiplier = 6.\pt;
% ugh: the *first* (intro) line may only have four measures...
gourlay_maxmeasures = 4.;
}