From f327ffcfa1a16e8c4451cd6de77ec2d6cb79b00f Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Mon, 16 Nov 2015 16:03:11 +0300 Subject: [PATCH] Removed PlatformSettings class --- .../Perspex.Android/AndroidPlatform.cs | 15 ++++++++------- src/Gtk/Perspex.Gtk/GtkPlatform.cs | 2 ++ src/Perspex.Application/Application.cs | 3 +-- .../Platform/PlatformManager.cs | 19 +++++-------------- .../Platform/IPlatformSettings.cs | 4 ++++ src/Windows/Perspex.Win32/Win32Platform.cs | 2 ++ 6 files changed, 22 insertions(+), 23 deletions(-) diff --git a/src/Android/Perspex.Android/AndroidPlatform.cs b/src/Android/Perspex.Android/AndroidPlatform.cs index feb4288c8c..8196571102 100644 --- a/src/Android/Perspex.Android/AndroidPlatform.cs +++ b/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().ToTransient() .Bind().ToTransient() @@ -30,16 +33,14 @@ namespace Perspex.Android .Bind().ToConstant(this) .Bind().ToConstant(new AndroidThreadingInterface()) .Bind().ToTransient() - .Bind().ToTransient() - .Bind().ToConstant(settings); + .Bind().ToTransient(); SkiaPlatform.Initialize(); Application.SuppressPlatformInitialization(); PerspexLocator.CurrentMutable.Bind().ToSingleton(); - var scale = global::Android.App.Application.Context.Resources.DisplayMetrics.ScaledDensity; - PerspexLocator.Current.GetService().LayoutScalingFactor = scale; - PerspexLocator.Current.GetService().RenderScalingFactor = scale; + _scalingFactor = global::Android.App.Application.Context.Resources.DisplayMetrics.ScaledDensity; + //we have custom Assetloader so no need to overwrite it diff --git a/src/Gtk/Perspex.Gtk/GtkPlatform.cs b/src/Gtk/Perspex.Gtk/GtkPlatform.cs index f6190b3330..16ba905589 100644 --- a/src/Gtk/Perspex.Gtk/GtkPlatform.cs +++ b/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() { diff --git a/src/Perspex.Application/Application.cs b/src/Perspex.Application/Application.cs index 20bb7b8a48..d718d76e71 100644 --- a/src/Perspex.Application/Application.cs +++ b/src/Perspex.Application/Application.cs @@ -176,8 +176,7 @@ namespace Perspex .Bind().ToTransient() .Bind().ToConstant(_styler) .Bind().ToTransient() - .Bind().ToTransient() - .Bind().ToConstant(new PlatformSettings()); + .Bind().ToTransient(); } /// diff --git a/src/Perspex.Controls/Platform/PlatformManager.cs b/src/Perspex.Controls/Platform/PlatformManager.cs index e9d813f35d..ba239d1a46 100644 --- a/src/Perspex.Controls/Platform/PlatformManager.cs +++ b/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() ?? DefaultSettings; + static IPlatformSettings GetSettings() + => PerspexLocator.Current.GetService(); 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()); } } - - public class PlatformSettings - { - public double RenderScalingFactor { get; set; } = 1; - public double LayoutScalingFactor { get; set; } = 1; - } } diff --git a/src/Perspex.Input/Platform/IPlatformSettings.cs b/src/Perspex.Input/Platform/IPlatformSettings.cs index d269d01c1c..9b680a388d 100644 --- a/src/Perspex.Input/Platform/IPlatformSettings.cs +++ b/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; } } } diff --git a/src/Windows/Perspex.Win32/Win32Platform.cs b/src/Windows/Perspex.Win32/Win32Platform.cs index 6ce58e5018..e461e95de3 100644 --- a/src/Windows/Perspex.Win32/Win32Platform.cs +++ b/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() {