1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import {GraphicalMeasure} from "./GraphicalMeasure";
- import {StaffLine} from "./StaffLine";
- import {MusicSystem} from "./MusicSystem";
- import {SystemLinePosition} from "./SystemLinePosition";
- import {SystemLinesEnum} from "./SystemLinesEnum";
- import {BoundingBox} from "./BoundingBox";
- import {GraphicalObject} from "./GraphicalObject";
- import {EngravingRules} from "./EngravingRules";
- export class SystemLine extends GraphicalObject {
- constructor(lineType: SystemLinesEnum, linePosition: SystemLinePosition, musicSystem: MusicSystem,
- topMeasure: GraphicalMeasure, bottomMeasure: GraphicalMeasure = undefined) {
- super();
- this.lineType = lineType;
- this.linePosition = linePosition;
- this.parentMusicSystem = musicSystem;
- this.topMeasure = topMeasure;
- this.bottomMeasure = bottomMeasure;
- this.parentTopStaffLine = topMeasure.ParentStaffLine;
- this.boundingBox = new BoundingBox(this, musicSystem.PositionAndShape);
- }
- public lineType: SystemLinesEnum;
- public linePosition: SystemLinePosition;
- public parentMusicSystem: MusicSystem;
- public parentTopStaffLine: StaffLine;
- public topMeasure: GraphicalMeasure;
- public bottomMeasure: GraphicalMeasure;
- /**
- * Return the width of the SystemLinesContainer for the given SystemLineType.
- * @param rules
- * @param systemLineType
- * @returns {number}
- */
- public static getObjectWidthForLineType(rules: EngravingRules, systemLineType: SystemLinesEnum): number {
- switch (systemLineType) {
- case SystemLinesEnum.SingleThin:
- return rules.SystemThinLineWidth;
- case SystemLinesEnum.DoubleThin:
- return rules.SystemThinLineWidth * 2 + rules.DistanceBetweenVerticalSystemLines;
- case SystemLinesEnum.ThinBold:
- return rules.SystemThinLineWidth + rules.SystemBoldLineWidth + rules.DistanceBetweenVerticalSystemLines;
- case SystemLinesEnum.BoldThinDots:
- return rules.SystemThinLineWidth + rules.SystemBoldLineWidth + rules.DistanceBetweenVerticalSystemLines + rules.SystemDotWidth +
- rules.DistanceBetweenDotAndLine;
- case SystemLinesEnum.DotsThinBold:
- return rules.SystemThinLineWidth + rules.SystemBoldLineWidth + rules.DistanceBetweenVerticalSystemLines + rules.SystemDotWidth +
- rules.DistanceBetweenDotAndLine;
- case SystemLinesEnum.DotsBoldBoldDots:
- return 2 * rules.SystemBoldLineWidth + 2 * rules.SystemDotWidth + 2 * rules.DistanceBetweenDotAndLine +
- rules.DistanceBetweenVerticalSystemLines;
- default:
- return 0;
- }
- }
- }
|