Selaa lähdekoodia

Merge branch 'feature/OSMD-6_Porting' of https://github.com/opensheetmusicdisplay/opensheetmusicdisplay into feature/OSMD-6_Porting

Andrea Condoluci 9 vuotta sitten
vanhempi
commit
6d80bec03c

+ 10 - 5
src/MusicalScore/Graphical/GraphicalMusicSheet.ts

@@ -9,7 +9,7 @@ import {MusicSystem} from "./MusicSystem";
 import {GraphicalStaffEntry} from "./GraphicalStaffEntry";
 import {SourceStaffEntry} from "../VoiceData/SourceStaffEntry";
 import {PointF2D} from "../../Common/DataObjects/PointF2D";
-import {ClefInstruction} from "../VoiceData/Instructions/ClefInstruction";
+import {ClefInstruction, ClefEnum} from "../VoiceData/Instructions/ClefInstruction";
 import {AbstractNotationInstruction} from "../VoiceData/Instructions/AbstractNotationInstruction";
 import {KeyInstruction} from "../VoiceData/Instructions/KeyInstruction";
 import {Fraction} from "../../Common/DataObjects/fraction";
@@ -254,12 +254,17 @@ export class GraphicalMusicSheet {
         let firstSourceMeasure: SourceMeasure = this.musicSheet.getFirstSourceMeasure();
         if (firstSourceMeasure !== undefined) {
             for (let i: number = 0; i < firstSourceMeasure.CompleteNumberOfStaves; i++) {
-                for (let idx: number = 0, len: number = firstSourceMeasure.FirstInstructionsStaffEntries[i].Instructions.length; idx < len; ++idx) {
-                    let abstractNotationInstruction: AbstractNotationInstruction = firstSourceMeasure.FirstInstructionsStaffEntries[i].Instructions[idx];
-                    if (abstractNotationInstruction instanceof ClefInstruction) {
-                        activeClefs.push(<ClefInstruction>abstractNotationInstruction);
+                let clef: ClefInstruction = new ClefInstruction();
+                if (firstSourceMeasure.FirstInstructionsStaffEntries[i] !== undefined) {
+                    for (let idx: number = 0, len: number = firstSourceMeasure.FirstInstructionsStaffEntries[i].Instructions.length; idx < len; ++idx) {
+                        let abstractNotationInstruction: AbstractNotationInstruction = firstSourceMeasure.FirstInstructionsStaffEntries[i].Instructions[idx];
+                        if (abstractNotationInstruction instanceof ClefInstruction) {
+                            clef = <ClefInstruction>abstractNotationInstruction;
+
+                        }
                     }
                 }
+                activeClefs.push(clef);
             }
         }
         return activeClefs;

+ 9 - 7
src/MusicalScore/Graphical/MusicSheetCalculator.ts

@@ -832,13 +832,15 @@ export abstract class MusicSheetCalculator {
         let firstSourceMeasure: SourceMeasure = this.graphicalMusicSheet.ParentMusicSheet.getFirstSourceMeasure();
         if (firstSourceMeasure !== undefined) {
             for (let i: number = 0; i < firstSourceMeasure.CompleteNumberOfStaves; i++) {
-                for (let idx: number = 0, len: number = firstSourceMeasure.FirstInstructionsStaffEntries[i].Instructions.length; idx < len; ++idx) {
-                    let abstractNotationInstruction: AbstractNotationInstruction = firstSourceMeasure.FirstInstructionsStaffEntries[i].Instructions[idx];
-                    if (abstractNotationInstruction instanceof KeyInstruction) {
-                        let keyInstruction: KeyInstruction = <KeyInstruction>abstractNotationInstruction;
-                        let accidentalCalculator: AccidentalCalculator = new AccidentalCalculator(this.symbolFactory);
-                        accidentalCalculator.ActiveKeyInstruction = keyInstruction;
-                        accidentalCalculators.push(accidentalCalculator);
+                let accidentalCalculator: AccidentalCalculator = new AccidentalCalculator(this.symbolFactory);
+                accidentalCalculators.push(accidentalCalculator);
+                if (firstSourceMeasure.FirstInstructionsStaffEntries[i] !== undefined) {
+                    for (let idx: number = 0, len: number = firstSourceMeasure.FirstInstructionsStaffEntries[i].Instructions.length; idx < len; ++idx) {
+                        let abstractNotationInstruction: AbstractNotationInstruction = firstSourceMeasure.FirstInstructionsStaffEntries[i].Instructions[idx];
+                        if (abstractNotationInstruction instanceof KeyInstruction) {
+                            let keyInstruction: KeyInstruction = <KeyInstruction>abstractNotationInstruction;
+                            accidentalCalculator.ActiveKeyInstruction = keyInstruction;
+                        }
                     }
                 }
             }

+ 1 - 1
src/MusicalScore/VoiceData/Instructions/ClefInstruction.ts

@@ -5,7 +5,7 @@ import {AccidentalEnum} from "../../../Common/DataObjects/pitch";
 import {ArgumentOutOfRangeException} from "../../Exceptions";
 
 export class ClefInstruction extends AbstractNotationInstruction {
-  constructor(clefType: ClefEnum, octaveOffset: number, line: number) {
+  constructor(clefType: ClefEnum = ClefEnum.G, octaveOffset: number = 0, line: number = 2) {
     super(undefined); // FIXME? Missing SourceStaffEntry!
     this.line = line;
     this.clefType = clefType;