Browse Source

Removed obsolete platform detection code in ControlCatalog.

Fixes #659.
pull/660/head
Steven Kirk 10 years ago
parent
commit
e058215085
  1. 92
      samples/ControlCatalog.Desktop/Program.cs

92
samples/ControlCatalog.Desktop/Program.cs

@ -39,96 +39,4 @@ namespace ControlCatalog
.SetDefaultAssembly(typeof(App).Assembly);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Experimental: Would like to move this into a shared location once I figure out the best place for it
// considering all common libraries are PCL and do not have access to Environment.OSVersion.Platform
// nor do they have access to the platform specific render/subsystem extensions.
//
// Perhaps via DI we register each system with a priority/rank
//
public static class RenderSystemExtensions
{
[Flags]
enum RenderSystem
{
None = 0,
GTK = 1,
Skia = 2,
Direct2D = 4
};
/// <summary>
/// Default (Optimal) render system for a particular platform
/// </summary>
/// <returns></returns>
private static RenderSystem DefaultRenderSystem()
{
switch (Environment.OSVersion.Platform)
{
case PlatformID.MacOSX:
return RenderSystem.GTK;
case PlatformID.Unix:
return RenderSystem.GTK;
case PlatformID.Win32Windows:
return RenderSystem.Direct2D;
}
return RenderSystem.None;
}
/// <summary>
/// Returns an array of avalidable rendering systems in priority order
/// </summary>
/// <returns></returns>
private static RenderSystem[] AvailableRenderSystems()
{
switch (Environment.OSVersion.Platform)
{
case PlatformID.MacOSX:
return new RenderSystem[] { RenderSystem.GTK, RenderSystem.Skia };
case PlatformID.Unix:
return new RenderSystem[] { RenderSystem.GTK, RenderSystem.Skia };
case PlatformID.Win32Windows:
return new RenderSystem[] { RenderSystem.Direct2D, RenderSystem.Skia, RenderSystem.GTK };
}
return new RenderSystem[0];
}
/// <summary>
/// Selects the optimal render system for desktop platforms. Supports cmd line overrides
/// </summary>
/// <param name="builder"></param>
/// <param name="args"></param>
public static AppBuilder ConfigureRenderSystem(this AppBuilder builder, string[] args)
{
// So this all works great under Windows where it can support
// ALL configurations. But on OSX/Unix we cannot use Direct2D
if (args.Contains("--gtk") || DefaultRenderSystem() == RenderSystem.GTK)
{
builder.UseGtk();
builder.UseCairo();
}
else
{
builder.UseWin32();
if (args.Contains("--skia") || DefaultRenderSystem() == RenderSystem.Skia)
{
builder.UseSkia();
}
else
{
builder.UseDirect2D1();
}
}
return builder;
}
}
}

Loading…
Cancel
Save