[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Denemo-devel] Wrong display on pasting into different clef
From: |
Richard Shann |
Subject: |
Re: [Denemo-devel] Wrong display on pasting into different clef |
Date: |
Sun, 27 Sep 2009 08:44:31 +0100 |
On Sat, 2009-09-26 at 10:23 +0100, Richard Shann wrote:
> When you paste a note from an area with one clef into an area with
> another the display is wrong. I have (at last) tracked down why.
In fact there is more stuff cached about where to draw stuff for the
chord:
* the field y of each note caches the y-position of the notehead,
* the field highesty of a chord caches the field y of the highest
pitched note (ditto lowest)
* the field stemy of a chord holds the y-position of the end of
any stem the chord might have
* the field is_stemup of a chord caches which way the stem should
go (which changes with change of clef)
* the field is_reversealigned of a chord caches the head
x-position (left/right) relative to the stem.
As with any caching system it is crucial to know when the caches are
invalidated: things like pasting chords, clef changes, stem directives
as well as changing the initial clef and of course ordinary note entry.
And it would be useful to have a clear way to re-build the caches - the
only secure method that I know of at the moment is to store the file to
disk and reload it!
At the moment I suspect one of the re-caching routines is wrong - if you
put an eighth note c'' into a newly opened Denemo score and change to
Bass clef and put in the note e the display shows the c'' with the stem
up (the tail and the notehead are correct).
So perhaps I should start with that bug.
Richard
> There are fields highesty and lowesty which cache the y-positions of the
> notes in a chord they are calculated thus:
>
> if (mid_c_offset > ((chord *) thechord->object)->highestpitch)
> {
> ((chord *) thechord->object)->highestpitch = mid_c_offset;
> ((chord *) thechord->object)->highesty =
> calculateheight (mid_c_offset, dclef);
> }
>
> this calculation however is not repeated on pasting chords, so the draw
> routines draw them in the wrong places.
> I'll look into fixing this
>
> Richard
>
>
>
>
> _______________________________________________
> Denemo-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/denemo-devel