Commit graph

158 commits

Author SHA1 Message Date
Werner Schweer
6ef95da0d6 first simple implementation of slur autoplace 2016-11-15 16:33:38 +01:00
Werner Schweer
292a8d9cd1 fixes for palette; cleanup drag&drop 2016-10-29 12:33:16 +02:00
Werner Schweer
e7c291942c fix regression: crash during line editing 2016-10-11 18:12:40 +02:00
Werner Schweer
e097ae5ec8 fix custom dash for hairpin, trill and textline 2016-09-22 15:54:39 +02:00
werner
9f57c06f51 fix text layout regressions 2016-09-04 16:17:33 +02:00
werner
55092d78bb fix handling of user modified spanner segments 2016-08-30 17:04:26 +02:00
werner
e5d6ac2c86 fix mtest regression 2016-08-07 11:26:32 +02:00
werner
3d6dfaf883 fix regressions for hairpin+dynamics 2016-07-20 12:45:34 +02:00
werner
e8b3f95fd0 fix layout of cautionary timesig 2016-07-18 15:04:49 +02:00
werner
2de4e0d3f9 mtest updates 2016-07-15 19:57:02 +02:00
werner
367f445953 autoplacement for hairpins, pedal lines 2016-07-15 14:07:23 +02:00
werner
3172717cbb autoplace for volta 2016-07-10 12:00:57 +02:00
werner
5c02629ec3 remove ledgerlines from shape; cleanups 2016-07-03 16:23:11 +02:00
werner
11b4940457 update incremental layout for slurs 2016-07-01 12:42:15 +02:00
werner
01a432202b update incremental layout of spanner line segment 2016-07-01 10:21:28 +02:00
werner
1cf20ac90c make dashed lines configurable 2016-06-30 20:22:36 +02:00
werner
073529e737 impl. incremental layout of spanner line segment 2016-06-30 17:27:13 +02:00
ZackTheCardshark
cdc82364e4 Fix #100396: change "note heads" to "noteheads"
See http://music.stackexchange.com/questions/42722/notehead-or-note-head

(also correct "fo" to "for" in comment)
2016-05-02 21:22:29 -04:00
ws
b9daf6ed4c rename Segment->shape(int) to Segment->staffShape(int) 2016-04-18 20:27:01 +02:00
ws
2874c409ae specialize MasterScore() from Score() 2016-04-13 11:46:21 +02:00
ws
9db0540ad2 fix Spatium/QVariant conversions 2016-04-13 11:35:22 +02:00
ws
bbd802f8ae framework for partial relayout 2016-04-13 11:35:21 +02:00
ws
9ec1d02471 code cleanups & speed optimizations 2016-04-13 11:18:14 +02:00
ws
dfba52ba77 more regression fixes & cleaups 2016-04-13 11:10:18 +02:00
ws
3d8749ffe9 some regression fixes, code cleanups 2016-04-13 11:08:01 +02:00
ws
9f933d8503 Layout reorganization 2016-04-13 11:05:04 +02:00
Homletmoo
4ea25cd8d9 fix #103176: correct length of volta with mmrests enabled 2016-03-23 21:50:20 +00:00
Marc Sabatella
7645675be1 fix #84206: exclude courtesy signature from volta 2016-03-11 11:36:41 -07:00
Marc Sabatella
01abf78a45 fix #84156: ottava drawn to measure rest with notes in other voices 2016-02-01 22:22:17 -07:00
lasconic
8df88b7f50 fix #93126: Dotted line to anchor when dragging element points off page when in vertical orientation on page >1 2016-01-23 22:21:21 +04:00
Maurizio M. Gavioli
49edb8d0c3 Fixes #19155, #22861 (duplicate of the former) and #23100.
__References__:
Issues:	https://musescore.org/en/node/19155 https://musescore.org/en/node/22861 https://musescore.org/en/node/23100

__Description__:
Allows to change the start and end note to which a glissando is anchored after it has been entered. Either anchor can be changed independently.

The user interface follows the current working of other 'snappable' lines. Once either the start or end grip is selected:
- `[Shift]+[Left]` snaps the anchor to the previous chord, defaulting to its top note.
- `[Shift]+[Right]` snaps to the next chord, defaulting to its top note.
- `[Shift]+[Up]` snaps to the note above (possibly in a chord, voice or staff above the current one).
- `[Shift]+[Down]` snaps to the note below (possibly in a chord, voice or staff below the current one).

This permits to set the anchor points of a glissando to any note in the score, allowing several glissandi between the notes of the same two chords and other complex configurations (glissandi skipping intermediate chords, start and end notes in different voices or staves, and so on).

It is possible to move the anchor to a different staff of the same instrument, but not to a different instrument; also, it is not possible to 'cross' a change of instrument in the same staff.

__Known limitations__:
- The `[Shift]+[Up]` and `[Shift]+[Down]` use the same note-finding functions as the `[Alt]+[Up]` and `[Alt]+[Down]`actions which move the selection cursor to the above and below note, even across voices or staves. Occasionally, in particular if the note immediately above or below is not time-aligned, the algorithm has little expected results; however, the behaviour is already known to the user. Improving the algorithm would benefit both uses.

__Notes__:
- Most of the added infrastructure is not specific to glissando but to any spanner anchored to notes, then it should also add after-the-fact "snap to" note support to note-anchored text line.
- When moving an anchor, the algorithm usually prefers a note in the same voice/staff of the old note if it exists; if there is none, it tries other voices of the same staff.
- The change of anchor is undoable.
- The fix corrects the management of the `Chord::_endsGlissando` flag, taking into account that a chord can be the ending point of several glissandi and removing one of them not necessarily means the chord no longer ends a glissando (another glissando may still exists).
- The fix also improved the rendering of the glissando wavy line, with better alignment with anchor notes and, with glissando text, better text-line spacing.
2015-09-30 09:16:47 +02:00
Marc Sabatella
b7c9e15953 fix #68331: line other than ottava should not start at accidental 2015-07-09 13:20:19 -06:00
lasconic
335c3bd36b fix #67001: Crash on opening file with invalid note anchored textline. Also delete note line when start or end note deleted. 2015-06-29 16:20:47 +02:00
Nicolas Froment
fd51063ec1 Merge pull request #1753 from MarcSabatella/46736-spanner-voice-2
fix #46736: spanner end cannot be set to note in voice > 1
2015-02-22 09:36:25 +01:00
ws
12b4b1c097 fix #45581 manual object positioning is incorrect after staff size change 2015-02-20 11:56:13 +01:00
ws
b6767eea68 dont crash on local help if help is not available 2015-02-19 17:29:48 +01:00
Maurizio M. Gavioli
509e0811bc Rebasing 2015-02-18 12:25:10 +01:00
Maurizio M. Gavioli
f5d831a023 Glissando as a multi-segment line.
- Implemented as a sub-class of `SLine`.
- Anchor type changed from CHORD to NOTE: allows to attach glissando start and end points to individual notes, rather than generically to chords (with note within the chord chosen by the program).
- The Glissando element is now stored in the `Note::_spannerFor` list.
- `Chord::_glissando` has been removed and replaced by a `bool _endsGlissando`, recording whether the chord is at the end of glissando (as gliss.-end chords require more space if mid-measure or system-initial).
- Debugger UI for `Chord` updated accordingly.
- Glissando in now save into score file as a spanner, within the initial note, and with appropriate `<endSpanner>` tag in the Glissando ending note.
- Existing scores with the old Glissando file format are correctly read back.

Notes:

- MusicXML import/export of the new Glissando implementation NOT IMPLEMENTED.
- This version can read scores from older versions, but older versions **cannot read** scored from this version (they do not expect a <Glissando> tag within a Note). Does this require a NEW FILE VERSION NUMBER?
- This implementation would allow rather easily to move the start and end anchors around (as for slurs) to override the note/chord chosen by the program when the glissando is initially created; but the UI for this is not implemented yet.
2015-02-18 12:21:56 +01:00
ws
8dacb7f27b fix #47141 Wrong results ion lined staves (Tab and standard) when dragging notes with mouse 2015-02-12 11:41:39 +01:00
Marc Sabatella
8ceb2a4486 fix #46736: spanner end cannot be set to note in voice > 1 2015-02-11 10:13:57 -07:00
Marc Sabatella
18b04af445 fix #45836: crash on melisma with no end element 2015-01-29 20:13:47 -07:00
Marc Sabatella
2354b1ec50 fix #44841: reconcile lyricsline length adjustments 2015-01-19 15:34:50 -07:00
Maurizio M. Gavioli
74ba9fe551 Short lyrics syllabic dash at end of system
When a syll. dash is too short to fit between two syllables, it is skipped. This looks badly at system end, where room for a short dash is usually available within the note-to-barline distance + barline width.

With this patch, a syll. dash at the end of a system is always drawn with at least the shortest acceptable length (or more, if more room is available), even if under normal conditions it would not fit. In a position where the in-word status of a syllable is not easy to guess, the occasional dash (very) slightly extending beyond the bar line seems more acceptable that no dash at all.

This patch also limits the `LyricsLine`-specific correction in `SLine::linePos()` to melisma only, using common processing for syllabic dash lines.
2015-01-19 21:30:26 +01:00
Werner Schweer
4541a02f20 Merge pull request #1638 from MarcSabatella/melisma-manual
melisma updates
2015-01-19 21:19:00 +01:00
ws
16764d4614 fix #44466: Crash extending volta over mmrest starting a new system + other cleanups 2015-01-19 12:41:16 +01:00
Marc Sabatella
4567d60188 headwidth 2015-01-15 13:44:11 -07:00
Marc Sabatella
46864a1407 melisma updates 2015-01-14 18:37:38 -07:00
Maurizio M. Gavioli
26222afb83 44156 addendum - melisma line length correction
The melisma line had an undershooting length correction; with the latest change, it is now too short.

Correction changed to overshoot the chord by `minNoteDistance`, as it is definitely less massive than the chord itself.

Also removed a useless test in `line.cpp`.
2015-01-13 01:07:22 +01:00
Marc Sabatella
27695a68b5 fix #44156: melisma line too long 2015-01-12 13:03:03 -07:00
Maurizio M. Gavioli
c69d2a9262 Lyrics multi-system melisma and dashes
Implements melisma and dash lines for lyrics spanning several systems.

The melisma and dash line is based on the `SLine` class and its segments on the `LineSegment` class. Both the whole line and its segments are not selectable, marked as generated and not saved in the score file, which is not changed in any way.

For very wide dash segments, several dashes are drawn; the distance between the dashes is not configurable.

Lyrics layout code in `Measure` class and in `layout.cpp` file has been commented out as the lyrics line layout is all contained in the lyrics.cpp file

The line is registered with the `Score` (to have its layout delayed until all elements are positioned) with a mechanism similar to other `Spanner`'s, but in a different container (`_unmanagedSpanner`), as the owning `Lyrics` should decide when create, register, unregister and delete its line.

The line segments are registered with the `System` they belong to (to have them drawn), in the same way as other `Spanner`'s.

There is code for using the dash metrics of the lyrics font, but it is turned off via a conditional directive, as there does not seem to be a reliable way to determine the dash metrics; conventional values (determined by trials and errors and based on my taste!) are used when the conditional directive is off.
2015-01-11 10:16:19 +01:00