Browse Source

Removed PlatformSettings class

pull/327/head
Nikita Tsukanov 11 years ago
parent
commit
f327ffcfa1
  1. 15
      src/Android/Perspex.Android/AndroidPlatform.cs
  2. 2
      src/Gtk/Perspex.Gtk/GtkPlatform.cs
  3. 3
      src/Perspex.Application/Application.cs
  4. 19
      src/Perspex.Controls/Platform/PlatformManager.cs
  5. 4
      src/Perspex.Input/Platform/IPlatformSettings.cs
  6. 2
      src/Windows/Perspex.Win32/Win32Platform.cs

15
src/Android/Perspex.Android/AndroidPlatform.cs

@ -18,10 +18,13 @@ namespace Perspex.Android
public static readonly AndroidPlatform Instance = new AndroidPlatform();
public Size DoubleClickSize => new Size(4, 4);
public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(200);
public double RenderScalingFactor => _scalingFactor;
public double LayoutScalingFactor => _scalingFactor;
private readonly double _scalingFactor = 1;
AndroidPlatform()
{
var settings = new PlatformSettings();
PerspexLocator.CurrentMutable
.Bind<IClipboard>().ToTransient<ClipboardImpl>()
.Bind<IStandardCursorFactory>().ToTransient<CursorFactory>()
@ -30,16 +33,14 @@ namespace Perspex.Android
.Bind<IPlatformSettings>().ToConstant(this)
.Bind<IPlatformThreadingInterface>().ToConstant(new AndroidThreadingInterface())
.Bind<ISystemDialogImpl>().ToTransient<SystemDialogImpl>()
.Bind<ITopLevelRenderer>().ToTransient<AndroidTopLevelRenderer>()
.Bind<PlatformSettings>().ToConstant(settings);
.Bind<ITopLevelRenderer>().ToTransient<AndroidTopLevelRenderer>();
SkiaPlatform.Initialize();
Application.SuppressPlatformInitialization();
PerspexLocator.CurrentMutable.Bind<IWindowImpl>().ToSingleton<Platform.SkiaPlatform.MainWindowImpl>();
var scale = global::Android.App.Application.Context.Resources.DisplayMetrics.ScaledDensity;
PerspexLocator.Current.GetService<PlatformSettings>().LayoutScalingFactor = scale;
PerspexLocator.Current.GetService<PlatformSettings>().RenderScalingFactor = scale;
_scalingFactor = global::Android.App.Application.Context.Resources.DisplayMetrics.ScaledDensity;
//we have custom Assetloader so no need to overwrite it

2
src/Gtk/Perspex.Gtk/GtkPlatform.cs

@ -27,6 +27,8 @@ namespace Perspex.Gtk
public Size DoubleClickSize => new Size(4, 4);
public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(Gtk.Settings.Default.DoubleClickTime);
public double RenderScalingFactor { get; } = 1;
public double LayoutScalingFactor { get; } = 1;
public static void Initialize()
{

3
src/Perspex.Application/Application.cs

@ -176,8 +176,7 @@ namespace Perspex
.Bind<IKeyboardNavigationHandler>().ToTransient<KeyboardNavigationHandler>()
.Bind<IStyler>().ToConstant(_styler)
.Bind<ILayoutManager>().ToTransient<LayoutManager>()
.Bind<IRenderQueueManager>().ToTransient<RenderQueueManager>()
.Bind<PlatformSettings>().ToConstant(new PlatformSettings());
.Bind<IRenderQueueManager>().ToTransient<RenderQueueManager>();
}
/// <summary>

19
src/Perspex.Controls/Platform/PlatformManager.cs

@ -13,10 +13,9 @@ namespace Perspex.Controls.Platform
{
public static partial class PlatformManager
{
static PlatformSettings DefaultSettings = new PlatformSettings();
static PlatformSettings GetSettings()
=> PerspexLocator.Current.GetService<PlatformSettings>() ?? DefaultSettings;
static IPlatformSettings GetSettings()
=> PerspexLocator.Current.GetService<IPlatformSettings>();
public static IRenderTarget CreateRenderTarget(ITopLevelImpl window)
{
@ -46,7 +45,7 @@ namespace Perspex.Controls.Platform
{
var cs = _window.ClientSize;
var ctx = _target.CreateDrawingContext();
var factor = GetSettings().RenderScalingFactor;
var factor = GetSettings()?.RenderScalingFactor ?? 1;
if (factor != 1)
{
ctx.PushPostTransform(Matrix.CreateScale(factor, factor));
@ -63,7 +62,7 @@ namespace Perspex.Controls.Platform
private readonly IPopupImpl _popup;
public ITopLevelImpl TopLevel => _tl;
double ScalingFactor => GetSettings().LayoutScalingFactor;
double ScalingFactor => GetSettings()?.LayoutScalingFactor ?? 1;
public WindowDecorator(ITopLevelImpl tl)
{
@ -90,9 +89,7 @@ namespace Perspex.Controls.Platform
{
var mouseEvent = obj as RawMouseEventArgs;
if (mouseEvent != null)
{
mouseEvent.Position /= GetSettings().LayoutScalingFactor;
}
mouseEvent.Position /= ScalingFactor;
//TODO: Transform event coordinates
Input?.Invoke(obj);
}
@ -176,10 +173,4 @@ namespace Perspex.Controls.Platform
return new WindowDecorator(PerspexLocator.Current.GetService<IPopupImpl>());
}
}
public class PlatformSettings
{
public double RenderScalingFactor { get; set; } = 1;
public double LayoutScalingFactor { get; set; } = 1;
}
}

4
src/Perspex.Input/Platform/IPlatformSettings.cs

@ -10,5 +10,9 @@ namespace Perspex.Platform
Size DoubleClickSize { get; }
TimeSpan DoubleClickTime { get; }
double RenderScalingFactor { get; }
double LayoutScalingFactor { get; }
}
}

2
src/Windows/Perspex.Win32/Win32Platform.cs

@ -39,6 +39,8 @@ namespace Perspex.Win32
UnmanagedMethods.GetSystemMetrics(UnmanagedMethods.SystemMetric.SM_CYDOUBLECLK));
public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(UnmanagedMethods.GetDoubleClickTime());
public double RenderScalingFactor { get; } = 1;
public double LayoutScalingFactor { get; } = 1;
private static void InitializeInternal()
{

Loading…
Cancel
Save