-- Author: John Maxwell
-- last modified: November 9, 1981 9: 07 AM
-- Last Edited by: Maxwell, November 21, 1983 9:19 am
DIRECTORY
Graphics: FROM "Graphics",
MusicDefs: FROM "MusicDefs";
Selection: DEFINITIONS
IMPORTS MusicDefs =
BEGIN
OPEN MusicDefs;
selection: SelectionPTR;
AddGreyLine: PROCEDURE[score: ScorePTR, time1, time2: Time];
AddLine: PROCEDURE[score: ScorePTR, time1, time2: Time];
AddNote: PROCEDURE[score: ScorePTR, n: NotePTR]; -- use clear to clear current selection
Clear: PROCEDURE;
Draw: PROCEDURE;
RemoveNote: PROCEDURE[n: NotePTR];
Enumerate: PROCEDURE[proc: PROC[ScorePTR, NotePTR]];
-- ****************************************************************************
-- procedures that take the current selection as an implicit parameter
-- ****************************************************************************
ClearBeam: PROCEDURE;
ClearChord: PROCEDURE;
ClearSync: PROCEDURE; -- may raise Piece.Overflow
ClearTie: PROCEDURE;
Delete: PROCEDURE;
HideNTuplets: PROCEDURE[invisible: BOOLEAN];
MakeBeam: PROCEDURE[beamed: BOOLEAN ← TRUE];
MakeBeamOfBeams: PROCEDURE[beamed: BOOLEAN ← TRUE];
MakeChord: PROCEDURE;
MakeNTuplet: PROCEDURE[n, a: INTEGER];
MakeNTupletOfBeams: PROCEDURE[n, a: INTEGER];
MakeSync: PROCEDURE;
MakeTie: PROCEDURE;
SetGrace: PROCEDURE[grace: BOOLEAN];
SetNoteValue: PROCEDURE[v: NoteValue, dots: INTEGER];
SetRest: PROCEDURE[rest: BOOLEAN];
SetStaff: PROCEDURE[staff: CARDINAL];
SetStem: PROCEDURE[stemUp: BOOLEAN];
Transpose: PROCEDURE[halfsteps: INTEGER];
END..
Includes: PROCEDURE[n: NotePTR] RETURNS[BOOLEAN] = INLINE
{IF selection.voice # noVoice AND n.voice # selection.voice THEN RETURN[FALSE];
IF selection.lineSelect
THEN RETURN[n.sync.time IN [selection.select1..selection.select2)]
ELSE FOR i: CARDINAL IN [0..selection.length) DO
IF selection.note[i] = n THEN RETURN[TRUE];
ENDLOOP;
RETURN[FALSE]};