+1.3.78.jcn5
+===========
+
+* Made crude fixes so unbound slurs don't crash, bezier still crashes on
+ infinitely steep slurs (eg flauti-part *with* slur_engraver).
+
1.3.78.jcn4
===========
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=78
-MY_PATCH_LEVEL=jcn4
+MY_PATCH_LEVEL=jcn5
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
-\score{
- \context Staff <
- \context Voice=one { \skip 1; }
- \context Voice=two { \skip 1; }
-
- \context Voice=one \partcombine Voice
- \context Thread=one \notes\relative c'' {
- a4 c4.()g8 a4
- }
- \context Thread=two \notes\relative c'' {
- g4 e4.()d8 c4
- }
- >
- \paper{
- linewidth=60.\mm;
- }
-}
-
\score{
\context Staff <
- \context Voice=one { \skip 1; }
- \context Voice=two { \skip 1; }
-
+ \time 4/4;
\context Voice=one \partcombine Voice
\context Thread=one \notes\relative c'' {
- %a4 c4.()g8 a4 |
+ a4 c4.()g8 a4 |
g4 e' g()f |
b, a c2
}
\context Thread=two \notes\relative c'' {
- %g4 e4.()d8 c4 |
- g4 c, e()f |
+ g4 e4.()d8 c4 |
+ g'4 c, e()f |
d2 a
}
>
\translator {
\VoiceContext
soloADue = ##f
- %\remove Slur_engraver;
- \consists Slur_engraver;
}
-% \translator {
-% \ThreadContext
-% \consists Slur_engraver;
-% }
}
}
static Array<Offset> get_encompass_offset_arr (Score_element*me) ;
static Bezier get_curve (Score_element*me) ;
static Direction get_default_dir (Score_element*me) ;
+ static SCM before_line_breaking (SCM);
static SCM after_line_breaking (SCM);
static SCM set_spacing_rods (SCM);
private:
return o;
}
-MAKE_SCHEME_CALLBACK(Slur,after_line_breaking);
+MAKE_SCHEME_CALLBACK (Slur, before_line_breaking);
+SCM
+Slur::before_line_breaking (SCM smob)
+{
+ Score_element *me = unsmob_element (smob);
+ if (Pointer_group_interface__extract_elements (me, (Score_element*)0, "note-columns").size () < 2)
+ me->suicide ();
+ return SCM_UNSPECIFIED;
+}
+MAKE_SCHEME_CALLBACK(Slur,after_line_breaking);
SCM
Slur::after_line_breaking (SCM smob)
{
Score_element *me = unsmob_element (smob);
- set_extremities (me);
- set_control_points (me);
+ if (Pointer_group_interface__extract_elements (me, (Score_element*)0, "note-columns").size () < 2)
+ me->suicide ();
+ else
+ {
+ set_extremities (me);
+ set_control_points (me);
+ }
return SCM_UNSPECIFIED;
}
Array<Offset>
Slur::get_encompass_offset_arr (Score_element*me)
{
- Spanner*sp = dynamic_cast<Spanner*>(me);
+ Spanner*sp = dynamic_cast<Spanner*>(me);
SCM eltlist = me->get_elt_property ("note-columns");
Score_element *common[] = {me->common_refpoint (eltlist,X_AXIS),
me->common_refpoint (eltlist,Y_AXIS)};
Slur::brew_molecule (SCM smob)
{
Score_element * me = unsmob_element (smob);
+ Molecule a;
+ if (Pointer_group_interface__extract_elements (me, (Score_element*)0, "note-columns").size () < 2)
+ {
+ me->suicide ();
+ return a.create_scheme ();
+ }
Real thick = me->paper_l ()->get_var ("stafflinethickness") *
gh_scm2double (me->get_elt_property ("thickness"));
Bezier one = get_curve (me);
- Molecule a;
SCM d = me->get_elt_property ("dashed");
if (gh_number_p (d))
a = me->lookup_l ()->dashed_slur (one, thick, thick * gh_scm2double (d));
(thickness . 1.2)
(spacing-procedure . ,Slur::set_spacing_rods) e
(minimum-length . 1.5)
+ (before-line-breaking-callback . ,Slur::before_line_breaking)
(after-line-breaking-callback . ,Slur::after_line_breaking)
)
basicSpacingSpannerProperties =#`(
\score{
\$flauti_staff
- \include "coriolan-part-paper.ly"
+ %\include "coriolan-part-paper.ly"
+
+ \paper {
+ textheight = 295.0\mm;
+ linewidth = 180.0\mm;
+
+ % slurs are never beautiful (no steep slurs)
+ slur_beautiful = 0.0;
+
+ \translator {
+ \VoiceContext
+ \remove Slur_engraver;
+ }
+ \translator {
+ \ScoreContext skipBars = ##t
+ %% URG: this changes dynamics too
+ %%textStyle = #"italic"
+ timeSignatureStyle = #"C"
+ instrumentScriptPadding = #60 %% urg, this is in pt
+ instrScriptPadding = #40 %% urg, this is in pt
+ marginScriptHorizontalAlignment = #1
+ maximumRestCount = #1
+ }
+ }
\include "coriolan-midi.ly"
}
\context Voice=one { \skip 1; }
\context Voice=two { \skip 1; }
- \context Voice=one \partcombine Voice <
+ \context Voice=one \partcombine Voice
\context Thread=one \$flauto1
\context Thread=two \$flauto2
- >
>
;; (cons (lambda (slur dir) (begin (display "before head") (newline))#f) #f)
+ (cons (lambda (slur dir)
+ (< (length (ly-get-elt-property slur 'note-columns)) 2)) 'head)
+
(cons (lambda (slur dir)
;; urg, code dup
(let* ((note-columns (ly-get-elt-property slur 'note-columns))