123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import { GraphicalObject } from "./GraphicalObject";
- import { VoiceEntry } from "../VoiceData/VoiceEntry";
- import { BoundingBox } from "./BoundingBox";
- import { GraphicalNote } from "./GraphicalNote";
- import { GraphicalStaffEntry } from "./GraphicalStaffEntry";
- import { OctaveEnum } from "../VoiceData/Expressions/ContinuousExpressions/OctaveShift";
- import { EngravingRules } from ".";
- /**
- * The graphical counterpart of a [[VoiceEntry]].
- */
- export class GraphicalVoiceEntry extends GraphicalObject {
- constructor(parentVoiceEntry: VoiceEntry, parentStaffEntry: GraphicalStaffEntry) {
- super();
- this.parentVoiceEntry = parentVoiceEntry;
- this.parentStaffEntry = parentStaffEntry;
- this.PositionAndShape = new BoundingBox(this, parentStaffEntry ? parentStaffEntry.PositionAndShape : undefined, true);
- this.notes = [];
- this.rules = parentStaffEntry ?
- parentStaffEntry.parentMeasure.parentSourceMeasure.Rules : new EngravingRules();
- }
- public parentVoiceEntry: VoiceEntry;
- public parentStaffEntry: GraphicalStaffEntry;
- public notes: GraphicalNote[];
- /** Contains octave shifts affecting this voice entry, caused by octave brackets. */
- public octaveShiftValue: OctaveEnum;
- protected rules: EngravingRules;
- /** Sort this entry's notes by pitch.
- * Notes need to be sorted for Vexflow StaveNote creation.
- * Note that Vexflow needs the reverse order, see VexFlowConverter.StaveNote().
- */
- public sort(): void {
- this.notes.sort((a, b) => {
- return b.sourceNote.Pitch.getHalfTone() - a.sourceNote.Pitch.getHalfTone();
- });
- }
- /** (Re-)color notes and stems
- */
- public color(): void {
- // override
- }
- }
|