static Environment()
{
RenderEngines = new FastDictionary<string, Func<ICanvas>>();
FileLoaders = new FastDictionary<string, Func<IFileLoader>>();
LayoutEngines = new FastDictionary<string, Func<ScoreRenderer, ScoreLayout>>();
StaveFactories = new FastDictionary<string, Func<ScoreLayout, BarRendererFactory>>();
PlatformInit();
// default layout engines
LayoutEngines["default"] = r => new PageViewLayout(r);
LayoutEngines["page"] = r => new PageViewLayout(r);
LayoutEngines["horizontal"] = r => new HorizontalScreenLayout(r);
// default staves
StaveFactories["marker"] = l => new EffectBarRendererFactory(new MarkerEffectInfo());
StaveFactories["triplet-feel"] = l => new EffectBarRendererFactory(new TripletFeelEffectInfo());
StaveFactories["tempo"] = l => new EffectBarRendererFactory(new TempoEffectInfo());
StaveFactories["text"] = l => new EffectBarRendererFactory(new TextEffectInfo());
StaveFactories["chords"] = l => new EffectBarRendererFactory(new ChordsEffectInfo());
StaveFactories["trill"] = l => new EffectBarRendererFactory(new TrillEffectInfo());
StaveFactories["beat-vibrato"] = l => new EffectBarRendererFactory(new BeatVibratoEffectInfo());
StaveFactories["note-vibrato"] = l => new EffectBarRendererFactory(new NoteVibratoEffectInfo());
StaveFactories["alternate-endings"] = l => new AlternateEndingsBarRendererFactory();
StaveFactories["score"] = l => new ScoreBarRendererFactory();
StaveFactories["crescendo"] = l => new EffectBarRendererFactory(new CrescendoEffectInfo());
StaveFactories["dynamics"] = l => new EffectBarRendererFactory(new DynamicsEffectInfo());
StaveFactories["capo"] = l => new EffectBarRendererFactory(new CapoEffectInfo());
StaveFactories["tap"] = l => new EffectBarRendererFactory(new TapEffectInfo());
StaveFactories["fade-in"] = l => new EffectBarRendererFactory(new FadeInEffectInfo());
StaveFactories["harmonics"] = l => new EffectBarRendererFactory(new HarmonicsEffectInfo());
StaveFactories["let-ring"] = l => new EffectBarRendererFactory(new LetRingEffectInfo());
StaveFactories["palm-mute"] = l => new EffectBarRendererFactory(new PalmMuteEffectInfo());
StaveFactories["tab"] = l => new TabBarRendererFactory();
StaveFactories["pick-stroke"] = l => new EffectBarRendererFactory(new PickStrokeEffectInfo());
StaveFactories["rhythm-up"] = l => new RhythmBarRendererFactory(BeamDirection.Down);
StaveFactories["rhythm-down"] = l => new RhythmBarRendererFactory(BeamDirection.Up);
// staveFactories.set("fingering", functionl { return new EffectBarRendererFactory(new FingeringEffectInfo()); });
}