瀏覽代碼

Fixed bug in compare function of MultiExpressions/MultiTempoExpressions which led to wrong sorting.

Matthias Uiberacker 5 年之前
父節點
當前提交
8c7bfdafd9

+ 4 - 9
src/MusicalScore/VoiceData/Expressions/MultiExpression.ts

@@ -8,7 +8,7 @@ import {UnknownExpression} from "./UnknownExpression";
 import {AbstractExpression} from "./AbstractExpression";
 import {PlacementEnum} from "./AbstractExpression";
 
-export class MultiExpression /*implements IComparable<MultiExpression>*/ {
+export class MultiExpression {
 
     constructor(sourceMeasure: SourceMeasure, timestamp: Fraction) {
         this.sourceMeasure = sourceMeasure;
@@ -155,18 +155,13 @@ export class MultiExpression /*implements IComparable<MultiExpression>*/ {
         this.addExpressionToEntryList(abstractExpression, prefix);
     }
     public CompareTo(other: MultiExpression): number {
-        if (this.SourceMeasureParent.MeasureNumber > other.SourceMeasureParent.MeasureNumber) {
+        if (this.Timestamp.RealValue > other.Timestamp.RealValue) {
             return 1;
         }
-        if (this.SourceMeasureParent.MeasureNumber < other.SourceMeasureParent.MeasureNumber) {
+        if (this.Timestamp.RealValue < other.Timestamp.RealValue) {
             return -1;
         } else {
-            if (this.Timestamp.RealValue > other.Timestamp.RealValue) { return 1; }
-            if (this.Timestamp.RealValue < other.Timestamp.RealValue) {
-                return -1;
-            } else {
-                return 0;
-            }
+            return 0;
         }
     }
     private addExpressionToEntryList(expression: AbstractExpression, prefix: string): void {

+ 5 - 9
src/MusicalScore/VoiceData/Expressions/MultiTempoExpression.ts

@@ -6,7 +6,7 @@ import {FontStyles} from "../../../Common/Enums/FontStyles";
 import {AbstractTempoExpression} from "./AbstractTempoExpression";
 import {ContinuousTempoExpression} from "./ContinuousExpressions/ContinuousTempoExpression";
 
-export class MultiTempoExpression /*implements IComparable<MultiTempoExpression>*/ {
+export class MultiTempoExpression {
 
     constructor(sourceMeasure: SourceMeasure, timestamp: Fraction) {
         this.sourceMeasure = sourceMeasure;
@@ -93,17 +93,13 @@ export class MultiTempoExpression /*implements IComparable<MultiTempoExpression>
         this.expressions.push(tempoExpressionEntry);
     }
     public CompareTo(other: MultiTempoExpression): number {
-        if (this.SourceMeasureParent.MeasureNumber > other.SourceMeasureParent.MeasureNumber) {
+        if (this.Timestamp.RealValue > other.Timestamp.RealValue) {
             return 1;
-        } else if (this.SourceMeasureParent.MeasureNumber < other.SourceMeasureParent.MeasureNumber) {
+        }
+        if (this.Timestamp.RealValue < other.Timestamp.RealValue) {
             return -1;
         } else {
-            if (this.Timestamp.RealValue > other.Timestamp.RealValue) { return 1; }
-            if (this.Timestamp.RealValue < other.Timestamp.RealValue) {
-                return -1;
-            } else {
-                return 0;
-            }
+            return 0;
         }
     }
 }