Bladeren bron

fix skyline: fix crash when GraphicalUnknownExpression involved (#768)

sschmid 5 jaren geleden
bovenliggende
commit
5b3887b1ec

+ 14 - 0
src/MusicalScore/Graphical/VexFlow/AlignmentManager.ts

@@ -23,6 +23,20 @@ export class AlignmentManager {
             const currentExpression: AbstractGraphicalExpression = this.parentStaffline.AbstractExpressions[aeIdx];
             const nextExpression: AbstractGraphicalExpression = this.parentStaffline.AbstractExpressions[aeIdx + 1];
 
+            if (currentExpression?.SourceExpression === undefined ||
+                nextExpression?.SourceExpression === undefined) {
+                continue;
+                // TODO: this doesn't work yet for GraphicalUnknownExpression, because it doesn't have an AbstractExpression,
+                //   so it doesn't have a .Placement.
+                //   this lead to if (currentExpression.Placement...) crashing.
+
+                // same result:
+                // if (currentExpression instanceof GraphicalUnknownExpression ||
+                //     nextExpression instanceof GraphicalUnknownExpression) {
+                //         continue;
+                // }
+            }
+
             // TODO this shifts dynamics in An die Ferne Geliebte, showing that there's something wrong with the RelativePositions etc with wedges
             // if (currentExpression instanceof GraphicalContinuousDynamicExpression) {
             //     currentExpression.calcPsi();

+ 2 - 1
src/MusicalScore/Graphical/VexFlow/VexFlowMusicSheetCalculator.ts

@@ -47,7 +47,8 @@ import { VexFlowContinuousDynamicExpression } from "./VexFlowContinuousDynamicEx
 import { InstantaneousTempoExpression } from "../../VoiceData/Expressions";
 import { AlignRestOption } from "../../../OpenSheetMusicDisplay";
 import { VexFlowStaffLine } from "./VexFlowStaffLine";
-import { EngravingRules } from "..";
+import { EngravingRules } from "../EngravingRules";
+import { AlignmentManager } from "./AlignmentManager";
 import { VexflowStafflineNoteCalculator } from "./VexflowStafflineNoteCalculator";
 
 export class VexFlowMusicSheetCalculator extends MusicSheetCalculator {