UNPKG

orpheus-osmd

Version:

An open source JavaScript engine for displaying MusicXML based on VexFlow.

613 lines (612 loc) 26.1 kB
import { PagePlacementEnum } from "./GraphicalMusicPage"; import { TextAlignmentEnum } from "../../Common/Enums/TextAlignment"; import { PlacementEnum } from "../VoiceData/Expressions/AbstractExpression"; import { AutoBeamOptions, FillEmptyMeasuresWithWholeRests } from "../../OpenSheetMusicDisplay/OSMDOptions"; import { ColoringModes as ColoringMode } from "./DrawingParameters"; import { Dictionary } from "typescript-collections"; import { NoteEnum } from "../.."; export declare class EngravingRules { private static rules; /** A unit of distance. 1.0 is the distance between lines of a stave for OSMD, which is 10 pixels in Vexflow. */ private static unit; private samplingUnit; private staccatoShorteningFactor; /** Height (size) of the sheet title. */ private sheetTitleHeight; private sheetSubtitleHeight; private sheetMinimumDistanceBetweenTitleAndSubtitle; private sheetComposerHeight; private sheetAuthorHeight; private compactMode; private pagePlacementEnum; private pageHeight; private pageTopMargin; private pageTopMarginNarrow; private pageBottomMargin; private pageLeftMargin; private pageRightMargin; private titleTopDistance; private titleBottomDistance; private systemLeftMargin; private systemRightMargin; private firstSystemMargin; private systemLabelsRightMargin; private systemComposerDistance; private instrumentLabelTextHeight; private minimumDistanceBetweenSystems; private lastSystemMaxScalingFactor; private staffDistance; private betweenStaffDistance; private staffHeight; private betweenStaffLinesDistance; /** Whether to automatically beam notes that don't already have beams in XML. */ private autoBeamNotes; /** Options for autoBeaming like whether to beam over rests. See AutoBeamOptions interface. */ private autoBeamOptions; private beamWidth; private beamSpaceWidth; private beamForwardLength; private clefLeftMargin; private clefRightMargin; private betweenKeySymbolsDistance; private keyRightMargin; private rhythmRightMargin; private inStaffClefScalingFactor; private distanceBetweenNaturalAndSymbolWhenCancelling; private noteHelperLinesOffset; private measureLeftMargin; private measureRightMargin; private distanceBetweenLastInstructionAndRepetitionBarline; private arpeggioDistance; private idealStemLength; private stemNoteHeadBorderYOffset; private stemWidth; private stemMargin; private stemMinLength; private stemMaxLength; private beamSlopeMaxAngle; private stemMinAllowedDistanceBetweenNoteHeadAndBeamLine; private setWantedStemDirectionByXml; private graceNoteScalingFactor; private graceNoteXOffset; private wedgeOpeningLength; private wedgeMeasureEndOpeningLength; private wedgeMeasureBeginOpeningLength; private wedgePlacementAboveY; private wedgePlacementBelowY; private wedgeHorizontalMargin; private wedgeVerticalMargin; private distanceOffsetBetweenTwoHorizontallyCrossedWedges; private wedgeMinLength; private distanceBetweenAdjacentDynamics; private tempoChangeMeasureValidity; private tempoContinousFactor; private staccatoScalingFactor; private betweenDotsDistance; private ornamentAccidentalScalingFactor; private chordSymbolTextHeight; private chordSymbolXSpacing; private chordSymbolYOffset; private fingeringLabelFontHeight; private measureNumberLabelHeight; private measureNumberLabelOffset; /** Whether tuplets should display ratio (3:2 instead of 3 for triplet). Default false. */ private tupletsRatioed; /** Whether all tuplets should be bracketed (e.g. |--5--| instead of 5). Default false. * If false, only tuplets given as bracketed in XML (bracket="yes") will be bracketed. * (If not given in XML, bracketing is implementation-dependent according to standard) */ private tupletsBracketed; /** Whether all triplets should be bracketed. Overrides tupletsBracketed for triplets. * If false, only triplets given as bracketed in XML (bracket="yes") will be bracketed. * (Bracketing all triplets can be cluttering) */ private tripletsBracketed; private tupletNumberLabelHeight; private tupletNumberYOffset; private labelMarginBorderFactor; private tupletVerticalLineLength; private repetitionEndingLabelHeight; private repetitionEndingLabelXOffset; private repetitionEndingLabelYOffset; private repetitionEndingLineYLowerOffset; private repetitionEndingLineYUpperOffset; /** Default alignment of lyrics. * Left alignments will extend text to the right of the bounding box, * which facilitates spacing by extending measure width. */ private lyricsAlignmentStandard; private lyricsHeight; private lyricsYOffsetToStaffHeight; private verticalBetweenLyricsDistance; private horizontalBetweenLyricsDistance; private betweenSyllableMaximumDistance; private betweenSyllableMinimumDistance; private lyricOverlapAllowedIntoNextMeasure; private minimumDistanceBetweenDashes; private bezierCurveStepSize; private tPower3; private oneMinusTPower3; private factorOne; private factorTwo; private tieGhostObjectWidth; private tieYPositionOffsetFactor; private minimumNeededXspaceForTieGhostObject; private tieHeightMinimum; private tieHeightMaximum; private tieHeightInterpolationK; private tieHeightInterpolationD; private slurNoteHeadYOffset; private slurStemXOffset; private slurSlopeMaxAngle; private slurTangentMinAngle; private slurTangentMaxAngle; private slursStartingAtSameStaffEntryYOffset; private instantaneousTempoTextHeight; private continuousDynamicTextHeight; private moodTextHeight; private unknownTextHeight; private continuousTempoTextHeight; private staffLineWidth; private ledgerLineWidth; private wedgeLineWidth; private tupletLineWidth; private lyricUnderscoreLineWidth; private systemThinLineWidth; private systemBoldLineWidth; private systemRepetitionEndingLineWidth; private systemDotWidth; private distanceBetweenVerticalSystemLines; private distanceBetweenDotAndLine; private octaveShiftLineWidth; private octaveShiftVerticalLineLength; private graceLineWidth; private minimumStaffLineDistance; private minimumCrossedBeamDifferenceMargin; private displacedNoteMargin; private minNoteDistance; private subMeasureXSpacingThreshold; private measureDynamicsMaxScalingFactor; private wholeRestXShiftVexflow; private metronomeMarkXShift; private metronomeMarkYShift; private maxInstructionsConstValue; private noteDistances; private noteDistancesScalingFactors; private durationDistanceDict; private durationScalingDistanceDict; private alignRests; private fillEmptyMeasuresWithWholeRest; private arpeggiosGoAcrossVoices; private renderArpeggios; private renderSlurs; private coloringMode; private coloringEnabled; private colorStemsLikeNoteheads; private colorFlags; private colorBeams; private coloringSetCustom; private defaultColorNotehead; private defaultColorRest; private defaultColorStem; private defaultColorLabel; private defaultColorTitle; private defaultFontFamily; private maxMeasureToDrawIndex; private minMeasureToDrawIndex; /** Whether to render a label for the composer of the piece at the top of the sheet. */ private renderComposer; private renderTitle; private renderSubtitle; private renderLyricist; private renderPartNames; private renderPartAbbreviations; private renderFingerings; private renderMeasureNumbers; private renderLyrics; private dynamicExpressionMaxDistance; private dynamicExpressionSpacer; /** Position of fingering label in relation to corresponding note (left, right supported, above, below experimental) */ private fingeringPosition; private fingeringInsideStafflines; private pageFormat; private pageBackgroundColor; private renderSingleHorizontalStaffline; private fixStafflineBoundingBox; constructor(); static get Rules(): EngravingRules; get SamplingUnit(): number; get SheetTitleHeight(): number; set SheetTitleHeight(value: number); get SheetSubtitleHeight(): number; set SheetSubtitleHeight(value: number); get SheetMinimumDistanceBetweenTitleAndSubtitle(): number; set SheetMinimumDistanceBetweenTitleAndSubtitle(value: number); get SheetComposerHeight(): number; set SheetComposerHeight(value: number); get SheetAuthorHeight(): number; set SheetAuthorHeight(value: number); get PagePlacement(): PagePlacementEnum; set PagePlacement(value: PagePlacementEnum); get CompactMode(): boolean; set CompactMode(value: boolean); get PageHeight(): number; set PageHeight(value: number); get PageTopMargin(): number; set PageTopMargin(value: number); get PageTopMarginNarrow(): number; set PageTopMarginNarrow(value: number); get PageBottomMargin(): number; set PageBottomMargin(value: number); get PageLeftMargin(): number; set PageLeftMargin(value: number); get PageRightMargin(): number; set PageRightMargin(value: number); get TitleTopDistance(): number; set TitleTopDistance(value: number); get TitleBottomDistance(): number; set TitleBottomDistance(value: number); get SystemComposerDistance(): number; set SystemComposerDistance(value: number); get InstrumentLabelTextHeight(): number; set InstrumentLabelTextHeight(value: number); get SystemLeftMargin(): number; set SystemLeftMargin(value: number); get SystemRightMargin(): number; set SystemRightMargin(value: number); get FirstSystemMargin(): number; set FirstSystemMargin(value: number); get SystemLabelsRightMargin(): number; set SystemLabelsRightMargin(value: number); get MinimumDistanceBetweenSystems(): number; set MinimumDistanceBetweenSystems(value: number); get LastSystemMaxScalingFactor(): number; set LastSystemMaxScalingFactor(value: number); get StaffDistance(): number; set StaffDistance(value: number); get BetweenStaffDistance(): number; set BetweenStaffDistance(value: number); get StaffHeight(): number; set StaffHeight(value: number); get BetweenStaffLinesDistance(): number; set BetweenStaffLinesDistance(value: number); get AutoBeamNotes(): boolean; set AutoBeamNotes(value: boolean); get AutoBeamOptions(): AutoBeamOptions; set AutoBeamOptions(value: AutoBeamOptions); get BeamWidth(): number; set BeamWidth(value: number); get BeamSpaceWidth(): number; set BeamSpaceWidth(value: number); get BeamForwardLength(): number; set BeamForwardLength(value: number); get BetweenKeySymbolsDistance(): number; set BetweenKeySymbolsDistance(value: number); get ClefLeftMargin(): number; set ClefLeftMargin(value: number); get ClefRightMargin(): number; set ClefRightMargin(value: number); get KeyRightMargin(): number; set KeyRightMargin(value: number); get RhythmRightMargin(): number; set RhythmRightMargin(value: number); get InStaffClefScalingFactor(): number; set InStaffClefScalingFactor(value: number); get DistanceBetweenNaturalAndSymbolWhenCancelling(): number; set DistanceBetweenNaturalAndSymbolWhenCancelling(value: number); get NoteHelperLinesOffset(): number; set NoteHelperLinesOffset(value: number); get MeasureLeftMargin(): number; set MeasureLeftMargin(value: number); get MeasureRightMargin(): number; set MeasureRightMargin(value: number); get DistanceBetweenLastInstructionAndRepetitionBarline(): number; set DistanceBetweenLastInstructionAndRepetitionBarline(value: number); get ArpeggioDistance(): number; set ArpeggioDistance(value: number); get StaccatoShorteningFactor(): number; set StaccatoShorteningFactor(value: number); get IdealStemLength(): number; set IdealStemLength(value: number); get StemNoteHeadBorderYOffset(): number; set StemNoteHeadBorderYOffset(value: number); get StemWidth(): number; set StemWidth(value: number); get StemMargin(): number; set StemMargin(value: number); get StemMinLength(): number; set StemMinLength(value: number); get StemMaxLength(): number; set StemMaxLength(value: number); get BeamSlopeMaxAngle(): number; set BeamSlopeMaxAngle(value: number); get StemMinAllowedDistanceBetweenNoteHeadAndBeamLine(): number; set StemMinAllowedDistanceBetweenNoteHeadAndBeamLine(value: number); get SetWantedStemDirectionByXml(): boolean; set SetWantedStemDirectionByXml(value: boolean); get GraceNoteScalingFactor(): number; set GraceNoteScalingFactor(value: number); get GraceNoteXOffset(): number; set GraceNoteXOffset(value: number); get WedgeOpeningLength(): number; set WedgeOpeningLength(value: number); get WedgeMeasureEndOpeningLength(): number; set WedgeMeasureEndOpeningLength(value: number); get WedgeMeasureBeginOpeningLength(): number; set WedgeMeasureBeginOpeningLength(value: number); get WedgePlacementAboveY(): number; set WedgePlacementAboveY(value: number); get WedgePlacementBelowY(): number; set WedgePlacementBelowY(value: number); get WedgeHorizontalMargin(): number; set WedgeHorizontalMargin(value: number); get WedgeVerticalMargin(): number; set WedgeVerticalMargin(value: number); get DistanceOffsetBetweenTwoHorizontallyCrossedWedges(): number; set DistanceOffsetBetweenTwoHorizontallyCrossedWedges(value: number); get WedgeMinLength(): number; set WedgeMinLength(value: number); get DistanceBetweenAdjacentDynamics(): number; set DistanceBetweenAdjacentDynamics(value: number); get TempoChangeMeasureValidity(): number; set TempoChangeMeasureValidity(value: number); get TempoContinousFactor(): number; set TempoContinousFactor(value: number); get StaccatoScalingFactor(): number; set StaccatoScalingFactor(value: number); get BetweenDotsDistance(): number; set BetweenDotsDistance(value: number); get OrnamentAccidentalScalingFactor(): number; set OrnamentAccidentalScalingFactor(value: number); get ChordSymbolTextHeight(): number; set ChordSymbolTextHeight(value: number); get ChordSymbolXSpacing(): number; set ChordSymbolXSpacing(value: number); get ChordSymbolYOffset(): number; set ChordSymbolYOffset(value: number); get FingeringLabelFontHeight(): number; set FingeringLabelFontHeight(value: number); get MeasureNumberLabelHeight(): number; set MeasureNumberLabelHeight(value: number); get MeasureNumberLabelOffset(): number; set MeasureNumberLabelOffset(value: number); get TupletsRatioed(): boolean; set TupletsRatioed(value: boolean); get TupletsBracketed(): boolean; set TupletsBracketed(value: boolean); get TripletsBracketed(): boolean; set TripletsBracketed(value: boolean); get TupletNumberLabelHeight(): number; set TupletNumberLabelHeight(value: number); get TupletNumberYOffset(): number; set TupletNumberYOffset(value: number); get LabelMarginBorderFactor(): number; set LabelMarginBorderFactor(value: number); get TupletVerticalLineLength(): number; set TupletVerticalLineLength(value: number); get RepetitionEndingLabelHeight(): number; set RepetitionEndingLabelHeight(value: number); get RepetitionEndingLabelXOffset(): number; set RepetitionEndingLabelXOffset(value: number); get RepetitionEndingLabelYOffset(): number; set RepetitionEndingLabelYOffset(value: number); get RepetitionEndingLineYLowerOffset(): number; set RepetitionEndingLineYLowerOffset(value: number); get RepetitionEndingLineYUpperOffset(): number; set RepetitionEndingLineYUpperOffset(value: number); get LyricsAlignmentStandard(): TextAlignmentEnum; set LyricsAlignmentStandard(value: TextAlignmentEnum); get LyricsHeight(): number; set LyricsHeight(value: number); get LyricsYOffsetToStaffHeight(): number; set LyricsYOffsetToStaffHeight(value: number); get VerticalBetweenLyricsDistance(): number; set VerticalBetweenLyricsDistance(value: number); get HorizontalBetweenLyricsDistance(): number; set HorizontalBetweenLyricsDistance(value: number); get BetweenSyllableMaximumDistance(): number; set BetweenSyllableMaximumDistance(value: number); get BetweenSyllableMinimumDistance(): number; set BetweenSyllableMinimumDistance(value: number); get LyricOverlapAllowedIntoNextMeasure(): number; set LyricOverlapAllowedIntoNextMeasure(value: number); get MinimumDistanceBetweenDashes(): number; set MinimumDistanceBetweenDashes(value: number); get BezierCurveStepSize(): number; set BezierCurveStepSize(value: number); get TPow3(): number[]; set TPow3(value: number[]); get OneMinusTPow3(): number[]; set OneMinusTPow3(value: number[]); get BezierFactorOne(): number[]; set BezierFactorOne(value: number[]); get BezierFactorTwo(): number[]; set BezierFactorTwo(value: number[]); get TieGhostObjectWidth(): number; set TieGhostObjectWidth(value: number); get TieYPositionOffsetFactor(): number; set TieYPositionOffsetFactor(value: number); get MinimumNeededXspaceForTieGhostObject(): number; set MinimumNeededXspaceForTieGhostObject(value: number); get TieHeightMinimum(): number; set TieHeightMinimum(value: number); get TieHeightMaximum(): number; set TieHeightMaximum(value: number); get TieHeightInterpolationK(): number; set TieHeightInterpolationK(value: number); get TieHeightInterpolationD(): number; set TieHeightInterpolationD(value: number); get SlurNoteHeadYOffset(): number; set SlurNoteHeadYOffset(value: number); get SlurStemXOffset(): number; set SlurStemXOffset(value: number); get SlurSlopeMaxAngle(): number; set SlurSlopeMaxAngle(value: number); get SlurTangentMinAngle(): number; set SlurTangentMinAngle(value: number); get SlurTangentMaxAngle(): number; set SlurTangentMaxAngle(value: number); get SlursStartingAtSameStaffEntryYOffset(): number; set SlursStartingAtSameStaffEntryYOffset(value: number); get InstantaneousTempoTextHeight(): number; set InstantaneousTempoTextHeight(value: number); get ContinuousDynamicTextHeight(): number; set ContinuousDynamicTextHeight(value: number); get MoodTextHeight(): number; set MoodTextHeight(value: number); get ContinuousTempoTextHeight(): number; set ContinuousTempoTextHeight(value: number); /** Distance of expressions inside a group */ get DynamicExpressionMaxDistance(): number; set DynamicExpressionMaxDistance(value: number); /** Space between expressions in a group */ get DynamicExpressionSpacer(): number; set DynamicExpressionSpacer(value: number); get UnknownTextHeight(): number; set UnknownTextHeight(value: number); get StaffLineWidth(): number; set StaffLineWidth(value: number); get LedgerLineWidth(): number; set LedgerLineWidth(value: number); get WedgeLineWidth(): number; set WedgeLineWidth(value: number); get TupletLineWidth(): number; set TupletLineWidth(value: number); get LyricUnderscoreLineWidth(): number; set LyricUnderscoreLineWidth(value: number); get SystemThinLineWidth(): number; set SystemThinLineWidth(value: number); get SystemBoldLineWidth(): number; set SystemBoldLineWidth(value: number); get SystemRepetitionEndingLineWidth(): number; set SystemRepetitionEndingLineWidth(value: number); get SystemDotWidth(): number; set SystemDotWidth(value: number); get DistanceBetweenVerticalSystemLines(): number; set DistanceBetweenVerticalSystemLines(value: number); get DistanceBetweenDotAndLine(): number; set DistanceBetweenDotAndLine(value: number); get OctaveShiftLineWidth(): number; set OctaveShiftLineWidth(value: number); get OctaveShiftVerticalLineLength(): number; set OctaveShiftVerticalLineLength(value: number); get GraceLineWidth(): number; set GraceLineWidth(value: number); get MinimumStaffLineDistance(): number; set MinimumStaffLineDistance(value: number); get MinimumCrossedBeamDifferenceMargin(): number; set MinimumCrossedBeamDifferenceMargin(value: number); get DisplacedNoteMargin(): number; set DisplacedNoteMargin(value: number); get MinNoteDistance(): number; set MinNoteDistance(value: number); get SubMeasureXSpacingThreshold(): number; set SubMeasureXSpacingThreshold(value: number); get MeasureDynamicsMaxScalingFactor(): number; set MeasureDynamicsMaxScalingFactor(value: number); get WholeRestXShiftVexflow(): number; set WholeRestXShiftVexflow(value: number); get MetronomeMarkXShift(): number; set MetronomeMarkXShift(value: number); get MetronomeMarkYShift(): number; set MetronomeMarkYShift(value: number); get MaxInstructionsConstValue(): number; set MaxInstructionsConstValue(value: number); get NoteDistances(): number[]; set NoteDistances(value: number[]); get NoteDistancesScalingFactors(): number[]; set NoteDistancesScalingFactors(value: number[]); get DurationDistanceDict(): { [_: number]: number; }; get DurationScalingDistanceDict(): { [_: number]: number; }; get AlignRests(): number; set AlignRests(value: number); get FillEmptyMeasuresWithWholeRest(): FillEmptyMeasuresWithWholeRests | number; set FillEmptyMeasuresWithWholeRest(value: FillEmptyMeasuresWithWholeRests | number); get ArpeggiosGoAcrossVoices(): boolean; set ArpeggiosGoAcrossVoices(value: boolean); get RenderArpeggios(): boolean; set RenderArpeggios(value: boolean); get RenderSlurs(): boolean; set RenderSlurs(value: boolean); get ColoringMode(): ColoringMode; set ColoringMode(value: ColoringMode); get ColoringEnabled(): boolean; set ColoringEnabled(value: boolean); get ColorStemsLikeNoteheads(): boolean; set ColorStemsLikeNoteheads(value: boolean); get ColorFlags(): boolean; set ColorFlags(value: boolean); get ColorBeams(): boolean; set ColorBeams(value: boolean); get ColoringSetCurrent(): Dictionary<NoteEnum | number, string>; set ColoringSetCurrent(value: Dictionary<NoteEnum | number, string>); get DefaultColorNotehead(): string; set DefaultColorNotehead(value: string); get DefaultColorRest(): string; set DefaultColorRest(value: string); get DefaultColorStem(): string; set DefaultColorStem(value: string); get DefaultColorLabel(): string; set DefaultColorLabel(value: string); get DefaultColorTitle(): string; set DefaultColorTitle(value: string); get DefaultFontFamily(): string; set DefaultFontFamily(value: string); get MaxMeasureToDrawIndex(): number; set MaxMeasureToDrawIndex(value: number); get MinMeasureToDrawIndex(): number; set MinMeasureToDrawIndex(value: number); get RenderComposer(): boolean; set RenderComposer(value: boolean); get RenderTitle(): boolean; set RenderTitle(value: boolean); get RenderSubtitle(): boolean; set RenderSubtitle(value: boolean); get RenderLyricist(): boolean; set RenderLyricist(value: boolean); get RenderPartNames(): boolean; set RenderPartNames(value: boolean); get RenderPartAbbreviations(): boolean; set RenderPartAbbreviations(value: boolean); get RenderFingerings(): boolean; set RenderFingerings(value: boolean); get RenderMeasureNumbers(): boolean; set RenderMeasureNumbers(value: boolean); get RenderLyrics(): boolean; set RenderLyrics(value: boolean); get FingeringPosition(): PlacementEnum; set FingeringPosition(value: PlacementEnum); get FingeringInsideStafflines(): boolean; set FingeringInsideStafflines(value: boolean); set FixStafflineBoundingBox(value: boolean); get FixStafflineBoundingBox(): boolean; get PageFormat(): PageFormat; set PageFormat(value: PageFormat); get PageBackgroundColor(): string; set PageBackgroundColor(value: string); get RenderSingleHorizontalStaffline(): boolean; set RenderSingleHorizontalStaffline(value: boolean); /** * This method maps NoteDurations to Distances and DistancesScalingFactors. */ private populateDictionaries; /** * Calculate Curve-independend factors, to be used later in the Slur- and TieCurvePoints calculation */ private calculateCurveParametersArrays; } export declare class PageFormat { constructor(width: number, height: number, idString?: string); width: number; height: number; idString: string; get aspectRatio(): number; /** Undefined page format: use default page format. */ get IsUndefined(): boolean; static get UndefinedPageFormat(): PageFormat; Equals(otherPageFormat: PageFormat): boolean; }