Pārlūkot izejas kodu

Added some default values and default settings

Matthias 9 gadi atpakaļ
vecāks
revīzija
74f5d53ca7

+ 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;

+ 6 - 2
test/MusicalScore/Graphical/VexFlow/VexFlowMeasure.ts

@@ -6,6 +6,7 @@ import {MusicSheetReader} from "../../../../src/MusicalScore/ScoreIO/MusicSheetR
 import {VexFlowMusicSheetCalculator} from "../../../../src/MusicalScore/Graphical/VexFlow/VexFlowMusicSheetCalculator";
 import {SourceMeasure} from "../../../../src/MusicalScore/VoiceData/SourceMeasure";
 import {StaffMeasure} from "../../../../src/MusicalScore/Graphical/StaffMeasure";
+import {Instrument} from "../../../../src/MusicalScore/Instrument";
 
 
 describe("VexFlow Measure Test", () => {
@@ -39,7 +40,7 @@ describe("VexFlow Measure Test", () => {
 
     it("prepareGraphicalMusicSheet", (done: MochaDone) => {
         let calc: VexFlowMusicSheetCalculator = new VexFlowMusicSheetCalculator();
-        
+
         let path: string = "test/data/MuzioClementi_SonatinaOpus36No1_Part1.xml";
         let doc: Document = ((window as any).__xml__)[path];
         chai.expect(doc).to.not.be.undefined;
@@ -53,7 +54,10 @@ describe("VexFlow Measure Test", () => {
 
     it("Simple Measure", (done: MochaDone) => {
         let sheet: MusicSheet = new MusicSheet();
-        let measure: SourceMeasure = new SourceMeasure(1);
+        let instrument: Instrument = new Instrument(0, "instr", sheet, undefined);
+        instrument.createStaves(1);
+        sheet.Instruments.push(instrument);
+        let measure: SourceMeasure = new SourceMeasure(sheet.getCompleteNumberOfStaves());
         sheet.addMeasure(measure);
         let calc: MusicSheetCalculator = new VexFlowMusicSheetCalculator();
         let gms: GraphicalMusicSheet = new GraphicalMusicSheet(sheet, calc);