Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2012-12-22 Thread m...@mikesolomon.org


On 22 déc. 2012, at 23:14, k-ohara5...@oco.net wrote:

> 
> https://codereview.appspot.com/4917046/diff/34001/lily/grob.cc
> File lily/grob.cc (right):
> 
> https://codereview.appspot.com/4917046/diff/34001/lily/grob.cc#newcode647
> lily/grob.cc:647: g1->programming_error ("could not place this grob in
> its axis group");
> It sounds like you're mixing together "axis groups" and "Axis group
> engraver." The axis group engraver creates VerticalAxisGroups, which
> implement the axis-group-interface.  There are, however, numerous grobs
> that implement the axis-group-interface that are not created in the
> Axis_group_engraver.
> 
> https://codereview.appspot.com/4917046/

Couldn't have said it better myself! Wait a minute...
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2012-12-22 Thread k-ohara5a5a


https://codereview.appspot.com/4917046/diff/34001/lily/grob.cc
File lily/grob.cc (right):

https://codereview.appspot.com/4917046/diff/34001/lily/grob.cc#newcode647
lily/grob.cc:647: g1->programming_error ("could not place this grob in
its axis group");
It sounds like you're mixing together "axis groups" and "Axis group
engraver." The axis group engraver creates VerticalAxisGroups, which
implement the axis-group-interface.  There are, however, numerous grobs
that implement the axis-group-interface that are not created in the
Axis_group_engraver.

https://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-11-10 Thread Mike Solomon

On Nov 9, 2011, at 11:19 PM, k-ohara5...@oco.net wrote:

> On 2011/08/30 16:28:28, mikesol_ufl.edu wrote:
>> On Aug 30, 2011, at 5:53 PM, mailto:joenee...@gmail.com wrote:
> 
>> > Correct me if I'm wrong, but this is my understanding: wherever
> there's
>> > a SpanBar, you're creating SpanBarStubs between every relevant pair
> of
>> > staves. These don't actually get printed; they're just there for the
>> > pure-height (because the SpanBar height is pretty much the whole
> system,
>> > so it doesn't tell you where the gaps are).
>> >
> 
>> Yes.
> 
>> > If that's correct, I have two broad comments: it's worth commenting
>> > somewhere (span-bar-stub-engraver.cc, maybe) that the purpose of
>> > SpanBarStub is for pure-height only.
> 
>> Will do.
> 
> 
> Haven't done yet.

Done now.

> 
>> > But more importantly, isn't SpanBar
>> > now obsoleted by SpanBarStub? That is, you can just remove the
> SpanBar
>> > altogether and print the SpanBarStubs.
>> >
> 
>> Mmm...you're not unright, but I'd prefer to do that in another patch
> if that's
>> OK.  It'd require a lot of deleting and moving around, and I'd first
> like to
>> make sure that these stubs are the code base and bug free for a while
> before I
>> deprecate an entire grob (and figure out how to deal with the syntax
> changes
>> that come with said deprecation).
> 
> 
> Well, the SpanBarStub extent is not the full length to bridge between
> BarLines, it is only the height of the Lyrics, and only those Lyrics in
> the neighboring measures.

Yup.

> 
> SpanBarStub needs to change size, or get a bar-extent different from its
> Y-extent, before it can take over the job of printing SpanBars.
> 

You're right - I think that was a bad idea, which is why I haven't followed up 
on it.

> I'm worried the code will be quite difficult to understand for quite a
> while unless Mike retreats.
> 

I would rather create a killer flow chart that explains in as much detail as 
possible how all of this works than give up on code that I believe is correct 
given the way that this problem needs to be formulated.  If someone said to me, 
for example, "Mike, music doesn't actually work like that - sharps should be 
allowed to pass over time signatures and clefs (pertaining to the example I 
sent out before), then I'd say "my bad, my research was incorrect, let's revert 
the patch."  As I've said before, after reverting the patch, there are other 
ways to tackle the problem that this patch was originally designed to fix.

Remembering back to the beam collision days (ah, the good old days...), we saw 
several critical issues arise from that, but at no point did people question 
the validity of getting rid of beam collisions.  I think this is because, 
visually, everyone can say "ouch" just by looking at them.  However, as I've 
studied the present issue more, I've realized that collisions between 
accidentals and the airspace above or below non-musical grobs is just as much 
of a 'collision' in traditional typesetting and needs a similar approach.  
Beams collect all of the colliding grobs in an array and then deal with them 
during their positioning callbacks.  BarLines and other non musical grobs also 
need an array of pertinent grobs (in this case, "neighbors") that they can use 
during their callbacks.

Cheers,
MS
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-11-09 Thread k-ohara5a5a

On 2011/08/30 16:28:28, mikesol_ufl.edu wrote:

On Aug 30, 2011, at 5:53 PM, mailto:joenee...@gmail.com wrote:



> Correct me if I'm wrong, but this is my understanding: wherever

there's

> a SpanBar, you're creating SpanBarStubs between every relevant pair

of

> staves. These don't actually get printed; they're just there for the
> pure-height (because the SpanBar height is pretty much the whole

system,

> so it doesn't tell you where the gaps are).
>



Yes.



> If that's correct, I have two broad comments: it's worth commenting
> somewhere (span-bar-stub-engraver.cc, maybe) that the purpose of
> SpanBarStub is for pure-height only.



Will do.



Haven't done yet.


> But more importantly, isn't SpanBar
> now obsoleted by SpanBarStub? That is, you can just remove the

SpanBar

> altogether and print the SpanBarStubs.
>



Mmm...you're not unright, but I'd prefer to do that in another patch

if that's

OK.  It'd require a lot of deleting and moving around, and I'd first

like to

make sure that these stubs are the code base and bug free for a while

before I

deprecate an entire grob (and figure out how to deal with the syntax

changes

that come with said deprecation).



Well, the SpanBarStub extent is not the full length to bridge between
BarLines, it is only the height of the Lyrics, and only those Lyrics in
the neighboring measures.

SpanBarStub needs to change size, or get a bar-extent different from its
Y-extent, before it can take over the job of printing SpanBars.

I'm worried the code will be quite difficult to understand for quite a
while unless Mike retreats.


http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-24 Thread Mike Solomon
On Sep 24, 2011, at 9:31 PM, pkx1...@gmail.com wrote:

> Passes make, reg tests that get spewed out look identical, too many to
> attach but they are zipped here
> 
> http://lilypond-stuff.1065243.n5.nabble.com/http-code-google-com-p-lilypond-issues-detail-id-1846-td4837220.html
> 
> http://codereview.appspot.com/4917046/

Just so you all know, the changes show up because SpanBar no longer has a 
Y-extent in this patch.

Cheers,
MS
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-24 Thread pkx166h

Passes make, reg tests that get spewed out look identical, too many to
attach but they are zipped here

http://lilypond-stuff.1065243.n5.nabble.com/http-code-google-com-p-lilypond-issues-detail-id-1846-td4837220.html

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-17 Thread mtsolo

Hey all,

Responses to Neil and Joe below, and a new patchset posted.
I'd like this patch to go on another countdown so that we can fully sort
out the implementation of get_root_vertical_alignment.

Cheers,
MS


http://codereview.appspot.com/4917046/diff/18001/input/regression/span-bar-allow-span-bar.ly
File input/regression/span-bar-allow-span-bar.ly (right):

http://codereview.appspot.com/4917046/diff/18001/input/regression/span-bar-allow-span-bar.ly#newcode2
input/regression/span-bar-allow-span-bar.ly:2: \version "2.15.10"
On 2011/09/17 19:01:38, Neil Puttock wrote:

2.15.12


Done.

http://codereview.appspot.com/4917046/diff/18001/input/regression/span-bar-allow-span-bar.ly#newcode5
input/regression/span-bar-allow-span-bar.ly:5: texidoc = "The
SpanBarStub grob takes care of horizontal spacing for
On 2011/09/17 19:01:38, Neil Puttock wrote:

@code{SpanBarStub}


Done.

http://codereview.appspot.com/4917046/diff/18001/input/regression/span-bar-allow-span-bar.ly#newcode6
input/regression/span-bar-allow-span-bar.ly:6: SpanBar grobs.  When the
SpanBar is disallowed, objects in contexts that
On 2011/09/17 19:01:38, Neil Puttock wrote:

@code{SpanBar}


Done.

http://codereview.appspot.com/4917046/diff/18001/input/regression/span-bar-allow-span-bar.ly#newcode14
input/regression/span-bar-allow-span-bar.ly:14: \repeat unfold 64 { c''8
} }
On 2011/09/17 19:01:38, Neil Puttock wrote:

fix indentation


Done.

http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc
File lily/grob.cc (right):

http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc#newcode593
lily/grob.cc:593: return get_maybe_root_vertical_alignment (g, 0);
On 2011/09/02 23:27:44, joeneeman wrote:

I still think this should say
return g->get_system ()->get_vertical_alignment ();
because there are several grobs that implement Align_interface and you

want to

make sure you get the right one.


When the grobs' root vertical alignment is accessed, get_system doesn't
work yet for BarLine grobs because their ancestry along the X_AXIS has
not yet been fully established.  Grobs' Y_AXIS ancestry is established
earlier in a timestep.

Try replacing this function with:

Grob*
Grob::get_root_vertical_alignment (Grob *g)
{
  System *s = g->get_system ();
  return s ? s->get_vertical_alignment () : 0;
}

Span bar stubs will cease to work because get_system will, for BarLines,
always return 0.

I'm not saying that your solution is impossible - I can imagine somehow
setting BarLines' X-ancestors earlier in the translation process so that
get_system always yields a system, but my preliminary attempts to
implement this in this patch are coming up short and it seems like it
will be a larger undertaking.  I'd rather push this as it is and then
have a discussion about whether get_root_vertical_alignment or
get_system->get_vertical_alignment is a cleaner way to get the root
vertical alignment.  I see what you're saying that there are several
grobs that implement the Align_interface, but
get_root_vertical_alignment keeps recursing until it returns the one
that has no Y_AXIS parent.  I believe that all grobs save
VerticalAlignment that implement the Align_interface have Y_AXIS
parents.

http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc#newcode617
lily/grob.cc:617: g->programming_error ("could not find this grob's
vertical axis group in the vertical alignment.");
On 2011/09/17 19:01:38, Neil Puttock wrote:

remove full stop/period


Done.

http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc#newcode627
lily/grob.cc:627: g1->programming_error ("grob does not belong to a
Vertical Alignment?");
On 2011/09/17 19:01:38, Neil Puttock wrote:

VerticalAlignment


Done.

http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc#newcode643
lily/grob.cc:643: g1->programming_error ("could not situate this grob in
its axis group");
On 2011/09/17 19:01:38, Neil Puttock wrote:

prefer `place' to `situate'


I'm officially losing my English!
Done.

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-engraver.cc
File lily/pure-from-neighbor-engraver.cc (right):

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-engraver.cc#newcode46
lily/pure-from-neighbor-engraver.cc:46: pure_relevant_p_ =
ly_lily_module_constant ("pure-relevant?");
On 2011/09/17 19:01:38, Neil Puttock wrote:

you only use this once, so I'd get rid of it


Done.

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-engraver.cc#newcode52
lily/pure-from-neighbor-engraver.cc:52: if (to_boolean (scm_apply_1
(pure_relevant_p_, i.item ()->self_scm (), SCM_EOL))
On 2011/09/17 19:01:38, Neil Puttock wrote:

scm_call_1 ?


Done.

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-engraver.cc#newcode53
lily/pure-from-neighbor-engraver.cc:53: && !i.grob
()->internal_has_interface (ly_symbol2scm
("pure-from-neighbor-interface")))
On 2011/09/17 19:01:38, Neil Puttock wrote:

swap


Done.

http://codereview.apps

Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-17 Thread Neil Puttock
On 17 September 2011 15:45, Mike Solomon  wrote:

> The problem comes not from this patch but from the calculation of the 
> horizontal skylines for NonMusicalPaperColumns.  Try adding:
>
> \override Score . NonMusicalPaperColumn #'stencil = #ly:separation-item::print
>
> To the beginning of SopranoMusic and then running LilyPond with 
> -ddebug-skylines.  You'll see that in the first example, the downward stem 
> pushes the lyrics under the end point of the NonMusicalPaperColumn, whereas 
> this does not happen in the second example.
>
> Thus, the dependency is not stems (drop the soprano an octave and you'll see 
> that) but NonMusicalPaperColumn grobs.

This isn't really a bug.  NonMusicalPaperColumn has a default setting
for skyline-vertical-padding which extends the skyline slightly.

Cheers,
Neil

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-17 Thread n . puttock


http://codereview.appspot.com/4917046/diff/18001/input/regression/span-bar-allow-span-bar.ly
File input/regression/span-bar-allow-span-bar.ly (right):

http://codereview.appspot.com/4917046/diff/18001/input/regression/span-bar-allow-span-bar.ly#newcode2
input/regression/span-bar-allow-span-bar.ly:2: \version "2.15.10"
2.15.12

http://codereview.appspot.com/4917046/diff/18001/input/regression/span-bar-allow-span-bar.ly#newcode5
input/regression/span-bar-allow-span-bar.ly:5: texidoc = "The
SpanBarStub grob takes care of horizontal spacing for
@code{SpanBarStub}

http://codereview.appspot.com/4917046/diff/18001/input/regression/span-bar-allow-span-bar.ly#newcode6
input/regression/span-bar-allow-span-bar.ly:6: SpanBar grobs.  When the
SpanBar is disallowed, objects in contexts that
@code{SpanBar}

http://codereview.appspot.com/4917046/diff/18001/input/regression/span-bar-allow-span-bar.ly#newcode14
input/regression/span-bar-allow-span-bar.ly:14: \repeat unfold 64 { c''8
} }
fix indentation

http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc
File lily/grob.cc (right):

http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc#newcode617
lily/grob.cc:617: g->programming_error ("could not find this grob's
vertical axis group in the vertical alignment.");
remove full stop/period

http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc#newcode627
lily/grob.cc:627: g1->programming_error ("grob does not belong to a
Vertical Alignment?");
VerticalAlignment

http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc#newcode643
lily/grob.cc:643: g1->programming_error ("could not situate this grob in
its axis group");
prefer `place' to `situate'

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-engraver.cc
File lily/pure-from-neighbor-engraver.cc (right):

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-engraver.cc#newcode46
lily/pure-from-neighbor-engraver.cc:46: pure_relevant_p_ =
ly_lily_module_constant ("pure-relevant?");
you only use this once, so I'd get rid of it

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-engraver.cc#newcode52
lily/pure-from-neighbor-engraver.cc:52: if (to_boolean (scm_apply_1
(pure_relevant_p_, i.item ()->self_scm (), SCM_EOL))
scm_call_1 ?

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-engraver.cc#newcode53
lily/pure-from-neighbor-engraver.cc:53: && !i.grob
()->internal_has_interface (ly_symbol2scm
("pure-from-neighbor-interface")))
swap

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-engraver.cc#newcode57
lily/pure-from-neighbor-engraver.cc:57: // note that this can get outta
hand if there are lots of vertical axis groups...
out of

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-interface.cc
File lily/pure-from-neighbor-interface.cc (right):

http://codereview.appspot.com/4917046/diff/18001/lily/pure-from-neighbor-interface.cc#newcode34
lily/pure-from-neighbor-interface.cc:34: MAKE_SCHEME_CALLBACK
(Pure_from_neighbor_interface, elements_callback, 1);
this sounds like it returns elements, whereas you're just processing the
elements array

http://codereview.appspot.com/4917046/diff/18001/lily/span-bar-engraver.cc
File lily/span-bar-engraver.cc (right):

http://codereview.appspot.com/4917046/diff/18001/lily/span-bar-engraver.cc#newcode72
lily/span-bar-engraver.cc:72: Grob *vag =
Grob::get_root_vertical_alignment (bars_[0]);
is this safe?

http://codereview.appspot.com/4917046/diff/18001/lily/span-bar-stub-engraver.cc
File lily/span-bar-stub-engraver.cc (right):

http://codereview.appspot.com/4917046/diff/18001/lily/span-bar-stub-engraver.cc#newcode55
lily/span-bar-stub-engraver.cc:55: // note that this can get outta hand
if there are lots of vertical axis groups...
out of

http://codereview.appspot.com/4917046/diff/18001/lily/span-bar-stub-engraver.cc#newcode116
lily/span-bar-stub-engraver.cc:116: //it->set_parent (y_parents[j],
Y_AXIS);
remove?

http://codereview.appspot.com/4917046/diff/18001/lily/span-bar-stub-engraver.cc#newcode122
lily/span-bar-stub-engraver.cc:122: it->set_property ("Y-extent",
ly_interval2scm (Interval (infinity_f, -infinity_f)));
SCM_BOOL_F

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-17 Thread Mike Solomon
On Sep 9, 2011, at 7:09 PM, tdanielsmu...@googlemail.com wrote:

> Hi Mike
> I found a visual difference with one of my scores.  I finally tracked
> this down to a dependence on the stem direction.  Try this:
> 
> SopranoMusic = \relative g' {
> b2 b
> \once \override Staff . BarLine #'allow-span-bar = ##f
> b2 b
> }
> 
> TenorMusic = \relative a' {
> b2 b |
> b2 b |
> }
> 
> \score {
> \new GrandStaff <<
>   \new Staff {
> \new Voice = "Soprano" {
>   \stemDown
>   \SopranoMusic
> }
>   }
>   \new Lyrics \lyricsto "Soprano" {
> a b long-syllable a
>   }
>   \new Staff {
> \new Voice = "Tenor" {
>   \TenorMusic
> }
>   }
>>> 
> }
> 
> \score {
> \new GrandStaff <<
>   \new Staff {
> \new Voice = "Soprano" {
>   \stemUp
>   \SopranoMusic
> }
>   }
>   \new Lyrics \lyricsto "Soprano" {
> a b long-syllable a
>   }
>   \new Staff {
> \new Voice = "Tenor" {
>   \TenorMusic
> }
>   }
>>> 
> }

Good catch!
The problem comes not from this patch but from the calculation of the 
horizontal skylines for NonMusicalPaperColumns.  Try adding:

\override Score . NonMusicalPaperColumn #'stencil = #ly:separation-item::print

To the beginning of SopranoMusic and then running LilyPond with 
-ddebug-skylines.  You'll see that in the first example, the downward stem 
pushes the lyrics under the end point of the NonMusicalPaperColumn, whereas 
this does not happen in the second example.

Thus, the dependency is not stems (drop the soprano an octave and you'll see 
that) but NonMusicalPaperColumn grobs.

I'd recommend fixing this in a separate patch.  I also think it should be put 
on the tracker, although I don't feel comfortable reporting it because I'm not 
sure how to describe this bug (my gut reaction would be to say that 
NonMusicalPaperColumn horizontal skylines are sometimes incorrect, but I'm not 
sure if these overshoots are in fact incorrect or if they need to be there to 
prevent other problems from happening, in which case the description would be 
more like "Over-extended NonMusicalPaper columns must be present for X but 
interfere with lyric spacing in certain cases").

So, as it has passed a countdown and I've gotten no responses saying that the 
SpanBars look different with the patch applied, I'll push the SpanBarStub patch 
w/in the next 24ish hours.

Cheers,
MS
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-09 Thread tdanielsmusic

Hi Mike
I found a visual difference with one of my scores.  I finally tracked
this down to a dependence on the stem direction.  Try this:

SopranoMusic = \relative g' {
  b2 b
  \once \override Staff . BarLine #'allow-span-bar = ##f
  b2 b
}

TenorMusic = \relative a' {
  b2 b |
  b2 b |
}

\score {
  \new GrandStaff <<
\new Staff {
  \new Voice = "Soprano" {
\stemDown
\SopranoMusic
  }
}
\new Lyrics \lyricsto "Soprano" {
  a b long-syllable a
}
\new Staff {
  \new Voice = "Tenor" {
\TenorMusic
  }
}
  >>
}

\score {
  \new GrandStaff <<
\new Staff {
  \new Voice = "Soprano" {
\stemUp
\SopranoMusic
  }
}
\new Lyrics \lyricsto "Soprano" {
  a b long-syllable a
}
\new Staff {
  \new Voice = "Tenor" {
\TenorMusic
  }
}
  >>
}

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-02 Thread joeneeman

lgtm


http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc
File lily/grob.cc (right):

http://codereview.appspot.com/4917046/diff/18001/lily/grob.cc#newcode593
lily/grob.cc:593: return get_maybe_root_vertical_alignment (g, 0);
I still think this should say
return g->get_system ()->get_vertical_alignment ();
because there are several grobs that implement Align_interface and you
want to make sure you get the right one.

http://codereview.appspot.com/4917046/diff/18001/lily/span-bar-stub-engraver.cc
File lily/span-bar-stub-engraver.cc (right):

http://codereview.appspot.com/4917046/diff/18001/lily/span-bar-stub-engraver.cc#newcode4
lily/span-bar-stub-engraver.cc:4: Copyright (C) 1997--2011 Han-Wen
Nienhuys 
You're looking different today, Han-Wen.

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-02 Thread pkx166h

new patch passes make and reg tests

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-01 Thread Mike Solomon

On Sep 1, 2011, at 6:12 PM, bordage.bertr...@gmail.com wrote:

> This requires an update.
> The patch fails to apply.
> 

Thanks for the heads up!
I've uploaded a new patchset rebased against current master.

Cheers,
MS



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-01 Thread bordage . bertrand

This requires an update.
The patch fails to apply.

Bertrand

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-09-01 Thread mtsolo

Hey all,

So that people can confirm the visual output of this, I'm going to wait
to push until I get back.

Cheers,
MS

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-31 Thread mtsolo

Hey all,

I'm not sure if my previous message went through, so sorry for a double
posting.

I've uploaded a new patchset with most of Joe's suggestions
incorporated: some of them are difficult to implement because BarLine's
parents are not set until after process_acknowledged is called, but
other than that they were all doable.

Could someone please apply this patch and test it against several
documents with SpanBars, letting me know if the SpanBars are printing
correctly.  I'm noticing light differences in the PDF visualization
between the thickness of SpanBars and those of their BarLine buddies.  I
have no clue why this would arise, as I don't touch that portion of the
code, and furthermore, this variation in thickness is only in certain
documents and only certain times when I open up my PDF viewer.  I get
the same thing periodically on current master as well, but I am noticing
it more here.  If someone could respond with either:

(1) Yes, your patch is changing SpanBar width and/or alignment; or
(2) No, it's just your PDF viewer that's bugging out - the document
prints just fine (I don't own a printer, otherwise I'd just print it).

I'd be much obliged!

Cheers,
MS

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-30 Thread Joe Neeman
On Tue, Aug 30, 2011 at 8:58 AM, Mike Solomon  wrote:
> On Aug 30, 2011, at 5:53 PM, joenee...@gmail.com wrote:
>
>> Correct me if I'm wrong, but this is my understanding: wherever there's
>> a SpanBar, you're creating SpanBarStubs between every relevant pair of
>> staves. These don't actually get printed; they're just there for the
>> pure-height (because the SpanBar height is pretty much the whole system,
>> so it doesn't tell you where the gaps are).
>>
>
> Yes.
>
>> If that's correct, I have two broad comments: it's worth commenting
>> somewhere (span-bar-stub-engraver.cc, maybe) that the purpose of
>> SpanBarStub is for pure-height only.
>
> Will do.
>
>> But more importantly, isn't SpanBar
>> now obsoleted by SpanBarStub? That is, you can just remove the SpanBar
>> altogether and print the SpanBarStubs.
>>
>
> Mmm...you're not unright, but I'd prefer to do that in another patch if 
> that's OK.  It'd require a lot of deleting and moving around, and I'd first 
> like to make sure that these stubs are the code base and bug free for a while 
> before I deprecate an entire grob (and figure out how to deal with the syntax 
> changes that come with said deprecation).

Ok, then lgtm. Probably worth putting in a comment that we intend to
remove SpanBar.

Cheers,
Joe

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-30 Thread Mike Solomon
On Aug 30, 2011, at 5:53 PM, joenee...@gmail.com wrote:

> Correct me if I'm wrong, but this is my understanding: wherever there's
> a SpanBar, you're creating SpanBarStubs between every relevant pair of
> staves. These don't actually get printed; they're just there for the
> pure-height (because the SpanBar height is pretty much the whole system,
> so it doesn't tell you where the gaps are).
> 

Yes.

> If that's correct, I have two broad comments: it's worth commenting
> somewhere (span-bar-stub-engraver.cc, maybe) that the purpose of
> SpanBarStub is for pure-height only.

Will do.

> But more importantly, isn't SpanBar
> now obsoleted by SpanBarStub? That is, you can just remove the SpanBar
> altogether and print the SpanBarStubs.
> 

Mmm...you're not unright, but I'd prefer to do that in another patch if that's 
OK.  It'd require a lot of deleting and moving around, and I'd first like to 
make sure that these stubs are the code base and bug free for a while before I 
deprecate an entire grob (and figure out how to deal with the syntax changes 
that come with said deprecation).

> http://codereview.appspot.com/4917046/diff/1/lily/align-interface.cc
> File lily/align-interface.cc (right):
> 
> http://codereview.appspot.com/4917046/diff/1/lily/align-interface.cc#newcode363
> lily/align-interface.cc:363: Align_interface::get_vertical_alignment
> (Grob *g)
> Our convention is that in
> Align_interface::foo_bar (Grob *g)
> the Grob *g should be something that implements Align_interface. So this
> function should really be Grob::get_vertical_alignment. Same for the
> functions below it.
> 

Will do.

> http://codereview.appspot.com/4917046/diff/1/lily/align-interface.cc#newcode374
> lily/align-interface.cc:374: Align_interface::get_vertical_axis_group
> (Grob *g)
> Seems to me that what you really want here is the top-level
> VerticalAlignment (as opposed to, say, a BassFigureAlignment, which also
> implements Axis_group_interface and Align_interface). Try g->get_system
> ()->get_vertical_alignment () instead.
> 

Yes'r.

> http://codereview.appspot.com/4917046/diff/1/lily/span-bar-stub-engraver.cc
> File lily/span-bar-stub-engraver.cc (right):
> 
> http://codereview.appspot.com/4917046/diff/1/lily/span-bar-stub-engraver.cc#newcode116
> lily/span-bar-stub-engraver.cc:116: //it->set_parent (y_parents[j],
> Y_AXIS);
> Obsolete code?
> 

I'm git bisecting now, but if it's obsolete, it'll be removed in the 
not-too-distant future.

Thanks for the comments, Joe!

Cheers,
MS
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-30 Thread joeneeman

Correct me if I'm wrong, but this is my understanding: wherever there's
a SpanBar, you're creating SpanBarStubs between every relevant pair of
staves. These don't actually get printed; they're just there for the
pure-height (because the SpanBar height is pretty much the whole system,
so it doesn't tell you where the gaps are).

If that's correct, I have two broad comments: it's worth commenting
somewhere (span-bar-stub-engraver.cc, maybe) that the purpose of
SpanBarStub is for pure-height only. But more importantly, isn't SpanBar
now obsoleted by SpanBarStub? That is, you can just remove the SpanBar
altogether and print the SpanBarStubs.


http://codereview.appspot.com/4917046/diff/1/lily/align-interface.cc
File lily/align-interface.cc (right):

http://codereview.appspot.com/4917046/diff/1/lily/align-interface.cc#newcode363
lily/align-interface.cc:363: Align_interface::get_vertical_alignment
(Grob *g)
Our convention is that in
Align_interface::foo_bar (Grob *g)
the Grob *g should be something that implements Align_interface. So this
function should really be Grob::get_vertical_alignment. Same for the
functions below it.

http://codereview.appspot.com/4917046/diff/1/lily/align-interface.cc#newcode374
lily/align-interface.cc:374: Align_interface::get_vertical_axis_group
(Grob *g)
Seems to me that what you really want here is the top-level
VerticalAlignment (as opposed to, say, a BassFigureAlignment, which also
implements Axis_group_interface and Align_interface). Try g->get_system
()->get_vertical_alignment () instead.

http://codereview.appspot.com/4917046/diff/1/lily/span-bar-stub-engraver.cc
File lily/span-bar-stub-engraver.cc (right):

http://codereview.appspot.com/4917046/diff/1/lily/span-bar-stub-engraver.cc#newcode116
lily/span-bar-stub-engraver.cc:116: //it->set_parent (y_parents[j],
Y_AXIS);
Obsolete code?

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-30 Thread mtsolo

Thanks Han-Wen!

Cheers,
MS


http://codereview.appspot.com/4917046/diff/1/lily/align-interface.cc
File lily/align-interface.cc (right):

http://codereview.appspot.com/4917046/diff/1/lily/align-interface.cc#newcode399
lily/align-interface.cc:399: Align_interface::vertical_sort (Grob *g1,
Grob *g2)
On 2011/08/27 14:23:16, hanwenn wrote:

this doesn't sort.


Renamed.

http://codereview.appspot.com/4917046/diff/1/lily/pure-from-neighbor-engraver.cc
File lily/pure-from-neighbor-engraver.cc (right):

http://codereview.appspot.com/4917046/diff/1/lily/pure-from-neighbor-engraver.cc#newcode4
lily/pure-from-neighbor-engraver.cc:4: Copyright (C) 1997--2011 Han-Wen
Nienhuys 
On 2011/08/27 14:23:16, hanwenn wrote:

?


Changed.

http://codereview.appspot.com/4917046/diff/1/lily/pure-from-neighbor-engraver.cc#newcode53
lily/pure-from-neighbor-engraver.cc:53: && !i.grob
()->internal_has_interface (ly_symbol2scm
("pure-from-neighbor-interface")))
On 2011/08/27 14:23:16, hanwenn wrote:

can't you put this in acknowledge_pure_from_neighbor() so you don't

have to

check the interface ?


I don't think this'd work - I am weeding out all
pure-from-neighbor-interface grobs from the list.  Thus, I need to nip
them in the bud before they become part of items_now_.

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-27 Thread Mike Solomon

On Aug 27, 2011, at 4:23 PM, hanw...@gmail.com wrote:

> I read through this patch,  but I can't tell what it does or is supposed
> to do. Maybe one of our pure gurus should look at this.  Joe?
> 

On an immediate level, it fixes Issue 910.
On a more long-term level, it lays down some code that will be useful for cross 
staff stems (using this code, it should be possible to horizontally shift 
voices in certain cases to avoid collisions with cross-staff stems).

Cheers,
MS
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-27 Thread hanwenn

I read through this patch,  but I can't tell what it does or is supposed
to do. Maybe one of our pure gurus should look at this.  Joe?


http://codereview.appspot.com/4917046/diff/1/lily/align-interface.cc
File lily/align-interface.cc (right):

http://codereview.appspot.com/4917046/diff/1/lily/align-interface.cc#newcode399
lily/align-interface.cc:399: Align_interface::vertical_sort (Grob *g1,
Grob *g2)
this doesn't sort.

http://codereview.appspot.com/4917046/diff/1/lily/pure-from-neighbor-engraver.cc
File lily/pure-from-neighbor-engraver.cc (right):

http://codereview.appspot.com/4917046/diff/1/lily/pure-from-neighbor-engraver.cc#newcode4
lily/pure-from-neighbor-engraver.cc:4: Copyright (C) 1997--2011 Han-Wen
Nienhuys 
?

http://codereview.appspot.com/4917046/diff/1/lily/pure-from-neighbor-engraver.cc#newcode53
lily/pure-from-neighbor-engraver.cc:53: && !i.grob
()->internal_has_interface (ly_symbol2scm
("pure-from-neighbor-interface")))
can't you put this in acknowledge_pure_from_neighbor() so you don't have
to check the interface ?

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-27 Thread Mike Solomon

On Aug 27, 2011, at 10:40 AM, pkx1...@gmail.com wrote:

> ok, this passes make but I get a lot of reg tests show up but I cannot
> see any diffs at all (i.e no 'green' shadows that indicate the changes).
> Either it's unbelievably subtle or something else is triggering the reg
> tests to show up. They are to big to post them all here but he diffs
> that show up are
> 
> bar-extent.ly
> tablature-tie-behaviour.ly
> slur-cross-staff.ly
> volta-multi-staff.ly
> volta-multi-staff-inner-staff.ly
> tablature-grace-notes.ly
> span-bar-partial.ly
> double-repeat.ly
> spanner-alignment.ly
> beam-cross-staff.ly
> palm-mute.ly
> bar-line-segno.ly
> dead-notes.ly
> context-nested-staffgroup.ly
> tablature-glissando.ly
> spacing-knee-compressed.ly
> beam-cross-staff-slope.ly
> slur-extreme.ly
> note-line.ly
> span-bar-break.ly
> voice-follower.ly
> cluster-cross-staff.ly
> auto-change.ly
> page-spacing-staff-group-nested.ly
> tablature-harmonic-tie.ly
> remove-empty-staves-auto-knee.ly
> grace-staff-length.ly
> span-bar-spacing.ly
> arpeggio-span-collision.ly
> 
> etc.
> 
> Not all but a *lot*
> 
> So I don't know if this needs more work or not really, but am putting
> this as 'review' for those that know better than I.
> 
> http://codereview.appspot.com/4917046/

Hey James,

This is because the height of the Span Bar changes w/ the addition of the new 
SpanBarStub (that acts as a proxy for all height calculations), while the 
actual look of the span bar does not.

Cheers,
MS
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-27 Thread pkx166h

ok, this passes make but I get a lot of reg tests show up but I cannot
see any diffs at all (i.e no 'green' shadows that indicate the changes).
Either it's unbelievably subtle or something else is triggering the reg
tests to show up. They are to big to post them all here but he diffs
that show up are

bar-extent.ly
tablature-tie-behaviour.ly
slur-cross-staff.ly
volta-multi-staff.ly
volta-multi-staff-inner-staff.ly
tablature-grace-notes.ly
span-bar-partial.ly
double-repeat.ly
spanner-alignment.ly
beam-cross-staff.ly
palm-mute.ly
bar-line-segno.ly
dead-notes.ly
context-nested-staffgroup.ly
tablature-glissando.ly
spacing-knee-compressed.ly
beam-cross-staff-slope.ly
slur-extreme.ly
note-line.ly
span-bar-break.ly
voice-follower.ly
cluster-cross-staff.ly
auto-change.ly
page-spacing-staff-group-nested.ly
tablature-harmonic-tie.ly
remove-empty-staves-auto-knee.ly
grace-staff-length.ly
span-bar-spacing.ly
arpeggio-span-collision.ly

etc.

Not all but a *lot*

So I don't know if this needs more work or not really, but am putting
this as 'review' for those that know better than I.

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-21 Thread mtsolo

Hey all,

I just realized that in this patch, the Span_bar_stub_engraver could be
bumped down a level to the Lyric context to avoid the Grob_info
rerouting.  Lemme know if this seems like a good idea.

Another solution as well would be to create multiple SpanBars for the
same timestep in the same context (so that they never crossed places
where they're disallowed).  It'd get rid of a lot of the code, but it
wouldn't solve the problem of the inconsistent pure heights and it'd
make overrides for individual span bars a lot more difficult.
Furthermore, I'm not positive that cross-staff stems could have pure
heights that traverse multiple staves, and I'd like to use the same
logic (creating stubs in intermediary contexts between cross staff stems
to help with pure height approximations) for stems.

So, all that is to say that I'm trying to weigh the several options
available for this implementation and, as always, figure out the ones
that are most elegant while at the same time offering the most
re-usability for similar problems.

Cheers,
MS

http://codereview.appspot.com/4917046/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Improves horizontal spacing of axis groups that SpanBar grobs traverse. (issue 4917046)

2011-08-20 Thread mtsolo

Reviewers: ,

Message:
Hey all,

I've been thinking about Neil's comment regarding a better interface for
cross-staff stems.  While this patch has nothing to do with stems per
se, it lays down the framework for dealing with cross-staff stems via a
test-case with SpanBar grobs (which are like cross-staff stems insofar
as they span between staves and take their alignment anchors from grobs
with pure height approximations).

In doing so, it fixes issue 910 (regest added to show this) and gets rid
of an unreported but bad problem that SpanBar pure heights are either
empty or not depending on the common refpoint being used.  In theory, a
pure height should return the same value for .length () every time.

Cheers,
MS

Description:
Improves horizontal spacing of axis groups that span bars traverse.

Please review this at http://codereview.appspot.com/4917046/

Affected files:
  A input/regression/span-bar-allow-span-bar.ly
  M lily/align-interface.cc
  M lily/include/align-interface.hh
  A lily/pure-from-neighbor-engraver.cc
  A lily/pure-from-neighbor-interface.cc
  M lily/span-bar-engraver.cc
  A lily/span-bar-stub-engraver.cc
  M lily/span-bar.cc
  M ly/engraver-init.ly
  M scm/define-grob-properties.scm
  M scm/define-grobs.scm
  M scm/output-lib.scm



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel