|
|
|
@ -17,6 +17,11 @@ namespace MusicBoxConverter
@@ -17,6 +17,11 @@ namespace MusicBoxConverter
|
|
|
|
|
|
|
|
|
|
public float HoleSize { get; set; } = 1f; |
|
|
|
|
|
|
|
|
|
public Vector2 ArrowSize { get; set; } = new Vector2(25, 25); |
|
|
|
|
public float ArrowSpacing { get; set; } = 50f; |
|
|
|
|
public float ArrowStrokeWidth { get; set; } = 8; |
|
|
|
|
public string ArrowColour { get; set; } = "#dacef3"; |
|
|
|
|
|
|
|
|
|
private int trackLength; |
|
|
|
|
public int TrackLength |
|
|
|
|
{ |
|
|
|
@ -73,6 +78,26 @@ namespace MusicBoxConverter
@@ -73,6 +78,26 @@ namespace MusicBoxConverter
|
|
|
|
|
UnitSuffix = "mm" |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// Draw directional arrows down the score
|
|
|
|
|
for (float i = 0; i < area.X; i += ArrowSpacing) |
|
|
|
|
{ |
|
|
|
|
Vector2 arrowPos = new Vector2(i, area.Y / 2 + Offset.Y); |
|
|
|
|
|
|
|
|
|
svg.WriteLine( |
|
|
|
|
arrowPos.Subtract(ArrowSize), |
|
|
|
|
arrowPos, |
|
|
|
|
ArrowColour, |
|
|
|
|
ArrowStrokeWidth |
|
|
|
|
); |
|
|
|
|
svg.WriteLine( |
|
|
|
|
arrowPos, |
|
|
|
|
arrowPos.Subtract(new Vector2(ArrowSize.X, -ArrowSize.Y)), |
|
|
|
|
ArrowColour, |
|
|
|
|
ArrowStrokeWidth |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Draw a marker at the beginning of the score
|
|
|
|
|
svg.WriteRectangle( |
|
|
|
|
new Vector2(Offset.X / 2, Offset.Y), |
|
|
|
@ -115,13 +140,21 @@ namespace MusicBoxConverter
@@ -115,13 +140,21 @@ namespace MusicBoxConverter
|
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Vector2 holePosition = new Vector2( |
|
|
|
|
Offset.X + note.Time * ScaleFactor.X, |
|
|
|
|
Offset.Y + ((SelectedMusicBox.NoteCount - 1) - SelectedMusicBox.NoteToBoxNumber(note)) * ScaleFactor.Y |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
svg.WriteCircle( |
|
|
|
|
new Vector2( |
|
|
|
|
Offset.X + note.Time * ScaleFactor.X, |
|
|
|
|
Offset.Y + ((SelectedMusicBox.NoteCount-1) - SelectedMusicBox.NoteToBoxNumber(note)) * ScaleFactor.Y |
|
|
|
|
), |
|
|
|
|
holePosition, |
|
|
|
|
HoleSize // radius
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
svg.WriteCross( |
|
|
|
|
holePosition, |
|
|
|
|
new Vector2(HoleSize, HoleSize) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
svg.Complete(); |
|
|
|
|