summaryrefslogtreecommitdiff
path: root/lily
Commit message (Collapse)AuthorAgeFilesLines
* Issue 4979/1: Don't merge non-overlapping ledger linesPaul Morris2016-10-071-26/+39
|
* Issue 4974/1: Add output-attributes grob propertyPaul Morris2016-10-043-10/+12
| | | | | | It is used for setting multiple attributes on <g> nodes in SVG output, specified as an alist. The id grob property is no longer used for this.
* Keep a staff alive with multiple layersMark Knoop2016-09-082-4/+39
| | | | | | | | | | | | | | | | This allows the `VerticalAxisGroup.remove-layer' property to accept a list of values. The layer will stay alive with any other member of the Keep_alive_together_engrave group with a remove-layer value in that list. The principal reason for this patch was to allow the use of MarkLine contexts in a Frenched score, where the context should stay alive with any single staff in a StaffGroup. This implementation should also allow additional flexibility with ossia and divisi staves.
* Issue 4965: Create and use Grob::parent_relativeDavid Kastrup2016-09-086-12/+14
| | | | | | | This function checks for the existence of a Grob parent before calculating a coordinate relative to it. This should hopefully clean up the most relevant problems caused by issue 4814 and the original GCC 6 optimization causing it.
* Issue 4961/6: Let make_partial_ellipse_boxes use degreesDavid Kastrup2016-09-051-8/+7
|
* Issue 4961/5: Change rotations to degrees rather than radiansDavid Kastrup2016-09-058-14/+14
| | | | Or replace them with something not requiring angles altogether.
* Issue 4961/3: Add ly:length, ly:directed, ly:angleDavid Kastrup2016-09-051-0/+72
| | | | | Those are functions working on and/or producing coordinate pairs, usually based on angles expressed in degrees.
* Issue 4957: parser.yy: loc_on_music -> loc_on_copyDavid Kastrup2016-08-211-23/+51
| | | | | | | | | The function loc_on_music has been renamed to loc_on_copy and has been changed to create a copy for a number of different expression types. This makes \xxx.yyy behave similar to \xxx-yyy with regard to copying the original expression in most cases, and it also helps with default arguments of music/void/event/scheme functions of more types than just music.
* Issue 4954/1: Change spanner-id to be a key instead of a stringNathan Chou2016-08-132-14/+12
| | | | | | Also changes argument \= to be a key. Backport-by: David Kastrup <dak@gnu.org>
* Issue 4947: Link notes to dynamics in Dynamic_performer rather thanDan Eble2016-08-062-38/+25
| | | | Staff_performer. Dynamics in different voices are now independent.
* Issue 4938 (3/3) Rename Midi_control_function_performer to ↵Heikki Tauriainen2016-07-271-22/+22
| | | | Midi_control_change_performer
* Issue 4938 (2/3) Refactor handling of MIDI control changesHeikki Tauriainen2016-07-279-205/+267
| | | | | | | | | | | | | Handle the MIDI control value initialization from context properties (Staff_performer::new_audio_staff), control value changes (Midi_control_function_performer::announce_function_value_change), and value conversion for output (Midi_control_function_value_change::to_string) in the new Midi_control_change_announcer class. All MIDI control changes are now encoded using {Audio,Midi}_control_change items. This change makes the old {Audio,Midi}_control_function_value_change classes obsolete.
* Issue 4938 (1/3) Add Audio_item and Midi_item subclasses for control changesHeikki Tauriainen2016-07-275-0/+53
|
* Try changing near and farPhil Holmes2016-07-241-3/+3
|
* 4944: Do not initialize static constants in class body (fix FTBFS on GCC 6)Heikki Tauriainen2016-07-232-6/+6
|
* Issue 4814: grob.cc segfaults with gcc6Guido Aulisi2016-07-231-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From the release notes of GCC 6: Optimizations remove null pointer checks for this When optimizing, GCC now assumes the this pointer can never be null, which is guaranteed by the language rules. Invalid programs which assume it is OK to invoke a member function through a null pointer (possibly relying on checks like this != NULL) may crash or otherwise fail at run time if null pointer checks are optimized away. With the -Wnull-dereference option the compiler tries to warn when it detects such invalid code. If the program cannot be fixed to remove the undefined behavior then the option -fno-delete-null-pointer-checks can be used to disable this optimization. That option also disables other optimizations involving pointers, not only those involving this. As a consequence, we cannot call a member function on a prospective null pointer (which actually is a bad idea for a number of other reasons, like when anything tries accessing the vtable) and then try sorting out the condition in the routine itself. This problem was first observed with Fedora 24. The Ubuntu GCC6 prerelease does not show this problem; presumably the respective optimization has been disabled in the Ubuntu/Debian packaging because of affecting other programs. Commit-message-by: David Kastrup <dak@gnu.org> Signed-off-by: David Kastrup <dak@gnu.org>
* Issue 4048 (4/5) Handle multiple (de)crescendi in depart/return groupsDan Eble2016-07-193-70/+298
|
* Issue 4048 (2/5) Dynamic_performer: represent dynamics as a piecewiseDan Eble2016-07-196-240/+202
| | | | linear function rather than a collection of discrete points
* Issue 4917: Remove some set_location calls from parserDavid Kastrup2016-07-111-6/+2
| | | | | | | | | | | | | | | | Older versions of Bison (current is 3.0.4) had problems assigning location data to rules with empty production, possibly related to the definition of YYLLOCA_DEFAULT when N is zero. This lead to several workarounds in the code base. A number of them dropped through the floor in the course of refactoring without apparent problem, and the original problem does not appear to be reproducible with the current versions of Bison. This removes the remaining instances. Should the original problem reoccur at some point of time (or with some versions of Bison), it would be noticeable as bad point-and-click messages and/or error messages with bad location data.
* Issue 4907: Midi_walker::do_start_note: skip ignored notes in stop_note_queueHeikki Tauriainen2016-07-111-2/+3
| | | | | | | | | | | | | | | | | For each semitone pitch value, stop_note_queue is likely supposed to contain at most one Midi_note event with its "ignore_" flag set to false, and the comparisons between notes of equal semitone pitch to be always done between the input note and this unique queued note that is not (yet) being ignored. If notes which are already being ignored are not skipped in the loop, the task of raising the "ignore_" flags for note events of equal semitone pitch (overlapping in time) which stop before the maximum stopping time of these notes may, due to breaking out of the loop, fail to work if the queue grows to contain three or more notes of equal semitone pitch, leading to the emission of premature "note off" events for this pitch, as demonstrated, for example, in <http://lists.gnu.org/archive/html/bug-lilypond/2016-06/msg00042.html>.
* Issue 4914/1: Move Output_property_engraver to Score levelDavid Kastrup2016-07-101-10/+12
| | | | | | | | | | | | | | | | This has the advantage of needing only one instantiation of the engraver and not having \applyOutput mysteriously refrain from having an effect in contexts without Output_property_engraver . Due to the hierarchical nature of acknowledgers, acknowledgers in lower contexts will now get to see the grobs before applyOutput has done its work. However, grobs are still unfinished (except for type, properties initialized via context properties and cause) at the time they are announced, with other details only getting filled in by the engraver after announcement, so the potential for trouble seems low. Acknowledgers should usually just register a grob (or write grob data) with any actual reading of grob data occurring at the end of the timestep instead or in the process-acknowledged phase.
* Issue 4911/3: Don't treat context modification identifiers specialDavid Kastrup2016-07-101-15/+1
| | | | | | This requires using \with before context modifications like \RemoveEmptyStaves in order to make the syntax get along with fewer special cases and exceptions.
* Issue 4911/1: \with #*unspecified* should be equivalent to \with { }David Kastrup2016-07-101-6/+6
|
* Issue 4910/3: Avoid crash when g_spawn_sync () failsMasamichi Hosoda2016-07-081-2/+5
| | | | | | When g_spawn_sync () fails, `standard_output` and `standard_error` may not be set. This commit makes to check whether or not the value is valid.
* Issue 4910/2: Replace the warning message output method in ly_run_command ()Masamichi Hosoda2016-07-081-1/+2
| | | | | | This commit replaces the warning message output method in ly_run_command () from fprintf () to warning ().
* Issue 4910/1: Fix memory leak in ly:spawn ()Masamichi Hosoda2016-07-081-0/+3
| | | | This commit makes free the memory allocated by g_spawn_sync ().
* Issue 4912: Fix output definition use in \book and \bookpartDavid Kastrup2016-07-071-20/+11
| | | | | | | | | | | | The only explicit output definition blocks allowed in \book and \bookpart blocks were paper blocks. Output definitions supplied with Scheme expressions were erroneously interpreted like global output definitions, accepting all output definition types and overriding the global defaults with them. Now the only output definitions accepted as Scheme expressions are paper blocks. As opposed to previously, they actually set the paper block of the respective book or bookpart.
* Issue 4908/4: Admit \header-like expression into \scoreDavid Kastrup2016-07-071-0/+16
|
* Issue 4908/3: Admit \header-like expressions in \headerDavid Kastrup2016-07-071-2/+9
|
* Issue 4908/2: Admit \header-like expressions at top levelsDavid Kastrup2016-07-071-0/+14
| | | | | \header-like expressions are allowed at \book, \bookpart, and top level.
* Issue 4908/1: Allow \header blocks in expressionsDavid Kastrup2016-07-071-5/+13
| | | | This allows creating modules for further programmatic manipulation.
* Issue 4909/1: Add procedure `ly:get-cff-offset`Masamichi Hosoda2016-07-041-0/+159
| | | | | This commit adds procedure `ly:get-cff-offset` which gets the offset of 'CFF' table for a font.
* Issue 4876/5: Add direct parsing CFF for getting Postscript font nameMasamichi Hosoda2016-07-041-2/+47
| | | | | | | FreeType 2.6 and 2.6.1 cannot get PS name from pure-CFF. (FreeType 2.5.5 and earlier does not have this issue. FreeType 2.6.2+ has this bug fixed.) So we need direct parsing of the 'CFF' table, in this case.
* Issue 4876/4: Enable fontname replacing in TrueType functionsMasamichi Hosoda2016-07-041-3/+2
| | | | This commit enables fontname replacing for CFF (OTF/OTC) fonts.
* Issue 4876/3: Enable fontname replacing in Pango_font classMasamichi Hosoda2016-07-041-4/+5
| | | | This commit enables fontname replacing for CFF (OTF/OTC) fonts.
* Issue 4876/2: Enable fontname replacing in Open_type_font classMasamichi Hosoda2016-07-042-1/+4
| | | | This commit enables fontname replacing for CFF (OTF/OTC) fonts.
* Issue 4876/1: Add fontname replacing function for CFF (OTF/OTC) fontsMasamichi Hosoda2016-07-042-0/+78
| | | | | | | | | | | | | | | For CFF (OTF/OTC) fonts, FT_Get_Postscript_Name () in FreeType 2.6+ gets the name in 'name' table. However, we want the name in 'CFF' table instead of in 'name' table because output postscript file is embedded only 'CFF' table of the font. They are inconsistent for some OpenType/CFF Collection fonts (OTC). This function can get the name in 'CFF' table. TODO: Check conflicts between fonts which have same name in 'CFF' table but different name in 'name' table.
* Issue 4906/6: Use ADD_END_ACKNOWLEDGER_FOR in slur engraversDavid Kastrup2016-07-043-9/+2
|
* Issue 4906/5: Don't let ADD_END_ACKNOWLEDGER_FOR add end_ to callbackDavid Kastrup2016-07-041-2/+6
|
* Issue 4906/4: Use ADD_LISTENER/ACKNOWLEDGER_FOR in slur engraversDavid Kastrup2016-07-043-64/+12
|
* Issue 4906/3: ADD_ACKNOWLEDGER/LISTENER_FORDavid Kastrup2016-07-041-6/+11
| | | | | Add macros allowing to listen/acknowledge to events/grobs unrelated to the actual listener name.
* Issue 4906/2: Rename ack_trampoline to trampolineDavid Kastrup2016-07-042-7/+4
| | | | This allows foregoing a dummy Translator::ack_trampoline definition.
* Issue 4906/1: Rename ack_finder to method_finderDavid Kastrup2016-07-042-9/+4
| | | | This additional overload streamlines things somewhat.
* Issue 4902/1: Add procedure `ly:has-glyph-names?`Masamichi Hosoda2016-06-271-0/+46
| | | | | This commit adds procedure `ly:has-glyph-names?` to check whether or not a font has glyph names.
* Don't overload Slur_engraver::listen_slurDavid Kastrup2016-06-252-6/+6
| | | | | | Having two overloaded variants of Slur_engraver::listen_slur leads to problems with ADD_LISTENER template resolution at least in some versions of g++. So the two-argument version is renamed to listen_note_slur.
* Issue 4903/4: Fold Slur_proto_engraver into Slur_engraverDavid Kastrup2016-06-244-382/+339
| | | | | | A symmetrical common base class to both Slur_engraver and Phrasing_slur_engraver seems like an unnecessary complication. Instead, Phrasing_slur_engraver can just be derived from Slur_engraver .
* Issue 4903/3: Restructure slur engraversDavid Kastrup2016-06-244-32/+65
| | | | | Replaces data members specific to derived classes of Slur_proto_engraver with virtual functions.
* Issue 4903/2: {phrasing-,}slur-engraver.cc: adjust includesDavid Kastrup2016-06-243-19/+1
|
* Issue 4903/1: internal_make_grob: Remove unused `name' argumentDavid Kastrup2016-06-244-19/+13
|
* Issue 4898: Set rhythmic-location early in paper-column-engraverDavid Kastrup2016-06-241-12/+12
| | | | | This makes it possible to refer to rhythmic-location in callbacks for PaperColumn grobs.