Explorar o código

fix: implemented showing the current rhythm in any case if there was an end line given in the last system.

Matthias Uiberacker %!s(int64=5) %!d(string=hai) anos
pai
achega
b2b31bff84

+ 7 - 3
src/MusicalScore/Graphical/MusicSystemBuilder.ts

@@ -55,6 +55,7 @@ export class MusicSystemBuilder {
 
     public buildMusicSystems(): MusicSystem[] {
         const systemMaxWidth: number = this.getFullPageSystemWidth();
+        let prevMeasureEndsPart: boolean = false;
         this.measureListIndex = 0;
         this.currentSystemParams = new SystemBuildParameters();
 
@@ -75,7 +76,7 @@ export class MusicSystemBuilder {
                 graphicalMeasures[idx].resetLayout();
             }
             const sourceMeasure: SourceMeasure = graphicalMeasures[0].parentSourceMeasure;
-            const sourceMeasureEndsSystem: boolean = sourceMeasure.BreakSystemAfter;
+            const sourceMeasureEndsPart: boolean = sourceMeasure.HasEndLine;
             const isSystemStartMeasure: boolean = this.currentSystemParams.IsSystemStartMeasure();
             const isFirstSourceMeasure: boolean = sourceMeasure === this.graphicalMusicSheet.ParentMusicSheet.getFirstSourceMeasure();
             let currentMeasureBeginInstructionsWidth: number = this.rules.MeasureLeftMargin;
@@ -89,7 +90,9 @@ export class MusicSystemBuilder {
             const measureStartLine: SystemLinesEnum = this.getMeasureStartLine();
             currentMeasureBeginInstructionsWidth += this.getLineWidth(graphicalMeasures[0], measureStartLine, isSystemStartMeasure);
             if (!this.leadSheet) {
-                currentMeasureBeginInstructionsWidth += this.addBeginInstructions(graphicalMeasures, isSystemStartMeasure, isFirstSourceMeasure);
+                currentMeasureBeginInstructionsWidth += this.addBeginInstructions(  graphicalMeasures,
+                                                                                    isSystemStartMeasure,
+                                                                                    isFirstSourceMeasure || prevMeasureEndsPart);
                 currentMeasureEndInstructionsWidth += this.addEndInstructions(graphicalMeasures);
             }
             let currentMeasureVarWidth: number = 0;
@@ -123,7 +126,7 @@ export class MusicSystemBuilder {
                 );
                 this.updateActiveClefs(sourceMeasure, graphicalMeasures);
                 this.measureListIndex++;
-                if (sourceMeasureEndsSystem) {
+                if (sourceMeasureEndsPart) {
                     this.finalizeCurrentAndCreateNewSystem(graphicalMeasures, true);
                 }
             } else {
@@ -131,6 +134,7 @@ export class MusicSystemBuilder {
                 this.finalizeCurrentAndCreateNewSystem(graphicalMeasures, false, doXmlPageBreak);
                 // don't increase measure index to check this measure now again
             }
+            prevMeasureEndsPart = sourceMeasureEndsPart;
         }
         if (this.currentSystemParams.systemMeasures.length > 0) {
             this.finalizeCurrentAndCreateNewSystem(this.measureList[this.measureList.length - 1], true);

+ 1 - 2
src/MusicalScore/ScoreIO/InstrumentReader.ts

@@ -495,8 +495,7 @@ export class InstrumentReader {
           if (this.repetitionInstructionReader !== undefined) {
            const measureEndsSystem: boolean = this.repetitionInstructionReader.handleLineRepetitionInstructions(xmlNode);
            if (measureEndsSystem) {
-             this.currentMeasure.BreakSystemAfter = true;
-             this.currentMeasure.endsPiece = true;
+             this.currentMeasure.HasEndLine = true;
            }
           }
           const location: IXmlAttribute = xmlNode.attribute("location");

+ 1 - 1
src/MusicalScore/ScoreIO/MusicSheetReader.ts

@@ -147,7 +147,7 @@ export class MusicSheetReader /*implements IMusicSheetReader*/ {
         }
 
         while (couldReadMeasure) {
-            if (this.currentMeasure !== undefined && this.currentMeasure.endsPiece) {
+            if (this.currentMeasure !== undefined && this.currentMeasure.HasEndLine) {
                 sourceMeasureCounter = 0;
             }
             this.currentMeasure = new SourceMeasure(this.completeNumberOfStaves, this.musicSheet.Rules);

+ 6 - 11
src/MusicalScore/VoiceData/SourceMeasure.ts

@@ -27,8 +27,7 @@ export class SourceMeasure {
     constructor(completeNumberOfStaves: number, rules: EngravingRules) {
         this.completeNumberOfStaves = completeNumberOfStaves;
         this.implicitMeasure = false;
-        this.breakSystemAfter = false;
-        this.endsPiece = false;
+        this.hasEndLine = false;
         this.endingBarStyleXml = "";
         this.endingBarStyleEnum = SystemLinesEnum.SingleThin;
         this.firstInstructionsStaffEntries = new Array(completeNumberOfStaves);
@@ -46,10 +45,6 @@ export class SourceMeasure {
      */
     public measureListIndex: number;
     /**
-     * The measure number for showing on the music sheet. Typically starts with 1.
-     */
-    public endsPiece: boolean;
-    /**
      * The style of the ending bar line.
      */
     public endingBarStyleXml: string;
@@ -68,7 +63,7 @@ export class SourceMeasure {
     private tempoExpressions: MultiTempoExpression[] = [];
     private verticalSourceStaffEntryContainers: VerticalSourceStaffEntryContainer[] = [];
     private implicitMeasure: boolean;
-    private breakSystemAfter: boolean;
+    private hasEndLine: boolean;
     private graphicalMeasureErrors: boolean[] = [];
     private firstInstructionsStaffEntries: SourceStaffEntry[];
     private lastInstructionsStaffEntries: SourceStaffEntry[];
@@ -122,12 +117,12 @@ export class SourceMeasure {
         this.implicitMeasure = value;
     }
 
-    public get BreakSystemAfter(): boolean {
-        return this.breakSystemAfter;
+    public get HasEndLine(): boolean {
+        return this.hasEndLine;
     }
 
-    public set BreakSystemAfter(value: boolean) {
-        this.breakSystemAfter = value;
+    public set HasEndLine(value: boolean) {
+        this.hasEndLine = value;
     }
 
     public get StaffLinkedExpressions(): MultiExpression[][] {