private void CreateKeySignatureGlyphs()
{
int offsetClef = 0;
int currentKey = Bar.MasterBar.KeySignature;
int previousKey = Bar.PreviousBar == null ? 0 : Bar.PreviousBar.MasterBar.KeySignature;
switch (Bar.Clef)
{
case Clef.Neutral:
offsetClef = 0;
break;
case Clef.G2:
offsetClef = 1;
break;
case Clef.F4:
offsetClef = 2;
break;
case Clef.C3:
offsetClef = -1;
break;
case Clef.C4:
offsetClef = 1;
break;
}
// naturalize previous key
// TODO: only naturalize the symbols needed
var naturalizeSymbols = Math.Abs(previousKey);
var previousKeyPositions = ModelUtils.KeySignatureIsSharp(previousKey) ? SharpKsSteps : FlatKsSteps;
for (var i = 0; i < naturalizeSymbols; i++)
{
AddPreBeatGlyph(new NaturalizeGlyph(0, GetScoreY(previousKeyPositions[i] + offsetClef)));
}
// how many symbols do we need to get from a C-keysignature
// to the new one
//var offsetSymbols = (currentKey <= 7) ? currentKey : currentKey - 7;
// a sharp keysignature
if (ModelUtils.KeySignatureIsSharp(currentKey))
{
for (var i = 0; i < Math.Abs(currentKey); i++)
{
AddPreBeatGlyph(new SharpGlyph(0, GetScoreY(SharpKsSteps[i] + offsetClef)));
}
}
// a flat signature
else
{
for (var i = 0; i < Math.Abs(currentKey); i++)
{
AddPreBeatGlyph(new FlatGlyph(0, GetScoreY(FlatKsSteps[i] + offsetClef)));
}
}
}