From c222070d84626495db9bca870afb113ac67ec35f Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 14 Jun 2019 11:31:08 +0300 Subject: [PATCH 001/354] Added IPropertyInfo and use it in IProvideValueTarget when possible --- src/Avalonia.Base/AvaloniaProperty.cs | 8 +- .../Data/Core/ClrPropertyInfo.cs | 70 +++++++++ src/Avalonia.Base/Data/Core/IPropertyInfo.cs | 11 ++ .../XamlCompilerTaskExecutor.cs | 9 +- .../Avalonia.Markup.Xaml.csproj | 2 + .../XamlIl/AvaloniaXamlIlRuntimeCompiler.cs | 11 +- .../AvaloniaXamlIlCompiler.cs | 6 +- .../AvaloniaXamlIlCompilerConfiguration.cs | 21 +++ .../AvaloniaXamlIlLanguage.cs | 2 +- .../AvaloniaXamlIlWellKnownTypes.cs | 42 +++-- .../XamlIlAvaloniaPropertyHelper.cs | 14 ++ .../XamlIlClrPropertyInfoHelper.cs | 147 ++++++++++++++++++ .../Avalonia.Markup.Xaml/XamlIl/xamlil.github | 2 +- .../Xaml/XamlIlTests.cs | 30 ++++ 14 files changed, 348 insertions(+), 27 deletions(-) create mode 100644 src/Avalonia.Base/Data/Core/ClrPropertyInfo.cs create mode 100644 src/Avalonia.Base/Data/Core/IPropertyInfo.cs create mode 100644 src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompilerConfiguration.cs create mode 100644 src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs diff --git a/src/Avalonia.Base/AvaloniaProperty.cs b/src/Avalonia.Base/AvaloniaProperty.cs index 1de5cb06c60..3e70f549f3c 100644 --- a/src/Avalonia.Base/AvaloniaProperty.cs +++ b/src/Avalonia.Base/AvaloniaProperty.cs @@ -7,6 +7,7 @@ using System.Reactive.Subjects; using System.Reflection; using Avalonia.Data; +using Avalonia.Data.Core; using Avalonia.Utilities; namespace Avalonia @@ -14,7 +15,7 @@ namespace Avalonia /// /// Base class for avalonia properties. /// - public class AvaloniaProperty : IEquatable + public class AvaloniaProperty : IEquatable, IPropertyInfo { /// /// Represents an unset property value. @@ -546,7 +547,10 @@ private static Func Cast(Func true; + bool IPropertyInfo.CanSet => true; + object IPropertyInfo.Get(object target) => ((AvaloniaObject)target).GetValue(this); + void IPropertyInfo.Set(object target, object value) => ((AvaloniaObject)target).SetValue(this, value); } /// /// Class representing the . diff --git a/src/Avalonia.Base/Data/Core/ClrPropertyInfo.cs b/src/Avalonia.Base/Data/Core/ClrPropertyInfo.cs new file mode 100644 index 00000000000..05059b66173 --- /dev/null +++ b/src/Avalonia.Base/Data/Core/ClrPropertyInfo.cs @@ -0,0 +1,70 @@ +using System; +using System.Linq.Expressions; +using System.Reflection; + +namespace Avalonia.Data.Core +{ + public class ClrPropertyInfo : IPropertyInfo + { + private readonly Func _getter; + private readonly Action _setter; + + public ClrPropertyInfo(string name, Func getter, Action setter) + { + _getter = getter; + _setter = setter; + Name = name; + } + + public string Name { get; } + public object Get(object target) + { + if (_getter == null) + throw new NotSupportedException("Property " + Name + " doesn't have a getter"); + return _getter(target); + } + + public void Set(object target, object value) + { + if (_setter == null) + throw new NotSupportedException("Property " + Name + " doesn't have a setter"); + _setter(target, value); + } + + public bool CanSet => _setter != null; + public bool CanGet => _getter != null; + } + + public class ReflectionClrPropertyInfo : ClrPropertyInfo + { + static Action CreateSetter(PropertyInfo info) + { + if (info.SetMethod == null) + return null; + var target = Expression.Parameter(typeof(object), "target"); + var value = Expression.Parameter(typeof(object), "value"); + return Expression.Lambda>( + Expression.Call(Expression.Convert(target, info.DeclaringType), info.SetMethod, + Expression.Convert(value, info.SetMethod.GetParameters()[0].ParameterType)), + target, value) + .Compile(); + } + + static Func CreateGetter(PropertyInfo info) + { + if (info.GetMethod == null) + return null; + var target = Expression.Parameter(typeof(object), "target"); + return Expression.Lambda>( + Expression.Convert(Expression.Call(Expression.Convert(target, info.DeclaringType), info.GetMethod), + typeof(object))) + .Compile(); + } + + public ReflectionClrPropertyInfo(PropertyInfo info) : base(info.Name, + CreateGetter(info), CreateSetter(info)) + { + + } + } +} diff --git a/src/Avalonia.Base/Data/Core/IPropertyInfo.cs b/src/Avalonia.Base/Data/Core/IPropertyInfo.cs new file mode 100644 index 00000000000..530b98d08bc --- /dev/null +++ b/src/Avalonia.Base/Data/Core/IPropertyInfo.cs @@ -0,0 +1,11 @@ +namespace Avalonia.Data.Core +{ + public interface IPropertyInfo + { + string Name { get; } + object Get(object target); + void Set(object target, object value); + bool CanSet { get; } + bool CanGet { get; } + } +} diff --git a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs index c54d8e19a1b..4981b279590 100644 --- a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs +++ b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs @@ -49,13 +49,18 @@ public static CompileResult Compile(IBuildEngine engine, string input, string[] if (avares.Resources.Count(CheckXamlName) == 0 && emres.Resources.Count(CheckXamlName) == 0) // Nothing to do return new CompileResult(true); + + var clrPropertiesDef = new TypeDefinition("CompiledAvaloniaXaml", "XamlIlHelpers", + TypeAttributes.Class, asm.MainModule.TypeSystem.Object); + asm.MainModule.Types.Add(clrPropertiesDef); var xamlLanguage = AvaloniaXamlIlLanguage.Configure(typeSystem); - var compilerConfig = new XamlIlTransformerConfiguration(typeSystem, + var compilerConfig = new AvaloniaXamlIlCompilerConfiguration(typeSystem, typeSystem.TargetAssembly, xamlLanguage, XamlIlXmlnsMappings.Resolve(typeSystem, xamlLanguage), - AvaloniaXamlIlLanguage.CustomValueConverter); + AvaloniaXamlIlLanguage.CustomValueConverter, + new XamlIlClrPropertyInfoEmitter(typeSystem.CreateTypeBuilder(clrPropertiesDef))); var contextDef = new TypeDefinition("CompiledAvaloniaXaml", "XamlIlContext", diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index 6f3dabd568b..91d0feedfb8 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -38,6 +38,7 @@ + @@ -55,6 +56,7 @@ + diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs index 167b75603f2..5f95ae55a9b 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs @@ -114,11 +114,15 @@ static object LoadSreCore(string xaml, Assembly localAssembly, object rootInstan InitializeSre(); var asm = localAssembly == null ? null : _sreTypeSystem.GetAssembly(localAssembly); + + var tb = _sreBuilder.DefineType("Builder_" + Guid.NewGuid().ToString("N") + "_" + uri); + var clrPropertyBuilder = tb.DefineNestedType("ClrProperties_" + Guid.NewGuid().ToString("N")); - var compiler = new AvaloniaXamlIlCompiler(new XamlIlTransformerConfiguration(_sreTypeSystem, asm, - _sreMappings, _sreXmlns, AvaloniaXamlIlLanguage.CustomValueConverter), + var compiler = new AvaloniaXamlIlCompiler(new AvaloniaXamlIlCompilerConfiguration(_sreTypeSystem, asm, + _sreMappings, _sreXmlns, AvaloniaXamlIlLanguage.CustomValueConverter, + new XamlIlClrPropertyInfoEmitter(_sreTypeSystem.CreateTypeBuilder(clrPropertyBuilder))), _sreContextType); - var tb = _sreBuilder.DefineType("Builder_" + Guid.NewGuid().ToString("N") + "_" + uri); + IXamlIlType overrideType = null; if (rootInstance != null) @@ -129,6 +133,7 @@ static object LoadSreCore(string xaml, Assembly localAssembly, object rootInstan compiler.IsDesignMode = isDesignMode; compiler.ParseAndCompile(xaml, uri?.ToString(), null, _sreTypeSystem.CreateTypeBuilder(tb), overrideType); var created = tb.CreateTypeInfo(); + clrPropertyBuilder.CreateTypeInfo(); return LoadOrPopulate(created, rootInstance); } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs index b84f50fa8de..0d0b0e69673 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs @@ -16,7 +16,7 @@ class AvaloniaXamlIlCompiler : XamlIlCompiler private readonly IXamlIlType _contextType; private readonly AvaloniaXamlIlDesignPropertiesTransformer _designTransformer; - private AvaloniaXamlIlCompiler(XamlIlTransformerConfiguration configuration) : base(configuration, true) + private AvaloniaXamlIlCompiler(AvaloniaXamlIlCompilerConfiguration configuration) : base(configuration, true) { _configuration = configuration; @@ -57,14 +57,14 @@ void InsertBefore(params IXamlIlAstTransformer[] t) } - public AvaloniaXamlIlCompiler(XamlIlTransformerConfiguration configuration, + public AvaloniaXamlIlCompiler(AvaloniaXamlIlCompilerConfiguration configuration, IXamlIlTypeBuilder contextTypeBuilder) : this(configuration) { _contextType = CreateContextType(contextTypeBuilder); } - public AvaloniaXamlIlCompiler(XamlIlTransformerConfiguration configuration, + public AvaloniaXamlIlCompiler(AvaloniaXamlIlCompilerConfiguration configuration, IXamlIlType contextType) : this(configuration) { _contextType = contextType; diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompilerConfiguration.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompilerConfiguration.cs new file mode 100644 index 00000000000..26965ffea49 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompilerConfiguration.cs @@ -0,0 +1,21 @@ +using XamlIl.Transform; +using XamlIl.TypeSystem; + +namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions +{ + class AvaloniaXamlIlCompilerConfiguration : XamlIlTransformerConfiguration + { + public XamlIlClrPropertyInfoEmitter ClrPropertyEmitter { get; } + + public AvaloniaXamlIlCompilerConfiguration(IXamlIlTypeSystem typeSystem, + IXamlIlAssembly defaultAssembly, + XamlIlLanguageTypeMappings typeMappings, + XamlIlXmlnsMappings xmlnsMappings, + XamlIlValueConverter customValueConverter, + XamlIlClrPropertyInfoEmitter clrPropertyEmitter) : base(typeSystem, defaultAssembly, typeMappings, xmlnsMappings, customValueConverter) + { + ClrPropertyEmitter = clrPropertyEmitter; + AddExtra(ClrPropertyEmitter); + } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlLanguage.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlLanguage.cs index c25e1186d07..dad69da3bea 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlLanguage.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlLanguage.cs @@ -50,7 +50,7 @@ public static XamlIlLanguageTypeMappings Configure(IXamlIlTypeSystem typeSystem) }, InnerServiceProviderFactoryMethod = runtimeHelpers.FindMethod(m => m.Name == "CreateInnerServiceProviderV1"), - ProvideValueTargetPropertyEmitter = XamlIlAvaloniaPropertyHelper.Emit, + ProvideValueTargetPropertyEmitter = XamlIlAvaloniaPropertyHelper.EmitProvideValueTarget, }; rv.CustomAttributeResolver = new AttributeResolver(typeSystem, rv); return rv; diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs index c054e573806..4c118899dcc 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs @@ -19,26 +19,30 @@ class AvaloniaXamlIlWellKnownTypes public IXamlIlType Transitions { get; } public IXamlIlType AssignBindingAttribute { get; } public IXamlIlType UnsetValueType { get; } + public IXamlIlType IPropertyInfo { get; } + public IXamlIlType ClrPropertyInfo { get; } - public AvaloniaXamlIlWellKnownTypes(XamlIlAstTransformationContext ctx) + public AvaloniaXamlIlWellKnownTypes(XamlIlTransformerConfiguration cfg) { - XamlIlTypes = ctx.Configuration.WellKnownTypes; - AvaloniaObject = ctx.Configuration.TypeSystem.GetType("Avalonia.AvaloniaObject"); - IAvaloniaObject = ctx.Configuration.TypeSystem.GetType("Avalonia.IAvaloniaObject"); - AvaloniaObjectExtensions = ctx.Configuration.TypeSystem.GetType("Avalonia.AvaloniaObjectExtensions"); - AvaloniaProperty = ctx.Configuration.TypeSystem.GetType("Avalonia.AvaloniaProperty"); - AvaloniaPropertyT = ctx.Configuration.TypeSystem.GetType("Avalonia.AvaloniaProperty`1"); - BindingPriority = ctx.Configuration.TypeSystem.GetType("Avalonia.Data.BindingPriority"); - IBinding = ctx.Configuration.TypeSystem.GetType("Avalonia.Data.IBinding"); - IDisposable = ctx.Configuration.TypeSystem.GetType("System.IDisposable"); - Transitions = ctx.Configuration.TypeSystem.GetType("Avalonia.Animation.Transitions"); - AssignBindingAttribute = ctx.Configuration.TypeSystem.GetType("Avalonia.Data.AssignBindingAttribute"); + XamlIlTypes = cfg.WellKnownTypes; + AvaloniaObject = cfg.TypeSystem.GetType("Avalonia.AvaloniaObject"); + IAvaloniaObject = cfg.TypeSystem.GetType("Avalonia.IAvaloniaObject"); + AvaloniaObjectExtensions = cfg.TypeSystem.GetType("Avalonia.AvaloniaObjectExtensions"); + AvaloniaProperty = cfg.TypeSystem.GetType("Avalonia.AvaloniaProperty"); + AvaloniaPropertyT = cfg.TypeSystem.GetType("Avalonia.AvaloniaProperty`1"); + BindingPriority = cfg.TypeSystem.GetType("Avalonia.Data.BindingPriority"); + IBinding = cfg.TypeSystem.GetType("Avalonia.Data.IBinding"); + IDisposable = cfg.TypeSystem.GetType("System.IDisposable"); + Transitions = cfg.TypeSystem.GetType("Avalonia.Animation.Transitions"); + AssignBindingAttribute = cfg.TypeSystem.GetType("Avalonia.Data.AssignBindingAttribute"); AvaloniaObjectBindMethod = AvaloniaObjectExtensions.FindMethod("Bind", IDisposable, false, IAvaloniaObject, AvaloniaProperty, - IBinding, ctx.Configuration.WellKnownTypes.Object); - UnsetValueType = ctx.Configuration.TypeSystem.GetType("Avalonia.UnsetValueType"); + IBinding, cfg.WellKnownTypes.Object); + UnsetValueType = cfg.TypeSystem.GetType("Avalonia.UnsetValueType"); AvaloniaObjectSetValueMethod = AvaloniaObject.FindMethod("SetValue", XamlIlTypes.Void, false, AvaloniaProperty, XamlIlTypes.Object, BindingPriority); + IPropertyInfo = cfg.TypeSystem.GetType("Avalonia.Data.Core.IPropertyInfo"); + ClrPropertyInfo = cfg.TypeSystem.GetType("Avalonia.Data.Core.ClrPropertyInfo"); } } @@ -48,7 +52,15 @@ public static AvaloniaXamlIlWellKnownTypes GetAvaloniaTypes(this XamlIlAstTransf { if (ctx.TryGetItem(out var rv)) return rv; - ctx.SetItem(rv = new AvaloniaXamlIlWellKnownTypes(ctx)); + ctx.SetItem(rv = new AvaloniaXamlIlWellKnownTypes(ctx.Configuration)); + return rv; + } + + public static AvaloniaXamlIlWellKnownTypes GetAvaloniaTypes(this XamlIlEmitContext ctx) + { + if (ctx.TryGetItem(out var rv)) + return rv; + ctx.SetItem(rv = new AvaloniaXamlIlWellKnownTypes(ctx.Configuration)); return rv; } } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs index 6fc83cb5a5f..e0783364dba 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs @@ -15,6 +15,20 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions { class XamlIlAvaloniaPropertyHelper { + public static bool EmitProvideValueTarget(XamlIlEmitContext context, IXamlIlEmitter emitter, + XamlIlAstClrProperty property) + { + if (Emit(context, emitter, property)) + return true; + var foundClr = property.DeclaringType.Properties.FirstOrDefault(p => p.Name == property.Name); + if (foundClr == null) + return false; + context + .Configuration.GetExtra() + .Emit(context, emitter, foundClr); + return true; + } + public static bool Emit(XamlIlEmitContext context, IXamlIlEmitter emitter, XamlIlAstClrProperty property) { if (property is IXamlIlAvaloniaProperty ap) diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs new file mode 100644 index 00000000000..5b681e94a93 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs @@ -0,0 +1,147 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers; +using XamlIl.Ast; +using XamlIl.Transform; +using XamlIl.TypeSystem; + +namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions +{ + class XamlIlClrPropertyInfoHelper + { + + class ClrPropertyInfoNode : XamlIlAstNode, IXamlIlAstValueNode + { + public ClrPropertyInfoNode(AvaloniaXamlIlWellKnownTypes types, IXamlIlLineInfo lineInfo) : + base(lineInfo) + { + Type = new XamlIlAstClrTypeReference(this, types.XamlIlTypes.Object, false); + } + + public IXamlIlAstTypeReference Type { get; } + } + } + + class XamlIlClrPropertyInfoEmitter + { + private readonly IXamlIlTypeBuilder _builder; + + private Dictionary> _fields + = new Dictionary>(); + + public XamlIlClrPropertyInfoEmitter(IXamlIlTypeBuilder builder) + { + _builder = builder; + } + + static string GetKey(IXamlIlProperty property) + => property.Getter.DeclaringType.GetFullName() + "." + property.Name; + + public IXamlIlType Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen, IXamlIlProperty property) + { + var types = context.GetAvaloniaTypes(); + IXamlIlMethod Get() + { + var key = GetKey(property); + if (!_fields.TryGetValue(key, out var lst)) + _fields[key] = lst = new List<(IXamlIlProperty prop, IXamlIlMethod get)>(); + + foreach (var cached in lst) + { + if ( + ((cached.prop.Getter == null && property.Getter == null) || + cached.prop.Getter?.Equals(property.Getter) == true) && + ((cached.prop.Setter == null && property.Setter == null) || + cached.prop.Setter?.Equals(property.Setter) == true) + ) + return cached.get; + } + + var name = lst.Count == 0 ? key : key + "_" + Guid.NewGuid().ToString("N"); + + var field = _builder.DefineField(types.IPropertyInfo, name + "!Field", false, true); + + var getter = property.Getter == null ? + null : + _builder.DefineMethod(types.XamlIlTypes.Object, + new[] {types.XamlIlTypes.Object}, name + "!Getter", false, true, false); + if (getter != null) + { + getter.Generator + .Ldarg_0() + .Castclass(property.Getter.DeclaringType) + .EmitCall(property.Getter); + if (property.Getter.ReturnType.IsValueType) + getter.Generator.Box(property.Getter.ReturnType); + getter.Generator.Ret(); + } + + var setter = property.Setter == null ? + null : + _builder.DefineMethod(types.XamlIlTypes.Void, + new[] {types.XamlIlTypes.Object, types.XamlIlTypes.Object}, + name + "!Setter", false, true, false); + if (setter != null) + { + setter.Generator + .Ldarg_0() + .Castclass(property.Setter.DeclaringType) + .Ldarg(1); + if (property.Setter.Parameters[0].IsValueType) + setter.Generator.Unbox_Any(property.Setter.Parameters[0]); + else + setter.Generator.Castclass(property.Setter.Parameters[0]); + setter.Generator + .EmitCall(property.Setter, true) + .Ret(); + } + + var get = _builder.DefineMethod(types.IPropertyInfo, Array.Empty(), + name + "!Property", true, true, false); + + + var ctor = types.ClrPropertyInfo.Constructors.First(c => + c.Parameters.Count == 3 && c.IsStatic == false); + + var cacheMiss = get.Generator.DefineLabel(); + get.Generator + .Ldsfld(field) + .Brfalse(cacheMiss) + .Ldsfld(field) + .Ret() + .MarkLabel(cacheMiss) + .Ldstr(property.Name); + + void EmitFunc(IXamlIlEmitter emitter, IXamlIlMethod method, IXamlIlType del) + { + if (method == null) + emitter.Ldnull(); + else + { + emitter + .Ldnull() + .Ldftn(method) + .Newobj(del.Constructors.First(c => + c.Parameters.Count == 2 && + c.Parameters[0].Equals(context.Configuration.WellKnownTypes.Object))); + } + } + + EmitFunc(get.Generator, getter, ctor.Parameters[1]); + EmitFunc(get.Generator, setter, ctor.Parameters[2]); + get.Generator + .Newobj(ctor) + .Stsfld(field) + .Ldsfld(field) + .Ret(); + + lst.Add((property, get)); + return get; + } + + codeGen.EmitCall(Get()); + return types.IPropertyInfo; + } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github b/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github index 610cda30c69..3ea474b672f 160000 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github @@ -1 +1 @@ -Subproject commit 610cda30c69e32e83c8235060606480904c937bc +Subproject commit 3ea474b672ff63629300c36a9644caac2b74a1f2 diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs index 5398e76f631..913dd754f11 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs @@ -7,6 +7,7 @@ using Avalonia.Controls; using Avalonia.Controls.Presenters; using Avalonia.Data.Converters; +using Avalonia.Data.Core; using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.Media; @@ -234,6 +235,17 @@ public void Attached_Properties_From_Static_Types_Should_Work_In_Style_Setters_B Assert.Equal(100, XamlIlBugTestsStaticClassWithAttachedProperty.GetTestInt(tb)); } } + + [Fact] + public void Provide_Value_Target_Should_Provide_Clr_Property_Info() + { + var parsed = AvaloniaXamlLoader.Parse(@" +", typeof(XamlIlClassWithClrPropertyWithValue).Assembly); + Assert.Equal(6, parsed.Count); + } } public class XamlIlBugTestsEventHandlerCodeBehind : Window @@ -314,4 +326,22 @@ public static int GetTestInt(Control control) return (int)control.GetValue(TestIntProperty); } } + + public class XamlIlCheckClrPropertyInfoExtension + { + public string ExpectedPropertyName { get; set; } + + public object ProvideValue(IServiceProvider prov) + { + var pvt = prov.GetService(); + var info = (ClrPropertyInfo)pvt.TargetProperty; + var v = (int)info.Get(pvt.TargetObject); + return v + 1; + } + } + + public class XamlIlClassWithClrPropertyWithValue + { + public int Count { get; set; }= 5; + } } From 048660ed8bacd61910375ed1f5236a8c4ad9c00f Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 14 Jun 2019 11:59:04 +0300 Subject: [PATCH 002/354] Implemented PropertyPathGrammar --- .../Utilities/CharacterReader.cs | 24 +- .../Utilities/IdentifierParser.cs | 2 +- src/Avalonia.Base/Utilities/KeywordParser.cs | 34 +++ .../Parsers/PropertyParser.cs | 2 +- .../Markup/Parsers/ArgumentListParser.cs | 2 +- .../Markup/Parsers/ExpressionParser.cs | 2 +- .../Markup/Parsers/PropertyPathGrammar.cs | 217 ++++++++++++++++++ .../Markup/Parsers/SelectorGrammar.cs | 10 +- .../Data/Core/PropertyPathGrammarTests.cs | 103 +++++++++ 9 files changed, 384 insertions(+), 12 deletions(-) create mode 100644 src/Avalonia.Base/Utilities/KeywordParser.cs create mode 100644 src/Markup/Avalonia.Markup/Markup/Parsers/PropertyPathGrammar.cs create mode 100644 tests/Avalonia.Base.UnitTests/Data/Core/PropertyPathGrammarTests.cs diff --git a/src/Avalonia.Base/Utilities/CharacterReader.cs b/src/Avalonia.Base/Utilities/CharacterReader.cs index 9be2d230d4b..67a77f1c5cf 100644 --- a/src/Avalonia.Base/Utilities/CharacterReader.cs +++ b/src/Avalonia.Base/Utilities/CharacterReader.cs @@ -19,7 +19,7 @@ public CharacterReader(ReadOnlySpan s) } public bool End => _s.IsEmpty; - public char Peek => _s[0]; + public char PeekOneOrThrow => _s[0]; public int Position { get; private set; } public char Take() { @@ -38,7 +38,7 @@ public void SkipWhitespace() public bool TakeIf(char c) { - if (Peek == c) + if (PeekOneOrThrow == c) { Take(); return true; @@ -51,7 +51,7 @@ public bool TakeIf(char c) public bool TakeIf(Func condition) { - if (condition(Peek)) + if (condition(PeekOneOrThrow)) { Take(); return true; @@ -82,5 +82,23 @@ public ReadOnlySpan TakeWhile(Func condition) Position += len; return span; } + + public ReadOnlySpan TryPeek(int count) + { + return _s.Slice(0, count); + } + + public ReadOnlySpan PeekWhitespace() + { + var trimmed = _s.TrimStart(); + return _s.Slice(0, _s.Length - trimmed.Length); + } + + public void Skip(int count) + { + if (_s.Length < count) + throw new IndexOutOfRangeException(); + _s = _s.Slice(count); + } } } diff --git a/src/Avalonia.Base/Utilities/IdentifierParser.cs b/src/Avalonia.Base/Utilities/IdentifierParser.cs index a57a2b7ba5b..ab14ea2c581 100644 --- a/src/Avalonia.Base/Utilities/IdentifierParser.cs +++ b/src/Avalonia.Base/Utilities/IdentifierParser.cs @@ -13,7 +13,7 @@ static class IdentifierParser { public static ReadOnlySpan ParseIdentifier(this ref CharacterReader r) { - if (IsValidIdentifierStart(r.Peek)) + if (IsValidIdentifierStart(r.PeekOneOrThrow)) { return r.TakeWhile(IsValidIdentifierChar); } diff --git a/src/Avalonia.Base/Utilities/KeywordParser.cs b/src/Avalonia.Base/Utilities/KeywordParser.cs new file mode 100644 index 00000000000..5c7d415820d --- /dev/null +++ b/src/Avalonia.Base/Utilities/KeywordParser.cs @@ -0,0 +1,34 @@ +using System; + +namespace Avalonia.Utilities +{ +#if !BUILDTASK + public +#endif + static class KeywordParser + { + public static bool CheckKeyword(this ref CharacterReader r, string keyword) + { + return (CheckKeywordInternal(ref r, keyword) >= 0); + } + + static int CheckKeywordInternal(this ref CharacterReader r, string keyword) + { + var ws = r.PeekWhitespace(); + + var chars = r.TryPeek(ws.Length + keyword.Length); + if (chars.Slice(ws.Length).Equals(keyword.AsSpan(), StringComparison.Ordinal)) + return chars.Length; + return -1; + } + + public static bool TakeIfKeyword(this ref CharacterReader r, string keyword) + { + var l = CheckKeywordInternal(ref r, keyword); + if (l < 0) + return false; + r.Skip(l); + return true; + } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs b/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs index ea940120964..ebd6347a867 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs @@ -41,7 +41,7 @@ internal class PropertyParser throw new ExpressionParseException(r.Position, $"Expected ')'."); } - throw new ExpressionParseException(r.Position, $"Unexpected '{r.Peek}'."); + throw new ExpressionParseException(r.Position, $"Unexpected '{r.PeekOneOrThrow}'."); } } else if (!r.End && r.TakeIf(':')) diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/ArgumentListParser.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/ArgumentListParser.cs index cb9c81caa1c..fd6f7b20bdb 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/ArgumentListParser.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/ArgumentListParser.cs @@ -11,7 +11,7 @@ internal static class ArgumentListParser { public static IList ParseArguments(this ref CharacterReader r, char open, char close, char delimiter = ',') { - if (r.Peek == open) + if (r.PeekOneOrThrow == open) { var result = new List(); diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionParser.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionParser.cs index a1350a83933..2a737d36e93 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionParser.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionParser.cs @@ -304,7 +304,7 @@ private static bool ParseOpenBrace(ref CharacterReader r) private static bool PeekOpenBracket(ref CharacterReader r) { - return !r.End && r.Peek == '['; + return !r.End && r.PeekOneOrThrow == '['; } private static bool ParseStreamOperator(ref CharacterReader r) diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/PropertyPathGrammar.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/PropertyPathGrammar.cs new file mode 100644 index 00000000000..89490db2aa3 --- /dev/null +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/PropertyPathGrammar.cs @@ -0,0 +1,217 @@ +using System; +using System.Collections.Generic; +using Avalonia.Data.Core; +using Avalonia.Utilities; + +namespace Avalonia.Markup.Parsers +{ +#if !BUILDTASK + public +#endif + class PropertyPathGrammar + { + private enum State + { + Start, + Next, + AfterProperty, + End + } + + public static IEnumerable Parse(string s) + { + var r = new CharacterReader(s.AsSpan()); + return Parse(ref r); + } + + private static IEnumerable Parse(ref CharacterReader r) + { + var state = State.Start; + var parsed = new List(); + while (state != State.End) + { + ISyntax syntax = null; + if (state == State.Start) + (state, syntax) = ParseStart(ref r); + else if (state == State.Next) + (state, syntax) = ParseNext(ref r); + else if (state == State.AfterProperty) + (state, syntax) = ParseAfterProperty(ref r); + + + if (syntax != null) + { + parsed.Add(syntax); + } + } + + if (state != State.End && r.End) + { + throw new ExpressionParseException(r.Position, "Unexpected end of property path"); + } + + return parsed; + } + + private static (State, ISyntax) ParseNext(ref CharacterReader r) + { + r.SkipWhitespace(); + if (r.End) + return (State.End, null); + + return ParseStart(ref r); + } + + private static (State, ISyntax) ParseStart(ref CharacterReader r) + { + r.SkipWhitespace(); + + if (r.TakeIf('(')) + return ParseTypeQualifiedProperty(ref r); + + return ParseProperty(ref r); + } + + private static (State, ISyntax) ParseTypeQualifiedProperty(ref CharacterReader r) + { + r.SkipWhitespace(); + const string error = + "Unable to parse qualified property name, expected `(ns:TypeName.PropertyName)` or `(TypeName.PropertyName)` after `(`"; + + var typeName = ParseXamlIdentifier(ref r); + + + if (!r.TakeIf('.')) + throw new ExpressionParseException(r.Position, error); + + var propertyName = r.ParseIdentifier(); + if (propertyName.IsEmpty) + throw new ExpressionParseException(r.Position, error); + + r.SkipWhitespace(); + if (!r.TakeIf(')')) + throw new ExpressionParseException(r.Position, + "Expected ')' after qualified property name " + + typeName.ns + ':' + typeName.name + + "." + propertyName.ToString()); + + return (State.AfterProperty, + new TypeQualifiedPropertySyntax + { + Name = propertyName.ToString(), + TypeName = typeName.name, + TypeNamespace = typeName.ns + }); + } + + static (string ns, string name) ParseXamlIdentifier(ref CharacterReader r) + { + var ident = r.ParseIdentifier(); + if (ident.IsEmpty) + throw new ExpressionParseException(r.Position, "Expected identifier"); + if (r.TakeIf(':')) + { + var part2 = r.ParseIdentifier(); + if (part2.IsEmpty) + throw new ExpressionParseException(r.Position, + "Expected the rest of the identifier after " + ident.ToString() + ":"); + return (ident.ToString(), part2.ToString()); + } + + return (null, ident.ToString()); + } + + private static (State, ISyntax) ParseProperty(ref CharacterReader r) + { + r.SkipWhitespace(); + var prop = r.ParseIdentifier(); + if (prop.IsEmpty) + throw new ExpressionParseException(r.Position, "Unable to parse property name"); + return (State.AfterProperty, new PropertySyntax {Name = prop.ToString()}); + } + + + private static (State, ISyntax) ParseAfterProperty(ref CharacterReader r) + { + r.SkipWhitespace(); + if (r.End) + return (State.End, null); + if (r.TakeIf('.')) + return (State.Next, ChildTraversalSyntax.Instance); + if (r.TakeIfKeyword(":=")) + return ParseEnsureType(ref r); + + if (r.TakeIfKeyword(":>") || r.TakeIfKeyword("as ")) + return ParseCastType(ref r); + + throw new ExpressionParseException(r.Position, "Unexpected character " + r.PeekOneOrThrow + " after property name"); + } + + private static (State, ISyntax) ParseEnsureType(ref CharacterReader r) + { + r.SkipWhitespace(); + var type = ParseXamlIdentifier(ref r); + return (State.AfterProperty, new EnsureTypeSyntax {TypeName = type.name, TypeNamespace = type.ns}); + } + + private static (State, ISyntax) ParseCastType(ref CharacterReader r) + { + r.SkipWhitespace(); + var type = ParseXamlIdentifier(ref r); + return (State.AfterProperty, new CastTypeSyntax {TypeName = type.name, TypeNamespace = type.ns}); + } + + public interface ISyntax + { + + } + + public class PropertySyntax : ISyntax + { + public string Name { get; set; } + + public override bool Equals(object obj) + => obj is PropertySyntax other + && other.Name == Name; + } + + public class TypeQualifiedPropertySyntax : ISyntax + { + public string Name { get; set; } + public string TypeName { get; set; } + public string TypeNamespace { get; set; } + + public override bool Equals(object obj) + => obj is TypeQualifiedPropertySyntax other + && other.Name == Name + && other.TypeName == TypeName + && other.TypeNamespace == TypeNamespace; + } + + public class ChildTraversalSyntax : ISyntax + { + public static ChildTraversalSyntax Instance { get; } = new ChildTraversalSyntax(); + public override bool Equals(object obj) => obj is ChildTraversalSyntax; + } + + public class EnsureTypeSyntax : ISyntax + { + public string TypeName { get; set; } + public string TypeNamespace { get; set; } + public override bool Equals(object obj) + => obj is EnsureTypeSyntax other + && other.TypeName == TypeName + && other.TypeNamespace == TypeNamespace; + } + + public class CastTypeSyntax : ISyntax + { + public string TypeName { get; set; } + public string TypeNamespace { get; set; } + public override bool Equals(object obj) + => obj is CastTypeSyntax other + && other.TypeName == TypeName + && other.TypeNamespace == TypeNamespace; + } + } +} diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorGrammar.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorGrammar.cs index c57b8c4cf64..2de66d5501e 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorGrammar.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorGrammar.cs @@ -123,7 +123,7 @@ private static (State, ISyntax) ParseMiddle(ref CharacterReader r, char? end) { return (State.Class, null); } - else if (r.TakeIf(char.IsWhiteSpace) || r.Peek == '>') + else if (r.TakeIf(char.IsWhiteSpace) || r.PeekOneOrThrow == '>') { return (State.Traversal, null); } @@ -139,7 +139,7 @@ private static (State, ISyntax) ParseMiddle(ref CharacterReader r, char? end) { return (State.Start, new CommaSyntax()); } - else if (end.HasValue && !r.End && r.Peek == end.Value) + else if (end.HasValue && !r.End && r.PeekOneOrThrow == end.Value) { return (State.End, null); } @@ -262,7 +262,7 @@ private static (State, ISyntax) ParseProperty(ref CharacterReader r) if (!r.TakeIf('=')) { - throw new ExpressionParseException(r.Position, $"Expected '=', got '{r.Peek}'"); + throw new ExpressionParseException(r.Position, $"Expected '=', got '{r.PeekOneOrThrow}'"); } var value = r.TakeUntil(']'); @@ -281,7 +281,7 @@ private static TSyntax ParseType(ref CharacterReader r, TSyntax syntax) if (namespaceOrTypeName.IsEmpty) { - throw new ExpressionParseException(r.Position, $"Expected an identifier, got '{r.Peek}"); + throw new ExpressionParseException(r.Position, $"Expected an identifier, got '{r.PeekOneOrThrow}"); } if (!r.End && r.TakeIf('|')) @@ -311,7 +311,7 @@ private static void Expect(ref CharacterReader r, char c) } else if (!r.TakeIf(')')) { - throw new ExpressionParseException(r.Position, $"Expected '{c}', got '{r.Peek}'."); + throw new ExpressionParseException(r.Position, $"Expected '{c}', got '{r.PeekOneOrThrow}'."); } } diff --git a/tests/Avalonia.Base.UnitTests/Data/Core/PropertyPathGrammarTests.cs b/tests/Avalonia.Base.UnitTests/Data/Core/PropertyPathGrammarTests.cs new file mode 100644 index 00000000000..99144b7381d --- /dev/null +++ b/tests/Avalonia.Base.UnitTests/Data/Core/PropertyPathGrammarTests.cs @@ -0,0 +1,103 @@ +using System.Collections.Generic; +using System.Linq; +using Avalonia.Markup.Parsers; +using Xunit; + +namespace Avalonia.Base.UnitTests.Data.Core +{ + public class PropertyPathGrammarTests + { + static void Check(string s, params PropertyPathGrammar.ISyntax[] expected) + { + var parsed = PropertyPathGrammar.Parse(s).ToList(); + Assert.Equal(expected.Length, parsed.Count); + for (var c = 0; c < parsed.Count; c++) + Assert.Equal(expected[c], parsed[c]); + } + + [Fact] + public void PropertyPath_Should_Support_Simple_Properties() + { + Check("SomeProperty", new PropertyPathGrammar.PropertySyntax {Name = "SomeProperty"}); + } + + [Fact] + public void PropertyPath_Should_Ignore_Trailing_Whitespace() + { + Check(" SomeProperty ", new PropertyPathGrammar.PropertySyntax {Name = "SomeProperty"}); + } + + [Fact] + public void PropertyPath_Should_Support_Qualified_Properties() + { + Check(" ( somens:SomeType.SomeProperty ) ", + new PropertyPathGrammar.TypeQualifiedPropertySyntax() + { + Name = "SomeProperty", TypeName = "SomeType", TypeNamespace = "somens" + }); + } + + [Fact] + public void PropertyPath_Should_Support_Property_Paths() + { + Check(" ( somens:SomeType.SomeProperty ).Child . SubChild ", + new PropertyPathGrammar.TypeQualifiedPropertySyntax() + { + Name = "SomeProperty", TypeName = "SomeType", TypeNamespace = "somens" + }, + PropertyPathGrammar.ChildTraversalSyntax.Instance, + new PropertyPathGrammar.PropertySyntax {Name = "Child"}, + PropertyPathGrammar.ChildTraversalSyntax.Instance, + new PropertyPathGrammar.PropertySyntax {Name = "SubChild"} + ); + } + + [Fact] + public void PropertyPath_Should_Support_Casts() + { + Check(" ( somens:SomeType.SomeProperty ) :> SomeType.Child as somens:SomeType . SubChild ", + new PropertyPathGrammar.TypeQualifiedPropertySyntax() + { + Name = "SomeProperty", TypeName = "SomeType", TypeNamespace = "somens" + }, + new PropertyPathGrammar.CastTypeSyntax + { + TypeName = "SomeType" + }, + PropertyPathGrammar.ChildTraversalSyntax.Instance, + new PropertyPathGrammar.PropertySyntax {Name = "Child"}, + new PropertyPathGrammar.CastTypeSyntax + { + TypeName = "SomeType", + TypeNamespace = "somens" + }, + PropertyPathGrammar.ChildTraversalSyntax.Instance, + new PropertyPathGrammar.PropertySyntax {Name = "SubChild"} + ); + } + + [Fact] + public void PropertyPath_Should_Support_Ensure_Type() + { + Check(" ( somens:SomeType.SomeProperty ) := SomeType.Child := somens:SomeType . SubChild ", + new PropertyPathGrammar.TypeQualifiedPropertySyntax() + { + Name = "SomeProperty", TypeName = "SomeType", TypeNamespace = "somens" + }, + new PropertyPathGrammar.EnsureTypeSyntax + { + TypeName = "SomeType" + }, + PropertyPathGrammar.ChildTraversalSyntax.Instance, + new PropertyPathGrammar.PropertySyntax {Name = "Child"}, + new PropertyPathGrammar.EnsureTypeSyntax + { + TypeName = "SomeType", + TypeNamespace = "somens" + }, + PropertyPathGrammar.ChildTraversalSyntax.Instance, + new PropertyPathGrammar.PropertySyntax {Name = "SubChild"} + ); + } + } +} From 8ad9a0f675a54f1a14bf00d5517d751abe65762b Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 14 Jun 2019 14:26:34 +0300 Subject: [PATCH 003/354] Compiled property paths --- src/Avalonia.Base/Data/Core/PropertyPath.cs | 91 +++++++ .../Utilities/CharacterReader.cs | 2 + src/Avalonia.Base/Utilities/KeywordParser.cs | 12 +- src/Avalonia.Styling/Styling/Setter.cs | 6 + .../Avalonia.Markup.Xaml.csproj | 1 + .../AvaloniaXamlIlCompiler.cs | 1 + .../AvaloniaXamlIlPropertyPathTransformer.cs | 250 ++++++++++++++++++ .../AvaloniaXamlIlSetterTransformer.cs | 35 ++- .../AvaloniaXamlIlWellKnownTypes.cs | 4 + .../XamlIlAvaloniaPropertyHelper.cs | 38 +-- .../XamlIlClrPropertyInfoHelper.cs | 39 ++- .../Avalonia.Markup.Xaml/XamlIl/xamlil.github | 2 +- .../Markup/Parsers/PropertyPathGrammar.cs | 24 +- .../Xaml/XamlIlTests.cs | 48 ++++ 14 files changed, 496 insertions(+), 57 deletions(-) create mode 100644 src/Avalonia.Base/Data/Core/PropertyPath.cs create mode 100644 src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs diff --git a/src/Avalonia.Base/Data/Core/PropertyPath.cs b/src/Avalonia.Base/Data/Core/PropertyPath.cs new file mode 100644 index 00000000000..665953c4a1d --- /dev/null +++ b/src/Avalonia.Base/Data/Core/PropertyPath.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Avalonia.Data.Core +{ + public class PropertyPath + { + public IReadOnlyList Elements { get; } + + public PropertyPath(IEnumerable elements) + { + Elements = elements.ToList(); + } + } + + public class PropertyPathBuilder + { + readonly List _elements = new List(); + + public PropertyPathBuilder Property(IPropertyInfo property) + { + _elements.Add(new PropertyPropertyPathElement(property)); + return this; + } + + + public PropertyPathBuilder ChildTraversal() + { + _elements.Add(new ChildTraversalPropertyPathElement()); + return this; + } + + public PropertyPathBuilder EnsureType(Type type) + { + _elements.Add(new EnsureTypePropertyPathElement(type)); + return this; + } + + public PropertyPathBuilder Cast(Type type) + { + _elements.Add(new CastTypePropertyPathElement(type)); + return this; + } + + public PropertyPath Build() + { + return new PropertyPath(_elements); + } + } + + public interface IPropertyPathElement + { + + } + + public class PropertyPropertyPathElement : IPropertyPathElement + { + public IPropertyInfo Property { get; } + + public PropertyPropertyPathElement(IPropertyInfo property) + { + Property = property; + } + } + + public class ChildTraversalPropertyPathElement : IPropertyPathElement + { + + } + + public class EnsureTypePropertyPathElement : IPropertyPathElement + { + public Type Type { get; } + + public EnsureTypePropertyPathElement(Type type) + { + Type = type; + } + } + + public class CastTypePropertyPathElement : IPropertyPathElement + { + public CastTypePropertyPathElement(Type type) + { + Type = type; + } + + public Type Type { get; } + } +} diff --git a/src/Avalonia.Base/Utilities/CharacterReader.cs b/src/Avalonia.Base/Utilities/CharacterReader.cs index 67a77f1c5cf..3ba79c6866d 100644 --- a/src/Avalonia.Base/Utilities/CharacterReader.cs +++ b/src/Avalonia.Base/Utilities/CharacterReader.cs @@ -85,6 +85,8 @@ public ReadOnlySpan TakeWhile(Func condition) public ReadOnlySpan TryPeek(int count) { + if (_s.Length < count) + return ReadOnlySpan.Empty; return _s.Slice(0, count); } diff --git a/src/Avalonia.Base/Utilities/KeywordParser.cs b/src/Avalonia.Base/Utilities/KeywordParser.cs index 5c7d415820d..34e1ea6f8e9 100644 --- a/src/Avalonia.Base/Utilities/KeywordParser.cs +++ b/src/Avalonia.Base/Utilities/KeywordParser.cs @@ -17,11 +17,21 @@ static int CheckKeywordInternal(this ref CharacterReader r, string keyword) var ws = r.PeekWhitespace(); var chars = r.TryPeek(ws.Length + keyword.Length); - if (chars.Slice(ws.Length).Equals(keyword.AsSpan(), StringComparison.Ordinal)) + if (SpanEquals(chars.Slice(ws.Length), keyword.AsSpan())) return chars.Length; return -1; } + static bool SpanEquals(ReadOnlySpan left, ReadOnlySpan right) + { + if (left.Length != right.Length) + return false; + for(var c=0; c + /// Gets or sets the property path + /// + public PropertyPath PropertyPath { get; set; } /// /// Gets or sets the property value. diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index 91d0feedfb8..040ed573833 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -45,6 +45,7 @@ + diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs index 0d0b0e69673..eadad60cded 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs @@ -44,6 +44,7 @@ void InsertBefore(params IXamlIlAstTransformer[] t) InsertBefore( new AvaloniaXamlIlSelectorTransformer(), + new AvaloniaXamlIlPropertyPathTransformer(), new AvaloniaXamlIlSetterTransformer(), new AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer(), new AvaloniaXamlIlConstructorServiceProviderTransformer(), diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs new file mode 100644 index 00000000000..99ba264214b --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs @@ -0,0 +1,250 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Avalonia.Markup.Parsers; +using XamlIl; +using XamlIl.Ast; +using XamlIl.Transform; +using XamlIl.Transform.Transformers; +using XamlIl.TypeSystem; + +namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers +{ + class AvaloniaXamlIlPropertyPathTransformer : IXamlIlAstTransformer + { + public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + { + if (node is XamlIlAstXamlPropertyValueNode pv + && pv.Values.Count == 1 + && pv.Values[0] is XamlIlAstTextNode text + && pv.Property.GetClrProperty().Getter.ReturnType.Equals(context.GetAvaloniaTypes().PropertyPath) + ) + { + var parentScope = context.ParentNodes().OfType() + .FirstOrDefault(); + if(parentScope == null) + throw new XamlIlParseException("No target type scope found for property path", text); + if (parentScope.ScopeType != AvaloniaXamlIlTargetTypeMetadataNode.ScopeTypes.Style) + throw new XamlIlParseException("PropertyPath is currently only valid for styles", pv); + + + IEnumerable parsed; + try + { + parsed = PropertyPathGrammar.Parse(text.Text); + } + catch (Exception e) + { + throw new XamlIlParseException("Unable to parse PropertyPath: " + e.Message, text); + } + + var elements = new List(); + IXamlIlType currentType = parentScope.TargetType.GetClrType(); + + + var expectProperty = true; + var expectCast = true; + var expectTraversal = false; + var types = context.GetAvaloniaTypes(); + + IXamlIlType GetType(string ns, string name) + { + return XamlIlTypeReferenceResolver.ResolveType(context, $"{ns}:{name}", false, + text, true).GetClrType(); + } + + void HandleProperty(string name, string typeNamespace, string typeName) + { + if(!expectProperty || currentType == null) + throw new XamlIlParseException("Unexpected property node", text); + + var propertySearchType = + typeName != null ? GetType(typeNamespace, typeName) : currentType; + + IXamlIlPropertyPathElementNode prop = null; + var avaloniaPropertyFieldName = name + "Property"; + var avaloniaPropertyField = propertySearchType.GetAllFields().FirstOrDefault(f => + f.IsStatic && f.IsPublic && f.Name == avaloniaPropertyFieldName); + if (avaloniaPropertyField != null) + { + prop = new XamlIlAvaloniaPropertyPropertyPathElementNode(avaloniaPropertyField, + XamlIlAvaloniaPropertyHelper.GetAvaloniaPropertyType(avaloniaPropertyField, types, text)); + } + else + { + var clrProperty = propertySearchType.GetAllProperties().FirstOrDefault(p => p.Name == name); + prop = new XamlIClrPropertyPathElementNode(clrProperty); + } + + if (prop == null) + throw new XamlIlParseException( + $"Unable to resolve property {name} on type {propertySearchType.GetFqn()}", + text); + + currentType = prop.Type; + elements.Add(prop); + expectProperty = false; + expectTraversal = expectCast = true; + } + + foreach (var ge in parsed) + { + if (ge is PropertyPathGrammar.ChildTraversalSyntax) + { + if (!expectTraversal) + throw new XamlIlParseException("Unexpected child traversal .", text); + elements.Add(new XamlIlChildTraversalPropertyPathElementNode()); + expectTraversal = expectCast = false; + expectProperty = true; + } + else if (ge is PropertyPathGrammar.EnsureTypeSyntax ets) + { + if(!expectCast) + throw new XamlIlParseException("Unexpected cast node", text); + currentType = GetType(ets.TypeNamespace, ets.TypeName); + elements.Add(new XamlIlCastPropertyPathElementNode(currentType, true)); + expectProperty = false; + expectCast = expectTraversal = true; + } + else if (ge is PropertyPathGrammar.CastTypeSyntax cts) + { + if(!expectCast) + throw new XamlIlParseException("Unexpected cast node", text); + //TODO: Check if cast can be done + currentType = GetType(cts.TypeNamespace, cts.TypeName); + elements.Add(new XamlIlCastPropertyPathElementNode(currentType, false)); + expectProperty = false; + expectCast = expectTraversal = true; + } + else if (ge is PropertyPathGrammar.PropertySyntax ps) + { + HandleProperty(ps.Name, null, null); + } + else if (ge is PropertyPathGrammar.TypeQualifiedPropertySyntax tqps) + { + HandleProperty(tqps.Name, tqps.TypeNamespace, tqps.TypeName); + } + else + throw new XamlIlParseException("Unexpected node " + ge, text); + + } + var propertyPathNode = new XamlIlPropertyPathNode(text, elements, types); + if (propertyPathNode.Type == null) + throw new XamlIlParseException("Unexpected end of the property path", text); + pv.Values[0] = propertyPathNode; + } + + return node; + } + + interface IXamlIlPropertyPathElementNode + { + void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen); + IXamlIlType Type { get; } + } + + class XamlIlChildTraversalPropertyPathElementNode : IXamlIlPropertyPathElementNode + { + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + => codeGen.EmitCall( + context.GetAvaloniaTypes() + .PropertyPathBuilder.FindMethod(m => m.Name == "ChildTraversal")); + + public IXamlIlType Type => null; + } + + class XamlIlAvaloniaPropertyPropertyPathElementNode : IXamlIlPropertyPathElementNode + { + private readonly IXamlIlField _field; + + public XamlIlAvaloniaPropertyPropertyPathElementNode(IXamlIlField field, IXamlIlType propertyType) + { + _field = field; + Type = propertyType; + } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + => codeGen + .Ldsfld(_field) + .EmitCall(context.GetAvaloniaTypes() + .PropertyPathBuilder.FindMethod(m => m.Name == "Property")); + + public IXamlIlType Type { get; } + } + + class XamlIClrPropertyPathElementNode : IXamlIlPropertyPathElementNode + { + private readonly IXamlIlProperty _property; + + public XamlIClrPropertyPathElementNode(IXamlIlProperty property) + { + _property = property; + } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + context.Configuration.GetExtra() + .Emit(context, codeGen, _property); + + codeGen.EmitCall(context.GetAvaloniaTypes() + .PropertyPathBuilder.FindMethod(m => m.Name == "Property")); + } + + public IXamlIlType Type => _property.Getter?.ReturnType ?? _property.Setter?.Parameters[0]; + } + + class XamlIlCastPropertyPathElementNode : IXamlIlPropertyPathElementNode + { + private readonly IXamlIlType _type; + private readonly bool _ensureType; + + public XamlIlCastPropertyPathElementNode(IXamlIlType type, bool ensureType) + { + _type = type; + _ensureType = ensureType; + } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + codeGen + .Ldtype(_type) + .EmitCall(context.GetAvaloniaTypes() + .PropertyPathBuilder.FindMethod(m => m.Name == (_ensureType ? "EnsureType" : "Cast"))); + } + + public IXamlIlType Type => _type; + } + + class XamlIlPropertyPathNode : XamlIlAstNode, IXamlIlPropertyPathNode, IXamlIlAstEmitableNode + { + private readonly List _elements; + private readonly AvaloniaXamlIlWellKnownTypes _types; + + public XamlIlPropertyPathNode(IXamlIlLineInfo lineInfo, + List elements, + AvaloniaXamlIlWellKnownTypes types) : base(lineInfo) + { + _elements = elements; + _types = types; + Type = new XamlIlAstClrTypeReference(this, types.PropertyPath, false); + } + + public IXamlIlAstTypeReference Type { get; } + public IXamlIlType PropertyType => _elements.LastOrDefault()?.Type; + public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + codeGen + .Newobj(_types.PropertyPathBuilder.FindConstructor()); + foreach(var e in _elements) + e.Emit(context, codeGen); + codeGen.EmitCall(_types.PropertyPathBuilder.FindMethod(m => m.Name == "Build")); + return XamlIlNodeEmitResult.Type(0, _types.PropertyPath); + } + } + } + + interface IXamlIlPropertyPathNode : IXamlIlAstValueNode + { + IXamlIlType PropertyType { get; } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs index 629e2562d38..468717f2813 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Avalonia.Data.Core; using XamlIl; using XamlIl.Ast; using XamlIl.Transform; @@ -33,29 +34,39 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA throw new XamlIlParseException( "Can not resolve parent Style Selector type", node); - + IXamlIlType propType = null; var property = @on.Children.OfType() .FirstOrDefault(x => x.Property.GetClrProperty().Name == "Property"); - if (property == null) - throw new XamlIlParseException("Setter without a property is not valid", node); + if (property != null) + { - var propertyName = property.Values.OfType().FirstOrDefault()?.Text; - if (propertyName == null) - throw new XamlIlParseException("Setter.Property must be a string", node); + var propertyName = property.Values.OfType().FirstOrDefault()?.Text; + if (propertyName == null) + throw new XamlIlParseException("Setter.Property must be a string", node); - var avaloniaPropertyNode = XamlIlAvaloniaPropertyHelper.CreateNode(context, propertyName, - new XamlIlAstClrTypeReference(selector, selector.TargetType, false), property.Values[0]); - property.Values = new List + var avaloniaPropertyNode = XamlIlAvaloniaPropertyHelper.CreateNode(context, propertyName, + new XamlIlAstClrTypeReference(selector, selector.TargetType, false), property.Values[0]); + property.Values = new List {avaloniaPropertyNode}; + propType = avaloniaPropertyNode.AvaloniaPropertyType; + } + else { - avaloniaPropertyNode - }; + var propertyPath = on.Children.OfType() + .FirstOrDefault(x => x.Property.GetClrProperty().Name == "PropertyPath"); + if (propertyPath == null) + throw new XamlIlParseException("Setter without a property or property path is not valid", node); + if (propertyPath.Values[0] is IXamlIlPropertyPathNode ppn + && ppn.PropertyType != null) + propType = ppn.PropertyType; + else + throw new XamlIlParseException("Unable to get the property path property type", node); + } var valueProperty = on.Children .OfType().FirstOrDefault(p => p.Property.GetClrProperty().Name == "Value"); if (valueProperty?.Values?.Count == 1 && valueProperty.Values[0] is XamlIlAstTextNode) { - var propType = avaloniaPropertyNode.AvaloniaPropertyType; if (!XamlIlTransformHelpers.TryGetCorrectlyTypedValue(context, valueProperty.Values[0], propType, out var converted)) throw new XamlIlParseException( diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs index 4c118899dcc..f9f59dfb877 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs @@ -21,6 +21,8 @@ class AvaloniaXamlIlWellKnownTypes public IXamlIlType UnsetValueType { get; } public IXamlIlType IPropertyInfo { get; } public IXamlIlType ClrPropertyInfo { get; } + public IXamlIlType PropertyPath { get; } + public IXamlIlType PropertyPathBuilder { get; } public AvaloniaXamlIlWellKnownTypes(XamlIlTransformerConfiguration cfg) { @@ -43,6 +45,8 @@ public AvaloniaXamlIlWellKnownTypes(XamlIlTransformerConfiguration cfg) false, AvaloniaProperty, XamlIlTypes.Object, BindingPriority); IPropertyInfo = cfg.TypeSystem.GetType("Avalonia.Data.Core.IPropertyInfo"); ClrPropertyInfo = cfg.TypeSystem.GetType("Avalonia.Data.Core.ClrPropertyInfo"); + PropertyPath = cfg.TypeSystem.GetType("Avalonia.Data.Core.PropertyPath"); + PropertyPathBuilder = cfg.TypeSystem.GetType("Avalonia.Data.Core.PropertyPathBuilder"); } } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs index e0783364dba..bc7c58bbb45 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs @@ -94,6 +94,26 @@ public static IXamlIlAvaloniaPropertyNode CreateNode(XamlIlAstTransformationCont context.Configuration.TypeSystem.GetType("Avalonia.AvaloniaProperty"), clrProperty); } + + public static IXamlIlType GetAvaloniaPropertyType(IXamlIlField field, + AvaloniaXamlIlWellKnownTypes types, IXamlIlLineInfo lineInfo) + { + var avaloniaPropertyType = field.FieldType; + while (avaloniaPropertyType != null) + { + if (avaloniaPropertyType.GenericTypeDefinition?.Equals(types.AvaloniaPropertyT) == true) + { + return avaloniaPropertyType.GenericArguments[0]; + } + + avaloniaPropertyType = avaloniaPropertyType.BaseType; + } + + throw new XamlIlParseException( + $"{field.Name}'s type {field.FieldType} doesn't inherit from AvaloniaProperty, make sure to use typed properties", + lineInfo); + + } } interface IXamlIlAvaloniaPropertyNode : IXamlIlAstValueNode @@ -132,22 +152,8 @@ public XamlIlAvaloniaPropertyFieldNode(AvaloniaXamlIlWellKnownTypes types, IXamlIlLineInfo lineInfo, IXamlIlField field) : base(lineInfo) { _field = field; - var avaloniaPropertyType = field.FieldType; - while (avaloniaPropertyType != null) - { - if (avaloniaPropertyType.GenericTypeDefinition?.Equals(types.AvaloniaPropertyT) == true) - { - AvaloniaPropertyType = avaloniaPropertyType.GenericArguments[0]; - return; - } - - avaloniaPropertyType = avaloniaPropertyType.BaseType; - } - - throw new XamlIlParseException( - $"{field.Name}'s type {field.FieldType} doesn't inherit from AvaloniaProperty, make sure to use typed properties", - lineInfo); - + AvaloniaPropertyType = XamlIlAvaloniaPropertyHelper.GetAvaloniaPropertyType(field, + types, lineInfo); } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs index 5b681e94a93..95ec8536fc6 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs @@ -8,21 +8,6 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions { - class XamlIlClrPropertyInfoHelper - { - - class ClrPropertyInfoNode : XamlIlAstNode, IXamlIlAstValueNode - { - public ClrPropertyInfoNode(AvaloniaXamlIlWellKnownTypes types, IXamlIlLineInfo lineInfo) : - base(lineInfo) - { - Type = new XamlIlAstClrTypeReference(this, types.XamlIlTypes.Object, false); - } - - public IXamlIlAstTypeReference Type { get; } - } - } - class XamlIlClrPropertyInfoEmitter { private readonly IXamlIlTypeBuilder _builder; @@ -62,16 +47,25 @@ IXamlIlMethod Get() var field = _builder.DefineField(types.IPropertyInfo, name + "!Field", false, true); + void Load(IXamlIlMethod m, IXamlIlEmitter cg) + { + cg + .Ldarg_0(); + if (m.DeclaringType.IsValueType) + cg.Unbox(m.DeclaringType); + else + cg.Castclass(m.DeclaringType); + } + var getter = property.Getter == null ? null : _builder.DefineMethod(types.XamlIlTypes.Object, new[] {types.XamlIlTypes.Object}, name + "!Getter", false, true, false); if (getter != null) { - getter.Generator - .Ldarg_0() - .Castclass(property.Getter.DeclaringType) - .EmitCall(property.Getter); + Load(property.Getter, getter.Generator); + + getter.Generator.EmitCall(property.Getter); if (property.Getter.ReturnType.IsValueType) getter.Generator.Box(property.Getter.ReturnType); getter.Generator.Ret(); @@ -84,10 +78,9 @@ IXamlIlMethod Get() name + "!Setter", false, true, false); if (setter != null) { - setter.Generator - .Ldarg_0() - .Castclass(property.Setter.DeclaringType) - .Ldarg(1); + Load(property.Setter, setter.Generator); + + setter.Generator.Ldarg(1); if (property.Setter.Parameters[0].IsValueType) setter.Generator.Unbox_Any(property.Setter.Parameters[0]); else diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github b/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github index 3ea474b672f..9ae023a988d 160000 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github @@ -1 +1 @@ -Subproject commit 3ea474b672ff63629300c36a9644caac2b74a1f2 +Subproject commit 9ae023a988d1b419e19386cfd3448d8e604bbc7e diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/PropertyPathGrammar.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/PropertyPathGrammar.cs index 89490db2aa3..1f0f4212337 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/PropertyPathGrammar.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/PropertyPathGrammar.cs @@ -64,6 +64,8 @@ private static (State, ISyntax) ParseNext(ref CharacterReader r) private static (State, ISyntax) ParseStart(ref CharacterReader r) { + if (TryParseCasts(ref r, out var rv)) + return rv; r.SkipWhitespace(); if (r.TakeIf('(')) @@ -130,19 +132,33 @@ private static (State, ISyntax) ParseProperty(ref CharacterReader r) return (State.AfterProperty, new PropertySyntax {Name = prop.ToString()}); } + private static bool TryParseCasts(ref CharacterReader r, out (State, ISyntax) rv) + { + if (r.TakeIfKeyword(":=")) + rv = ParseEnsureType(ref r); + else if (r.TakeIfKeyword(":>") || r.TakeIfKeyword("as ")) + rv = ParseCastType(ref r); + else + { + rv = default; + return false; + } + return true; + } + private static (State, ISyntax) ParseAfterProperty(ref CharacterReader r) { + if (TryParseCasts(ref r, out var rv)) + return rv; + r.SkipWhitespace(); if (r.End) return (State.End, null); if (r.TakeIf('.')) return (State.Next, ChildTraversalSyntax.Instance); - if (r.TakeIfKeyword(":=")) - return ParseEnsureType(ref r); + - if (r.TakeIfKeyword(":>") || r.TakeIfKeyword("as ")) - return ParseCastType(ref r); throw new ExpressionParseException(r.Position, "Unexpected character " + r.PeekOneOrThrow + " after property name"); } diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs index 913dd754f11..6bc7f330394 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs @@ -11,6 +11,7 @@ using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.Media; +using Avalonia.Styling; using Avalonia.Threading; using Avalonia.UnitTests; using Avalonia.VisualTree; @@ -246,6 +247,53 @@ public void Provide_Value_Target_Should_Provide_Clr_Property_Info() />", typeof(XamlIlClassWithClrPropertyWithValue).Assembly); Assert.Equal(6, parsed.Count); } + + [Fact] + public void Should_Provide_PropertyPath_For_Setters() + { + using (UnitTestApplication.Start(TestServices.StyledWindow)) + { + var parsed = AvaloniaXamlLoader.Parse"); + var s1e = ((Setter)parsed.Setters[0]).PropertyPath.Elements; + var s2e = ((Setter)parsed.Setters[1]).PropertyPath.Elements; + var s3e = ((Setter)parsed.Setters[2]).PropertyPath.Elements; + + Assert.Equal(typeof(Visual), ((CastTypePropertyPathElement)s1e[0]).Type); + Assert.IsType(s1e[1]); + Assert.Equal("Bounds", ((AvaloniaProperty)((PropertyPropertyPathElement)s1e[2]).Property).Name); + Assert.IsType(s1e[3]); + var bottomRight = ((PropertyPropertyPathElement)s1e[4]).Property; + Assert.IsType(s1e[5]); + var pointX = ((PropertyPropertyPathElement)s1e[6]).Property; + + var orect = (object)(new Rect(100, 100, 200, 200)); + var point = bottomRight.Get(orect); + var x = pointX.Get(point); + Assert.Equal(300, (double)x); + + Assert.Equal(typeof(Visual), ((CastTypePropertyPathElement)s2e[0]).Type); + Assert.IsType(s2e[1]); + Assert.Equal("RenderTransform", ((AvaloniaProperty)((PropertyPropertyPathElement)s2e[2]).Property).Name); + Assert.Equal(typeof(ScaleTransform), ((EnsureTypePropertyPathElement)s2e[3]).Type); + Assert.IsType(s2e[4]); + Assert.Equal("ScaleX", ((AvaloniaProperty)((PropertyPropertyPathElement)s2e[5]).Property).Name); + + + var s3fqp = (AvaloniaProperty)((PropertyPropertyPathElement)s3e[0]).Property; + Assert.Equal("RenderTransform", s3fqp.Name); + Assert.Equal(typeof(Visual), s3fqp.OwnerType); + Assert.Equal(typeof(ScaleTransform), ((EnsureTypePropertyPathElement)s3e[1]).Type); + Assert.IsType(s3e[2]); + Assert.Equal("ScaleX", ((AvaloniaProperty)((PropertyPropertyPathElement)s3e[3]).Property).Name); + + + } + } } public class XamlIlBugTestsEventHandlerCodeBehind : Window From bc6502c0cd67415486339273bb738b1cebfb02ab Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 14 Jun 2019 14:34:32 +0300 Subject: [PATCH 004/354] Missing file --- src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj index 582e4499c58..1b4424a050a 100644 --- a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj +++ b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj @@ -30,6 +30,9 @@ Markup/%(RecursiveDir)%(FileName)%(Extension) + + Markup/%(RecursiveDir)%(FileName)%(Extension) + Markup/%(RecursiveDir)%(FileName)%(Extension) @@ -38,11 +41,13 @@ Markup/%(RecursiveDir)%(FileName)%(Extension) - + Markup/%(RecursiveDir)%(FileName)%(Extension) - + + Markup/%(RecursiveDir)%(FileName)%(Extension) + From 6f158f463459c72731e6e382b5f9a043353c6002 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 14 Jun 2019 14:51:53 +0300 Subject: [PATCH 005/354] Do not crash --- src/Avalonia.Base/Utilities/KeywordParser.cs | 2 ++ .../Transformers/AvaloniaXamlIlPropertyPathTransformer.cs | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Base/Utilities/KeywordParser.cs b/src/Avalonia.Base/Utilities/KeywordParser.cs index 34e1ea6f8e9..16ef95f5f49 100644 --- a/src/Avalonia.Base/Utilities/KeywordParser.cs +++ b/src/Avalonia.Base/Utilities/KeywordParser.cs @@ -17,6 +17,8 @@ static int CheckKeywordInternal(this ref CharacterReader r, string keyword) var ws = r.PeekWhitespace(); var chars = r.TryPeek(ws.Length + keyword.Length); + if (chars.IsEmpty) + return -1; if (SpanEquals(chars.Slice(ws.Length), keyword.AsSpan())) return chars.Length; return -1; diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs index 99ba264214b..1d2a4ea50b9 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs @@ -17,7 +17,8 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA if (node is XamlIlAstXamlPropertyValueNode pv && pv.Values.Count == 1 && pv.Values[0] is XamlIlAstTextNode text - && pv.Property.GetClrProperty().Getter.ReturnType.Equals(context.GetAvaloniaTypes().PropertyPath) + && pv.Property.GetClrProperty().Getter?.ReturnType + .Equals(context.GetAvaloniaTypes().PropertyPath) == true ) { var parentScope = context.ParentNodes().OfType() From 30066c5e7093207e95022ae7c5620ea1a0ed0ec7 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sun, 23 Jun 2019 17:17:03 -0500 Subject: [PATCH 006/354] Convert current binding parsing to create an AST. --- .../Avalonia.Markup/Avalonia.Markup.csproj | 6 + .../Parsers/BindingExpressionGrammar.cs | 386 ++++++++++++++++++ .../Markup/Parsers/ExpressionParser.cs | 341 ++-------------- 3 files changed, 435 insertions(+), 298 deletions(-) create mode 100644 src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs diff --git a/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj b/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj index 673eb519016..aca39dd8b06 100644 --- a/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj +++ b/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj @@ -3,6 +3,12 @@ netstandard2.0 Avalonia + + + + + + diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs new file mode 100644 index 00000000000..b8308155fe2 --- /dev/null +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs @@ -0,0 +1,386 @@ +// Copyright (c) The Avalonia Project. All rights reserved. +// Licensed under the MIT license. See licence.md file in the project root for full license information. + +using Avalonia.Data.Core; +using Avalonia.Markup.Parsers.Nodes; +using Avalonia.Utilities; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Avalonia.Markup.Parsers +{ + internal enum SourceMode + { + Data, + Control + } + internal static class BindingExpressionGrammar + { + public static (IList Nodes, SourceMode Mode) Parse(ref CharacterReader r) + { + var nodes = new List(); + var state = State.Start; + var mode = SourceMode.Data; + + while (!r.End && state != State.End) + { + switch (state) + { + case State.Start: + state = ParseStart(ref r, nodes); + break; + + case State.AfterMember: + state = ParseAfterMember(ref r, nodes); + break; + + case State.BeforeMember: + state = ParseBeforeMember(ref r, nodes); + break; + + case State.AttachedProperty: + state = ParseAttachedProperty(ref r, nodes); + break; + + case State.Indexer: + state = ParseIndexer(ref r, nodes); + break; + + case State.ElementName: + state = ParseElementName(ref r, nodes); + mode = SourceMode.Control; + break; + + case State.RelativeSource: + state = ParseRelativeSource(ref r, nodes); + mode = SourceMode.Control; + break; + } + } + + if (state == State.BeforeMember) + { + throw new ExpressionParseException(r.Position, "Unexpected end of expression."); + } + + return (nodes, mode); + } + + private static State ParseStart(ref CharacterReader r, IList nodes) + { + if (ParseNot(ref r)) + { + nodes.Add(new NotNode()); + return State.Start; + } + + else if (ParseSharp(ref r)) + { + return State.ElementName; + } + else if (ParseDollarSign(ref r)) + { + return State.RelativeSource; + } + else if (ParseOpenBrace(ref r)) + { + return State.AttachedProperty; + } + else if (PeekOpenBracket(ref r)) + { + return State.Indexer; + } + else if (ParseDot(ref r)) + { + nodes.Add(new EmptyExpressionNode()); + return State.End; + } + else + { + var identifier = r.ParseIdentifier(); + + if (!identifier.IsEmpty) + { + nodes.Add(new PropertyNameNode { PropertyName = identifier.ToString() }); + return State.AfterMember; + } + } + + return State.End; + } + + private static State ParseAfterMember(ref CharacterReader r, IList nodes) + { + if (ParseMemberAccessor(ref r)) + { + return State.BeforeMember; + } + else if (ParseStreamOperator(ref r)) + { + nodes.Add(new StreamNode()); + return State.AfterMember; + } + else if (PeekOpenBracket(ref r)) + { + return State.Indexer; + } + + return State.End; + } + + private static State ParseBeforeMember(ref CharacterReader r, IList nodes) + { + if (ParseOpenBrace(ref r)) + { + return State.AttachedProperty; + } + else + { + var identifier = r.ParseIdentifier(); + + if (!identifier.IsEmpty) + { + nodes.Add(new PropertyNameNode { PropertyName = identifier.ToString() }); + return State.AfterMember; + } + + return State.End; + } + } + + private static State ParseAttachedProperty(ref CharacterReader r, List nodes) + { + var (ns, owner) = ParseTypeName(ref r); + + if (r.End || !r.TakeIf('.')) + { + throw new ExpressionParseException(r.Position, "Invalid attached property name."); + } + + var name = r.ParseIdentifier(); + + if (r.End || !r.TakeIf(')')) + { + throw new ExpressionParseException(r.Position, "Expected ')'."); + } + + nodes.Add(new AttachedPropertyNameNode + { + Namespace = ns.ToString(), + TypeName = owner.ToString(), + PropertyName = name.ToString() + }); + return State.AfterMember; + } + + private static State ParseIndexer(ref CharacterReader r, List nodes) + { + var args = r.ParseArguments('[', ']'); + + if (args.Count == 0) + { + throw new ExpressionParseException(r.Position, "Indexer may not be empty."); + } + + nodes.Add(new IndexerNode { Arguments = args }); + return State.AfterMember; + } + + private static State ParseElementName(ref CharacterReader r, List nodes) + { + var name = r.ParseIdentifier(); + + if (name == null) + { + throw new ExpressionParseException(r.Position, "Element name expected after '#'."); + } + + nodes.Add(new NameNode { Name = name.ToString() }); + return State.AfterMember; + } + + private static State ParseRelativeSource(ref CharacterReader r, List nodes) + { + var mode = r.ParseIdentifier(); + + if (mode.Equals("self".AsSpan(), StringComparison.InvariantCulture)) + { + nodes.Add(new SelfNode()); + } + else if (mode.Equals("parent".AsSpan(), StringComparison.InvariantCulture)) + { + string ancestorNamespace = null; + string ancestorType = null; + var ancestorLevel = 0; + if (PeekOpenBracket(ref r)) + { + var args = r.ParseArguments('[', ']', ';'); + if (args.Count > 2 || args.Count == 0) + { + throw new ExpressionParseException(r.Position, "Too many arguments in RelativeSource syntax sugar"); + } + else if (args.Count == 1) + { + if (int.TryParse(args[0], out int level)) + { + ancestorType = null; + ancestorLevel = level; + } + else + { + var reader = new CharacterReader(args[0].AsSpan()); + (ancestorNamespace, ancestorType) = ParseTypeName(ref reader); + } + } + else + { + var reader = new CharacterReader(args[0].AsSpan()); + (ancestorNamespace, ancestorType) = ParseTypeName(ref reader); + ancestorLevel = int.Parse(args[1]); + } + } + nodes.Add(new AncestorNode + { + Namespace = ancestorNamespace, + TypeName = ancestorType, + Level = ancestorLevel + }); + } + else + { + throw new ExpressionParseException(r.Position, "Unknown RelativeSource mode."); + } + + return State.AfterMember; + } + + private static TypeName ParseTypeName(ref CharacterReader r) + { + ReadOnlySpan ns, typeName; + ns = ReadOnlySpan.Empty; + var typeNameOrNamespace = r.ParseIdentifier(); + + if (!r.End && r.TakeIf(':')) + { + ns = typeNameOrNamespace; + typeName = r.ParseIdentifier(); + } + else + { + typeName = typeNameOrNamespace; + } + + return new TypeName(ns, typeName); + } + + private static bool ParseNot(ref CharacterReader r) + { + return !r.End && r.TakeIf('!'); + } + + private static bool ParseMemberAccessor(ref CharacterReader r) + { + return !r.End && r.TakeIf('.'); + } + + private static bool ParseOpenBrace(ref CharacterReader r) + { + return !r.End && r.TakeIf('('); + } + + private static bool PeekOpenBracket(ref CharacterReader r) + { + return !r.End && r.PeekOneOrThrow == '['; + } + + private static bool ParseStreamOperator(ref CharacterReader r) + { + return !r.End && r.TakeIf('^'); + } + + private static bool ParseDollarSign(ref CharacterReader r) + { + return !r.End && r.TakeIf('$'); + } + + private static bool ParseSharp(ref CharacterReader r) + { + return !r.End && r.TakeIf('#'); + } + + private static bool ParseDot(ref CharacterReader r) + { + return !r.End && r.TakeIf('.'); + } + + private enum State + { + Start, + RelativeSource, + ElementName, + AfterMember, + BeforeMember, + AttachedProperty, + Indexer, + End, + } + + private readonly ref struct TypeName + { + public TypeName(ReadOnlySpan ns, ReadOnlySpan typeName) + { + Namespace = ns; + Type = typeName; + } + + public readonly ReadOnlySpan Namespace; + public readonly ReadOnlySpan Type; + + public void Deconstruct(out string ns, out string typeName) + { + ns = Namespace.ToString(); + typeName = Type.ToString(); + } + } + + public interface INode {} + + public class EmptyExpressionNode : INode { } + + public class PropertyNameNode : INode + { + public string PropertyName { get; set; } + } + + public class AttachedPropertyNameNode : INode + { + public string Namespace { get; set; } + public string TypeName { get; set; } + public string PropertyName { get; set; } + } + + public class IndexerNode : INode + { + public IList Arguments { get; set; } + } + + public class NotNode : INode {} + + public class StreamNode : INode {} + + public class SelfNode : INode {} + + public class NameNode : INode + { + public string Name { get; set; } + } + + public class AncestorNode : INode + { + public string Namespace { get; set; } + public string TypeName { get; set; } + public int Level { get; set; } + } + } +} diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionParser.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionParser.cs index 2a737d36e93..fe58ac139e4 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionParser.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionParser.cs @@ -10,12 +10,6 @@ namespace Avalonia.Markup.Parsers { - internal enum SourceMode - { - Data, - Control - } - internal class ExpressionParser { private readonly bool _enableValidation; @@ -29,332 +23,83 @@ public ExpressionParser(bool enableValidation, Func typeRe public (ExpressionNode Node, SourceMode Mode) Parse(ref CharacterReader r) { - var nodes = new List(); - var state = State.Start; - var mode = SourceMode.Data; + ExpressionNode node = null; + var (astNodes, mode) = BindingExpressionGrammar.Parse(ref r); - while (!r.End && state != State.End) + foreach (var astNode in astNodes) { - switch (state) + ExpressionNode nextNode = null; + switch (astNode) { - case State.Start: - state = ParseStart(ref r, nodes); + case BindingExpressionGrammar.EmptyExpressionNode _: + nextNode = new EmptyExpressionNode(); break; - - case State.AfterMember: - state = ParseAfterMember(ref r, nodes); + case BindingExpressionGrammar.NotNode _: + nextNode = new LogicalNotNode(); break; - - case State.BeforeMember: - state = ParseBeforeMember(ref r, nodes); + case BindingExpressionGrammar.StreamNode _: + nextNode = new StreamNode(); break; - - case State.AttachedProperty: - state = ParseAttachedProperty(ref r, nodes); + case BindingExpressionGrammar.PropertyNameNode propName: + nextNode = new PropertyAccessorNode(propName.PropertyName, _enableValidation); break; - - case State.Indexer: - state = ParseIndexer(ref r, nodes); + case BindingExpressionGrammar.IndexerNode indexer: + nextNode = new StringIndexerNode(indexer.Arguments); break; - - case State.ElementName: - state = ParseElementName(ref r, nodes); - mode = SourceMode.Control; + case BindingExpressionGrammar.AttachedPropertyNameNode attachedProp: + nextNode = ParseAttachedProperty(attachedProp); break; - - case State.RelativeSource: - state = ParseRelativeSource(ref r, nodes); - mode = SourceMode.Control; + case BindingExpressionGrammar.SelfNode _: + nextNode = new SelfNode(); + break; + case BindingExpressionGrammar.AncestorNode ancestor: + nextNode = ParseFindAncestor(ancestor); + break; + case BindingExpressionGrammar.NameNode elementName: + nextNode = new ElementNameNode(elementName.Name); break; } - } - - if (state == State.BeforeMember) - { - throw new ExpressionParseException(r.Position, "Unexpected end of expression."); - } - - for (int n = 0; n < nodes.Count - 1; ++n) - { - nodes[n].Next = nodes[n + 1]; - } - - return (nodes.FirstOrDefault(), mode); - } - - private State ParseStart(ref CharacterReader r, IList nodes) - { - if (ParseNot(ref r)) - { - nodes.Add(new LogicalNotNode()); - return State.Start; - } - - else if (ParseSharp(ref r)) - { - return State.ElementName; - } - else if (ParseDollarSign(ref r)) - { - return State.RelativeSource; - } - else if (ParseOpenBrace(ref r)) - { - return State.AttachedProperty; - } - else if (PeekOpenBracket(ref r)) - { - return State.Indexer; - } - else if (ParseDot(ref r)) - { - nodes.Add(new EmptyExpressionNode()); - return State.End; - } - else - { - var identifier = r.ParseIdentifier(); - - if (!identifier.IsEmpty) + if (node is null) { - nodes.Add(new PropertyAccessorNode(identifier.ToString(), _enableValidation)); - return State.AfterMember; + node = nextNode; } - } - - return State.End; - } - - private static State ParseAfterMember(ref CharacterReader r, IList nodes) - { - if (ParseMemberAccessor(ref r)) - { - return State.BeforeMember; - } - else if (ParseStreamOperator(ref r)) - { - nodes.Add(new StreamNode()); - return State.AfterMember; - } - else if (PeekOpenBracket(ref r)) - { - return State.Indexer; - } - - return State.End; - } - - private State ParseBeforeMember(ref CharacterReader r, IList nodes) - { - if (ParseOpenBrace(ref r)) - { - return State.AttachedProperty; - } - else - { - var identifier = r.ParseIdentifier(); - - if (!identifier.IsEmpty) + else { - nodes.Add(new PropertyAccessorNode(identifier.ToString(), _enableValidation)); - return State.AfterMember; + node.Next = nextNode; } - - return State.End; - } - } - - private State ParseAttachedProperty(ref CharacterReader r, List nodes) - { - var (ns, owner) = ParseTypeName(ref r); - - if (r.End || !r.TakeIf('.')) - { - throw new ExpressionParseException(r.Position, "Invalid attached property name."); - } - - var name = r.ParseIdentifier(); - - if (r.End || !r.TakeIf(')')) - { - throw new ExpressionParseException(r.Position, "Expected ')'."); - } - - if (_typeResolver == null) - { - throw new InvalidOperationException("Cannot parse a binding path with an attached property without a type resolver. Maybe you can use a LINQ Expression binding path instead?"); - } - - var property = AvaloniaPropertyRegistry.Instance.FindRegistered(_typeResolver(ns.ToString(), owner.ToString()), name.ToString()); - - nodes.Add(new AvaloniaPropertyAccessorNode(property, _enableValidation)); - return State.AfterMember; - } - - private State ParseIndexer(ref CharacterReader r, List nodes) - { - var args = r.ParseArguments('[', ']'); - - if (args.Count == 0) - { - throw new ExpressionParseException(r.Position, "Indexer may not be empty."); } - nodes.Add(new StringIndexerNode(args)); - return State.AfterMember; + return (node, mode); } - private State ParseElementName(ref CharacterReader r, List nodes) + private FindAncestorNode ParseFindAncestor(BindingExpressionGrammar.AncestorNode node) { - var name = r.ParseIdentifier(); + Type ancestorType = null; + var ancestorLevel = node.Level; - if (name == null) + if (!(node.Namespace is null) && !(node.TypeName is null)) { - throw new ExpressionParseException(r.Position, "Element name expected after '#'."); - } - - nodes.Add(new ElementNameNode(name.ToString())); - return State.AfterMember; - } - - private State ParseRelativeSource(ref CharacterReader r, List nodes) - { - var mode = r.ParseIdentifier(); - - if (mode.Equals("self".AsSpan(), StringComparison.InvariantCulture)) - { - nodes.Add(new SelfNode()); - } - else if (mode.Equals("parent".AsSpan(), StringComparison.InvariantCulture)) - { - Type ancestorType = null; - var ancestorLevel = 0; - if (PeekOpenBracket(ref r)) + if (_typeResolver == null) { - var args = r.ParseArguments('[', ']', ';'); - if (args.Count > 2 || args.Count == 0) - { - throw new ExpressionParseException(r.Position, "Too many arguments in RelativeSource syntax sugar"); - } - else if (args.Count == 1) - { - if (int.TryParse(args[0], out int level)) - { - ancestorType = null; - ancestorLevel = level; - } - else - { - var reader = new CharacterReader(args[0].AsSpan()); - var typeName = ParseTypeName(ref reader); - ancestorType = _typeResolver(typeName.Namespace.ToString(), typeName.Type.ToString()); - } - } - else - { - var reader = new CharacterReader(args[0].AsSpan()); - var typeName = ParseTypeName(ref reader); - ancestorType = _typeResolver(typeName.Namespace.ToString(), typeName.Type.ToString()); - ancestorLevel = int.Parse(args[1]); - } + throw new InvalidOperationException("Cannot parse a binding path with a typed FindAncestor without a type resolver. Maybe you can use a LINQ Expression binding path instead?"); } - nodes.Add(new FindAncestorNode(ancestorType, ancestorLevel)); - } - else - { - throw new ExpressionParseException(r.Position, "Unknown RelativeSource mode."); - } - return State.AfterMember; - } - - private static TypeName ParseTypeName(ref CharacterReader r) - { - ReadOnlySpan ns, typeName; - ns = ReadOnlySpan.Empty; - var typeNameOrNamespace = r.ParseIdentifier(); - - if (!r.End && r.TakeIf(':')) - { - ns = typeNameOrNamespace; - typeName = r.ParseIdentifier(); + ancestorType = _typeResolver(node.Namespace, node.TypeName); } - else - { - typeName = typeNameOrNamespace; - } - - return new TypeName(ns, typeName); - } - - private static bool ParseNot(ref CharacterReader r) - { - return !r.End && r.TakeIf('!'); - } - - private static bool ParseMemberAccessor(ref CharacterReader r) - { - return !r.End && r.TakeIf('.'); - } - - private static bool ParseOpenBrace(ref CharacterReader r) - { - return !r.End && r.TakeIf('('); - } - - private static bool PeekOpenBracket(ref CharacterReader r) - { - return !r.End && r.PeekOneOrThrow == '['; - } - - private static bool ParseStreamOperator(ref CharacterReader r) - { - return !r.End && r.TakeIf('^'); - } - - private static bool ParseDollarSign(ref CharacterReader r) - { - return !r.End && r.TakeIf('$'); - } - - private static bool ParseSharp(ref CharacterReader r) - { - return !r.End && r.TakeIf('#'); - } - private static bool ParseDot(ref CharacterReader r) - { - return !r.End && r.TakeIf('.'); - } - - private enum State - { - Start, - RelativeSource, - ElementName, - AfterMember, - BeforeMember, - AttachedProperty, - Indexer, - End, + return new FindAncestorNode(ancestorType, ancestorLevel); } - private readonly ref struct TypeName + private AvaloniaPropertyAccessorNode ParseAttachedProperty(BindingExpressionGrammar.AttachedPropertyNameNode node) { - public TypeName(ReadOnlySpan ns, ReadOnlySpan typeName) + if (_typeResolver == null) { - Namespace = ns; - Type = typeName; + throw new InvalidOperationException("Cannot parse a binding path with an attached property without a type resolver. Maybe you can use a LINQ Expression binding path instead?"); } - public readonly ReadOnlySpan Namespace; - public readonly ReadOnlySpan Type; + var property = AvaloniaPropertyRegistry.Instance.FindRegistered(_typeResolver(node.Namespace, node.TypeName), node.PropertyName); - public void Deconstruct(out ReadOnlySpan ns, out ReadOnlySpan typeName) - { - ns = Namespace; - typeName = Type; - } + return new AvaloniaPropertyAccessorNode(property, _enableValidation); } } } From 1c380dc375a903806dced234f966f0ccfa2d8df4 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sun, 23 Jun 2019 23:14:52 -0500 Subject: [PATCH 007/354] Add new AST node generated from x:DataContextType. To be used as part of compiled bindings. --- .../Avalonia.Markup.Xaml.csproj | 3 +- .../AvaloniaXamlIlCompiler.cs | 3 +- ...valoniaXamlIlDataContextTypeTransformer.cs | 46 +++++++++++++++++++ .../AvaloniaXamlIlMetadataRemover.cs | 7 ++- 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index 040ed573833..dfa036b1f2c 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -43,9 +43,10 @@ + - + diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs index eadad60cded..933d39bad82 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs @@ -48,7 +48,8 @@ void InsertBefore(params IXamlIlAstTransformer[] t) new AvaloniaXamlIlSetterTransformer(), new AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer(), new AvaloniaXamlIlConstructorServiceProviderTransformer(), - new AvaloniaXamlIlTransitionsTypeMetadataTransformer() + new AvaloniaXamlIlTransitionsTypeMetadataTransformer(), + new AvaloniaXamlIlDataContextTypeTransformer() ); // After everything else diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs new file mode 100644 index 00000000000..5d68a725147 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Text; +using XamlIl; +using XamlIl.Ast; +using XamlIl.Transform; + +namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers +{ + class AvaloniaXamlIlDataContextTypeTransformer : IXamlIlAstTransformer + { + public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + { + if (node is XamlIlAstObjectNode on) + { + foreach (var child in on.Children) + { + if (child is XamlIlAstXmlDirective directive) + { + if (directive.Namespace == XamlNamespaces.Xaml2006 + && directive.Name == "DataContextType" + && directive.Values.Count == 1 + && directive.Values[0] is XamlIlTypeExtensionNode dataContextType) + { + on.Children.Remove(child); + return new AvaloniaXamlIlDataContextTypeMetadataNode(on, dataContextType.Value); + } + } + } + } + + return node; + } + } + + class AvaloniaXamlIlDataContextTypeMetadataNode : XamlIlValueWithSideEffectNodeBase + { + public IXamlIlAstTypeReference DataContextType { get; set; } + + public AvaloniaXamlIlDataContextTypeMetadataNode(IXamlIlAstValueNode value, IXamlIlAstTypeReference targetType) + : base(value, value) + { + DataContextType = targetType; + } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlMetadataRemover.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlMetadataRemover.cs index 994928b7fe5..608e68bf107 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlMetadataRemover.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlMetadataRemover.cs @@ -8,8 +8,11 @@ class AvaloniaXamlIlMetadataRemover : IXamlIlAstTransformer { public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) { - if (node is AvaloniaXamlIlTargetTypeMetadataNode md) - return md.Value; + if (node is AvaloniaXamlIlTargetTypeMetadataNode targetTypeMetadata) + return targetTypeMetadata.Value; + + if (node is AvaloniaXamlIlDataContextTypeMetadataNode dataContextTypeMetadata) + return dataContextTypeMetadata.Value; return node; } From bb2c563416af1132039ec8c1da09e4228eb81935 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 28 Jun 2019 01:24:01 +0300 Subject: [PATCH 008/354] Headless platform WIP --- Avalonia.sln | 52 +++ .../ControlCatalog.NetCore.csproj | 3 +- samples/ControlCatalog.NetCore/Program.cs | 5 + .../Avalonia.Headless.Vnc.csproj | 12 + .../HeadlessVncFramebufferSource.cs | 96 +++++ .../HeadlessVncPlatformExtensions.cs | 48 +++ .../Avalonia.Headless.csproj | 8 + .../AvaloniaHeadlessPlatform.cs | 93 +++++ .../HeadlessPlatformRenderInterface.cs | 385 ++++++++++++++++++ .../HeadlessPlatformStubs.cs | 96 +++++ .../HeadlessPlatformThreadingInterface.cs | 86 ++++ src/Avalonia.Headless/HeadlessWindowImpl.cs | 251 ++++++++++++ src/Avalonia.Headless/IHeadlessWindow.cs | 17 + 13 files changed, 1151 insertions(+), 1 deletion(-) create mode 100644 src/Avalonia.Headless.Vnc/Avalonia.Headless.Vnc.csproj create mode 100644 src/Avalonia.Headless.Vnc/HeadlessVncFramebufferSource.cs create mode 100644 src/Avalonia.Headless.Vnc/HeadlessVncPlatformExtensions.cs create mode 100644 src/Avalonia.Headless/Avalonia.Headless.csproj create mode 100644 src/Avalonia.Headless/AvaloniaHeadlessPlatform.cs create mode 100644 src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs create mode 100644 src/Avalonia.Headless/HeadlessPlatformStubs.cs create mode 100644 src/Avalonia.Headless/HeadlessPlatformThreadingInterface.cs create mode 100644 src/Avalonia.Headless/HeadlessWindowImpl.cs create mode 100644 src/Avalonia.Headless/IHeadlessWindow.cs diff --git a/Avalonia.sln b/Avalonia.sln index ac678ba9ba5..16fc4d01217 100644 --- a/Avalonia.sln +++ b/Avalonia.sln @@ -199,6 +199,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.ReactiveUI.UnitTes EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Controls.DataGrid", "src\Avalonia.Controls.DataGrid\Avalonia.Controls.DataGrid.csproj", "{3278F3A9-9509-4A3F-A15B-BDC8B5BFF632}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Headless", "src\Avalonia.Headless\Avalonia.Headless.csproj", "{8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Headless.Vnc", "src\Avalonia.Headless.Vnc\Avalonia.Headless.Vnc.csproj", "{B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution src\Shared\RenderHelpers\RenderHelpers.projitems*{3c4c0cb4-0c0f-4450-a37b-148c84ff905f}*SharedItemsImports = 13 @@ -1842,6 +1846,54 @@ Global {3278F3A9-9509-4A3F-A15B-BDC8B5BFF632}.Release|iPhone.Build.0 = Release|Any CPU {3278F3A9-9509-4A3F-A15B-BDC8B5BFF632}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {3278F3A9-9509-4A3F-A15B-BDC8B5BFF632}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.AppStore|iPhone.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|iPhone.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|Any CPU.Build.0 = Release|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|iPhone.ActiveCfg = Release|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|iPhone.Build.0 = Release|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.AppStore|iPhone.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|iPhone.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|Any CPU.Build.0 = Release|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|iPhone.ActiveCfg = Release|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|iPhone.Build.0 = Release|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj b/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj index 6a40f7187da..d9ce776ffd8 100644 --- a/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj +++ b/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj @@ -7,11 +7,12 @@ + - + diff --git a/samples/ControlCatalog.NetCore/Program.cs b/samples/ControlCatalog.NetCore/Program.cs index 40321496c0f..91f05ca7199 100644 --- a/samples/ControlCatalog.NetCore/Program.cs +++ b/samples/ControlCatalog.NetCore/Program.cs @@ -6,6 +6,7 @@ using Avalonia.Controls; using Avalonia.Skia; using Avalonia.ReactiveUI; +using Avalonia.Threading; namespace ControlCatalog.NetCore { @@ -32,6 +33,10 @@ static int Main(string[] args) System.Threading.ThreadPool.QueueUserWorkItem(_ => ConsoleSilencer()); return builder.StartLinuxFramebuffer(args); } + else if (args.Contains("--vnc")) + { + return builder.StartWithHeadlessVncPlatform(null, 5901, args, ShutdownMode.OnMainWindowClose); + } else return builder.StartWithClassicDesktopLifetime(args); } diff --git a/src/Avalonia.Headless.Vnc/Avalonia.Headless.Vnc.csproj b/src/Avalonia.Headless.Vnc/Avalonia.Headless.Vnc.csproj new file mode 100644 index 00000000000..4aac862ae86 --- /dev/null +++ b/src/Avalonia.Headless.Vnc/Avalonia.Headless.Vnc.csproj @@ -0,0 +1,12 @@ + + + + netstandard2.0 + + + + + + + + diff --git a/src/Avalonia.Headless.Vnc/HeadlessVncFramebufferSource.cs b/src/Avalonia.Headless.Vnc/HeadlessVncFramebufferSource.cs new file mode 100644 index 00000000000..df68807195d --- /dev/null +++ b/src/Avalonia.Headless.Vnc/HeadlessVncFramebufferSource.cs @@ -0,0 +1,96 @@ +using System; +using System.Runtime.InteropServices; +using Avalonia.Controls; +using Avalonia.Input; +using Avalonia.Threading; +using RemoteViewing.Vnc; +using RemoteViewing.Vnc.Server; + +namespace Avalonia.Headless.Vnc +{ + public class HeadlessVncFramebufferSource : IVncFramebufferSource + { + public IHeadlessWindow Window { get; set; } + private object _lock = new object(); + public VncFramebuffer _framebuffer = new VncFramebuffer("Avalonia", 1, 1, VncPixelFormat.RGB32); + + private VncButton _previousButtons; + public HeadlessVncFramebufferSource(VncServerSession session, Window window) + { + Window = (IHeadlessWindow)window.PlatformImpl; + session.PointerChanged += (_, args) => + { + var pt = new Point(args.X, args.Y); + + var buttons = (VncButton)args.PressedButtons; + + int TranslateButton(VncButton vncButton) => + vncButton == VncButton.Left ? 0 : vncButton == VncButton.Right ? 1 : 2; + + var modifiers = (InputModifiers)(((int)buttons & 7) << 4); + + Dispatcher.UIThread.Post(() => + { + Window?.MouseMove(pt); + foreach (var btn in CheckedButtons) + if (_previousButtons.HasFlag(btn) && !buttons.HasFlag(btn)) + Window?.MouseUp(pt, TranslateButton(btn), modifiers); + + foreach (var btn in CheckedButtons) + if (!_previousButtons.HasFlag(btn) && buttons.HasFlag(btn)) + Window?.MouseDown(pt, TranslateButton(btn), modifiers); + _previousButtons = buttons; + }, DispatcherPriority.Input); + }; + + } + + [Flags] + enum VncButton + { + Left = 1, + Middle = 2, + Right = 4, + ScrollUp = 8, + ScrollDown = 16 + } + + + private static VncButton[] CheckedButtons = new[] {VncButton.Left, VncButton.Middle, VncButton.Right}; + + public VncFramebuffer Capture() + { + lock (_lock) + { + using (var bmpRef = Window.GetLastRenderedFrame()) + { + if (bmpRef?.Item == null) + return _framebuffer; + var bmp = bmpRef.Item; + if (bmp.PixelSize.Width != _framebuffer.Width || bmp.PixelSize.Height != _framebuffer.Height) + { + _framebuffer = new VncFramebuffer("Avalonia", bmp.PixelSize.Width, bmp.PixelSize.Height, + VncPixelFormat.RGB32); + } + + using (var fb = bmp.Lock()) + { + var buf = _framebuffer.GetBuffer(); + if (_framebuffer.Stride == fb.RowBytes) + Marshal.Copy(fb.Address, buf, 0, buf.Length); + else + for (var y = 0; y < fb.Size.Height; y++) + { + var sourceStart = fb.RowBytes * y; + var dstStart = _framebuffer.Stride * y; + var row = fb.Size.Width * 4; + Marshal.Copy(new IntPtr(sourceStart + fb.Address.ToInt64()), buf, dstStart, row); + } + } + } + } + + return _framebuffer; + } + } +} diff --git a/src/Avalonia.Headless.Vnc/HeadlessVncPlatformExtensions.cs b/src/Avalonia.Headless.Vnc/HeadlessVncPlatformExtensions.cs new file mode 100644 index 00000000000..bd215296c8f --- /dev/null +++ b/src/Avalonia.Headless.Vnc/HeadlessVncPlatformExtensions.cs @@ -0,0 +1,48 @@ +using System.Net; +using System.Net.Sockets; +using Avalonia.Controls; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Headless; +using Avalonia.Headless.Vnc; +using RemoteViewing.Vnc; +using RemoteViewing.Vnc.Server; + +namespace Avalonia +{ + public static class HeadlessVncPlatformExtensions + { + public static int StartWithHeadlessVncPlatform( + this T builder, + string host, int port, + string[] args, ShutdownMode shutdownMode = ShutdownMode.OnLastWindowClose) + where T : AppBuilderBase, new() + { + var tcpServer = new TcpListener(host == null ? IPAddress.Loopback : IPAddress.Parse(host), port); + tcpServer.Start(); + return builder + .UseHeadless(false) + .AfterSetup(_ => + { + var lt = ((IClassicDesktopStyleApplicationLifetime)builder.Instance.ApplicationLifetime); + lt.Startup += async delegate + { + while (true) + { + var client = await tcpServer.AcceptTcpClientAsync(); + var options = new VncServerSessionOptions + { + AuthenticationMethod = AuthenticationMethod.None + }; + var session = new VncServerSession(); + + session.SetFramebufferSource(new HeadlessVncFramebufferSource( + session, lt.MainWindow)); + session.Connect(client.GetStream(), options); + } + + }; + }) + .StartWithClassicDesktopLifetime(args, shutdownMode); + } + } +} diff --git a/src/Avalonia.Headless/Avalonia.Headless.csproj b/src/Avalonia.Headless/Avalonia.Headless.csproj new file mode 100644 index 00000000000..b871316a2c1 --- /dev/null +++ b/src/Avalonia.Headless/Avalonia.Headless.csproj @@ -0,0 +1,8 @@ + + + netstandard2.0 + + + + + diff --git a/src/Avalonia.Headless/AvaloniaHeadlessPlatform.cs b/src/Avalonia.Headless/AvaloniaHeadlessPlatform.cs new file mode 100644 index 00000000000..5857d941821 --- /dev/null +++ b/src/Avalonia.Headless/AvaloniaHeadlessPlatform.cs @@ -0,0 +1,93 @@ +using System; +using System.Diagnostics; +using System.Reactive.Disposables; +using Avalonia.Controls; +using Avalonia.Controls.Platform; +using Avalonia.Input; +using Avalonia.Input.Platform; +using Avalonia.Platform; +using Avalonia.Rendering; +using Avalonia.Threading; + +namespace Avalonia.Headless +{ + public static class AvaloniaHeadlessPlatform + { + class RenderTimer : DefaultRenderTimer + { + private readonly int _framesPerSecond; + private Action _forceTick; + protected override IDisposable StartCore(Action tick) + { + bool cancelled = false; + var st = Stopwatch.StartNew(); + _forceTick = () => tick(st.Elapsed); + DispatcherTimer.Run(() => + { + if (cancelled) + return false; + tick(st.Elapsed); + return !cancelled; + }, TimeSpan.FromSeconds(1.0 / _framesPerSecond), DispatcherPriority.Render); + return Disposable.Create(() => + { + _forceTick = null; + cancelled = true; + }); + } + + public RenderTimer(int framesPerSecond) : base(framesPerSecond) + { + _framesPerSecond = framesPerSecond; + } + + public void ForceTick() => _forceTick?.Invoke(); + } + + class HeadlessWindowingPlatform : IWindowingPlatform + { + public IWindowImpl CreateWindow() => new HeadlessWindowImpl(false); + + public IEmbeddableWindowImpl CreateEmbeddableWindow() => throw new PlatformNotSupportedException(); + + public IPopupImpl CreatePopup() => new HeadlessWindowImpl(true); + } + + internal static void Initialize() + { + AvaloniaLocator.CurrentMutable + .Bind().ToConstant(new HeadlessPlatformThreadingInterface()) + .Bind().ToSingleton() + .Bind().ToSingleton() + .Bind().ToConstant(new HeadlessPlatformSettingsStub()) + .Bind().ToSingleton() + .Bind().ToSingleton() + .Bind().ToConstant(new KeyboardDevice()) + .Bind().ToConstant(new RenderLoop()) + .Bind().ToConstant(new RenderTimer(60)) + + .Bind().ToConstant(new HeadlessWindowingPlatform()) + .Bind().ToSingleton(); + } + + + public static void ForceRenderTimerTick(int count = 1) + { + var timer = AvaloniaLocator.Current.GetService() as RenderTimer; + for (var c = 0; c < count; c++) + timer?.ForceTick(); + + } + } + + public static class AvaloniaHeadlessPlatformExtensions + { + public static T UseHeadless(this T builder, bool headlessDrawing = true) + where T : AppBuilderBase, new() + { + if (headlessDrawing) + builder.UseRenderingSubsystem(HeadlessPlatformRenderInterface.Initialize, "Headless"); + return builder.UseWindowingSubsystem(AvaloniaHeadlessPlatform.Initialize, "Headless"); + } + } +} diff --git a/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs b/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs new file mode 100644 index 00000000000..381eccef082 --- /dev/null +++ b/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs @@ -0,0 +1,385 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; +using Avalonia.Media; +using Avalonia.Platform; +using Avalonia.Rendering; +using Avalonia.Rendering.SceneGraph; +using Avalonia.Utilities; +using Avalonia.Visuals.Media.Imaging; + +namespace Avalonia.Headless +{ + internal class HeadlessPlatformRenderInterface : IPlatformRenderInterface + { + public static void Initialize() + { + AvaloniaLocator.CurrentMutable + .Bind().ToConstant(new HeadlessPlatformRenderInterface()); + } + + public IEnumerable InstalledFontNames { get; } = new[] {"Tahoma"}; + + public IFormattedTextImpl CreateFormattedText(string text, Typeface typeface, TextAlignment textAlignment, + TextWrapping wrapping, Size constraint, IReadOnlyList spans) + { + return new HeadlessFormattedTextStub(text, constraint); + } + + public IGeometryImpl CreateEllipseGeometry(Rect rect) => new HeadlessGeometryStub(rect); + + public IGeometryImpl CreateLineGeometry(Point p1, Point p2) + { + var tl = new Point(Math.Min(p1.X, p2.X), Math.Min(p1.Y, p2.Y)); + var br = new Point(Math.Max(p1.X, p2.X), Math.Max(p1.Y, p2.Y)); + return new HeadlessGeometryStub(new Rect(tl, br)); + } + + public IGeometryImpl CreateRectangleGeometry(Rect rect) + { + return new HeadlessGeometryStub(rect); + } + + public IStreamGeometryImpl CreateStreamGeometry() => new HeadlessStreamingGeometryStub(); + + public IRenderTarget CreateRenderTarget(IEnumerable surfaces) => new HeadlessRenderTarget(); + + public IRenderTargetBitmapImpl CreateRenderTargetBitmap(PixelSize size, Vector dpi) + { + return new HeadlessBitmapStub(size, dpi); + } + + public IWriteableBitmapImpl CreateWriteableBitmap(PixelSize size, Vector dpi, PixelFormat? format = null) + { + return new HeadlessBitmapStub(size, dpi); + } + + public IBitmapImpl LoadBitmap(string fileName) + { + return new HeadlessBitmapStub(new Size(1, 1), new Vector(96, 96)); + } + + public IBitmapImpl LoadBitmap(Stream stream) + { + return new HeadlessBitmapStub(new Size(1, 1), new Vector(96, 96)); + } + + public IBitmapImpl LoadBitmap(PixelFormat format, IntPtr data, PixelSize size, Vector dpi, int stride) + { + return new HeadlessBitmapStub(new Size(1, 1), new Vector(96, 96)); + } + + class HeadlessGeometryStub : IGeometryImpl + { + public HeadlessGeometryStub(Rect bounds) + { + Bounds = bounds; + } + public Rect Bounds { get; set; } + public virtual Rect GetRenderBounds(Pen pen) => Bounds.Inflate(pen.Thickness / 2); + public virtual bool FillContains(Point point) => Bounds.Contains(point); + + public IGeometryImpl Intersect(IGeometryImpl geometry) + => new HeadlessGeometryStub(geometry.Bounds.Intersect(Bounds)); + + public bool StrokeContains(Pen pen, Point point) => false; + + public ITransformedGeometryImpl WithTransform(Matrix transform) => + new HeadlessTransformedGeometryStub(this, transform); + } + + class HeadlessTransformedGeometryStub : HeadlessGeometryStub, ITransformedGeometryImpl + { + public HeadlessTransformedGeometryStub(IGeometryImpl b, Matrix transform) : this(Fix(b, transform)) + { + + } + + static (IGeometryImpl, Matrix, Rect) Fix(IGeometryImpl b, Matrix transform) + { + if (b is HeadlessTransformedGeometryStub transformed) + { + b = transformed.SourceGeometry; + transform = transformed.Transform * transform; + } + + return (b, transform, b.Bounds.TransformToAABB(transform)); + } + + private HeadlessTransformedGeometryStub((IGeometryImpl b, Matrix transform, Rect bounds) fix) : base(fix.bounds) + { + SourceGeometry = fix.b; + Transform = fix.transform; + } + + + public IGeometryImpl SourceGeometry { get; } + public Matrix Transform { get; } + } + + class HeadlessStreamingGeometryStub : HeadlessGeometryStub, IStreamGeometryImpl + { + public HeadlessStreamingGeometryStub() : base(Rect.Empty) + { + } + + public IStreamGeometryImpl Clone() + { + return this; + } + + public IStreamGeometryContextImpl Open() + { + return new HeadlessStreamingGeometryContextStub(this); + } + + class HeadlessStreamingGeometryContextStub : IStreamGeometryContextImpl + { + private readonly HeadlessStreamingGeometryStub _parent; + private double _x1, _y1, _x2, _y2; + public HeadlessStreamingGeometryContextStub(HeadlessStreamingGeometryStub parent) + { + _parent = parent; + } + + void Track(Point pt) + { + if (_x1 > pt.X) + _x1 = pt.X; + if (_x2 < pt.X) + _x2 = pt.X; + if (_y1 > pt.Y) + _y1 = pt.Y; + if (_y2 < pt.Y) + _y2 = pt.Y; + } + + public void Dispose() + { + _parent.Bounds = new Rect(_x1, _y1, _x2 - _x1, _y2 - _y1); + } + + public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection) + => Track(point); + + public void BeginFigure(Point startPoint, bool isFilled = true) => Track(startPoint); + + public void CubicBezierTo(Point point1, Point point2, Point point3) + { + Track(point1); + Track(point2); + Track(point3); + } + + public void QuadraticBezierTo(Point control, Point endPoint) + { + Track(control); + Track(endPoint); + } + + public void LineTo(Point point) => Track(point); + + public void EndFigure(bool isClosed) + { + Dispose(); + } + + public void SetFillRule(FillRule fillRule) + { + + } + } + } + + class HeadlessBitmapStub : IBitmapImpl, IRenderTargetBitmapImpl, IWriteableBitmapImpl + { + public Size Size { get; } + + public HeadlessBitmapStub(Size size, Vector dpi) + { + Size = size; + Dpi = dpi; + var pixel = Size * (Dpi / 96); + PixelSize = new PixelSize(Math.Max(1, (int)pixel.Width), Math.Max(1, (int)pixel.Height)); + } + + public HeadlessBitmapStub(PixelSize size, Vector dpi) + { + PixelSize = size; + Dpi = dpi; + Size = PixelSize.ToSizeWithDpi(dpi); + } + + public void Dispose() + { + + } + + public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) + { + return new HeadlessDrawingContextStub(); + } + + public Vector Dpi { get; } + public PixelSize PixelSize { get; } + public int Version { get; set; } + public void Save(string fileName) + { + + } + + public void Save(Stream stream) + { + + } + + public ILockedFramebuffer Lock() + { + Version++; + var mem = Marshal.AllocHGlobal(PixelSize.Width * PixelSize.Height * 4); + return new LockedFramebuffer(mem, PixelSize, PixelSize.Width * 4, Dpi, PixelFormat.Rgba8888, + () => Marshal.FreeHGlobal(mem)); + } + } + + class HeadlessDrawingContextStub : IDrawingContextImpl + { + public void Dispose() + { + + } + + public Matrix Transform { get; set; } + public void Clear(Color color) + { + + } + + public void DrawImage(IRef source, double opacity, Rect sourceRect, Rect destRect, + BitmapInterpolationMode bitmapInterpolationMode = BitmapInterpolationMode.Default) + { + + } + + public void DrawImage(IRef source, IBrush opacityMask, Rect opacityMaskRect, Rect destRect) + { + + } + + public void DrawLine(Pen pen, Point p1, Point p2) + { + + } + + public void DrawGeometry(IBrush brush, Pen pen, IGeometryImpl geometry) + { + + } + + public void DrawRectangle(Pen pen, Rect rect, float cornerRadius = 0) + { + + } + + public void DrawText(IBrush foreground, Point origin, IFormattedTextImpl text) + { + + } + + public void FillRectangle(IBrush brush, Rect rect, float cornerRadius = 0) + { + + } + + public IRenderTargetBitmapImpl CreateLayer(Size size) + { + return new HeadlessBitmapStub(size, new Vector(96, 96)); + } + + public void PushClip(Rect clip) + { + + } + + public void PopClip() + { + + } + + public void PushOpacity(double opacity) + { + + } + + public void PopOpacity() + { + + } + + public void PushOpacityMask(IBrush mask, Rect bounds) + { + + } + + public void PopOpacityMask() + { + + } + + public void PushGeometryClip(IGeometryImpl clip) + { + + } + + public void PopGeometryClip() + { + + } + + public void Custom(ICustomDrawOperation custom) + { + + } + } + + class HeadlessRenderTarget : IRenderTarget + { + public void Dispose() + { + + } + + public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) + { + return new HeadlessDrawingContextStub(); + } + } + + class HeadlessFormattedTextStub : IFormattedTextImpl + { + public HeadlessFormattedTextStub(string text, Size constraint) + { + Text = text; + Constraint = constraint; + Bounds = new Rect(Constraint.Constrain(new Size(50, 50))); + } + + public Size Constraint { get; } + public Rect Bounds { get; } + public string Text { get; } + + + public IEnumerable GetLines() + { + return new[] {new FormattedTextLine(Text.Length, 10)}; + } + + public TextHitTestResult HitTestPoint(Point point) => new TextHitTestResult(); + + public Rect HitTestTextPosition(int index) => new Rect(); + + public IEnumerable HitTestTextRange(int index, int length) => new Rect[length]; + } + } +} diff --git a/src/Avalonia.Headless/HeadlessPlatformStubs.cs b/src/Avalonia.Headless/HeadlessPlatformStubs.cs new file mode 100644 index 00000000000..debe77c1b68 --- /dev/null +++ b/src/Avalonia.Headless/HeadlessPlatformStubs.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using Avalonia.Controls; +using Avalonia.Controls.Platform; +using Avalonia.Input; +using Avalonia.Input.Platform; +using Avalonia.Platform; + +namespace Avalonia.Headless +{ + class HeadlessClipboardStub : IClipboard + { + private string _text; + public Task GetTextAsync() + { + return Task.Run(() => _text); + } + + public Task SetTextAsync(string text) + { + return Task.Run(() => _text = text); + } + + public Task ClearAsync() + { + return Task.Run(() => _text = null); + } + } + + class HeadlessCursorFactoryStub : IStandardCursorFactory + { + + public IPlatformHandle GetCursor(StandardCursorType cursorType) + { + return new PlatformHandle(new IntPtr((int)cursorType), "STUB"); + } + } + + class HeadlessPlatformSettingsStub : IPlatformSettings + { + public Size DoubleClickSize { get; } = new Size(2, 2); + public TimeSpan DoubleClickTime { get; } = TimeSpan.FromMilliseconds(500); + } + + class HeadlessSystemDialogsStub : ISystemDialogImpl + { + public Task ShowFileDialogAsync(FileDialog dialog, IWindowImpl parent) + { + return Task.Run(() => (string[])null); + } + + public Task ShowFolderDialogAsync(OpenFolderDialog dialog, IWindowImpl parent) + { + return Task.Run(() => (string)null); + } + } + + class HeadlessIconLoaderStub : IPlatformIconLoader + { + + class IconStub : IWindowIconImpl + { + public void Save(Stream outputStream) + { + + } + } + public IWindowIconImpl LoadIcon(string fileName) + { + return new IconStub(); + } + + public IWindowIconImpl LoadIcon(Stream stream) + { + return new IconStub(); + } + + public IWindowIconImpl LoadIcon(IBitmapImpl bitmap) + { + return new IconStub(); + } + } + + class HeadlessScreensStub : IScreenImpl + { + public int ScreenCount { get; } = 1; + + public IReadOnlyList AllScreens { get; } = new[] + { + new Screen(new PixelRect(0, 0, 1920, 1280), + new PixelRect(0, 0, 1920, 1280), true), + }; + } +} diff --git a/src/Avalonia.Headless/HeadlessPlatformThreadingInterface.cs b/src/Avalonia.Headless/HeadlessPlatformThreadingInterface.cs new file mode 100644 index 00000000000..e42a7b1a714 --- /dev/null +++ b/src/Avalonia.Headless/HeadlessPlatformThreadingInterface.cs @@ -0,0 +1,86 @@ +using System; +using System.Reactive.Disposables; +using System.Threading; +using Avalonia.Platform; +using Avalonia.Threading; + +namespace Avalonia.Headless +{ + class HeadlessPlatformThreadingInterface : IPlatformThreadingInterface + { + public HeadlessPlatformThreadingInterface() + { + _thread = Thread.CurrentThread; + } + + private AutoResetEvent _event = new AutoResetEvent(false); + private Thread _thread; + private object _lock = new object(); + private DispatcherPriority? _signaledPriority; + + public void RunLoop(CancellationToken cancellationToken) + { + while (!cancellationToken.IsCancellationRequested) + { + DispatcherPriority? signaled = null; + lock (_lock) + { + signaled = _signaledPriority; + _signaledPriority = null; + } + if(signaled.HasValue) + Signaled?.Invoke(signaled); + WaitHandle.WaitAny(new[] {cancellationToken.WaitHandle, _event}, TimeSpan.FromMilliseconds(20)); + } + } + + public IDisposable StartTimer(DispatcherPriority priority, TimeSpan interval, Action tick) + { + var cancelled = false; + var enqueued = false; + var l = new object(); + var timer = new Timer(_ => + { + lock (l) + { + if (cancelled || enqueued) + return; + enqueued = true; + Dispatcher.UIThread.Post(() => + { + lock (l) + { + enqueued = false; + if (cancelled) + return; + tick(); + } + }, priority); + } + }, null, interval, interval); + return Disposable.Create(() => + { + lock (l) + { + timer.Dispose(); + cancelled = true; + } + }); + } + + public void Signal(DispatcherPriority priority) + { + lock (_lock) + { + if (_signaledPriority == null || _signaledPriority.Value > priority) + { + _signaledPriority = priority; + } + _event.Set(); + } + } + + public bool CurrentThreadIsLoopThread => _thread == Thread.CurrentThread; + public event Action Signaled; + } +} diff --git a/src/Avalonia.Headless/HeadlessWindowImpl.cs b/src/Avalonia.Headless/HeadlessWindowImpl.cs new file mode 100644 index 00000000000..550defa815c --- /dev/null +++ b/src/Avalonia.Headless/HeadlessWindowImpl.cs @@ -0,0 +1,251 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using Avalonia.Controls; +using Avalonia.Controls.Platform.Surfaces; +using Avalonia.Input; +using Avalonia.Input.Raw; +using Avalonia.Media.Imaging; +using Avalonia.Platform; +using Avalonia.Rendering; +using Avalonia.Threading; +using Avalonia.Utilities; + +namespace Avalonia.Headless +{ + class HeadlessWindowImpl : IWindowImpl, IPopupImpl, IFramebufferPlatformSurface, IHeadlessWindow + { + private IKeyboardDevice _keyboard; + private Stopwatch _st = Stopwatch.StartNew(); + private Pointer _mousePointer; + private WriteableBitmap _lastRenderedFrame; + private object _sync = new object(); + public bool IsPopup { get; } + + public HeadlessWindowImpl(bool isPopup) + { + IsPopup = isPopup; + Surfaces = new object[] {this}; + _keyboard = AvaloniaLocator.Current.GetService(); + _mousePointer = new Pointer(Pointer.GetNextFreeId(), PointerType.Mouse, true); + MouseDevice = new MouseDevice(_mousePointer); + ClientSize = new Size(1024, 768); + } + + public void Dispose() + { + Closed?.Invoke(); + _lastRenderedFrame?.Dispose(); + _lastRenderedFrame = null; + } + + public Size ClientSize { get; set; } + public double Scaling { get; } = 1; + public IEnumerable Surfaces { get; } + public Action Input { get; set; } + public Action Paint { get; set; } + public Action Resized { get; set; } + public Action ScalingChanged { get; set; } + + public IRenderer CreateRenderer(IRenderRoot root) + => new DeferredRenderer(root, AvaloniaLocator.Current.GetService()); + + public void Invalidate(Rect rect) + { + } + + public void SetInputRoot(IInputRoot inputRoot) + { + InputRoot = inputRoot; + } + + public IInputRoot InputRoot { get; set; } + + public Point PointToClient(PixelPoint point) => point.ToPoint(Scaling); + + public PixelPoint PointToScreen(Point point) => PixelPoint.FromPoint(point, Scaling); + + public void SetCursor(IPlatformHandle cursor) + { + + } + + public Action Closed { get; set; } + public IMouseDevice MouseDevice { get; } + + public void Show() + { + Dispatcher.UIThread.Post(() => Activated?.Invoke(), DispatcherPriority.Input); + } + + public void Hide() + { + Dispatcher.UIThread.Post(() => Deactivated?.Invoke(), DispatcherPriority.Input); + } + + public void BeginMoveDrag() + { + + } + + public void BeginResizeDrag(WindowEdge edge) + { + + } + + public PixelPoint Position { get; set; } + public Action PositionChanged { get; set; } + public void Activate() + { + Dispatcher.UIThread.Post(() => Activated?.Invoke(), DispatcherPriority.Input); + } + + public Action Deactivated { get; set; } + public Action Activated { get; set; } + public IPlatformHandle Handle { get; } = new PlatformHandle(IntPtr.Zero, "STUB"); + public Size MaxClientSize { get; } = new Size(1920, 1280); + public void Resize(Size clientSize) + { + // Emulate X11 behavior here + if (IsPopup) + DoResize(clientSize); + else + Dispatcher.UIThread.Post(() => + { + DoResize(clientSize); + }); + } + + void DoResize(Size clientSize) + { + ClientSize = clientSize; + Resized?.Invoke(clientSize); + } + + public void SetMinMaxSize(Size minSize, Size maxSize) + { + + } + + public void SetTopmost(bool value) + { + + } + + public IScreenImpl Screen { get; } = new HeadlessScreensStub(); + public WindowState WindowState { get; set; } + public Action WindowStateChanged { get; set; } + public void SetTitle(string title) + { + + } + + public void ShowDialog(IWindowImpl parent) + { + Show(); + } + + public void SetSystemDecorations(bool enabled) + { + + } + + public void SetIcon(IWindowIconImpl icon) + { + + } + + public void ShowTaskbarIcon(bool value) + { + + } + + public void CanResize(bool value) + { + + } + + public Func Closing { get; set; } + + class FramebufferProxy : ILockedFramebuffer + { + private readonly ILockedFramebuffer _fb; + private readonly Action _onDispose; + private bool _disposed; + + public FramebufferProxy(ILockedFramebuffer fb, Action onDispose) + { + _fb = fb; + _onDispose = onDispose; + } + public void Dispose() + { + if(_disposed) + return; + _disposed = true; + _fb.Dispose(); + _onDispose(); + } + + public IntPtr Address => _fb.Address; + public PixelSize Size => _fb.Size; + public int RowBytes => _fb.RowBytes; + public Vector Dpi => _fb.Dpi; + public PixelFormat Format => _fb.Format; + } + + public ILockedFramebuffer Lock() + { + var bmp = new WriteableBitmap(PixelSize.FromSize(ClientSize, Scaling), new Vector(96, 96) * Scaling); + var fb = bmp.Lock(); + return new FramebufferProxy(fb, () => + { + lock (_sync) + { + _lastRenderedFrame?.Dispose(); + _lastRenderedFrame = bmp; + } + }); + } + + public IRef GetLastRenderedFrame() + { + lock (_sync) + return _lastRenderedFrame?.PlatformImpl?.CloneAs(); + } + + private ulong Timestamp => (ulong)_st.ElapsedMilliseconds; + + void IHeadlessWindow.KeyPress(Key key, InputModifiers modifiers) + { + Input?.Invoke(new RawKeyEventArgs(_keyboard, Timestamp, RawKeyEventType.KeyDown, key, modifiers)); + } + + void IHeadlessWindow.KeyRelease(Key key, InputModifiers modifiers) + { + Input?.Invoke(new RawKeyEventArgs(_keyboard, Timestamp, RawKeyEventType.KeyUp, key, modifiers)); + } + + void IHeadlessWindow.MouseDown(Point point, int button, InputModifiers modifiers) + { + Input?.Invoke(new RawPointerEventArgs(MouseDevice, Timestamp, InputRoot, + button == 0 ? RawPointerEventType.LeftButtonDown : + button == 1 ? RawPointerEventType.MiddleButtonDown : RawPointerEventType.RightButtonDown, + point, modifiers)); + } + + void IHeadlessWindow.MouseMove(Point point, InputModifiers modifiers) + { + Input?.Invoke(new RawPointerEventArgs(MouseDevice, Timestamp, InputRoot, + RawPointerEventType.Move, point, modifiers)); + } + + void IHeadlessWindow.MouseUp(Point point, int button, InputModifiers modifiers) + { + Input?.Invoke(new RawPointerEventArgs(MouseDevice, Timestamp, InputRoot, + button == 0 ? RawPointerEventType.LeftButtonUp : + button == 1 ? RawPointerEventType.MiddleButtonUp : RawPointerEventType.RightButtonUp, + point, modifiers)); + } + } +} diff --git a/src/Avalonia.Headless/IHeadlessWindow.cs b/src/Avalonia.Headless/IHeadlessWindow.cs new file mode 100644 index 00000000000..aafad2e5001 --- /dev/null +++ b/src/Avalonia.Headless/IHeadlessWindow.cs @@ -0,0 +1,17 @@ +using Avalonia.Input; +using Avalonia.Media.Imaging; +using Avalonia.Platform; +using Avalonia.Utilities; + +namespace Avalonia.Headless +{ + public interface IHeadlessWindow + { + IRef GetLastRenderedFrame(); + void KeyPress(Key key, InputModifiers modifiers); + void KeyRelease(Key key, InputModifiers modifiers); + void MouseDown(Point point, int button, InputModifiers modifiers = InputModifiers.None); + void MouseMove(Point point, InputModifiers modifiers = InputModifiers.None); + void MouseUp(Point point, int button, InputModifiers modifiers = InputModifiers.None); + } +} From a0ffb8ec9890d7217835403a79c42cd9aae567a0 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 28 Jun 2019 10:40:09 +0300 Subject: [PATCH 009/354] Added a "script" to load all control catalog pages in headless mode --- samples/ControlCatalog.NetCore/Program.cs | 46 +++++++++++++++++++++ src/Avalonia.Headless/HeadlessWindowImpl.cs | 8 +++- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/samples/ControlCatalog.NetCore/Program.cs b/samples/ControlCatalog.NetCore/Program.cs index 91f05ca7199..766f3c5afa2 100644 --- a/samples/ControlCatalog.NetCore/Program.cs +++ b/samples/ControlCatalog.NetCore/Program.cs @@ -2,8 +2,12 @@ using System.Diagnostics; using System.Linq; using System.Threading; +using System.Threading.Tasks; using Avalonia; using Avalonia.Controls; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Headless; +using Avalonia.LogicalTree; using Avalonia.Skia; using Avalonia.ReactiveUI; using Avalonia.Threading; @@ -37,6 +41,48 @@ static int Main(string[] args) { return builder.StartWithHeadlessVncPlatform(null, 5901, args, ShutdownMode.OnMainWindowClose); } + else if (args.Contains("--full-headless")) + { + return builder + .UseHeadless(true) + .AfterSetup(_ => + { + DispatcherTimer.RunOnce(async () => + { + var window = ((IClassicDesktopStyleApplicationLifetime)Application.Current.ApplicationLifetime) + .MainWindow; + var tc = window.GetLogicalDescendants().OfType().First(); + foreach (var page in tc.Items.Cast().ToList()) + { + // Skip DatePicker because of some layout bug in grid + if (page.Header.ToString() == "DatePicker") + continue; + Console.WriteLine("Selecting " + page.Header); + tc.SelectedItem = page; + await Task.Delay(500); + } + Console.WriteLine("Selecting the first page"); + tc.SelectedItem = tc.Items.OfType().First(); + await Task.Delay(500); + Console.WriteLine("Clicked through all pages, triggering GC"); + for (var c = 0; c < 3; c++) + { + GC.Collect(2, GCCollectionMode.Forced); + await Task.Delay(500); + } + + void FormatMem(string metric, long bytes) + { + Console.WriteLine(metric + ": " + bytes / 1024 / 1024 + "MB"); + } + + FormatMem("GC allocated bytes", GC.GetTotalMemory(true)); + FormatMem("WorkingSet64", Process.GetCurrentProcess().WorkingSet64); + + }, TimeSpan.FromSeconds(1)); + }) + .StartWithClassicDesktopLifetime(args); + } else return builder.StartWithClassicDesktopLifetime(args); } diff --git a/src/Avalonia.Headless/HeadlessWindowImpl.cs b/src/Avalonia.Headless/HeadlessWindowImpl.cs index 550defa815c..b19abffc016 100644 --- a/src/Avalonia.Headless/HeadlessWindowImpl.cs +++ b/src/Avalonia.Headless/HeadlessWindowImpl.cs @@ -118,8 +118,12 @@ public void Resize(Size clientSize) void DoResize(Size clientSize) { - ClientSize = clientSize; - Resized?.Invoke(clientSize); + // Uncomment this check and experience a weird bug in layout engine + if (ClientSize != clientSize) + { + ClientSize = clientSize; + Resized?.Invoke(clientSize); + } } public void SetMinMaxSize(Size minSize, Size maxSize) From e3bc5345aeb0b1e71f39b2100290d73bc9db033f Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sat, 6 Jul 2019 12:32:57 -0700 Subject: [PATCH 010/354] Finish initial implementation of compiled bindings. Still some bugs to work out, but we have something that works now. --- .../Data/Core/ClrPropertyInfo.cs | 7 +- src/Avalonia.Base/Data/Core/IPropertyInfo.cs | 3 + .../Data/Core/Plugins/TaskStreamPlugin.cs | 2 +- .../Data/Core/PropertyAccessorNode.cs | 22 +- src/Avalonia.Base/Data/Core/StreamNode.cs | 37 +- .../Avalonia.Build.Tasks.csproj | 8 +- .../Avalonia.Markup.Xaml.csproj | 13 +- .../CompiledBindingExtension.cs | 75 +++ .../CompiledBindings/CompiledBindingPath.cs | 177 +++++++ .../NotifyingPropertyInfoHelpers.cs | 255 ++++++++++ .../ObservableStreamPlugin.cs | 28 ++ .../PropertyInfoAccessorPlugin.cs | 112 +++++ .../CompiledBindings/TaskStreamPlugin.cs | 53 ++ .../AvaloniaXamlIlCompiler.cs | 14 +- .../Transformers/AddNameScopeRegistration.cs | 78 +-- .../AvaloniaXamlIlBindingPathTransformer.cs | 33 ++ ...valoniaXamlIlDataContextTypeTransformer.cs | 46 +- ...mlIlTransformInstanceAttachedProperties.cs | 5 + .../AvaloniaXamlIlWellKnownTypes.cs | 10 +- .../XamlIlBindingPathHelper.cs | 459 ++++++++++++++++++ .../XamlIlClrPropertyInfoHelper.cs | 11 +- src/Markup/Avalonia.Markup/Data/Binding.cs | 263 +--------- .../Avalonia.Markup/Data/BindingBase.cs | 275 +++++++++++ .../Markup/Parsers/ArgumentListParser.cs | 5 +- .../Parsers/BindingExpressionGrammar.cs | 11 +- .../Markup/Parsers/Nodes/ElementNameNode.cs | 2 +- .../Markup/Parsers/Nodes/FindAncestorNode.cs | 2 +- .../Markup/Parsers/Nodes/SelfNode.cs | 2 +- .../CompiledBindingExtensionTests.cs | 47 ++ .../Xaml/XamlIlTests.cs | 15 +- 30 files changed, 1743 insertions(+), 327 deletions(-) create mode 100644 src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindingExtension.cs create mode 100644 src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs create mode 100644 src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/NotifyingPropertyInfoHelpers.cs create mode 100644 src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/ObservableStreamPlugin.cs create mode 100644 src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/PropertyInfoAccessorPlugin.cs create mode 100644 src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/TaskStreamPlugin.cs create mode 100644 src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs create mode 100644 src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs create mode 100644 src/Markup/Avalonia.Markup/Data/BindingBase.cs create mode 100644 tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs diff --git a/src/Avalonia.Base/Data/Core/ClrPropertyInfo.cs b/src/Avalonia.Base/Data/Core/ClrPropertyInfo.cs index 05059b66173..f66411c2c2d 100644 --- a/src/Avalonia.Base/Data/Core/ClrPropertyInfo.cs +++ b/src/Avalonia.Base/Data/Core/ClrPropertyInfo.cs @@ -9,14 +9,17 @@ public class ClrPropertyInfo : IPropertyInfo private readonly Func _getter; private readonly Action _setter; - public ClrPropertyInfo(string name, Func getter, Action setter) + public ClrPropertyInfo(string name, Func getter, Action setter, Type propertyType) { _getter = getter; _setter = setter; + PropertyType = propertyType; Name = name; } public string Name { get; } + public Type PropertyType { get; } + public object Get(object target) { if (_getter == null) @@ -62,7 +65,7 @@ static Func CreateGetter(PropertyInfo info) } public ReflectionClrPropertyInfo(PropertyInfo info) : base(info.Name, - CreateGetter(info), CreateSetter(info)) + CreateGetter(info), CreateSetter(info), info.PropertyType) { } diff --git a/src/Avalonia.Base/Data/Core/IPropertyInfo.cs b/src/Avalonia.Base/Data/Core/IPropertyInfo.cs index 530b98d08bc..2417d0ffc47 100644 --- a/src/Avalonia.Base/Data/Core/IPropertyInfo.cs +++ b/src/Avalonia.Base/Data/Core/IPropertyInfo.cs @@ -1,3 +1,5 @@ +using System; + namespace Avalonia.Data.Core { public interface IPropertyInfo @@ -7,5 +9,6 @@ public interface IPropertyInfo void Set(object target, object value); bool CanSet { get; } bool CanGet { get; } + Type PropertyType { get; } } } diff --git a/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs b/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs index 16862f576d9..35917226ef3 100644 --- a/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs +++ b/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs @@ -57,7 +57,7 @@ public virtual IObservable Start(WeakReference reference) return Observable.Empty(); } - protected IObservable HandleCompleted(Task task) + private IObservable HandleCompleted(Task task) { var resultProperty = task.GetType().GetRuntimeProperty("Result"); diff --git a/src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs b/src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs index df8f46a7d7f..6cc7889eb64 100644 --- a/src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs +++ b/src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs @@ -11,6 +11,7 @@ namespace Avalonia.Data.Core public class PropertyAccessorNode : SettableNode { private readonly bool _enableValidation; + private IPropertyAccessorPlugin _customPlugin; private IPropertyAccessor _accessor; public PropertyAccessorNode(string propertyName, bool enableValidation) @@ -19,6 +20,13 @@ public PropertyAccessorNode(string propertyName, bool enableValidation) _enableValidation = enableValidation; } + public PropertyAccessorNode(string propertyName, bool enableValidation, IPropertyAccessorPlugin customPlugin) + { + PropertyName = propertyName; + _enableValidation = enableValidation; + _customPlugin = customPlugin; + } + public override string Description => PropertyName; public string PropertyName { get; } public override Type PropertyType => _accessor?.PropertyType; @@ -39,7 +47,7 @@ protected override bool SetTargetValueCore(object value, BindingPriority priorit protected override void StartListeningCore(WeakReference reference) { - var plugin = ExpressionObserver.PropertyAccessors.FirstOrDefault(x => x.Match(reference.Target, PropertyName)); + var plugin = _customPlugin ?? GetPropertyAccessorPluginForObject(reference.Target); var accessor = plugin?.Start(reference, PropertyName); if (_enableValidation && Next == null) @@ -53,16 +61,16 @@ protected override void StartListeningCore(WeakReference reference) } } - if (accessor == null) - { - throw new NotSupportedException( + _accessor = accessor ?? throw new NotSupportedException( $"Could not find a matching property accessor for {PropertyName}."); - } - - _accessor = accessor; accessor.Subscribe(ValueChanged); } + private IPropertyAccessorPlugin GetPropertyAccessorPluginForObject(object target) + { + return ExpressionObserver.PropertyAccessors.FirstOrDefault(x => x.Match(target, PropertyName)); + } + protected override void StopListeningCore() { _accessor.Dispose(); diff --git a/src/Avalonia.Base/Data/Core/StreamNode.cs b/src/Avalonia.Base/Data/Core/StreamNode.cs index 6fc178e7f80..17b5951ed82 100644 --- a/src/Avalonia.Base/Data/Core/StreamNode.cs +++ b/src/Avalonia.Base/Data/Core/StreamNode.cs @@ -3,36 +3,55 @@ using System; using System.Reactive.Linq; +using Avalonia.Data.Core.Plugins; namespace Avalonia.Data.Core { public class StreamNode : ExpressionNode { + private IStreamPlugin _customPlugin = null; private IDisposable _subscription; public override string Description => "^"; + public StreamNode() { } + + public StreamNode(IStreamPlugin customPlugin) + { + _customPlugin = customPlugin; + } + protected override void StartListeningCore(WeakReference reference) { + GetPlugin(reference)?.Start(reference).Subscribe(ValueChanged); + } + + protected override void StopListeningCore() + { + _subscription?.Dispose(); + _subscription = null; + } + + private IStreamPlugin GetPlugin(WeakReference reference) + { + if (_customPlugin != null) + { + return _customPlugin; + } + foreach (var plugin in ExpressionObserver.StreamHandlers) { if (plugin.Match(reference)) { - _subscription = plugin.Start(reference).Subscribe(ValueChanged); - return; + return plugin; } } - // TODO: Improve error. + // TODO: Improve error ValueChanged(new BindingNotification( new MarkupBindingChainException("Stream operator applied to unsupported type", Description), BindingErrorType.Error)); - } - - protected override void StopListeningCore() - { - _subscription?.Dispose(); - _subscription = null; + return null; } } } diff --git a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj index 1b4424a050a..eb9b1c2fb51 100644 --- a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj +++ b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj @@ -45,9 +45,15 @@ Markup/%(RecursiveDir)%(FileName)%(Extension) + + Markup/%(RecursiveDir)%(FileName)%(Extension) + Markup/%(RecursiveDir)%(FileName)%(Extension) - + + + Markup/%(RecursiveDir)%(FileName)%(Extension) + diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index dfa036b1f2c..472afab0ae3 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -16,6 +16,12 @@ + + + + + + @@ -41,6 +47,7 @@ + @@ -58,6 +65,7 @@ + @@ -67,6 +75,7 @@ + @@ -78,7 +87,9 @@ - + + global,Markup,%(Aliases) + diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindingExtension.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindingExtension.cs new file mode 100644 index 00000000000..bc1e2cdd367 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindingExtension.cs @@ -0,0 +1,75 @@ +extern alias Markup; +using System; +using Avalonia.Data; +using Avalonia.Controls; +using Avalonia.Styling; +using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings; +using Avalonia.Data.Core; + +using SourceMode = Markup::Avalonia.Markup.Parsers.SourceMode; +using Avalonia.Data.Converters; + +namespace Avalonia.Markup.Xaml.MarkupExtensions +{ + public class CompiledBindingExtension : BindingBase + { + public CompiledBindingExtension() + { + Path = new CompiledBindingPath(); + } + + public CompiledBindingExtension(CompiledBindingPath path) + { + Path = path; + } + + public CompiledBindingExtension ProvideValue(IServiceProvider provider) + { + return new CompiledBindingExtension + { + Path = Path, + Converter = Converter, + FallbackValue = FallbackValue, + Mode = Mode, + Priority = Priority, + StringFormat = StringFormat, + DefaultAnchor = new WeakReference(GetDefaultAnchor(provider)) + }; + } + + private static object GetDefaultAnchor(IServiceProvider provider) + { + // If the target is not a control, so we need to find an anchor that will let us look + // up named controls and style resources. First look for the closest IControl in + // the context. + object anchor = provider.GetFirstParent(); + + // If a control was not found, then try to find the highest-level style as the XAML + // file could be a XAML file containing only styles. + return anchor ?? + provider.GetService()?.RootObject as IStyle ?? + provider.GetLastParent(); + } + + protected override ExpressionObserver CreateExpressionObserver(IAvaloniaObject target, AvaloniaProperty targetProperty, object anchor, bool enableDataValidation) + { + if (Path.SourceMode == SourceMode.Data) + { + return CreateDataContextObserver( + target, + Path.BuildExpression(enableDataValidation), + targetProperty == StyledElement.DataContextProperty, + anchor); + } + else + { + return CreateSourceObserver( + (target as IStyledElement) ?? (anchor as IStyledElement), + Path.BuildExpression(enableDataValidation)); + } + } + + [ConstructorArgument("path")] + public CompiledBindingPath Path { get; set; } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs new file mode 100644 index 00000000000..81b9bd29b9e --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs @@ -0,0 +1,177 @@ +extern alias Markup; +using System; +using System.Collections.Generic; +using Avalonia.Data.Core; +using Avalonia.Data.Core.Plugins; +using Avalonia.Markup.Parsers.Nodes; +using SourceMode = Markup::Avalonia.Markup.Parsers.SourceMode; + +namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings +{ + public class CompiledBindingPath + { + private readonly List _elements = new List(); + + public CompiledBindingPath() { } + + internal CompiledBindingPath(IEnumerable bindingPath) + { + _elements = new List(bindingPath); + } + + public ExpressionNode BuildExpression(bool enableValidation) + { + ExpressionNode pathRoot = null; + ExpressionNode path = null; + foreach (var element in _elements) + { + ExpressionNode node = null; + switch (element) + { + case NotExpressionPathElement _: + node = new LogicalNotNode(); + break; + case PropertyElement prop: + node = new PropertyAccessorNode(prop.Property.Name, enableValidation, new PropertyInfoAccessorPlugin(prop.Property)); + break; + case AncestorPathElement ancestor: + node = new FindAncestorNode(ancestor.AncestorType, ancestor.Level); + break; + case SelfPathElement _: + node = new SelfNode(); + break; + case ElementNameElement name: + node = new ElementNameNode(name.Name); + break; + case IStronglyTypedStreamElement stream: + node = new StreamNode(stream.CreatePlugin()); + break; + default: + throw new InvalidOperationException($"Unknown binding path element type {element.GetType().FullName}"); + } + + path = pathRoot is null ? (pathRoot = node) : path.Next = node; + } + + return pathRoot ?? new EmptyExpressionNode(); + } + + public SourceMode SourceMode => _elements.Count > 0 && _elements[0] is IControlSourceBindingPathElement ? SourceMode.Control : SourceMode.Data; + } + + public class CompiledBindingPathBuilder + { + private List _elements = new List(); + + public CompiledBindingPathBuilder Not() + { + _elements.Add(new NotExpressionPathElement()); + return this; + } + + public CompiledBindingPathBuilder Property(INotifyingPropertyInfo info) + { + _elements.Add(new PropertyElement(info)); + return this; + } + + public CompiledBindingPathBuilder StreamTask() + { + _elements.Add(new TaskStreamPathElement()); + return this; + } + + public CompiledBindingPathBuilder StreamObservable() + { + _elements.Add(new ObservableStreamPathElement()); + return this; + } + + public CompiledBindingPathBuilder Self() + { + _elements.Add(new SelfPathElement()); + return this; + } + + public CompiledBindingPathBuilder Ancestor(Type ancestorType, int level) + { + _elements.Add(new AncestorPathElement(ancestorType, level)); + return this; + } + + public CompiledBindingPathBuilder ElementName(string name) + { + _elements.Add(new ElementNameElement(name)); + return this; + } + + public CompiledBindingPath Build() => new CompiledBindingPath(_elements); + } + + public interface ICompiledBindingPathElement + { + } + + internal interface IControlSourceBindingPathElement { } + + internal class NotExpressionPathElement : ICompiledBindingPathElement + { + public static readonly NotExpressionPathElement Instance = new NotExpressionPathElement(); + } + + internal class PropertyElement : ICompiledBindingPathElement + { + public PropertyElement(INotifyingPropertyInfo property) + { + Property = property; + } + + public INotifyingPropertyInfo Property { get; } + } + + internal interface IStronglyTypedStreamElement : ICompiledBindingPathElement + { + IStreamPlugin CreatePlugin(); + } + + internal class TaskStreamPathElement : IStronglyTypedStreamElement + { + public static readonly TaskStreamPathElement Instance = new TaskStreamPathElement(); + + public IStreamPlugin CreatePlugin() => new TaskStreamPlugin(); + } + + internal class ObservableStreamPathElement : IStronglyTypedStreamElement + { + public static readonly ObservableStreamPathElement Instance = new ObservableStreamPathElement(); + + public IStreamPlugin CreatePlugin() => new ObservableStreamPlugin(); + } + + internal class SelfPathElement : ICompiledBindingPathElement, IControlSourceBindingPathElement + { + public static readonly SelfPathElement Instance = new SelfPathElement(); + } + + internal class AncestorPathElement : ICompiledBindingPathElement, IControlSourceBindingPathElement + { + public AncestorPathElement(Type ancestorType, int level) + { + AncestorType = ancestorType; + Level = level; + } + + public Type AncestorType { get; } + public int Level { get; } + } + + internal class ElementNameElement : ICompiledBindingPathElement, IControlSourceBindingPathElement + { + public ElementNameElement(string name) + { + Name = name; + } + + public string Name { get; } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/NotifyingPropertyInfoHelpers.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/NotifyingPropertyInfoHelpers.cs new file mode 100644 index 00000000000..0af201ade80 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/NotifyingPropertyInfoHelpers.cs @@ -0,0 +1,255 @@ +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.ComponentModel; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Text; +using Avalonia.Data.Core; +using Avalonia.Reactive; +using Avalonia.Utilities; + +namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings +{ + public static class NotifyingPropertyInfoHelpers + { + public static INotifyingPropertyInfo CreateINPCPropertyInfo(IPropertyInfo basePropertyInfo) + => new INPCPropertyInfo(basePropertyInfo); + + public static INotifyingPropertyInfo CreateAvaloniaPropertyInfo(AvaloniaProperty property) + => new AvaloniaPropertyInfo(property); + + public static INotifyingPropertyInfo CreateIndexerPropertyInfo(IPropertyInfo basePropertyInfo, int argument) + => new IndexerInfo(basePropertyInfo, argument); + } + + public interface INotifyingPropertyInfo : IPropertyInfo + { + void OnPropertyChanged(object target, EventHandler handler); + void RemoveListener(object target, EventHandler handler); + } + + internal abstract class NotifyingPropertyInfoBase : INotifyingPropertyInfo + { + private readonly IPropertyInfo _base; + protected readonly ConditionalWeakTable _changedHandlers = new ConditionalWeakTable(); + + public NotifyingPropertyInfoBase(IPropertyInfo baseProperty) + { + _base = baseProperty; + } + + public string Name => _base.Name; + + public bool CanSet => _base.CanSet; + + public bool CanGet => _base.CanGet; + + public Type PropertyType => _base.PropertyType; + + public object Get(object target) + { + return _base.Get(target); + } + + public void Set(object target, object value) + { + _base.Set(target, value); + } + + public void OnPropertyChanged(object target, EventHandler handler) + { + if (ValidateTargetType(target)) + { + return; + } + + if (_changedHandlers.TryGetValue(target, out var value)) + { + _changedHandlers.Remove(target); + _changedHandlers.Add(target, (EventHandler)Delegate.Combine(value, handler)); + } + else + { + _changedHandlers.Add(target, handler); + SubscribeToChangesForNewTarget(target); + } + } + + protected abstract bool ValidateTargetType(object target); + + protected abstract void SubscribeToChangesForNewTarget(object target); + + protected abstract void UnsubscribeToChangesForTarget(object target); + + protected bool TryGetHandlersForTarget(object target, out EventHandler handlers) + => _changedHandlers.TryGetValue(target, out handlers); + + public void RemoveListener(object target, EventHandler handler) + { + if (!ValidateTargetType(target)) + { + return; + } + + if (_changedHandlers.TryGetValue(target, out var value)) + { + _changedHandlers.Remove(target); + EventHandler modified = (EventHandler)Delegate.Remove(value, handler); + if (modified != null) + { + _changedHandlers.Add(target, modified); + } + else + { + UnsubscribeToChangesForTarget(target); + } + } + } + } + + internal class INPCPropertyInfo : NotifyingPropertyInfoBase + { + public INPCPropertyInfo(IPropertyInfo baseProperty) + :base(baseProperty) + { + } + + void OnNotifyPropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (Name == e.PropertyName && TryGetHandlersForTarget(sender, out var handlers)) + { + handlers(sender, EventArgs.Empty); + } + } + + protected override bool ValidateTargetType(object target) + { + return target is INotifyPropertyChanged; + } + + protected override void SubscribeToChangesForNewTarget(object target) + { + if (target is INotifyPropertyChanged inpc) + { + WeakEventHandlerManager.Subscribe( + inpc, + nameof(INotifyPropertyChanged.PropertyChanged), + OnNotifyPropertyChanged); + } + } + + protected override void UnsubscribeToChangesForTarget(object target) + { + if (target is INotifyPropertyChanged) + { + WeakEventHandlerManager.Unsubscribe( + target, + nameof(INotifyPropertyChanged.PropertyChanged), + OnNotifyPropertyChanged); + } + } + } + + internal class AvaloniaPropertyInfo : NotifyingPropertyInfoBase + { + private readonly AvaloniaProperty _base; + + public AvaloniaPropertyInfo(AvaloniaProperty baseProperty) + :base(baseProperty) + { + _base = baseProperty; + } + + protected override void SubscribeToChangesForNewTarget(object target) + { + IAvaloniaObject obj = (IAvaloniaObject)target; + obj.PropertyChanged += OnPropertyChanged; + } + + private void OnPropertyChanged(object sender, AvaloniaPropertyChangedEventArgs e) + { + if (_base == e.Property && TryGetHandlersForTarget(sender, out var handlers)) + { + handlers(sender, EventArgs.Empty); + } + } + + protected override void UnsubscribeToChangesForTarget(object target) + { + ((IAvaloniaObject)target).PropertyChanged -= OnPropertyChanged; + } + + protected override bool ValidateTargetType(object target) + { + return target is IAvaloniaObject; + } + } + + internal class IndexerInfo : INPCPropertyInfo + { + private int _index; + + public IndexerInfo(IPropertyInfo baseProperty, int indexerArgument) : base(baseProperty) + { + _index = indexerArgument; + } + + protected override void SubscribeToChangesForNewTarget(object target) + { + base.SubscribeToChangesForNewTarget(target); + if (target is INotifyCollectionChanged incc) + { + WeakEventHandlerManager.Subscribe( + incc, + nameof(INotifyCollectionChanged.CollectionChanged), + OnNotifyCollectionChanged); + } + } + + protected override void UnsubscribeToChangesForTarget(object target) + { + base.UnsubscribeToChangesForTarget(target); + if (target is INotifyCollectionChanged) + { + WeakEventHandlerManager.Unsubscribe( + target, + nameof(INotifyCollectionChanged.CollectionChanged), + OnNotifyCollectionChanged); + } + } + + void OnNotifyCollectionChanged(object sender, NotifyCollectionChangedEventArgs args) + { + if (ShouldNotifyListeners(args) && TryGetHandlersForTarget(sender, out var handlers)) + { + handlers(sender, EventArgs.Empty); + } + } + + bool ShouldNotifyListeners(NotifyCollectionChangedEventArgs e) + { + switch (e.Action) + { + case NotifyCollectionChangedAction.Add: + return _index >= e.NewStartingIndex; + case NotifyCollectionChangedAction.Remove: + return _index >= e.OldStartingIndex; + case NotifyCollectionChangedAction.Replace: + return _index >= e.NewStartingIndex && + _index < e.NewStartingIndex + e.NewItems.Count; + case NotifyCollectionChangedAction.Move: + return (_index >= e.NewStartingIndex && + _index < e.NewStartingIndex + e.NewItems.Count) || + (_index >= e.OldStartingIndex && + _index < e.OldStartingIndex + e.OldItems.Count); + case NotifyCollectionChangedAction.Reset: + return true; + } + return false; + } + + protected override bool ValidateTargetType(object target) + => base.ValidateTargetType(target) || target is INotifyCollectionChanged; + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/ObservableStreamPlugin.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/ObservableStreamPlugin.cs new file mode 100644 index 00000000000..361cbef7407 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/ObservableStreamPlugin.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Reactive.Linq; +using System.Text; +using Avalonia.Data.Core.Plugins; + +namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings +{ + class ObservableStreamPlugin : IStreamPlugin + { + public bool Match(WeakReference reference) + { + return reference is IObservable; + } + + public IObservable Start(WeakReference reference) + { + var target = reference.Target as IObservable; + + if (target is IObservable obj) + { + return obj; + } + + return target.Select(x => (object)x); + } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/PropertyInfoAccessorPlugin.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/PropertyInfoAccessorPlugin.cs new file mode 100644 index 00000000000..ac3108e847a --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/PropertyInfoAccessorPlugin.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text; +using Avalonia.Data; +using Avalonia.Data.Core.Plugins; + +namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings +{ + class PropertyInfoAccessorPlugin : IPropertyAccessorPlugin + { + private readonly INotifyingPropertyInfo _propertyInfo; + + public PropertyInfoAccessorPlugin(INotifyingPropertyInfo propertyInfo) + { + _propertyInfo = propertyInfo; + } + + public bool Match(object obj, string propertyName) + { + throw new InvalidOperationException("The PropertyInfoAccessorPlugin does not support dynamic matching"); + } + + public IPropertyAccessor Start(WeakReference reference, string propertyName) + { + Debug.Assert(_propertyInfo.Name == propertyName); + return new Accessor(reference, _propertyInfo); + } + + class Accessor : PropertyAccessorBase + { + private WeakReference _reference; + private INotifyingPropertyInfo _propertyInfo; + private bool _eventRaised; + + public Accessor(WeakReference reference, INotifyingPropertyInfo propertyInfo) + { + _reference = reference; + _propertyInfo = propertyInfo; + } + + public override Type PropertyType => _propertyInfo.PropertyType; + + public override object Value + { + get + { + var o = _reference.Target; + return (o != null) ? _propertyInfo.Get(o) : null; + } + } + + public override bool SetValue(object value, BindingPriority priority) + { + if (_propertyInfo.CanSet) + { + _eventRaised = false; + _propertyInfo.Set(_reference.Target, value); + + if (!_eventRaised) + { + SendCurrentValue(); + } + + return true; + } + + return false; + } + + void OnChanged(object sender, EventArgs e) + { + _eventRaised = true; + SendCurrentValue(); + } + + protected override void SubscribeCore() + { + SendCurrentValue(); + SubscribeToChanges(); + } + + protected override void UnsubscribeCore() + { + var target = _reference.Target; + if (target != null) + { + _propertyInfo.RemoveListener(target, OnChanged); + } + } + + private void SendCurrentValue() + { + try + { + var value = Value; + PublishValue(value); + } + catch { } + } + + private void SubscribeToChanges() + { + var target = _reference.Target; + if (target != null) + { + _propertyInfo.OnPropertyChanged(target, OnChanged); + } + } + } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/TaskStreamPlugin.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/TaskStreamPlugin.cs new file mode 100644 index 00000000000..30fd1fdaa28 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/TaskStreamPlugin.cs @@ -0,0 +1,53 @@ +using System; +using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Threading.Tasks; +using Avalonia.Data; +using Avalonia.Data.Core.Plugins; + +namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings +{ + class TaskStreamPlugin : IStreamPlugin + { + public bool Match(WeakReference reference) + { + return reference.Target is Task; + } + + public IObservable Start(WeakReference reference) + { + if (!(reference.Target is Task task)) + { + return Observable.Empty(); + } + + switch (task.Status) + { + case TaskStatus.RanToCompletion: + case TaskStatus.Faulted: + return HandleCompleted(task); + default: + var subject = new Subject(); + task.ContinueWith( + x => HandleCompleted(task).Subscribe(subject), + TaskScheduler.FromCurrentSynchronizationContext()) + .ConfigureAwait(false); + return subject; + } + } + + + private static IObservable HandleCompleted(Task task) + { + switch (task.Status) + { + case TaskStatus.RanToCompletion: + return Observable.Return((object)task.Result); + case TaskStatus.Faulted: + return Observable.Return(new BindingNotification(task.Exception, BindingErrorType.Error)); + default: + throw new AvaloniaInternalException("HandleCompleted called for non-completed Task."); + } + } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs index 933d39bad82..9be4c0aa037 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs @@ -48,13 +48,17 @@ void InsertBefore(params IXamlIlAstTransformer[] t) new AvaloniaXamlIlSetterTransformer(), new AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer(), new AvaloniaXamlIlConstructorServiceProviderTransformer(), - new AvaloniaXamlIlTransitionsTypeMetadataTransformer(), - new AvaloniaXamlIlDataContextTypeTransformer() + new AvaloniaXamlIlTransitionsTypeMetadataTransformer() ); - + // After everything else - - Transformers.Add(new AddNameScopeRegistration()); + + InsertBefore( + new AddNameScopeRegistration(), + new AvaloniaXamlIlDataContextTypeTransformer(), + new AvaloniaXamlIlBindingPathTransformer() + ); + Transformers.Add(new AvaloniaXamlIlMetadataRemover()); } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AddNameScopeRegistration.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AddNameScopeRegistration.cs index 33056fa3e87..87b5ec72fed 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AddNameScopeRegistration.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AddNameScopeRegistration.cs @@ -36,59 +36,65 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA } if (value != null) + { + var objectType = context.ParentNodes().OfType().FirstOrDefault()?.Type.GetClrType(); return new XamlIlManipulationGroupNode(pa) { Children = { pa, - new ScopeRegistrationNode(value) + new ScopeRegistrationNode(value, objectType) } }; + } } return node; } + } - class ScopeRegistrationNode : XamlIlAstNode, IXamlIlAstManipulationNode, IXamlIlAstEmitableNode + class ScopeRegistrationNode : XamlIlAstNode, IXamlIlAstManipulationNode, IXamlIlAstEmitableNode + { + public IXamlIlAstValueNode Value { get; set; } + public IXamlIlType ControlType { get; } + + public ScopeRegistrationNode(IXamlIlAstValueNode value, IXamlIlType controlType) : base(value) { - public IXamlIlAstValueNode Value { get; set; } - public ScopeRegistrationNode(IXamlIlAstValueNode value) : base(value) - { - Value = value; - } + Value = value; + ControlType = controlType; + } - public override void VisitChildren(IXamlIlAstVisitor visitor) - => Value = (IXamlIlAstValueNode)Value.Visit(visitor); + public override void VisitChildren(IXamlIlAstVisitor visitor) + => Value = (IXamlIlAstValueNode)Value.Visit(visitor); - public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + var exts = context.Configuration.TypeSystem.GetType("Avalonia.Controls.NameScopeExtensions"); + var findNameScope = exts.FindMethod(m => m.Name == "FindNameScope"); + var registerMethod = findNameScope.ReturnType.FindMethod(m => m.Name == "Register"); + using (var targetLoc = context.GetLocal(context.Configuration.WellKnownTypes.Object)) + using (var nameScopeLoc = context.GetLocal(findNameScope.ReturnType)) { - var exts = context.Configuration.TypeSystem.GetType("Avalonia.Controls.NameScopeExtensions"); - var findNameScope = exts.FindMethod(m => m.Name == "FindNameScope"); - var registerMethod = findNameScope.ReturnType.FindMethod(m => m.Name == "Register"); - using (var targetLoc = context.GetLocal(context.Configuration.WellKnownTypes.Object)) - using (var nameScopeLoc = context.GetLocal(findNameScope.ReturnType)) - { - var exit = codeGen.DefineLabel(); - codeGen - // var target = {pop} - .Stloc(targetLoc.Local) - // var scope = target.FindNameScope() - .Ldloc(targetLoc.Local) - .Castclass(findNameScope.Parameters[0]) - .EmitCall(findNameScope) - .Stloc(nameScopeLoc.Local) - // if({scope} != null) goto call; - .Ldloc(nameScopeLoc.Local) - .Brfalse(exit) - .Ldloc(nameScopeLoc.Local); - context.Emit(Value, codeGen, Value.Type.GetClrType()); - codeGen - .Ldloc(targetLoc.Local) - .EmitCall(registerMethod) - .MarkLabel(exit); - } - return XamlIlNodeEmitResult.Void(1); + var exit = codeGen.DefineLabel(); + codeGen + // var target = {pop} + .Stloc(targetLoc.Local) + // var scope = target.FindNameScope() + .Ldloc(targetLoc.Local) + .Castclass(findNameScope.Parameters[0]) + .EmitCall(findNameScope) + .Stloc(nameScopeLoc.Local) + // if({scope} != null) goto call; + .Ldloc(nameScopeLoc.Local) + .Brfalse(exit) + .Ldloc(nameScopeLoc.Local); + context.Emit(Value, codeGen, Value.Type.GetClrType()); + codeGen + .Ldloc(targetLoc.Local) + .EmitCall(registerMethod) + .MarkLabel(exit); } + return XamlIlNodeEmitResult.Void(1); } } } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs new file mode 100644 index 00000000000..cd7d9f5d333 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using XamlIl; +using XamlIl.Ast; +using XamlIl.Transform; +using XamlIl.TypeSystem; + +namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers +{ + class AvaloniaXamlIlBindingPathTransformer : IXamlIlAstTransformer + { + public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + { + if (node is XamlIlAstObjectNode binding && binding.Type.GetClrType().Equals(context.GetAvaloniaTypes().CompiledBindingExtension)) + { + IXamlIlType startType; + var parentDataContextNode = context.ParentNodes().OfType().FirstOrDefault(); + if (parentDataContextNode is null) + { + throw new XamlIlParseException("Cannot parse a compiled binding without an explicit x:DataContextType directive to give a starting data type for bindings.", binding); + } + + startType = parentDataContextNode.DataContextType; + + XamlIlBindingPathHelper.UpdateCompiledBindingExtension(context, binding, startType); + } + + return node; + } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs index 5d68a725147..7e13b8a18ac 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs @@ -1,18 +1,25 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text; +using Avalonia.Markup.Parsers; +using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers; +using Avalonia.Utilities; using XamlIl; using XamlIl.Ast; using XamlIl.Transform; +using XamlIl.TypeSystem; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { class AvaloniaXamlIlDataContextTypeTransformer : IXamlIlAstTransformer { + private const string AvaloniaNs = "https://github.com/avaloniaui"; public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) { if (node is XamlIlAstObjectNode on) { + AvaloniaXamlIlDataContextTypeMetadataNode calculatedDataContextTypeNode = null; foreach (var child in on.Children) { if (child is XamlIlAstXmlDirective directive) @@ -23,11 +30,44 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA && directive.Values[0] is XamlIlTypeExtensionNode dataContextType) { on.Children.Remove(child); - return new AvaloniaXamlIlDataContextTypeMetadataNode(on, dataContextType.Value); + return new AvaloniaXamlIlDataContextTypeMetadataNode(on, dataContextType.Value.GetClrType()); } } + else if (child is XamlIlAstXamlPropertyValueNode pv + && pv.Property is XamlIlAstNamePropertyReference pref + && pref.Name == "DataContext" + && pref.DeclaringType is XamlIlAstXmlTypeReference tref + && tref.Name == "StyledElement" + && tref.XmlNamespace == AvaloniaNs) + { + var bindingType = context.GetAvaloniaTypes().IBinding; + if (!pv.Values[0].Type.GetClrType().GetAllInterfaces().Contains(bindingType)) + { + calculatedDataContextTypeNode = new AvaloniaXamlIlDataContextTypeMetadataNode(on, pv.Values[0].Type.GetClrType()); + } + else if(pv.Values[0].Type.GetClrType().Equals(context.GetAvaloniaTypes().CompiledBindingExtension) + && pv.Values[0] is XamlIlAstObjectNode binding) + { + IXamlIlType startType; + var parentDataContextNode = context.ParentNodes().OfType().FirstOrDefault(); + if (parentDataContextNode is null) + { + throw new XamlIlParseException("Cannot parse a compiled binding without an explicit x:DataContextType directive to give a starting data type for bindings.", binding); + } + + startType = parentDataContextNode.DataContextType; + + var bindingResultType = XamlIlBindingPathHelper.UpdateCompiledBindingExtension(context, binding, startType); + calculatedDataContextTypeNode = new AvaloniaXamlIlDataContextTypeMetadataNode(on, bindingResultType); + } + } + } + if (!(calculatedDataContextTypeNode is null)) + { + return calculatedDataContextTypeNode; } } + // TODO: Add node for DataTemplate scope. return node; } @@ -35,9 +75,9 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA class AvaloniaXamlIlDataContextTypeMetadataNode : XamlIlValueWithSideEffectNodeBase { - public IXamlIlAstTypeReference DataContextType { get; set; } + public IXamlIlType DataContextType { get; set; } - public AvaloniaXamlIlDataContextTypeMetadataNode(IXamlIlAstValueNode value, IXamlIlAstTypeReference targetType) + public AvaloniaXamlIlDataContextTypeMetadataNode(IXamlIlAstValueNode value, IXamlIlType targetType) : base(value, value) { DataContextType = targetType; diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs index bbacef43ddf..0adbba72b14 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs @@ -187,6 +187,11 @@ public void EmitCall(IXamlIlEmitter emitter) emitter.Unbox_Any(Parent.PropertyType); } + + public IXamlIlMethod MakeGenericMethod(IReadOnlyList typeArguments) + { + throw new System.InvalidOperationException(); + } } } } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs index f9f59dfb877..740d62e85e4 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs @@ -23,7 +23,11 @@ class AvaloniaXamlIlWellKnownTypes public IXamlIlType ClrPropertyInfo { get; } public IXamlIlType PropertyPath { get; } public IXamlIlType PropertyPathBuilder { get; } - + public IXamlIlType NotifyingPropertyInfoHelpers { get; } + public IXamlIlType CompiledBindingPathBuilder { get; } + public IXamlIlType CompiledBindingPath { get; } + public IXamlIlType CompiledBindingExtension { get; } + public AvaloniaXamlIlWellKnownTypes(XamlIlTransformerConfiguration cfg) { XamlIlTypes = cfg.WellKnownTypes; @@ -47,6 +51,10 @@ public AvaloniaXamlIlWellKnownTypes(XamlIlTransformerConfiguration cfg) ClrPropertyInfo = cfg.TypeSystem.GetType("Avalonia.Data.Core.ClrPropertyInfo"); PropertyPath = cfg.TypeSystem.GetType("Avalonia.Data.Core.PropertyPath"); PropertyPathBuilder = cfg.TypeSystem.GetType("Avalonia.Data.Core.PropertyPathBuilder"); + NotifyingPropertyInfoHelpers = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings.NotifyingPropertyInfoHelpers"); + CompiledBindingPathBuilder = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings.CompiledBindingPathBuilder"); + CompiledBindingPath = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings.CompiledBindingPath"); + CompiledBindingExtension = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindingExtension"); } } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs new file mode 100644 index 00000000000..c98e2029c45 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs @@ -0,0 +1,459 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Linq; +using Avalonia.Markup.Parsers; +using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers; +using XamlIl.Ast; +using XamlIl.Transform; +using XamlIl.Transform.Transformers; +using XamlIl.TypeSystem; +using XamlIl; +using Avalonia.Utilities; + +namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions +{ + static class XamlIlBindingPathHelper + { + public static IXamlIlType UpdateCompiledBindingExtension(XamlIlAstTransformationContext context, XamlIlAstObjectNode binding, IXamlIlType startType) + { + IXamlIlType bindingResultType = null; + if (binding.Arguments.Count > 0 && binding.Arguments[0] is XamlIlAstTextNode bindingPathText) + { + var reader = new CharacterReader(bindingPathText.Text.AsSpan()); + var grammar = BindingExpressionGrammar.Parse(ref reader); + + var transformed = TransformBindingPath( + context, + bindingPathText, + startType, + grammar.Nodes); + + bindingResultType = transformed.BindingResultType; + binding.Arguments[0] = transformed; + } + else + { + var bindingPathAssignment = binding.Children.OfType() + .FirstOrDefault(v => v.Property.GetClrProperty().Name == "Path"); + + if (bindingPathAssignment is null) + { + return startType; + } + + if (bindingPathAssignment.Values[0] is XamlIlAstTextNode pathValue) + { + var reader = new CharacterReader(pathValue.Text.AsSpan()); + var grammar = BindingExpressionGrammar.Parse(ref reader); + + var transformed = TransformBindingPath( + context, + pathValue, + startType, + grammar.Nodes); + + bindingResultType = transformed.BindingResultType; + bindingPathAssignment.Values[0] = transformed; + } + else + { + throw new InvalidOperationException(); + } + } + + return bindingResultType; + } + + private static IXamlIlBindingPathNode TransformBindingPath(XamlIlAstTransformationContext context, IXamlIlLineInfo lineInfo, IXamlIlType startType, IEnumerable bindingExpression) + { + bool appendNotNode = false; + List nodes = new List(); + foreach (var astNode in bindingExpression) + { + var targetType = nodes.Count == 0 ? startType : nodes[nodes.Count - 1].Type; + switch (astNode) + { + case BindingExpressionGrammar.EmptyExpressionNode _: + break; + case BindingExpressionGrammar.NotNode _: + appendNotNode = !appendNotNode; + break; + case BindingExpressionGrammar.StreamNode _: + var observableType = targetType.GetAllInterfaces().FirstOrDefault(i => i.GenericTypeDefinition.Equals(context.Configuration.TypeSystem.FindType("System.IObservable`1"))); + if (observableType != null) + { + nodes.Add(new XamlIlStreamObservablePathElementNode(observableType.GenericArguments[0])); + break; + } + bool foundTask = false; + for (var currentType = targetType; currentType != null; currentType = currentType.BaseType) + { + if (currentType.GenericTypeDefinition.Equals(context.Configuration.TypeSystem.GetType("System.Threading.Tasks.Task`1"))) + { + foundTask = true; + nodes.Add(new XamlIlStreamTaskPathElementNode(currentType.GenericArguments[0])); + break; + } + } + if (foundTask) + { + break; + } + throw new XamlIlParseException($"Compiled bindings do not support stream bindings for objects of type {targetType.FullName}.", lineInfo); + case BindingExpressionGrammar.PropertyNameNode propName: + var avaloniaPropertyFieldNameMaybe = propName.PropertyName + "Property"; + var avaloniaPropertyFieldMaybe = targetType.GetAllFields().FirstOrDefault(f => + f.IsStatic && f.IsPublic && f.Name == avaloniaPropertyFieldNameMaybe); + + if (avaloniaPropertyFieldMaybe != null) + { + nodes.Add(new XamlIlAvaloniaPropertyPropertyPathElementNode(avaloniaPropertyFieldMaybe, + XamlIlAvaloniaPropertyHelper.GetAvaloniaPropertyType(avaloniaPropertyFieldMaybe, context.GetAvaloniaTypes(), lineInfo))); + } + else + { + var clrProperty = targetType.GetAllProperties().FirstOrDefault(p => p.Name == propName.PropertyName); + nodes.Add(new XamlIlClrPropertyPathElementNode(clrProperty)); + } + break; + case BindingExpressionGrammar.IndexerNode indexer: + { + IXamlIlProperty property = null; + for (var currentType = targetType; currentType != null; currentType = currentType.BaseType) + { + var defaultMemberAttribute = currentType.CustomAttributes.FirstOrDefault(x => x.Type.GetFullName() == "System.Reflection.DefaultMemberAttribute"); + if (defaultMemberAttribute != null) + { + property = targetType.GetAllProperties().FirstOrDefault(x => x.Name == (string)defaultMemberAttribute.Parameters[0]); + break; + } + + }; + if (property is null) + { + throw new XamlIlParseException($"The type '${targetType}' does not have an indexer.", lineInfo); + } + + IEnumerable parameters = property.IndexerParameters; + + List values = new List(); + int currentParamIndex = 0; + foreach (var param in parameters) + { + var textNode = new XamlIlAstTextNode(lineInfo, indexer.Arguments[currentParamIndex]); + if (!XamlIlTransformHelpers.TryGetCorrectlyTypedValue(context, textNode, + param, out var converted)) + throw new XamlIlParseException( + $"Unable to convert indexer parameter value of '{indexer.Arguments[currentParamIndex]}' to {param.GetFqn()}", + textNode); + + values.Add(converted); + currentParamIndex++; + } + + bool isNotifyingCollection = targetType.GetAllInterfaces().Any(i => i.FullName == "System.Collections.Specialized.INotifyCollectionChanged"); + + nodes.Add(new XamlIlClrIndexerPathElementNode(property, values, isNotifyingCollection)); + break; + } + case BindingExpressionGrammar.AttachedPropertyNameNode attachedProp: + var avaloniaPropertyFieldName = attachedProp.PropertyName + "Property"; + var avaloniaPropertyField = GetType(attachedProp.Namespace, attachedProp.TypeName).GetAllFields().FirstOrDefault(f => + f.IsStatic && f.IsPublic && f.Name == avaloniaPropertyFieldName); + nodes.Add(new XamlIlAvaloniaPropertyPropertyPathElementNode(avaloniaPropertyField, + XamlIlAvaloniaPropertyHelper.GetAvaloniaPropertyType(avaloniaPropertyField, context.GetAvaloniaTypes(), lineInfo))); + break; + case BindingExpressionGrammar.SelfNode _: + nodes.Add(new SelfPathElementNode(targetType)); + break; + case BindingExpressionGrammar.AncestorNode ancestor: + nodes.Add(new FindAncestorPathElementNode(GetType(ancestor.Namespace, ancestor.TypeName), ancestor.Level)); + break; + case BindingExpressionGrammar.NameNode elementName: + var elementType = ScopeRegistrationFinder.GetControlType(context, context.RootObject, elementName.Name); + if (elementType is null) + { + throw new XamlIlParseException($"Unable to find element '{elementName.Name}' in the current namescope. Unable to use a compiled binding with a name binding if the name cannot be found at compile time.", lineInfo); + } + nodes.Add(new ElementNamePathElementNode(elementName.Name, elementType)); + break; + } + + } + + if (appendNotNode) + { + // TODO: Fix Not behavior + nodes.Add(new XamlIlNotPathElementNode(context.Configuration.WellKnownTypes.Boolean)); + } + + return new XamlIlBindingPathNode(lineInfo, context.GetAvaloniaTypes().CompiledBindingPath, nodes); + + IXamlIlType GetType(string ns, string name) + { + return XamlIlTypeReferenceResolver.ResolveType(context, $"{ns}:{name}", false, + lineInfo, true).GetClrType(); + } + } + + class ScopeRegistrationFinder : IXamlIlAstTransformer + { + private ScopeRegistrationFinder(string name) + { + Name = name; + } + + string Name { get; } + + IXamlIlType ControlType { get; set; } + + public static IXamlIlType GetControlType(XamlIlAstTransformationContext context, IXamlIlAstNode namescopeRoot, string name) + { + var finder = new ScopeRegistrationFinder(name); + context.Visit(namescopeRoot, finder); + return finder.ControlType; + } + + IXamlIlAstNode IXamlIlAstTransformer.Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + { + if (node is ScopeRegistrationNode registration) + { + if (registration.Value is XamlIlAstTextNode text && text.Text == Name) + { + ControlType = registration.ControlType; + } + } + return node; + } + } + + interface IXamlIlBindingPathElementNode + { + IXamlIlType Type { get; } + + void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen); + } + + class XamlIlNotPathElementNode : IXamlIlBindingPathElementNode + { + public XamlIlNotPathElementNode(IXamlIlType boolType) + { + Type = boolType; + } + + public IXamlIlType Type { get; } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + codeGen.EmitCall(context.GetAvaloniaTypes().CompiledBindingPathBuilder.FindMethod(m => m.Name == "Not")); + } + } + + class XamlIlStreamObservablePathElementNode : IXamlIlBindingPathElementNode + { + public XamlIlStreamObservablePathElementNode(IXamlIlType type) + { + Type = type; + } + + public IXamlIlType Type { get; } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + codeGen.EmitCall(context.GetAvaloniaTypes().CompiledBindingPathBuilder.FindMethod(m => m.Name == "StreamObservable").MakeGenericMethod(new[] { Type })); + } + } + + class XamlIlStreamTaskPathElementNode : IXamlIlBindingPathElementNode + { + public XamlIlStreamTaskPathElementNode(IXamlIlType type) + { + Type = type; + } + + public IXamlIlType Type { get; } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + codeGen.EmitCall(context.GetAvaloniaTypes().CompiledBindingPathBuilder.FindMethod(m => m.Name == "StreamTask").MakeGenericMethod(new[] { Type })); + } + } + + class SelfPathElementNode : IXamlIlBindingPathElementNode + { + public SelfPathElementNode(IXamlIlType type) + { + Type = type; + } + + public IXamlIlType Type { get; } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + codeGen.EmitCall(context.GetAvaloniaTypes().CompiledBindingPathBuilder.FindMethod(m => m.Name == "Self")); + } + } + + class FindAncestorPathElementNode : IXamlIlBindingPathElementNode + { + private readonly int _level; + + public FindAncestorPathElementNode(IXamlIlType ancestorType, int level) + { + Type = ancestorType; + _level = level; + } + + public IXamlIlType Type { get; } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + codeGen.Ldtype(Type) + .Ldc_I4(_level) + .EmitCall(context.GetAvaloniaTypes().CompiledBindingPathBuilder.FindMethod(m => m.Name == "FindAncestor")); + } + } + + class ElementNamePathElementNode : IXamlIlBindingPathElementNode + { + private readonly string _name; + + public ElementNamePathElementNode(string name, IXamlIlType elementType) + { + _name = name; + Type = elementType; + } + + public IXamlIlType Type { get; } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + codeGen.Ldstr(_name) + .EmitCall(context.GetAvaloniaTypes().CompiledBindingPathBuilder.FindMethod(m => m.Name == "ElementName")); + } + } + + class XamlIlAvaloniaPropertyPropertyPathElementNode : IXamlIlBindingPathElementNode + { + private readonly IXamlIlField _field; + + public XamlIlAvaloniaPropertyPropertyPathElementNode(IXamlIlField field, IXamlIlType propertyType) + { + _field = field; + Type = propertyType; + } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + => codeGen + .Ldsfld(_field) + .EmitCall(context.GetAvaloniaTypes() + .NotifyingPropertyInfoHelpers.FindMethod(m => m.Name == "CreateAvaloniaPropertyInfo")) + .EmitCall(context.GetAvaloniaTypes() + .CompiledBindingPathBuilder.FindMethod(m => m.Name == "Property")); + + public IXamlIlType Type { get; } + } + + class XamlIlClrPropertyPathElementNode : IXamlIlBindingPathElementNode + { + private readonly IXamlIlProperty _property; + + public XamlIlClrPropertyPathElementNode(IXamlIlProperty property) + { + _property = property; + } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + context.Configuration.GetExtra() + .Emit(context, codeGen, _property); + + codeGen + .EmitCall(context.GetAvaloniaTypes() + .NotifyingPropertyInfoHelpers.FindMethod(m => m.Name == "CreateINPCPropertyInfo")) + .EmitCall(context.GetAvaloniaTypes() + .CompiledBindingPathBuilder.FindMethod(m => m.Name == "Property")); + } + + public IXamlIlType Type => _property.Getter?.ReturnType ?? _property.Setter?.Parameters[0]; + } + + class XamlIlClrIndexerPathElementNode : IXamlIlBindingPathElementNode + { + private readonly IXamlIlProperty _property; + private readonly List _values; + private readonly bool _isNotifyingCollection; + + public XamlIlClrIndexerPathElementNode(IXamlIlProperty property, List values, bool isNotifyingCollection) + { + _property = property; + _values = values; + _isNotifyingCollection = isNotifyingCollection; + } + + public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + var intType = context.Configuration.TypeSystem.GetType("System.Int32"); + context.Configuration.GetExtra() + .Emit(context, codeGen, _property, _values); + + if (_isNotifyingCollection + && + _values.Count == 1 + && _values[0].Type.GetClrType().Equals(intType)) + { + context.Emit(_values[0], codeGen, intType); + codeGen.EmitCall(context.GetAvaloniaTypes() + .NotifyingPropertyInfoHelpers.FindMethod(m => m.Name == "CreateIndexerPropertyInfo")); + } + else + { + codeGen.EmitCall(context.GetAvaloniaTypes() + .NotifyingPropertyInfoHelpers.FindMethod(m => m.Name == "CreateINPCPropertyInfo")); + } + + codeGen.EmitCall(context.GetAvaloniaTypes() + .CompiledBindingPathBuilder.FindMethod(m => m.Name == "Property")); + } + + public IXamlIlType Type => _property.Getter?.ReturnType ?? _property.Setter?.Parameters[0]; + } + + class XamlIlBindingPathNode : XamlIlAstNode, IXamlIlBindingPathNode, IXamlIlAstEmitableNode + { + private readonly List _elements; + + public XamlIlBindingPathNode(IXamlIlLineInfo lineInfo, + IXamlIlType bindingPathType, + List elements) : base(lineInfo) + { + Type = new XamlIlAstClrTypeReference(lineInfo, bindingPathType, false); + _elements = elements; + } + + public IXamlIlType BindingResultType => _elements[_elements.Count - 1].Type; + + public IXamlIlAstTypeReference Type { get; } + + public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + { + var types = context.GetAvaloniaTypes(); + codeGen.Newobj(types.CompiledBindingPathBuilder.FindConstructor()); + + foreach (var element in _elements) + { + element.Emit(context, codeGen); + } + + codeGen.EmitCall(types.CompiledBindingPathBuilder.FindMethod(m => m.Name == "Build")); + return XamlIlNodeEmitResult.Type(0, types.CompiledBindingPath); + } + } + } + + interface IXamlIlBindingPathNode : IXamlIlAstValueNode + { + IXamlIlType BindingResultType { get; } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs index 95ec8536fc6..43d5a4eba1f 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs @@ -23,8 +23,9 @@ public XamlIlClrPropertyInfoEmitter(IXamlIlTypeBuilder builder) static string GetKey(IXamlIlProperty property) => property.Getter.DeclaringType.GetFullName() + "." + property.Name; - public IXamlIlType Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen, IXamlIlProperty property) + public IXamlIlType Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen, IXamlIlProperty property, IEnumerable indexerArguments = null) { + indexerArguments = indexerArguments ?? Enumerable.Empty(); var types = context.GetAvaloniaTypes(); IXamlIlMethod Get() { @@ -55,6 +56,11 @@ void Load(IXamlIlMethod m, IXamlIlEmitter cg) cg.Unbox(m.DeclaringType); else cg.Castclass(m.DeclaringType); + + foreach (var indexerArg in indexerArguments) + { + context.Emit(indexerArg, cg, indexerArg.Type.GetClrType()); + } } var getter = property.Getter == null ? @@ -95,7 +101,7 @@ void Load(IXamlIlMethod m, IXamlIlEmitter cg) var ctor = types.ClrPropertyInfo.Constructors.First(c => - c.Parameters.Count == 3 && c.IsStatic == false); + c.Parameters.Count == 4 && c.IsStatic == false); var cacheMiss = get.Generator.DefineLabel(); get.Generator @@ -124,6 +130,7 @@ void EmitFunc(IXamlIlEmitter emitter, IXamlIlMethod method, IXamlIlType del) EmitFunc(get.Generator, getter, ctor.Parameters[1]); EmitFunc(get.Generator, setter, ctor.Parameters[2]); get.Generator + .Ldtype(property.PropertyType) .Newobj(ctor) .Stsfld(field) .Ldsfld(field) diff --git a/src/Markup/Avalonia.Markup/Data/Binding.cs b/src/Markup/Avalonia.Markup/Data/Binding.cs index 0b85e3224d0..4b62b871998 100644 --- a/src/Markup/Avalonia.Markup/Data/Binding.cs +++ b/src/Markup/Avalonia.Markup/Data/Binding.cs @@ -17,14 +17,14 @@ namespace Avalonia.Data /// /// A XAML binding. /// - public class Binding : IBinding + public class Binding : BindingBase { /// /// Initializes a new instance of the class. /// public Binding() + :base() { - FallbackValue = AvaloniaProperty.UnsetValue; } /// @@ -33,47 +33,16 @@ public Binding() /// The binding path. /// The binding mode. public Binding(string path, BindingMode mode = BindingMode.Default) - : this() + : base(mode) { Path = path; - Mode = mode; } - /// - /// Gets or sets the to use. - /// - public IValueConverter Converter { get; set; } - - /// - /// Gets or sets a parameter to pass to . - /// - public object ConverterParameter { get; set; } - /// /// Gets or sets the name of the element to use as the binding source. /// public string ElementName { get; set; } - /// - /// Gets or sets the value to use when the binding is unable to produce a value. - /// - public object FallbackValue { get; set; } - - /// - /// Gets or sets the binding mode. - /// - public BindingMode Mode { get; set; } - - /// - /// Gets or sets the binding path. - /// - public string Path { get; set; } = ""; - - /// - /// Gets or sets the binding priority. - /// - public BindingPriority Priority { get; set; } - /// /// Gets or sets the relative source for the binding. /// @@ -85,64 +54,50 @@ public Binding(string path, BindingMode mode = BindingMode.Default) public object Source { get; set; } /// - /// Gets or sets the string format. + /// Gets or sets the binding path. /// - public string StringFormat { get; set; } - - public WeakReference DefaultAnchor { get; set; } + public string Path { get; set; } = ""; /// /// Gets or sets a function used to resolve types from names in the binding path. /// public Func TypeResolver { get; set; } - /// - public InstancedBinding Initiate( - IAvaloniaObject target, - AvaloniaProperty targetProperty, - object anchor = null, - bool enableDataValidation = false) + protected override ExpressionObserver CreateExpressionObserver(IAvaloniaObject target, AvaloniaProperty targetProperty, object anchor, bool enableDataValidation) { - Contract.Requires(target != null); - anchor = anchor ?? DefaultAnchor?.Target; - - enableDataValidation = enableDataValidation && Priority == BindingPriority.LocalValue; - - ExpressionObserver observer; - - var (node, mode) = ExpressionObserverBuilder.Parse(Path, enableDataValidation, TypeResolver); + var (node, mode) = ExpressionObserverBuilder.Parse(Path, enableDataValidation, TypeResolver); if (ElementName != null) { - observer = CreateElementObserver( + return CreateElementObserver( (target as IStyledElement) ?? (anchor as IStyledElement), ElementName, node); } else if (Source != null) { - observer = CreateSourceObserver(Source, node); + return CreateSourceObserver(Source, node); } else if (RelativeSource == null) { if (mode == SourceMode.Data) { - observer = CreateDataContextObserver( + return CreateDataContextObserver( target, node, targetProperty == StyledElement.DataContextProperty, - anchor); + anchor); } else { - observer = new ExpressionObserver( + return CreateSourceObserver( (target as IStyledElement) ?? (anchor as IStyledElement), node); } } else if (RelativeSource.Mode == RelativeSourceMode.DataContext) { - observer = CreateDataContextObserver( + return CreateDataContextObserver( target, node, targetProperty == StyledElement.DataContextProperty, @@ -150,13 +105,13 @@ public InstancedBinding Initiate( } else if (RelativeSource.Mode == RelativeSourceMode.Self) { - observer = CreateSourceObserver( + return CreateSourceObserver( (target as IStyledElement) ?? (anchor as IStyledElement), node); } else if (RelativeSource.Mode == RelativeSourceMode.TemplatedParent) { - observer = CreateTemplatedParentObserver( + return CreateTemplatedParentObserver( (target as IStyledElement) ?? (anchor as IStyledElement), node); } @@ -167,7 +122,7 @@ public InstancedBinding Initiate( throw new InvalidOperationException("AncestorType must be set for RelativeSourceMode.FindAncestor when searching the visual tree."); } - observer = CreateFindAncestorObserver( + return CreateFindAncestorObserver( (target as IStyledElement) ?? (anchor as IStyledElement), RelativeSource, node); @@ -177,192 +132,6 @@ public InstancedBinding Initiate( throw new NotSupportedException(); } - var fallback = FallbackValue; - - // If we're binding to DataContext and our fallback is UnsetValue then override - // the fallback value to null, as broken bindings to DataContext must reset the - // DataContext in order to not propagate incorrect DataContexts to child controls. - // See Avalonia.Markup.UnitTests.Data.DataContext_Binding_Should_Produce_Correct_Results. - if (targetProperty == StyledElement.DataContextProperty && fallback == AvaloniaProperty.UnsetValue) - { - fallback = null; - } - - var converter = Converter; - var targetType = targetProperty?.PropertyType ?? typeof(object); - - // We only respect `StringFormat` if the type of the property we're assigning to will - // accept a string. Note that this is slightly different to WPF in that WPF only applies - // `StringFormat` for target type `string` (not `object`). - if (!string.IsNullOrWhiteSpace(StringFormat) && - (targetType == typeof(string) || targetType == typeof(object))) - { - converter = new StringFormatValueConverter(StringFormat, converter); - } - - var subject = new BindingExpression( - observer, - targetType, - fallback, - converter ?? DefaultValueConverter.Instance, - ConverterParameter, - Priority); - - return new InstancedBinding(subject, Mode, Priority); - } - - private ExpressionObserver CreateDataContextObserver( - IAvaloniaObject target, - ExpressionNode node, - bool targetIsDataContext, - object anchor) - { - Contract.Requires(target != null); - - if (!(target is IStyledElement)) - { - target = anchor as IStyledElement; - - if (target == null) - { - throw new InvalidOperationException("Cannot find a DataContext to bind to."); - } - } - - if (!targetIsDataContext) - { - var result = new ExpressionObserver( - () => target.GetValue(StyledElement.DataContextProperty), - node, - new UpdateSignal(target, StyledElement.DataContextProperty), - null); - - return result; - } - else - { - return new ExpressionObserver( - GetParentDataContext(target), - node, - null); - } - } - - private ExpressionObserver CreateElementObserver( - IStyledElement target, - string elementName, - ExpressionNode node) - { - Contract.Requires(target != null); - - var result = new ExpressionObserver( - ControlLocator.Track(target, elementName), - node, - null); - return result; - } - - private ExpressionObserver CreateFindAncestorObserver( - IStyledElement target, - RelativeSource relativeSource, - ExpressionNode node) - { - Contract.Requires(target != null); - - IObservable controlLocator; - - switch (relativeSource.Tree) - { - case TreeType.Logical: - controlLocator = ControlLocator.Track( - (ILogical)target, - relativeSource.AncestorLevel - 1, - relativeSource.AncestorType); - break; - case TreeType.Visual: - controlLocator = VisualLocator.Track( - (IVisual)target, - relativeSource.AncestorLevel - 1, - relativeSource.AncestorType); - break; - default: - throw new InvalidOperationException("Invalid tree to traverse."); - } - - return new ExpressionObserver( - controlLocator, - node, - null); - } - - private ExpressionObserver CreateSourceObserver( - object source, - ExpressionNode node) - { - Contract.Requires(source != null); - - return new ExpressionObserver(source, node); - } - - private ExpressionObserver CreateTemplatedParentObserver( - IAvaloniaObject target, - ExpressionNode node) - { - Contract.Requires(target != null); - - var result = new ExpressionObserver( - () => target.GetValue(StyledElement.TemplatedParentProperty), - node, - new UpdateSignal(target, StyledElement.TemplatedParentProperty), - null); - - return result; - } - - private IObservable GetParentDataContext(IAvaloniaObject target) - { - // The DataContext is based on the visual parent and not the logical parent: this may - // seem counter intuitive considering the fact that property inheritance works on the logical - // tree, but consider a ContentControl with a ContentPresenter. The ContentControl's - // Content property is bound to a value which becomes the ContentPresenter's - // DataContext - it is from this that the child hosted by the ContentPresenter needs to - // inherit its DataContext. - return target.GetObservable(Visual.VisualParentProperty) - .Select(x => - { - return (x as IAvaloniaObject)?.GetObservable(StyledElement.DataContextProperty) ?? - Observable.Return((object)null); - }).Switch(); - } - - private class UpdateSignal : SingleSubscriberObservableBase - { - private readonly IAvaloniaObject _target; - private readonly AvaloniaProperty _property; - - public UpdateSignal(IAvaloniaObject target, AvaloniaProperty property) - { - _target = target; - _property = property; - } - - protected override void Subscribed() - { - _target.PropertyChanged += PropertyChanged; - } - - protected override void Unsubscribed() - { - _target.PropertyChanged -= PropertyChanged; - } - - private void PropertyChanged(object sender, AvaloniaPropertyChangedEventArgs e) - { - if (e.Property == _property) - { - PublishNext(Unit.Default); - } - } } } } diff --git a/src/Markup/Avalonia.Markup/Data/BindingBase.cs b/src/Markup/Avalonia.Markup/Data/BindingBase.cs new file mode 100644 index 00000000000..9c4ea27fda3 --- /dev/null +++ b/src/Markup/Avalonia.Markup/Data/BindingBase.cs @@ -0,0 +1,275 @@ + +using System; +using System.Linq; +using System.Reactive; +using System.Reactive.Linq; +using Avalonia.Data.Converters; +using Avalonia.Data.Core; +using Avalonia.LogicalTree; +using Avalonia.Markup.Parsers; +using Avalonia.Reactive; +using Avalonia.VisualTree; + + +namespace Avalonia.Data +{ + public abstract class BindingBase + { + /// + /// Initializes a new instance of the class. + /// + public BindingBase() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The binding mode. + public BindingBase(BindingMode mode = BindingMode.Default) + { + FallbackValue = AvaloniaProperty.UnsetValue; + Mode = mode; + } + + /// + /// Gets or sets the to use. + /// + public IValueConverter Converter { get; set; } + + /// + /// Gets or sets a parameter to pass to . + /// + public object ConverterParameter { get; set; } + + /// + /// Gets or sets the value to use when the binding is unable to produce a value. + /// + public object FallbackValue { get; set; } + + /// + /// Gets or sets the binding mode. + /// + public BindingMode Mode { get; set; } + + /// + /// Gets or sets the binding priority. + /// + public BindingPriority Priority { get; set; } + + /// + /// Gets or sets the string format. + /// + public string StringFormat { get; set; } + + public WeakReference DefaultAnchor { get; set; } + + protected abstract ExpressionObserver CreateExpressionObserver( + IAvaloniaObject target, + AvaloniaProperty targetProperty, + object anchor, + bool enableDataValidation); + + /// + public InstancedBinding Initiate( + IAvaloniaObject target, + AvaloniaProperty targetProperty, + object anchor = null, + bool enableDataValidation = false) + { + Contract.Requires(target != null); + anchor = anchor ?? DefaultAnchor?.Target; + + enableDataValidation = enableDataValidation && Priority == BindingPriority.LocalValue; + + var observer = CreateExpressionObserver(target, targetProperty, anchor, enableDataValidation); + + var fallback = FallbackValue; + + // If we're binding to DataContext and our fallback is UnsetValue then override + // the fallback value to null, as broken bindings to DataContext must reset the + // DataContext in order to not propagate incorrect DataContexts to child controls. + // See Avalonia.Markup.UnitTests.Data.DataContext_Binding_Should_Produce_Correct_Results. + if (targetProperty == StyledElement.DataContextProperty && fallback == AvaloniaProperty.UnsetValue) + { + fallback = null; + } + + var converter = Converter; + var targetType = targetProperty?.PropertyType ?? typeof(object); + + // We only respect `StringFormat` if the type of the property we're assigning to will + // accept a string. Note that this is slightly different to WPF in that WPF only applies + // `StringFormat` for target type `string` (not `object`). + if (!string.IsNullOrWhiteSpace(StringFormat) && + (targetType == typeof(string) || targetType == typeof(object))) + { + converter = new StringFormatValueConverter(StringFormat, converter); + } + + var subject = new BindingExpression( + observer, + targetType, + fallback, + converter ?? DefaultValueConverter.Instance, + ConverterParameter, + Priority); + + return new InstancedBinding(subject, Mode, Priority); + } + + protected ExpressionObserver CreateDataContextObserver( + IAvaloniaObject target, + ExpressionNode node, + bool targetIsDataContext, + object anchor) + { + Contract.Requires(target != null); + + if (!(target is IStyledElement)) + { + target = anchor as IStyledElement; + + if (target == null) + { + throw new InvalidOperationException("Cannot find a DataContext to bind to."); + } + } + + if (!targetIsDataContext) + { + var result = new ExpressionObserver( + () => target.GetValue(StyledElement.DataContextProperty), + node, + new UpdateSignal(target, StyledElement.DataContextProperty), + null); + + return result; + } + else + { + return new ExpressionObserver( + GetParentDataContext(target), + node, + null); + } + } + + protected ExpressionObserver CreateElementObserver( + IStyledElement target, + string elementName, + ExpressionNode node) + { + Contract.Requires(target != null); + + var result = new ExpressionObserver( + ControlLocator.Track(target, elementName), + node, + null); + return result; + } + + protected ExpressionObserver CreateFindAncestorObserver( + IStyledElement target, + RelativeSource relativeSource, + ExpressionNode node) + { + Contract.Requires(target != null); + + IObservable controlLocator; + + switch (relativeSource.Tree) + { + case TreeType.Logical: + controlLocator = ControlLocator.Track( + (ILogical)target, + relativeSource.AncestorLevel - 1, + relativeSource.AncestorType); + break; + case TreeType.Visual: + controlLocator = VisualLocator.Track( + (IVisual)target, + relativeSource.AncestorLevel - 1, + relativeSource.AncestorType); + break; + default: + throw new InvalidOperationException("Invalid tree to traverse."); + } + + return new ExpressionObserver( + controlLocator, + node, + null); + } + + protected ExpressionObserver CreateSourceObserver( + object source, + ExpressionNode node) + { + Contract.Requires(source != null); + + return new ExpressionObserver(source, node); + } + + protected ExpressionObserver CreateTemplatedParentObserver( + IAvaloniaObject target, + ExpressionNode node) + { + Contract.Requires(target != null); + + var result = new ExpressionObserver( + () => target.GetValue(StyledElement.TemplatedParentProperty), + node, + new UpdateSignal(target, StyledElement.TemplatedParentProperty), + null); + + return result; + } + + protected IObservable GetParentDataContext(IAvaloniaObject target) + { + // The DataContext is based on the visual parent and not the logical parent: this may + // seem counter intuitive considering the fact that property inheritance works on the logical + // tree, but consider a ContentControl with a ContentPresenter. The ContentControl's + // Content property is bound to a value which becomes the ContentPresenter's + // DataContext - it is from this that the child hosted by the ContentPresenter needs to + // inherit its DataContext. + return target.GetObservable(Visual.VisualParentProperty) + .Select(x => + { + return (x as IAvaloniaObject)?.GetObservable(StyledElement.DataContextProperty) ?? + Observable.Return((object)null); + }).Switch(); + } + + private class UpdateSignal : SingleSubscriberObservableBase + { + private readonly IAvaloniaObject _target; + private readonly AvaloniaProperty _property; + + public UpdateSignal(IAvaloniaObject target, AvaloniaProperty property) + { + _target = target; + _property = property; + } + + protected override void Subscribed() + { + _target.PropertyChanged += PropertyChanged; + } + + protected override void Unsubscribed() + { + _target.PropertyChanged -= PropertyChanged; + } + + private void PropertyChanged(object sender, AvaloniaPropertyChangedEventArgs e) + { + if (e.Property == _property) + { + PublishNext(Unit.Default); + } + } + } + } +} diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/ArgumentListParser.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/ArgumentListParser.cs index fd6f7b20bdb..4d88b346593 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/ArgumentListParser.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/ArgumentListParser.cs @@ -7,7 +7,10 @@ namespace Avalonia.Markup.Parsers { - internal static class ArgumentListParser +#if !BUILDTASK + public +#endif + static class ArgumentListParser { public static IList ParseArguments(this ref CharacterReader r, char open, char close, char delimiter = ',') { diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs index b8308155fe2..7181bbaa690 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs @@ -2,19 +2,18 @@ // Licensed under the MIT license. See licence.md file in the project root for full license information. using Avalonia.Data.Core; -using Avalonia.Markup.Parsers.Nodes; using Avalonia.Utilities; using System; using System.Collections.Generic; -using System.Linq; namespace Avalonia.Markup.Parsers { - internal enum SourceMode + public enum SourceMode { Data, Control } + internal static class BindingExpressionGrammar { public static (IList Nodes, SourceMode Mode) Parse(ref CharacterReader r) @@ -191,7 +190,7 @@ private static State ParseElementName(ref CharacterReader r, List nodes) { var name = r.ParseIdentifier(); - if (name == null) + if (name.IsEmpty) { throw new ExpressionParseException(r.Position, "Element name expected after '#'."); } @@ -204,11 +203,11 @@ private static State ParseRelativeSource(ref CharacterReader r, List node { var mode = r.ParseIdentifier(); - if (mode.Equals("self".AsSpan(), StringComparison.InvariantCulture)) + if (mode.SequenceEqual("self".AsSpan())) { nodes.Add(new SelfNode()); } - else if (mode.Equals("parent".AsSpan(), StringComparison.InvariantCulture)) + else if (mode.SequenceEqual("parent".AsSpan())) { string ancestorNamespace = null; string ancestorType = null; diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/ElementNameNode.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/ElementNameNode.cs index f09efca7d0e..7803a7227d9 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/ElementNameNode.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/ElementNameNode.cs @@ -4,7 +4,7 @@ namespace Avalonia.Markup.Parsers.Nodes { - internal class ElementNameNode : ExpressionNode + public class ElementNameNode : ExpressionNode { private readonly string _name; private IDisposable _subscription; diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/FindAncestorNode.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/FindAncestorNode.cs index 221df44327e..9f441ad3601 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/FindAncestorNode.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/FindAncestorNode.cs @@ -4,7 +4,7 @@ namespace Avalonia.Markup.Parsers.Nodes { - internal class FindAncestorNode : ExpressionNode + public class FindAncestorNode : ExpressionNode { private readonly int _level; private readonly Type _ancestorType; diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/SelfNode.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/SelfNode.cs index 2cb87efa65f..1cd233c68a6 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/SelfNode.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/SelfNode.cs @@ -2,7 +2,7 @@ namespace Avalonia.Markup.Parsers.Nodes { - internal class SelfNode : ExpressionNode + public class SelfNode : ExpressionNode { public override string Description => "$self"; } diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs new file mode 100644 index 00000000000..59daf956371 --- /dev/null +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Avalonia.Controls; +using Avalonia.Markup.Data; +using Avalonia.UnitTests; +using Xunit; + +namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions +{ + public class CompiledBindingExtensionTests + { + [Fact] + public void ResolvesClrPropertyBasedOnDataContextType() + { + using (UnitTestApplication.Start(TestServices.StyledWindow)) + { + var xaml = @" + + +"; + var loader = new AvaloniaXamlLoader(); + var window = (Window)loader.Load(xaml); + var textBlock = window.FindControl("textBlock"); + + DelayedBinding.ApplyBindings(textBlock); + + var dataContext = new TestDataContext + { + StringProperty = "foobar" + }; + + window.DataContext = dataContext; + + Assert.Equal(dataContext.StringProperty, textBlock.Text); + } + } + } + + public class TestDataContext + { + public string StringProperty { get; set; } + } +} diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs index 6bc7f330394..8eaa391a5f4 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs @@ -290,8 +290,19 @@ public void Should_Provide_PropertyPath_For_Setters() Assert.Equal(typeof(ScaleTransform), ((EnsureTypePropertyPathElement)s3e[1]).Type); Assert.IsType(s3e[2]); Assert.Equal("ScaleX", ((AvaloniaProperty)((PropertyPropertyPathElement)s3e[3]).Property).Name); - - + } + } + + [Fact] + public void DataContextType_Resolution() + { + using (UnitTestApplication.Start(TestServices.StyledWindow)) + { + var parsed = AvaloniaXamlLoader.Parse(@" +"); } } } From b1a2ea21c586b0334a89f0ddd9c252075c9c9a4e Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sat, 6 Jul 2019 12:42:54 -0700 Subject: [PATCH 011/354] Fix stream bindings. --- .../XamlIlBindingPathHelper.cs | 2 +- .../Avalonia.Markup/Data/BindingBase.cs | 2 +- .../CompiledBindingExtensionTests.cs | 32 +++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs index c98e2029c45..dfa90d1989b 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs @@ -80,7 +80,7 @@ private static IXamlIlBindingPathNode TransformBindingPath(XamlIlAstTransformati appendNotNode = !appendNotNode; break; case BindingExpressionGrammar.StreamNode _: - var observableType = targetType.GetAllInterfaces().FirstOrDefault(i => i.GenericTypeDefinition.Equals(context.Configuration.TypeSystem.FindType("System.IObservable`1"))); + var observableType = targetType.GetAllInterfaces().FirstOrDefault(i => i.GenericTypeDefinition?.Equals(context.Configuration.TypeSystem.FindType("System.IObservable`1")) ?? false); if (observableType != null) { nodes.Add(new XamlIlStreamObservablePathElementNode(observableType.GenericArguments[0])); diff --git a/src/Markup/Avalonia.Markup/Data/BindingBase.cs b/src/Markup/Avalonia.Markup/Data/BindingBase.cs index 9c4ea27fda3..16ada21f56d 100644 --- a/src/Markup/Avalonia.Markup/Data/BindingBase.cs +++ b/src/Markup/Avalonia.Markup/Data/BindingBase.cs @@ -13,7 +13,7 @@ namespace Avalonia.Data { - public abstract class BindingBase + public abstract class BindingBase : IBinding { /// /// Initializes a new instance of the class. diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs index 59daf956371..3d1a5cb566c 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Text; +using System.Threading.Tasks; using Avalonia.Controls; using Avalonia.Markup.Data; using Avalonia.UnitTests; @@ -38,10 +39,41 @@ public void ResolvesClrPropertyBasedOnDataContextType() Assert.Equal(dataContext.StringProperty, textBlock.Text); } } + + [Fact] + public void ResolvesStreamBindingCorrectly() + { + using (UnitTestApplication.Start(TestServices.StyledWindow)) + { + var xaml = @" + + +"; + var loader = new AvaloniaXamlLoader(); + var window = (Window)loader.Load(xaml); + var textBlock = window.FindControl("textBlock"); + + DelayedBinding.ApplyBindings(textBlock); + + var dataContext = new TestDataContext + { + TaskProperty = Task.FromResult("foobar") + }; + + window.DataContext = dataContext; + + Assert.Equal(dataContext.TaskProperty.Result, textBlock.Text); + } + } } public class TestDataContext { public string StringProperty { get; set; } + + public Task TaskProperty { get; set; } } } From 590f5923a85d9ae72e649517282f190f233dc68a Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sat, 6 Jul 2019 21:13:42 -0700 Subject: [PATCH 012/354] Traverse transform nodes in the correct order when setting a binding source value. --- .../Data/Core/ExpressionObserver.cs | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/Avalonia.Base/Data/Core/ExpressionObserver.cs b/src/Avalonia.Base/Data/Core/ExpressionObserver.cs index 65f26df0117..9b62686ad57 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionObserver.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionObserver.cs @@ -57,6 +57,7 @@ public class ExpressionObserver : LightweightObservableBase, IDescriptio private object _root; private IDisposable _rootSubscription; private WeakReference _value; + private IReadOnlyList _transformNodes; /// /// Initializes a new instance of the class. @@ -191,6 +192,24 @@ public static ExpressionObserver Create( description ?? expression.ToString()); } + private IReadOnlyList GetTransformNodesFromChain() + { + LinkedList transforms = new LinkedList(); + var node = _node; + while (node != null) + { + if (node is ITransformNode transform) + { + transforms.AddFirst(transform); + } + node = node.Next; + } + + return new List(transforms); + } + + private IReadOnlyList TransformNodes => (_transformNodes ?? (_transformNodes = GetTransformNodesFromChain())); + /// /// Attempts to set the value of a property expression. /// @@ -206,18 +225,13 @@ public bool SetValue(object value, BindingPriority priority = BindingPriority.Lo { if (Leaf is SettableNode settable) { - var node = _node; - while (node != null) + foreach (var transform in TransformNodes) { - if (node is ITransformNode transform) + value = transform.Transform(value); + if (value is BindingNotification) { - value = transform.Transform(value); - if (value is BindingNotification) - { - return false; - } + return false; } - node = node.Next; } return settable.SetTargetValue(value, priority); } From ac3be6c662d56a3bb467227b6b3f29bfd94d66cf Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sat, 6 Jul 2019 21:18:08 -0700 Subject: [PATCH 013/354] Fix handling of Not nodes. --- .../XamlIlBindingPathHelper.cs | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs index dfa90d1989b..598f9175e83 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs @@ -67,7 +67,7 @@ public static IXamlIlType UpdateCompiledBindingExtension(XamlIlAstTransformation private static IXamlIlBindingPathNode TransformBindingPath(XamlIlAstTransformationContext context, IXamlIlLineInfo lineInfo, IXamlIlType startType, IEnumerable bindingExpression) { - bool appendNotNode = false; + List transformNodes = new List(); List nodes = new List(); foreach (var astNode in bindingExpression) { @@ -77,10 +77,19 @@ private static IXamlIlBindingPathNode TransformBindingPath(XamlIlAstTransformati case BindingExpressionGrammar.EmptyExpressionNode _: break; case BindingExpressionGrammar.NotNode _: - appendNotNode = !appendNotNode; + transformNodes.Add(new XamlIlNotPathElementNode(context.Configuration.WellKnownTypes.Boolean)); break; case BindingExpressionGrammar.StreamNode _: - var observableType = targetType.GetAllInterfaces().FirstOrDefault(i => i.GenericTypeDefinition?.Equals(context.Configuration.TypeSystem.FindType("System.IObservable`1")) ?? false); + IXamlIlType observableType; + if (targetType.GenericTypeDefinition?.Equals(context.Configuration.TypeSystem.FindType("System.IObservable`1")) == true) + { + observableType = targetType; + } + else + { + observableType = targetType.GetAllInterfaces().FirstOrDefault(i => i.GenericTypeDefinition?.Equals(context.Configuration.TypeSystem.FindType("System.IObservable`1")) ?? false); + } + if (observableType != null) { nodes.Add(new XamlIlStreamObservablePathElementNode(observableType.GenericArguments[0])); @@ -179,16 +188,9 @@ private static IXamlIlBindingPathNode TransformBindingPath(XamlIlAstTransformati nodes.Add(new ElementNamePathElementNode(elementName.Name, elementType)); break; } - } - if (appendNotNode) - { - // TODO: Fix Not behavior - nodes.Add(new XamlIlNotPathElementNode(context.Configuration.WellKnownTypes.Boolean)); - } - - return new XamlIlBindingPathNode(lineInfo, context.GetAvaloniaTypes().CompiledBindingPath, nodes); + return new XamlIlBindingPathNode(lineInfo, context.GetAvaloniaTypes().CompiledBindingPath, transformNodes, nodes); IXamlIlType GetType(string ns, string name) { @@ -422,17 +424,23 @@ public void Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) class XamlIlBindingPathNode : XamlIlAstNode, IXamlIlBindingPathNode, IXamlIlAstEmitableNode { + private readonly List _transformElements; private readonly List _elements; public XamlIlBindingPathNode(IXamlIlLineInfo lineInfo, IXamlIlType bindingPathType, + List transformElements, List elements) : base(lineInfo) { Type = new XamlIlAstClrTypeReference(lineInfo, bindingPathType, false); + _transformElements = transformElements; _elements = elements; } - public IXamlIlType BindingResultType => _elements[_elements.Count - 1].Type; + public IXamlIlType BindingResultType + => _transformElements.Count > 0 + ? _transformElements[0].Type + : _elements[_elements.Count - 1].Type; public IXamlIlAstTypeReference Type { get; } @@ -441,6 +449,11 @@ public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeG var types = context.GetAvaloniaTypes(); codeGen.Newobj(types.CompiledBindingPathBuilder.FindConstructor()); + foreach (var transform in _transformElements) + { + transform.Emit(context, codeGen); + } + foreach (var element in _elements) { element.Emit(context, codeGen); From c836c7700220e786ece045a868003eefdae49932 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sat, 6 Jul 2019 21:18:45 -0700 Subject: [PATCH 014/354] Make SourceMode internal since it doesn't need to be public. --- .../MarkupExtensions/CompiledBindingExtension.cs | 7 ++----- .../CompiledBindings/CompiledBindingPath.cs | 7 +++---- .../Markup/Parsers/BindingExpressionGrammar.cs | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindingExtension.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindingExtension.cs index bc1e2cdd367..5c3628fd223 100644 --- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindingExtension.cs +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindingExtension.cs @@ -1,13 +1,10 @@ -extern alias Markup; -using System; +using System; using Avalonia.Data; using Avalonia.Controls; using Avalonia.Styling; using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings; using Avalonia.Data.Core; - -using SourceMode = Markup::Avalonia.Markup.Parsers.SourceMode; -using Avalonia.Data.Converters; +using Avalonia.Markup.Parsers; namespace Avalonia.Markup.Xaml.MarkupExtensions { diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs index 81b9bd29b9e..7daa90ec443 100644 --- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs @@ -1,10 +1,9 @@ -extern alias Markup; -using System; +using System; using System.Collections.Generic; using Avalonia.Data.Core; using Avalonia.Data.Core.Plugins; +using Avalonia.Markup.Parsers; using Avalonia.Markup.Parsers.Nodes; -using SourceMode = Markup::Avalonia.Markup.Parsers.SourceMode; namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings { @@ -56,7 +55,7 @@ public ExpressionNode BuildExpression(bool enableValidation) return pathRoot ?? new EmptyExpressionNode(); } - public SourceMode SourceMode => _elements.Count > 0 && _elements[0] is IControlSourceBindingPathElement ? SourceMode.Control : SourceMode.Data; + internal SourceMode SourceMode => _elements.Count > 0 && _elements[0] is IControlSourceBindingPathElement ? SourceMode.Control : SourceMode.Data; } public class CompiledBindingPathBuilder diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs index 7181bbaa690..a58068cc5b0 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs @@ -8,7 +8,7 @@ namespace Avalonia.Markup.Parsers { - public enum SourceMode + internal enum SourceMode { Data, Control From ee46a69cefe644b0d507501d2004f51c76ec895b Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sat, 6 Jul 2019 21:19:49 -0700 Subject: [PATCH 015/354] Add additional test for IObservable compiled bindings. --- .../CompiledBindingExtensionTests.cs | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs index 3d1a5cb566c..34bb071aefe 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Reactive.Subjects; using System.Text; using System.Threading.Tasks; using Avalonia.Controls; @@ -41,7 +42,7 @@ public void ResolvesClrPropertyBasedOnDataContextType() } [Fact] - public void ResolvesStreamBindingCorrectly() + public void ResolvesStreamTaskBindingCorrectly() { using (UnitTestApplication.Start(TestServices.StyledWindow)) { @@ -68,6 +69,38 @@ public void ResolvesStreamBindingCorrectly() Assert.Equal(dataContext.TaskProperty.Result, textBlock.Text); } } + + [Fact] + public void ResolvesStreamObservableBindingCorrectly() + { + using (UnitTestApplication.Start(TestServices.StyledWindow)) + { + var xaml = @" + + +"; + var loader = new AvaloniaXamlLoader(); + var window = (Window)loader.Load(xaml); + var textBlock = window.FindControl("textBlock"); + + DelayedBinding.ApplyBindings(textBlock); + + var subject = new Subject(); + var dataContext = new TestDataContext + { + ObservableProperty = subject + }; + + window.DataContext = dataContext; + + subject.OnNext("foobar"); + + Assert.Equal("foobar", textBlock.Text); + } + } } public class TestDataContext @@ -75,5 +108,7 @@ public class TestDataContext public string StringProperty { get; set; } public Task TaskProperty { get; set; } + + public IObservable ObservableProperty { get; set; } } } From b173d5b5fb3e4d7346c8ec7248ef9d75bec75fbf Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sat, 6 Jul 2019 21:20:12 -0700 Subject: [PATCH 016/354] Change the observable stream binding in BindingDemo to be a compiled binding. --- samples/BindingDemo/MainWindow.xaml | 5 +++-- samples/BindingDemo/ViewModels/MainWindowViewModel.cs | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/samples/BindingDemo/MainWindow.xaml b/samples/BindingDemo/MainWindow.xaml index a232a063831..6c4a0712143 100644 --- a/samples/BindingDemo/MainWindow.xaml +++ b/samples/BindingDemo/MainWindow.xaml @@ -5,7 +5,8 @@ xmlns:local="clr-namespace:BindingDemo" Title="AvaloniaUI Bindings Test" Width="800" - Height="600"> + Height="600" + x:DataContextType="{x:Type vm:MainWindowViewModel}"> + - - + + + + diff --git a/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs b/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs index 6fa9fc515ee..8f5d3800785 100644 --- a/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs +++ b/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs @@ -70,6 +70,26 @@ private void LayoutChanged(object sender, SelectionChangedEventArgs e) MinItemHeight = 200, }; break; + case 4: + _scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto; + _scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled; + _repeater.Layout = new WrapLayout + { + Orientation = Orientation.Vertical, + HorizontalSpacing = 20, + VerticalSpacing = 20 + }; + break; + case 5: + _scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled; + _scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; + _repeater.Layout = new WrapLayout + { + Orientation = Orientation.Horizontal, + HorizontalSpacing = 20, + VerticalSpacing = 20 + }; + break; } } From 1c0e981343281705ffee4c692bf5036befb55f01 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 24 May 2020 21:53:44 -0300 Subject: [PATCH 046/354] import sources. --- .../RelativePanel.AttachedProperties.cs | 511 ++++++++++++++++++ src/Avalonia.Controls/RelativePanel.cs | 424 +++++++++++++++ 2 files changed, 935 insertions(+) create mode 100644 src/Avalonia.Controls/RelativePanel.AttachedProperties.cs create mode 100644 src/Avalonia.Controls/RelativePanel.cs diff --git a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs new file mode 100644 index 00000000000..21baff87abb --- /dev/null +++ b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs @@ -0,0 +1,511 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Avalonia.Controls +{ + public partial class RelativePanel + { + private static void OnAlignPropertiesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var elm = d as FrameworkElement; + if (elm.Parent is FrameworkElement) + ((FrameworkElement)elm.Parent).InvalidateArrange(); + } + + /// + /// Gets the value of the RelativePanel.Above XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.Above XAML attached property value of the specified object. + /// (The element to position this element above.) + /// + [TypeConverter(typeof(NameReferenceConverter))] + public static object GetAbove(DependencyObject obj) + { + return (object)obj.GetValue(AboveProperty); + } + + /// + /// Sets the value of the RelativePanel.Above XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// The value to set. (The element to position this element above.) + public static void SetAbove(DependencyObject obj, object value) + { + obj.SetValue(AboveProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AboveProperty = + DependencyProperty.RegisterAttached("Above", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + + + /// + /// Gets the value of the RelativePanel.AlignBottomWithPanel XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.AlignBottomWithPanel XAML attached property value of the specified + /// object. (true to align this element's bottom edge with the panel's bottom edge; + /// otherwise, false.) + /// + public static bool GetAlignBottomWithPanel(DependencyObject obj) + { + return (bool)obj.GetValue(AlignBottomWithPanelProperty); + } + + /// + /// Sets the value of the RelativePanel.Above XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// + /// The value to set. (true to align this element's bottom edge with the panel's + /// bottom edge; otherwise, false.) + /// + public static void SetAlignBottomWithPanel(DependencyObject obj, bool value) + { + obj.SetValue(AlignBottomWithPanelProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignBottomWithPanelProperty = + DependencyProperty.RegisterAttached("AlignBottomWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.AlignBottomWith XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.AlignBottomWith XAML attached property value of the specified object. + /// (The element to align this element's bottom edge with.) + /// + [TypeConverter(typeof(NameReferenceConverter))] + public static object GetAlignBottomWith(DependencyObject obj) + { + return (object)obj.GetValue(AlignBottomWithProperty); + } + + /// + /// Sets the value of the RelativePanel.Above XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// The value to set. (The element to align this element's bottom edge with.) + public static void SetAlignBottomWith(DependencyObject obj, object value) + { + obj.SetValue(AlignBottomWithProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignBottomWithProperty = + DependencyProperty.RegisterAttached("AlignBottomWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.AlignHorizontalCenterWithPanel XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.AlignHorizontalCenterWithPanel XAML attached property value + /// of the specified object. (true to horizontally center this element in the panel; + /// otherwise, false.) + /// + public static bool GetAlignHorizontalCenterWithPanel(DependencyObject obj) + { + return (bool)obj.GetValue(AlignHorizontalCenterWithPanelProperty); + } + + /// + /// Sets the value of the RelativePanel.Above XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// + /// The value to set. (true to horizontally center this element in the panel; otherwise, + /// false.) + /// + public static void SetAlignHorizontalCenterWithPanel(DependencyObject obj, bool value) + { + obj.SetValue(AlignHorizontalCenterWithPanelProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignHorizontalCenterWithPanelProperty = + DependencyProperty.RegisterAttached("AlignHorizontalCenterWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.AlignHorizontalCenterWith XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.AlignHorizontalCenterWith XAML attached property value of the + /// specified object. (The element to align this element's horizontal center with.) + /// + [TypeConverter(typeof(NameReferenceConverter))] + public static object GetAlignHorizontalCenterWith(DependencyObject obj) + { + return (object)obj.GetValue(AlignHorizontalCenterWithProperty); + } + + /// + /// Sets the value of the RelativePanel.Above XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// The value to set. (The element to align this element's horizontal center with.) + public static void SetAlignHorizontalCenterWith(DependencyObject obj, object value) + { + obj.SetValue(AlignHorizontalCenterWithProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignHorizontalCenterWithProperty = + DependencyProperty.RegisterAttached("AlignHorizontalCenterWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.AlignLeftWithPanel XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.AlignLeftWithPanel XAML attached property value of the specified + /// object. (true to align this element's left edge with the panel's left edge; otherwise, + /// false.) + /// + public static bool GetAlignLeftWithPanel(DependencyObject obj) + { + return (bool)obj.GetValue(AlignLeftWithPanelProperty); + } + + /// + /// Sets the value of the RelativePanel.Above XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// + /// The value to set. (true to align this element's left edge with the panel's left + /// edge; otherwise, false.) + /// + public static void SetAlignLeftWithPanel(DependencyObject obj, bool value) + { + obj.SetValue(AlignLeftWithPanelProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignLeftWithPanelProperty = + DependencyProperty.RegisterAttached("AlignLeftWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + + + /// + /// Gets the value of the RelativePanel.AlignLeftWith XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.AlignLeftWith XAML attached property value of the specified + /// object. (The element to align this element's left edge with.) + /// + [TypeConverter(typeof(NameReferenceConverter))] + public static object GetAlignLeftWith(DependencyObject obj) + { + return (object)obj.GetValue(AlignLeftWithProperty); + } + + /// + /// Sets the value of the RelativePanel.Above XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// The value to set. (The element to align this element's left edge with.) + public static void SetAlignLeftWith(DependencyObject obj, object value) + { + obj.SetValue(AlignLeftWithProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignLeftWithProperty = + DependencyProperty.RegisterAttached("AlignLeftWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + + + /// + /// Gets the value of the RelativePanel.AlignRightWithPanel XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.AlignRightWithPanel XAML attached property value of the specified + /// object. (true to align this element's right edge with the panel's right edge; + /// otherwise, false.) + /// + public static bool GetAlignRightWithPanel(DependencyObject obj) + { + return (bool)obj.GetValue(AlignRightWithPanelProperty); + } + + /// + /// Sets the value of the RelativePanel.Above XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// + /// The value to set. (true to align this element's right edge with the panel's right + /// edge; otherwise, false.) + /// + public static void SetAlignRightWithPanel(DependencyObject obj, bool value) + { + obj.SetValue(AlignRightWithPanelProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignRightWithPanelProperty = + DependencyProperty.RegisterAttached("AlignRightWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.AlignRightWith XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.AlignRightWith XAML attached property value of the specified + /// object. (The element to align this element's right edge with.) + /// + [TypeConverter(typeof(NameReferenceConverter))] + public static object GetAlignRightWith(DependencyObject obj) + { + return (object)obj.GetValue(AlignRightWithProperty); + } + + /// + /// Sets the value of the RelativePanel.AlignRightWith XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// The value to set. (The element to align this element's right edge with.) + public static void SetAlignRightWith(DependencyObject obj, object value) + { + obj.SetValue(AlignRightWithProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignRightWithProperty = + DependencyProperty.RegisterAttached("AlignRightWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.AlignTopWithPanel XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.AlignTopWithPanel XAML attached property value of the specified + /// object. (true to align this element's top edge with the panel's top edge; otherwise, + /// false.) + /// + public static bool GetAlignTopWithPanel(DependencyObject obj) + { + return (bool)obj.GetValue(AlignTopWithPanelProperty); + } + + /// + /// Sets the value of the RelativePanel.AlignTopWithPanel XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// + /// The value to set. (true to align this element's top edge with the panel's top + /// edge; otherwise, false.) + /// + public static void SetAlignTopWithPanel(DependencyObject obj, bool value) + { + obj.SetValue(AlignTopWithPanelProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignTopWithPanelProperty = + DependencyProperty.RegisterAttached("AlignTopWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.AlignTopWith XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// The value to set. (The element to align this element's top edge with.) + [TypeConverter(typeof(NameReferenceConverter))] + public static object GetAlignTopWith(DependencyObject obj) + { + return (object)obj.GetValue(AlignTopWithProperty); + } + + /// + /// Sets the value of the RelativePanel.AlignTopWith XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// The value to set. (The element to align this element's top edge with.) + public static void SetAlignTopWith(DependencyObject obj, object value) + { + obj.SetValue(AlignTopWithProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignTopWithProperty = + DependencyProperty.RegisterAttached("AlignTopWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.AlignVerticalCenterWithPanel XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.AlignVerticalCenterWithPanel XAML attached property value of + /// the specified object. (true to vertically center this element in the panel; otherwise, + /// false.) + /// + public static bool GetAlignVerticalCenterWithPanel(DependencyObject obj) + { + return (bool)obj.GetValue(AlignVerticalCenterWithPanelProperty); + } + + /// + /// Sets the value of the RelativePanel.AlignVerticalCenterWithPanel XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// + /// The value to set. (true to vertically center this element in the panel; otherwise, + /// false.) + /// + public static void SetAlignVerticalCenterWithPanel(DependencyObject obj, bool value) + { + obj.SetValue(AlignVerticalCenterWithPanelProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignVerticalCenterWithPanelProperty = + DependencyProperty.RegisterAttached("AlignVerticalCenterWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.AlignVerticalCenterWith XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// The value to set. (The element to align this element's vertical center with.) + [TypeConverter(typeof(NameReferenceConverter))] + public static object GetAlignVerticalCenterWith(DependencyObject obj) + { + return (object)obj.GetValue(AlignVerticalCenterWithProperty); + } + + /// + /// Sets the value of the RelativePanel.AlignVerticalCenterWith XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// The value to set. (The element to align this element's horizontal center with.) + public static void SetAlignVerticalCenterWith(DependencyObject obj, object value) + { + obj.SetValue(AlignVerticalCenterWithProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty AlignVerticalCenterWithProperty = + DependencyProperty.RegisterAttached("AlignVerticalCenterWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.Below XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.Below XAML attached property value of the specified object. + /// (The element to position this element below.) + /// + [TypeConverter(typeof(NameReferenceConverter))] + public static object GetBelow(DependencyObject obj) + { + return (object)obj.GetValue(BelowProperty); + } + + /// + /// Sets the value of the RelativePanel.Above XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// The value to set. (The element to position this element below.) + public static void SetBelow(DependencyObject obj, object value) + { + obj.SetValue(BelowProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty BelowProperty = + DependencyProperty.RegisterAttached("Below", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.LeftOf XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.LeftOf XAML attached property value of the specified object. + /// (The element to position this element to the left of.) + /// + [TypeConverter(typeof(NameReferenceConverter))] + public static object GetLeftOf(DependencyObject obj) + { + return (object)obj.GetValue(LeftOfProperty); + } + + /// + /// Sets the value of the RelativePanel.LeftOf XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// The value to set. (The element to position this element to the left of.) + public static void SetLeftOf(DependencyObject obj, object value) + { + obj.SetValue(LeftOfProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty LeftOfProperty = + DependencyProperty.RegisterAttached("LeftOf", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + + /// + /// Gets the value of the RelativePanel.RightOf XAML attached property for the target element. + /// + /// The object from which the property value is read. + /// + /// The RelativePanel.RightOf XAML attached property value of the specified object. + /// (The element to position this element to the right of.) + /// + [TypeConverter(typeof(NameReferenceConverter))] + public static object GetRightOf(DependencyObject obj) + { + return (object)obj.GetValue(RightOfProperty); + } + + /// + /// Sets the value of the RelativePanel.RightOf XAML attached property for a target element. + /// + /// The object to which the property value is written. + /// The value to set. (The element to position this element to the right of.) + public static void SetRightOf(DependencyObject obj, object value) + { + obj.SetValue(RightOfProperty, value); + } + + /// + /// Identifies the XAML attached property. + /// + public static readonly DependencyProperty RightOfProperty = + DependencyProperty.RegisterAttached("RightOf", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + } +} diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs new file mode 100644 index 00000000000..aecd4b7c98c --- /dev/null +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -0,0 +1,424 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Avalonia.Controls +{ + /// + /// Defines an area within which you can position and align child objects in relation + /// to each other or the parent panel. + /// + /// + /// Default position + /// By default, any unconstrained element declared as a child of the RelativePanel is given the entire + /// available space and positioned at the(0, 0) coordinates(upper left corner) of the panel.So, if you + /// are positioning a second element relative to an unconstrained element, keep in mind that the second + /// element might get pushed out of the panel. + /// + ///Conflicting relationships + /// + /// If you set multiple relationships that target the same edge of an element, you might have conflicting + /// relationships in your layout as a result.When this happens, the relationships are applied in the + /// following order of priority: + /// • Panel alignment relationships (AlignTopWithPanel, AlignLeftWithPanel, …) are applied first. + /// • Sibling alignment relationships(AlignTopWith, AlignLeftWith, …) are applied second. + /// • Sibling positional relationships(Above, Below, RightOf, LeftOf) are applied last. + /// + /// + /// The panel-center alignment properties(AlignVerticalCenterWith, AlignHorizontalCenterWithPanel, ...) are + /// typically used independently of other constraints and are applied if there is no conflict. + /// + /// + /// The HorizontalAlignment and VerticalAlignment properties on UI elements are applied after relationship + /// properties are evaluated and applied. These properties control the placement of the element within the + /// available size for the element, if the desired size is smaller than the available size. + /// + /// + public partial class RelativePanel : Panel + { + // Dependency property for storing intermediate arrange state on the children + private static readonly DependencyProperty ArrangeStateProperty = + DependencyProperty.Register("ArrangeState", typeof(double[]), typeof(RelativePanel), new PropertyMetadata(null)); + + /// + /// When overridden in a derived class, measures the size in layout required for + /// child elements and determines a size for the System.Windows.FrameworkElement-derived + /// class. + /// + /// The available size that this element can give to child elements. Infinity can + /// be specified as a value to indicate that the element will size to whatever content + /// is available. + /// + /// + /// The size that this element determines it needs during layout, based on its calculations + /// of child element sizes. + /// + protected override Size MeasureOverride(Size availableSize) + { + foreach (var child in Children.OfType()) + { + child.Measure(availableSize); + } + foreach (var item in CalculateLocations(availableSize)) + { + if (item.Item2.Size.Width < item.Item1.DesiredSize.Width || item.Item2.Size.Height < item.Item1.DesiredSize.Height) + item.Item1.Measure(item.Item2.Size); + } + return base.MeasureOverride(availableSize); + } + + /// + /// When overridden in a derived class, positions child elements and determines a + /// size for a System.Windows.FrameworkElement derived class. + /// + /// + /// The final area within the parent that this element should use to arrange itself + /// and its children. + /// + /// The actual size used. + protected override Size ArrangeOverride(Size finalSize) + { + foreach (var item in CalculateLocations(finalSize)) + item.Item1.Arrange(item.Item2); + return base.ArrangeOverride(finalSize); + } + + private IEnumerable> CalculateLocations(Size finalSize) + { + //List of margins for each element between the element and panel (left, top, right, bottom) + List arranges = new List(Children.Count); + //First pass aligns all sides that aren't constrained by other elements + int arrangedCount = 0; + foreach (var child in Children.OfType()) + { + //NaN means the arrange value is not constrained yet for that side + double[] rect = new[] { double.NaN, double.NaN, double.NaN, double.NaN }; + arranges.Add(rect); + child.SetValue(ArrangeStateProperty, rect); + + //Align with panels always wins, so do these first, or if no constraints are set at all set margin to 0 + + //Left side + if (GetAlignLeftWithPanel(child)) + { + rect[0] = 0; + } + else if ( + child.GetValue(AlignLeftWithProperty) == null && + child.GetValue(RightOfProperty) == null && + child.GetValue(AlignHorizontalCenterWithProperty) == null && + !GetAlignHorizontalCenterWithPanel(child)) + { + if (GetAlignRightWithPanel(child)) + rect[0] = finalSize.Width - child.DesiredSize.Width; + else if (child.GetValue(AlignRightWithProperty) == null && child.GetValue(AlignHorizontalCenterWithProperty) == null && child.GetValue(LeftOfProperty) == null) + rect[0] = 0; //default fallback to 0 + } + + //Top side + if (GetAlignTopWithPanel(child)) + { + rect[1] = 0; + } + else if ( + child.GetValue(AlignTopWithProperty) == null && + child.GetValue(BelowProperty) == null && + child.GetValue(AlignVerticalCenterWithProperty) == null && + !GetAlignVerticalCenterWithPanel(child)) + { + if (GetAlignBottomWithPanel(child)) + rect[1] = finalSize.Height - child.DesiredSize.Height; + else if (child.GetValue(AlignBottomWithProperty) == null && child.GetValue(AlignVerticalCenterWithProperty) == null && child.GetValue(AboveProperty) == null) + rect[1] = 0; //default fallback to 0 + } + + //Right side + if (GetAlignRightWithPanel(child)) + { + rect[2] = 0; + } + else if (!double.IsNaN(rect[0]) && + child.GetValue(AlignRightWithProperty) == null && + child.GetValue(LeftOfProperty) == null && + child.GetValue(AlignHorizontalCenterWithProperty) == null && + !GetAlignHorizontalCenterWithPanel(child)) + { + rect[2] = finalSize.Width - rect[0] - child.DesiredSize.Width; + } + + //Bottom side + if (GetAlignBottomWithPanel(child)) + rect[3] = 0; + else if (!double.IsNaN(rect[1]) && + (child.GetValue(AlignBottomWithProperty) == null && + child.GetValue(AboveProperty) == null) && + child.GetValue(AlignVerticalCenterWithProperty) == null && + !GetAlignVerticalCenterWithPanel(child)) + { + rect[3] = finalSize.Height - rect[1] - child.DesiredSize.Height; + } + + if (!double.IsNaN(rect[0]) && !double.IsNaN(rect[1]) && + !double.IsNaN(rect[2]) && !double.IsNaN(rect[3])) + arrangedCount++; + } + int i = 0; + //Run iterative layout passes + while (arrangedCount < Children.Count) + { + bool valueChanged = false; + i = 0; + foreach (var child in Children.OfType()) + { + double[] rect = arranges[i++]; + + if (!double.IsNaN(rect[0]) && !double.IsNaN(rect[1]) && + !double.IsNaN(rect[2]) && !double.IsNaN(rect[3])) + continue; //Control is fully arranged + + //Calculate left side + if (double.IsNaN(rect[0])) + { + var alignLeftWith = GetDependencyElement(RelativePanel.AlignLeftWithProperty, child); + if (alignLeftWith != null) + { + double[] r = (double[])alignLeftWith.GetValue(ArrangeStateProperty); + if (!double.IsNaN(r[0])) + { + rect[0] = r[0]; + valueChanged = true; + } + } + else + { + var rightOf = GetDependencyElement(RelativePanel.RightOfProperty, child); + if (rightOf != null) + { + double[] r = (double[])rightOf.GetValue(ArrangeStateProperty); + if (!double.IsNaN(r[2])) + { + rect[0] = finalSize.Width - r[2]; + valueChanged = true; + } + } + else if (!double.IsNaN(rect[2])) + { + rect[0] = finalSize.Width - rect[2] - child.DesiredSize.Width; + valueChanged = true; + } + } + } + //Calculate top side + if (double.IsNaN(rect[1])) + { + var alignTopWith = GetDependencyElement(RelativePanel.AlignTopWithProperty, child); + if (alignTopWith != null) + { + double[] r = (double[])alignTopWith.GetValue(ArrangeStateProperty); + if (!double.IsNaN(r[1])) + { + rect[1] = r[1]; + valueChanged = true; + } + } + else + { + var below = GetDependencyElement(RelativePanel.BelowProperty, child); + if (below != null) + { + double[] r = (double[])below.GetValue(ArrangeStateProperty); + if (!double.IsNaN(r[3])) + { + rect[1] = finalSize.Height - r[3]; + valueChanged = true; + } + } + else if (!double.IsNaN(rect[3])) + { + rect[1] = finalSize.Height - rect[3] - child.DesiredSize.Height; + valueChanged = true; + } + } + } + //Calculate right side + if (double.IsNaN(rect[2])) + { + var alignRightWith = GetDependencyElement(RelativePanel.AlignRightWithProperty, child); + if (alignRightWith != null) + { + double[] r = (double[])alignRightWith.GetValue(ArrangeStateProperty); + if (!double.IsNaN(r[2])) + { + rect[2] = r[2]; + if (double.IsNaN(rect[0])) + { + if (child.GetValue(RelativePanel.AlignLeftWithProperty) == null) + { + rect[0] = rect[2] + child.DesiredSize.Width; + valueChanged = true; + } + } + } + } + else + { + var leftOf = GetDependencyElement(RelativePanel.LeftOfProperty, child); + if (leftOf != null) + { + double[] r = (double[])leftOf.GetValue(ArrangeStateProperty); + if (!double.IsNaN(r[0])) + { + rect[2] = finalSize.Width - r[0]; + valueChanged = true; + } + } + else if (!double.IsNaN(rect[0])) + { + rect[2] = finalSize.Width - rect[0] - child.DesiredSize.Width; + valueChanged = true; + } + } + } + //Calculate bottom side + if (double.IsNaN(rect[3])) + { + var alignBottomWith = GetDependencyElement(RelativePanel.AlignBottomWithProperty, child); + if (alignBottomWith != null) + { + double[] r = (double[])alignBottomWith.GetValue(ArrangeStateProperty); + if (!double.IsNaN(r[3])) + { + rect[3] = r[3]; + valueChanged = true; + if (double.IsNaN(rect[1])) + { + if (child.GetValue(RelativePanel.AlignTopWithProperty) == null) + { + rect[1] = finalSize.Height - rect[3] - child.DesiredSize.Height; + } + } + } + } + else + { + var above = GetDependencyElement(RelativePanel.AboveProperty, child); + if (above != null) + { + double[] r = (double[])above.GetValue(ArrangeStateProperty); + if (!double.IsNaN(r[1])) + { + rect[3] = finalSize.Height - r[1]; + valueChanged = true; + } + } + else if (!double.IsNaN(rect[1])) + { + rect[3] = finalSize.Height - rect[1] - child.DesiredSize.Height; + valueChanged = true; + } + } + } + //Calculate horizontal alignment + if (double.IsNaN(rect[0]) && double.IsNaN(rect[2])) + { + var alignHorizontalCenterWith = GetDependencyElement(RelativePanel.AlignHorizontalCenterWithProperty, child); + if (alignHorizontalCenterWith != null) + { + double[] r = (double[])alignHorizontalCenterWith.GetValue(ArrangeStateProperty); + if (!double.IsNaN(r[0]) && !double.IsNaN(r[2])) + { + rect[0] = r[0] + (finalSize.Width - r[2] - r[0]) * .5 - child.DesiredSize.Width * .5; + rect[2] = finalSize.Width - rect[0] - child.DesiredSize.Width; + valueChanged = true; + } + } + else + { + if (GetAlignHorizontalCenterWithPanel(child)) + { + var roomToSpare = finalSize.Width - child.DesiredSize.Width; + rect[0] = roomToSpare * .5; + rect[2] = roomToSpare * .5; + valueChanged = true; + } + } + } + + //Calculate vertical alignment + if (double.IsNaN(rect[1]) && double.IsNaN(rect[3])) + { + var alignVerticalCenterWith = GetDependencyElement(RelativePanel.AlignVerticalCenterWithProperty, child); + if (alignVerticalCenterWith != null) + { + double[] r = (double[])alignVerticalCenterWith.GetValue(ArrangeStateProperty); + if (!double.IsNaN(r[1]) && !double.IsNaN(r[3])) + { + rect[1] = r[1] + (finalSize.Height - r[3] - r[1]) * .5 - child.DesiredSize.Height * .5; + rect[3] = finalSize.Height - rect[1] - child.DesiredSize.Height; + valueChanged = true; + } + } + else + { + if (GetAlignVerticalCenterWithPanel(child)) + { + var roomToSpare = finalSize.Height - child.DesiredSize.Height; + rect[1] = roomToSpare * .5; + rect[3] = roomToSpare * .5; + valueChanged = true; + } + } + } + + + //if panel is now fully arranged, increase the counter + if (!double.IsNaN(rect[0]) && !double.IsNaN(rect[1]) && + !double.IsNaN(rect[2]) && !double.IsNaN(rect[3])) + arrangedCount++; + } + if (!valueChanged) + { + //If a layout pass didn't increase number of arranged elements, + //there must be a circular dependency + throw new ArgumentException("RelativePanel error: Circular dependency detected. Layout could not complete"); + } + } + + i = 0; + //Arrange iterations complete - Apply the results to the child elements + foreach (var child in Children.OfType()) + { + double[] rect = arranges[i++]; + //Measure child again with the new calculated available size + //this helps for instance textblocks to reflow the text wrapping + //We should probably have done this during the measure step but it would cause a more expensive + //measure+arrange layout cycle + //if(child is TextBlock) + // child.Measure(new Size(Math.Max(0, finalSize.Width - rect[2] - rect[0]), Math.Max(0, finalSize.Height - rect[3] - rect[1]))); + + //if(child is TextBlock tb) + //{ + // tb.ArrangeOverride(new Rect(rect[0], rect[1], Math.Max(0, finalSize.Width - rect[2] - rect[0]), Math.Max(0, finalSize.Height - rect[3] - rect[1]))); + //} + //else + yield return new Tuple(child, new Rect(rect[0], rect[1], Math.Max(0, finalSize.Width - rect[2] - rect[0]), Math.Max(0, finalSize.Height - rect[3] - rect[1]))); + } + } + + //Gets the element that's referred to in the alignment attached properties + private UIElement GetDependencyElement(DependencyProperty property, DependencyObject child) + { + var dependency = child.GetValue(property); + if (dependency == null) + return null; + if (dependency is UIElement) + { + if (Children.Contains((UIElement)dependency)) + return (UIElement)dependency; + throw new ArgumentException(string.Format("RelativePanel error: Element does not exist in the current context", property.Name)); + } + + throw new ArgumentException("RelativePanel error: Value must be of type UIElement"); + } + } +} From b633b063bdb9c1cb3445354b40f4756c2867e351 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 24 May 2020 21:55:56 -0300 Subject: [PATCH 047/354] fix wrap layout. --- src/Avalonia.Layout/WrapLayout/WrapLayout.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Layout/WrapLayout/WrapLayout.cs b/src/Avalonia.Layout/WrapLayout/WrapLayout.cs index 4fc8035e8e3..dccbb2205ee 100644 --- a/src/Avalonia.Layout/WrapLayout/WrapLayout.cs +++ b/src/Avalonia.Layout/WrapLayout/WrapLayout.cs @@ -313,16 +313,15 @@ bool Arrange(WrapItem item, bool isLast = false) return finalSize; } - protected override void OnPropertyChanged(AvaloniaProperty property, Optional oldValue, BindingValue newValue, BindingPriority priority) + protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change) { - base.OnPropertyChanged(property, oldValue, newValue, priority); + base.OnPropertyChanged(change); - if(property == OrientationProperty || property == HorizontalSpacingProperty || property == VerticalSpacingProperty) + if (change.Property == OrientationProperty || change.Property == HorizontalSpacingProperty || change.Property == VerticalSpacingProperty) { InvalidateMeasure(); InvalidateArrange(); } - } } } From 289463e5e15e2e277d795bfef34564d830861a8b Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 24 May 2020 22:45:56 -0300 Subject: [PATCH 048/354] port relativepanel. --- .../RelativePanel.AttachedProperties.cs | 159 ++++++++++-------- src/Avalonia.Controls/RelativePanel.cs | 29 ++-- .../Avalonia.Markup.Xaml.csproj | 1 + .../Converters/NameReferenceConverter.cs | 82 +++++++++ 4 files changed, 189 insertions(+), 82 deletions(-) create mode 100644 src/Markup/Avalonia.Markup.Xaml/Converters/NameReferenceConverter.cs diff --git a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs index 21baff87abb..a42eb6d4286 100644 --- a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs +++ b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs @@ -1,16 +1,39 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Text; +using Avalonia.Layout; +using Avalonia.Markup.Xaml.Converters; namespace Avalonia.Controls { public partial class RelativePanel { - private static void OnAlignPropertiesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + private static void OnAlignPropertiesChanged(AvaloniaObject d, AvaloniaPropertyChangedEventArgs e) { - var elm = d as FrameworkElement; - if (elm.Parent is FrameworkElement) - ((FrameworkElement)elm.Parent).InvalidateArrange(); + var elm = d as Layoutable; + if (elm.Parent is Layoutable) + ((Layoutable)elm.Parent).InvalidateArrange(); + } + + static RelativePanel() + { + AboveProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignBottomWithPanelProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignBottomWithProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignHorizontalCenterWithPanelProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignHorizontalCenterWithProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignLeftWithPanelProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignLeftWithProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignRightWithPanelProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignRightWithProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignTopWithPanelProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignTopWithProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignVerticalCenterWithPanelProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + AlignVerticalCenterWithProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + BelowProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + LeftOfProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + LeftOfProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); } /// @@ -22,7 +45,7 @@ private static void OnAlignPropertiesChanged(DependencyObject d, DependencyPrope /// (The element to position this element above.) /// [TypeConverter(typeof(NameReferenceConverter))] - public static object GetAbove(DependencyObject obj) + public static object GetAbove(AvaloniaObject obj) { return (object)obj.GetValue(AboveProperty); } @@ -32,7 +55,7 @@ public static object GetAbove(DependencyObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to position this element above.) - public static void SetAbove(DependencyObject obj, object value) + public static void SetAbove(AvaloniaObject obj, object value) { obj.SetValue(AboveProperty, value); } @@ -40,8 +63,8 @@ public static void SetAbove(DependencyObject obj, object value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AboveProperty = - DependencyProperty.RegisterAttached("Above", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AboveProperty = + AvaloniaProperty.RegisterAttached("Above", typeof(RelativePanel)); /// @@ -53,7 +76,7 @@ public static void SetAbove(DependencyObject obj, object value) /// object. (true to align this element's bottom edge with the panel's bottom edge; /// otherwise, false.) /// - public static bool GetAlignBottomWithPanel(DependencyObject obj) + public static bool GetAlignBottomWithPanel(AvaloniaObject obj) { return (bool)obj.GetValue(AlignBottomWithPanelProperty); } @@ -66,7 +89,7 @@ public static bool GetAlignBottomWithPanel(DependencyObject obj) /// The value to set. (true to align this element's bottom edge with the panel's /// bottom edge; otherwise, false.) /// - public static void SetAlignBottomWithPanel(DependencyObject obj, bool value) + public static void SetAlignBottomWithPanel(AvaloniaObject obj, bool value) { obj.SetValue(AlignBottomWithPanelProperty, value); } @@ -74,8 +97,8 @@ public static void SetAlignBottomWithPanel(DependencyObject obj, bool value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignBottomWithPanelProperty = - DependencyProperty.RegisterAttached("AlignBottomWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignBottomWithPanelProperty = + AvaloniaProperty.RegisterAttached("AlignBottomWithPanel", typeof(RelativePanel)); /// /// Gets the value of the RelativePanel.AlignBottomWith XAML attached property for the target element. @@ -86,7 +109,7 @@ public static void SetAlignBottomWithPanel(DependencyObject obj, bool value) /// (The element to align this element's bottom edge with.) /// [TypeConverter(typeof(NameReferenceConverter))] - public static object GetAlignBottomWith(DependencyObject obj) + public static object GetAlignBottomWith(AvaloniaObject obj) { return (object)obj.GetValue(AlignBottomWithProperty); } @@ -96,7 +119,7 @@ public static object GetAlignBottomWith(DependencyObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to align this element's bottom edge with.) - public static void SetAlignBottomWith(DependencyObject obj, object value) + public static void SetAlignBottomWith(AvaloniaObject obj, object value) { obj.SetValue(AlignBottomWithProperty, value); } @@ -104,8 +127,8 @@ public static void SetAlignBottomWith(DependencyObject obj, object value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignBottomWithProperty = - DependencyProperty.RegisterAttached("AlignBottomWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignBottomWithProperty = + AvaloniaProperty.RegisterAttached("AlignBottomWith", typeof(RelativePanel)); /// /// Gets the value of the RelativePanel.AlignHorizontalCenterWithPanel XAML attached property for the target element. @@ -116,7 +139,7 @@ public static void SetAlignBottomWith(DependencyObject obj, object value) /// of the specified object. (true to horizontally center this element in the panel; /// otherwise, false.) /// - public static bool GetAlignHorizontalCenterWithPanel(DependencyObject obj) + public static bool GetAlignHorizontalCenterWithPanel(AvaloniaObject obj) { return (bool)obj.GetValue(AlignHorizontalCenterWithPanelProperty); } @@ -129,7 +152,7 @@ public static bool GetAlignHorizontalCenterWithPanel(DependencyObject obj) /// The value to set. (true to horizontally center this element in the panel; otherwise, /// false.) /// - public static void SetAlignHorizontalCenterWithPanel(DependencyObject obj, bool value) + public static void SetAlignHorizontalCenterWithPanel(AvaloniaObject obj, bool value) { obj.SetValue(AlignHorizontalCenterWithPanelProperty, value); } @@ -137,8 +160,8 @@ public static void SetAlignHorizontalCenterWithPanel(DependencyObject obj, bool /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignHorizontalCenterWithPanelProperty = - DependencyProperty.RegisterAttached("AlignHorizontalCenterWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignHorizontalCenterWithPanelProperty = + AvaloniaProperty.RegisterAttached("AlignHorizontalCenterWithPanel", typeof(RelativePanel), false); /// /// Gets the value of the RelativePanel.AlignHorizontalCenterWith XAML attached property for the target element. @@ -149,7 +172,7 @@ public static void SetAlignHorizontalCenterWithPanel(DependencyObject obj, bool /// specified object. (The element to align this element's horizontal center with.) /// [TypeConverter(typeof(NameReferenceConverter))] - public static object GetAlignHorizontalCenterWith(DependencyObject obj) + public static object GetAlignHorizontalCenterWith(AvaloniaObject obj) { return (object)obj.GetValue(AlignHorizontalCenterWithProperty); } @@ -159,7 +182,7 @@ public static object GetAlignHorizontalCenterWith(DependencyObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to align this element's horizontal center with.) - public static void SetAlignHorizontalCenterWith(DependencyObject obj, object value) + public static void SetAlignHorizontalCenterWith(AvaloniaObject obj, object value) { obj.SetValue(AlignHorizontalCenterWithProperty, value); } @@ -167,8 +190,8 @@ public static void SetAlignHorizontalCenterWith(DependencyObject obj, object val /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignHorizontalCenterWithProperty = - DependencyProperty.RegisterAttached("AlignHorizontalCenterWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignHorizontalCenterWithProperty = + AvaloniaProperty.RegisterAttached("AlignHorizontalCenterWith", typeof(object), typeof(RelativePanel)); /// /// Gets the value of the RelativePanel.AlignLeftWithPanel XAML attached property for the target element. @@ -179,7 +202,7 @@ public static void SetAlignHorizontalCenterWith(DependencyObject obj, object val /// object. (true to align this element's left edge with the panel's left edge; otherwise, /// false.) /// - public static bool GetAlignLeftWithPanel(DependencyObject obj) + public static bool GetAlignLeftWithPanel(AvaloniaObject obj) { return (bool)obj.GetValue(AlignLeftWithPanelProperty); } @@ -192,7 +215,7 @@ public static bool GetAlignLeftWithPanel(DependencyObject obj) /// The value to set. (true to align this element's left edge with the panel's left /// edge; otherwise, false.) /// - public static void SetAlignLeftWithPanel(DependencyObject obj, bool value) + public static void SetAlignLeftWithPanel(AvaloniaObject obj, bool value) { obj.SetValue(AlignLeftWithPanelProperty, value); } @@ -200,8 +223,8 @@ public static void SetAlignLeftWithPanel(DependencyObject obj, bool value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignLeftWithPanelProperty = - DependencyProperty.RegisterAttached("AlignLeftWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignLeftWithPanelProperty = + AvaloniaProperty.RegisterAttached("AlignLeftWithPanel", typeof(RelativePanel), false); /// @@ -213,7 +236,7 @@ public static void SetAlignLeftWithPanel(DependencyObject obj, bool value) /// object. (The element to align this element's left edge with.) /// [TypeConverter(typeof(NameReferenceConverter))] - public static object GetAlignLeftWith(DependencyObject obj) + public static object GetAlignLeftWith(AvaloniaObject obj) { return (object)obj.GetValue(AlignLeftWithProperty); } @@ -223,7 +246,7 @@ public static object GetAlignLeftWith(DependencyObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to align this element's left edge with.) - public static void SetAlignLeftWith(DependencyObject obj, object value) + public static void SetAlignLeftWith(AvaloniaObject obj, object value) { obj.SetValue(AlignLeftWithProperty, value); } @@ -231,8 +254,8 @@ public static void SetAlignLeftWith(DependencyObject obj, object value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignLeftWithProperty = - DependencyProperty.RegisterAttached("AlignLeftWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignLeftWithProperty = + AvaloniaProperty.RegisterAttached("AlignLeftWith"); /// @@ -244,7 +267,7 @@ public static void SetAlignLeftWith(DependencyObject obj, object value) /// object. (true to align this element's right edge with the panel's right edge; /// otherwise, false.) /// - public static bool GetAlignRightWithPanel(DependencyObject obj) + public static bool GetAlignRightWithPanel(AvaloniaObject obj) { return (bool)obj.GetValue(AlignRightWithPanelProperty); } @@ -257,7 +280,7 @@ public static bool GetAlignRightWithPanel(DependencyObject obj) /// The value to set. (true to align this element's right edge with the panel's right /// edge; otherwise, false.) /// - public static void SetAlignRightWithPanel(DependencyObject obj, bool value) + public static void SetAlignRightWithPanel(AvaloniaObject obj, bool value) { obj.SetValue(AlignRightWithPanelProperty, value); } @@ -265,8 +288,8 @@ public static void SetAlignRightWithPanel(DependencyObject obj, bool value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignRightWithPanelProperty = - DependencyProperty.RegisterAttached("AlignRightWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignRightWithPanelProperty = + AvaloniaProperty.RegisterAttached("AlignRightWithPanel", false); /// /// Gets the value of the RelativePanel.AlignRightWith XAML attached property for the target element. @@ -277,7 +300,7 @@ public static void SetAlignRightWithPanel(DependencyObject obj, bool value) /// object. (The element to align this element's right edge with.) /// [TypeConverter(typeof(NameReferenceConverter))] - public static object GetAlignRightWith(DependencyObject obj) + public static object GetAlignRightWith(AvaloniaObject obj) { return (object)obj.GetValue(AlignRightWithProperty); } @@ -287,7 +310,7 @@ public static object GetAlignRightWith(DependencyObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to align this element's right edge with.) - public static void SetAlignRightWith(DependencyObject obj, object value) + public static void SetAlignRightWith(AvaloniaObject obj, object value) { obj.SetValue(AlignRightWithProperty, value); } @@ -295,8 +318,8 @@ public static void SetAlignRightWith(DependencyObject obj, object value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignRightWithProperty = - DependencyProperty.RegisterAttached("AlignRightWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignRightWithProperty = + AvaloniaProperty.RegisterAttached("AlignRightWith"); /// /// Gets the value of the RelativePanel.AlignTopWithPanel XAML attached property for the target element. @@ -307,7 +330,7 @@ public static void SetAlignRightWith(DependencyObject obj, object value) /// object. (true to align this element's top edge with the panel's top edge; otherwise, /// false.) /// - public static bool GetAlignTopWithPanel(DependencyObject obj) + public static bool GetAlignTopWithPanel(AvaloniaObject obj) { return (bool)obj.GetValue(AlignTopWithPanelProperty); } @@ -320,7 +343,7 @@ public static bool GetAlignTopWithPanel(DependencyObject obj) /// The value to set. (true to align this element's top edge with the panel's top /// edge; otherwise, false.) /// - public static void SetAlignTopWithPanel(DependencyObject obj, bool value) + public static void SetAlignTopWithPanel(AvaloniaObject obj, bool value) { obj.SetValue(AlignTopWithPanelProperty, value); } @@ -328,8 +351,8 @@ public static void SetAlignTopWithPanel(DependencyObject obj, bool value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignTopWithPanelProperty = - DependencyProperty.RegisterAttached("AlignTopWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignTopWithPanelProperty = + AvaloniaProperty.RegisterAttached("AlignTopWithPanel", false); /// /// Gets the value of the RelativePanel.AlignTopWith XAML attached property for the target element. @@ -337,7 +360,7 @@ public static void SetAlignTopWithPanel(DependencyObject obj, bool value) /// The object from which the property value is read. /// The value to set. (The element to align this element's top edge with.) [TypeConverter(typeof(NameReferenceConverter))] - public static object GetAlignTopWith(DependencyObject obj) + public static object GetAlignTopWith(AvaloniaObject obj) { return (object)obj.GetValue(AlignTopWithProperty); } @@ -347,7 +370,7 @@ public static object GetAlignTopWith(DependencyObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to align this element's top edge with.) - public static void SetAlignTopWith(DependencyObject obj, object value) + public static void SetAlignTopWith(AvaloniaObject obj, object value) { obj.SetValue(AlignTopWithProperty, value); } @@ -355,8 +378,8 @@ public static void SetAlignTopWith(DependencyObject obj, object value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignTopWithProperty = - DependencyProperty.RegisterAttached("AlignTopWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignTopWithProperty = + AvaloniaProperty.RegisterAttached("AlignTopWith"); /// /// Gets the value of the RelativePanel.AlignVerticalCenterWithPanel XAML attached property for the target element. @@ -367,7 +390,7 @@ public static void SetAlignTopWith(DependencyObject obj, object value) /// the specified object. (true to vertically center this element in the panel; otherwise, /// false.) /// - public static bool GetAlignVerticalCenterWithPanel(DependencyObject obj) + public static bool GetAlignVerticalCenterWithPanel(AvaloniaObject obj) { return (bool)obj.GetValue(AlignVerticalCenterWithPanelProperty); } @@ -380,7 +403,7 @@ public static bool GetAlignVerticalCenterWithPanel(DependencyObject obj) /// The value to set. (true to vertically center this element in the panel; otherwise, /// false.) /// - public static void SetAlignVerticalCenterWithPanel(DependencyObject obj, bool value) + public static void SetAlignVerticalCenterWithPanel(AvaloniaObject obj, bool value) { obj.SetValue(AlignVerticalCenterWithPanelProperty, value); } @@ -388,8 +411,8 @@ public static void SetAlignVerticalCenterWithPanel(DependencyObject obj, bool va /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignVerticalCenterWithPanelProperty = - DependencyProperty.RegisterAttached("AlignVerticalCenterWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(false, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignVerticalCenterWithPanelProperty = + AvaloniaProperty.RegisterAttached("AlignVerticalCenterWithPanel", false); /// /// Gets the value of the RelativePanel.AlignVerticalCenterWith XAML attached property for the target element. @@ -397,7 +420,7 @@ public static void SetAlignVerticalCenterWithPanel(DependencyObject obj, bool va /// The object from which the property value is read. /// The value to set. (The element to align this element's vertical center with.) [TypeConverter(typeof(NameReferenceConverter))] - public static object GetAlignVerticalCenterWith(DependencyObject obj) + public static object GetAlignVerticalCenterWith(AvaloniaObject obj) { return (object)obj.GetValue(AlignVerticalCenterWithProperty); } @@ -407,7 +430,7 @@ public static object GetAlignVerticalCenterWith(DependencyObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to align this element's horizontal center with.) - public static void SetAlignVerticalCenterWith(DependencyObject obj, object value) + public static void SetAlignVerticalCenterWith(AvaloniaObject obj, object value) { obj.SetValue(AlignVerticalCenterWithProperty, value); } @@ -415,8 +438,8 @@ public static void SetAlignVerticalCenterWith(DependencyObject obj, object value /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty AlignVerticalCenterWithProperty = - DependencyProperty.RegisterAttached("AlignVerticalCenterWith", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + public static readonly AttachedProperty AlignVerticalCenterWithProperty = + AvaloniaProperty.RegisterAttached("AlignVerticalCenterWith"); /// /// Gets the value of the RelativePanel.Below XAML attached property for the target element. @@ -427,7 +450,7 @@ public static void SetAlignVerticalCenterWith(DependencyObject obj, object value /// (The element to position this element below.) /// [TypeConverter(typeof(NameReferenceConverter))] - public static object GetBelow(DependencyObject obj) + public static object GetBelow(AvaloniaObject obj) { return (object)obj.GetValue(BelowProperty); } @@ -437,7 +460,7 @@ public static object GetBelow(DependencyObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to position this element below.) - public static void SetBelow(DependencyObject obj, object value) + public static void SetBelow(AvaloniaObject obj, object value) { obj.SetValue(BelowProperty, value); } @@ -445,8 +468,8 @@ public static void SetBelow(DependencyObject obj, object value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty BelowProperty = - DependencyProperty.RegisterAttached("Below", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + public static readonly AttachedProperty BelowProperty = + AvaloniaProperty.RegisterAttached("Below"); /// /// Gets the value of the RelativePanel.LeftOf XAML attached property for the target element. @@ -457,7 +480,7 @@ public static void SetBelow(DependencyObject obj, object value) /// (The element to position this element to the left of.) /// [TypeConverter(typeof(NameReferenceConverter))] - public static object GetLeftOf(DependencyObject obj) + public static object GetLeftOf(AvaloniaObject obj) { return (object)obj.GetValue(LeftOfProperty); } @@ -467,7 +490,7 @@ public static object GetLeftOf(DependencyObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to position this element to the left of.) - public static void SetLeftOf(DependencyObject obj, object value) + public static void SetLeftOf(AvaloniaObject obj, object value) { obj.SetValue(LeftOfProperty, value); } @@ -475,8 +498,8 @@ public static void SetLeftOf(DependencyObject obj, object value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty LeftOfProperty = - DependencyProperty.RegisterAttached("LeftOf", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + public static readonly AttachedProperty LeftOfProperty = + AvaloniaProperty.RegisterAttached("LeftOf"); /// /// Gets the value of the RelativePanel.RightOf XAML attached property for the target element. @@ -487,7 +510,7 @@ public static void SetLeftOf(DependencyObject obj, object value) /// (The element to position this element to the right of.) /// [TypeConverter(typeof(NameReferenceConverter))] - public static object GetRightOf(DependencyObject obj) + public static object GetRightOf(AvaloniaObject obj) { return (object)obj.GetValue(RightOfProperty); } @@ -497,7 +520,7 @@ public static object GetRightOf(DependencyObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to position this element to the right of.) - public static void SetRightOf(DependencyObject obj, object value) + public static void SetRightOf(AvaloniaObject obj, object value) { obj.SetValue(RightOfProperty, value); } @@ -505,7 +528,7 @@ public static void SetRightOf(DependencyObject obj, object value) /// /// Identifies the XAML attached property. /// - public static readonly DependencyProperty RightOfProperty = - DependencyProperty.RegisterAttached("RightOf", typeof(object), typeof(RelativePanel), new PropertyMetadata(null, OnAlignPropertiesChanged)); + public static readonly AttachedProperty RightOfProperty = + AvaloniaProperty.RegisterAttached("RightOf"); } } diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index aecd4b7c98c..f1989de5709 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; -using System.Text; +using System.Linq; +using Avalonia.Layout; namespace Avalonia.Controls { @@ -37,8 +38,8 @@ namespace Avalonia.Controls public partial class RelativePanel : Panel { // Dependency property for storing intermediate arrange state on the children - private static readonly DependencyProperty ArrangeStateProperty = - DependencyProperty.Register("ArrangeState", typeof(double[]), typeof(RelativePanel), new PropertyMetadata(null)); + private static readonly StyledProperty ArrangeStateProperty = + AvaloniaProperty.Register("ArrangeState"); /// /// When overridden in a derived class, measures the size in layout required for @@ -55,7 +56,7 @@ public partial class RelativePanel : Panel /// protected override Size MeasureOverride(Size availableSize) { - foreach (var child in Children.OfType()) + foreach (var child in Children.OfType()) { child.Measure(availableSize); } @@ -83,13 +84,13 @@ protected override Size ArrangeOverride(Size finalSize) return base.ArrangeOverride(finalSize); } - private IEnumerable> CalculateLocations(Size finalSize) + private IEnumerable> CalculateLocations(Size finalSize) { //List of margins for each element between the element and panel (left, top, right, bottom) List arranges = new List(Children.Count); //First pass aligns all sides that aren't constrained by other elements int arrangedCount = 0; - foreach (var child in Children.OfType()) + foreach (var child in Children.OfType()) { //NaN means the arrange value is not constrained yet for that side double[] rect = new[] { double.NaN, double.NaN, double.NaN, double.NaN }; @@ -168,7 +169,7 @@ private IEnumerable> CalculateLocations(Size finalSize) { bool valueChanged = false; i = 0; - foreach (var child in Children.OfType()) + foreach (var child in Children.OfType()) { double[] rect = arranges[i++]; @@ -386,7 +387,7 @@ private IEnumerable> CalculateLocations(Size finalSize) i = 0; //Arrange iterations complete - Apply the results to the child elements - foreach (var child in Children.OfType()) + foreach (var child in Children.OfType()) { double[] rect = arranges[i++]; //Measure child again with the new calculated available size @@ -401,24 +402,24 @@ private IEnumerable> CalculateLocations(Size finalSize) // tb.ArrangeOverride(new Rect(rect[0], rect[1], Math.Max(0, finalSize.Width - rect[2] - rect[0]), Math.Max(0, finalSize.Height - rect[3] - rect[1]))); //} //else - yield return new Tuple(child, new Rect(rect[0], rect[1], Math.Max(0, finalSize.Width - rect[2] - rect[0]), Math.Max(0, finalSize.Height - rect[3] - rect[1]))); + yield return new Tuple(child, new Rect(rect[0], rect[1], Math.Max(0, finalSize.Width - rect[2] - rect[0]), Math.Max(0, finalSize.Height - rect[3] - rect[1]))); } } //Gets the element that's referred to in the alignment attached properties - private UIElement GetDependencyElement(DependencyProperty property, DependencyObject child) + private Layoutable GetDependencyElement(AvaloniaProperty property, AvaloniaObject child) { var dependency = child.GetValue(property); if (dependency == null) return null; - if (dependency is UIElement) + if (dependency is Layoutable) { - if (Children.Contains((UIElement)dependency)) - return (UIElement)dependency; + if (Children.Contains((ILayoutable)dependency)) + return (Layoutable)dependency; throw new ArgumentException(string.Format("RelativePanel error: Element does not exist in the current context", property.Name)); } - throw new ArgumentException("RelativePanel error: Value must be of type UIElement"); + throw new ArgumentException("RelativePanel error: Value must be of type ILayoutable"); } } } diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index 06c53755206..724d910b626 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -12,6 +12,7 @@ + diff --git a/src/Markup/Avalonia.Markup.Xaml/Converters/NameReferenceConverter.cs b/src/Markup/Avalonia.Markup.Xaml/Converters/NameReferenceConverter.cs new file mode 100644 index 00000000000..885648ffdea --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/Converters/NameReferenceConverter.cs @@ -0,0 +1,82 @@ +using Avalonia.Controls; +using Avalonia.Media.Imaging; +using Avalonia.Platform; +using System; +using System.ComponentModel; +using System.Globalization; + +namespace Avalonia.Markup.Xaml.Converters +{ + public class NameReferenceConverter : TypeConverter + { + public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) + { + if (sourceType == typeof(string)) + { + return true; + } + + return base.CanConvertFrom(context, sourceType); + } + + public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) + { + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + + //var nameResolver = (IXamlNameResolver)context.GetService(typeof(IXamlNameResolver)); + //if (nameResolver == null) + //{ + // throw new InvalidOperationException(SR.Get(SRID.MissingNameResolver)); + //} + + //string name = value as string; + //if (String.IsNullOrEmpty(name)) + //{ + // throw new InvalidOperationException(SR.Get(SRID.MustHaveName)); + //} + //object obj = nameResolver.Resolve(name); + //if (obj == null) + //{ + // string[] names = new string[] { name }; + // obj = nameResolver.GetFixupToken(names, true); + //} + return null; //obj; + } + + public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) + { + //if (context == null || (context.GetService(typeof(IXamlNameProvider)) as IXamlNameProvider) == null) + //{ + // return false; + //} + + //if (destinationType == typeof(string)) + //{ + // return true; + //} + + return base.CanConvertTo(context, destinationType); + + } + + public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) + { + //if (context == null) + //{ + // throw new ArgumentNullException(nameof(context)); + //} + + //var nameProvider = (IXamlNameProvider)context.GetService(typeof(IXamlNameProvider)); + //if (nameProvider == null) + //{ + // throw new InvalidOperationException(SR.Get(SRID.MissingNameProvider)); + //} + + //return nameProvider.GetName(value); + return null; + } + } +} From e4fd1ad4f3dbfca9f713e0faf0d07734dac4275a Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 14:41:12 -0300 Subject: [PATCH 049/354] experimental acrylic brush implementation. --- .../Media/AcrylicBackgroundSource.cs | 8 ++ .../Media/ExperimentalAcrylicBrush.cs | 17 +++++ src/Avalonia.Visuals/Media/IBrush.cs | 2 +- .../Media/IExperimentalAcrylicBrush.cs | 15 ++++ src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 74 +++++++++++++++++++ 5 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 src/Avalonia.Visuals/Media/AcrylicBackgroundSource.cs create mode 100644 src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs create mode 100644 src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs diff --git a/src/Avalonia.Visuals/Media/AcrylicBackgroundSource.cs b/src/Avalonia.Visuals/Media/AcrylicBackgroundSource.cs new file mode 100644 index 00000000000..d902752f850 --- /dev/null +++ b/src/Avalonia.Visuals/Media/AcrylicBackgroundSource.cs @@ -0,0 +1,8 @@ +namespace Avalonia.Media +{ + public enum AcrylicBackgroundSource + { + None, + Digger + } +} diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs new file mode 100644 index 00000000000..2ab2701c9d1 --- /dev/null +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -0,0 +1,17 @@ +namespace Avalonia.Media +{ + public class ExperimentalAcrylicBrush : IExperimentalAcrylicBrush + { + public AcrylicBackgroundSource BackgroundSource { get; set; } + + public Color TintColor { get; set; } + + public double TintOpacity { get; set; } + + public Color FallbackColor { get; set; } + + public double TintLuminosityOpacity { get; set; } + + public double Opacity { get; set; } + } +} diff --git a/src/Avalonia.Visuals/Media/IBrush.cs b/src/Avalonia.Visuals/Media/IBrush.cs index 7756e94598b..15b7681be4a 100644 --- a/src/Avalonia.Visuals/Media/IBrush.cs +++ b/src/Avalonia.Visuals/Media/IBrush.cs @@ -13,4 +13,4 @@ public interface IBrush /// double Opacity { get; } } -} \ No newline at end of file +} diff --git a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs new file mode 100644 index 00000000000..ae202b58ae6 --- /dev/null +++ b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs @@ -0,0 +1,15 @@ +namespace Avalonia.Media +{ + public interface IExperimentalAcrylicBrush : IBrush + { + AcrylicBackgroundSource BackgroundSource { get; set; } + + Color TintColor { get; set; } + + double TintOpacity { get; set; } + + double TintLuminosityOpacity { get; set; } + + Color FallbackColor { get; set; } + } +} diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 26fdb08a4ba..0d628d6b216 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -227,6 +227,13 @@ SKRect AreaCastingShadowInHole( return bounds; } + private static bool IsLight (Color c) + { + double lightness = (0.299 * c.R + 0.587 * c.G + 0.114 * c.B) / 255; + + return lightness > 0.5; + } + /// public void DrawRectangle(IBrush brush, IPen pen, RoundedRect rect, BoxShadows boxShadows = default) @@ -238,6 +245,17 @@ public void DrawRectangle(IBrush brush, IPen pen, RoundedRect rect, BoxShadows b if (rect.Rect.Height > 8192 || rect.Rect.Width > 8192) boxShadows = default; + if (brush is IExperimentalAcrylicBrush acrylic && IsLight(acrylic.TintColor)) + { + boxShadows = new BoxShadows(new BoxShadow + { + Blur = 2, + OffsetX = 1, + Color = Colors.White, + IsInset = true + }); + } + var rc = rect.Rect.ToSKRect(); var isRounded = rect.IsRounded; var needRoundRect = rect.IsRounded || (boxShadows.HasInsetShadows); @@ -653,6 +671,36 @@ private void ConfigureVisualBrush(ref PaintWrapper paintWrapper, IVisualBrush vi } } + static SKColor SimpleColorBurn(SKColor bg, SKColor fg) + { + using (var bmp = new SKBitmap(1, 1)) + { + bmp.SetPixel(0, 0, bg); + using (var canvas = new SKCanvas(bmp)) + using (var paint = new SKPaint + { + Color = fg + }) + canvas.DrawRect(-1, -1, 3, 3, paint); + return bmp.GetPixel(0, 0); + } + } + + static SKColorFilter CreateAlphaColorFilter(double opacity) + { + if (opacity > 1) + opacity = 1; + var c = new byte[256]; + var a = new byte[256]; + for (var i = 0; i < 256; i++) + { + c[i] = 255; + a[i] = (byte)(i * opacity); + } + + return SKColorFilter.CreateTable(a, c, c, c); + } + /// /// Creates paint wrapper for given brush. /// @@ -676,6 +724,32 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, return paintWrapper; } + if(brush is IExperimentalAcrylicBrush acrylicBrush) + { + var tintOpacity = acrylicBrush.TintOpacity; + var noiseOpcity = 0.12; + + var excl = new SKColor(255, 255, 255, (byte)(255 * acrylicBrush.TintLuminosityOpacity)); + var tint = new SKColor(acrylicBrush.TintColor.R, acrylicBrush.TintColor.G, acrylicBrush.TintColor.B, (byte)(255 * tintOpacity)); + + tint = SimpleColorBurn(excl, tint); + + var tintShader = SKShader.CreateColor(tint); + var noiseShader = + SKShader.CreatePerlinNoiseTurbulence(12.876f, 12.876f, 2, 0.76829314f) + .WithColorFilter(CreateAlphaColorFilter(noiseOpcity)); + + var compose = SKShader.CreateCompose(tintShader, noiseShader); + paint.Shader = compose; + + if (acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger) + { + paint.BlendMode = SKBlendMode.Src; + } + + return paintWrapper; + } + paint.Color = new SKColor(255, 255, 255, (byte) (255 * opacity)); if (brush is IGradientBrush gradient) From 29984b1d45684403723e790dce235fa0bb73c97a Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 15:12:23 -0300 Subject: [PATCH 050/354] drop light mode inset shadow. --- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 24 ++++---------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 0d628d6b216..307f01ad1a2 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -227,14 +227,6 @@ SKRect AreaCastingShadowInHole( return bounds; } - private static bool IsLight (Color c) - { - double lightness = (0.299 * c.R + 0.587 * c.G + 0.114 * c.B) / 255; - - return lightness > 0.5; - } - - /// public void DrawRectangle(IBrush brush, IPen pen, RoundedRect rect, BoxShadows boxShadows = default) { @@ -245,17 +237,6 @@ public void DrawRectangle(IBrush brush, IPen pen, RoundedRect rect, BoxShadows b if (rect.Rect.Height > 8192 || rect.Rect.Width > 8192) boxShadows = default; - if (brush is IExperimentalAcrylicBrush acrylic && IsLight(acrylic.TintColor)) - { - boxShadows = new BoxShadows(new BoxShadow - { - Blur = 2, - OffsetX = 1, - Color = Colors.White, - IsInset = true - }); - } - var rc = rect.Rect.ToSKRect(); var isRounded = rect.IsRounded; var needRoundRect = rect.IsRounded || (boxShadows.HasInsetShadows); @@ -726,7 +707,10 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, if(brush is IExperimentalAcrylicBrush acrylicBrush) { - var tintOpacity = acrylicBrush.TintOpacity; + var tintOpacity = + acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? + acrylicBrush.TintOpacity : 1; + var noiseOpcity = 0.12; var excl = new SKColor(255, 255, 255, (byte)(255 * acrylicBrush.TintLuminosityOpacity)); From bdfc4deb6a7ed262eaa83f023dd34a3bbf71d885 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 15:41:53 -0300 Subject: [PATCH 051/354] implement immutable acrylic and avalonia properties. --- .../Media/ExperimentalAcrylicBrush.cs | 64 ++++++++++++++-- .../Media/IExperimentalAcrylicBrush.cs | 10 +-- .../ImmutableExperimentalAcrylicBrush.cs | 73 +++++++++++++++++++ 3 files changed, 135 insertions(+), 12 deletions(-) create mode 100644 src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs index 2ab2701c9d1..3c093b19192 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -1,17 +1,67 @@ namespace Avalonia.Media { - public class ExperimentalAcrylicBrush : IExperimentalAcrylicBrush + public class ExperimentalAcrylicBrush : Brush, IExperimentalAcrylicBrush { - public AcrylicBackgroundSource BackgroundSource { get; set; } + static ExperimentalAcrylicBrush() + { + AffectsRender( + TintColorProperty, + BackgroundSourceProperty, + TintOpacityProperty, + TintLuminosityOpacityProperty); + } - public Color TintColor { get; set; } + /// + /// Defines the property. + /// + public static readonly StyledProperty TintColorProperty = + AvaloniaProperty.Register(nameof(TintColor)); - public double TintOpacity { get; set; } + public static readonly StyledProperty BackgroundSourceProperty = + AvaloniaProperty.Register(nameof(BackgroundSource)); - public Color FallbackColor { get; set; } + public static readonly StyledProperty TintOpacityProperty = + AvaloniaProperty.Register(nameof(TintOpacity)); - public double TintLuminosityOpacity { get; set; } + public static readonly StyledProperty TintLuminosityOpacityProperty = + AvaloniaProperty.Register(nameof(TintLuminosityOpacity)); - public double Opacity { get; set; } + public static readonly StyledProperty FallbackColorProperty = + AvaloniaProperty.Register(nameof(FallbackColor)); + + public AcrylicBackgroundSource BackgroundSource + { + get => GetValue(BackgroundSourceProperty); + set => SetValue(BackgroundSourceProperty, value); + } + + public Color TintColor + { + get => GetValue(TintColorProperty); + set => SetValue(TintColorProperty, value); + } + + public double TintOpacity + { + get => GetValue(TintOpacityProperty); + set => SetValue(TintOpacityProperty, value); + } + + public Color FallbackColor + { + get => GetValue(FallbackColorProperty); + set => SetValue(FallbackColorProperty, value); + } + + public double TintLuminosityOpacity + { + get => GetValue(TintLuminosityOpacityProperty); + set => SetValue(TintLuminosityOpacityProperty, value); + } + + public override IBrush ToImmutable() + { + return new ImmutableExperimentalAcrylicBrush(this); + } } } diff --git a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs index ae202b58ae6..adc9335eabe 100644 --- a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs @@ -2,14 +2,14 @@ { public interface IExperimentalAcrylicBrush : IBrush { - AcrylicBackgroundSource BackgroundSource { get; set; } + AcrylicBackgroundSource BackgroundSource { get; } - Color TintColor { get; set; } + Color TintColor { get; } - double TintOpacity { get; set; } + double TintOpacity { get; } - double TintLuminosityOpacity { get; set; } + double TintLuminosityOpacity { get; } - Color FallbackColor { get; set; } + Color FallbackColor { get; } } } diff --git a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs new file mode 100644 index 00000000000..ad91b5fa42e --- /dev/null +++ b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs @@ -0,0 +1,73 @@ +using System; + +namespace Avalonia.Media +{ + public readonly struct ImmutableExperimentalAcrylicBrush : IExperimentalAcrylicBrush, IEquatable + { + public ImmutableExperimentalAcrylicBrush(IExperimentalAcrylicBrush brush) + { + BackgroundSource = brush.BackgroundSource; + TintColor = brush.TintColor; + TintOpacity = brush.TintOpacity; + TintLuminosityOpacity = brush.TintLuminosityOpacity; + FallbackColor = brush.FallbackColor; + Opacity = brush.Opacity; + } + + public AcrylicBackgroundSource BackgroundSource { get; } + + public Color TintColor { get; } + + public double TintOpacity { get; } + + public double TintLuminosityOpacity { get; } + + public Color FallbackColor { get; } + + public double Opacity { get; } + + public bool Equals(ImmutableExperimentalAcrylicBrush other) + { + // ReSharper disable once CompareOfFloatsByEqualityOperator + return + TintColor == other.TintColor && + Opacity == other.Opacity && + TintOpacity == other.TintOpacity && + BackgroundSource == other.BackgroundSource && + TintLuminosityOpacity == other.TintLuminosityOpacity && + FallbackColor == other.FallbackColor; + } + + public override bool Equals(object obj) + { + return obj is ImmutableExperimentalAcrylicBrush other && Equals(other); + } + + public override int GetHashCode() + { + unchecked + { + int hash = 17; + + hash = (hash * 23) + TintColor.GetHashCode(); + hash = (hash * 23) + TintLuminosityOpacity.GetHashCode(); + hash = (hash * 23) + Opacity.GetHashCode(); + hash = (hash * 23) + TintOpacity.GetHashCode(); + hash = (hash * 23) + BackgroundSource.GetHashCode(); + hash = (hash * 23) + FallbackColor.GetHashCode(); + + return hash; + } + } + + public static bool operator ==(ImmutableExperimentalAcrylicBrush left, ImmutableExperimentalAcrylicBrush right) + { + return left.Equals(right); + } + + public static bool operator !=(ImmutableExperimentalAcrylicBrush left, ImmutableExperimentalAcrylicBrush right) + { + return !left.Equals(right); + } + } +} From f329918116cde7c191e22386b0577e95072dd1ff Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 16:14:09 -0300 Subject: [PATCH 052/354] AcrylicPage. --- samples/ControlCatalog/MainView.xaml | 1 + samples/ControlCatalog/MainWindow.xaml | 1 + samples/ControlCatalog/Pages/AcrylicPage.xaml | 64 +++++++++++++++++++ .../ControlCatalog/Pages/AcrylicPage.xaml.cs | 19 ++++++ 4 files changed, 85 insertions(+) create mode 100644 samples/ControlCatalog/Pages/AcrylicPage.xaml create mode 100644 samples/ControlCatalog/Pages/AcrylicPage.xaml.cs diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml index add5dbde84e..30c1586ce34 100644 --- a/samples/ControlCatalog/MainView.xaml +++ b/samples/ControlCatalog/MainView.xaml @@ -14,6 +14,7 @@ + diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml index a0bb9564251..1ff23d1233d 100644 --- a/samples/ControlCatalog/MainWindow.xaml +++ b/samples/ControlCatalog/MainWindow.xaml @@ -7,6 +7,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:vm="clr-namespace:ControlCatalog.ViewModels" xmlns:v="clr-namespace:ControlCatalog.Views" + TransparencyLevelHint="AcrylicBlur" x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}" Background="Transparent"> diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml new file mode 100644 index 00000000000..6864551ef73 --- /dev/null +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml.cs b/samples/ControlCatalog/Pages/AcrylicPage.xaml.cs new file mode 100644 index 00000000000..44e7c4b92be --- /dev/null +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml.cs @@ -0,0 +1,19 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace ControlCatalog.Pages +{ + public class AcrylicPage : UserControl + { + public AcrylicPage() + { + this.InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} From 831164b865d24d16858863cdcec8362814e2e531 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 16:18:52 -0300 Subject: [PATCH 053/354] control catalog solid background. --- samples/ControlCatalog/MainView.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml index 30c1586ce34..923f5ea456f 100644 --- a/samples/ControlCatalog/MainView.xaml +++ b/samples/ControlCatalog/MainView.xaml @@ -61,7 +61,7 @@ - + No Decorations Border Only From f33daa20bf38ab717763bd438ace09888be179c8 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 16:40:58 -0300 Subject: [PATCH 054/354] acrylic painting takes into account alpha channel and opacity. --- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 307f01ad1a2..5003e40fc6e 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -711,16 +711,16 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? acrylicBrush.TintOpacity : 1; - var noiseOpcity = 0.12; + var noiseOpcity = 0.9; var excl = new SKColor(255, 255, 255, (byte)(255 * acrylicBrush.TintLuminosityOpacity)); - var tint = new SKColor(acrylicBrush.TintColor.R, acrylicBrush.TintColor.G, acrylicBrush.TintColor.B, (byte)(255 * tintOpacity)); + var tint = new SKColor(acrylicBrush.TintColor.R, acrylicBrush.TintColor.G, acrylicBrush.TintColor.B, (byte)(255 * (tintOpacity * acrylicBrush.Opacity * acrylicBrush.TintColor.A))); tint = SimpleColorBurn(excl, tint); var tintShader = SKShader.CreateColor(tint); var noiseShader = - SKShader.CreatePerlinNoiseTurbulence(12.876f, 12.876f, 2, 0.76829314f) + SKShader.CreatePerlinNoiseTurbulence(15.876f, 15.876f, 2, 0.76829314f) .WithColorFilter(CreateAlphaColorFilter(noiseOpcity)); var compose = SKShader.CreateCompose(tintShader, noiseShader); From 1021b0cb017d728006b26e43fd50085c2eb3deb8 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 16:52:49 -0300 Subject: [PATCH 055/354] correct opacity calculations. --- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 5003e40fc6e..b43e20e390f 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -711,10 +711,10 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? acrylicBrush.TintOpacity : 1; - var noiseOpcity = 0.9; + var noiseOpcity = 0.09 * brush.Opacity; var excl = new SKColor(255, 255, 255, (byte)(255 * acrylicBrush.TintLuminosityOpacity)); - var tint = new SKColor(acrylicBrush.TintColor.R, acrylicBrush.TintColor.G, acrylicBrush.TintColor.B, (byte)(255 * (tintOpacity * acrylicBrush.Opacity * acrylicBrush.TintColor.A))); + var tint = new SKColor(acrylicBrush.TintColor.R, acrylicBrush.TintColor.G, acrylicBrush.TintColor.B, (byte)(255 * (tintOpacity * acrylicBrush.Opacity * (acrylicBrush.TintColor.A / 255.0)))); tint = SimpleColorBurn(excl, tint); From 96f5ccb7f5b1344492e20ccd5a8e5560ffccf76e Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 18:09:16 -0300 Subject: [PATCH 056/354] implementation of limiting opacity. --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 34 ++- .../Media/ExperimentalAcrylicBrush.cs | 207 +++++++++++++++++- .../Media/IExperimentalAcrylicBrush.cs | 12 +- .../ImmutableExperimentalAcrylicBrush.cs | 17 +- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 6 +- 5 files changed, 259 insertions(+), 17 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index 6864551ef73..ce10956fcaa 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -6,21 +6,21 @@ x:Class="ControlCatalog.Pages.AcrylicPage"> - - + + @@ -30,7 +30,17 @@ + + + + + + @@ -42,7 +52,17 @@ + + + + + + @@ -52,7 +72,7 @@ diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs index 3c093b19192..2250e175b13 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -1,4 +1,6 @@ -namespace Avalonia.Media +using System; + +namespace Avalonia.Media { public class ExperimentalAcrylicBrush : Brush, IExperimentalAcrylicBrush { @@ -10,7 +12,7 @@ static ExperimentalAcrylicBrush() TintOpacityProperty, TintLuminosityOpacityProperty); } - + /// /// Defines the property. /// @@ -53,7 +55,7 @@ public Color FallbackColor set => SetValue(FallbackColorProperty, value); } - public double TintLuminosityOpacity + public double? TintLuminosityOpacity { get => GetValue(TintLuminosityOpacityProperty); set => SetValue(TintLuminosityOpacityProperty, value); @@ -63,5 +65,204 @@ public override IBrush ToImmutable() { return new ImmutableExperimentalAcrylicBrush(this); } + + public struct HsvColor + { + public float Hue { get; set; } + public float Saturation { get; set; } + public float Value { get; set; } + } + + public static Color FromHsv(HsvColor color) + { + var i = (float)Math.Floor(color.Hue * 6f); + var f = color.Hue * 6f - i; + var p = color.Value * (1f - color.Saturation); + var q = color.Value * (1f - f * color.Saturation); + var t = color.Value * (1f - (1f - f) * color.Saturation); + + switch (i % 6) + { + case 0: + return new Color(255, (byte)(255.0 * color.Value), (byte)(255.0 * t), (byte)(255.0 * p)); + case 1: + return new Color(255, (byte)(255.0 * q), (byte)(255.0 * color.Value), (byte)(255.0 * p)); + case 2: + return new Color(255, (byte)(255.0 * p), (byte)(255.0 * color.Value), (byte)(255.0 * t)); + case 3: + return new Color(255, (byte)(255.0 * p), (byte)(255.0 * q), (byte)(255.0 * color.Value)); + case 4: + return new Color(255, (byte)(255.0 * t), (byte)(255.0 * p), (byte)(255.0 * color.Value)); + default: + case 5: + return new Color(255, (byte)(255.0 * color.Value), (byte)(255.0 * p), (byte)(255.0 * q)); + } + } + + public static HsvColor RgbToHsv(Color color) + { + var r = color.R /255.0f; + var g = color.G / 255.0f; + var b = color.B / 255.0f; + var max = Math.Max(r, Math.Max(g, b)); + var min = Math.Min(r, Math.Min(g, b)); + + float h, s, v; + h = s = v = max; + + //v = (0.299f * r + 0.587f * g + 0.114f * b); + + var d = max - min; + s = max == 0 ? 0 : d / max; + + if (max == min) + { + h = 0; // achromatic + } + else + { + if (max == r) + { + h = (g - b) / d + (g < b ? 6 : 0); + } + else if (max == g) + { + h = (b - r) / d + 2; + } + else if (max == b) + { + h = (r - g) / d + 4; + } + + h /= 6; + } + + return new HsvColor { Hue = h, Saturation = s, Value = v }; + } + + public Color GetLuminosityColor () + { + return GetLuminosityColor(TintColor, TintLuminosityOpacity); + } + + Color GetLuminosityColor(Color tintColor, double? luminosityOpacity) + { + var rgbTintColor = tintColor; + + // If luminosity opacity is specified, just use the values as is + if (luminosityOpacity.HasValue) + { + return new Color((byte)(255.0 * Math.Min(1.0, Math.Max(0.0, luminosityOpacity.Value))), tintColor.R, tintColor.G, tintColor.B); + } + else + { + // To create the Luminosity blend input color without luminosity opacity, + // we're taking the TintColor input, converting to HSV, and clamping the V between these values + const double minHsvV = 0.125; + const double maxHsvV = 0.965; + + var hsvTintColor = RgbToHsv(rgbTintColor); + + var clampedHsvV = Math.Max(Math.Min(hsvTintColor.Value, minHsvV), maxHsvV); + var hsvLuminosityColor = hsvTintColor; + hsvLuminosityColor.Value = (float)clampedHsvV; + + var rgbLuminosityColor = FromHsv(hsvLuminosityColor); + + // Now figure out luminosity opacity + // Map original *tint* opacity to this range + const double minLuminosityOpacity = 0.15; + const double maxLuminosityOpacity = 1.03; + + double luminosityOpacityRangeMax = maxLuminosityOpacity - minLuminosityOpacity; + double mappedTintOpacity = ((tintColor.A / 255.0) * luminosityOpacityRangeMax) + minLuminosityOpacity; + + // Finally, combine the luminosity opacity and the HsvV-clamped tint color + return new Color((byte)(255.0 * Math.Min(mappedTintOpacity, 1.0)), rgbLuminosityColor.R, rgbLuminosityColor.G, rgbLuminosityColor.B); + } + + } + + + public Color GetEffectiveTintColor() + { + var tintColor = TintColor; + double tintOpacity = TintOpacity; + + // Update tintColor's alpha with the combined opacity value + // If LuminosityOpacity was specified, we don't intervene into users parameters + if (false)//TintLuminosityOpacity() != nullptr) + { + //tintColor.A = static_cast(round(tintColor.A * tintOpacity)); + } + else + { + double tintOpacityModifier = GetTintOpacityModifier(tintColor); + + tintColor = new Color((byte)(Math.Round(tintColor.A * tintOpacity * tintOpacityModifier)), tintColor.R, tintColor.G, tintColor.B); + } + + return tintColor; + } + + double GetTintOpacityModifier(Color tintColor) + { + // This method supresses the maximum allowable tint opacity depending on the luminosity and saturation of a color by + // compressing the range of allowable values - for example, a user-defined value of 100% will be mapped to 45% for pure + // white (100% luminosity), 85% for pure black (0% luminosity), and 90% for pure gray (50% luminosity). The intensity of + // the effect increases linearly as luminosity deviates from 50%. After this effect is calculated, we cancel it out + // linearly as saturation increases from zero. + + const double midPoint = 0.50; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. + + const double whiteMaxOpacity = 0.45; // 100% luminosity + const double midPointMaxOpacity = 0.90; // 50% luminosity + const double blackMaxOpacity = 0.85; // 0% luminosity + + var hsv = RgbToHsv(tintColor); + + if(tintColor == Colors.Red) + { + + } + + double opacityModifier = midPointMaxOpacity; + + if (hsv.Value != midPoint) + { + // Determine maximum suppression amount + double lowestMaxOpacity = midPointMaxOpacity; + double maxDeviation = midPoint; + + if (hsv.Value > midPoint) + { + lowestMaxOpacity = whiteMaxOpacity; // At white (100% hsvV) + maxDeviation = 1 - maxDeviation; + } + else if (hsv.Value < midPoint) + { + lowestMaxOpacity = blackMaxOpacity; // At black (0% hsvV) + } + + double maxOpacitySuppression = midPointMaxOpacity - lowestMaxOpacity; + + // Determine normalized deviation from the midpoint + double deviation = Math.Abs(hsv.Value - midPoint); + double normalizedDeviation = deviation / maxDeviation; + + // If we have saturation, reduce opacity suppression to allow that color to come through more + if (hsv.Saturation > 0) + { + // Dampen opacity suppression based on how much saturation there is + maxOpacitySuppression *= Math.Max(1 - (hsv.Saturation * 2), 0.0); + } + + double opacitySuppression = maxOpacitySuppression * normalizedDeviation; + + opacityModifier = midPointMaxOpacity - opacitySuppression; + } + + return opacityModifier; + } } } diff --git a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs index adc9335eabe..af7bf02e155 100644 --- a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs @@ -1,15 +1,21 @@ -namespace Avalonia.Media +using System.Drawing; + +namespace Avalonia.Media { public interface IExperimentalAcrylicBrush : IBrush { AcrylicBackgroundSource BackgroundSource { get; } - Color TintColor { get; } + Color TintColor { get; } double TintOpacity { get; } - double TintLuminosityOpacity { get; } + double? TintLuminosityOpacity { get; } Color FallbackColor { get; } + + Color GetEffectiveTintColor(); + + Color GetLuminosityColor(); } } diff --git a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs index ad91b5fa42e..67a94c4fb3e 100644 --- a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs @@ -4,10 +4,13 @@ namespace Avalonia.Media { public readonly struct ImmutableExperimentalAcrylicBrush : IExperimentalAcrylicBrush, IEquatable { + private readonly Color luminosityColor; + public ImmutableExperimentalAcrylicBrush(IExperimentalAcrylicBrush brush) { + luminosityColor = brush.GetLuminosityColor(); BackgroundSource = brush.BackgroundSource; - TintColor = brush.TintColor; + TintColor = brush.GetEffectiveTintColor(); TintOpacity = brush.TintOpacity; TintLuminosityOpacity = brush.TintLuminosityOpacity; FallbackColor = brush.FallbackColor; @@ -20,7 +23,7 @@ public ImmutableExperimentalAcrylicBrush(IExperimentalAcrylicBrush brush) public double TintOpacity { get; } - public double TintLuminosityOpacity { get; } + public double? TintLuminosityOpacity { get; } public Color FallbackColor { get; } @@ -43,6 +46,11 @@ public override bool Equals(object obj) return obj is ImmutableExperimentalAcrylicBrush other && Equals(other); } + public Color GetEffectiveTintColor() + { + return TintColor; + } + public override int GetHashCode() { unchecked @@ -60,6 +68,11 @@ public override int GetHashCode() } } + public Color GetLuminosityColor() + { + return luminosityColor; + } + public static bool operator ==(ImmutableExperimentalAcrylicBrush left, ImmutableExperimentalAcrylicBrush right) { return left.Equals(right); diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index b43e20e390f..ec3c254a4d6 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -713,8 +713,10 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, var noiseOpcity = 0.09 * brush.Opacity; - var excl = new SKColor(255, 255, 255, (byte)(255 * acrylicBrush.TintLuminosityOpacity)); - var tint = new SKColor(acrylicBrush.TintColor.R, acrylicBrush.TintColor.G, acrylicBrush.TintColor.B, (byte)(255 * (tintOpacity * acrylicBrush.Opacity * (acrylicBrush.TintColor.A / 255.0)))); + var tintColor = acrylicBrush.GetEffectiveTintColor(); + var luminosityColor = acrylicBrush.GetLuminosityColor(); + var excl = new SKColor(luminosityColor.R, luminosityColor.G, luminosityColor.B, (byte)(255* (luminosityColor.A /255.0) * 0.1)); + var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, (byte)(255 * ((tintColor.A /255.0) * acrylicBrush.Opacity))); tint = SimpleColorBurn(excl, tint); From 1ec1fafe9119205c4976784360661b4ff5ace844 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 21:56:06 -0300 Subject: [PATCH 057/354] simplyfy acrylic brush based on avalonias capabilities. --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 38 ++++++-- .../Media/ExperimentalAcrylicBrush.cs | 92 ++----------------- .../Media/IExperimentalAcrylicBrush.cs | 4 - .../ImmutableExperimentalAcrylicBrush.cs | 15 +-- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 3 +- 5 files changed, 40 insertions(+), 112 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index ce10956fcaa..6155d6d68dc 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -8,13 +8,11 @@ - @@ -32,7 +30,6 @@ @@ -42,7 +39,6 @@ @@ -54,7 +50,6 @@ @@ -64,7 +59,6 @@ @@ -72,9 +66,37 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs index 2250e175b13..99c680ce8b4 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -73,32 +73,6 @@ public struct HsvColor public float Value { get; set; } } - public static Color FromHsv(HsvColor color) - { - var i = (float)Math.Floor(color.Hue * 6f); - var f = color.Hue * 6f - i; - var p = color.Value * (1f - color.Saturation); - var q = color.Value * (1f - f * color.Saturation); - var t = color.Value * (1f - (1f - f) * color.Saturation); - - switch (i % 6) - { - case 0: - return new Color(255, (byte)(255.0 * color.Value), (byte)(255.0 * t), (byte)(255.0 * p)); - case 1: - return new Color(255, (byte)(255.0 * q), (byte)(255.0 * color.Value), (byte)(255.0 * p)); - case 2: - return new Color(255, (byte)(255.0 * p), (byte)(255.0 * color.Value), (byte)(255.0 * t)); - case 3: - return new Color(255, (byte)(255.0 * p), (byte)(255.0 * q), (byte)(255.0 * color.Value)); - case 4: - return new Color(255, (byte)(255.0 * t), (byte)(255.0 * p), (byte)(255.0 * color.Value)); - default: - case 5: - return new Color(255, (byte)(255.0 * color.Value), (byte)(255.0 * p), (byte)(255.0 * q)); - } - } - public static HsvColor RgbToHsv(Color color) { var r = color.R /255.0f; @@ -140,65 +114,20 @@ public static HsvColor RgbToHsv(Color color) return new HsvColor { Hue = h, Saturation = s, Value = v }; } - public Color GetLuminosityColor () - { - return GetLuminosityColor(TintColor, TintLuminosityOpacity); - } - - Color GetLuminosityColor(Color tintColor, double? luminosityOpacity) - { - var rgbTintColor = tintColor; - - // If luminosity opacity is specified, just use the values as is - if (luminosityOpacity.HasValue) - { - return new Color((byte)(255.0 * Math.Min(1.0, Math.Max(0.0, luminosityOpacity.Value))), tintColor.R, tintColor.G, tintColor.B); - } - else - { - // To create the Luminosity blend input color without luminosity opacity, - // we're taking the TintColor input, converting to HSV, and clamping the V between these values - const double minHsvV = 0.125; - const double maxHsvV = 0.965; - - var hsvTintColor = RgbToHsv(rgbTintColor); - - var clampedHsvV = Math.Max(Math.Min(hsvTintColor.Value, minHsvV), maxHsvV); - var hsvLuminosityColor = hsvTintColor; - hsvLuminosityColor.Value = (float)clampedHsvV; - - var rgbLuminosityColor = FromHsv(hsvLuminosityColor); - - // Now figure out luminosity opacity - // Map original *tint* opacity to this range - const double minLuminosityOpacity = 0.15; - const double maxLuminosityOpacity = 1.03; - - double luminosityOpacityRangeMax = maxLuminosityOpacity - minLuminosityOpacity; - double mappedTintOpacity = ((tintColor.A / 255.0) * luminosityOpacityRangeMax) + minLuminosityOpacity; - - // Finally, combine the luminosity opacity and the HsvV-clamped tint color - return new Color((byte)(255.0 * Math.Min(mappedTintOpacity, 1.0)), rgbLuminosityColor.R, rgbLuminosityColor.G, rgbLuminosityColor.B); - } - - } - - public Color GetEffectiveTintColor() { var tintColor = TintColor; double tintOpacity = TintOpacity; // Update tintColor's alpha with the combined opacity value - // If LuminosityOpacity was specified, we don't intervene into users parameters - if (false)//TintLuminosityOpacity() != nullptr) + double tintOpacityModifier = GetTintOpacityModifier(tintColor); + + if (false) // non-acrylic blue // TODO detect blur level. { - //tintColor.A = static_cast(round(tintColor.A * tintOpacity)); + tintColor = new Color((byte)(Math.Round(tintColor.A * (((tintOpacity * tintOpacityModifier) * 0.25) + 0.75))), tintColor.R, tintColor.G, tintColor.B); } else { - double tintOpacityModifier = GetTintOpacityModifier(tintColor); - tintColor = new Color((byte)(Math.Round(tintColor.A * tintOpacity * tintOpacityModifier)), tintColor.R, tintColor.G, tintColor.B); } @@ -213,19 +142,14 @@ double GetTintOpacityModifier(Color tintColor) // the effect increases linearly as luminosity deviates from 50%. After this effect is calculated, we cancel it out // linearly as saturation increases from zero. - const double midPoint = 0.50; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. + const double midPoint = 0.5; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. - const double whiteMaxOpacity = 0.45; // 100% luminosity - const double midPointMaxOpacity = 0.90; // 50% luminosity - const double blackMaxOpacity = 0.85; // 0% luminosity + const double whiteMaxOpacity = 0.40; // 100% luminosity + const double midPointMaxOpacity = 0.50; // 50% luminosity + const double blackMaxOpacity = 0.84; // 0% luminosity var hsv = RgbToHsv(tintColor); - if(tintColor == Colors.Red) - { - - } - double opacityModifier = midPointMaxOpacity; if (hsv.Value != midPoint) diff --git a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs index af7bf02e155..3e66d5c863f 100644 --- a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs @@ -10,12 +10,8 @@ public interface IExperimentalAcrylicBrush : IBrush double TintOpacity { get; } - double? TintLuminosityOpacity { get; } - Color FallbackColor { get; } Color GetEffectiveTintColor(); - - Color GetLuminosityColor(); } } diff --git a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs index 67a94c4fb3e..6765ecae794 100644 --- a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs @@ -4,15 +4,11 @@ namespace Avalonia.Media { public readonly struct ImmutableExperimentalAcrylicBrush : IExperimentalAcrylicBrush, IEquatable { - private readonly Color luminosityColor; - public ImmutableExperimentalAcrylicBrush(IExperimentalAcrylicBrush brush) - { - luminosityColor = brush.GetLuminosityColor(); + { BackgroundSource = brush.BackgroundSource; TintColor = brush.GetEffectiveTintColor(); TintOpacity = brush.TintOpacity; - TintLuminosityOpacity = brush.TintLuminosityOpacity; FallbackColor = brush.FallbackColor; Opacity = brush.Opacity; } @@ -23,8 +19,6 @@ public ImmutableExperimentalAcrylicBrush(IExperimentalAcrylicBrush brush) public double TintOpacity { get; } - public double? TintLuminosityOpacity { get; } - public Color FallbackColor { get; } public double Opacity { get; } @@ -37,7 +31,6 @@ public bool Equals(ImmutableExperimentalAcrylicBrush other) Opacity == other.Opacity && TintOpacity == other.TintOpacity && BackgroundSource == other.BackgroundSource && - TintLuminosityOpacity == other.TintLuminosityOpacity && FallbackColor == other.FallbackColor; } @@ -58,7 +51,6 @@ public override int GetHashCode() int hash = 17; hash = (hash * 23) + TintColor.GetHashCode(); - hash = (hash * 23) + TintLuminosityOpacity.GetHashCode(); hash = (hash * 23) + Opacity.GetHashCode(); hash = (hash * 23) + TintOpacity.GetHashCode(); hash = (hash * 23) + BackgroundSource.GetHashCode(); @@ -68,11 +60,6 @@ public override int GetHashCode() } } - public Color GetLuminosityColor() - { - return luminosityColor; - } - public static bool operator ==(ImmutableExperimentalAcrylicBrush left, ImmutableExperimentalAcrylicBrush right) { return left.Equals(right); diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index ec3c254a4d6..2272b282739 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -714,8 +714,7 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, var noiseOpcity = 0.09 * brush.Opacity; var tintColor = acrylicBrush.GetEffectiveTintColor(); - var luminosityColor = acrylicBrush.GetLuminosityColor(); - var excl = new SKColor(luminosityColor.R, luminosityColor.G, luminosityColor.B, (byte)(255* (luminosityColor.A /255.0) * 0.1)); + var excl = new SKColor(255, 255, 255, (byte)(255 * 0.1)); var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, (byte)(255 * ((tintColor.A /255.0) * acrylicBrush.Opacity))); tint = SimpleColorBurn(excl, tint); From 25093194491423b3bb90d36f512f78311e98c9c7 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 22:00:06 -0300 Subject: [PATCH 058/354] black background on control catalog --- samples/ControlCatalog/MainView.xaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml index 923f5ea456f..fde81914077 100644 --- a/samples/ControlCatalog/MainView.xaml +++ b/samples/ControlCatalog/MainView.xaml @@ -2,7 +2,7 @@ xmlns:pages="clr-namespace:ControlCatalog.Pages" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ControlCatalog.MainView" - Background="Transparent" + Background="Black" Foreground="{DynamicResource ThemeForegroundBrush}" FontSize="{DynamicResource FontSizeNormal}"> @@ -61,7 +61,7 @@ - + No Decorations Border Only From ff0e25c1d0e276f8cd0ccf78b6718273c3aa2c1a Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 22:35:31 -0300 Subject: [PATCH 059/354] tone noise down. --- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 2272b282739..2c47edbc48d 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -711,7 +711,7 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? acrylicBrush.TintOpacity : 1; - var noiseOpcity = 0.09 * brush.Opacity; + var noiseOpcity = 0.04 * brush.Opacity; var tintColor = acrylicBrush.GetEffectiveTintColor(); var excl = new SKColor(255, 255, 255, (byte)(255 * 0.1)); From d06e85abe3dee50f06b8a682454b08f3499189eb Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 23:32:28 -0300 Subject: [PATCH 060/354] dispose and cache stuff. --- .../Media/ExperimentalAcrylicBrush.cs | 21 ++++++++++--- .../Media/IExperimentalAcrylicBrush.cs | 2 -- .../ImmutableExperimentalAcrylicBrush.cs | 2 +- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 31 ++++++++++--------- 4 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs index 99c680ce8b4..cda4c1c5a2d 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -4,6 +4,8 @@ namespace Avalonia.Media { public class ExperimentalAcrylicBrush : Brush, IExperimentalAcrylicBrush { + private Color _effectiveTintColor; + static ExperimentalAcrylicBrush() { AffectsRender( @@ -11,6 +13,16 @@ static ExperimentalAcrylicBrush() BackgroundSourceProperty, TintOpacityProperty, TintLuminosityOpacityProperty); + + TintColorProperty.Changed.AddClassHandler((b, e) => + { + b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); + }); + + TintOpacityProperty.Changed.AddClassHandler((b, e) => + { + b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); + }); } /// @@ -43,6 +55,8 @@ public Color TintColor set => SetValue(TintColorProperty, value); } + Color IExperimentalAcrylicBrush.TintColor => _effectiveTintColor; + public double TintOpacity { get => GetValue(TintOpacityProperty); @@ -114,11 +128,8 @@ public static HsvColor RgbToHsv(Color color) return new HsvColor { Hue = h, Saturation = s, Value = v }; } - public Color GetEffectiveTintColor() + private static Color GetEffectiveTintColor(Color tintColor, double tintOpacity) { - var tintColor = TintColor; - double tintOpacity = TintOpacity; - // Update tintColor's alpha with the combined opacity value double tintOpacityModifier = GetTintOpacityModifier(tintColor); @@ -134,7 +145,7 @@ public Color GetEffectiveTintColor() return tintColor; } - double GetTintOpacityModifier(Color tintColor) + private static double GetTintOpacityModifier(Color tintColor) { // This method supresses the maximum allowable tint opacity depending on the luminosity and saturation of a color by // compressing the range of allowable values - for example, a user-defined value of 100% will be mapped to 45% for pure diff --git a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs index 3e66d5c863f..fdcf6148fea 100644 --- a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs @@ -11,7 +11,5 @@ public interface IExperimentalAcrylicBrush : IBrush double TintOpacity { get; } Color FallbackColor { get; } - - Color GetEffectiveTintColor(); } } diff --git a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs index 6765ecae794..ed3f5320352 100644 --- a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs @@ -7,7 +7,7 @@ namespace Avalonia.Media public ImmutableExperimentalAcrylicBrush(IExperimentalAcrylicBrush brush) { BackgroundSource = brush.BackgroundSource; - TintColor = brush.GetEffectiveTintColor(); + TintColor = brush.TintColor; TintOpacity = brush.TintOpacity; FallbackColor = brush.FallbackColor; Opacity = brush.Opacity; diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 2c47edbc48d..039213aecc8 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -705,34 +705,35 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, return paintWrapper; } - if(brush is IExperimentalAcrylicBrush acrylicBrush) + if (brush is IExperimentalAcrylicBrush acrylicBrush) { - var tintOpacity = - acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? + var tintOpacity = + acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? acrylicBrush.TintOpacity : 1; var noiseOpcity = 0.04 * brush.Opacity; - var tintColor = acrylicBrush.GetEffectiveTintColor(); + var tintColor = acrylicBrush.TintColor; var excl = new SKColor(255, 255, 255, (byte)(255 * 0.1)); - var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, (byte)(255 * ((tintColor.A /255.0) * acrylicBrush.Opacity))); + var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, (byte)(255 * ((tintColor.A / 255.0) * acrylicBrush.Opacity))); tint = SimpleColorBurn(excl, tint); - var tintShader = SKShader.CreateColor(tint); - var noiseShader = + using (var tintShader = SKShader.CreateColor(tint)) + using (var noiseShader = SKShader.CreatePerlinNoiseTurbulence(15.876f, 15.876f, 2, 0.76829314f) - .WithColorFilter(CreateAlphaColorFilter(noiseOpcity)); + .WithColorFilter(CreateAlphaColorFilter(noiseOpcity))) + using (var compose = SKShader.CreateCompose(tintShader, noiseShader)) + { + paint.Shader = compose; - var compose = SKShader.CreateCompose(tintShader, noiseShader); - paint.Shader = compose; + if (acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger) + { + paint.BlendMode = SKBlendMode.Src; + } - if (acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger) - { - paint.BlendMode = SKBlendMode.Src; + return paintWrapper; } - - return paintWrapper; } paint.Color = new SKColor(255, 255, 255, (byte) (255 * opacity)); From 99c31c506f5507fc290259b47916a63a8ec5ad63 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 30 May 2020 23:44:12 -0300 Subject: [PATCH 061/354] more noise. --- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 039213aecc8..01eddd2aad3 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -711,7 +711,7 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? acrylicBrush.TintOpacity : 1; - var noiseOpcity = 0.04 * brush.Opacity; + var noiseOpcity = 0.06 * brush.Opacity; var tintColor = acrylicBrush.TintColor; var excl = new SKColor(255, 255, 255, (byte)(255 * 0.1)); From 91631271e7568693c9b83ceb47d0fdad83e1a13d Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 31 May 2020 12:09:40 -0300 Subject: [PATCH 062/354] use invisible black for accent gradient on win32 acrylic blur. --- src/Windows/Avalonia.Win32/WindowImpl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 0cf5a73b9f5..62c6fc742b0 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -267,7 +267,7 @@ private WindowTransparencyLevel EnableBlur(WindowTransparencyLevel transparencyL } accent.AccentFlags = 2; - accent.GradientColor = 0x00FFFFFF; + accent.GradientColor = 0x01000000; var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); From d2fa8e490544603581796ccb42f0f5dd830a8135 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 31 May 2020 14:46:13 -0300 Subject: [PATCH 063/354] use embedded noise asset. --- .../Assets/NoiseAsset_256X256_PNG.png | Bin 0 -> 3241 bytes src/Skia/Avalonia.Skia/Avalonia.Skia.csproj | 3 ++ src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 39 +++++++----------- 3 files changed, 18 insertions(+), 24 deletions(-) create mode 100644 src/Skia/Avalonia.Skia/Assets/NoiseAsset_256X256_PNG.png diff --git a/src/Skia/Avalonia.Skia/Assets/NoiseAsset_256X256_PNG.png b/src/Skia/Avalonia.Skia/Assets/NoiseAsset_256X256_PNG.png new file mode 100644 index 0000000000000000000000000000000000000000..41de173d9014b38f8290acf270c490b37fc79a60 GIT binary patch literal 3241 zcmV;a3|8}rP)QN3MgRZ*%*@Q0nVDv0W-~K00002< zk9uhU01PcjL_t(|+U#A4b|N_pEcy8VUmmMU29f{)!qIKbyj=nf-L`d=I=}Qch#V$^Ji@p%8Ow}aVg{OQfFawvx$7QXHNf;JlH z>=OGpehiMY6qvQ>r+31?Qu`coulkvHr8sf?eJ%Pq`{!L3HPrR)ZPuzD>pymc)ERd) zzk>rC1G3S8Q*}_1#B7CMSB{eOXyX??K=#C&ZSfa;COcp~#v&$=7`2lg#z$%Z{KSqq zKgR=5D%9d=VNhEG;T6Bn*jciRjl(~1ghpC5?^iE1h+v&EM5%$(W^~Kq7Js%C)S$8R z&&Vf{$L|gr4t5WQ47&JVk;>Q~QqTw0G|KqPrW>W$rJ#h6`dG*ziIh6YM-(w-d_ahz ziCLs8i6~hT(>ah5w;KCCXvRidq*{|KIJHcYAbB!zNskc|{4NutczYczbgqZ0iFCnW zsml~G<0~cJm8Lcg-XClfsxBV7RD|?NwHq6y+E5ESTM>I)D+Wc$hvpJtO?p~5Qg6~9 zF8L;*25*`-T_?5T2C1B>DSuAuR1~&MUa-f+18ELrq4EvMW)^~QU_#>sU6Lx3Bulc`iuXz5gSp3Y5ql*T!p+08KROn z54-e)hzb7ZOlVZE<|Csr2oqhdDSf2{^pipyR3pxkltWD5Xrhq_c-ch|MO=ug1cWpm zMxhs>VGW|2LkntvY%7y7lu$m>N(aX-J(NM=KYzXps?fCt@nx8THwa5*vx}3~4o$rY z*BxwSC8jhr15tEmW{a>O_$W=9?m*V!GNcejK^+%5b-~I6@?q_4h-amS(hB(R;QgIi z@7)vt#baDZC-o(z7T`pVIV}lw*6WnMs_#O1^^Y)E;=#H#PJDH9cD9E2mG~$N zOJnZDfpysHK41$2Dg5Q&H8Ok@V z_BIh+f=y1!p>PG0gIdFbEOK8D?rLZAEcmOuk3p?&%Q!F5>Z*^s~XRzn`uvpVHt>ZE@mpO;urk=<&lRTw~623`?ognS}u(o9b+f>U8&Q* zHFOIPUL7H^`w+1nC@$BhkhvD1FZq#*&biTE-Dzw~Bf~QmN{fp=)*-%inhk1JtrPqq z2ft2NUhO*alS*|4IZDh2zt8*dHjg7Lh;v25p(#0-{`m$}Q_aLdBgWYQ*((?!iM%(O zP1or$Q1aSNTyS~r;i)TBr#^)PG;Px{svgv6AycK!aD2E3VMS;#=(W)MbhrmeU=a%B zBxkAvXh$I*KkPeI%D~Is%3iiUOSGmV12c4V@Ca_9h!|Q`4+g;!iY;HoHy;~8S zTP&zCebpfC=*h{G7O58rCu7&qj3>;U@S@u_Ii7NznOW0+@>!;X6mcj>D36U%-?uVC+#}<{>nL%O`i}W9)Cw89T@#oNG=G+Jk zV^b@YAIMNeh9rndV+>dDZ*#W%5OgnEO7U|aE-_lFCRdtJy^a@Shyy?fq( z{aWznz$$i>+W#7GPQPE^jk{AenMj2fq~38(QEgh#w&@%UynFh&wJ1D3F#p)p9t-Sy zUFYvh+So}t-^F&0yG!qWGPoj1`QVEwqgee&&EIm@kUJ=@!pg~<->?1xvTc+5 zo^6Iz10A<&2y(3g{B*yNx_kzG=iI04&?am-o&V*u#7?L2Pn(S*bzyN%0~bttxu=i{ z5?Q>nT*OKhVjsy=!A=f@dYP1AmF;hj+ROj>0VTT#EIqgz{6XYBaaiF; znaq2f3oN}K=7uCABu*5kDr4ot6K-)akRlD_ii?7h{ID@t@^g1ll8XRp@~|-04R+n8 z#mI4_+GPPmma|1KPW94PkjTAftZLWTK4kSZVF@HYZj|v>tWgN#@nu6PCbykcZZj6N6P!OHuA zZdsDXdU;>>#TN1LOvMjxroc*W?IZOsu-|>(&xv6oRa)p7ctGa80!{>MGl%D^IZ*)bj$D|0E`ujBi-XnCoQ6P4EZ2k71eLyR@Ce=u=KIg zH!Ni!$DHqS1}swAzLUjISn}BrRw|YM$eJ`#true true + + + diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 01eddd2aad3..63b51dcccbd 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -34,6 +34,7 @@ internal class DrawingContextImpl : IDrawingContextImpl, ISkiaDrawingContextImpl private readonly SKPaint _strokePaint = new SKPaint(); private readonly SKPaint _fillPaint = new SKPaint(); private readonly SKPaint _boxShadowPaint = new SKPaint(); + private static SKShader s_acrylicNoiseShader; /// /// Context create info. @@ -652,21 +653,6 @@ private void ConfigureVisualBrush(ref PaintWrapper paintWrapper, IVisualBrush vi } } - static SKColor SimpleColorBurn(SKColor bg, SKColor fg) - { - using (var bmp = new SKBitmap(1, 1)) - { - bmp.SetPixel(0, 0, bg); - using (var canvas = new SKCanvas(bmp)) - using (var paint = new SKPaint - { - Color = fg - }) - canvas.DrawRect(-1, -1, 3, 3, paint); - return bmp.GetPixel(0, 0); - } - } - static SKColorFilter CreateAlphaColorFilter(double opacity) { if (opacity > 1) @@ -711,19 +697,24 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? acrylicBrush.TintOpacity : 1; - var noiseOpcity = 0.06 * brush.Opacity; + const double noiseOpcity = 0.06; - var tintColor = acrylicBrush.TintColor; - var excl = new SKColor(255, 255, 255, (byte)(255 * 0.1)); - var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, (byte)(255 * ((tintColor.A / 255.0) * acrylicBrush.Opacity))); + var tintColor = acrylicBrush.TintColor; + var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, (byte)(255 * ((tintColor.A / 255.0) * acrylicBrush.Opacity))); + + if(s_acrylicNoiseShader == null) + { + using(var stream = typeof(DrawingContextImpl).Assembly.GetManifestResourceStream("Avalonia.Skia.Assets.NoiseAsset_256X256_PNG.png")) + using (var bitmap = SKBitmap.Decode(stream)) + { + s_acrylicNoiseShader = SKShader.CreateBitmap(bitmap, SKShaderTileMode.Repeat, SKShaderTileMode.Repeat) + .WithColorFilter(CreateAlphaColorFilter(noiseOpcity)); + } - tint = SimpleColorBurn(excl, tint); + } using (var tintShader = SKShader.CreateColor(tint)) - using (var noiseShader = - SKShader.CreatePerlinNoiseTurbulence(15.876f, 15.876f, 2, 0.76829314f) - .WithColorFilter(CreateAlphaColorFilter(noiseOpcity))) - using (var compose = SKShader.CreateCompose(tintShader, noiseShader)) + using (var compose = SKShader.CreateCompose(tintShader, s_acrylicNoiseShader)) { paint.Shader = compose; From 8eb987c99065cf740dc51b6e71cc5eaf9a096648 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 31 May 2020 14:46:29 -0300 Subject: [PATCH 064/354] tweak dark opacity. --- src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs index cda4c1c5a2d..7712b99b270 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -157,7 +157,7 @@ private static double GetTintOpacityModifier(Color tintColor) const double whiteMaxOpacity = 0.40; // 100% luminosity const double midPointMaxOpacity = 0.50; // 50% luminosity - const double blackMaxOpacity = 0.84; // 0% luminosity + const double blackMaxOpacity = 0.60; // 0% luminosity var hsv = RgbToHsv(tintColor); From 175eff6429f4fb51b2b512fd567f43b1a5cb6535 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 9 Jun 2020 17:00:37 -0300 Subject: [PATCH 065/354] Fix acrylic. --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 10 ++-------- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 4 ++-- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index 6155d6d68dc..6dc23c48412 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -3,13 +3,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="ControlCatalog.Pages.AcrylicPage"> - - - + x:Class="ControlCatalog.Pages.AcrylicPage"> @@ -86,7 +80,7 @@ diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 63b51dcccbd..ad2a8965082 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -661,7 +661,7 @@ static SKColorFilter CreateAlphaColorFilter(double opacity) var a = new byte[256]; for (var i = 0; i < 256; i++) { - c[i] = 255; + c[i] = (byte)i; a[i] = (byte)(i * opacity); } @@ -697,7 +697,7 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? acrylicBrush.TintOpacity : 1; - const double noiseOpcity = 0.06; + const double noiseOpcity = 0.02; var tintColor = acrylicBrush.TintColor; var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, (byte)(255 * ((tintColor.A / 255.0) * acrylicBrush.Opacity))); From 4dc8a2a3ee18b92d1551ae1935f30886a9d4b6cf Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 9 Jun 2020 18:28:50 -0300 Subject: [PATCH 066/354] tweaks and fixes to acrylic. --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 6 +++--- src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs | 4 ++-- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index 6dc23c48412..88bbdb0346d 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -71,7 +71,7 @@ @@ -89,8 +89,8 @@ diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs index 7712b99b270..acc660175f2 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -135,7 +135,7 @@ private static Color GetEffectiveTintColor(Color tintColor, double tintOpacity) if (false) // non-acrylic blue // TODO detect blur level. { - tintColor = new Color((byte)(Math.Round(tintColor.A * (((tintOpacity * tintOpacityModifier) * 0.25) + 0.75))), tintColor.R, tintColor.G, tintColor.B); + tintColor = new Color((byte)(Math.Round(tintColor.A * (((tintOpacity * tintOpacityModifier) * 0.15) + 0.85))), tintColor.R, tintColor.G, tintColor.B); } else { @@ -157,7 +157,7 @@ private static double GetTintOpacityModifier(Color tintColor) const double whiteMaxOpacity = 0.40; // 100% luminosity const double midPointMaxOpacity = 0.50; // 50% luminosity - const double blackMaxOpacity = 0.60; // 0% luminosity + const double blackMaxOpacity = 0.80; // 0% luminosity var hsv = RgbToHsv(tintColor); diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index ad2a8965082..d2c7bdaedc7 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -697,10 +697,10 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? acrylicBrush.TintOpacity : 1; - const double noiseOpcity = 0.02; + const double noiseOpcity = 0.0225; var tintColor = acrylicBrush.TintColor; - var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, (byte)(255 * ((tintColor.A / 255.0) * acrylicBrush.Opacity))); + var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, (byte)(255 * ((tintColor.A / 255.0) * acrylicBrush.Opacity * tintOpacity))); if(s_acrylicNoiseShader == null) { From 5ba822f94f95054ebcd655cf0c193151b44480a3 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 9 Jun 2020 20:24:48 -0300 Subject: [PATCH 067/354] adjust opacity for normal blur... --- .../Media/ExperimentalAcrylicBrush.cs | 16 ++++++---- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 30 +++++++++++++++++-- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs index acc660175f2..e52774ea18c 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -139,12 +139,18 @@ private static Color GetEffectiveTintColor(Color tintColor, double tintOpacity) } else { - tintColor = new Color((byte)(Math.Round(tintColor.A * tintOpacity * tintOpacityModifier)), tintColor.R, tintColor.G, tintColor.B); + tintColor = new Color((byte)(255 * ((255.0 / tintColor.A) * tintOpacity) * tintOpacityModifier), tintColor.R, tintColor.G, tintColor.B); } return tintColor; } + private static double AdjustOpacity(double opacity) + { + var result = Math.Max((1.0 - Math.Pow((1.0 - opacity), 3.85)), 0.92); + return result; + } + private static double GetTintOpacityModifier(Color tintColor) { // This method supresses the maximum allowable tint opacity depending on the luminosity and saturation of a color by @@ -155,9 +161,9 @@ private static double GetTintOpacityModifier(Color tintColor) const double midPoint = 0.5; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. - const double whiteMaxOpacity = 0.40; // 100% luminosity - const double midPointMaxOpacity = 0.50; // 50% luminosity - const double blackMaxOpacity = 0.80; // 0% luminosity + double whiteMaxOpacity = AdjustOpacity(0.45); // 100% luminosity + double midPointMaxOpacity = AdjustOpacity(0.40); // 50% luminosity + double blackMaxOpacity = AdjustOpacity(0.60); // 0% luminosity var hsv = RgbToHsv(tintColor); @@ -189,7 +195,7 @@ private static double GetTintOpacityModifier(Color tintColor) if (hsv.Saturation > 0) { // Dampen opacity suppression based on how much saturation there is - maxOpacitySuppression *= Math.Max(1 - (hsv.Saturation * 2), 0.0); + //maxOpacitySuppression *= Math.Max(1 - (hsv.Saturation * 2), 0.0); } double opacitySuppression = maxOpacitySuppression * normalizedDeviation; diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index d2c7bdaedc7..7fcc13ebd38 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -668,6 +668,27 @@ static SKColorFilter CreateAlphaColorFilter(double opacity) return SKColorFilter.CreateTable(a, c, c, c); } + static byte Blend(byte leftColor, byte leftAlpha, byte rightColor, byte rightAlpha) + { + var ca = leftColor / 255d; + var aa = leftAlpha / 255d; + var cb = rightColor / 255d; + var ab = rightAlpha / 255d; + var r = (ca * aa + cb * ab * (1 - aa)) / (aa + ab * (1 - aa)); + return (byte)(r * 255); + } + static SKColor Blend(SKColor left, SKColor right) + { + var aa = left.Alpha / 255d; + var ab = right.Alpha / 255d; + return new SKColor( + Blend(left.Red, left.Alpha, right.Red, right.Alpha), + Blend(left.Green, left.Alpha, right.Green, right.Alpha), + Blend(left.Blue, left.Alpha, right.Blue, right.Alpha), + (byte)((aa + ab * (1 - aa)) * 255) + ); + } + /// /// Creates paint wrapper for given brush. /// @@ -700,9 +721,14 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, const double noiseOpcity = 0.0225; var tintColor = acrylicBrush.TintColor; - var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, (byte)(255 * ((tintColor.A / 255.0) * acrylicBrush.Opacity * tintOpacity))); + var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, tintColor.A); + var tracingPaper = new SKColor(0xaf, 0x7f, 0x7f, 0x7f); + + //tint = Blend(tracingPaper, tint); + - if(s_acrylicNoiseShader == null) + + if (s_acrylicNoiseShader == null) { using(var stream = typeof(DrawingContextImpl).Assembly.GetManifestResourceStream("Avalonia.Skia.Assets.NoiseAsset_256X256_PNG.png")) using (var bitmap = SKBitmap.Decode(stream)) From 98e7b140232f81330405444ace1d018e08f42229 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 10 Jun 2020 16:35:32 -0300 Subject: [PATCH 068/354] use proper corrections. and blend with mid range gray to allow for readability. --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 22 ++- .../Media/ExperimentalAcrylicBrush.cs | 131 +++++++++++++++++- .../Media/IExperimentalAcrylicBrush.cs | 4 +- .../ImmutableExperimentalAcrylicBrush.cs | 3 + src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 10 +- 5 files changed, 157 insertions(+), 13 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index 88bbdb0346d..29f5fb8409a 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -3,10 +3,21 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="ControlCatalog.Pages.AcrylicPage"> + x:Class="ControlCatalog.Pages.AcrylicPage"> + + + + + + + @@ -24,6 +35,7 @@ @@ -33,6 +45,7 @@ @@ -44,6 +57,7 @@ @@ -53,6 +67,7 @@ @@ -62,6 +77,7 @@ @@ -73,6 +89,7 @@ @@ -82,6 +99,7 @@ @@ -90,7 +108,7 @@ diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs index e52774ea18c..49b0e04cf35 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -5,6 +5,7 @@ namespace Avalonia.Media public class ExperimentalAcrylicBrush : Brush, IExperimentalAcrylicBrush { private Color _effectiveTintColor; + private Color _effectiveLuminosityColor; static ExperimentalAcrylicBrush() { @@ -17,11 +18,19 @@ static ExperimentalAcrylicBrush() TintColorProperty.Changed.AddClassHandler((b, e) => { b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); + b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); }); TintOpacityProperty.Changed.AddClassHandler((b, e) => { b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); + b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); + }); + + TintLuminosityOpacityProperty.Changed.AddClassHandler((b, e) => + { + b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); + b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); }); } @@ -37,8 +46,8 @@ static ExperimentalAcrylicBrush() public static readonly StyledProperty TintOpacityProperty = AvaloniaProperty.Register(nameof(TintOpacity)); - public static readonly StyledProperty TintLuminosityOpacityProperty = - AvaloniaProperty.Register(nameof(TintLuminosityOpacity)); + public static readonly StyledProperty TintLuminosityOpacityProperty = + AvaloniaProperty.Register(nameof(TintLuminosityOpacity)); public static readonly StyledProperty FallbackColorProperty = AvaloniaProperty.Register(nameof(FallbackColor)); @@ -57,6 +66,8 @@ public Color TintColor Color IExperimentalAcrylicBrush.TintColor => _effectiveTintColor; + Color IExperimentalAcrylicBrush.LuminosityColor => _effectiveLuminosityColor; + public double TintOpacity { get => GetValue(TintOpacityProperty); @@ -161,9 +172,9 @@ private static double GetTintOpacityModifier(Color tintColor) const double midPoint = 0.5; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. - double whiteMaxOpacity = AdjustOpacity(0.45); // 100% luminosity - double midPointMaxOpacity = AdjustOpacity(0.40); // 50% luminosity - double blackMaxOpacity = AdjustOpacity(0.60); // 0% luminosity + double whiteMaxOpacity = 0.45; // 100% luminosity + double midPointMaxOpacity = 0.90; // 50% luminosity + double blackMaxOpacity = 0.85; // 0% luminosity var hsv = RgbToHsv(tintColor); @@ -205,5 +216,115 @@ private static double GetTintOpacityModifier(Color tintColor) return opacityModifier; } + + Color GetEffectiveLuminosityColor() + { + double tintOpacity = TintOpacity; + + // Purposely leaving out tint opacity modifier here because GetLuminosityColor needs the *original* tint opacity set by the user. + var tintColor = new Color((byte)(Math.Round(TintColor.A * tintOpacity)), TintColor.R, TintColor.G, TintColor.B); + + double? luminosityOpacity = TintLuminosityOpacity; + + return GetLuminosityColor(tintColor, luminosityOpacity); + } + + public static Color FromHsv(HsvColor color) + { + float r = 0; + float g = 0; + float b = 0; + + var i = (float)Math.Floor(color.Hue * 6f); + var f = color.Hue * 6f - i; + var p = color.Value * (1f - color.Saturation); + var q = color.Value * (1f - f * color.Saturation); + var t = color.Value * (1f - (1f - f) * color.Saturation); + + switch (i % 6) + { + case 0: + r = color.Value; + g = t; + b = p; + break; + case 1: + r = q; + g = color.Value; + b = p; + break; + case 2: + r = p; + g = color.Value; + b = t; + break; + case 3: + r = p; + g = q; + b = color.Value; + break; + case 4: + r = t; + g = p; + b = color.Value; + break; + case 5: + r = color.Value; + g = p; + b = q; + break; + } + + return new Color(Trim(r), Trim(g), Trim(b), 255); + } + + private static byte Trim(double value) + { + value = Math.Min(Math.Floor(value * 256), 255); + + if (value < 0) + { + return 0; + } + else if (value > 255) + { + return 255; + } + + return (byte)value; + } + + double Luminosity (Color color) + { + return 0.299 * color.R + 0.587 * color.G + 0.114 * color.B; + } + + // The tintColor passed into this method should be the original, unmodified color created using user values for TintColor + TintOpacity + Color GetLuminosityColor(Color tintColor, double? luminosityOpacity) + { + var luminosityColor = new Color(255, 127, 127, 127); + + var modifier = GetTintOpacityModifier(luminosityColor); + + // If luminosity opacity is specified, just use the values as is + if (luminosityOpacity.HasValue) + { + return new Color((byte)(255 * Math.Max(Math.Min(luminosityOpacity.Value * modifier, 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); + } + else + { + // Now figure out luminosity opacity + // Map original *tint* opacity to this range + const double minLuminosityOpacity = 0.15; + const double maxLuminosityOpacity = 1.03; + + double luminosityOpacityRangeMax = maxLuminosityOpacity - minLuminosityOpacity; + double mappedTintOpacity = ((tintColor.A / 255.0) * luminosityOpacityRangeMax) + minLuminosityOpacity; + + // Finally, combine the luminosity opacity and the HsvV-clamped tint color + return new Color(Trim(Math.Min(mappedTintOpacity * modifier, 1.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); + } + + } } } diff --git a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs index fdcf6148fea..30cbeb331cf 100644 --- a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs @@ -6,7 +6,9 @@ public interface IExperimentalAcrylicBrush : IBrush { AcrylicBackgroundSource BackgroundSource { get; } - Color TintColor { get; } + Color TintColor { get; } + + Color LuminosityColor { get; } double TintOpacity { get; } diff --git a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs index ed3f5320352..e05f851a73f 100644 --- a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs @@ -11,12 +11,15 @@ public ImmutableExperimentalAcrylicBrush(IExperimentalAcrylicBrush brush) TintOpacity = brush.TintOpacity; FallbackColor = brush.FallbackColor; Opacity = brush.Opacity; + LuminosityColor = brush.LuminosityColor; } public AcrylicBackgroundSource BackgroundSource { get; } public Color TintColor { get; } + public Color LuminosityColor { get; } + public double TintOpacity { get; } public Color FallbackColor { get; } diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 7fcc13ebd38..aefbbab7cc9 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -726,8 +726,6 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, //tint = Blend(tracingPaper, tint); - - if (s_acrylicNoiseShader == null) { using(var stream = typeof(DrawingContextImpl).Assembly.GetManifestResourceStream("Avalonia.Skia.Assets.NoiseAsset_256X256_PNG.png")) @@ -736,11 +734,13 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, s_acrylicNoiseShader = SKShader.CreateBitmap(bitmap, SKShaderTileMode.Repeat, SKShaderTileMode.Repeat) .WithColorFilter(CreateAlphaColorFilter(noiseOpcity)); } - } - + + using (var backdrop = SKShader.CreateColor(new SKColor(acrylicBrush.LuminosityColor.R, acrylicBrush.LuminosityColor.G, acrylicBrush.LuminosityColor.B, (byte)Math.Round((acrylicBrush.LuminosityColor.A * 0.75))))) + using (var backdropResult = SKShader.CreateCompose(backdrop, backdrop, SKBlendMode.Luminosity)) using (var tintShader = SKShader.CreateColor(tint)) - using (var compose = SKShader.CreateCompose(tintShader, s_acrylicNoiseShader)) + using (var effectiveTint = SKShader.CreateCompose (backdropResult, tintShader)) + using (var compose = SKShader.CreateCompose(effectiveTint, s_acrylicNoiseShader)) { paint.Shader = compose; From e957f75fdb17d588b0a94fa5fa414275489c4afd Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 10 Jun 2020 18:37:57 -0300 Subject: [PATCH 069/354] remove unused code. --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 27 ++++++------ .../Media/ExperimentalAcrylicBrush.cs | 42 ++++++------------- .../ImmutableExperimentalAcrylicBrush.cs | 4 +- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 29 ++++++------- 4 files changed, 42 insertions(+), 60 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index 29f5fb8409a..c0b3d164bfb 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -7,17 +7,7 @@ - - - - - - - + @@ -107,12 +97,23 @@ + + + + + + diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs index 49b0e04cf35..194c32a0905 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -33,7 +33,7 @@ static ExperimentalAcrylicBrush() b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); }); } - + /// /// Defines the property. /// @@ -46,8 +46,8 @@ static ExperimentalAcrylicBrush() public static readonly StyledProperty TintOpacityProperty = AvaloniaProperty.Register(nameof(TintOpacity)); - public static readonly StyledProperty TintLuminosityOpacityProperty = - AvaloniaProperty.Register(nameof(TintLuminosityOpacity)); + public static readonly StyledProperty TintLuminosityOpacityProperty = + AvaloniaProperty.Register(nameof(TintLuminosityOpacity), 0.9); public static readonly StyledProperty FallbackColorProperty = AvaloniaProperty.Register(nameof(FallbackColor)); @@ -80,7 +80,7 @@ public Color FallbackColor set => SetValue(FallbackColorProperty, value); } - public double? TintLuminosityOpacity + public double TintLuminosityOpacity { get => GetValue(TintLuminosityOpacityProperty); set => SetValue(TintLuminosityOpacityProperty, value); @@ -100,7 +100,7 @@ public struct HsvColor public static HsvColor RgbToHsv(Color color) { - var r = color.R /255.0f; + var r = color.R / 255.0f; var g = color.G / 255.0f; var b = color.B / 255.0f; var max = Math.Max(r, Math.Max(g, b)); @@ -172,10 +172,10 @@ private static double GetTintOpacityModifier(Color tintColor) const double midPoint = 0.5; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. - double whiteMaxOpacity = 0.45; // 100% luminosity + double whiteMaxOpacity = 0.65; // 100% luminosity double midPointMaxOpacity = 0.90; // 50% luminosity double blackMaxOpacity = 0.85; // 0% luminosity - + var hsv = RgbToHsv(tintColor); double opacityModifier = midPointMaxOpacity; @@ -218,7 +218,7 @@ private static double GetTintOpacityModifier(Color tintColor) } Color GetEffectiveLuminosityColor() - { + { double tintOpacity = TintOpacity; // Purposely leaving out tint opacity modifier here because GetLuminosityColor needs the *original* tint opacity set by the user. @@ -226,7 +226,7 @@ Color GetEffectiveLuminosityColor() double? luminosityOpacity = TintLuminosityOpacity; - return GetLuminosityColor(tintColor, luminosityOpacity); + return GetLuminosityColor(luminosityOpacity); } public static Color FromHsv(HsvColor color) @@ -294,37 +294,19 @@ private static byte Trim(double value) return (byte)value; } - double Luminosity (Color color) + double Luminosity(Color color) { return 0.299 * color.R + 0.587 * color.G + 0.114 * color.B; } // The tintColor passed into this method should be the original, unmodified color created using user values for TintColor + TintOpacity - Color GetLuminosityColor(Color tintColor, double? luminosityOpacity) + Color GetLuminosityColor(double? luminosityOpacity) { var luminosityColor = new Color(255, 127, 127, 127); var modifier = GetTintOpacityModifier(luminosityColor); - // If luminosity opacity is specified, just use the values as is - if (luminosityOpacity.HasValue) - { - return new Color((byte)(255 * Math.Max(Math.Min(luminosityOpacity.Value * modifier, 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); - } - else - { - // Now figure out luminosity opacity - // Map original *tint* opacity to this range - const double minLuminosityOpacity = 0.15; - const double maxLuminosityOpacity = 1.03; - - double luminosityOpacityRangeMax = maxLuminosityOpacity - minLuminosityOpacity; - double mappedTintOpacity = ((tintColor.A / 255.0) * luminosityOpacityRangeMax) + minLuminosityOpacity; - - // Finally, combine the luminosity opacity and the HsvV-clamped tint color - return new Color(Trim(Math.Min(mappedTintOpacity * modifier, 1.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); - } - + return new Color((byte)(255 * Math.Max(Math.Min(luminosityOpacity.Value * modifier, 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); } } } diff --git a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs index e05f851a73f..8cb61dbaf4e 100644 --- a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs @@ -34,7 +34,8 @@ public bool Equals(ImmutableExperimentalAcrylicBrush other) Opacity == other.Opacity && TintOpacity == other.TintOpacity && BackgroundSource == other.BackgroundSource && - FallbackColor == other.FallbackColor; + FallbackColor == other.FallbackColor && LuminosityColor == other.LuminosityColor; + } public override bool Equals(object obj) @@ -58,6 +59,7 @@ public override int GetHashCode() hash = (hash * 23) + TintOpacity.GetHashCode(); hash = (hash * 23) + BackgroundSource.GetHashCode(); hash = (hash * 23) + FallbackColor.GetHashCode(); + hash = (hash * 23) + LuminosityColor.GetHashCode(); return hash; } diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index aefbbab7cc9..1ddc0980b5d 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -677,17 +677,18 @@ static byte Blend(byte leftColor, byte leftAlpha, byte rightColor, byte rightAlp var r = (ca * aa + cb * ab * (1 - aa)) / (aa + ab * (1 - aa)); return (byte)(r * 255); } - static SKColor Blend(SKColor left, SKColor right) - { - var aa = left.Alpha / 255d; - var ab = right.Alpha / 255d; - return new SKColor( - Blend(left.Red, left.Alpha, right.Red, right.Alpha), - Blend(left.Green, left.Alpha, right.Green, right.Alpha), - Blend(left.Blue, left.Alpha, right.Blue, right.Alpha), - (byte)((aa + ab * (1 - aa)) * 255) + + static Color Blend(Color left, Color right) + { + var aa = left.A / 255d; + var ab = right.A / 255d; + return new Color( + (byte)((aa + ab * (1 - aa)) * 255), + Blend(left.R, left.A, right.R, right.A), + Blend(left.G, left.A, right.G, right.A), + Blend(left.B, left.A, right.B, right.A) ); - } + } /// /// Creates paint wrapper for given brush. @@ -722,9 +723,6 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, var tintColor = acrylicBrush.TintColor; var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, tintColor.A); - var tracingPaper = new SKColor(0xaf, 0x7f, 0x7f, 0x7f); - - //tint = Blend(tracingPaper, tint); if (s_acrylicNoiseShader == null) { @@ -736,10 +734,9 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, } } - using (var backdrop = SKShader.CreateColor(new SKColor(acrylicBrush.LuminosityColor.R, acrylicBrush.LuminosityColor.G, acrylicBrush.LuminosityColor.B, (byte)Math.Round((acrylicBrush.LuminosityColor.A * 0.75))))) - using (var backdropResult = SKShader.CreateCompose(backdrop, backdrop, SKBlendMode.Luminosity)) + using (var backdrop = SKShader.CreateColor(new SKColor(acrylicBrush.LuminosityColor.R, acrylicBrush.LuminosityColor.G, acrylicBrush.LuminosityColor.B, acrylicBrush.LuminosityColor.A))) using (var tintShader = SKShader.CreateColor(tint)) - using (var effectiveTint = SKShader.CreateCompose (backdropResult, tintShader)) + using (var effectiveTint = SKShader.CreateCompose (backdrop, tintShader)) using (var compose = SKShader.CreateCompose(effectiveTint, s_acrylicNoiseShader)) { paint.Shader = compose; From ecdd8b9c7bd02c683af82384a146db481ba052d7 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 10 Jun 2020 18:50:56 -0300 Subject: [PATCH 070/354] sensible defaults. tidy acrylic demo. --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 20 ++++++++++++++++--- .../Media/ExperimentalAcrylicBrush.cs | 4 ++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index c0b3d164bfb..f2785dfcfda 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -6,8 +6,22 @@ x:Class="ControlCatalog.Pages.AcrylicPage"> - - + + + + + + + + + + + + + + @@ -112,7 +126,7 @@ TintOpacity="{Binding #TintOpacitySlider.Value}" TintLuminosityOpacity="{Binding #TintLuminositySlider.Value}" BackgroundSource="Digger" /> - + diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs index 194c32a0905..475afb85673 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs @@ -44,10 +44,10 @@ static ExperimentalAcrylicBrush() AvaloniaProperty.Register(nameof(BackgroundSource)); public static readonly StyledProperty TintOpacityProperty = - AvaloniaProperty.Register(nameof(TintOpacity)); + AvaloniaProperty.Register(nameof(TintOpacity), 0.9); public static readonly StyledProperty TintLuminosityOpacityProperty = - AvaloniaProperty.Register(nameof(TintLuminosityOpacity), 0.9); + AvaloniaProperty.Register(nameof(TintLuminosityOpacity), 0.8); public static readonly StyledProperty FallbackColorProperty = AvaloniaProperty.Register(nameof(FallbackColor)); From 9eaaceff60495c3ccf8f844b28490e3b301b448c Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 12 Jun 2020 16:11:42 -0300 Subject: [PATCH 071/354] Implement Acrylic as a "Material" and a special Decorator to display Acrylic. --- .../ExperimentalAcrylicBorder.cs | 81 ++++++++ ...rush.cs => ExperimentalAcrylicMaterial.cs} | 183 ++++++++++++++++-- .../Media/IExperimentalAcrylicBrush.cs | 17 -- .../ImmutableExperimentalAcrylicBrush.cs | 78 -------- .../IDrawingContextWithAcrylicLikeSupport.cs | 9 + .../SceneGraph/DeferredDrawingContextImpl.cs | 19 +- .../SceneGraph/ExperimentalAcrylicNode.cs | 93 +++++++++ .../Rendering/SceneGraph/RectangleNode.cs | 2 +- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 120 ++++++++---- 9 files changed, 445 insertions(+), 157 deletions(-) create mode 100644 src/Avalonia.Controls/ExperimentalAcrylicBorder.cs rename src/Avalonia.Visuals/Media/{ExperimentalAcrylicBrush.cs => ExperimentalAcrylicMaterial.cs} (62%) delete mode 100644 src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs delete mode 100644 src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs create mode 100644 src/Avalonia.Visuals/Platform/IDrawingContextWithAcrylicLikeSupport.cs create mode 100644 src/Avalonia.Visuals/Rendering/SceneGraph/ExperimentalAcrylicNode.cs diff --git a/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs b/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs new file mode 100644 index 00000000000..4a855b9838f --- /dev/null +++ b/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs @@ -0,0 +1,81 @@ +using Avalonia.Controls.Utils; +using Avalonia.Layout; +using Avalonia.Media; +using Avalonia.Platform; + +namespace Avalonia.Controls +{ + public class ExperimentalAcrylicBorder : Decorator + { + public static readonly StyledProperty CornerRadiusProperty = + Border.CornerRadiusProperty.AddOwner(); + + public static readonly StyledProperty MaterialProperty = + AvaloniaProperty.Register(nameof(Material)); + + private readonly BorderRenderHelper _borderRenderHelper = new BorderRenderHelper(); + + static ExperimentalAcrylicBorder() + { + AffectsRender( + MaterialProperty, + CornerRadiusProperty); + } + + + /// + /// Gets or sets the radius of the border rounded corners. + /// + public CornerRadius CornerRadius + { + get { return GetValue(CornerRadiusProperty); } + set { SetValue(CornerRadiusProperty, value); } + } + + public ExperimentalAcrylicMaterial Material + { + get => GetValue(MaterialProperty); + set => SetValue(MaterialProperty, value); + } + + + public override void Render(DrawingContext context) + { + if(context.PlatformImpl is IDrawingContextWithAcrylicLikeSupport idc) + { + var cornerRadius = CornerRadius; + + idc.DrawRectangle( + Material, + new RoundedRect( + new Rect(Bounds.Size), + cornerRadius.TopLeft, cornerRadius.TopRight, + cornerRadius.BottomRight, cornerRadius.BottomLeft)); + } + else + { + _borderRenderHelper.Render(context, Bounds.Size, new Thickness(), CornerRadius, new SolidColorBrush(Material.FallbackColor), null, default); + } + } + + /// + /// Measures the control. + /// + /// The available size. + /// The desired size of the control. + protected override Size MeasureOverride(Size availableSize) + { + return LayoutHelper.MeasureChild(Child, availableSize, Padding); + } + + /// + /// Arranges the control's child. + /// + /// The size allocated to the control. + /// The space taken. + protected override Size ArrangeOverride(Size finalSize) + { + return LayoutHelper.ArrangeChild(Child, finalSize, Padding); + } + } +} diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs similarity index 62% rename from src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs rename to src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index 475afb85673..507931da5a1 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicBrush.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -2,32 +2,144 @@ namespace Avalonia.Media { - public class ExperimentalAcrylicBrush : Brush, IExperimentalAcrylicBrush + /// + /// Represents a mutable brush which can return an immutable clone of itself. + /// + public interface IMutableExperimentalAcrylicMaterial : IExperimentalAcrylicMaterial, IAffectsRender + { + /// + /// Creates an immutable clone of the brush. + /// + /// The immutable clone. + IExperimentalAcrylicMaterial ToImmutable(); + } + + public interface IExperimentalAcrylicMaterial + { + AcrylicBackgroundSource BackgroundSource { get; } + + Color TintColor { get; } + + Color LuminosityColor { get; } + + double TintOpacity { get; } + + Color FallbackColor { get; } + } + + public static class MaterialExtensions + { + /// + /// Converts a brush to an immutable brush. + /// + /// The brush. + /// + /// The result of calling if the brush is mutable, + /// otherwise . + /// + public static IExperimentalAcrylicMaterial ToImmutable(this IExperimentalAcrylicMaterial material) + { + Contract.Requires(material != null); + + return (material as IMutableExperimentalAcrylicMaterial)?.ToImmutable() ?? material; + } + } + + public readonly struct ImmutableExperimentalAcrylicMaterial : IExperimentalAcrylicMaterial, IEquatable + { + public ImmutableExperimentalAcrylicMaterial(IExperimentalAcrylicMaterial brush) + { + BackgroundSource = brush.BackgroundSource; + TintColor = brush.TintColor; + TintOpacity = brush.TintOpacity; + FallbackColor = brush.FallbackColor; + LuminosityColor = brush.LuminosityColor; + } + + public AcrylicBackgroundSource BackgroundSource { get; } + + public Color TintColor { get; } + + public Color LuminosityColor { get; } + + public double TintOpacity { get; } + + public Color FallbackColor { get; } + + public bool Equals(ImmutableExperimentalAcrylicMaterial other) + { + // ReSharper disable once CompareOfFloatsByEqualityOperator + return + TintColor == other.TintColor && + TintOpacity == other.TintOpacity && + BackgroundSource == other.BackgroundSource && + FallbackColor == other.FallbackColor && LuminosityColor == other.LuminosityColor; + + } + + public override bool Equals(object obj) + { + return obj is ImmutableExperimentalAcrylicMaterial other && Equals(other); + } + + public Color GetEffectiveTintColor() + { + return TintColor; + } + + public override int GetHashCode() + { + unchecked + { + int hash = 17; + + hash = (hash * 23) + TintColor.GetHashCode(); + hash = (hash * 23) + TintOpacity.GetHashCode(); + hash = (hash * 23) + BackgroundSource.GetHashCode(); + hash = (hash * 23) + FallbackColor.GetHashCode(); + hash = (hash * 23) + LuminosityColor.GetHashCode(); + + return hash; + } + } + + public static bool operator ==(ImmutableExperimentalAcrylicMaterial left, ImmutableExperimentalAcrylicMaterial right) + { + return left.Equals(right); + } + + public static bool operator !=(ImmutableExperimentalAcrylicMaterial left, ImmutableExperimentalAcrylicMaterial right) + { + return !left.Equals(right); + } + } + + public class ExperimentalAcrylicMaterial : AvaloniaObject, IMutableExperimentalAcrylicMaterial { private Color _effectiveTintColor; private Color _effectiveLuminosityColor; - static ExperimentalAcrylicBrush() + static ExperimentalAcrylicMaterial() { - AffectsRender( + AffectsRender( TintColorProperty, BackgroundSourceProperty, TintOpacityProperty, TintLuminosityOpacityProperty); - TintColorProperty.Changed.AddClassHandler((b, e) => + TintColorProperty.Changed.AddClassHandler((b, e) => { b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); }); - TintOpacityProperty.Changed.AddClassHandler((b, e) => + TintOpacityProperty.Changed.AddClassHandler((b, e) => { b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); }); - TintLuminosityOpacityProperty.Changed.AddClassHandler((b, e) => + TintLuminosityOpacityProperty.Changed.AddClassHandler((b, e) => { b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); @@ -38,19 +150,22 @@ static ExperimentalAcrylicBrush() /// Defines the property. /// public static readonly StyledProperty TintColorProperty = - AvaloniaProperty.Register(nameof(TintColor)); + AvaloniaProperty.Register(nameof(TintColor)); public static readonly StyledProperty BackgroundSourceProperty = - AvaloniaProperty.Register(nameof(BackgroundSource)); + AvaloniaProperty.Register(nameof(BackgroundSource)); public static readonly StyledProperty TintOpacityProperty = - AvaloniaProperty.Register(nameof(TintOpacity), 0.9); + AvaloniaProperty.Register(nameof(TintOpacity), 0.8); public static readonly StyledProperty TintLuminosityOpacityProperty = - AvaloniaProperty.Register(nameof(TintLuminosityOpacity), 0.8); + AvaloniaProperty.Register(nameof(TintLuminosityOpacity), 0.5); public static readonly StyledProperty FallbackColorProperty = - AvaloniaProperty.Register(nameof(FallbackColor)); + AvaloniaProperty.Register(nameof(FallbackColor)); + + /// + public event EventHandler Invalidated; public AcrylicBackgroundSource BackgroundSource { @@ -64,10 +179,6 @@ public Color TintColor set => SetValue(TintColorProperty, value); } - Color IExperimentalAcrylicBrush.TintColor => _effectiveTintColor; - - Color IExperimentalAcrylicBrush.LuminosityColor => _effectiveLuminosityColor; - public double TintOpacity { get => GetValue(TintOpacityProperty); @@ -86,10 +197,9 @@ public double TintLuminosityOpacity set => SetValue(TintLuminosityOpacityProperty, value); } - public override IBrush ToImmutable() - { - return new ImmutableExperimentalAcrylicBrush(this); - } + Color IExperimentalAcrylicMaterial.LuminosityColor => _effectiveLuminosityColor; + + Color IExperimentalAcrylicMaterial.TintColor => _effectiveTintColor; public struct HsvColor { @@ -172,7 +282,7 @@ private static double GetTintOpacityModifier(Color tintColor) const double midPoint = 0.5; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. - double whiteMaxOpacity = 0.65; // 100% luminosity + double whiteMaxOpacity = 0.45; // 100% luminosity double midPointMaxOpacity = 0.90; // 50% luminosity double blackMaxOpacity = 0.85; // 0% luminosity @@ -308,5 +418,38 @@ Color GetLuminosityColor(double? luminosityOpacity) return new Color((byte)(255 * Math.Max(Math.Min(luminosityOpacity.Value * modifier, 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); } + + /// + /// Marks a property as affecting the brush's visual representation. + /// + /// The properties. + /// + /// After a call to this method in a brush's static constructor, any change to the + /// property will cause the event to be raised on the brush. + /// + protected static void AffectsRender(params AvaloniaProperty[] properties) + where T : ExperimentalAcrylicMaterial + { + static void Invalidate(AvaloniaPropertyChangedEventArgs e) + { + (e.Sender as T)?.RaiseInvalidated(EventArgs.Empty); + } + + foreach (var property in properties) + { + property.Changed.Subscribe(e => Invalidate(e)); + } + } + + /// + /// Raises the event. + /// + /// The event args. + protected void RaiseInvalidated(EventArgs e) => Invalidated?.Invoke(this, e); + + public IExperimentalAcrylicMaterial ToImmutable() + { + return new ImmutableExperimentalAcrylicMaterial(this); + } } } diff --git a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs deleted file mode 100644 index 30cbeb331cf..00000000000 --- a/src/Avalonia.Visuals/Media/IExperimentalAcrylicBrush.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Drawing; - -namespace Avalonia.Media -{ - public interface IExperimentalAcrylicBrush : IBrush - { - AcrylicBackgroundSource BackgroundSource { get; } - - Color TintColor { get; } - - Color LuminosityColor { get; } - - double TintOpacity { get; } - - Color FallbackColor { get; } - } -} diff --git a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs deleted file mode 100644 index 8cb61dbaf4e..00000000000 --- a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicBrush.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; - -namespace Avalonia.Media -{ - public readonly struct ImmutableExperimentalAcrylicBrush : IExperimentalAcrylicBrush, IEquatable - { - public ImmutableExperimentalAcrylicBrush(IExperimentalAcrylicBrush brush) - { - BackgroundSource = brush.BackgroundSource; - TintColor = brush.TintColor; - TintOpacity = brush.TintOpacity; - FallbackColor = brush.FallbackColor; - Opacity = brush.Opacity; - LuminosityColor = brush.LuminosityColor; - } - - public AcrylicBackgroundSource BackgroundSource { get; } - - public Color TintColor { get; } - - public Color LuminosityColor { get; } - - public double TintOpacity { get; } - - public Color FallbackColor { get; } - - public double Opacity { get; } - - public bool Equals(ImmutableExperimentalAcrylicBrush other) - { - // ReSharper disable once CompareOfFloatsByEqualityOperator - return - TintColor == other.TintColor && - Opacity == other.Opacity && - TintOpacity == other.TintOpacity && - BackgroundSource == other.BackgroundSource && - FallbackColor == other.FallbackColor && LuminosityColor == other.LuminosityColor; - - } - - public override bool Equals(object obj) - { - return obj is ImmutableExperimentalAcrylicBrush other && Equals(other); - } - - public Color GetEffectiveTintColor() - { - return TintColor; - } - - public override int GetHashCode() - { - unchecked - { - int hash = 17; - - hash = (hash * 23) + TintColor.GetHashCode(); - hash = (hash * 23) + Opacity.GetHashCode(); - hash = (hash * 23) + TintOpacity.GetHashCode(); - hash = (hash * 23) + BackgroundSource.GetHashCode(); - hash = (hash * 23) + FallbackColor.GetHashCode(); - hash = (hash * 23) + LuminosityColor.GetHashCode(); - - return hash; - } - } - - public static bool operator ==(ImmutableExperimentalAcrylicBrush left, ImmutableExperimentalAcrylicBrush right) - { - return left.Equals(right); - } - - public static bool operator !=(ImmutableExperimentalAcrylicBrush left, ImmutableExperimentalAcrylicBrush right) - { - return !left.Equals(right); - } - } -} diff --git a/src/Avalonia.Visuals/Platform/IDrawingContextWithAcrylicLikeSupport.cs b/src/Avalonia.Visuals/Platform/IDrawingContextWithAcrylicLikeSupport.cs new file mode 100644 index 00000000000..a3cf0298dd4 --- /dev/null +++ b/src/Avalonia.Visuals/Platform/IDrawingContextWithAcrylicLikeSupport.cs @@ -0,0 +1,9 @@ +using Avalonia.Media; + +namespace Avalonia.Platform +{ + public interface IDrawingContextWithAcrylicLikeSupport + { + void DrawRectangle(IExperimentalAcrylicMaterial material, RoundedRect rect); + } +} diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/DeferredDrawingContextImpl.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/DeferredDrawingContextImpl.cs index 6ad71ac1119..0ca7e876cbc 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/DeferredDrawingContextImpl.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/DeferredDrawingContextImpl.cs @@ -11,7 +11,7 @@ namespace Avalonia.Rendering.SceneGraph /// /// A drawing context which builds a scene graph. /// - internal class DeferredDrawingContextImpl : IDrawingContextImpl + internal class DeferredDrawingContextImpl : IDrawingContextImpl, IDrawingContextWithAcrylicLikeSupport { private readonly ISceneBuilder _sceneBuilder; private VisualNode _node; @@ -163,7 +163,22 @@ public void DrawRectangle(IBrush brush, IPen pen, RoundedRect rect, ++_drawOperationindex; } } - + + /// + public void DrawRectangle(IExperimentalAcrylicMaterial material, RoundedRect rect) + { + var next = NextDrawAs(); + + if (next == null || !next.Item.Equals(Transform, material, rect)) + { + Add(new ExperimentalAcrylicNode(Transform, material, rect)); + } + else + { + ++_drawOperationindex; + } + } + public void Custom(ICustomDrawOperation custom) { var next = NextDrawAs(); diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/ExperimentalAcrylicNode.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/ExperimentalAcrylicNode.cs new file mode 100644 index 00000000000..9969652a8b1 --- /dev/null +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/ExperimentalAcrylicNode.cs @@ -0,0 +1,93 @@ +using System; +using Avalonia.Media; +using Avalonia.Platform; + +namespace Avalonia.Rendering.SceneGraph +{ + /// + /// A node in the scene graph which represents a rectangle draw. + /// + internal class ExperimentalAcrylicNode : DrawOperation + { + /// + /// Initializes a new instance of the class. + /// + /// The transform. + /// The rectangle to draw. + /// The box shadow parameters + /// Child scenes for drawing visual brushes. + public ExperimentalAcrylicNode( + Matrix transform, + IExperimentalAcrylicMaterial material, + RoundedRect rect) + : base(rect.Rect, transform) + { + Transform = transform; + Material = material?.ToImmutable(); + Rect = rect; + } + + /// + /// Gets the transform with which the node will be drawn. + /// + public Matrix Transform { get; } + + public IExperimentalAcrylicMaterial Material { get; } + + /// + /// Gets the rectangle to draw. + /// + public RoundedRect Rect { get; } + + /// + /// Determines if this draw operation equals another. + /// + /// The transform of the other draw operation. + /// The fill of the other draw operation. + /// The rectangle of the other draw operation. + /// True if the draw operations are the same, otherwise false. + /// + /// The properties of the other draw operation are passed in as arguments to prevent + /// allocation of a not-yet-constructed draw operation object. + /// + public bool Equals(Matrix transform, IExperimentalAcrylicMaterial material, RoundedRect rect) + { + return transform == Transform && + Equals(material, Material) && + rect.Equals(Rect); + } + + /// + public override void Render(IDrawingContextImpl context) + { + context.Transform = Transform; + + if(context is IDrawingContextWithAcrylicLikeSupport idc) + { + idc.DrawRectangle(Material, Rect); + } + else + { + context.DrawRectangle(new SolidColorBrush(Material.FallbackColor), null, Rect); + } + } + + /// + public override bool HitTest(Point p) + { + // TODO: This doesn't respect CornerRadius yet. + if (Transform.HasInverse) + { + p *= Transform.Invert(); + + if (Material != null) + { + var rect = Rect.Rect; + return rect.Contains(p); + } + } + + return false; + } + } +} diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/RectangleNode.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/RectangleNode.cs index 5059a6d0428..ec1a7753b1d 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/RectangleNode.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/RectangleNode.cs @@ -19,7 +19,7 @@ internal class RectangleNode : BrushDrawOperation /// The fill brush. /// The stroke pen. /// The rectangle to draw. - /// The box shadow parameters + /// The box shadow parameters /// Child scenes for drawing visual brushes. public RectangleNode( Matrix transform, diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 1ddc0980b5d..47139b19d9f 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -17,7 +17,7 @@ namespace Avalonia.Skia /// /// Skia based drawing context. /// - internal class DrawingContextImpl : IDrawingContextImpl, ISkiaDrawingContextImpl + internal class DrawingContextImpl : IDrawingContextImpl, ISkiaDrawingContextImpl, IDrawingContextWithAcrylicLikeSupport { private IDisposable[] _disposables; private readonly Vector _dpi; @@ -228,6 +228,42 @@ SKRect AreaCastingShadowInHole( return bounds; } + /// + public void DrawRectangle(IExperimentalAcrylicMaterial material, RoundedRect rect) + { + if (rect.Rect.Height <= 0 || rect.Rect.Width <= 0) + return; + + var rc = rect.Rect.ToSKRect(); + var isRounded = rect.IsRounded; + var needRoundRect = rect.IsRounded; + using var skRoundRect = needRoundRect ? new SKRoundRect() : null; + + if (needRoundRect) + skRoundRect.SetRectRadii(rc, + new[] + { + rect.RadiiTopLeft.ToSKPoint(), rect.RadiiTopRight.ToSKPoint(), + rect.RadiiBottomRight.ToSKPoint(), rect.RadiiBottomLeft.ToSKPoint(), + }); + + if (material != null) + { + using (var paint = CreateAcrylicPaint(_fillPaint, material, rect.Rect.Size)) + { + if (isRounded) + { + Canvas.DrawRoundRect(skRoundRect, paint.Paint); + } + else + { + Canvas.DrawRect(rc, paint.Paint); + } + + } + } + } + /// public void DrawRectangle(IBrush brush, IPen pen, RoundedRect rect, BoxShadows boxShadows = default) { @@ -690,6 +726,49 @@ static Color Blend(Color left, Color right) ); } + internal PaintWrapper CreateAcrylicPaint (SKPaint paint, IExperimentalAcrylicMaterial material, Size targetSize, bool disposePaint = false) + { + var paintWrapper = new PaintWrapper(paint, disposePaint); + + paint.IsAntialias = true; + + double opacity = _currentOpacity; + + var tintOpacity = + material.BackgroundSource == AcrylicBackgroundSource.Digger ? + material.TintOpacity : 1; + + const double noiseOpcity = 0.0225; + + var tintColor = material.TintColor; + var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, tintColor.A); + + if (s_acrylicNoiseShader == null) + { + using (var stream = typeof(DrawingContextImpl).Assembly.GetManifestResourceStream("Avalonia.Skia.Assets.NoiseAsset_256X256_PNG.png")) + using (var bitmap = SKBitmap.Decode(stream)) + { + s_acrylicNoiseShader = SKShader.CreateBitmap(bitmap, SKShaderTileMode.Repeat, SKShaderTileMode.Repeat) + .WithColorFilter(CreateAlphaColorFilter(noiseOpcity)); + } + } + + using (var backdrop = SKShader.CreateColor(new SKColor(material.LuminosityColor.R, material.LuminosityColor.G, material.LuminosityColor.B, material.LuminosityColor.A))) + using (var tintShader = SKShader.CreateColor(tint)) + using (var effectiveTint = SKShader.CreateCompose(backdrop, tintShader)) + using (var compose = SKShader.CreateCompose(effectiveTint, s_acrylicNoiseShader)) + { + paint.Shader = compose; + + if (material.BackgroundSource == AcrylicBackgroundSource.Digger) + { + paint.BlendMode = SKBlendMode.Src; + } + + return paintWrapper; + } + } + /// /// Creates paint wrapper for given brush. /// @@ -713,43 +792,6 @@ internal PaintWrapper CreatePaint(SKPaint paint, IBrush brush, Size targetSize, return paintWrapper; } - if (brush is IExperimentalAcrylicBrush acrylicBrush) - { - var tintOpacity = - acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger ? - acrylicBrush.TintOpacity : 1; - - const double noiseOpcity = 0.0225; - - var tintColor = acrylicBrush.TintColor; - var tint = new SKColor(tintColor.R, tintColor.G, tintColor.B, tintColor.A); - - if (s_acrylicNoiseShader == null) - { - using(var stream = typeof(DrawingContextImpl).Assembly.GetManifestResourceStream("Avalonia.Skia.Assets.NoiseAsset_256X256_PNG.png")) - using (var bitmap = SKBitmap.Decode(stream)) - { - s_acrylicNoiseShader = SKShader.CreateBitmap(bitmap, SKShaderTileMode.Repeat, SKShaderTileMode.Repeat) - .WithColorFilter(CreateAlphaColorFilter(noiseOpcity)); - } - } - - using (var backdrop = SKShader.CreateColor(new SKColor(acrylicBrush.LuminosityColor.R, acrylicBrush.LuminosityColor.G, acrylicBrush.LuminosityColor.B, acrylicBrush.LuminosityColor.A))) - using (var tintShader = SKShader.CreateColor(tint)) - using (var effectiveTint = SKShader.CreateCompose (backdrop, tintShader)) - using (var compose = SKShader.CreateCompose(effectiveTint, s_acrylicNoiseShader)) - { - paint.Shader = compose; - - if (acrylicBrush.BackgroundSource == AcrylicBackgroundSource.Digger) - { - paint.BlendMode = SKBlendMode.Src; - } - - return paintWrapper; - } - } - paint.Color = new SKColor(255, 255, 255, (byte) (255 * opacity)); if (brush is IGradientBrush gradient) @@ -879,7 +921,7 @@ private SurfaceRenderTarget CreateRenderTarget(Size size, PixelFormat? format = }; return new SurfaceRenderTarget(createInfo); - } + } /// /// Skia cached paint state. From f96ad2f7f6697c478420c0418e3e5c36d20fcd8a Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 12 Jun 2020 16:15:00 -0300 Subject: [PATCH 072/354] update acrylic page. --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 112 +++++++++--------- 1 file changed, 57 insertions(+), 55 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index f2785dfcfda..214d012affa 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -7,12 +7,12 @@ - - - + + - + @@ -21,113 +21,115 @@ - + + - - - + + - - + + - - - + + - - + + - - - + + - - + + + - - - + + - - + + - - - + + - - + + - - - + + - - + + - - - + + - - + + - - - + + - - + + - - - + + - - + + - - - + + - - + + From 65df446f2ab604a4971ae497bad82fb1aaa873ac Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 12 Jun 2020 16:22:45 -0300 Subject: [PATCH 073/354] use immutable solidcolor brush for fallback in drawing node. --- .../Rendering/SceneGraph/ExperimentalAcrylicNode.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/ExperimentalAcrylicNode.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/ExperimentalAcrylicNode.cs index 9969652a8b1..336d11e3fd6 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/ExperimentalAcrylicNode.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/ExperimentalAcrylicNode.cs @@ -1,5 +1,6 @@ using System; using Avalonia.Media; +using Avalonia.Media.Immutable; using Avalonia.Platform; namespace Avalonia.Rendering.SceneGraph @@ -68,7 +69,7 @@ public override void Render(IDrawingContextImpl context) } else { - context.DrawRectangle(new SolidColorBrush(Material.FallbackColor), null, Rect); + context.DrawRectangle(new ImmutableSolidColorBrush(Material.FallbackColor), null, Rect); } } From 62b5932c11a8eede1c101eee40d7af1a67a94a77 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 12 Jun 2020 18:02:11 -0300 Subject: [PATCH 074/354] remove unused arguments. --- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 47139b19d9f..cba96c4a266 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -249,7 +249,7 @@ public void DrawRectangle(IExperimentalAcrylicMaterial material, RoundedRect rec if (material != null) { - using (var paint = CreateAcrylicPaint(_fillPaint, material, rect.Rect.Size)) + using (var paint = CreateAcrylicPaint(_fillPaint, material)) { if (isRounded) { @@ -726,7 +726,7 @@ static Color Blend(Color left, Color right) ); } - internal PaintWrapper CreateAcrylicPaint (SKPaint paint, IExperimentalAcrylicMaterial material, Size targetSize, bool disposePaint = false) + internal PaintWrapper CreateAcrylicPaint (SKPaint paint, IExperimentalAcrylicMaterial material, bool disposePaint = false) { var paintWrapper = new PaintWrapper(paint, disposePaint); From 88b016970e006fa48a6a3832263ab62e031177a3 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 12 Jun 2020 18:02:22 -0300 Subject: [PATCH 075/354] tidy acrylic page. --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index 214d012affa..14ce1cff55d 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -13,13 +13,17 @@ TintColor="White" BackgroundSource="Digger" /> - - - - - - - + + + + + + + + + + + From d7f7acc66fdc067c337c87f2103397bccb25f831 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 12 Jun 2020 18:02:50 -0300 Subject: [PATCH 076/354] seperate into files acrylic media classes. --- .../Media/ExperimentalAcrylicMaterial.cs | 152 +++--------------- .../Media/IExperimentalAcrylicMaterial.cs | 15 ++ .../IMutableExperimentalAcrylicMaterial.cs | 14 ++ .../ImmutableExperimentalAcrylicMaterial.cs | 73 +++++++++ .../Media/MaterialExtensions.cs | 22 +++ 5 files changed, 149 insertions(+), 127 deletions(-) create mode 100644 src/Avalonia.Visuals/Media/IExperimentalAcrylicMaterial.cs create mode 100644 src/Avalonia.Visuals/Media/IMutableExperimentalAcrylicMaterial.cs create mode 100644 src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicMaterial.cs create mode 100644 src/Avalonia.Visuals/Media/MaterialExtensions.cs diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index 507931da5a1..c96dfda4a04 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -2,118 +2,6 @@ namespace Avalonia.Media { - /// - /// Represents a mutable brush which can return an immutable clone of itself. - /// - public interface IMutableExperimentalAcrylicMaterial : IExperimentalAcrylicMaterial, IAffectsRender - { - /// - /// Creates an immutable clone of the brush. - /// - /// The immutable clone. - IExperimentalAcrylicMaterial ToImmutable(); - } - - public interface IExperimentalAcrylicMaterial - { - AcrylicBackgroundSource BackgroundSource { get; } - - Color TintColor { get; } - - Color LuminosityColor { get; } - - double TintOpacity { get; } - - Color FallbackColor { get; } - } - - public static class MaterialExtensions - { - /// - /// Converts a brush to an immutable brush. - /// - /// The brush. - /// - /// The result of calling if the brush is mutable, - /// otherwise . - /// - public static IExperimentalAcrylicMaterial ToImmutable(this IExperimentalAcrylicMaterial material) - { - Contract.Requires(material != null); - - return (material as IMutableExperimentalAcrylicMaterial)?.ToImmutable() ?? material; - } - } - - public readonly struct ImmutableExperimentalAcrylicMaterial : IExperimentalAcrylicMaterial, IEquatable - { - public ImmutableExperimentalAcrylicMaterial(IExperimentalAcrylicMaterial brush) - { - BackgroundSource = brush.BackgroundSource; - TintColor = brush.TintColor; - TintOpacity = brush.TintOpacity; - FallbackColor = brush.FallbackColor; - LuminosityColor = brush.LuminosityColor; - } - - public AcrylicBackgroundSource BackgroundSource { get; } - - public Color TintColor { get; } - - public Color LuminosityColor { get; } - - public double TintOpacity { get; } - - public Color FallbackColor { get; } - - public bool Equals(ImmutableExperimentalAcrylicMaterial other) - { - // ReSharper disable once CompareOfFloatsByEqualityOperator - return - TintColor == other.TintColor && - TintOpacity == other.TintOpacity && - BackgroundSource == other.BackgroundSource && - FallbackColor == other.FallbackColor && LuminosityColor == other.LuminosityColor; - - } - - public override bool Equals(object obj) - { - return obj is ImmutableExperimentalAcrylicMaterial other && Equals(other); - } - - public Color GetEffectiveTintColor() - { - return TintColor; - } - - public override int GetHashCode() - { - unchecked - { - int hash = 17; - - hash = (hash * 23) + TintColor.GetHashCode(); - hash = (hash * 23) + TintOpacity.GetHashCode(); - hash = (hash * 23) + BackgroundSource.GetHashCode(); - hash = (hash * 23) + FallbackColor.GetHashCode(); - hash = (hash * 23) + LuminosityColor.GetHashCode(); - - return hash; - } - } - - public static bool operator ==(ImmutableExperimentalAcrylicMaterial left, ImmutableExperimentalAcrylicMaterial right) - { - return left.Equals(right); - } - - public static bool operator !=(ImmutableExperimentalAcrylicMaterial left, ImmutableExperimentalAcrylicMaterial right) - { - return !left.Equals(right); - } - } - public class ExperimentalAcrylicMaterial : AvaloniaObject, IMutableExperimentalAcrylicMaterial { private Color _effectiveTintColor; @@ -266,12 +154,6 @@ private static Color GetEffectiveTintColor(Color tintColor, double tintOpacity) return tintColor; } - private static double AdjustOpacity(double opacity) - { - var result = Math.Max((1.0 - Math.Pow((1.0 - opacity), 3.85)), 0.92); - return result; - } - private static double GetTintOpacityModifier(Color tintColor) { // This method supresses the maximum allowable tint opacity depending on the luminosity and saturation of a color by @@ -282,9 +164,9 @@ private static double GetTintOpacityModifier(Color tintColor) const double midPoint = 0.5; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. - double whiteMaxOpacity = 0.45; // 100% luminosity - double midPointMaxOpacity = 0.90; // 50% luminosity - double blackMaxOpacity = 0.85; // 0% luminosity + const double whiteMaxOpacity = 0.45; // 100% luminosity + const double midPointMaxOpacity = 0.50; // 50% luminosity + const double blackMaxOpacity = 0.85; // 0% luminosity var hsv = RgbToHsv(tintColor); @@ -316,7 +198,7 @@ private static double GetTintOpacityModifier(Color tintColor) if (hsv.Saturation > 0) { // Dampen opacity suppression based on how much saturation there is - //maxOpacitySuppression *= Math.Max(1 - (hsv.Saturation * 2), 0.0); + maxOpacitySuppression *= Math.Max(1 - (hsv.Saturation * 2), 0.0); } double opacitySuppression = maxOpacitySuppression * normalizedDeviation; @@ -404,19 +286,35 @@ private static byte Trim(double value) return (byte)value; } - double Luminosity(Color color) + private static float RGBMax(Color color) { - return 0.299 * color.R + 0.587 * color.G + 0.114 * color.B; + if (color.R > color.G) + return (color.R > color.B) ? color.R : color.B; + else + return (color.G > color.B) ? color.G : color.B; + } + + private static float RGBMin(Color color) + { + if (color.R < color.G) + return (color.R < color.B) ? color.R : color.B; + else + return (color.G < color.B) ? color.G : color.B; } // The tintColor passed into this method should be the original, unmodified color created using user values for TintColor + TintOpacity Color GetLuminosityColor(double? luminosityOpacity) { - var luminosityColor = new Color(255, 127, 127, 127); + var hsv = RgbToHsv(TintColor); + + var max = (float)RGBMax(TintColor) / 255.0f; + var min = (float)RGBMin(TintColor) / 255.0f; + + var lightness = (max + min) / 2.0f; - var modifier = GetTintOpacityModifier(luminosityColor); + var luminosityColor = new Color(255, Trim(lightness), Trim(lightness), Trim(lightness)); - return new Color((byte)(255 * Math.Max(Math.Min(luminosityOpacity.Value * modifier, 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); + return new Color((byte)(255 * Math.Max(Math.Min(((luminosityOpacity.Value)), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); } /// diff --git a/src/Avalonia.Visuals/Media/IExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/IExperimentalAcrylicMaterial.cs new file mode 100644 index 00000000000..bcd3bbcc0bb --- /dev/null +++ b/src/Avalonia.Visuals/Media/IExperimentalAcrylicMaterial.cs @@ -0,0 +1,15 @@ +namespace Avalonia.Media +{ + public interface IExperimentalAcrylicMaterial + { + AcrylicBackgroundSource BackgroundSource { get; } + + Color TintColor { get; } + + Color LuminosityColor { get; } + + double TintOpacity { get; } + + Color FallbackColor { get; } + } +} diff --git a/src/Avalonia.Visuals/Media/IMutableExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/IMutableExperimentalAcrylicMaterial.cs new file mode 100644 index 00000000000..fcfe4631a60 --- /dev/null +++ b/src/Avalonia.Visuals/Media/IMutableExperimentalAcrylicMaterial.cs @@ -0,0 +1,14 @@ +namespace Avalonia.Media +{ + /// + /// Represents a mutable brush which can return an immutable clone of itself. + /// + public interface IMutableExperimentalAcrylicMaterial : IExperimentalAcrylicMaterial, IAffectsRender + { + /// + /// Creates an immutable clone of the brush. + /// + /// The immutable clone. + IExperimentalAcrylicMaterial ToImmutable(); + } +} diff --git a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicMaterial.cs new file mode 100644 index 00000000000..c5cf4205099 --- /dev/null +++ b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicMaterial.cs @@ -0,0 +1,73 @@ +using System; + +namespace Avalonia.Media +{ + public readonly struct ImmutableExperimentalAcrylicMaterial : IExperimentalAcrylicMaterial, IEquatable + { + public ImmutableExperimentalAcrylicMaterial(IExperimentalAcrylicMaterial brush) + { + BackgroundSource = brush.BackgroundSource; + TintColor = brush.TintColor; + TintOpacity = brush.TintOpacity; + FallbackColor = brush.FallbackColor; + LuminosityColor = brush.LuminosityColor; + } + + public AcrylicBackgroundSource BackgroundSource { get; } + + public Color TintColor { get; } + + public Color LuminosityColor { get; } + + public double TintOpacity { get; } + + public Color FallbackColor { get; } + + public bool Equals(ImmutableExperimentalAcrylicMaterial other) + { + // ReSharper disable once CompareOfFloatsByEqualityOperator + return + TintColor == other.TintColor && + TintOpacity == other.TintOpacity && + BackgroundSource == other.BackgroundSource && + FallbackColor == other.FallbackColor && LuminosityColor == other.LuminosityColor; + + } + + public override bool Equals(object obj) + { + return obj is ImmutableExperimentalAcrylicMaterial other && Equals(other); + } + + public Color GetEffectiveTintColor() + { + return TintColor; + } + + public override int GetHashCode() + { + unchecked + { + int hash = 17; + + hash = (hash * 23) + TintColor.GetHashCode(); + hash = (hash * 23) + TintOpacity.GetHashCode(); + hash = (hash * 23) + BackgroundSource.GetHashCode(); + hash = (hash * 23) + FallbackColor.GetHashCode(); + hash = (hash * 23) + LuminosityColor.GetHashCode(); + + return hash; + } + } + + public static bool operator ==(ImmutableExperimentalAcrylicMaterial left, ImmutableExperimentalAcrylicMaterial right) + { + return left.Equals(right); + } + + public static bool operator !=(ImmutableExperimentalAcrylicMaterial left, ImmutableExperimentalAcrylicMaterial right) + { + return !left.Equals(right); + } + } +} diff --git a/src/Avalonia.Visuals/Media/MaterialExtensions.cs b/src/Avalonia.Visuals/Media/MaterialExtensions.cs new file mode 100644 index 00000000000..c0b445c357b --- /dev/null +++ b/src/Avalonia.Visuals/Media/MaterialExtensions.cs @@ -0,0 +1,22 @@ +using System; + +namespace Avalonia.Media +{ + public static class MaterialExtensions + { + /// + /// Converts a brush to an immutable brush. + /// + /// The brush. + /// + /// The result of calling if the brush is mutable, + /// otherwise . + /// + public static IExperimentalAcrylicMaterial ToImmutable(this IExperimentalAcrylicMaterial material) + { + Contract.Requires(material != null); + + return (material as IMutableExperimentalAcrylicMaterial)?.ToImmutable() ?? material; + } + } +} From effb994823c18ce8219a3cb8bdb45ec8bb1660f5 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 12 Jun 2020 18:28:31 -0300 Subject: [PATCH 077/354] Add a way for acrylic material to compensate for different transparency levels. --- .../ExperimentalAcrylicBorder.cs | 33 +++++++++++++++++++ .../Media/ExperimentalAcrylicMaterial.cs | 22 +++++++++++-- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs b/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs index 4a855b9838f..2c013fd244b 100644 --- a/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs +++ b/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs @@ -2,6 +2,7 @@ using Avalonia.Layout; using Avalonia.Media; using Avalonia.Platform; +using System; namespace Avalonia.Controls { @@ -38,6 +39,38 @@ public ExperimentalAcrylicMaterial Material set => SetValue(MaterialProperty, value); } + protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) + { + base.OnAttachedToVisualTree(e); + + var tl = (e.Root as TopLevel); + + tl.GetObservable(TopLevel.ActualTransparencyLevelProperty) + .Subscribe(x => + { + switch (x) + { + case WindowTransparencyLevel.Transparent: + case WindowTransparencyLevel.None: + Material.PlatformTransparencyCompensationLevel = 1; + break; + + case WindowTransparencyLevel.Blur: + Material.PlatformTransparencyCompensationLevel = 0.85; + break; + + case WindowTransparencyLevel.AcrylicBlur: + Material.PlatformTransparencyCompensationLevel = 0; + break; + } + }); + } + + protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e) + { + base.OnDetachedFromVisualTree(e); + } + public override void Render(DrawingContext context) { diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index c96dfda4a04..c0004e8fd16 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -13,7 +13,8 @@ static ExperimentalAcrylicMaterial() TintColorProperty, BackgroundSourceProperty, TintOpacityProperty, - TintLuminosityOpacityProperty); + TintLuminosityOpacityProperty, + PlatformTransparencyCompensationLevelProperty); TintColorProperty.Changed.AddClassHandler((b, e) => { @@ -32,6 +33,12 @@ static ExperimentalAcrylicMaterial() b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); }); + + PlatformTransparencyCompensationLevelProperty.Changed.AddClassHandler((b, e) => + { + b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); + b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); + }); } /// @@ -49,6 +56,9 @@ static ExperimentalAcrylicMaterial() public static readonly StyledProperty TintLuminosityOpacityProperty = AvaloniaProperty.Register(nameof(TintLuminosityOpacity), 0.5); + public static readonly StyledProperty PlatformTransparencyCompensationLevelProperty = + AvaloniaProperty.Register(nameof(PlatformTransparencyCompensationLevel), 0.0); + public static readonly StyledProperty FallbackColorProperty = AvaloniaProperty.Register(nameof(FallbackColor)); @@ -85,6 +95,12 @@ public double TintLuminosityOpacity set => SetValue(TintLuminosityOpacityProperty, value); } + public double PlatformTransparencyCompensationLevel + { + get => GetValue(PlatformTransparencyCompensationLevelProperty); + set => SetValue(PlatformTransparencyCompensationLevelProperty, value); + } + Color IExperimentalAcrylicMaterial.LuminosityColor => _effectiveLuminosityColor; Color IExperimentalAcrylicMaterial.TintColor => _effectiveTintColor; @@ -314,7 +330,9 @@ Color GetLuminosityColor(double? luminosityOpacity) var luminosityColor = new Color(255, Trim(lightness), Trim(lightness), Trim(lightness)); - return new Color((byte)(255 * Math.Max(Math.Min(((luminosityOpacity.Value)), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); + var compensationMultiplier = 1 - PlatformTransparencyCompensationLevel; + + return new Color((byte)(255 * Math.Max(Math.Min(PlatformTransparencyCompensationLevel + ( luminosityOpacity.Value * compensationMultiplier), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); } /// From bba17006ecc657c47ce263ab7b6d5a7035b6c25e Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 12 Jun 2020 18:51:00 -0300 Subject: [PATCH 078/354] tweak platform compensation. --- src/Avalonia.Controls/ExperimentalAcrylicBorder.cs | 2 +- src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs b/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs index 2c013fd244b..05d261a9218 100644 --- a/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs +++ b/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs @@ -56,7 +56,7 @@ protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) break; case WindowTransparencyLevel.Blur: - Material.PlatformTransparencyCompensationLevel = 0.85; + Material.PlatformTransparencyCompensationLevel = 0.80; break; case WindowTransparencyLevel.AcrylicBlur: diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index c0004e8fd16..35f186f5042 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -321,12 +321,13 @@ private static float RGBMin(Color color) // The tintColor passed into this method should be the original, unmodified color created using user values for TintColor + TintOpacity Color GetLuminosityColor(double? luminosityOpacity) { - var hsv = RgbToHsv(TintColor); - + // Calculate the HSL lightness value of the color. var max = (float)RGBMax(TintColor) / 255.0f; var min = (float)RGBMin(TintColor) / 255.0f; - var lightness = (max + min) / 2.0f; + var lightness = (max + min) / 2.0; + + lightness = 0.125 + (lightness * 0.75); // centralise and reduce the range of the opaque layer. var luminosityColor = new Color(255, Trim(lightness), Trim(lightness), Trim(lightness)); From cc2aa697422217b6a727ee00f2a5e65c1b5af20c Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 12 Jun 2020 18:55:06 -0300 Subject: [PATCH 079/354] rename properties that control "tracking paper effect." --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 20 ++++++++-------- .../Media/ExperimentalAcrylicMaterial.cs | 23 +++++++++++-------- .../Media/IExperimentalAcrylicMaterial.cs | 4 ++-- .../ImmutableExperimentalAcrylicMaterial.cs | 8 +++---- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 2 +- 5 files changed, 30 insertions(+), 27 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index 14ce1cff55d..fd9487190b8 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -34,7 +34,7 @@ @@ -44,7 +44,7 @@ @@ -54,7 +54,7 @@ @@ -67,7 +67,7 @@ @@ -77,7 +77,7 @@ @@ -87,7 +87,7 @@ @@ -99,7 +99,7 @@ @@ -109,7 +109,7 @@ @@ -119,7 +119,7 @@ @@ -130,7 +130,7 @@ diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index 35f186f5042..5d6e1348f95 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -13,7 +13,7 @@ static ExperimentalAcrylicMaterial() TintColorProperty, BackgroundSourceProperty, TintOpacityProperty, - TintLuminosityOpacityProperty, + MaterialOpacityProperty, PlatformTransparencyCompensationLevelProperty); TintColorProperty.Changed.AddClassHandler((b, e) => @@ -28,7 +28,7 @@ static ExperimentalAcrylicMaterial() b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); }); - TintLuminosityOpacityProperty.Changed.AddClassHandler((b, e) => + MaterialOpacityProperty.Changed.AddClassHandler((b, e) => { b._effectiveTintColor = GetEffectiveTintColor(b.TintColor, b.TintOpacity); b._effectiveLuminosityColor = b.GetEffectiveLuminosityColor(); @@ -53,8 +53,8 @@ static ExperimentalAcrylicMaterial() public static readonly StyledProperty TintOpacityProperty = AvaloniaProperty.Register(nameof(TintOpacity), 0.8); - public static readonly StyledProperty TintLuminosityOpacityProperty = - AvaloniaProperty.Register(nameof(TintLuminosityOpacity), 0.5); + public static readonly StyledProperty MaterialOpacityProperty = + AvaloniaProperty.Register(nameof(MaterialOpacity), 0.5); public static readonly StyledProperty PlatformTransparencyCompensationLevelProperty = AvaloniaProperty.Register(nameof(PlatformTransparencyCompensationLevel), 0.0); @@ -89,10 +89,10 @@ public Color FallbackColor set => SetValue(FallbackColorProperty, value); } - public double TintLuminosityOpacity + public double MaterialOpacity { - get => GetValue(TintLuminosityOpacityProperty); - set => SetValue(TintLuminosityOpacityProperty, value); + get => GetValue(MaterialOpacityProperty); + set => SetValue(MaterialOpacityProperty, value); } public double PlatformTransparencyCompensationLevel @@ -101,7 +101,7 @@ public double PlatformTransparencyCompensationLevel set => SetValue(PlatformTransparencyCompensationLevelProperty, value); } - Color IExperimentalAcrylicMaterial.LuminosityColor => _effectiveLuminosityColor; + Color IExperimentalAcrylicMaterial.MaterialColor => _effectiveLuminosityColor; Color IExperimentalAcrylicMaterial.TintColor => _effectiveTintColor; @@ -232,7 +232,7 @@ Color GetEffectiveLuminosityColor() // Purposely leaving out tint opacity modifier here because GetLuminosityColor needs the *original* tint opacity set by the user. var tintColor = new Color((byte)(Math.Round(TintColor.A * tintOpacity)), TintColor.R, TintColor.G, TintColor.B); - double? luminosityOpacity = TintLuminosityOpacity; + double? luminosityOpacity = MaterialOpacity; return GetLuminosityColor(luminosityOpacity); } @@ -327,7 +327,10 @@ Color GetLuminosityColor(double? luminosityOpacity) var lightness = (max + min) / 2.0; - lightness = 0.125 + (lightness * 0.75); // centralise and reduce the range of the opaque layer. + // centralise and reduce the range of the opaque layer. + // this is done so pure white and pure black still have the effect of being blended with something. + // i.e. they get a little darker / lighter. + lightness = 0.125 + (lightness * 0.75); var luminosityColor = new Color(255, Trim(lightness), Trim(lightness), Trim(lightness)); diff --git a/src/Avalonia.Visuals/Media/IExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/IExperimentalAcrylicMaterial.cs index bcd3bbcc0bb..a656c75d46e 100644 --- a/src/Avalonia.Visuals/Media/IExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/IExperimentalAcrylicMaterial.cs @@ -6,10 +6,10 @@ public interface IExperimentalAcrylicMaterial Color TintColor { get; } - Color LuminosityColor { get; } - double TintOpacity { get; } + Color MaterialColor { get; } + Color FallbackColor { get; } } } diff --git a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicMaterial.cs index c5cf4205099..f46d76cf3f5 100644 --- a/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ImmutableExperimentalAcrylicMaterial.cs @@ -10,14 +10,14 @@ public ImmutableExperimentalAcrylicMaterial(IExperimentalAcrylicMaterial brush) TintColor = brush.TintColor; TintOpacity = brush.TintOpacity; FallbackColor = brush.FallbackColor; - LuminosityColor = brush.LuminosityColor; + MaterialColor = brush.MaterialColor; } public AcrylicBackgroundSource BackgroundSource { get; } public Color TintColor { get; } - public Color LuminosityColor { get; } + public Color MaterialColor { get; } public double TintOpacity { get; } @@ -30,7 +30,7 @@ public bool Equals(ImmutableExperimentalAcrylicMaterial other) TintColor == other.TintColor && TintOpacity == other.TintOpacity && BackgroundSource == other.BackgroundSource && - FallbackColor == other.FallbackColor && LuminosityColor == other.LuminosityColor; + FallbackColor == other.FallbackColor && MaterialColor == other.MaterialColor; } @@ -54,7 +54,7 @@ public override int GetHashCode() hash = (hash * 23) + TintOpacity.GetHashCode(); hash = (hash * 23) + BackgroundSource.GetHashCode(); hash = (hash * 23) + FallbackColor.GetHashCode(); - hash = (hash * 23) + LuminosityColor.GetHashCode(); + hash = (hash * 23) + MaterialColor.GetHashCode(); return hash; } diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index cba96c4a266..0573aeee1e8 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -753,7 +753,7 @@ internal PaintWrapper CreateAcrylicPaint (SKPaint paint, IExperimentalAcrylicMat } } - using (var backdrop = SKShader.CreateColor(new SKColor(material.LuminosityColor.R, material.LuminosityColor.G, material.LuminosityColor.B, material.LuminosityColor.A))) + using (var backdrop = SKShader.CreateColor(new SKColor(material.MaterialColor.R, material.MaterialColor.G, material.MaterialColor.B, material.MaterialColor.A))) using (var tintShader = SKShader.CreateColor(tint)) using (var effectiveTint = SKShader.CreateCompose(backdrop, tintShader)) using (var compose = SKShader.CreateCompose(effectiveTint, s_acrylicNoiseShader)) From a6bc06f7ad4902ac1fa131122c5501b009259a10 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 12 Jun 2020 18:59:03 -0300 Subject: [PATCH 080/354] make names on acrylic page make sense. --- samples/ControlCatalog/Pages/AcrylicPage.xaml | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/samples/ControlCatalog/Pages/AcrylicPage.xaml b/samples/ControlCatalog/Pages/AcrylicPage.xaml index fd9487190b8..96cfcc5288f 100644 --- a/samples/ControlCatalog/Pages/AcrylicPage.xaml +++ b/samples/ControlCatalog/Pages/AcrylicPage.xaml @@ -20,9 +20,9 @@ - - - + + + @@ -34,7 +34,7 @@ @@ -44,7 +44,7 @@ @@ -54,7 +54,7 @@ @@ -67,7 +67,7 @@ @@ -77,7 +77,7 @@ @@ -87,7 +87,7 @@ @@ -99,7 +99,7 @@ @@ -109,7 +109,7 @@ @@ -119,7 +119,7 @@ @@ -130,7 +130,7 @@ From 3b5c7c53145931704bb453684b88eb6151a85729 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 13 Jun 2020 12:08:24 -0300 Subject: [PATCH 081/354] change tracing paper effect algorithm. --- .../ExperimentalAcrylicBorder.cs | 4 ++-- .../Media/ExperimentalAcrylicMaterial.cs | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs b/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs index 05d261a9218..a6e7b52cb0d 100644 --- a/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs +++ b/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs @@ -56,11 +56,11 @@ protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) break; case WindowTransparencyLevel.Blur: - Material.PlatformTransparencyCompensationLevel = 0.80; + Material.PlatformTransparencyCompensationLevel = 0.90; break; case WindowTransparencyLevel.AcrylicBlur: - Material.PlatformTransparencyCompensationLevel = 0; + Material.PlatformTransparencyCompensationLevel = 0.70; break; } }); diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index 5d6e1348f95..503554be2da 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -182,7 +182,7 @@ private static double GetTintOpacityModifier(Color tintColor) const double whiteMaxOpacity = 0.45; // 100% luminosity const double midPointMaxOpacity = 0.50; // 50% luminosity - const double blackMaxOpacity = 0.85; // 0% luminosity + const double blackMaxOpacity = 0.45; // 0% luminosity var hsv = RgbToHsv(tintColor); @@ -327,16 +327,15 @@ Color GetLuminosityColor(double? luminosityOpacity) var lightness = (max + min) / 2.0; - // centralise and reduce the range of the opaque layer. - // this is done so pure white and pure black still have the effect of being blended with something. - // i.e. they get a little darker / lighter. - lightness = 0.125 + (lightness * 0.75); + // 0 opacity closer to white, 1 opacity, close to the lightness of the pixel. + // TintOpacity multiplied in, so we endup with pure white if there is no TintOpacity. + lightness = 1 - (1 - lightness) * luminosityOpacity.Value * TintOpacity; var luminosityColor = new Color(255, Trim(lightness), Trim(lightness), Trim(lightness)); - var compensationMultiplier = 1 - PlatformTransparencyCompensationLevel; - - return new Color((byte)(255 * Math.Max(Math.Min(PlatformTransparencyCompensationLevel + ( luminosityOpacity.Value * compensationMultiplier), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); + //var compensationMultiplier = 1 - PlatformTransparencyCompensationLevel; + //return new Color((byte)(255 * Math.Max(Math.Min(PlatformTransparencyCompensationLevel + ( luminosityOpacity.Value * compensationMultiplier), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); + return new Color((byte)(255 * Math.Max(Math.Min((luminosityOpacity.Value), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); } /// From 79bad75e6c63f58313178d8fb7ce0c8fac0fa7a9 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 13 Jun 2020 13:27:49 -0300 Subject: [PATCH 082/354] very good settings for tracing paper effect. --- .../Media/ExperimentalAcrylicMaterial.cs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index 503554be2da..dd742692978 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -180,9 +180,9 @@ private static double GetTintOpacityModifier(Color tintColor) const double midPoint = 0.5; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. - const double whiteMaxOpacity = 0.45; // 100% luminosity - const double midPointMaxOpacity = 0.50; // 50% luminosity - const double blackMaxOpacity = 0.45; // 0% luminosity + const double whiteMaxOpacity = 0.15; // 100% luminosity + const double midPointMaxOpacity = 0.45; // 50% luminosity + const double blackMaxOpacity = 0.40; // 0% luminosity var hsv = RgbToHsv(tintColor); @@ -325,13 +325,15 @@ Color GetLuminosityColor(double? luminosityOpacity) var max = (float)RGBMax(TintColor) / 255.0f; var min = (float)RGBMin(TintColor) / 255.0f; - var lightness = (max + min) / 2.0; + var lightness = (max + min) / 2.0; // 0 opacity closer to white, 1 opacity, close to the lightness of the pixel. - // TintOpacity multiplied in, so we endup with pure white if there is no TintOpacity. - lightness = 1 - (1 - lightness) * luminosityOpacity.Value * TintOpacity; + lightness = 1 -((1 - lightness) * luminosityOpacity.Value); - var luminosityColor = new Color(255, Trim(lightness), Trim(lightness), Trim(lightness)); + lightness = 0.13 + (lightness * 0.74); + var luminosityColor = new Color(255, Trim(lightness), Trim(lightness), Trim(lightness)); + + //luminosityColor = new Color(255, Trim(lightness * modifier), Trim(lightness * modifier), Trim(lightness * modifier)); //var compensationMultiplier = 1 - PlatformTransparencyCompensationLevel; //return new Color((byte)(255 * Math.Max(Math.Min(PlatformTransparencyCompensationLevel + ( luminosityOpacity.Value * compensationMultiplier), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); From ed2fd5f3ee5be679d9341032cb7d21f9679a5498 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 13 Jun 2020 14:10:13 -0300 Subject: [PATCH 083/354] use blending technique to colourise the tracing paper. --- .../Media/ExperimentalAcrylicMaterial.cs | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index dd742692978..614417ed207 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -318,6 +318,28 @@ private static float RGBMin(Color color) return (color.G < color.B) ? color.G : color.B; } + static byte Blend(byte leftColor, byte leftAlpha, byte rightColor, byte rightAlpha) + { + var ca = leftColor / 255d; + var aa = leftAlpha / 255d; + var cb = rightColor / 255d; + var ab = rightAlpha / 255d; + var r = (ca * aa + cb * ab * (1 - aa)) / (aa + ab * (1 - aa)); + return (byte)(r * 255); + } + + static Color Blend(Color left, Color right) + { + var aa = left.A / 255d; + var ab = right.A / 255d; + return new Color( + (byte)((aa + ab * (1 - aa)) * 255), + Blend(left.R, left.A, right.R, right.A), + Blend(left.G, left.A, right.G, right.A), + Blend(left.B, left.A, right.B, right.A) + ); + } + // The tintColor passed into this method should be the original, unmodified color created using user values for TintColor + TintOpacity Color GetLuminosityColor(double? luminosityOpacity) { @@ -325,15 +347,15 @@ Color GetLuminosityColor(double? luminosityOpacity) var max = (float)RGBMax(TintColor) / 255.0f; var min = (float)RGBMin(TintColor) / 255.0f; - var lightness = (max + min) / 2.0; + var lightness = (max + min) / 2.0; - // 0 opacity closer to white, 1 opacity, close to the lightness of the pixel. - lightness = 1 -((1 - lightness) * luminosityOpacity.Value); + lightness = 1 - ((1 - lightness) * luminosityOpacity.Value); lightness = 0.13 + (lightness * 0.74); - var luminosityColor = new Color(255, Trim(lightness), Trim(lightness), Trim(lightness)); - //luminosityColor = new Color(255, Trim(lightness * modifier), Trim(lightness * modifier), Trim(lightness * modifier)); + var luminosityColor = new Color(255, Trim(lightness), Trim(lightness), Trim(lightness)); + + luminosityColor = Blend(luminosityColor, new Color((byte)Math.Round(255 * TintOpacity), TintColor.R, TintColor.G, TintColor.B)); //var compensationMultiplier = 1 - PlatformTransparencyCompensationLevel; //return new Color((byte)(255 * Math.Max(Math.Min(PlatformTransparencyCompensationLevel + ( luminosityOpacity.Value * compensationMultiplier), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); From 1e9873e6d4a891fcd9f2b40d0dc7f5adef384236 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 13 Jun 2020 14:33:06 -0300 Subject: [PATCH 084/354] fix blend. --- src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index 614417ed207..9c253df9dd4 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -355,7 +355,7 @@ Color GetLuminosityColor(double? luminosityOpacity) var luminosityColor = new Color(255, Trim(lightness), Trim(lightness), Trim(lightness)); - luminosityColor = Blend(luminosityColor, new Color((byte)Math.Round(255 * TintOpacity), TintColor.R, TintColor.G, TintColor.B)); + luminosityColor = Blend(luminosityColor, new Color(255, TintColor.R, TintColor.G, TintColor.B)); //var compensationMultiplier = 1 - PlatformTransparencyCompensationLevel; //return new Color((byte)(255 * Math.Max(Math.Min(PlatformTransparencyCompensationLevel + ( luminosityOpacity.Value * compensationMultiplier), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); From f6162fa54298695395f4fa16355425ab06692c74 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 13 Jun 2020 14:33:21 -0300 Subject: [PATCH 085/354] dampen saturated opacities. --- src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index 9c253df9dd4..964102e50e3 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -181,7 +181,7 @@ private static double GetTintOpacityModifier(Color tintColor) const double midPoint = 0.5; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. const double whiteMaxOpacity = 0.15; // 100% luminosity - const double midPointMaxOpacity = 0.45; // 50% luminosity + const double midPointMaxOpacity = 0.40; // 50% luminosity const double blackMaxOpacity = 0.40; // 0% luminosity var hsv = RgbToHsv(tintColor); From dd17ffe0b7aed279c95063b03dbdbd631e8ca669 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 13 Jun 2020 14:59:53 -0300 Subject: [PATCH 086/354] restore platform compensation. --- src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index 964102e50e3..7d2023cb21b 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -357,9 +357,8 @@ Color GetLuminosityColor(double? luminosityOpacity) luminosityColor = Blend(luminosityColor, new Color(255, TintColor.R, TintColor.G, TintColor.B)); - //var compensationMultiplier = 1 - PlatformTransparencyCompensationLevel; - //return new Color((byte)(255 * Math.Max(Math.Min(PlatformTransparencyCompensationLevel + ( luminosityOpacity.Value * compensationMultiplier), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); - return new Color((byte)(255 * Math.Max(Math.Min((luminosityOpacity.Value), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); + var compensationMultiplier = 1 - PlatformTransparencyCompensationLevel; + return new Color((byte)(255 * Math.Max(Math.Min(PlatformTransparencyCompensationLevel + ( luminosityOpacity.Value * compensationMultiplier), 1.0), 0.0)), luminosityColor.R, luminosityColor.G, luminosityColor.B); } /// From 666892a52f4f2d55123c3ff6e01c641926b613b2 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 13 Jun 2020 15:03:39 -0300 Subject: [PATCH 087/354] transparency level ajustments. --- src/Avalonia.Controls/ExperimentalAcrylicBorder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs b/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs index a6e7b52cb0d..6c283665f1a 100644 --- a/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs +++ b/src/Avalonia.Controls/ExperimentalAcrylicBorder.cs @@ -56,11 +56,11 @@ protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) break; case WindowTransparencyLevel.Blur: - Material.PlatformTransparencyCompensationLevel = 0.90; + Material.PlatformTransparencyCompensationLevel = 0.80; break; case WindowTransparencyLevel.AcrylicBlur: - Material.PlatformTransparencyCompensationLevel = 0.70; + Material.PlatformTransparencyCompensationLevel = 0.0; break; } }); From 00db860270782d1963d3dbbf9bcf57ef65f368b7 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 13 Jun 2020 15:16:40 -0300 Subject: [PATCH 088/354] keep color balancing proportional to win ui. --- src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs index 7d2023cb21b..7071df063a2 100644 --- a/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs +++ b/src/Avalonia.Visuals/Media/ExperimentalAcrylicMaterial.cs @@ -180,9 +180,9 @@ private static double GetTintOpacityModifier(Color tintColor) const double midPoint = 0.5; // Mid point of HsvV range that these calculations are based on. This is here for easy tuning. - const double whiteMaxOpacity = 0.15; // 100% luminosity - const double midPointMaxOpacity = 0.40; // 50% luminosity - const double blackMaxOpacity = 0.40; // 0% luminosity + const double whiteMaxOpacity = 0.2; // 100% luminosity + const double midPointMaxOpacity = 0.45; // 50% luminosity + const double blackMaxOpacity = 0.42; // 0% luminosity var hsv = RgbToHsv(tintColor); From a4544be13451f40e26344608bb008f3c80552fd9 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 13:53:38 -0300 Subject: [PATCH 089/354] Add WndProcs to handle extended frame windows. --- .../Interop/UnmanagedMethods.cs | 3 + .../Avalonia.Win32/WindowImpl.WndProc.cs | 155 +++++++++++++++++- 2 files changed, 157 insertions(+), 1 deletion(-) diff --git a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs index ba3775200bf..b66de8e0a8b 100644 --- a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs +++ b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs @@ -1311,6 +1311,9 @@ public static extern IntPtr CreateFileMapping(IntPtr hFile, [DllImport("dwmapi.dll")] public static extern int DwmIsCompositionEnabled(out bool enabled); + [DllImport("dwmapi.dll")] + public static extern bool DwmDefWindowProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam, ref IntPtr plResult); + [DllImport("dwmapi.dll")] public static extern void DwmEnableBlurBehindWindow(IntPtr hwnd, ref DWM_BLURBEHIND blurBehind); diff --git a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs index 50e71aeebe3..55b5db3bbab 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs @@ -12,11 +12,164 @@ namespace Avalonia.Win32 { + public partial class WindowImpl + { + private int LEFTEXTENDWIDTH = 4; + private int RIGHTEXTENDWIDTH = 4; + private int BOTTOMEXTENDWIDTH = 4; + private int TOPEXTENDWIDTH = 100; + + // Hit test the frame for resizing and moving. + HitTestValues HitTestNCA(IntPtr hWnd, IntPtr wParam, IntPtr lParam) + { + // Get the point coordinates for the hit test. + var ptMouse = PointFromLParam(lParam); + + // Get the window rectangle. + GetWindowRect(hWnd, out var rcWindow); + + // Get the frame rectangle, adjusted for the style without a caption. + RECT rcFrame = new RECT(); + AdjustWindowRectEx(ref rcFrame, (uint)(WindowStyles.WS_OVERLAPPEDWINDOW & ~WindowStyles.WS_CAPTION), false, 0); + + // Determine if the hit test is for resizing. Default middle (1,1). + ushort uRow = 1; + ushort uCol = 1; + bool fOnResizeBorder = false; + + // Determine if the point is at the top or bottom of the window. + if (ptMouse.Y >= rcWindow.top && ptMouse.Y < rcWindow.top + TOPEXTENDWIDTH) + { + fOnResizeBorder = (ptMouse.Y < (rcWindow.top - rcFrame.top)); + uRow = 0; + } + else if (ptMouse.Y < rcWindow.bottom && ptMouse.Y >= rcWindow.bottom - BOTTOMEXTENDWIDTH) + { + uRow = 2; + } + + // Determine if the point is at the left or right of the window. + if (ptMouse.X >= rcWindow.left && ptMouse.X < rcWindow.left + LEFTEXTENDWIDTH) + { + uCol = 0; // left side + } + else if (ptMouse.X < rcWindow.right && ptMouse.X >= rcWindow.right - RIGHTEXTENDWIDTH) + { + uCol = 2; // right side + } + + // Hit test (HTTOPLEFT, ... HTBOTTOMRIGHT) + HitTestValues[][] hitTests = new[] + { + new []{ HitTestValues.HTTOPLEFT, fOnResizeBorder ? HitTestValues.HTTOP : HitTestValues.HTCAPTION, HitTestValues.HTTOPRIGHT }, + new []{ HitTestValues.HTLEFT, HitTestValues.HTNOWHERE, HitTestValues.HTRIGHT }, + new []{ HitTestValues.HTBOTTOMLEFT, HitTestValues.HTBOTTOM, HitTestValues.HTBOTTOMRIGHT }, + }; + + System.Diagnostics.Debug.WriteLine(hitTests[uRow][uCol]); + + return hitTests[uRow][uCol]; + } + + protected virtual unsafe IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam, ref bool callDwp) + { + IntPtr lRet = IntPtr.Zero; + + callDwp = !DwmDefWindowProc(hWnd, msg, wParam, lParam, ref lRet); + + MARGINS margins = new MARGINS { cxLeftWidth = 0, cxRightWidth = 0, cyBottomHeight = 0, cyTopHeight = 100 }; + RECT border_thickness = new RECT(); + + switch ((WindowsMessage)msg) + { + case WindowsMessage.WM_ACTIVATE: + { + if (GetStyle().HasFlag(WindowStyles.WS_THICKFRAME)) + { + AdjustWindowRectEx(ref border_thickness, (uint)(GetStyle()), false, 0); + border_thickness.left *= -1; + border_thickness.top *= -1; + } + else if (GetStyle().HasFlag(WindowStyles.WS_BORDER)) + { + border_thickness = new RECT { bottom = 1, left = 1, right = 1, top = 1 }; + } + + LEFTEXTENDWIDTH = border_thickness.left; + RIGHTEXTENDWIDTH = border_thickness.right; + BOTTOMEXTENDWIDTH = border_thickness.bottom; + + // Extend the frame into the client area. + margins.cxLeftWidth = border_thickness.left; + margins.cxRightWidth = border_thickness.right; + margins.cyBottomHeight = border_thickness.bottom; + margins.cyTopHeight = border_thickness.top; + + var hr = DwmExtendFrameIntoClientArea(hWnd, ref margins); + + //if (hr < 0) + { + // Handle the error. + } + + lRet = IntPtr.Zero; + callDwp = true; + break; + } + + case WindowsMessage.WM_NCCALCSIZE: + { + if (ToInt32(wParam) == 1) + { + lRet = IntPtr.Zero; + callDwp = false; + } + break; + } + + case WindowsMessage.WM_NCHITTEST: + if (lRet == IntPtr.Zero) + { + lRet = (IntPtr)HitTestNCA(hWnd, wParam, lParam); + + if (((HitTestValues)lRet) != HitTestValues.HTNOWHERE) + { + callDwp = false; + } + } + break; + } + + return lRet; + } + } + + public partial class WindowImpl + { + protected virtual unsafe IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam) + { + IntPtr lRet = IntPtr.Zero; + bool callDwp = true; + + if (DwmIsCompositionEnabled(out bool enabled) == 0) + { + lRet = CustomCaptionProc(hWnd, msg, wParam, lParam, ref callDwp); + } + + if (callDwp) + { + lRet = AppWndProc(hWnd, msg, wParam, lParam); + } + + return lRet; + } + } + public partial class WindowImpl { [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1305:FieldNamesMustNotUseHungarianNotation", Justification = "Using Win32 naming for consistency.")] - protected virtual unsafe IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam) + protected virtual unsafe IntPtr AppWndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam) { const double wheelDelta = 120.0; uint timestamp = unchecked((uint)GetMessageTime()); From 9b9b2d8330ba870c77bb4b9b3b77d1ed5e57fcfc Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 15:12:32 -0300 Subject: [PATCH 090/354] fallback transparency should be null so that it doesnt hit test. --- src/Avalonia.Controls/TopLevel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index 5d34444eb8a..0a3e758423b 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -399,7 +399,7 @@ protected virtual void HandleTransparencyLevelChanged(WindowTransparencyLevel tr } else { - _transparencyFallbackBorder.Background = Brushes.Transparent; + _transparencyFallbackBorder.Background = null; } } From 9a60bbf528c5c5f4a1034a60fb497e8be0810e63 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 15:13:13 -0300 Subject: [PATCH 091/354] render hit test non-client area. --- .../Avalonia.Win32/WindowImpl.WndProc.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs index 55b5db3bbab..bc13fb83e90 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs @@ -98,13 +98,14 @@ protected virtual unsafe IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr LEFTEXTENDWIDTH = border_thickness.left; RIGHTEXTENDWIDTH = border_thickness.right; BOTTOMEXTENDWIDTH = border_thickness.bottom; + TOPEXTENDWIDTH = border_thickness.top; // Extend the frame into the client area. margins.cxLeftWidth = border_thickness.left; margins.cxRightWidth = border_thickness.right; margins.cyBottomHeight = border_thickness.bottom; margins.cyTopHeight = border_thickness.top; - + var hr = DwmExtendFrameIntoClientArea(hWnd, ref margins); //if (hr < 0) @@ -132,6 +133,21 @@ protected virtual unsafe IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr { lRet = (IntPtr)HitTestNCA(hWnd, wParam, lParam); + uint timestamp = unchecked((uint)GetMessageTime()); + + if (((HitTestValues)lRet) == HitTestValues.HTCAPTION) + { + var position = PointToClient(PointFromLParam(lParam)); + + var visual = (_owner as Window).Renderer.HitTestFirst(position, _owner as Window, null); + + if(visual != null) + { + lRet = (IntPtr)HitTestValues.HTCLIENT; + } + + } + if (((HitTestValues)lRet) != HitTestValues.HTNOWHERE) { callDwp = false; From 1d12a4c044f95d8419eff874040e4717a0d61538 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 15:39:46 -0300 Subject: [PATCH 092/354] working win32 non-client area hit testing. --- src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs index bc13fb83e90..dedef2ded3c 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs @@ -138,8 +138,16 @@ protected virtual unsafe IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr if (((HitTestValues)lRet) == HitTestValues.HTCAPTION) { var position = PointToClient(PointFromLParam(lParam)); - - var visual = (_owner as Window).Renderer.HitTestFirst(position, _owner as Window, null); + + var visual = (_owner as Window).Renderer.HitTestFirst(position, _owner as Window, x => + { + if(x is IInputElement ie && !ie.IsHitTestVisible) + { + return false; + } + + return true; + }); if(visual != null) { From 1168dd186d5d5bd0e470994c06ff20de21c31bc0 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 16:54:20 -0300 Subject: [PATCH 093/354] add client area extending api to window. --- src/Avalonia.Controls/Platform/IWindowImpl.cs | 6 ++ src/Avalonia.Controls/Window.cs | 62 +++++++++++++++ .../Remote/PreviewerWindowImpl.cs | 6 ++ src/Avalonia.DesignerSupport/Remote/Stubs.cs | 6 ++ src/Avalonia.Native/WindowImpl.cs | 6 ++ src/Avalonia.X11/X11Window.cs | 6 ++ .../Avalonia.Win32/WindowImpl.WndProc.cs | 77 ++++++++++--------- 7 files changed, 134 insertions(+), 35 deletions(-) diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index cf31d303320..9c4808a41cc 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -94,5 +94,11 @@ public interface IWindowImpl : IWindowBaseImpl /// /// void SetMinMaxSize(Size minSize, Size maxSize); + + bool ExtendClientAreaToDecorationsHint { get; set; } + + Action ExtendClientAreaToDecorationsChanged { get; set; } + + Thickness ExtendedMargins { get; } } } diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index ff7cc41e3b2..04b48d7f9f7 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -71,6 +71,8 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot { private readonly List<(Window child, bool isDialog)> _children = new List<(Window, bool)>(); + private bool _isExtendedIntoWindowDecorations; + /// /// Defines the property. /// @@ -87,6 +89,29 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot o => o.HasSystemDecorations, (o, v) => o.HasSystemDecorations = v); + /// + /// Defines the property. + /// + public static readonly StyledProperty ExtendClientAreaToDecorationsHintProperty = + AvaloniaProperty.Register(nameof(ExtendClientAreaToDecorationsHint), false); + + + /// + /// Defines the property. + /// + public static readonly DirectProperty IsExtendedIntoWindowDecorationsProperty = + AvaloniaProperty.RegisterDirect(nameof(IsExtendedIntoWindowDecorations), + o => o.IsExtendedIntoWindowDecorations, + unsetValue: false); + + /// + /// Defines the property. + /// + public static readonly DirectProperty WindowDecorationMarginsProperty = + AvaloniaProperty.RegisterDirect(nameof(WindowDecorationMargins), + o => o.WindowDecorationMargins); + + /// /// Defines the property. /// @@ -164,6 +189,9 @@ static Window() WindowStateProperty.Changed.AddClassHandler( (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.WindowState = (WindowState)e.NewValue; }); + ExtendClientAreaToDecorationsHintProperty.Changed.AddClassHandler( + (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.ExtendClientAreaToDecorationsHint = (bool)e.NewValue; }); + MinWidthProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size((double)e.NewValue, w.MinHeight), new Size(w.MaxWidth, w.MaxHeight))); MinHeightProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size(w.MinWidth, (double)e.NewValue), new Size(w.MaxWidth, w.MaxHeight))); MaxWidthProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size(w.MinWidth, w.MinHeight), new Size((double)e.NewValue, w.MaxHeight))); @@ -189,6 +217,7 @@ public Window(IWindowImpl impl) impl.GotInputWhenDisabled = OnGotInputWhenDisabled; impl.WindowStateChanged = HandleWindowStateChanged; _maxPlatformClientSize = PlatformImpl?.MaxAutoSizeHint ?? default(Size); + impl.ExtendClientAreaToDecorationsChanged = ExtendClientAreaToDecorationsChanged; this.GetObservable(ClientSizeProperty).Skip(1).Subscribe(x => PlatformImpl?.Resize(x)); PlatformImpl?.ShowTaskbarIcon(ShowInTaskbar); @@ -237,6 +266,32 @@ public bool HasSystemDecorations } } + /// + /// Gets or sets if the ClientArea is Extended into the Window Decorations (chrome or border). + /// + public bool ExtendClientAreaToDecorationsHint + { + get { return GetValue(ExtendClientAreaToDecorationsHintProperty); } + set { SetValue(ExtendClientAreaToDecorationsHintProperty, value); } + } + + /// + /// Gets if the ClientArea is Extended into the Window Decorations. + /// + public bool IsExtendedIntoWindowDecorations + { + get => _isExtendedIntoWindowDecorations; + private set => SetAndRaise(IsExtendedIntoWindowDecorationsProperty, ref _isExtendedIntoWindowDecorations, value); + } + + private Thickness _windowDecorationMargins; + + public Thickness WindowDecorationMargins + { + get => _windowDecorationMargins; + private set => SetAndRaise(WindowDecorationMarginsProperty, ref _windowDecorationMargins, value); + } + /// /// Sets the system decorations (title bar, border, etc) /// @@ -435,6 +490,13 @@ protected virtual void HandleWindowStateChanged(WindowState state) } } + protected virtual void ExtendClientAreaToDecorationsChanged(bool isExtended) + { + IsExtendedIntoWindowDecorations = isExtended; + + WindowDecorationMargins = PlatformImpl.ExtendedMargins; + } + /// /// Hides the window but does not close it. /// diff --git a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs index cd64af60e20..441a79531ac 100644 --- a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs +++ b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs @@ -84,6 +84,12 @@ public void SetMinMaxSize(Size minSize, Size maxSize) public IScreenImpl Screen { get; } = new ScreenStub(); public Action GotInputWhenDisabled { get; set; } + + public bool ExtendClientAreaToDecorationsHint { get; set; } + + public Action ExtendClientAreaToDecorationsChanged { get; set; } + + public Thickness ExtendedMargins { get; } = new Thickness(); public void Activate() { diff --git a/src/Avalonia.DesignerSupport/Remote/Stubs.cs b/src/Avalonia.DesignerSupport/Remote/Stubs.cs index b001bc1b767..f9623825759 100644 --- a/src/Avalonia.DesignerSupport/Remote/Stubs.cs +++ b/src/Avalonia.DesignerSupport/Remote/Stubs.cs @@ -39,6 +39,12 @@ class WindowStub : IWindowImpl, IPopupImpl public Action TransparencyLevelChanged { get; set; } + public bool ExtendClientAreaToDecorationsHint { get; set; } + + public Action ExtendClientAreaToDecorationsChanged { get; set; } + + public Thickness ExtendedMargins { get; } = new Thickness(); + public WindowStub(IWindowImpl parent = null) { if (parent != null) diff --git a/src/Avalonia.Native/WindowImpl.cs b/src/Avalonia.Native/WindowImpl.cs index e91445000a4..3495c4b3921 100644 --- a/src/Avalonia.Native/WindowImpl.cs +++ b/src/Avalonia.Native/WindowImpl.cs @@ -98,6 +98,12 @@ public WindowState WindowState public Action WindowStateChanged { get; set; } + public bool ExtendClientAreaToDecorationsHint { get; set; } + + public Action ExtendClientAreaToDecorationsChanged { get; set; } + + public Thickness ExtendedMargins { get; } = new Thickness(); + public void ShowTaskbarIcon(bool value) { // NO OP On OSX diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index 90064cb28de..ac9048adad7 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -311,6 +311,12 @@ public Action TransparencyLevelChanged set => _transparencyHelper.TransparencyLevelChanged = value; } + public bool ExtendClientAreaToDecorationsHint { get; set; } + + public Action ExtendClientAreaToDecorationsChanged { get; set; } + + public Thickness ExtendedMargins { get; } = new Thickness(); + public Action Closed { get; set; } public Action PositionChanged { get; set; } diff --git a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs index dedef2ded3c..3ce34250fa5 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs @@ -14,11 +14,6 @@ namespace Avalonia.Win32 { public partial class WindowImpl { - private int LEFTEXTENDWIDTH = 4; - private int RIGHTEXTENDWIDTH = 4; - private int BOTTOMEXTENDWIDTH = 4; - private int TOPEXTENDWIDTH = 100; - // Hit test the frame for resizing and moving. HitTestValues HitTestNCA(IntPtr hWnd, IntPtr wParam, IntPtr lParam) { @@ -32,28 +27,40 @@ HitTestValues HitTestNCA(IntPtr hWnd, IntPtr wParam, IntPtr lParam) RECT rcFrame = new RECT(); AdjustWindowRectEx(ref rcFrame, (uint)(WindowStyles.WS_OVERLAPPEDWINDOW & ~WindowStyles.WS_CAPTION), false, 0); + RECT border_thickness = new RECT(); + if (GetStyle().HasFlag(WindowStyles.WS_THICKFRAME)) + { + AdjustWindowRectEx(ref border_thickness, (uint)(GetStyle()), false, 0); + border_thickness.left *= -1; + border_thickness.top *= -1; + } + else if (GetStyle().HasFlag(WindowStyles.WS_BORDER)) + { + border_thickness = new RECT { bottom = 1, left = 1, right = 1, top = 1 }; + } + // Determine if the hit test is for resizing. Default middle (1,1). ushort uRow = 1; ushort uCol = 1; bool fOnResizeBorder = false; // Determine if the point is at the top or bottom of the window. - if (ptMouse.Y >= rcWindow.top && ptMouse.Y < rcWindow.top + TOPEXTENDWIDTH) + if (ptMouse.Y >= rcWindow.top && ptMouse.Y < rcWindow.top + border_thickness.top) { fOnResizeBorder = (ptMouse.Y < (rcWindow.top - rcFrame.top)); uRow = 0; } - else if (ptMouse.Y < rcWindow.bottom && ptMouse.Y >= rcWindow.bottom - BOTTOMEXTENDWIDTH) + else if (ptMouse.Y < rcWindow.bottom && ptMouse.Y >= rcWindow.bottom - border_thickness.bottom) { uRow = 2; } // Determine if the point is at the left or right of the window. - if (ptMouse.X >= rcWindow.left && ptMouse.X < rcWindow.left + LEFTEXTENDWIDTH) + if (ptMouse.X >= rcWindow.left && ptMouse.X < rcWindow.left + border_thickness.left) { uCol = 0; // left side } - else if (ptMouse.X < rcWindow.right && ptMouse.X >= rcWindow.right - RIGHTEXTENDWIDTH) + else if (ptMouse.X < rcWindow.right && ptMouse.X >= rcWindow.right - border_thickness.right) { uCol = 2; // right side } @@ -66,8 +73,6 @@ HitTestValues HitTestNCA(IntPtr hWnd, IntPtr wParam, IntPtr lParam) new []{ HitTestValues.HTBOTTOMLEFT, HitTestValues.HTBOTTOM, HitTestValues.HTBOTTOMRIGHT }, }; - System.Diagnostics.Debug.WriteLine(hitTests[uRow][uCol]); - return hitTests[uRow][uCol]; } @@ -84,35 +89,37 @@ protected virtual unsafe IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr { case WindowsMessage.WM_ACTIVATE: { - if (GetStyle().HasFlag(WindowStyles.WS_THICKFRAME)) - { - AdjustWindowRectEx(ref border_thickness, (uint)(GetStyle()), false, 0); - border_thickness.left *= -1; - border_thickness.top *= -1; - } - else if (GetStyle().HasFlag(WindowStyles.WS_BORDER)) - { - border_thickness = new RECT { bottom = 1, left = 1, right = 1, top = 1 }; - } + if (!_isClientAreaExtended) + { + if (GetStyle().HasFlag(WindowStyles.WS_THICKFRAME)) + { + AdjustWindowRectEx(ref border_thickness, (uint)(GetStyle()), false, 0); + border_thickness.left *= -1; + border_thickness.top *= -1; + } + else if (GetStyle().HasFlag(WindowStyles.WS_BORDER)) + { + border_thickness = new RECT { bottom = 1, left = 1, right = 1, top = 1 }; + } - LEFTEXTENDWIDTH = border_thickness.left; - RIGHTEXTENDWIDTH = border_thickness.right; - BOTTOMEXTENDWIDTH = border_thickness.bottom; - TOPEXTENDWIDTH = border_thickness.top; + // Extend the frame into the client area. + margins.cxLeftWidth = border_thickness.left; + margins.cxRightWidth = border_thickness.right; + margins.cyBottomHeight = border_thickness.bottom; + margins.cyTopHeight = border_thickness.top; - // Extend the frame into the client area. - margins.cxLeftWidth = border_thickness.left; - margins.cxRightWidth = border_thickness.right; - margins.cyBottomHeight = border_thickness.bottom; - margins.cyTopHeight = border_thickness.top; + var hr = DwmExtendFrameIntoClientArea(hWnd, ref margins); - var hr = DwmExtendFrameIntoClientArea(hWnd, ref margins); + //if (hr < 0) + { + // Handle the error. + } - //if (hr < 0) - { - // Handle the error. - } + _isClientAreaExtended = true; + _extendedMargins = new Thickness(margins.cxLeftWidth / Scaling, margins.cyTopHeight / Scaling, margins.cxRightWidth / Scaling, margins.cyBottomHeight / Scaling); + ExtendClientAreaToDecorationsChanged?.Invoke(true); + } lRet = IntPtr.Zero; callDwp = true; break; From d2bc5505c5eb8ea51533ffe295c696b9009702ea Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 16:54:42 -0300 Subject: [PATCH 094/354] Add win32 impl for client extending based on property value. --- .../Avalonia.Win32/WindowImpl.WndProc.cs | 54 ++++------------- src/Windows/Avalonia.Win32/WindowImpl.cs | 59 ++++++++++++++++++- 2 files changed, 70 insertions(+), 43 deletions(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs index 3ce34250fa5..e9664d234f8 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs @@ -80,50 +80,20 @@ protected virtual unsafe IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr { IntPtr lRet = IntPtr.Zero; - callDwp = !DwmDefWindowProc(hWnd, msg, wParam, lParam, ref lRet); - - MARGINS margins = new MARGINS { cxLeftWidth = 0, cxRightWidth = 0, cyBottomHeight = 0, cyTopHeight = 100 }; - RECT border_thickness = new RECT(); - + callDwp = !DwmDefWindowProc(hWnd, msg, wParam, lParam, ref lRet); + switch ((WindowsMessage)msg) { - case WindowsMessage.WM_ACTIVATE: - { - if (!_isClientAreaExtended) - { - if (GetStyle().HasFlag(WindowStyles.WS_THICKFRAME)) - { - AdjustWindowRectEx(ref border_thickness, (uint)(GetStyle()), false, 0); - border_thickness.left *= -1; - border_thickness.top *= -1; - } - else if (GetStyle().HasFlag(WindowStyles.WS_BORDER)) - { - border_thickness = new RECT { bottom = 1, left = 1, right = 1, top = 1 }; - } - - // Extend the frame into the client area. - margins.cxLeftWidth = border_thickness.left; - margins.cxRightWidth = border_thickness.right; - margins.cyBottomHeight = border_thickness.bottom; - margins.cyTopHeight = border_thickness.top; - - var hr = DwmExtendFrameIntoClientArea(hWnd, ref margins); - - //if (hr < 0) - { - // Handle the error. - } - - _isClientAreaExtended = true; - _extendedMargins = new Thickness(margins.cxLeftWidth / Scaling, margins.cyTopHeight / Scaling, margins.cxRightWidth / Scaling, margins.cyBottomHeight / Scaling); - ExtendClientAreaToDecorationsChanged?.Invoke(true); - - } - lRet = IntPtr.Zero; - callDwp = true; - break; - } + //case WindowsMessage.WM_ACTIVATE: + // { + // if (!_isClientAreaExtended) + // { + // ExtendClientArea(); + // } + // lRet = IntPtr.Zero; + // callDwp = true; + // break; + // } case WindowsMessage.WM_NCCALCSIZE: { diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 6024dc01dac..6cacd0b6ccb 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -40,6 +40,7 @@ public partial class WindowImpl : IWindowImpl, EglGlPlatformSurface.IEglWindowGl private SavedWindowInfo _savedWindowInfo; private bool _isFullScreenActive; + private bool _isClientAreaExtended; #if USE_MANAGED_DRAG private readonly ManagedWindowResizeDragHelper _managedDrag; @@ -68,6 +69,7 @@ public partial class WindowImpl : IWindowImpl, EglGlPlatformSurface.IEglWindowGl private Size _maxSize; private POINT _maxTrackSize; private WindowImpl _parent; + private bool _extendClientAreaToDecorationsHint; public WindowImpl() { @@ -664,6 +666,43 @@ private void SetFullScreen(bool fullscreen) TaskBarList.MarkFullscreen(_hwnd, fullscreen); } + private void ExtendClientArea () + { + if (!_isClientAreaExtended) + { + RECT border_thickness = new RECT(); + MARGINS margins = new MARGINS(); + + if (GetStyle().HasFlag(WindowStyles.WS_THICKFRAME)) + { + AdjustWindowRectEx(ref border_thickness, (uint)(GetStyle()), false, 0); + border_thickness.left *= -1; + border_thickness.top *= -1; + } + else if (GetStyle().HasFlag(WindowStyles.WS_BORDER)) + { + border_thickness = new RECT { bottom = 1, left = 1, right = 1, top = 1 }; + } + + // Extend the frame into the client area. + margins.cxLeftWidth = border_thickness.left; + margins.cxRightWidth = border_thickness.right; + margins.cyBottomHeight = border_thickness.bottom; + margins.cyTopHeight = border_thickness.top; + + var hr = DwmExtendFrameIntoClientArea(_hwnd, ref margins); + + //if (hr < 0) + { + // Handle the error. + } + + _isClientAreaExtended = true; + _extendedMargins = new Thickness(margins.cxLeftWidth / Scaling, margins.cyTopHeight / Scaling, margins.cxRightWidth / Scaling, margins.cyBottomHeight / Scaling); + ExtendClientAreaToDecorationsChanged?.Invoke(true); + } + } + private void ShowWindow(WindowState state) { ShowWindowCommand command; @@ -904,7 +943,25 @@ PixelSize EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Size } } - IntPtr EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Handle => Handle.Handle; + IntPtr EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Handle => Handle.Handle; + + public bool ExtendClientAreaToDecorationsHint + { + get => _extendClientAreaToDecorationsHint; + set + { + _extendClientAreaToDecorationsHint = true; + + ExtendClientArea(); + // TODO Trigger transition. + } + } + + public Action ExtendClientAreaToDecorationsChanged { get; set; } + + private Thickness _extendedMargins; + + public Thickness ExtendedMargins => _extendedMargins; private struct SavedWindowInfo { From d43108d442e09b61c53b173d2537428f503da8ee Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 16:55:32 -0300 Subject: [PATCH 095/354] only report extended if we were able to. --- src/Windows/Avalonia.Win32/WindowImpl.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 6cacd0b6ccb..af1e8e06ce7 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -692,14 +692,12 @@ private void ExtendClientArea () var hr = DwmExtendFrameIntoClientArea(_hwnd, ref margins); - //if (hr < 0) + if (hr == 0) { - // Handle the error. + _isClientAreaExtended = true; + _extendedMargins = new Thickness(margins.cxLeftWidth / Scaling, margins.cyTopHeight / Scaling, margins.cxRightWidth / Scaling, margins.cyBottomHeight / Scaling); + ExtendClientAreaToDecorationsChanged?.Invoke(true); } - - _isClientAreaExtended = true; - _extendedMargins = new Thickness(margins.cxLeftWidth / Scaling, margins.cyTopHeight / Scaling, margins.cxRightWidth / Scaling, margins.cyBottomHeight / Scaling); - ExtendClientAreaToDecorationsChanged?.Invoke(true); } } From 3a1486be5622a53c8340cd8bcef8a34d34afd9ed Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 17:06:00 -0300 Subject: [PATCH 096/354] check composition is allowed before allowing extended windows. --- src/Windows/Avalonia.Win32/WindowImpl.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index af1e8e06ce7..7474bdd10a5 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -670,6 +670,11 @@ private void ExtendClientArea () { if (!_isClientAreaExtended) { + if(DwmIsCompositionEnabled(out bool compositionEnabled) < 0 || !compositionEnabled) + { + return; + } + RECT border_thickness = new RECT(); MARGINS margins = new MARGINS(); From f7f1ed56a4fcad21f9989e35b02fad0bf83c9e40 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 17:06:30 -0300 Subject: [PATCH 097/354] separate WndProcs --- .../Avalonia.Win32/WindowImpl.AppWndProc.cs | 518 ++++++++++++++ .../WindowImpl.CustomCaptionProc.cs | 117 ++++ .../Avalonia.Win32/WindowImpl.WndProc.cs | 644 +----------------- 3 files changed, 636 insertions(+), 643 deletions(-) create mode 100644 src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs create mode 100644 src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs diff --git a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs new file mode 100644 index 00000000000..b81634dce05 --- /dev/null +++ b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs @@ -0,0 +1,518 @@ +using System; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.InteropServices; +using Avalonia.Controls; +using Avalonia.Input; +using Avalonia.Input.Raw; +using Avalonia.Win32.Input; +using static Avalonia.Win32.Interop.UnmanagedMethods; + +namespace Avalonia.Win32 +{ + public partial class WindowImpl + { + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "Using Win32 naming for consistency.")] + protected virtual unsafe IntPtr AppWndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam) + { + const double wheelDelta = 120.0; + uint timestamp = unchecked((uint)GetMessageTime()); + + RawInputEventArgs e = null; + + switch ((WindowsMessage)msg) + { + case WindowsMessage.WM_ACTIVATE: + { + var wa = (WindowActivate)(ToInt32(wParam) & 0xffff); + + switch (wa) + { + case WindowActivate.WA_ACTIVE: + case WindowActivate.WA_CLICKACTIVE: + { + Activated?.Invoke(); + break; + } + + case WindowActivate.WA_INACTIVE: + { + Deactivated?.Invoke(); + break; + } + } + + return IntPtr.Zero; + } + + case WindowsMessage.WM_NCCALCSIZE: + { + if (ToInt32(wParam) == 1 && !HasFullDecorations || _isClientAreaExtended) + { + return IntPtr.Zero; + } + + break; + } + + case WindowsMessage.WM_CLOSE: + { + bool? preventClosing = Closing?.Invoke(); + if (preventClosing == true) + { + return IntPtr.Zero; + } + + break; + } + + case WindowsMessage.WM_DESTROY: + { + //Window doesn't exist anymore + _hwnd = IntPtr.Zero; + //Remove root reference to this class, so unmanaged delegate can be collected + s_instances.Remove(this); + Closed?.Invoke(); + + _mouseDevice.Dispose(); + _touchDevice?.Dispose(); + //Free other resources + Dispose(); + return IntPtr.Zero; + } + + case WindowsMessage.WM_DPICHANGED: + { + var dpi = ToInt32(wParam) & 0xffff; + var newDisplayRect = Marshal.PtrToStructure(lParam); + _scaling = dpi / 96.0; + ScalingChanged?.Invoke(_scaling); + SetWindowPos(hWnd, + IntPtr.Zero, + newDisplayRect.left, + newDisplayRect.top, + newDisplayRect.right - newDisplayRect.left, + newDisplayRect.bottom - newDisplayRect.top, + SetWindowPosFlags.SWP_NOZORDER | + SetWindowPosFlags.SWP_NOACTIVATE); + return IntPtr.Zero; + } + + case WindowsMessage.WM_KEYDOWN: + case WindowsMessage.WM_SYSKEYDOWN: + { + e = new RawKeyEventArgs( + WindowsKeyboardDevice.Instance, + timestamp, + _owner, + RawKeyEventType.KeyDown, + KeyInterop.KeyFromVirtualKey(ToInt32(wParam), ToInt32(lParam)), + WindowsKeyboardDevice.Instance.Modifiers); + break; + } + + case WindowsMessage.WM_MENUCHAR: + { + // mute the system beep + return (IntPtr)((int)MenuCharParam.MNC_CLOSE << 16); + } + + case WindowsMessage.WM_KEYUP: + case WindowsMessage.WM_SYSKEYUP: + { + e = new RawKeyEventArgs( + WindowsKeyboardDevice.Instance, + timestamp, + _owner, + RawKeyEventType.KeyUp, + KeyInterop.KeyFromVirtualKey(ToInt32(wParam), ToInt32(lParam)), + WindowsKeyboardDevice.Instance.Modifiers); + break; + } + case WindowsMessage.WM_CHAR: + { + // Ignore control chars + if (ToInt32(wParam) >= 32) + { + e = new RawTextInputEventArgs(WindowsKeyboardDevice.Instance, timestamp, _owner, + new string((char)ToInt32(wParam), 1)); + } + + break; + } + + case WindowsMessage.WM_LBUTTONDOWN: + case WindowsMessage.WM_RBUTTONDOWN: + case WindowsMessage.WM_MBUTTONDOWN: + case WindowsMessage.WM_XBUTTONDOWN: + { + if (ShouldIgnoreTouchEmulatedMessage()) + { + break; + } + + e = new RawPointerEventArgs( + _mouseDevice, + timestamp, + _owner, + (WindowsMessage)msg switch + { + WindowsMessage.WM_LBUTTONDOWN => RawPointerEventType.LeftButtonDown, + WindowsMessage.WM_RBUTTONDOWN => RawPointerEventType.RightButtonDown, + WindowsMessage.WM_MBUTTONDOWN => RawPointerEventType.MiddleButtonDown, + WindowsMessage.WM_XBUTTONDOWN => + HighWord(ToInt32(wParam)) == 1 ? + RawPointerEventType.XButton1Down : + RawPointerEventType.XButton2Down + }, + DipFromLParam(lParam), GetMouseModifiers(wParam)); + break; + } + + case WindowsMessage.WM_LBUTTONUP: + case WindowsMessage.WM_RBUTTONUP: + case WindowsMessage.WM_MBUTTONUP: + case WindowsMessage.WM_XBUTTONUP: + { + if (ShouldIgnoreTouchEmulatedMessage()) + { + break; + } + + e = new RawPointerEventArgs( + _mouseDevice, + timestamp, + _owner, + (WindowsMessage)msg switch + { + WindowsMessage.WM_LBUTTONUP => RawPointerEventType.LeftButtonUp, + WindowsMessage.WM_RBUTTONUP => RawPointerEventType.RightButtonUp, + WindowsMessage.WM_MBUTTONUP => RawPointerEventType.MiddleButtonUp, + WindowsMessage.WM_XBUTTONUP => + HighWord(ToInt32(wParam)) == 1 ? + RawPointerEventType.XButton1Up : + RawPointerEventType.XButton2Up, + }, + DipFromLParam(lParam), GetMouseModifiers(wParam)); + break; + } + + case WindowsMessage.WM_MOUSEMOVE: + { + if (ShouldIgnoreTouchEmulatedMessage()) + { + break; + } + + if (!_trackingMouse) + { + var tm = new TRACKMOUSEEVENT + { + cbSize = Marshal.SizeOf(), + dwFlags = 2, + hwndTrack = _hwnd, + dwHoverTime = 0, + }; + + TrackMouseEvent(ref tm); + } + + e = new RawPointerEventArgs( + _mouseDevice, + timestamp, + _owner, + RawPointerEventType.Move, + DipFromLParam(lParam), GetMouseModifiers(wParam)); + + break; + } + + case WindowsMessage.WM_MOUSEWHEEL: + { + e = new RawMouseWheelEventArgs( + _mouseDevice, + timestamp, + _owner, + PointToClient(PointFromLParam(lParam)), + new Vector(0, (ToInt32(wParam) >> 16) / wheelDelta), GetMouseModifiers(wParam)); + break; + } + + case WindowsMessage.WM_MOUSEHWHEEL: + { + e = new RawMouseWheelEventArgs( + _mouseDevice, + timestamp, + _owner, + PointToClient(PointFromLParam(lParam)), + new Vector(-(ToInt32(wParam) >> 16) / wheelDelta, 0), GetMouseModifiers(wParam)); + break; + } + + case WindowsMessage.WM_MOUSELEAVE: + { + _trackingMouse = false; + e = new RawPointerEventArgs( + _mouseDevice, + timestamp, + _owner, + RawPointerEventType.LeaveWindow, + new Point(-1, -1), WindowsKeyboardDevice.Instance.Modifiers); + break; + } + + case WindowsMessage.WM_NCLBUTTONDOWN: + case WindowsMessage.WM_NCRBUTTONDOWN: + case WindowsMessage.WM_NCMBUTTONDOWN: + case WindowsMessage.WM_NCXBUTTONDOWN: + { + e = new RawPointerEventArgs( + _mouseDevice, + timestamp, + _owner, + (WindowsMessage)msg switch + { + WindowsMessage.WM_NCLBUTTONDOWN => RawPointerEventType + .NonClientLeftButtonDown, + WindowsMessage.WM_NCRBUTTONDOWN => RawPointerEventType.RightButtonDown, + WindowsMessage.WM_NCMBUTTONDOWN => RawPointerEventType.MiddleButtonDown, + WindowsMessage.WM_NCXBUTTONDOWN => + HighWord(ToInt32(wParam)) == 1 ? + RawPointerEventType.XButton1Down : + RawPointerEventType.XButton2Down, + }, + PointToClient(PointFromLParam(lParam)), GetMouseModifiers(wParam)); + break; + } + case WindowsMessage.WM_TOUCH: + { + var touchInputCount = wParam.ToInt32(); + + var pTouchInputs = stackalloc TOUCHINPUT[touchInputCount]; + var touchInputs = new Span(pTouchInputs, touchInputCount); + + if (GetTouchInputInfo(lParam, (uint)touchInputCount, pTouchInputs, Marshal.SizeOf())) + { + foreach (var touchInput in touchInputs) + { + Input?.Invoke(new RawTouchEventArgs(_touchDevice, touchInput.Time, + _owner, + touchInput.Flags.HasFlagCustom(TouchInputFlags.TOUCHEVENTF_UP) ? + RawPointerEventType.TouchEnd : + touchInput.Flags.HasFlagCustom(TouchInputFlags.TOUCHEVENTF_DOWN) ? + RawPointerEventType.TouchBegin : + RawPointerEventType.TouchUpdate, + PointToClient(new PixelPoint(touchInput.X / 100, touchInput.Y / 100)), + WindowsKeyboardDevice.Instance.Modifiers, + touchInput.Id)); + } + + CloseTouchInputHandle(lParam); + return IntPtr.Zero; + } + + break; + } + case WindowsMessage.WM_NCPAINT: + { + if (!HasFullDecorations) + { + return IntPtr.Zero; + } + + break; + } + + case WindowsMessage.WM_NCACTIVATE: + { + if (!HasFullDecorations) + { + return new IntPtr(1); + } + + break; + } + + case WindowsMessage.WM_PAINT: + { + using (_rendererLock.Lock()) + { + if (BeginPaint(_hwnd, out PAINTSTRUCT ps) != IntPtr.Zero) + { + var f = Scaling; + var r = ps.rcPaint; + Paint?.Invoke(new Rect(r.left / f, r.top / f, (r.right - r.left) / f, + (r.bottom - r.top) / f)); + EndPaint(_hwnd, ref ps); + } + } + + return IntPtr.Zero; + } + + case WindowsMessage.WM_SIZE: + { + using (_rendererLock.Lock()) + { + // Do nothing here, just block until the pending frame render is completed on the render thread + } + + var size = (SizeCommand)wParam; + + if (Resized != null && + (size == SizeCommand.Restored || + size == SizeCommand.Maximized)) + { + var clientSize = new Size(ToInt32(lParam) & 0xffff, ToInt32(lParam) >> 16); + Resized(clientSize / Scaling); + } + + var windowState = size == SizeCommand.Maximized ? + WindowState.Maximized : + (size == SizeCommand.Minimized ? WindowState.Minimized : WindowState.Normal); + + if (windowState != _lastWindowState) + { + _lastWindowState = windowState; + WindowStateChanged?.Invoke(windowState); + } + + return IntPtr.Zero; + } + + case WindowsMessage.WM_MOVE: + { + PositionChanged?.Invoke(new PixelPoint((short)(ToInt32(lParam) & 0xffff), + (short)(ToInt32(lParam) >> 16))); + return IntPtr.Zero; + } + + case WindowsMessage.WM_GETMINMAXINFO: + { + MINMAXINFO mmi = Marshal.PtrToStructure(lParam); + + if (_minSize.Width > 0) + { + mmi.ptMinTrackSize.X = + (int)((_minSize.Width * Scaling) + BorderThickness.Left + BorderThickness.Right); + } + + if (_minSize.Height > 0) + { + mmi.ptMinTrackSize.Y = + (int)((_minSize.Height * Scaling) + BorderThickness.Top + BorderThickness.Bottom); + } + + if (!double.IsInfinity(_maxSize.Width) && _maxSize.Width > 0) + { + mmi.ptMaxTrackSize.X = + (int)((_maxSize.Width * Scaling) + BorderThickness.Left + BorderThickness.Right); + } + + if (!double.IsInfinity(_maxSize.Height) && _maxSize.Height > 0) + { + mmi.ptMaxTrackSize.Y = + (int)((_maxSize.Height * Scaling) + BorderThickness.Top + BorderThickness.Bottom); + } + + Marshal.StructureToPtr(mmi, lParam, true); + return IntPtr.Zero; + } + + case WindowsMessage.WM_DISPLAYCHANGE: + { + (Screen as ScreenImpl)?.InvalidateScreensCache(); + return IntPtr.Zero; + } + } + +#if USE_MANAGED_DRAG + if (_managedDrag.PreprocessInputEvent(ref e)) + return UnmanagedMethods.DefWindowProc(hWnd, msg, wParam, lParam); +#endif + + if (e != null && Input != null) + { + Input(e); + + if (e.Handled) + { + return IntPtr.Zero; + } + } + + using (_rendererLock.Lock()) + { + return DefWindowProc(hWnd, msg, wParam, lParam); + } + } + + private static int ToInt32(IntPtr ptr) + { + if (IntPtr.Size == 4) + return ptr.ToInt32(); + + return (int)(ptr.ToInt64() & 0xffffffff); + } + + private static int HighWord(int param) => param >> 16; + + private Point DipFromLParam(IntPtr lParam) + { + return new Point((short)(ToInt32(lParam) & 0xffff), (short)(ToInt32(lParam) >> 16)) / Scaling; + } + + private PixelPoint PointFromLParam(IntPtr lParam) + { + return new PixelPoint((short)(ToInt32(lParam) & 0xffff), (short)(ToInt32(lParam) >> 16)); + } + + private bool ShouldIgnoreTouchEmulatedMessage() + { + if (!_multitouch) + { + return false; + } + + // MI_WP_SIGNATURE + // https://docs.microsoft.com/en-us/windows/win32/tablet/system-events-and-mouse-messages + const long marker = 0xFF515700L; + + var info = GetMessageExtraInfo().ToInt64(); + return (info & marker) == marker; + } + + private static RawInputModifiers GetMouseModifiers(IntPtr wParam) + { + var keys = (ModifierKeys)ToInt32(wParam); + var modifiers = WindowsKeyboardDevice.Instance.Modifiers; + + if (keys.HasFlagCustom(ModifierKeys.MK_LBUTTON)) + { + modifiers |= RawInputModifiers.LeftMouseButton; + } + + if (keys.HasFlagCustom(ModifierKeys.MK_RBUTTON)) + { + modifiers |= RawInputModifiers.RightMouseButton; + } + + if (keys.HasFlagCustom(ModifierKeys.MK_MBUTTON)) + { + modifiers |= RawInputModifiers.MiddleMouseButton; + } + + if (keys.HasFlagCustom(ModifierKeys.MK_XBUTTON1)) + { + modifiers |= RawInputModifiers.XButton1MouseButton; + } + + if (keys.HasFlagCustom(ModifierKeys.MK_XBUTTON2)) + { + modifiers |= RawInputModifiers.XButton2MouseButton; + } + + return modifiers; + } + } +} diff --git a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs new file mode 100644 index 00000000000..faf83c6c9ba --- /dev/null +++ b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Avalonia.Win32 +{ + public partial class WindowImpl + { + // Hit test the frame for resizing and moving. + HitTestValues HitTestNCA(IntPtr hWnd, IntPtr wParam, IntPtr lParam) + { + // Get the point coordinates for the hit test. + var ptMouse = PointFromLParam(lParam); + + // Get the window rectangle. + GetWindowRect(hWnd, out var rcWindow); + + // Get the frame rectangle, adjusted for the style without a caption. + RECT rcFrame = new RECT(); + AdjustWindowRectEx(ref rcFrame, (uint)(WindowStyles.WS_OVERLAPPEDWINDOW & ~WindowStyles.WS_CAPTION), false, 0); + + RECT border_thickness = new RECT(); + if (GetStyle().HasFlag(WindowStyles.WS_THICKFRAME)) + { + AdjustWindowRectEx(ref border_thickness, (uint)(GetStyle()), false, 0); + border_thickness.left *= -1; + border_thickness.top *= -1; + } + else if (GetStyle().HasFlag(WindowStyles.WS_BORDER)) + { + border_thickness = new RECT { bottom = 1, left = 1, right = 1, top = 1 }; + } + + // Determine if the hit test is for resizing. Default middle (1,1). + ushort uRow = 1; + ushort uCol = 1; + bool fOnResizeBorder = false; + + // Determine if the point is at the top or bottom of the window. + if (ptMouse.Y >= rcWindow.top && ptMouse.Y < rcWindow.top + border_thickness.top) + { + fOnResizeBorder = (ptMouse.Y < (rcWindow.top - rcFrame.top)); + uRow = 0; + } + else if (ptMouse.Y < rcWindow.bottom && ptMouse.Y >= rcWindow.bottom - border_thickness.bottom) + { + uRow = 2; + } + + // Determine if the point is at the left or right of the window. + if (ptMouse.X >= rcWindow.left && ptMouse.X < rcWindow.left + border_thickness.left) + { + uCol = 0; // left side + } + else if (ptMouse.X < rcWindow.right && ptMouse.X >= rcWindow.right - border_thickness.right) + { + uCol = 2; // right side + } + + // Hit test (HTTOPLEFT, ... HTBOTTOMRIGHT) + HitTestValues[][] hitTests = new[] + { + new []{ HitTestValues.HTTOPLEFT, fOnResizeBorder ? HitTestValues.HTTOP : HitTestValues.HTCAPTION, HitTestValues.HTTOPRIGHT }, + new []{ HitTestValues.HTLEFT, HitTestValues.HTNOWHERE, HitTestValues.HTRIGHT }, + new []{ HitTestValues.HTBOTTOMLEFT, HitTestValues.HTBOTTOM, HitTestValues.HTBOTTOMRIGHT }, + }; + + return hitTests[uRow][uCol]; + } + + protected virtual IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam, ref bool callDwp) + { + IntPtr lRet = IntPtr.Zero; + + callDwp = !DwmDefWindowProc(hWnd, msg, wParam, lParam, ref lRet); + + switch ((WindowsMessage)msg) + { + case WindowsMessage.WM_NCHITTEST: + if (lRet == IntPtr.Zero) + { + lRet = (IntPtr)HitTestNCA(hWnd, wParam, lParam); + + uint timestamp = unchecked((uint)GetMessageTime()); + + if (((HitTestValues)lRet) == HitTestValues.HTCAPTION) + { + var position = PointToClient(PointFromLParam(lParam)); + + var visual = (_owner as Window).Renderer.HitTestFirst(position, _owner as Window, x => + { + if (x is IInputElement ie && !ie.IsHitTestVisible) + { + return false; + } + + return true; + }); + + if (visual != null) + { + lRet = (IntPtr)HitTestValues.HTCLIENT; + } + } + + if (((HitTestValues)lRet) != HitTestValues.HTNOWHERE) + { + callDwp = false; + } + } + break; + } + + return lRet; + } + } +} diff --git a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs index e9664d234f8..bb6ab180cf9 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.WndProc.cs @@ -12,139 +12,6 @@ namespace Avalonia.Win32 { - public partial class WindowImpl - { - // Hit test the frame for resizing and moving. - HitTestValues HitTestNCA(IntPtr hWnd, IntPtr wParam, IntPtr lParam) - { - // Get the point coordinates for the hit test. - var ptMouse = PointFromLParam(lParam); - - // Get the window rectangle. - GetWindowRect(hWnd, out var rcWindow); - - // Get the frame rectangle, adjusted for the style without a caption. - RECT rcFrame = new RECT(); - AdjustWindowRectEx(ref rcFrame, (uint)(WindowStyles.WS_OVERLAPPEDWINDOW & ~WindowStyles.WS_CAPTION), false, 0); - - RECT border_thickness = new RECT(); - if (GetStyle().HasFlag(WindowStyles.WS_THICKFRAME)) - { - AdjustWindowRectEx(ref border_thickness, (uint)(GetStyle()), false, 0); - border_thickness.left *= -1; - border_thickness.top *= -1; - } - else if (GetStyle().HasFlag(WindowStyles.WS_BORDER)) - { - border_thickness = new RECT { bottom = 1, left = 1, right = 1, top = 1 }; - } - - // Determine if the hit test is for resizing. Default middle (1,1). - ushort uRow = 1; - ushort uCol = 1; - bool fOnResizeBorder = false; - - // Determine if the point is at the top or bottom of the window. - if (ptMouse.Y >= rcWindow.top && ptMouse.Y < rcWindow.top + border_thickness.top) - { - fOnResizeBorder = (ptMouse.Y < (rcWindow.top - rcFrame.top)); - uRow = 0; - } - else if (ptMouse.Y < rcWindow.bottom && ptMouse.Y >= rcWindow.bottom - border_thickness.bottom) - { - uRow = 2; - } - - // Determine if the point is at the left or right of the window. - if (ptMouse.X >= rcWindow.left && ptMouse.X < rcWindow.left + border_thickness.left) - { - uCol = 0; // left side - } - else if (ptMouse.X < rcWindow.right && ptMouse.X >= rcWindow.right - border_thickness.right) - { - uCol = 2; // right side - } - - // Hit test (HTTOPLEFT, ... HTBOTTOMRIGHT) - HitTestValues[][] hitTests = new[] - { - new []{ HitTestValues.HTTOPLEFT, fOnResizeBorder ? HitTestValues.HTTOP : HitTestValues.HTCAPTION, HitTestValues.HTTOPRIGHT }, - new []{ HitTestValues.HTLEFT, HitTestValues.HTNOWHERE, HitTestValues.HTRIGHT }, - new []{ HitTestValues.HTBOTTOMLEFT, HitTestValues.HTBOTTOM, HitTestValues.HTBOTTOMRIGHT }, - }; - - return hitTests[uRow][uCol]; - } - - protected virtual unsafe IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam, ref bool callDwp) - { - IntPtr lRet = IntPtr.Zero; - - callDwp = !DwmDefWindowProc(hWnd, msg, wParam, lParam, ref lRet); - - switch ((WindowsMessage)msg) - { - //case WindowsMessage.WM_ACTIVATE: - // { - // if (!_isClientAreaExtended) - // { - // ExtendClientArea(); - // } - // lRet = IntPtr.Zero; - // callDwp = true; - // break; - // } - - case WindowsMessage.WM_NCCALCSIZE: - { - if (ToInt32(wParam) == 1) - { - lRet = IntPtr.Zero; - callDwp = false; - } - break; - } - - case WindowsMessage.WM_NCHITTEST: - if (lRet == IntPtr.Zero) - { - lRet = (IntPtr)HitTestNCA(hWnd, wParam, lParam); - - uint timestamp = unchecked((uint)GetMessageTime()); - - if (((HitTestValues)lRet) == HitTestValues.HTCAPTION) - { - var position = PointToClient(PointFromLParam(lParam)); - - var visual = (_owner as Window).Renderer.HitTestFirst(position, _owner as Window, x => - { - if(x is IInputElement ie && !ie.IsHitTestVisible) - { - return false; - } - - return true; - }); - - if(visual != null) - { - lRet = (IntPtr)HitTestValues.HTCLIENT; - } - - } - - if (((HitTestValues)lRet) != HitTestValues.HTNOWHERE) - { - callDwp = false; - } - } - break; - } - - return lRet; - } - } - public partial class WindowImpl { protected virtual unsafe IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam) @@ -152,7 +19,7 @@ protected virtual unsafe IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, In IntPtr lRet = IntPtr.Zero; bool callDwp = true; - if (DwmIsCompositionEnabled(out bool enabled) == 0) + if (_isClientAreaExtended) { lRet = CustomCaptionProc(hWnd, msg, wParam, lParam, ref callDwp); } @@ -165,513 +32,4 @@ protected virtual unsafe IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, In return lRet; } } - - public partial class WindowImpl - { - [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1305:FieldNamesMustNotUseHungarianNotation", - Justification = "Using Win32 naming for consistency.")] - protected virtual unsafe IntPtr AppWndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam) - { - const double wheelDelta = 120.0; - uint timestamp = unchecked((uint)GetMessageTime()); - - RawInputEventArgs e = null; - - switch ((WindowsMessage)msg) - { - case WindowsMessage.WM_ACTIVATE: - { - var wa = (WindowActivate)(ToInt32(wParam) & 0xffff); - - switch (wa) - { - case WindowActivate.WA_ACTIVE: - case WindowActivate.WA_CLICKACTIVE: - { - Activated?.Invoke(); - break; - } - - case WindowActivate.WA_INACTIVE: - { - Deactivated?.Invoke(); - break; - } - } - - return IntPtr.Zero; - } - - case WindowsMessage.WM_NCCALCSIZE: - { - if (ToInt32(wParam) == 1 && !HasFullDecorations) - { - return IntPtr.Zero; - } - - break; - } - - case WindowsMessage.WM_CLOSE: - { - bool? preventClosing = Closing?.Invoke(); - if (preventClosing == true) - { - return IntPtr.Zero; - } - - break; - } - - case WindowsMessage.WM_DESTROY: - { - //Window doesn't exist anymore - _hwnd = IntPtr.Zero; - //Remove root reference to this class, so unmanaged delegate can be collected - s_instances.Remove(this); - Closed?.Invoke(); - - _mouseDevice.Dispose(); - _touchDevice?.Dispose(); - //Free other resources - Dispose(); - return IntPtr.Zero; - } - - case WindowsMessage.WM_DPICHANGED: - { - var dpi = ToInt32(wParam) & 0xffff; - var newDisplayRect = Marshal.PtrToStructure(lParam); - _scaling = dpi / 96.0; - ScalingChanged?.Invoke(_scaling); - SetWindowPos(hWnd, - IntPtr.Zero, - newDisplayRect.left, - newDisplayRect.top, - newDisplayRect.right - newDisplayRect.left, - newDisplayRect.bottom - newDisplayRect.top, - SetWindowPosFlags.SWP_NOZORDER | - SetWindowPosFlags.SWP_NOACTIVATE); - return IntPtr.Zero; - } - - case WindowsMessage.WM_KEYDOWN: - case WindowsMessage.WM_SYSKEYDOWN: - { - e = new RawKeyEventArgs( - WindowsKeyboardDevice.Instance, - timestamp, - _owner, - RawKeyEventType.KeyDown, - KeyInterop.KeyFromVirtualKey(ToInt32(wParam), ToInt32(lParam)), - WindowsKeyboardDevice.Instance.Modifiers); - break; - } - - case WindowsMessage.WM_MENUCHAR: - { - // mute the system beep - return (IntPtr)((int)MenuCharParam.MNC_CLOSE << 16); - } - - case WindowsMessage.WM_KEYUP: - case WindowsMessage.WM_SYSKEYUP: - { - e = new RawKeyEventArgs( - WindowsKeyboardDevice.Instance, - timestamp, - _owner, - RawKeyEventType.KeyUp, - KeyInterop.KeyFromVirtualKey(ToInt32(wParam), ToInt32(lParam)), - WindowsKeyboardDevice.Instance.Modifiers); - break; - } - case WindowsMessage.WM_CHAR: - { - // Ignore control chars - if (ToInt32(wParam) >= 32) - { - e = new RawTextInputEventArgs(WindowsKeyboardDevice.Instance, timestamp, _owner, - new string((char)ToInt32(wParam), 1)); - } - - break; - } - - case WindowsMessage.WM_LBUTTONDOWN: - case WindowsMessage.WM_RBUTTONDOWN: - case WindowsMessage.WM_MBUTTONDOWN: - case WindowsMessage.WM_XBUTTONDOWN: - { - if (ShouldIgnoreTouchEmulatedMessage()) - { - break; - } - - e = new RawPointerEventArgs( - _mouseDevice, - timestamp, - _owner, - (WindowsMessage)msg switch - { - WindowsMessage.WM_LBUTTONDOWN => RawPointerEventType.LeftButtonDown, - WindowsMessage.WM_RBUTTONDOWN => RawPointerEventType.RightButtonDown, - WindowsMessage.WM_MBUTTONDOWN => RawPointerEventType.MiddleButtonDown, - WindowsMessage.WM_XBUTTONDOWN => - HighWord(ToInt32(wParam)) == 1 ? - RawPointerEventType.XButton1Down : - RawPointerEventType.XButton2Down - }, - DipFromLParam(lParam), GetMouseModifiers(wParam)); - break; - } - - case WindowsMessage.WM_LBUTTONUP: - case WindowsMessage.WM_RBUTTONUP: - case WindowsMessage.WM_MBUTTONUP: - case WindowsMessage.WM_XBUTTONUP: - { - if (ShouldIgnoreTouchEmulatedMessage()) - { - break; - } - - e = new RawPointerEventArgs( - _mouseDevice, - timestamp, - _owner, - (WindowsMessage)msg switch - { - WindowsMessage.WM_LBUTTONUP => RawPointerEventType.LeftButtonUp, - WindowsMessage.WM_RBUTTONUP => RawPointerEventType.RightButtonUp, - WindowsMessage.WM_MBUTTONUP => RawPointerEventType.MiddleButtonUp, - WindowsMessage.WM_XBUTTONUP => - HighWord(ToInt32(wParam)) == 1 ? - RawPointerEventType.XButton1Up : - RawPointerEventType.XButton2Up, - }, - DipFromLParam(lParam), GetMouseModifiers(wParam)); - break; - } - - case WindowsMessage.WM_MOUSEMOVE: - { - if (ShouldIgnoreTouchEmulatedMessage()) - { - break; - } - - if (!_trackingMouse) - { - var tm = new TRACKMOUSEEVENT - { - cbSize = Marshal.SizeOf(), - dwFlags = 2, - hwndTrack = _hwnd, - dwHoverTime = 0, - }; - - TrackMouseEvent(ref tm); - } - - e = new RawPointerEventArgs( - _mouseDevice, - timestamp, - _owner, - RawPointerEventType.Move, - DipFromLParam(lParam), GetMouseModifiers(wParam)); - - break; - } - - case WindowsMessage.WM_MOUSEWHEEL: - { - e = new RawMouseWheelEventArgs( - _mouseDevice, - timestamp, - _owner, - PointToClient(PointFromLParam(lParam)), - new Vector(0, (ToInt32(wParam) >> 16) / wheelDelta), GetMouseModifiers(wParam)); - break; - } - - case WindowsMessage.WM_MOUSEHWHEEL: - { - e = new RawMouseWheelEventArgs( - _mouseDevice, - timestamp, - _owner, - PointToClient(PointFromLParam(lParam)), - new Vector(-(ToInt32(wParam) >> 16) / wheelDelta, 0), GetMouseModifiers(wParam)); - break; - } - - case WindowsMessage.WM_MOUSELEAVE: - { - _trackingMouse = false; - e = new RawPointerEventArgs( - _mouseDevice, - timestamp, - _owner, - RawPointerEventType.LeaveWindow, - new Point(-1, -1), WindowsKeyboardDevice.Instance.Modifiers); - break; - } - - case WindowsMessage.WM_NCLBUTTONDOWN: - case WindowsMessage.WM_NCRBUTTONDOWN: - case WindowsMessage.WM_NCMBUTTONDOWN: - case WindowsMessage.WM_NCXBUTTONDOWN: - { - e = new RawPointerEventArgs( - _mouseDevice, - timestamp, - _owner, - (WindowsMessage)msg switch - { - WindowsMessage.WM_NCLBUTTONDOWN => RawPointerEventType - .NonClientLeftButtonDown, - WindowsMessage.WM_NCRBUTTONDOWN => RawPointerEventType.RightButtonDown, - WindowsMessage.WM_NCMBUTTONDOWN => RawPointerEventType.MiddleButtonDown, - WindowsMessage.WM_NCXBUTTONDOWN => - HighWord(ToInt32(wParam)) == 1 ? - RawPointerEventType.XButton1Down : - RawPointerEventType.XButton2Down, - }, - PointToClient(PointFromLParam(lParam)), GetMouseModifiers(wParam)); - break; - } - case WindowsMessage.WM_TOUCH: - { - var touchInputCount = wParam.ToInt32(); - - var pTouchInputs = stackalloc TOUCHINPUT[touchInputCount]; - var touchInputs = new Span(pTouchInputs, touchInputCount); - - if (GetTouchInputInfo(lParam, (uint)touchInputCount, pTouchInputs, Marshal.SizeOf())) - { - foreach (var touchInput in touchInputs) - { - Input?.Invoke(new RawTouchEventArgs(_touchDevice, touchInput.Time, - _owner, - touchInput.Flags.HasFlagCustom(TouchInputFlags.TOUCHEVENTF_UP) ? - RawPointerEventType.TouchEnd : - touchInput.Flags.HasFlagCustom(TouchInputFlags.TOUCHEVENTF_DOWN) ? - RawPointerEventType.TouchBegin : - RawPointerEventType.TouchUpdate, - PointToClient(new PixelPoint(touchInput.X / 100, touchInput.Y / 100)), - WindowsKeyboardDevice.Instance.Modifiers, - touchInput.Id)); - } - - CloseTouchInputHandle(lParam); - return IntPtr.Zero; - } - - break; - } - case WindowsMessage.WM_NCPAINT: - { - if (!HasFullDecorations) - { - return IntPtr.Zero; - } - - break; - } - - case WindowsMessage.WM_NCACTIVATE: - { - if (!HasFullDecorations) - { - return new IntPtr(1); - } - - break; - } - - case WindowsMessage.WM_PAINT: - { - using (_rendererLock.Lock()) - { - if (BeginPaint(_hwnd, out PAINTSTRUCT ps) != IntPtr.Zero) - { - var f = Scaling; - var r = ps.rcPaint; - Paint?.Invoke(new Rect(r.left / f, r.top / f, (r.right - r.left) / f, - (r.bottom - r.top) / f)); - EndPaint(_hwnd, ref ps); - } - } - - return IntPtr.Zero; - } - - case WindowsMessage.WM_SIZE: - { - using (_rendererLock.Lock()) - { - // Do nothing here, just block until the pending frame render is completed on the render thread - } - - var size = (SizeCommand)wParam; - - if (Resized != null && - (size == SizeCommand.Restored || - size == SizeCommand.Maximized)) - { - var clientSize = new Size(ToInt32(lParam) & 0xffff, ToInt32(lParam) >> 16); - Resized(clientSize / Scaling); - } - - var windowState = size == SizeCommand.Maximized ? - WindowState.Maximized : - (size == SizeCommand.Minimized ? WindowState.Minimized : WindowState.Normal); - - if (windowState != _lastWindowState) - { - _lastWindowState = windowState; - WindowStateChanged?.Invoke(windowState); - } - - return IntPtr.Zero; - } - - case WindowsMessage.WM_MOVE: - { - PositionChanged?.Invoke(new PixelPoint((short)(ToInt32(lParam) & 0xffff), - (short)(ToInt32(lParam) >> 16))); - return IntPtr.Zero; - } - - case WindowsMessage.WM_GETMINMAXINFO: - { - MINMAXINFO mmi = Marshal.PtrToStructure(lParam); - - _maxTrackSize = mmi.ptMaxTrackSize; - - if (_minSize.Width > 0) - { - mmi.ptMinTrackSize.X = - (int)((_minSize.Width * Scaling) + BorderThickness.Left + BorderThickness.Right); - } - - if (_minSize.Height > 0) - { - mmi.ptMinTrackSize.Y = - (int)((_minSize.Height * Scaling) + BorderThickness.Top + BorderThickness.Bottom); - } - - if (!double.IsInfinity(_maxSize.Width) && _maxSize.Width > 0) - { - mmi.ptMaxTrackSize.X = - (int)((_maxSize.Width * Scaling) + BorderThickness.Left + BorderThickness.Right); - } - - if (!double.IsInfinity(_maxSize.Height) && _maxSize.Height > 0) - { - mmi.ptMaxTrackSize.Y = - (int)((_maxSize.Height * Scaling) + BorderThickness.Top + BorderThickness.Bottom); - } - - Marshal.StructureToPtr(mmi, lParam, true); - return IntPtr.Zero; - } - - case WindowsMessage.WM_DISPLAYCHANGE: - { - (Screen as ScreenImpl)?.InvalidateScreensCache(); - return IntPtr.Zero; - } - } - -#if USE_MANAGED_DRAG - if (_managedDrag.PreprocessInputEvent(ref e)) - return UnmanagedMethods.DefWindowProc(hWnd, msg, wParam, lParam); -#endif - - if (e != null && Input != null) - { - Input(e); - - if (e.Handled) - { - return IntPtr.Zero; - } - } - - using (_rendererLock.Lock()) - { - return DefWindowProc(hWnd, msg, wParam, lParam); - } - } - - private static int ToInt32(IntPtr ptr) - { - if (IntPtr.Size == 4) - return ptr.ToInt32(); - - return (int)(ptr.ToInt64() & 0xffffffff); - } - - private static int HighWord(int param) => param >> 16; - - private Point DipFromLParam(IntPtr lParam) - { - return new Point((short)(ToInt32(lParam) & 0xffff), (short)(ToInt32(lParam) >> 16)) / Scaling; - } - - private PixelPoint PointFromLParam(IntPtr lParam) - { - return new PixelPoint((short)(ToInt32(lParam) & 0xffff), (short)(ToInt32(lParam) >> 16)); - } - - private bool ShouldIgnoreTouchEmulatedMessage() - { - if (!_multitouch) - { - return false; - } - - // MI_WP_SIGNATURE - // https://docs.microsoft.com/en-us/windows/win32/tablet/system-events-and-mouse-messages - const long marker = 0xFF515700L; - - var info = GetMessageExtraInfo().ToInt64(); - return (info & marker) == marker; - } - - private static RawInputModifiers GetMouseModifiers(IntPtr wParam) - { - var keys = (ModifierKeys)ToInt32(wParam); - var modifiers = WindowsKeyboardDevice.Instance.Modifiers; - - if (keys.HasFlagCustom(ModifierKeys.MK_LBUTTON)) - { - modifiers |= RawInputModifiers.LeftMouseButton; - } - - if (keys.HasFlagCustom(ModifierKeys.MK_RBUTTON)) - { - modifiers |= RawInputModifiers.RightMouseButton; - } - - if (keys.HasFlagCustom(ModifierKeys.MK_MBUTTON)) - { - modifiers |= RawInputModifiers.MiddleMouseButton; - } - - if (keys.HasFlagCustom(ModifierKeys.MK_XBUTTON1)) - { - modifiers |= RawInputModifiers.XButton1MouseButton; - } - - if (keys.HasFlagCustom(ModifierKeys.MK_XBUTTON2)) - { - modifiers |= RawInputModifiers.XButton2MouseButton; - } - - return modifiers; - } - } } From b83d85362150a5ef2729dd589b1902d012084a80 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 17:08:28 -0300 Subject: [PATCH 098/354] TransparencyFallback layer needs to obey ExtendedClient margins to not cover titlebar. --- src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml | 2 +- src/Avalonia.Themes.Default/OverlayPopupHost.xaml | 2 +- src/Avalonia.Themes.Default/PopupRoot.xaml | 2 +- src/Avalonia.Themes.Default/Window.xaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml b/src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml index 9ffe51fae8f..f0e884832fc 100644 --- a/src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml +++ b/src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml @@ -4,7 +4,7 @@ - + - + - + - + Date: Wed, 20 May 2020 17:24:27 -0300 Subject: [PATCH 099/354] fix embeddable control root. --- src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml | 2 +- src/Avalonia.Themes.Default/OverlayPopupHost.xaml | 2 +- src/Avalonia.Themes.Default/PopupRoot.xaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml b/src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml index f0e884832fc..9ffe51fae8f 100644 --- a/src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml +++ b/src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml @@ -4,7 +4,7 @@ - + - + - + Date: Wed, 20 May 2020 17:29:07 -0300 Subject: [PATCH 100/354] fix build --- src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs index faf83c6c9ba..6716691872d 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs @@ -1,6 +1,9 @@ using System; using System.Collections.Generic; using System.Text; +using Avalonia.Controls; +using Avalonia.Input; +using static Avalonia.Win32.Interop.UnmanagedMethods; namespace Avalonia.Win32 { From 68e8541f7534a0c5191c1255aaf801472cb219fa Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 May 2020 17:57:21 -0300 Subject: [PATCH 101/354] use thickness as the ExtendClientArea hint. --- src/Avalonia.Controls/Platform/IWindowImpl.cs | 2 +- src/Avalonia.Controls/Window.cs | 10 +++++----- .../Remote/PreviewerWindowImpl.cs | 2 +- src/Avalonia.DesignerSupport/Remote/Stubs.cs | 2 +- src/Avalonia.Native/WindowImpl.cs | 2 +- src/Avalonia.X11/X11Window.cs | 2 +- src/Windows/Avalonia.Win32/WindowImpl.cs | 19 +++++++++---------- 7 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index 9c4808a41cc..604c3a61aac 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -95,7 +95,7 @@ public interface IWindowImpl : IWindowBaseImpl /// void SetMinMaxSize(Size minSize, Size maxSize); - bool ExtendClientAreaToDecorationsHint { get; set; } + Thickness ExtendClientAreaToDecorationsHint { get; set; } Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 04b48d7f9f7..cbb69fbeb7e 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -92,8 +92,8 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot /// /// Defines the property. /// - public static readonly StyledProperty ExtendClientAreaToDecorationsHintProperty = - AvaloniaProperty.Register(nameof(ExtendClientAreaToDecorationsHint), false); + public static readonly StyledProperty ExtendClientAreaToDecorationsHintProperty = + AvaloniaProperty.Register(nameof(ExtendClientAreaToDecorationsHint), default); /// @@ -109,7 +109,7 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot /// public static readonly DirectProperty WindowDecorationMarginsProperty = AvaloniaProperty.RegisterDirect(nameof(WindowDecorationMargins), - o => o.WindowDecorationMargins); + o => o.WindowDecorationMargins); /// @@ -190,7 +190,7 @@ static Window() (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.WindowState = (WindowState)e.NewValue; }); ExtendClientAreaToDecorationsHintProperty.Changed.AddClassHandler( - (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.ExtendClientAreaToDecorationsHint = (bool)e.NewValue; }); + (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.ExtendClientAreaToDecorationsHint = (Thickness)e.NewValue; }); MinWidthProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size((double)e.NewValue, w.MinHeight), new Size(w.MaxWidth, w.MaxHeight))); MinHeightProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size(w.MinWidth, (double)e.NewValue), new Size(w.MaxWidth, w.MaxHeight))); @@ -269,7 +269,7 @@ public bool HasSystemDecorations /// /// Gets or sets if the ClientArea is Extended into the Window Decorations (chrome or border). /// - public bool ExtendClientAreaToDecorationsHint + public Thickness ExtendClientAreaToDecorationsHint { get { return GetValue(ExtendClientAreaToDecorationsHintProperty); } set { SetValue(ExtendClientAreaToDecorationsHintProperty, value); } diff --git a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs index 441a79531ac..26c3bed86de 100644 --- a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs +++ b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs @@ -85,7 +85,7 @@ public void SetMinMaxSize(Size minSize, Size maxSize) public IScreenImpl Screen { get; } = new ScreenStub(); public Action GotInputWhenDisabled { get; set; } - public bool ExtendClientAreaToDecorationsHint { get; set; } + public Thickness ExtendClientAreaToDecorationsHint { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Avalonia.DesignerSupport/Remote/Stubs.cs b/src/Avalonia.DesignerSupport/Remote/Stubs.cs index f9623825759..605e0e45a8a 100644 --- a/src/Avalonia.DesignerSupport/Remote/Stubs.cs +++ b/src/Avalonia.DesignerSupport/Remote/Stubs.cs @@ -39,7 +39,7 @@ class WindowStub : IWindowImpl, IPopupImpl public Action TransparencyLevelChanged { get; set; } - public bool ExtendClientAreaToDecorationsHint { get; set; } + public Thickness ExtendClientAreaToDecorationsHint { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Avalonia.Native/WindowImpl.cs b/src/Avalonia.Native/WindowImpl.cs index 3495c4b3921..2e81a66d1f4 100644 --- a/src/Avalonia.Native/WindowImpl.cs +++ b/src/Avalonia.Native/WindowImpl.cs @@ -98,7 +98,7 @@ public WindowState WindowState public Action WindowStateChanged { get; set; } - public bool ExtendClientAreaToDecorationsHint { get; set; } + public Thickness ExtendClientAreaToDecorationsHint { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index ac9048adad7..4bff5b9b035 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -311,7 +311,7 @@ public Action TransparencyLevelChanged set => _transparencyHelper.TransparencyLevelChanged = value; } - public bool ExtendClientAreaToDecorationsHint { get; set; } + public Thickness ExtendClientAreaToDecorationsHint { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 7474bdd10a5..fe8f175a5e1 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -69,7 +69,7 @@ public partial class WindowImpl : IWindowImpl, EglGlPlatformSurface.IEglWindowGl private Size _maxSize; private POINT _maxTrackSize; private WindowImpl _parent; - private bool _extendClientAreaToDecorationsHint; + private Thickness _extendClientAreaToDecorationsHint; public WindowImpl() { @@ -666,7 +666,7 @@ private void SetFullScreen(bool fullscreen) TaskBarList.MarkFullscreen(_hwnd, fullscreen); } - private void ExtendClientArea () + private void ExtendClientArea (Thickness thickness) { if (!_isClientAreaExtended) { @@ -690,10 +690,10 @@ private void ExtendClientArea () } // Extend the frame into the client area. - margins.cxLeftWidth = border_thickness.left; - margins.cxRightWidth = border_thickness.right; - margins.cyBottomHeight = border_thickness.bottom; - margins.cyTopHeight = border_thickness.top; + margins.cxLeftWidth = thickness.Left == -1 ? border_thickness.left : (int)(thickness.Left * Scaling); + margins.cxRightWidth = thickness.Right == -1 ? border_thickness.right : (int)(thickness.Right * Scaling); + margins.cyBottomHeight = thickness.Bottom == -1 ? border_thickness.bottom : (int)(thickness.Bottom * Scaling); + margins.cyTopHeight = thickness.Top == -1 ? border_thickness.top : (int)(thickness.Top * Scaling); var hr = DwmExtendFrameIntoClientArea(_hwnd, ref margins); @@ -948,15 +948,14 @@ PixelSize EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Size IntPtr EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Handle => Handle.Handle; - public bool ExtendClientAreaToDecorationsHint + public Thickness ExtendClientAreaToDecorationsHint { get => _extendClientAreaToDecorationsHint; set { - _extendClientAreaToDecorationsHint = true; + _extendClientAreaToDecorationsHint = value; - ExtendClientArea(); - // TODO Trigger transition. + ExtendClientArea(value); } } From 29661b45bad93b1b27ce4177e80ecd0d513c3d09 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 09:33:17 -0300 Subject: [PATCH 102/354] add handler for DWM_COMPOSITION_CHANGED. --- src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs index 6716691872d..a55a22c3c39 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs @@ -79,6 +79,10 @@ protected virtual IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr wParam, switch ((WindowsMessage)msg) { + case WindowsMessage.WM_DWMCOMPOSITIONCHANGED: + // TODO handle composition changed. + break; + case WindowsMessage.WM_NCHITTEST: if (lRet == IntPtr.Zero) { From aea6f7bff9f915e5113438c9c53d6b6e47757693 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 09:33:40 -0300 Subject: [PATCH 103/354] Revert "use thickness as the ExtendClientArea hint." This reverts commit 42673554085035e8a8a3435bc623ceb29f72e4db. --- src/Avalonia.Controls/Platform/IWindowImpl.cs | 2 +- src/Avalonia.Controls/Window.cs | 10 +++++----- .../Remote/PreviewerWindowImpl.cs | 2 +- src/Avalonia.DesignerSupport/Remote/Stubs.cs | 2 +- src/Avalonia.Native/WindowImpl.cs | 2 +- src/Avalonia.X11/X11Window.cs | 2 +- src/Windows/Avalonia.Win32/WindowImpl.cs | 19 ++++++++++--------- 7 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index 604c3a61aac..9c4808a41cc 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -95,7 +95,7 @@ public interface IWindowImpl : IWindowBaseImpl /// void SetMinMaxSize(Size minSize, Size maxSize); - Thickness ExtendClientAreaToDecorationsHint { get; set; } + bool ExtendClientAreaToDecorationsHint { get; set; } Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index cbb69fbeb7e..04b48d7f9f7 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -92,8 +92,8 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot /// /// Defines the property. /// - public static readonly StyledProperty ExtendClientAreaToDecorationsHintProperty = - AvaloniaProperty.Register(nameof(ExtendClientAreaToDecorationsHint), default); + public static readonly StyledProperty ExtendClientAreaToDecorationsHintProperty = + AvaloniaProperty.Register(nameof(ExtendClientAreaToDecorationsHint), false); /// @@ -109,7 +109,7 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot /// public static readonly DirectProperty WindowDecorationMarginsProperty = AvaloniaProperty.RegisterDirect(nameof(WindowDecorationMargins), - o => o.WindowDecorationMargins); + o => o.WindowDecorationMargins); /// @@ -190,7 +190,7 @@ static Window() (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.WindowState = (WindowState)e.NewValue; }); ExtendClientAreaToDecorationsHintProperty.Changed.AddClassHandler( - (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.ExtendClientAreaToDecorationsHint = (Thickness)e.NewValue; }); + (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.ExtendClientAreaToDecorationsHint = (bool)e.NewValue; }); MinWidthProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size((double)e.NewValue, w.MinHeight), new Size(w.MaxWidth, w.MaxHeight))); MinHeightProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size(w.MinWidth, (double)e.NewValue), new Size(w.MaxWidth, w.MaxHeight))); @@ -269,7 +269,7 @@ public bool HasSystemDecorations /// /// Gets or sets if the ClientArea is Extended into the Window Decorations (chrome or border). /// - public Thickness ExtendClientAreaToDecorationsHint + public bool ExtendClientAreaToDecorationsHint { get { return GetValue(ExtendClientAreaToDecorationsHintProperty); } set { SetValue(ExtendClientAreaToDecorationsHintProperty, value); } diff --git a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs index 26c3bed86de..441a79531ac 100644 --- a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs +++ b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs @@ -85,7 +85,7 @@ public void SetMinMaxSize(Size minSize, Size maxSize) public IScreenImpl Screen { get; } = new ScreenStub(); public Action GotInputWhenDisabled { get; set; } - public Thickness ExtendClientAreaToDecorationsHint { get; set; } + public bool ExtendClientAreaToDecorationsHint { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Avalonia.DesignerSupport/Remote/Stubs.cs b/src/Avalonia.DesignerSupport/Remote/Stubs.cs index 605e0e45a8a..f9623825759 100644 --- a/src/Avalonia.DesignerSupport/Remote/Stubs.cs +++ b/src/Avalonia.DesignerSupport/Remote/Stubs.cs @@ -39,7 +39,7 @@ class WindowStub : IWindowImpl, IPopupImpl public Action TransparencyLevelChanged { get; set; } - public Thickness ExtendClientAreaToDecorationsHint { get; set; } + public bool ExtendClientAreaToDecorationsHint { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Avalonia.Native/WindowImpl.cs b/src/Avalonia.Native/WindowImpl.cs index 2e81a66d1f4..3495c4b3921 100644 --- a/src/Avalonia.Native/WindowImpl.cs +++ b/src/Avalonia.Native/WindowImpl.cs @@ -98,7 +98,7 @@ public WindowState WindowState public Action WindowStateChanged { get; set; } - public Thickness ExtendClientAreaToDecorationsHint { get; set; } + public bool ExtendClientAreaToDecorationsHint { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index 4bff5b9b035..ac9048adad7 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -311,7 +311,7 @@ public Action TransparencyLevelChanged set => _transparencyHelper.TransparencyLevelChanged = value; } - public Thickness ExtendClientAreaToDecorationsHint { get; set; } + public bool ExtendClientAreaToDecorationsHint { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index fe8f175a5e1..7474bdd10a5 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -69,7 +69,7 @@ public partial class WindowImpl : IWindowImpl, EglGlPlatformSurface.IEglWindowGl private Size _maxSize; private POINT _maxTrackSize; private WindowImpl _parent; - private Thickness _extendClientAreaToDecorationsHint; + private bool _extendClientAreaToDecorationsHint; public WindowImpl() { @@ -666,7 +666,7 @@ private void SetFullScreen(bool fullscreen) TaskBarList.MarkFullscreen(_hwnd, fullscreen); } - private void ExtendClientArea (Thickness thickness) + private void ExtendClientArea () { if (!_isClientAreaExtended) { @@ -690,10 +690,10 @@ private void ExtendClientArea (Thickness thickness) } // Extend the frame into the client area. - margins.cxLeftWidth = thickness.Left == -1 ? border_thickness.left : (int)(thickness.Left * Scaling); - margins.cxRightWidth = thickness.Right == -1 ? border_thickness.right : (int)(thickness.Right * Scaling); - margins.cyBottomHeight = thickness.Bottom == -1 ? border_thickness.bottom : (int)(thickness.Bottom * Scaling); - margins.cyTopHeight = thickness.Top == -1 ? border_thickness.top : (int)(thickness.Top * Scaling); + margins.cxLeftWidth = border_thickness.left; + margins.cxRightWidth = border_thickness.right; + margins.cyBottomHeight = border_thickness.bottom; + margins.cyTopHeight = border_thickness.top; var hr = DwmExtendFrameIntoClientArea(_hwnd, ref margins); @@ -948,14 +948,15 @@ PixelSize EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Size IntPtr EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Handle => Handle.Handle; - public Thickness ExtendClientAreaToDecorationsHint + public bool ExtendClientAreaToDecorationsHint { get => _extendClientAreaToDecorationsHint; set { - _extendClientAreaToDecorationsHint = value; + _extendClientAreaToDecorationsHint = true; - ExtendClientArea(value); + ExtendClientArea(); + // TODO Trigger transition. } } From 37e4e68b9d31f5c016ea4c672f9f7906f0e416fd Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 11:19:20 -0300 Subject: [PATCH 104/354] add hints for further control over chrome. --- .../Platform/ExtendClientAreaChromeHints.cs | 17 +++++ src/Avalonia.Controls/Platform/IWindowImpl.cs | 6 +- src/Avalonia.Controls/Window.cs | 14 +++- .../Remote/PreviewerWindowImpl.cs | 14 +++- src/Avalonia.DesignerSupport/Remote/Stubs.cs | 14 +++- src/Avalonia.Native/WindowImpl.cs | 14 +++- src/Avalonia.X11/X11Window.cs | 14 +++- .../Interop/UnmanagedMethods.cs | 6 ++ src/Windows/Avalonia.Win32/WindowImpl.cs | 74 +++++++++++++++---- 9 files changed, 144 insertions(+), 29 deletions(-) create mode 100644 src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs diff --git a/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs b/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs new file mode 100644 index 00000000000..af33e3093b1 --- /dev/null +++ b/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs @@ -0,0 +1,17 @@ +using System; + +namespace Avalonia.Platform +{ + [Flags] + public enum ExtendClientAreaChromeHints + { + Default = SystemTitleBar | SystemChromeButtons, + NoChrome, + SystemTitleBar = 0x01, + SystemChromeButtons = 0x02, + ManagedChromeButtons = 0x04, + PreferSystemChromeButtons = 0x08, + AdaptiveChromeWithTitleBar = SystemTitleBar | PreferSystemChromeButtons, + AdaptiveChromeWithoutTitleBar = PreferSystemChromeButtons, + } +} diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index 9c4808a41cc..d7bf93a6033 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -95,7 +95,11 @@ public interface IWindowImpl : IWindowBaseImpl /// void SetMinMaxSize(Size minSize, Size maxSize); - bool ExtendClientAreaToDecorationsHint { get; set; } + void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint); + + bool IsClientAreaExtendedToDecorations { get; } + + void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints); Action ExtendClientAreaToDecorationsChanged { get; set; } diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 04b48d7f9f7..85935d3d2a7 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -95,6 +95,9 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot public static readonly StyledProperty ExtendClientAreaToDecorationsHintProperty = AvaloniaProperty.Register(nameof(ExtendClientAreaToDecorationsHint), false); + public static readonly StyledProperty ExtendClientAreaChromeHintsProperty = + AvaloniaProperty.Register(nameof(ExtendClientAreaChromeHints), ExtendClientAreaChromeHints.Default); + /// /// Defines the property. @@ -190,7 +193,10 @@ static Window() (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.WindowState = (WindowState)e.NewValue; }); ExtendClientAreaToDecorationsHintProperty.Changed.AddClassHandler( - (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.ExtendClientAreaToDecorationsHint = (bool)e.NewValue; }); + (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.SetExtendClientAreaToDecorationsHint((bool)e.NewValue); }); + + ExtendClientAreaChromeHintsProperty.Changed.AddClassHandler( + (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.SetExtendClientAreaChromeHints((ExtendClientAreaChromeHints)e.NewValue); }); MinWidthProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size((double)e.NewValue, w.MinHeight), new Size(w.MaxWidth, w.MaxHeight))); MinHeightProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size(w.MinWidth, (double)e.NewValue), new Size(w.MaxWidth, w.MaxHeight))); @@ -275,6 +281,12 @@ public bool ExtendClientAreaToDecorationsHint set { SetValue(ExtendClientAreaToDecorationsHintProperty, value); } } + public ExtendClientAreaChromeHints ExtendClientAreaChromeHints + { + get => GetValue(ExtendClientAreaChromeHintsProperty); + set => SetValue(ExtendClientAreaChromeHintsProperty, value); + } + /// /// Gets if the ClientArea is Extended into the Window Decorations. /// diff --git a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs index 441a79531ac..06c7ac6411d 100644 --- a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs +++ b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs @@ -83,14 +83,14 @@ public void SetMinMaxSize(Size minSize, Size maxSize) } public IScreenImpl Screen { get; } = new ScreenStub(); - public Action GotInputWhenDisabled { get; set; } - - public bool ExtendClientAreaToDecorationsHint { get; set; } + public Action GotInputWhenDisabled { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } public Thickness ExtendedMargins { get; } = new Thickness(); + public bool IsClientAreaExtendedToDecorations { get; } + public void Activate() { } @@ -130,5 +130,13 @@ public void SetParent(IWindowImpl parent) public void SetEnabled(bool enable) { } + + public void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint) + { + } + + public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) + { + } } } diff --git a/src/Avalonia.DesignerSupport/Remote/Stubs.cs b/src/Avalonia.DesignerSupport/Remote/Stubs.cs index f9623825759..6f5a0e60515 100644 --- a/src/Avalonia.DesignerSupport/Remote/Stubs.cs +++ b/src/Avalonia.DesignerSupport/Remote/Stubs.cs @@ -37,9 +37,7 @@ class WindowStub : IWindowImpl, IPopupImpl public WindowState WindowState { get; set; } public Action WindowStateChanged { get; set; } - public Action TransparencyLevelChanged { get; set; } - - public bool ExtendClientAreaToDecorationsHint { get; set; } + public Action TransparencyLevelChanged { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } @@ -146,6 +144,14 @@ public void SetEnabled(bool enable) { } + public void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint) + { + } + + public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) + { + } + public IPopupPositioner PopupPositioner { get; } public Action GotInputWhenDisabled { get; set; } @@ -157,6 +163,8 @@ public void SetWindowManagerAddShadowHint(bool enabled) } public WindowTransparencyLevel TransparencyLevel { get; private set; } + + public bool IsClientAreaExtendedToDecorations { get; } } class ClipboardStub : IClipboard diff --git a/src/Avalonia.Native/WindowImpl.cs b/src/Avalonia.Native/WindowImpl.cs index 3495c4b3921..47c82918030 100644 --- a/src/Avalonia.Native/WindowImpl.cs +++ b/src/Avalonia.Native/WindowImpl.cs @@ -96,14 +96,22 @@ public WindowState WindowState } } - public Action WindowStateChanged { get; set; } - - public bool ExtendClientAreaToDecorationsHint { get; set; } + public Action WindowStateChanged { get; set; } public Action ExtendClientAreaToDecorationsChanged { get; set; } public Thickness ExtendedMargins { get; } = new Thickness(); + public bool IsClientAreaExtendedToDecorations { get; } + + public void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint) + { + } + + public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) + { + } + public void ShowTaskbarIcon(bool value) { // NO OP On OSX diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index ac9048adad7..d64f993299d 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -309,14 +309,14 @@ public Action TransparencyLevelChanged { get => _transparencyHelper.TransparencyLevelChanged; set => _transparencyHelper.TransparencyLevelChanged = value; - } - - public bool ExtendClientAreaToDecorationsHint { get; set; } + } public Action ExtendClientAreaToDecorationsChanged { get; set; } public Thickness ExtendedMargins { get; } = new Thickness(); + public bool IsClientAreaExtendedToDecorations { get; } + public Action Closed { get; set; } public Action PositionChanged { get; set; } @@ -1041,6 +1041,14 @@ public void SetEnabled(bool enable) _disabled = !enable; } + public void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint) + { + } + + public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) + { + } + public Action GotInputWhenDisabled { get; set; } public void SetIcon(IWindowIconImpl icon) diff --git a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs index b66de8e0a8b..6f843324f26 100644 --- a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs +++ b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs @@ -989,6 +989,12 @@ public static IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr handle) } } + [DllImport("user32.dll")] + public static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); + + [DllImport("user32.dll")] + public static extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem, uint uEnable); + [DllImport("user32.dll", SetLastError = true)] public static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl); diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 7474bdd10a5..7c720b56129 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -41,6 +41,7 @@ public partial class WindowImpl : IWindowImpl, EglGlPlatformSurface.IEglWindowGl private SavedWindowInfo _savedWindowInfo; private bool _isFullScreenActive; private bool _isClientAreaExtended; + private Thickness _extendedMargins; #if USE_MANAGED_DRAG private readonly ManagedWindowResizeDragHelper _managedDrag; @@ -666,7 +667,7 @@ private void SetFullScreen(bool fullscreen) TaskBarList.MarkFullscreen(_hwnd, fullscreen); } - private void ExtendClientArea () + private void ExtendClientArea (ExtendClientAreaChromeHints hints) { if (!_isClientAreaExtended) { @@ -683,6 +684,16 @@ private void ExtendClientArea () AdjustWindowRectEx(ref border_thickness, (uint)(GetStyle()), false, 0); border_thickness.left *= -1; border_thickness.top *= -1; + + border_thickness.left = 1; + border_thickness.bottom = 1; + border_thickness.right = 1; + + if (!hints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar)) + { + border_thickness.top = 1; + } + } else if (GetStyle().HasFlag(WindowStyles.WS_BORDER)) { @@ -697,6 +708,19 @@ private void ExtendClientArea () var hr = DwmExtendFrameIntoClientArea(_hwnd, ref margins); + if(!hints.HasFlag(ExtendClientAreaChromeHints.SystemChromeButtons) || + (hints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChromeButtons) && + !hints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar))) + { + var style = GetStyle(); + + style &= ~(WindowStyles.WS_MINIMIZEBOX | WindowStyles.WS_MAXIMIZEBOX | WindowStyles.WS_SYSMENU); + + SetStyle(style); + + DisableCloseButton(_hwnd); + } + if (hr == 0) { _isClientAreaExtended = true; @@ -854,9 +878,10 @@ private void UpdateWindowProperties(WindowProperties newProperties, bool forceCh // Otherwise it will still show in the taskbar. } + WindowStyles style; if ((oldProperties.IsResizable != newProperties.IsResizable) || forceChanges) { - var style = GetStyle(); + style = GetStyle(); if (newProperties.IsResizable) { @@ -877,7 +902,7 @@ private void UpdateWindowProperties(WindowProperties newProperties, bool forceCh if ((oldProperties.Decorations != newProperties.Decorations) || forceChanges) { - var style = GetStyle(); + style = GetStyle(); const WindowStyles fullDecorationFlags = WindowStyles.WS_CAPTION | WindowStyles.WS_SYSMENU; @@ -922,7 +947,26 @@ private void UpdateWindowProperties(WindowProperties newProperties, bool forceCh SetWindowPosFlags.SWP_NOZORDER | SetWindowPosFlags.SWP_NOACTIVATE | SetWindowPosFlags.SWP_FRAMECHANGED); } - } + } + } + + private const int MF_BYCOMMAND = 0x0; + private const int MF_BYPOSITION = 0x400; + private const int MF_REMOVE = 0x1000; + private const int MF_ENABLED = 0x0; + private const int MF_GRAYED = 0x1; + private const int MF_DISABLED = 0x2; + private const int SC_CLOSE = 0xF060; + + void DisableCloseButton(IntPtr hwnd) + { + EnableMenuItem(GetSystemMenu(hwnd, false), SC_CLOSE, + MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); + } + void EnableCloseButton(IntPtr hwnd) + { + EnableMenuItem(GetSystemMenu(hwnd, false), SC_CLOSE, + MF_BYCOMMAND | MF_ENABLED); } #if USE_MANAGED_DRAG @@ -946,23 +990,23 @@ PixelSize EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Size } } - IntPtr EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Handle => Handle.Handle; + IntPtr EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Handle => Handle.Handle; - public bool ExtendClientAreaToDecorationsHint + public void SetExtendClientAreaToDecorationsHint(bool hint) { - get => _extendClientAreaToDecorationsHint; - set - { - _extendClientAreaToDecorationsHint = true; + ExtendClientArea(_extendChromeHints); + } - ExtendClientArea(); - // TODO Trigger transition. - } + private ExtendClientAreaChromeHints _extendChromeHints = ExtendClientAreaChromeHints.Default; + + public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) + { + _extendChromeHints = hints; } - public Action ExtendClientAreaToDecorationsChanged { get; set; } + public bool IsClientAreaExtendedToDecorations => _isClientAreaExtended; - private Thickness _extendedMargins; + public Action ExtendClientAreaToDecorationsChanged { get; set; } public Thickness ExtendedMargins => _extendedMargins; From 73d50254483ef97afa84b875892684d3587d0393 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 13:35:50 -0300 Subject: [PATCH 105/354] Add a readonly offscreen margin, to get the portion of the window that is offscreen. --- src/Avalonia.Controls/Platform/IWindowImpl.cs | 2 ++ src/Avalonia.Controls/Window.cs | 16 ++++++++- .../Remote/PreviewerWindowImpl.cs | 2 ++ src/Avalonia.DesignerSupport/Remote/Stubs.cs | 2 ++ src/Avalonia.Native/WindowImpl.cs | 2 ++ src/Avalonia.X11/X11Window.cs | 2 ++ .../Avalonia.Win32/WindowImpl.AppWndProc.cs | 5 +++ src/Windows/Avalonia.Win32/WindowImpl.cs | 36 ++++++++++++++++++- 8 files changed, 65 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index d7bf93a6033..999f4f4201c 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -104,5 +104,7 @@ public interface IWindowImpl : IWindowBaseImpl Action ExtendClientAreaToDecorationsChanged { get; set; } Thickness ExtendedMargins { get; } + + Thickness OffScreenMargin { get; } } } diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 85935d3d2a7..54e2fbb6297 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -113,7 +113,11 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot public static readonly DirectProperty WindowDecorationMarginsProperty = AvaloniaProperty.RegisterDirect(nameof(WindowDecorationMargins), o => o.WindowDecorationMargins); - + + public static readonly DirectProperty OffScreenMarginProperty = + AvaloniaProperty.RegisterDirect(nameof(OffScreenMargin), + o => o.OffScreenMargin); + /// /// Defines the property. @@ -304,6 +308,14 @@ public Thickness WindowDecorationMargins private set => SetAndRaise(WindowDecorationMarginsProperty, ref _windowDecorationMargins, value); } + private Thickness _offScreenMargin; + + public Thickness OffScreenMargin + { + get => _offScreenMargin; + private set => SetAndRaise(OffScreenMarginProperty, ref _offScreenMargin, value); + } + /// /// Sets the system decorations (title bar, border, etc) /// @@ -507,6 +519,8 @@ protected virtual void ExtendClientAreaToDecorationsChanged(bool isExtended) IsExtendedIntoWindowDecorations = isExtended; WindowDecorationMargins = PlatformImpl.ExtendedMargins; + + OffScreenMargin = PlatformImpl.OffScreenMargin; } /// diff --git a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs index 06c7ac6411d..da7cbf815a7 100644 --- a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs +++ b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs @@ -91,6 +91,8 @@ public void SetMinMaxSize(Size minSize, Size maxSize) public bool IsClientAreaExtendedToDecorations { get; } + public Thickness OffScreenMargin { get; } = new Thickness(); + public void Activate() { } diff --git a/src/Avalonia.DesignerSupport/Remote/Stubs.cs b/src/Avalonia.DesignerSupport/Remote/Stubs.cs index 6f5a0e60515..6859c408ddf 100644 --- a/src/Avalonia.DesignerSupport/Remote/Stubs.cs +++ b/src/Avalonia.DesignerSupport/Remote/Stubs.cs @@ -43,6 +43,8 @@ class WindowStub : IWindowImpl, IPopupImpl public Thickness ExtendedMargins { get; } = new Thickness(); + public Thickness OffScreenMargin { get; } = new Thickness(); + public WindowStub(IWindowImpl parent = null) { if (parent != null) diff --git a/src/Avalonia.Native/WindowImpl.cs b/src/Avalonia.Native/WindowImpl.cs index 47c82918030..cbea3402460 100644 --- a/src/Avalonia.Native/WindowImpl.cs +++ b/src/Avalonia.Native/WindowImpl.cs @@ -102,6 +102,8 @@ public WindowState WindowState public Thickness ExtendedMargins { get; } = new Thickness(); + public Thickness OffScreenMargin { get; } = new Thickness(); + public bool IsClientAreaExtendedToDecorations { get; } public void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint) diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index d64f993299d..086863796c5 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -315,6 +315,8 @@ public Action TransparencyLevelChanged public Thickness ExtendedMargins { get; } = new Thickness(); + public Thickness OffScreenMargin { get; } = new Thickness(); + public bool IsClientAreaExtendedToDecorations { get; } public Action Closed { get; set; } diff --git a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs index b81634dce05..0c2160de2b2 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs @@ -374,6 +374,11 @@ protected virtual unsafe IntPtr AppWndProc(IntPtr hWnd, uint msg, IntPtr wParam, if (windowState != _lastWindowState) { _lastWindowState = windowState; + + UpdateExtendMargins(); + + ExtendClientAreaToDecorationsChanged?.Invoke(true); + WindowStateChanged?.Invoke(windowState); } diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 7c720b56129..fd7084ea29b 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -42,7 +42,8 @@ public partial class WindowImpl : IWindowImpl, EglGlPlatformSurface.IEglWindowGl private bool _isFullScreenActive; private bool _isClientAreaExtended; private Thickness _extendedMargins; - + private Thickness _offScreenMargin; + #if USE_MANAGED_DRAG private readonly ManagedWindowResizeDragHelper _managedDrag; #endif @@ -667,6 +668,37 @@ private void SetFullScreen(bool fullscreen) TaskBarList.MarkFullscreen(_hwnd, fullscreen); } + private MARGINS UpdateExtendMargins() + { + RECT borderThickness = new RECT(); + RECT borderCaptionThickness = new RECT(); + + AdjustWindowRectEx(ref borderCaptionThickness, (uint)(GetStyle()), false, 0); + AdjustWindowRectEx(ref borderThickness, (uint)(GetStyle() & ~WindowStyles.WS_CAPTION), false, 0); + borderThickness.left *= -1; + borderThickness.top *= -1; + borderCaptionThickness.left *= -1; + borderCaptionThickness.top *= -1; + + _extendedMargins = new Thickness(1 / Scaling, borderCaptionThickness.top / Scaling, 1 / Scaling, 1 / Scaling); + + if (WindowState == WindowState.Maximized) + { + _offScreenMargin = new Thickness(borderThickness.left / Scaling, borderThickness.top / Scaling, borderThickness.right / Scaling, borderThickness.bottom / Scaling); + } + else + { + _offScreenMargin = new Thickness(); + } + + MARGINS margins = new MARGINS(); + margins.cxLeftWidth = 1; + margins.cxRightWidth = 1; + margins.cyBottomHeight = 1; + margins.cyTopHeight = borderThickness.top; + return margins; + } + private void ExtendClientArea (ExtendClientAreaChromeHints hints) { if (!_isClientAreaExtended) @@ -1010,6 +1042,8 @@ public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) public Thickness ExtendedMargins => _extendedMargins; + public Thickness OffScreenMargin => _offScreenMargin; + private struct SavedWindowInfo { public WindowStyles Style { get; set; } From bd717d8b5c7f4fb9aff2996ff6c225d5221462b7 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 13:41:57 -0300 Subject: [PATCH 106/354] calculate extend metrics in function. --- .../Avalonia.Win32/WindowImpl.AppWndProc.cs | 2 +- src/Windows/Avalonia.Win32/WindowImpl.cs | 39 ++++--------------- 2 files changed, 9 insertions(+), 32 deletions(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs index 0c2160de2b2..5ffed48f2dc 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs @@ -375,7 +375,7 @@ protected virtual unsafe IntPtr AppWndProc(IntPtr hWnd, uint msg, IntPtr wParam, { _lastWindowState = windowState; - UpdateExtendMargins(); + UpdateExtendMargins(_extendChromeHints); ExtendClientAreaToDecorationsChanged?.Invoke(true); diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index fd7084ea29b..e10ce99bc47 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -668,7 +668,7 @@ private void SetFullScreen(bool fullscreen) TaskBarList.MarkFullscreen(_hwnd, fullscreen); } - private MARGINS UpdateExtendMargins() + private MARGINS UpdateExtendMargins(ExtendClientAreaChromeHints hints) { RECT borderThickness = new RECT(); RECT borderCaptionThickness = new RECT(); @@ -680,6 +680,11 @@ private MARGINS UpdateExtendMargins() borderCaptionThickness.left *= -1; borderCaptionThickness.top *= -1; + if (!hints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar)) + { + borderCaptionThickness.top = 1; + } + _extendedMargins = new Thickness(1 / Scaling, borderCaptionThickness.top / Scaling, 1 / Scaling, 1 / Scaling); if (WindowState == WindowState.Maximized) @@ -695,7 +700,7 @@ private MARGINS UpdateExtendMargins() margins.cxLeftWidth = 1; margins.cxRightWidth = 1; margins.cyBottomHeight = 1; - margins.cyTopHeight = borderThickness.top; + margins.cyTopHeight = borderCaptionThickness.top; return margins; } @@ -708,35 +713,7 @@ private void ExtendClientArea (ExtendClientAreaChromeHints hints) return; } - RECT border_thickness = new RECT(); - MARGINS margins = new MARGINS(); - - if (GetStyle().HasFlag(WindowStyles.WS_THICKFRAME)) - { - AdjustWindowRectEx(ref border_thickness, (uint)(GetStyle()), false, 0); - border_thickness.left *= -1; - border_thickness.top *= -1; - - border_thickness.left = 1; - border_thickness.bottom = 1; - border_thickness.right = 1; - - if (!hints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar)) - { - border_thickness.top = 1; - } - - } - else if (GetStyle().HasFlag(WindowStyles.WS_BORDER)) - { - border_thickness = new RECT { bottom = 1, left = 1, right = 1, top = 1 }; - } - - // Extend the frame into the client area. - margins.cxLeftWidth = border_thickness.left; - margins.cxRightWidth = border_thickness.right; - margins.cyBottomHeight = border_thickness.bottom; - margins.cyTopHeight = border_thickness.top; + var margins = UpdateExtendMargins(hints); var hr = DwmExtendFrameIntoClientArea(_hwnd, ref margins); From 693487313d8dfd3f5c41ca68fa8f631bb9fadb62 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 15:05:28 -0300 Subject: [PATCH 107/354] fix hit testing. --- .../WindowImpl.CustomCaptionProc.cs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs index a55a22c3c39..fee6bb90bf1 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs @@ -1,6 +1,5 @@ using System; -using System.Collections.Generic; -using System.Text; +using System.Diagnostics; using Avalonia.Controls; using Avalonia.Input; using static Avalonia.Win32.Interop.UnmanagedMethods; @@ -34,6 +33,11 @@ HitTestValues HitTestNCA(IntPtr hWnd, IntPtr wParam, IntPtr lParam) border_thickness = new RECT { bottom = 1, left = 1, right = 1, top = 1 }; } + if (_extendTitleBarHint >= 0) + { + border_thickness.top = (int)(_extendedMargins.Top * Scaling); + } + // Determine if the hit test is for resizing. Default middle (1,1). ushort uRow = 1; ushort uCol = 1; @@ -86,11 +90,13 @@ protected virtual IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr wParam, case WindowsMessage.WM_NCHITTEST: if (lRet == IntPtr.Zero) { - lRet = (IntPtr)HitTestNCA(hWnd, wParam, lParam); + var hittestResult = HitTestNCA(hWnd, wParam, lParam); + + lRet = (IntPtr)hittestResult; uint timestamp = unchecked((uint)GetMessageTime()); - if (((HitTestValues)lRet) == HitTestValues.HTCAPTION) + if (hittestResult == HitTestValues.HTCAPTION) { var position = PointToClient(PointFromLParam(lParam)); @@ -106,11 +112,12 @@ protected virtual IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr wParam, if (visual != null) { - lRet = (IntPtr)HitTestValues.HTCLIENT; + hittestResult = HitTestValues.HTCLIENT; + lRet = (IntPtr)hittestResult; } } - if (((HitTestValues)lRet) != HitTestValues.HTNOWHERE) + if (hittestResult != HitTestValues.HTNOWHERE) { callDwp = false; } From a838129ff9b153dda37f65e817dc4b84451e29de Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 15:08:03 -0300 Subject: [PATCH 108/354] Configurable titlebar height. --- src/Windows/Avalonia.Win32/WindowImpl.cs | 32 +++++++++++++++++------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index e10ce99bc47..e18ee269968 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -680,12 +680,26 @@ private MARGINS UpdateExtendMargins(ExtendClientAreaChromeHints hints) borderCaptionThickness.left *= -1; borderCaptionThickness.top *= -1; - if (!hints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar)) + bool wantsTitleBar = hints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar) || _extendTitleBarHint == -1; + + if (!wantsTitleBar) { borderCaptionThickness.top = 1; } - _extendedMargins = new Thickness(1 / Scaling, borderCaptionThickness.top / Scaling, 1 / Scaling, 1 / Scaling); + MARGINS margins = new MARGINS(); + margins.cxLeftWidth = 1; + margins.cxRightWidth = 1; + margins.cyBottomHeight = 1; + + if (_extendTitleBarHint != -1) + { + borderCaptionThickness.top = (int)(_extendTitleBarHint * Scaling); + } + + margins.cyTopHeight = hints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar) ? borderCaptionThickness.top : 1; + + _extendedMargins = new Thickness(0, borderCaptionThickness.top / Scaling, 0, 0); if (WindowState == WindowState.Maximized) { @@ -696,11 +710,6 @@ private MARGINS UpdateExtendMargins(ExtendClientAreaChromeHints hints) _offScreenMargin = new Thickness(); } - MARGINS margins = new MARGINS(); - margins.cxLeftWidth = 1; - margins.cxRightWidth = 1; - margins.cyBottomHeight = 1; - margins.cyTopHeight = borderCaptionThickness.top; return margins; } @@ -732,8 +741,7 @@ private void ExtendClientArea (ExtendClientAreaChromeHints hints) if (hr == 0) { - _isClientAreaExtended = true; - _extendedMargins = new Thickness(margins.cxLeftWidth / Scaling, margins.cyTopHeight / Scaling, margins.cxRightWidth / Scaling, margins.cyBottomHeight / Scaling); + _isClientAreaExtended = true; ExtendClientAreaToDecorationsChanged?.Invoke(true); } } @@ -1013,6 +1021,12 @@ public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) _extendChromeHints = hints; } + private double _extendTitleBarHint = -1; + public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) + { + _extendTitleBarHint = titleBarHeight; + } + public bool IsClientAreaExtendedToDecorations => _isClientAreaExtended; public Action ExtendClientAreaToDecorationsChanged { get; set; } From d587096e88438306965755b07de13d6f5c9cf6a0 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 15:08:33 -0300 Subject: [PATCH 109/354] Add TitleBarHeight Hint. --- src/Avalonia.Controls/Platform/IWindowImpl.cs | 2 ++ src/Avalonia.Controls/Window.cs | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index 999f4f4201c..15315063fe4 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -101,6 +101,8 @@ public interface IWindowImpl : IWindowBaseImpl void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints); + void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight); + Action ExtendClientAreaToDecorationsChanged { get; set; } Thickness ExtendedMargins { get; } diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 54e2fbb6297..12b61fce239 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -98,6 +98,9 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot public static readonly StyledProperty ExtendClientAreaChromeHintsProperty = AvaloniaProperty.Register(nameof(ExtendClientAreaChromeHints), ExtendClientAreaChromeHints.Default); + public static readonly StyledProperty ExtendClientAreaTitleBarHeightHintProperty = + AvaloniaProperty.Register(nameof(ExtendClientAreaTitleBarHeightHint), -1); + /// /// Defines the property. @@ -202,6 +205,9 @@ static Window() ExtendClientAreaChromeHintsProperty.Changed.AddClassHandler( (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.SetExtendClientAreaChromeHints((ExtendClientAreaChromeHints)e.NewValue); }); + ExtendClientAreaTitleBarHeightHintProperty.Changed.AddClassHandler( + (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.SetExtendClientAreaTitleBarHeightHint((double)e.NewValue); }); + MinWidthProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size((double)e.NewValue, w.MinHeight), new Size(w.MaxWidth, w.MaxHeight))); MinHeightProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size(w.MinWidth, (double)e.NewValue), new Size(w.MaxWidth, w.MaxHeight))); MaxWidthProperty.Changed.AddClassHandler((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size(w.MinWidth, w.MinHeight), new Size((double)e.NewValue, w.MaxHeight))); @@ -291,6 +297,12 @@ public ExtendClientAreaChromeHints ExtendClientAreaChromeHints set => SetValue(ExtendClientAreaChromeHintsProperty, value); } + public double ExtendClientAreaTitleBarHeightHint + { + get => GetValue(ExtendClientAreaTitleBarHeightHintProperty); + set => SetValue(ExtendClientAreaTitleBarHeightHintProperty, value); + } + /// /// Gets if the ClientArea is Extended into the Window Decorations. /// From 72e24625a02e54ca1283ca009a1e4f2d800484c8 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 15:08:48 -0300 Subject: [PATCH 110/354] Stubs for TitleBarHeight Hint. --- src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs | 4 ++++ src/Avalonia.DesignerSupport/Remote/Stubs.cs | 4 ++++ src/Avalonia.Native/WindowImpl.cs | 4 ++++ src/Avalonia.X11/X11Window.cs | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs index da7cbf815a7..0f35545d13a 100644 --- a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs +++ b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs @@ -140,5 +140,9 @@ public void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint) public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) { } + + public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) + { + } } } diff --git a/src/Avalonia.DesignerSupport/Remote/Stubs.cs b/src/Avalonia.DesignerSupport/Remote/Stubs.cs index 6859c408ddf..400ecda4057 100644 --- a/src/Avalonia.DesignerSupport/Remote/Stubs.cs +++ b/src/Avalonia.DesignerSupport/Remote/Stubs.cs @@ -154,6 +154,10 @@ public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) { } + public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) + { + } + public IPopupPositioner PopupPositioner { get; } public Action GotInputWhenDisabled { get; set; } diff --git a/src/Avalonia.Native/WindowImpl.cs b/src/Avalonia.Native/WindowImpl.cs index cbea3402460..532869e751c 100644 --- a/src/Avalonia.Native/WindowImpl.cs +++ b/src/Avalonia.Native/WindowImpl.cs @@ -114,6 +114,10 @@ public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) { } + public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) + { + } + public void ShowTaskbarIcon(bool value) { // NO OP On OSX diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index 086863796c5..0a58e03c2f0 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -1051,6 +1051,10 @@ public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) { } + public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) + { + } + public Action GotInputWhenDisabled { get; set; } public void SetIcon(IWindowIconImpl icon) From df41ca8f6e1875e742b381cf4a9be842c232f8f8 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 15:42:23 -0300 Subject: [PATCH 111/354] Allow extend hints to be changed at runtime. --- .../Avalonia.Win32/WindowImpl.AppWndProc.cs | 11 ++-- src/Windows/Avalonia.Win32/WindowImpl.cs | 60 ++++++++++++------- 2 files changed, 47 insertions(+), 24 deletions(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs index 5ffed48f2dc..18283432e40 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs @@ -373,13 +373,16 @@ protected virtual unsafe IntPtr AppWndProc(IntPtr hWnd, uint msg, IntPtr wParam, if (windowState != _lastWindowState) { - _lastWindowState = windowState; + _lastWindowState = windowState; - UpdateExtendMargins(_extendChromeHints); + WindowStateChanged?.Invoke(windowState); - ExtendClientAreaToDecorationsChanged?.Invoke(true); + if (_isClientAreaExtended) + { + UpdateExtendMargins(); - WindowStateChanged?.Invoke(windowState); + ExtendClientAreaToDecorationsChanged?.Invoke(true); + } } return IntPtr.Zero; diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index e18ee269968..a88a342b00b 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -668,7 +668,7 @@ private void SetFullScreen(bool fullscreen) TaskBarList.MarkFullscreen(_hwnd, fullscreen); } - private MARGINS UpdateExtendMargins(ExtendClientAreaChromeHints hints) + private MARGINS UpdateExtendMargins() { RECT borderThickness = new RECT(); RECT borderCaptionThickness = new RECT(); @@ -680,7 +680,7 @@ private MARGINS UpdateExtendMargins(ExtendClientAreaChromeHints hints) borderCaptionThickness.left *= -1; borderCaptionThickness.top *= -1; - bool wantsTitleBar = hints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar) || _extendTitleBarHint == -1; + bool wantsTitleBar = _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar) || _extendTitleBarHint == -1; if (!wantsTitleBar) { @@ -697,7 +697,7 @@ private MARGINS UpdateExtendMargins(ExtendClientAreaChromeHints hints) borderCaptionThickness.top = (int)(_extendTitleBarHint * Scaling); } - margins.cyTopHeight = hints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar) ? borderCaptionThickness.top : 1; + margins.cyTopHeight = _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar) ? borderCaptionThickness.top : 1; _extendedMargins = new Thickness(0, borderCaptionThickness.top / Scaling, 0, 0); @@ -713,22 +713,32 @@ private MARGINS UpdateExtendMargins(ExtendClientAreaChromeHints hints) return margins; } - private void ExtendClientArea (ExtendClientAreaChromeHints hints) + private void ExtendClientArea () { - if (!_isClientAreaExtended) + if (DwmIsCompositionEnabled(out bool compositionEnabled) < 0 || !compositionEnabled) { - if(DwmIsCompositionEnabled(out bool compositionEnabled) < 0 || !compositionEnabled) - { - return; - } + _isClientAreaExtended = false; + return; + } - var margins = UpdateExtendMargins(hints); + GetWindowRect(_hwnd, out var rcClient); - var hr = DwmExtendFrameIntoClientArea(_hwnd, ref margins); + // Inform the application of the frame change. + SetWindowPos(_hwnd, + IntPtr.Zero, + rcClient.left, rcClient.top, + rcClient.Width, rcClient.Height, + SetWindowPosFlags.SWP_FRAMECHANGED); + + if(_isClientAreaExtended) + { + var margins = UpdateExtendMargins(); - if(!hints.HasFlag(ExtendClientAreaChromeHints.SystemChromeButtons) || - (hints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChromeButtons) && - !hints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar))) + DwmExtendFrameIntoClientArea(_hwnd, ref margins); + + if(!_extendChromeHints.HasFlag(ExtendClientAreaChromeHints.SystemChromeButtons) || + (_extendChromeHints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChromeButtons) && + !_extendChromeHints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar))) { var style = GetStyle(); @@ -738,13 +748,17 @@ private void ExtendClientArea (ExtendClientAreaChromeHints hints) DisableCloseButton(_hwnd); } + } + else + { + var margins = new MARGINS(); + DwmExtendFrameIntoClientArea(_hwnd, ref margins); - if (hr == 0) - { - _isClientAreaExtended = true; - ExtendClientAreaToDecorationsChanged?.Invoke(true); - } + _offScreenMargin = new Thickness(); + _extendedMargins = new Thickness(); } + + ExtendClientAreaToDecorationsChanged?.Invoke(true); } private void ShowWindow(WindowState state) @@ -1011,7 +1025,9 @@ PixelSize EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Size public void SetExtendClientAreaToDecorationsHint(bool hint) { - ExtendClientArea(_extendChromeHints); + _isClientAreaExtended = hint; + + ExtendClientArea(); } private ExtendClientAreaChromeHints _extendChromeHints = ExtendClientAreaChromeHints.Default; @@ -1019,12 +1035,16 @@ public void SetExtendClientAreaToDecorationsHint(bool hint) public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) { _extendChromeHints = hints; + + ExtendClientArea(); } private double _extendTitleBarHint = -1; public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) { _extendTitleBarHint = titleBarHeight; + + ExtendClientArea(); } public bool IsClientAreaExtendedToDecorations => _isClientAreaExtended; From 454cc06184ae1dc459732905679f9661d65f15e9 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 16:26:51 -0300 Subject: [PATCH 112/354] Add a WindowCustomization page to the control catalog. --- samples/ControlCatalog/MainView.xaml | 1 + samples/ControlCatalog/MainWindow.xaml | 8 ++- .../Pages/WindowCustomizationsPage.xaml | 13 ++++ .../Pages/WindowCustomizationsPage.xaml.cs | 19 ++++++ .../ViewModels/MainWindowViewModel.cs | 60 +++++++++++++++++++ 5 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml create mode 100644 samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml.cs diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml index fef68bb5f56..5e0495adf5c 100644 --- a/samples/ControlCatalog/MainView.xaml +++ b/samples/ControlCatalog/MainView.xaml @@ -61,6 +61,7 @@ + diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml index 76422bc130e..4c3a00a4029 100644 --- a/samples/ControlCatalog/MainWindow.xaml +++ b/samples/ControlCatalog/MainWindow.xaml @@ -7,7 +7,11 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:vm="clr-namespace:ControlCatalog.ViewModels" xmlns:v="clr-namespace:ControlCatalog.Views" - x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}" Background="{DynamicResource SystemControlPageBackgroundAltHighBrush}"> + ExtendClientAreaToDecorationsHint="{Binding ExtendClientAreaEnabled}" + ExtendClientAreaChromeHints="{Binding ChromeHints}" + ExtendClientAreaTitleBarHeightHint="{Binding TitleBarHeight}" + x:Name="MainWindow" + x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}" Background="{x:Null}"> @@ -61,7 +65,7 @@ - + diff --git a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml new file mode 100644 index 00000000000..168b504b40d --- /dev/null +++ b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml.cs b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml.cs new file mode 100644 index 00000000000..d8d4f3f371e --- /dev/null +++ b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml.cs @@ -0,0 +1,19 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace ControlCatalog.Pages +{ + public class WindowCustomizationsPage : UserControl + { + public WindowCustomizationsPage() + { + this.InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} diff --git a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs index 0257b4ce663..26b7e1bea8b 100644 --- a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs +++ b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs @@ -3,6 +3,8 @@ using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.Notifications; using Avalonia.Dialogs; +using Avalonia.Platform; +using System; using ReactiveUI; namespace ControlCatalog.ViewModels @@ -62,8 +64,66 @@ public MainWindowViewModel(IManagedNotificationManager notificationManager) WindowState.Maximized, WindowState.FullScreen, }; + + this.WhenAnyValue(x => x.SystemChromeButtonsEnabled, x => x.SystemTitleBarEnabled) + .Subscribe(x => + { + ChromeHints = ExtendClientAreaChromeHints.NoChrome; + + if(x.Item1) + { + ChromeHints |= ExtendClientAreaChromeHints.SystemChromeButtons; + } + + if(x.Item2) + { + ChromeHints |= ExtendClientAreaChromeHints.SystemTitleBar; + } + }); + } + + private ExtendClientAreaChromeHints _chromeHints; + + public ExtendClientAreaChromeHints ChromeHints + { + get { return _chromeHints; } + set { this.RaiseAndSetIfChanged(ref _chromeHints, value); } + } + + + private bool _extendClientAreaEnabled; + + public bool ExtendClientAreaEnabled + { + get { return _extendClientAreaEnabled; } + set { this.RaiseAndSetIfChanged(ref _extendClientAreaEnabled, value); } } + private bool _systemTitleBarEnabled; + + public bool SystemTitleBarEnabled + { + get { return _systemTitleBarEnabled; } + set { this.RaiseAndSetIfChanged(ref _systemTitleBarEnabled, value); } + } + + private bool _systemChromeButtonsEnabled; + + public bool SystemChromeButtonsEnabled + { + get { return _systemChromeButtonsEnabled; } + set { this.RaiseAndSetIfChanged(ref _systemChromeButtonsEnabled, value); } + } + + private double _titleBarHeight; + + public double TitleBarHeight + { + get { return _titleBarHeight; } + set { this.RaiseAndSetIfChanged(ref _titleBarHeight, value); } + } + + public WindowState WindowState { get { return _windowState; } From 1ce5fdfd03744932edcba0d7ef1654a4e454565e Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 16:27:33 -0300 Subject: [PATCH 113/354] Update when caption buttons are turned on or off. --- src/Windows/Avalonia.Win32/WindowImpl.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index a88a342b00b..d09e3196da4 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -748,6 +748,16 @@ private void ExtendClientArea () DisableCloseButton(_hwnd); } + else + { + var style = GetStyle(); + + style |= (WindowStyles.WS_MINIMIZEBOX | WindowStyles.WS_MAXIMIZEBOX | WindowStyles.WS_SYSMENU); + + SetStyle(style); + + EnableCloseButton(_hwnd); + } } else { @@ -756,6 +766,14 @@ private void ExtendClientArea () _offScreenMargin = new Thickness(); _extendedMargins = new Thickness(); + + var style = GetStyle(); + + style |= (WindowStyles.WS_MINIMIZEBOX | WindowStyles.WS_MAXIMIZEBOX | WindowStyles.WS_SYSMENU); + + SetStyle(style); + + EnableCloseButton(_hwnd); } ExtendClientAreaToDecorationsChanged?.Invoke(true); From 6e809937c6eaaeeb7ce8ba827a7962820a8074d3 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 16:27:57 -0300 Subject: [PATCH 114/354] NoChome is 0 --- src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs b/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs index af33e3093b1..e98124b2d82 100644 --- a/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs +++ b/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs @@ -4,9 +4,9 @@ namespace Avalonia.Platform { [Flags] public enum ExtendClientAreaChromeHints - { - Default = SystemTitleBar | SystemChromeButtons, + { NoChrome, + Default = SystemTitleBar | SystemChromeButtons, SystemTitleBar = 0x01, SystemChromeButtons = 0x02, ManagedChromeButtons = 0x04, From d4fa9ad406354c917ec7b15ee1be3340db0b64c1 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 16:36:49 -0300 Subject: [PATCH 115/354] Move transparency to window customizations page. --- samples/ControlCatalog/MainView.xaml.cs | 7 ------- samples/ControlCatalog/MainWindow.xaml | 1 + .../Pages/WindowCustomizationsPage.xaml | 5 +++++ .../ControlCatalog/ViewModels/MainWindowViewModel.cs | 12 ++++++++++++ 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/samples/ControlCatalog/MainView.xaml.cs b/samples/ControlCatalog/MainView.xaml.cs index d6d4a71ad3c..b0c205246e2 100644 --- a/samples/ControlCatalog/MainView.xaml.cs +++ b/samples/ControlCatalog/MainView.xaml.cs @@ -58,13 +58,6 @@ public MainView() if (VisualRoot is Window window) window.SystemDecorations = (SystemDecorations)decorations.SelectedIndex; }; - - var transparencyLevels = this.Find("TransparencyLevels"); - transparencyLevels.SelectionChanged += (sender, e) => - { - if (VisualRoot is Window window) - window.TransparencyLevelHint = (WindowTransparencyLevel)transparencyLevels.SelectedIndex; - }; } protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml index 4c3a00a4029..e92339416b8 100644 --- a/samples/ControlCatalog/MainWindow.xaml +++ b/samples/ControlCatalog/MainWindow.xaml @@ -10,6 +10,7 @@ ExtendClientAreaToDecorationsHint="{Binding ExtendClientAreaEnabled}" ExtendClientAreaChromeHints="{Binding ChromeHints}" ExtendClientAreaTitleBarHeightHint="{Binding TitleBarHeight}" + TransparencyLevelHint="{Binding TransparencyLevel}" x:Name="MainWindow" x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}" Background="{x:Null}"> diff --git a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml index 168b504b40d..44973f5b79e 100644 --- a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml +++ b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml @@ -9,5 +9,10 @@ + + None + Transparent + Blur + diff --git a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs index 26b7e1bea8b..80231a4c15e 100644 --- a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs +++ b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs @@ -80,6 +80,18 @@ public MainWindowViewModel(IManagedNotificationManager notificationManager) ChromeHints |= ExtendClientAreaChromeHints.SystemTitleBar; } }); + + SystemTitleBarEnabled = true; + SystemChromeButtonsEnabled = true; + TitleBarHeight = -1; + } + + private int _transparencyLevel; + + public int TransparencyLevel + { + get { return _transparencyLevel; } + set { this.RaiseAndSetIfChanged(ref _transparencyLevel, value); } } private ExtendClientAreaChromeHints _chromeHints; From bb83df834a6e524935b31edf0f263ba4fc2b102a Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 16:55:19 -0300 Subject: [PATCH 116/354] fully working client area extension demo --- samples/ControlCatalog/MainWindow.xaml | 32 ++++++++++++------- .../Pages/WindowCustomizationsPage.xaml | 2 +- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml index e92339416b8..661975d0b53 100644 --- a/samples/ControlCatalog/MainWindow.xaml +++ b/samples/ControlCatalog/MainWindow.xaml @@ -61,20 +61,28 @@ - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml index 44973f5b79e..2f9c2d39386 100644 --- a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml +++ b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml @@ -4,7 +4,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="ControlCatalog.Pages.WindowCustomizationsPage"> - + From ae40af4d99a3e29551fe7aee6a85cdbc4da5ae4d Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 17:57:21 -0300 Subject: [PATCH 117/354] fix layout. --- samples/ControlCatalog/MainWindow.xaml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml index 661975d0b53..a6750f6444c 100644 --- a/samples/ControlCatalog/MainWindow.xaml +++ b/samples/ControlCatalog/MainWindow.xaml @@ -66,8 +66,9 @@ - - + + + @@ -78,11 +79,12 @@ - + + - + From d32c9b25394fc8611d3172b14955d82eb421039e Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 21 May 2020 17:58:45 -0300 Subject: [PATCH 118/354] only show titlebar content when in dwm mode. --- samples/ControlCatalog/MainWindow.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml index a6750f6444c..b1104514214 100644 --- a/samples/ControlCatalog/MainWindow.xaml +++ b/samples/ControlCatalog/MainWindow.xaml @@ -80,7 +80,7 @@ - + From e93554d0da4544784fb7fac35e12abb50853d66a Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 22 May 2020 14:38:59 -0300 Subject: [PATCH 119/354] Add managed CaptionButtonsControl. --- .../Chrome/CaptionButtons.cs | 89 +++++++++++++++++++ .../Primitives/ChromeOverlayLayer.cs | 37 ++++++++ .../Primitives/VisualLayerManager.cs | 15 +++- .../Properties/AssemblyInfo.cs | 1 + .../CaptionButtons.xaml | 70 +++++++++++++++ src/Avalonia.Themes.Default/DefaultTheme.xaml | 1 + 6 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 src/Avalonia.Controls/Chrome/CaptionButtons.cs create mode 100644 src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs create mode 100644 src/Avalonia.Themes.Default/CaptionButtons.xaml diff --git a/src/Avalonia.Controls/Chrome/CaptionButtons.cs b/src/Avalonia.Controls/Chrome/CaptionButtons.cs new file mode 100644 index 00000000000..20a42aadf6b --- /dev/null +++ b/src/Avalonia.Controls/Chrome/CaptionButtons.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Reactive.Disposables; +using System.Text; +using Avalonia.Controls.Primitives; +using Avalonia.VisualTree; + +namespace Avalonia.Controls.Chrome +{ + public class CaptionButtons : TemplatedControl + { + private CompositeDisposable _disposables; + private Window _hostWindow; + + public CaptionButtons(Window hostWindow) + { + _hostWindow = hostWindow; + } + + public void Attach() + { + if (_disposables == null) + { + var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); + + layer.Children.Add(this); + + _disposables = new CompositeDisposable + { + _hostWindow.GetObservable(Window.WindowDecorationMarginsProperty) + .Subscribe(x => + { + Height = x.Top; + }), + + + _hostWindow.GetObservable(Window.ExtendClientAreaTitleBarHeightHintProperty) + .Subscribe(x => InvalidateSize()), + + _hostWindow.GetObservable(Window.OffScreenMarginProperty) + .Subscribe(x => InvalidateSize()), + + _hostWindow.GetObservable(Window.WindowStateProperty) + .Subscribe(x => + { + PseudoClasses.Set(":minimized", x == WindowState.Minimized); + PseudoClasses.Set(":normal", x == WindowState.Normal); + PseudoClasses.Set(":maximized", x == WindowState.Maximized); + PseudoClasses.Set(":fullscreen", x == WindowState.FullScreen); + }) + }; + } + } + + void InvalidateSize () + { + Margin = new Thickness(1, _hostWindow.OffScreenMargin.Top, 1, 1); + Height = _hostWindow.WindowDecorationMargins.Top - _hostWindow.OffScreenMargin.Top; + } + + public void Detach() + { + if (_disposables != null) + { + var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); + + layer.Children.Remove(this); + + _disposables.Dispose(); + _disposables = null; + } + } + + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) + { + base.OnApplyTemplate(e); + + var closeButton = e.NameScope.Find("PART_CloseButton"); + var restoreButton = e.NameScope.Find("PART_RestoreButton"); + var minimiseButton = e.NameScope.Find("PART_MinimiseButton"); + var fullScreenButton = e.NameScope.Find("PART_FullScreenButton"); + + closeButton.PointerPressed += (sender, e) => _hostWindow.Close(); + restoreButton.PointerPressed += (sender, e) => _hostWindow.WindowState = _hostWindow.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; + minimiseButton.PointerPressed += (sender, e) => _hostWindow.WindowState = WindowState.Minimized; + fullScreenButton.PointerPressed += (sender, e) => _hostWindow.WindowState = _hostWindow.WindowState == WindowState.FullScreen ? WindowState.Normal : WindowState.FullScreen; + } + } +} diff --git a/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs b/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs new file mode 100644 index 00000000000..5deb9ac408d --- /dev/null +++ b/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs @@ -0,0 +1,37 @@ +using System.Linq; +using Avalonia.Rendering; +using Avalonia.VisualTree; + +namespace Avalonia.Controls.Primitives +{ + public class ChromeOverlayLayer : Canvas, ICustomSimpleHitTest + { + public Size AvailableSize { get; private set; } + + public static ChromeOverlayLayer GetOverlayLayer(IVisual visual) + { + foreach (var v in visual.GetVisualAncestors()) + if (v is VisualLayerManager vlm) + if (vlm.OverlayLayer != null) + return vlm.ChromeOverlayLayer; + + if (visual is TopLevel tl) + { + var layers = tl.GetVisualDescendants().OfType().FirstOrDefault(); + return layers?.ChromeOverlayLayer; + } + + return null; + } + + public bool HitTest(Point point) => Children.HitTestCustom(point); + + protected override Size ArrangeOverride(Size finalSize) + { + // We are saving it here since child controls might need to know the entire size of the overlay + // and Bounds won't be updated in time + AvailableSize = finalSize; + return base.ArrangeOverride(finalSize); + } + } +} diff --git a/src/Avalonia.Controls/Primitives/VisualLayerManager.cs b/src/Avalonia.Controls/Primitives/VisualLayerManager.cs index 86aeb5c62a0..3084d7fa724 100644 --- a/src/Avalonia.Controls/Primitives/VisualLayerManager.cs +++ b/src/Avalonia.Controls/Primitives/VisualLayerManager.cs @@ -6,7 +6,9 @@ namespace Avalonia.Controls.Primitives public class VisualLayerManager : Decorator { private const int AdornerZIndex = int.MaxValue - 100; - private const int OverlayZIndex = int.MaxValue - 99; + private const int ChromeZIndex = int.MaxValue - 99; + private const int OverlayZIndex = int.MaxValue - 98; + private ILogicalRoot _logicalRoot; private readonly List _layers = new List(); @@ -24,6 +26,17 @@ public AdornerLayer AdornerLayer } } + public ChromeOverlayLayer ChromeOverlayLayer + { + get + { + var rv = FindLayer(); + if (rv == null) + AddLayer(rv = new ChromeOverlayLayer(), ChromeZIndex); + return rv; + } + } + public OverlayLayer OverlayLayer { get diff --git a/src/Avalonia.Controls/Properties/AssemblyInfo.cs b/src/Avalonia.Controls/Properties/AssemblyInfo.cs index 060db46212b..672fbe294eb 100644 --- a/src/Avalonia.Controls/Properties/AssemblyInfo.cs +++ b/src/Avalonia.Controls/Properties/AssemblyInfo.cs @@ -13,3 +13,4 @@ [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Controls.Shapes")] [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Controls.Templates")] [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Controls.Notifications")] +[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Controls.Chrome")] diff --git a/src/Avalonia.Themes.Default/CaptionButtons.xaml b/src/Avalonia.Themes.Default/CaptionButtons.xaml new file mode 100644 index 00000000000..0cc0d6b9cd0 --- /dev/null +++ b/src/Avalonia.Themes.Default/CaptionButtons.xaml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia.Themes.Default/DefaultTheme.xaml b/src/Avalonia.Themes.Default/DefaultTheme.xaml index 94d26e798bf..97cff5d94be 100644 --- a/src/Avalonia.Themes.Default/DefaultTheme.xaml +++ b/src/Avalonia.Themes.Default/DefaultTheme.xaml @@ -9,6 +9,7 @@ + From 6e1ccb6333bfaa04556c7486fbca0d458671be58 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 22 May 2020 14:39:16 -0300 Subject: [PATCH 120/354] Add acrylic blur option to control catalog. --- samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml | 1 + 1 file changed, 1 insertion(+) diff --git a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml index 2f9c2d39386..f2513da8ec3 100644 --- a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml +++ b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml @@ -13,6 +13,7 @@ None Transparent Blur + AcrylicBlur From 1e798be7848f9120e69db73a36b9247fe3b2e4c0 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 22 May 2020 15:04:01 -0300 Subject: [PATCH 121/354] insert managed chrome when extend client area is enabled and hint flag is set. --- .../Pages/WindowCustomizationsPage.xaml | 1 + .../ViewModels/MainWindowViewModel.cs | 16 ++++++++- src/Avalonia.Controls/Window.cs | 34 +++++++++++++++++-- 3 files changed, 48 insertions(+), 3 deletions(-) diff --git a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml index f2513da8ec3..cea8e4b94ee 100644 --- a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml +++ b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml @@ -8,6 +8,7 @@ + None diff --git a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs index 80231a4c15e..b3ea25e470e 100644 --- a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs +++ b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs @@ -65,7 +65,7 @@ public MainWindowViewModel(IManagedNotificationManager notificationManager) WindowState.FullScreen, }; - this.WhenAnyValue(x => x.SystemChromeButtonsEnabled, x => x.SystemTitleBarEnabled) + this.WhenAnyValue(x => x.SystemChromeButtonsEnabled, x=>x.ManagedChromeButtonsEnabled, x => x.SystemTitleBarEnabled) .Subscribe(x => { ChromeHints = ExtendClientAreaChromeHints.NoChrome; @@ -76,6 +76,11 @@ public MainWindowViewModel(IManagedNotificationManager notificationManager) } if(x.Item2) + { + ChromeHints |= ExtendClientAreaChromeHints.ManagedChromeButtons; + } + + if(x.Item3) { ChromeHints |= ExtendClientAreaChromeHints.SystemTitleBar; } @@ -127,6 +132,15 @@ public bool SystemChromeButtonsEnabled set { this.RaiseAndSetIfChanged(ref _systemChromeButtonsEnabled, value); } } + private bool _managedChromeButtonsEnabled; + + public bool ManagedChromeButtonsEnabled + { + get { return _managedChromeButtonsEnabled; } + set { this.RaiseAndSetIfChanged(ref _managedChromeButtonsEnabled, value); } + } + + private double _titleBarHeight; public double TitleBarHeight diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 12b61fce239..8d66e03f98c 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Reactive.Linq; using System.Threading.Tasks; +using Avalonia.Controls.Chrome; using Avalonia.Controls.Platform; using Avalonia.Data; using Avalonia.Input; @@ -69,7 +70,8 @@ public enum SystemDecorations /// public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot { - private readonly List<(Window child, bool isDialog)> _children = new List<(Window, bool)>(); + private readonly List<(Window child, bool isDialog)> _children = new List<(Window, bool)>(); + private CaptionButtons _managedCaptions; private bool _isExtendedIntoWindowDecorations; @@ -203,7 +205,15 @@ static Window() (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.SetExtendClientAreaToDecorationsHint((bool)e.NewValue); }); ExtendClientAreaChromeHintsProperty.Changed.AddClassHandler( - (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.SetExtendClientAreaChromeHints((ExtendClientAreaChromeHints)e.NewValue); }); + (w, e) => + { + if (w.PlatformImpl != null) + { + w.PlatformImpl.SetExtendClientAreaChromeHints((ExtendClientAreaChromeHints)e.NewValue); + } + + w.HandleChromeHintsChanged((ExtendClientAreaChromeHints)e.NewValue); + }); ExtendClientAreaTitleBarHeightHintProperty.Changed.AddClassHandler( (w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.SetExtendClientAreaTitleBarHeightHint((double)e.NewValue); }); @@ -897,6 +907,26 @@ protected sealed override void HandleResized(Size clientSize) base.HandleResized(clientSize); } + private void HandleChromeHintsChanged (ExtendClientAreaChromeHints hints) + { + if(hints.HasFlag(ExtendClientAreaChromeHints.ManagedChromeButtons)) + { + if(_managedCaptions == null) + { + _managedCaptions = new CaptionButtons(this); + } + + _managedCaptions.Attach(); + } + else + { + if(_managedCaptions != null) + { + _managedCaptions.Detach(); + } + } + } + /// /// Raises the event. /// From fbe25123cea123da785f6047bbbdefd637b6ce0e Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 22 May 2020 16:14:41 -0300 Subject: [PATCH 122/354] When system captions are disabled on win32 and window is maximized border will not be hidden offscreen. --- src/Windows/Avalonia.Win32/WindowImpl.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index d09e3196da4..4c694b8b55b 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -701,7 +701,11 @@ private MARGINS UpdateExtendMargins() _extendedMargins = new Thickness(0, borderCaptionThickness.top / Scaling, 0, 0); - if (WindowState == WindowState.Maximized) + if (WindowState == WindowState.Maximized && !_extendChromeHints.HasFlag(ExtendClientAreaChromeHints.SystemChromeButtons)) + { + _offScreenMargin = new Thickness(); + } + else if (WindowState == WindowState.Maximized) { _offScreenMargin = new Thickness(borderThickness.left / Scaling, borderThickness.top / Scaling, borderThickness.right / Scaling, borderThickness.bottom / Scaling); } From 4152b2e365da44e03955346ec98988a67661930e Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 22 May 2020 17:18:34 -0300 Subject: [PATCH 123/354] Decorations Margin shouldnt include the border margin other wise users have to do subtractions. --- src/Avalonia.Controls/Chrome/CaptionButtons.cs | 2 +- src/Avalonia.Controls/Window.cs | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/Chrome/CaptionButtons.cs b/src/Avalonia.Controls/Chrome/CaptionButtons.cs index 20a42aadf6b..556c7598253 100644 --- a/src/Avalonia.Controls/Chrome/CaptionButtons.cs +++ b/src/Avalonia.Controls/Chrome/CaptionButtons.cs @@ -55,7 +55,7 @@ public void Attach() void InvalidateSize () { Margin = new Thickness(1, _hostWindow.OffScreenMargin.Top, 1, 1); - Height = _hostWindow.WindowDecorationMargins.Top - _hostWindow.OffScreenMargin.Top; + Height = _hostWindow.WindowDecorationMargins.Top; } public void Detach() diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 8d66e03f98c..d63b1350bc9 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -540,7 +540,11 @@ protected virtual void ExtendClientAreaToDecorationsChanged(bool isExtended) { IsExtendedIntoWindowDecorations = isExtended; - WindowDecorationMargins = PlatformImpl.ExtendedMargins; + WindowDecorationMargins = new Thickness( + PlatformImpl.ExtendedMargins.Left, + PlatformImpl.ExtendedMargins.Top - PlatformImpl.OffScreenMargin.Top, + PlatformImpl.ExtendedMargins.Right, + PlatformImpl.ExtendedMargins.Bottom); OffScreenMargin = PlatformImpl.OffScreenMargin; } From 9e812454159520abd19d819165a422934b0ee6d1 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 22 May 2020 17:27:33 -0300 Subject: [PATCH 124/354] extend api only allows to turn titlebar on or off to maintain window integrity, and decoration margins dont include border margins. --- .../Platform/ExtendClientAreaChromeHints.cs | 7 ++- src/Avalonia.Controls/Window.cs | 6 +-- .../CaptionButtons.xaml | 2 +- src/Windows/Avalonia.Win32/WindowImpl.cs | 43 ++----------------- 4 files changed, 9 insertions(+), 49 deletions(-) diff --git a/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs b/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs index e98124b2d82..075e4ba4366 100644 --- a/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs +++ b/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs @@ -6,11 +6,10 @@ namespace Avalonia.Platform public enum ExtendClientAreaChromeHints { NoChrome, - Default = SystemTitleBar | SystemChromeButtons, + Default = SystemTitleBar, SystemTitleBar = 0x01, - SystemChromeButtons = 0x02, - ManagedChromeButtons = 0x04, - PreferSystemChromeButtons = 0x08, + ManagedChromeButtons = 0x02, + PreferSystemChromeButtons = 0x04, AdaptiveChromeWithTitleBar = SystemTitleBar | PreferSystemChromeButtons, AdaptiveChromeWithoutTitleBar = PreferSystemChromeButtons, } diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index d63b1350bc9..8d66e03f98c 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -540,11 +540,7 @@ protected virtual void ExtendClientAreaToDecorationsChanged(bool isExtended) { IsExtendedIntoWindowDecorations = isExtended; - WindowDecorationMargins = new Thickness( - PlatformImpl.ExtendedMargins.Left, - PlatformImpl.ExtendedMargins.Top - PlatformImpl.OffScreenMargin.Top, - PlatformImpl.ExtendedMargins.Right, - PlatformImpl.ExtendedMargins.Bottom); + WindowDecorationMargins = PlatformImpl.ExtendedMargins; OffScreenMargin = PlatformImpl.OffScreenMargin; } diff --git a/src/Avalonia.Themes.Default/CaptionButtons.xaml b/src/Avalonia.Themes.Default/CaptionButtons.xaml index 0cc0d6b9cd0..8ee8a3b0dd5 100644 --- a/src/Avalonia.Themes.Default/CaptionButtons.xaml +++ b/src/Avalonia.Themes.Default/CaptionButtons.xaml @@ -5,7 +5,7 @@ - + - @@ -27,13 +24,13 @@ - + - + @@ -42,13 +39,13 @@ - + - + diff --git a/src/Avalonia.Themes.Default/TitleBar.xaml b/src/Avalonia.Themes.Default/TitleBar.xaml new file mode 100644 index 00000000000..856b90857c7 --- /dev/null +++ b/src/Avalonia.Themes.Default/TitleBar.xaml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/src/Avalonia.Themes.Fluent/CaptionButtons.xaml b/src/Avalonia.Themes.Fluent/CaptionButtons.xaml new file mode 100644 index 00000000000..20efcafcfd3 --- /dev/null +++ b/src/Avalonia.Themes.Fluent/CaptionButtons.xaml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Styles> diff --git a/src/Avalonia.Themes.Fluent/FluentTheme.xaml b/src/Avalonia.Themes.Fluent/FluentTheme.xaml index 49b2d9561b5..a1f8d97c97f 100644 --- a/src/Avalonia.Themes.Fluent/FluentTheme.xaml +++ b/src/Avalonia.Themes.Fluent/FluentTheme.xaml @@ -7,7 +7,8 @@ - + + @@ -36,6 +37,7 @@ + diff --git a/src/Avalonia.Themes.Fluent/TitleBar.xaml b/src/Avalonia.Themes.Fluent/TitleBar.xaml new file mode 100644 index 00000000000..6512ee342c9 --- /dev/null +++ b/src/Avalonia.Themes.Fluent/TitleBar.xaml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs index fee6bb90bf1..d4d7528ef4f 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs @@ -90,6 +90,10 @@ protected virtual IntPtr CustomCaptionProc(IntPtr hWnd, uint msg, IntPtr wParam, case WindowsMessage.WM_NCHITTEST: if (lRet == IntPtr.Zero) { + if(WindowState == WindowState.FullScreen) + { + return (IntPtr)HitTestValues.HTCLIENT; + } var hittestResult = HitTestNCA(hWnd, wParam, lParam); lRet = (IntPtr)hittestResult; diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 9139a8ccbd1..bed6922076b 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -181,6 +181,11 @@ public WindowState WindowState { get { + if(_isFullScreenActive) + { + return WindowState.FullScreen; + } + var placement = default(WINDOWPLACEMENT); GetWindowPlacement(_hwnd, ref placement); From a2cf709164e87c40793fe8daf0ad4d2bc469a75e Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 8 Jun 2020 15:04:21 -0300 Subject: [PATCH 147/354] fix xaml error. --- src/Avalonia.Themes.Fluent/CaptionButtons.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Themes.Fluent/CaptionButtons.xaml b/src/Avalonia.Themes.Fluent/CaptionButtons.xaml index 20efcafcfd3..e5177bbdadb 100644 --- a/src/Avalonia.Themes.Fluent/CaptionButtons.xaml +++ b/src/Avalonia.Themes.Fluent/CaptionButtons.xaml @@ -64,4 +64,4 @@ - Styles> + From b0b7a65531d51bc30e4a272a3d47dfc369a260a1 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 8 Jun 2020 15:08:48 -0300 Subject: [PATCH 148/354] hide certain caption buttons in fullscreen mode. --- src/Avalonia.Themes.Fluent/CaptionButtons.xaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Avalonia.Themes.Fluent/CaptionButtons.xaml b/src/Avalonia.Themes.Fluent/CaptionButtons.xaml index e5177bbdadb..7ed27a17470 100644 --- a/src/Avalonia.Themes.Fluent/CaptionButtons.xaml +++ b/src/Avalonia.Themes.Fluent/CaptionButtons.xaml @@ -64,4 +64,7 @@ + From 6e47b625cfe3fa61f170b494909232ff5580a10c Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 8 Jun 2020 15:49:36 -0300 Subject: [PATCH 149/354] fix animations --- .../ControlCatalog/ViewModels/MainWindowViewModel.cs | 10 ++++++---- src/Avalonia.Controls/Chrome/TitleBar.cs | 3 +++ src/Avalonia.Themes.Fluent/TitleBar.xaml | 7 ++----- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs index 939f44d7727..27ea1ffb155 100644 --- a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs +++ b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs @@ -68,22 +68,24 @@ public MainWindowViewModel(IManagedNotificationManager notificationManager) this.WhenAnyValue(x => x.SystemChromeButtonsEnabled, x=>x.ManagedChromeButtonsEnabled, x => x.SystemTitleBarEnabled) .Subscribe(x => { - ChromeHints = ExtendClientAreaChromeHints.NoChrome | ExtendClientAreaChromeHints.OSXThickTitleBar; + var hints = ExtendClientAreaChromeHints.NoChrome | ExtendClientAreaChromeHints.OSXThickTitleBar; if(x.Item1) { - ChromeHints |= ExtendClientAreaChromeHints.SystemChromeButtons; + hints |= ExtendClientAreaChromeHints.SystemChromeButtons; } if(x.Item2) { - ChromeHints |= ExtendClientAreaChromeHints.ManagedChromeButtons; + hints |= ExtendClientAreaChromeHints.ManagedChromeButtons; } if(x.Item3) { - ChromeHints |= ExtendClientAreaChromeHints.SystemTitleBar; + hints |= ExtendClientAreaChromeHints.SystemTitleBar; } + + ChromeHints = hints; }); SystemTitleBarEnabled = true; diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index 23eefb5d1b3..d4ac5cd8552 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -2,6 +2,7 @@ using System.Reactive.Disposables; using Avalonia.Controls.Primitives; using Avalonia.Input; +using Avalonia.LogicalTree; using Avalonia.Media; namespace Avalonia.Controls.Chrome @@ -63,6 +64,8 @@ public void Attach() PseudoClasses.Set(":fullscreen", x == WindowState.FullScreen); }) }; + + _captionButtons?.Attach(_hostWindow); } } diff --git a/src/Avalonia.Themes.Fluent/TitleBar.xaml b/src/Avalonia.Themes.Fluent/TitleBar.xaml index 6512ee342c9..f7d9f1df109 100644 --- a/src/Avalonia.Themes.Fluent/TitleBar.xaml +++ b/src/Avalonia.Themes.Fluent/TitleBar.xaml @@ -30,15 +30,13 @@ - - - + - - - - From 765bd84c3e64f623201dd486dc9c51f43d11ab17 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 9 Jun 2020 13:35:58 -0300 Subject: [PATCH 151/354] polish managed titlebar. --- .../Chrome/CaptionButtons.cs | 18 ------- src/Avalonia.Controls/Chrome/TitleBar.cs | 34 +++++-------- src/Avalonia.Themes.Fluent/TitleBar.xaml | 12 +++-- src/Windows/Avalonia.Win32/WindowImpl.cs | 48 +++++++++++-------- 4 files changed, 49 insertions(+), 63 deletions(-) diff --git a/src/Avalonia.Controls/Chrome/CaptionButtons.cs b/src/Avalonia.Controls/Chrome/CaptionButtons.cs index 618c3c4fb28..99db4e550bf 100644 --- a/src/Avalonia.Controls/Chrome/CaptionButtons.cs +++ b/src/Avalonia.Controls/Chrome/CaptionButtons.cs @@ -20,18 +20,6 @@ public void Attach(Window hostWindow) _disposables = new CompositeDisposable { - _hostWindow.GetObservable(Window.WindowDecorationMarginsProperty) - .Subscribe(x => - { - Height = x.Top; - }), - - _hostWindow.GetObservable(Window.ExtendClientAreaTitleBarHeightHintProperty) - .Subscribe(x => InvalidateSize()), - - _hostWindow.GetObservable(Window.OffScreenMarginProperty) - .Subscribe(x => InvalidateSize()), - _hostWindow.GetObservable(Window.WindowStateProperty) .Subscribe(x => { @@ -44,12 +32,6 @@ public void Attach(Window hostWindow) } } - void InvalidateSize () - { - Margin = new Thickness(1, _hostWindow.OffScreenMargin.Top, 1, 1); - Height = _hostWindow.WindowDecorationMargins.Top; - } - public void Detach() { if (_disposables != null) diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index d4ac5cd8552..b0ae25892e3 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -18,21 +18,6 @@ public TitleBar(Window hostWindow) _hostWindow = hostWindow; } - public TitleBar() - { - - } - - protected override Size MeasureOverride(Size availableSize) - { - return base.MeasureOverride(availableSize); - } - - protected override Size ArrangeOverride(Size finalSize) - { - return base.ArrangeOverride(finalSize); - } - public void Attach() { if (_disposables == null) @@ -44,10 +29,7 @@ public void Attach() _disposables = new CompositeDisposable { _hostWindow.GetObservable(Window.WindowDecorationMarginsProperty) - .Subscribe(x => - { - Height = x.Top; - }), + .Subscribe(x => InvalidateSize()), _hostWindow.GetObservable(Window.ExtendClientAreaTitleBarHeightHintProperty) .Subscribe(x => InvalidateSize()), @@ -71,8 +53,16 @@ public void Attach() void InvalidateSize() { - Margin = new Thickness(1, _hostWindow.OffScreenMargin.Top, 1, 1); - Height = _hostWindow.WindowDecorationMargins.Top; + Margin = new Thickness( + _hostWindow.OffScreenMargin.Left, + _hostWindow.OffScreenMargin.Top, + _hostWindow.OffScreenMargin.Right, + _hostWindow.OffScreenMargin.Bottom); + + if (_hostWindow.WindowState != WindowState.FullScreen) + { + Height = _hostWindow.WindowDecorationMargins.Top; + } } public void Detach() @@ -94,7 +84,7 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); - _captionButtons = e.NameScope.Find("PART_CaptionButtons"); + _captionButtons = e.NameScope.Find("PART_CaptionButtons"); _captionButtons.Attach(_hostWindow); } diff --git a/src/Avalonia.Themes.Fluent/TitleBar.xaml b/src/Avalonia.Themes.Fluent/TitleBar.xaml index 5083f4c15a9..db4dbe95a20 100644 --- a/src/Avalonia.Themes.Fluent/TitleBar.xaml +++ b/src/Avalonia.Themes.Fluent/TitleBar.xaml @@ -5,23 +5,27 @@ + + diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index bed6922076b..5ffcc2034cd 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -671,6 +671,8 @@ private void SetFullScreen(bool fullscreen) } TaskBarList.MarkFullscreen(_hwnd, fullscreen); + + ExtendClientArea(); } private MARGINS UpdateExtendMargins() @@ -724,33 +726,41 @@ private void ExtendClientArea () { _isClientAreaExtended = false; return; - } - - GetWindowRect(_hwnd, out var rcClient); + } - // Inform the application of the frame change. - SetWindowPos(_hwnd, - IntPtr.Zero, - rcClient.left, rcClient.top, - rcClient.Width, rcClient.Height, - SetWindowPosFlags.SWP_FRAMECHANGED); - - if(_isClientAreaExtended) + if (!_isClientAreaExtended || WindowState == WindowState.FullScreen) { - var margins = UpdateExtendMargins(); - - DwmExtendFrameIntoClientArea(_hwnd, ref margins); + _extendedMargins = new Thickness(0, 0, 0, 0); + _offScreenMargin = new Thickness(); } else { - var margins = new MARGINS(); - DwmExtendFrameIntoClientArea(_hwnd, ref margins); + GetWindowRect(_hwnd, out var rcClient); - _offScreenMargin = new Thickness(); - _extendedMargins = new Thickness(); + // Inform the application of the frame change. + SetWindowPos(_hwnd, + IntPtr.Zero, + rcClient.left, rcClient.top, + rcClient.Width, rcClient.Height, + SetWindowPosFlags.SWP_FRAMECHANGED); + + if (_isClientAreaExtended) + { + var margins = UpdateExtendMargins(); + + DwmExtendFrameIntoClientArea(_hwnd, ref margins); + } + else + { + var margins = new MARGINS(); + DwmExtendFrameIntoClientArea(_hwnd, ref margins); + + _offScreenMargin = new Thickness(); + _extendedMargins = new Thickness(); + } } - ExtendClientAreaToDecorationsChanged?.Invoke(true); + ExtendClientAreaToDecorationsChanged?.Invoke(_isClientAreaExtended); } private void ShowWindow(WindowState state) From df7f6a4fdb6da342dd2106e93c669f4bca5f66fe Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 10 Jun 2020 20:57:56 -0300 Subject: [PATCH 152/354] fix titlebar sizing. --- src/Avalonia.Controls/Chrome/TitleBar.cs | 5 +++++ src/Avalonia.Themes.Fluent/TitleBar.xaml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index b0ae25892e3..aeac9b76d40 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -62,6 +62,11 @@ void InvalidateSize() if (_hostWindow.WindowState != WindowState.FullScreen) { Height = _hostWindow.WindowDecorationMargins.Top; + + if (_captionButtons != null) + { + _captionButtons.Height = Height; + } } } diff --git a/src/Avalonia.Themes.Fluent/TitleBar.xaml b/src/Avalonia.Themes.Fluent/TitleBar.xaml index db4dbe95a20..3c194e5d44e 100644 --- a/src/Avalonia.Themes.Fluent/TitleBar.xaml +++ b/src/Avalonia.Themes.Fluent/TitleBar.xaml @@ -15,7 +15,7 @@ - + From 3ba935c2071d1a28c0efb129af9367396822094f Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 14 Jun 2020 13:50:57 -0300 Subject: [PATCH 153/354] fix managed titlebar sizing. --- src/Avalonia.Controls/Chrome/TitleBar.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index aeac9b76d40..5b938c6830f 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -48,6 +48,8 @@ public void Attach() }; _captionButtons?.Attach(_hostWindow); + + InvalidateSize(); } } From e1de29cf540f14c0e162aad5cc30925b4ca1614a Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 14 Jun 2020 15:31:44 -0300 Subject: [PATCH 154/354] fix titlebar and caption buttons --- src/Avalonia.Controls/Chrome/TitleBar.cs | 10 ++++++--- .../CaptionButtons.xaml | 21 ++++++++++++------- src/Avalonia.Themes.Fluent/TitleBar.xaml | 2 +- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index 5b938c6830f..8e8010d3d4d 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -1,9 +1,6 @@ using System; using System.Reactive.Disposables; using Avalonia.Controls.Primitives; -using Avalonia.Input; -using Avalonia.LogicalTree; -using Avalonia.Media; namespace Avalonia.Controls.Chrome { @@ -18,6 +15,11 @@ public TitleBar(Window hostWindow) _hostWindow = hostWindow; } + public TitleBar() + { + + } + public void Attach() { if (_disposables == null) @@ -94,6 +96,8 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e) _captionButtons = e.NameScope.Find("PART_CaptionButtons"); _captionButtons.Attach(_hostWindow); + + InvalidateSize(); } } } diff --git a/src/Avalonia.Themes.Default/CaptionButtons.xaml b/src/Avalonia.Themes.Default/CaptionButtons.xaml index 8d6d6fb6fc8..c47ab05fd6b 100644 --- a/src/Avalonia.Themes.Default/CaptionButtons.xaml +++ b/src/Avalonia.Themes.Default/CaptionButtons.xaml @@ -1,6 +1,11 @@ - - - + - + - + @@ -43,7 +48,7 @@ - + diff --git a/src/Avalonia.Themes.Fluent/TitleBar.xaml b/src/Avalonia.Themes.Fluent/TitleBar.xaml index 3c194e5d44e..45798d3fa15 100644 --- a/src/Avalonia.Themes.Fluent/TitleBar.xaml +++ b/src/Avalonia.Themes.Fluent/TitleBar.xaml @@ -5,7 +5,7 @@ - - + - + - + - + - + @@ -69,4 +64,7 @@ - + + diff --git a/src/Avalonia.Themes.Default/TitleBar.xaml b/src/Avalonia.Themes.Default/TitleBar.xaml index 856b90857c7..45798d3fa15 100644 --- a/src/Avalonia.Themes.Default/TitleBar.xaml +++ b/src/Avalonia.Themes.Default/TitleBar.xaml @@ -5,15 +5,49 @@ + + + + + + + + + + + + From 50ec4da4cd3b08a53f60b2ec5c5c8e4e008d5b15 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 16 Jun 2020 15:01:53 -0300 Subject: [PATCH 157/354] dont keep capture when minimising. --- src/Avalonia.Controls/Chrome/CaptionButtons.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Controls/Chrome/CaptionButtons.cs b/src/Avalonia.Controls/Chrome/CaptionButtons.cs index 99db4e550bf..58f5b09c0d5 100644 --- a/src/Avalonia.Controls/Chrome/CaptionButtons.cs +++ b/src/Avalonia.Controls/Chrome/CaptionButtons.cs @@ -54,10 +54,10 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e) var minimiseButton = e.NameScope.Find("PART_MinimiseButton"); var fullScreenButton = e.NameScope.Find("PART_FullScreenButton"); - closeButton.PointerPressed += (sender, e) => _hostWindow.Close(); - restoreButton.PointerPressed += (sender, e) => _hostWindow.WindowState = _hostWindow.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; - minimiseButton.PointerPressed += (sender, e) => _hostWindow.WindowState = WindowState.Minimized; - fullScreenButton.PointerPressed += (sender, e) => _hostWindow.WindowState = _hostWindow.WindowState == WindowState.FullScreen ? WindowState.Normal : WindowState.FullScreen; + closeButton.PointerReleased += (sender, e) => _hostWindow.Close(); + restoreButton.PointerReleased += (sender, e) => _hostWindow.WindowState = _hostWindow.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; + minimiseButton.PointerReleased += (sender, e) => _hostWindow.WindowState = WindowState.Minimized; + fullScreenButton.PointerReleased += (sender, e) => _hostWindow.WindowState = _hostWindow.WindowState == WindowState.FullScreen ? WindowState.Normal : WindowState.FullScreen; } } } From 8a5dcaddd407b69f6fc950bb9fcaadced6b11c00 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 19 Jun 2020 14:59:34 +0300 Subject: [PATCH 158/354] Patch MSBuild tasks assembly during packaging --- nukebuild/Build.cs | 2 + nukebuild/BuildTasksPatcher.cs | 76 +++++++++++++++++++ nukebuild/_build.csproj | 3 + .../Avalonia.Build.Tasks.csproj | 19 ----- 4 files changed, 81 insertions(+), 19 deletions(-) create mode 100644 nukebuild/BuildTasksPatcher.cs diff --git a/nukebuild/Build.cs b/nukebuild/Build.cs index 5460dc7720a..d6e8889a124 100644 --- a/nukebuild/Build.cs +++ b/nukebuild/Build.cs @@ -268,6 +268,8 @@ void RunCoreTest(string projectName) .DependsOn(CreateIntermediateNugetPackages) .Executes(() => { + BuildTasksPatcher.PatchBuildTasksInPackage(Parameters.NugetIntermediateRoot / "Avalonia.Build.Tasks." + + Parameters.Version + ".nupkg"); var config = Numerge.MergeConfiguration.LoadFile(RootDirectory / "nukebuild" / "numerge.config"); EnsureCleanDirectory(Parameters.NugetRoot); if(!Numerge.NugetPackageMerger.Merge(Parameters.NugetIntermediateRoot, Parameters.NugetRoot, config, diff --git a/nukebuild/BuildTasksPatcher.cs b/nukebuild/BuildTasksPatcher.cs new file mode 100644 index 00000000000..44f01da6690 --- /dev/null +++ b/nukebuild/BuildTasksPatcher.cs @@ -0,0 +1,76 @@ +using System; +using System.IO; +using System.IO.Compression; +using System.Linq; +using ILRepacking; +using Mono.Cecil; + +public class BuildTasksPatcher +{ + public static void PatchBuildTasksInPackage(string packagePath) + { + using (var archive = new ZipArchive(File.Open(packagePath, FileMode.Open, FileAccess.ReadWrite), + ZipArchiveMode.Update)) + { + + foreach (var entry in archive.Entries.ToList()) + { + if (entry.Name == "Avalonia.Build.Tasks.dll") + { + var temp = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".dll"); + var output = temp + ".output"; + var patched = new MemoryStream(); + try + { + entry.ExtractToFile(temp, true); + var repack = new ILRepacking.ILRepack(new RepackOptions() + { + Internalize = true, + InputAssemblies = new[] + { + temp, typeof(Mono.Cecil.AssemblyDefinition).Assembly.GetModules()[0] + .FullyQualifiedName + }, + SearchDirectories = new string[0], + OutputFile = output + }); + repack.Repack(); + + + // 'hurr-durr assembly with the same name is already loaded' prevention + using (var asm = AssemblyDefinition.ReadAssembly(output, + new ReaderParameters { ReadWrite = true, InMemory = true, })) + { + asm.Name = new AssemblyNameDefinition( + "Avalonia.Build.Tasks." + + Guid.NewGuid().ToString().Replace("-", ""), + new Version(0, 0, 0)); + asm.Write(patched); + patched.Position = 0; + } + } + finally + { + try + { + if (File.Exists(temp)) + File.Delete(temp); + if (File.Exists(output)) + File.Delete(output); + } + catch + { + //ignore + } + } + + var fn = entry.FullName; + entry.Delete(); + var newEntry = archive.CreateEntry(fn, CompressionLevel.Optimal); + using (var s = newEntry.Open()) + patched.CopyTo(s); + } + } + } + } +} \ No newline at end of file diff --git a/nukebuild/_build.csproj b/nukebuild/_build.csproj index 584c36d0337..4c64d4ff932 100644 --- a/nukebuild/_build.csproj +++ b/nukebuild/_build.csproj @@ -14,6 +14,9 @@ + + + diff --git a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj index 582e4499c58..d4022b70a05 100644 --- a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj +++ b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj @@ -46,25 +46,6 @@ - - - - - - $(MSBuildThisFileDirectory)bin\$(Configuration)\$(TargetFramework) - - - - - - - - - - - - - From 80e02dd2f7b5f1f0546619fd45b5ac3e353fcb23 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 22 Jun 2020 14:05:30 -0300 Subject: [PATCH 159/354] update headless platform stubs. --- samples/ControlCatalog.NetCore/Program.cs | 1 + .../HeadlessVncFramebufferSource.cs | 2 +- .../HeadlessPlatformRenderInterface.cs | 89 ++++++++++++------- .../HeadlessPlatformStubs.cs | 23 ++++- src/Avalonia.Headless/HeadlessWindowImpl.cs | 57 ++++++++++-- src/Avalonia.Headless/IHeadlessWindow.cs | 10 +-- 6 files changed, 133 insertions(+), 49 deletions(-) diff --git a/samples/ControlCatalog.NetCore/Program.cs b/samples/ControlCatalog.NetCore/Program.cs index 26ac30cb950..142736a0bbf 100644 --- a/samples/ControlCatalog.NetCore/Program.cs +++ b/samples/ControlCatalog.NetCore/Program.cs @@ -12,6 +12,7 @@ using Avalonia.Skia; using Avalonia.ReactiveUI; using Avalonia.Threading; +using Avalonia.Dialogs; namespace ControlCatalog.NetCore { diff --git a/src/Avalonia.Headless.Vnc/HeadlessVncFramebufferSource.cs b/src/Avalonia.Headless.Vnc/HeadlessVncFramebufferSource.cs index df68807195d..32f9f99709c 100644 --- a/src/Avalonia.Headless.Vnc/HeadlessVncFramebufferSource.cs +++ b/src/Avalonia.Headless.Vnc/HeadlessVncFramebufferSource.cs @@ -27,7 +27,7 @@ public HeadlessVncFramebufferSource(VncServerSession session, Window window) int TranslateButton(VncButton vncButton) => vncButton == VncButton.Left ? 0 : vncButton == VncButton.Right ? 1 : 2; - var modifiers = (InputModifiers)(((int)buttons & 7) << 4); + var modifiers = (RawInputModifiers)(((int)buttons & 7) << 4); Dispatcher.UIThread.Post(() => { diff --git a/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs b/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs index abeb41cc081..5eb91e3c6be 100644 --- a/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs +++ b/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs @@ -21,8 +21,9 @@ public static void Initialize() public IEnumerable InstalledFontNames { get; } = new[] { "Tahoma" }; - public IFormattedTextImpl CreateFormattedText(string text, Typeface typeface, TextAlignment textAlignment, - TextWrapping wrapping, Size constraint, IReadOnlyList spans) + public bool SupportsIndividualRoundRects => throw new NotImplementedException(); + + public IFormattedTextImpl CreateFormattedText(string text, Typeface typeface, double fontSize, TextAlignment textAlignment, TextWrapping wrapping, Size constraint, IReadOnlyList spans) { return new HeadlessFormattedTextStub(text, constraint); } @@ -68,6 +69,27 @@ public IBitmapImpl LoadBitmap(Stream stream) public IBitmapImpl LoadBitmap(PixelFormat format, IntPtr data, PixelSize size, Vector dpi, int stride) { return new HeadlessBitmapStub(new Size(1, 1), new Vector(96, 96)); + } + + public IBitmapImpl LoadBitmapToWidth(Stream stream, int width, BitmapInterpolationMode interpolationMode = BitmapInterpolationMode.HighQuality) + { + return new HeadlessBitmapStub(new Size(width, width), new Vector(96, 96)); + } + + public IBitmapImpl LoadBitmapToHeight(Stream stream, int height, BitmapInterpolationMode interpolationMode = BitmapInterpolationMode.HighQuality) + { + return new HeadlessBitmapStub(new Size(height, height), new Vector(96, 96)); + } + + public IBitmapImpl ResizeBitmap(IBitmapImpl bitmapImpl, PixelSize destinationSize, BitmapInterpolationMode interpolationMode = BitmapInterpolationMode.HighQuality) + { + return new HeadlessBitmapStub(destinationSize, new Vector(96, 96)); + } + + public IGlyphRunImpl CreateGlyphRun(GlyphRun glyphRun, out double width) + { + width = 100; + return new HeadlessGlyphRunStub(); } class HeadlessGeometryStub : IGeometryImpl @@ -126,6 +148,13 @@ private HeadlessTransformedGeometryStub((IGeometryImpl b, Matrix transform, Rect public Matrix Transform { get; } } + class HeadlessGlyphRunStub : IGlyphRunImpl + { + public void Dispose() + { + } + } + class HeadlessStreamingGeometryStub : HeadlessGeometryStub, IStreamGeometryImpl { public HeadlessStreamingGeometryStub() : base(Rect.Empty) @@ -264,42 +293,11 @@ public void Clear(Color color) } - public void DrawImage(IRef source, double opacity, Rect sourceRect, Rect destRect, - BitmapInterpolationMode bitmapInterpolationMode = BitmapInterpolationMode.Default) - { - - } - - public void DrawImage(IRef source, IBrush opacityMask, Rect opacityMaskRect, Rect destRect) - { - - } - - public void DrawLine(Pen pen, Point p1, Point p2) - { - - } - - public void DrawGeometry(IBrush brush, Pen pen, IGeometryImpl geometry) - { - - } - - public void DrawRectangle(Pen pen, Rect rect, float cornerRadius = 0) - { - - } - public void DrawText(IBrush foreground, Point origin, IFormattedTextImpl text) { } - public void FillRectangle(IBrush brush, Rect rect, float cornerRadius = 0) - { - - } - public IRenderTargetBitmapImpl CreateLayer(Size size) { return new HeadlessBitmapStub(size, new Vector(96, 96)); @@ -362,6 +360,31 @@ public void DrawGeometry(IBrush brush, IPen pen, IGeometryImpl geometry) public void DrawRectangle(IPen pen, Rect rect, float cornerRadius = 0) { } + + public void DrawBitmap(IRef source, double opacity, Rect sourceRect, Rect destRect, BitmapInterpolationMode bitmapInterpolationMode = BitmapInterpolationMode.Default) + { + + } + + public void DrawBitmap(IRef source, IBrush opacityMask, Rect opacityMaskRect, Rect destRect) + { + + } + + public void DrawRectangle(IBrush brush, IPen pen, RoundedRect rect, BoxShadows boxShadow = default) + { + + } + + public void DrawGlyphRun(IBrush foreground, GlyphRun glyphRun, Point baselineOrigin) + { + + } + + public void PushClip(RoundedRect clip) + { + + } } class HeadlessRenderTarget : IRenderTarget diff --git a/src/Avalonia.Headless/HeadlessPlatformStubs.cs b/src/Avalonia.Headless/HeadlessPlatformStubs.cs index debe77c1b68..f8f5f2a046b 100644 --- a/src/Avalonia.Headless/HeadlessPlatformStubs.cs +++ b/src/Avalonia.Headless/HeadlessPlatformStubs.cs @@ -13,6 +13,8 @@ namespace Avalonia.Headless class HeadlessClipboardStub : IClipboard { private string _text; + private IDataObject _data; + public Task GetTextAsync() { return Task.Run(() => _text); @@ -27,6 +29,21 @@ public Task ClearAsync() { return Task.Run(() => _text = null); } + + public Task SetDataObjectAsync(IDataObject data) + { + return Task.Run(() => _data = data); + } + + public Task GetFormatsAsync() + { + throw new NotImplementedException(); + } + + public async Task GetDataAsync(string format) + { + return await Task.Run(() => _data); + } } class HeadlessCursorFactoryStub : IStandardCursorFactory @@ -46,12 +63,12 @@ class HeadlessPlatformSettingsStub : IPlatformSettings class HeadlessSystemDialogsStub : ISystemDialogImpl { - public Task ShowFileDialogAsync(FileDialog dialog, IWindowImpl parent) + public Task ShowFileDialogAsync(FileDialog dialog, Window parent) { return Task.Run(() => (string[])null); } - public Task ShowFolderDialogAsync(OpenFolderDialog dialog, IWindowImpl parent) + public Task ShowFolderDialogAsync(OpenFolderDialog dialog, Window parent) { return Task.Run(() => (string)null); } @@ -89,7 +106,7 @@ class HeadlessScreensStub : IScreenImpl public IReadOnlyList AllScreens { get; } = new[] { - new Screen(new PixelRect(0, 0, 1920, 1280), + new Screen(1, new PixelRect(0, 0, 1920, 1280), new PixelRect(0, 0, 1920, 1280), true), }; } diff --git a/src/Avalonia.Headless/HeadlessWindowImpl.cs b/src/Avalonia.Headless/HeadlessWindowImpl.cs index 2ff9d3e9497..679edcaa591 100644 --- a/src/Avalonia.Headless/HeadlessWindowImpl.cs +++ b/src/Avalonia.Headless/HeadlessWindowImpl.cs @@ -224,17 +224,25 @@ public IRef GetLastRenderedFrame() // TODO: Hook recent Popup changes. IPopupPositioner IPopupImpl.PopupPositioner => null; - void IHeadlessWindow.KeyPress(Key key, InputModifiers modifiers) + public Size MaxAutoSizeHint => new Size(1920, 1080); + + public Action TransparencyLevelChanged { get; set; } + + public WindowTransparencyLevel TransparencyLevel => WindowTransparencyLevel.None; + + public Action GotInputWhenDisabled { get; set; } + + void IHeadlessWindow.KeyPress(Key key, RawInputModifiers modifiers) { - Input?.Invoke(new RawKeyEventArgs(_keyboard, Timestamp, RawKeyEventType.KeyDown, key, modifiers)); + Input?.Invoke(new RawKeyEventArgs(_keyboard, Timestamp, InputRoot, RawKeyEventType.KeyDown, key, modifiers)); } - void IHeadlessWindow.KeyRelease(Key key, InputModifiers modifiers) + void IHeadlessWindow.KeyRelease(Key key, RawInputModifiers modifiers) { - Input?.Invoke(new RawKeyEventArgs(_keyboard, Timestamp, RawKeyEventType.KeyUp, key, modifiers)); + Input?.Invoke(new RawKeyEventArgs(_keyboard, Timestamp, InputRoot, RawKeyEventType.KeyUp, key, modifiers)); } - void IHeadlessWindow.MouseDown(Point point, int button, InputModifiers modifiers) + void IHeadlessWindow.MouseDown(Point point, int button, RawInputModifiers modifiers) { Input?.Invoke(new RawPointerEventArgs(MouseDevice, Timestamp, InputRoot, button == 0 ? RawPointerEventType.LeftButtonDown : @@ -242,13 +250,13 @@ void IHeadlessWindow.MouseDown(Point point, int button, InputModifiers modifiers point, modifiers)); } - void IHeadlessWindow.MouseMove(Point point, InputModifiers modifiers) + void IHeadlessWindow.MouseMove(Point point, RawInputModifiers modifiers) { Input?.Invoke(new RawPointerEventArgs(MouseDevice, Timestamp, InputRoot, RawPointerEventType.Move, point, modifiers)); } - void IHeadlessWindow.MouseUp(Point point, int button, InputModifiers modifiers) + void IHeadlessWindow.MouseUp(Point point, int button, RawInputModifiers modifiers) { Input?.Invoke(new RawPointerEventArgs(MouseDevice, Timestamp, InputRoot, button == 0 ? RawPointerEventType.LeftButtonUp : @@ -266,5 +274,40 @@ public IPopupImpl CreatePopup() // TODO: Hook recent Popup changes. return null; } + + public void SetWindowManagerAddShadowHint(bool enabled) + { + + } + + public void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel) + { + + } + + public void SetParent(IWindowImpl parent) + { + + } + + public void SetEnabled(bool enable) + { + + } + + public void SetSystemDecorations(SystemDecorations enabled) + { + + } + + public void BeginMoveDrag(PointerPressedEventArgs e) + { + + } + + public void BeginResizeDrag(WindowEdge edge, PointerPressedEventArgs e) + { + + } } } diff --git a/src/Avalonia.Headless/IHeadlessWindow.cs b/src/Avalonia.Headless/IHeadlessWindow.cs index aafad2e5001..282662f98ba 100644 --- a/src/Avalonia.Headless/IHeadlessWindow.cs +++ b/src/Avalonia.Headless/IHeadlessWindow.cs @@ -8,10 +8,10 @@ namespace Avalonia.Headless public interface IHeadlessWindow { IRef GetLastRenderedFrame(); - void KeyPress(Key key, InputModifiers modifiers); - void KeyRelease(Key key, InputModifiers modifiers); - void MouseDown(Point point, int button, InputModifiers modifiers = InputModifiers.None); - void MouseMove(Point point, InputModifiers modifiers = InputModifiers.None); - void MouseUp(Point point, int button, InputModifiers modifiers = InputModifiers.None); + void KeyPress(Key key, RawInputModifiers modifiers); + void KeyRelease(Key key, RawInputModifiers modifiers); + void MouseDown(Point point, int button, RawInputModifiers modifiers = RawInputModifiers.None); + void MouseMove(Point point, RawInputModifiers modifiers = RawInputModifiers.None); + void MouseUp(Point point, int button, RawInputModifiers modifiers = RawInputModifiers.None); } } From 0d1c6915769bd63eea1b175e3eae8c1fc6030dc0 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 22 Jun 2020 16:40:19 -0300 Subject: [PATCH 160/354] add headless fontmanager. --- .../AvaloniaHeadlessPlatform.cs | 3 +- .../HeadlessPlatformRenderInterface.cs | 5 ++ .../HeadlessPlatformStubs.cs | 88 +++++++++++++++++++ 3 files changed, 95 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Headless/AvaloniaHeadlessPlatform.cs b/src/Avalonia.Headless/AvaloniaHeadlessPlatform.cs index 5857d941821..4f394716457 100644 --- a/src/Avalonia.Headless/AvaloniaHeadlessPlatform.cs +++ b/src/Avalonia.Headless/AvaloniaHeadlessPlatform.cs @@ -65,7 +65,8 @@ internal static void Initialize() .Bind().ToConstant(new KeyboardDevice()) .Bind().ToConstant(new RenderLoop()) .Bind().ToConstant(new RenderTimer(60)) - + .Bind().ToSingleton() + .Bind().ToSingleton() .Bind().ToConstant(new HeadlessWindowingPlatform()) .Bind().ToSingleton(); } diff --git a/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs b/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs index 5eb91e3c6be..f01d335fc7c 100644 --- a/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs +++ b/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs @@ -104,6 +104,11 @@ public HeadlessGeometryStub(Rect bounds) public Rect GetRenderBounds(IPen pen) { + if(pen is null) + { + return Bounds; + } + return Bounds.Inflate(pen.Thickness / 2); } diff --git a/src/Avalonia.Headless/HeadlessPlatformStubs.cs b/src/Avalonia.Headless/HeadlessPlatformStubs.cs index f8f5f2a046b..843865d6a97 100644 --- a/src/Avalonia.Headless/HeadlessPlatformStubs.cs +++ b/src/Avalonia.Headless/HeadlessPlatformStubs.cs @@ -1,12 +1,18 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.IO; +using System.Linq; using System.Threading.Tasks; using Avalonia.Controls; using Avalonia.Controls.Platform; using Avalonia.Input; using Avalonia.Input.Platform; +using Avalonia.Media; +using Avalonia.Media.Fonts; +using Avalonia.Media.TextFormatting; using Avalonia.Platform; +using Avalonia.Utility; namespace Avalonia.Headless { @@ -74,6 +80,88 @@ public Task ShowFolderDialogAsync(OpenFolderDialog dialog, Window parent } } + class HeadlessGlyphTypefaceImpl : IGlyphTypefaceImpl + { + public short DesignEmHeight => 10; + + public int Ascent => 5; + + public int Descent => 5; + + public int LineGap => 2; + + public int UnderlinePosition => 5; + + public int UnderlineThickness => 5; + + public int StrikethroughPosition => 5; + + public int StrikethroughThickness => 2; + + public bool IsFixedPitch => true; + + public void Dispose() + { + } + + public ushort GetGlyph(uint codepoint) + { + return 1; + } + + public int GetGlyphAdvance(ushort glyph) + { + return 1; + } + + public int[] GetGlyphAdvances(ReadOnlySpan glyphs) + { + return glyphs.ToArray().Select(x => (int)x).ToArray(); + } + + public ushort[] GetGlyphs(ReadOnlySpan codepoints) + { + return codepoints.ToArray().Select(x => (ushort)x).ToArray(); + } + } + + class HeadlessTextShaperStub : ITextShaperImpl + { + public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) + { + return new GlyphRun(new GlyphTypeface(new Typeface("Arial")), textFormat.FontRenderingEmSize, + new ReadOnlySlice(new ushort[] { 1, 2, 3 }), + new ReadOnlySlice(new double[] { 1, 2, 3 }), + new ReadOnlySlice(new Vector[] { new Vector(1, 1), new Vector(2, 2), new Vector(3, 3) }), + text, + new ReadOnlySlice(new ushort[] { 1, 2, 3 })); + } + } + + class HeadlessFontManagerStub : IFontManagerImpl + { + public IGlyphTypefaceImpl CreateGlyphTypeface(Typeface typeface) + { + return new HeadlessGlyphTypefaceImpl(); + } + + public string GetDefaultFontFamilyName() + { + return "Arial"; + } + + public IEnumerable GetInstalledFontFamilyNames(bool checkForUpdates = false) + { + return new List { "Arial" }; + } + + public bool TryMatchCharacter(int codepoint, FontWeight fontWeight, FontStyle fontStyle, FontFamily fontFamily, CultureInfo culture, out FontKey fontKey) + { + fontKey = new FontKey("Arial", fontWeight, fontStyle); + return true; + } + } + class HeadlessIconLoaderStub : IPlatformIconLoader { From 28fdb43ae0fc0710122637f7fb20f23fd74aa9b3 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 23 Jun 2020 17:25:30 -0300 Subject: [PATCH 161/354] windowimpl tells window then managed chrome is required. --- src/Avalonia.Controls/Platform/IWindowImpl.cs | 2 ++ src/Avalonia.Controls/Window.cs | 36 ++++++++----------- src/Windows/Avalonia.Win32/WindowImpl.cs | 4 ++- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index 15315063fe4..55fe8c328b6 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -104,6 +104,8 @@ public interface IWindowImpl : IWindowBaseImpl void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight); Action ExtendClientAreaToDecorationsChanged { get; set; } + + bool NeedsManagedDecorations { get; } Thickness ExtendedMargins { get; } diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 3bbe0ce4e1d..d1ad33e9e8b 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -211,8 +211,6 @@ static Window() { w.PlatformImpl.SetExtendClientAreaChromeHints((ExtendClientAreaChromeHints)e.NewValue); } - - w.HandleChromeHintsChanged((ExtendClientAreaChromeHints)e.NewValue); }); ExtendClientAreaTitleBarHeightHintProperty.Changed.AddClassHandler( @@ -543,6 +541,20 @@ protected virtual void ExtendClientAreaToDecorationsChanged(bool isExtended) WindowDecorationMargins = PlatformImpl.ExtendedMargins; OffScreenMargin = PlatformImpl.OffScreenMargin; + + if(PlatformImpl.NeedsManagedDecorations) + { + if (_managedTitleBar == null) + { + _managedTitleBar = new TitleBar(this); + _managedTitleBar.Attach(); + } + } + else + { + _managedTitleBar?.Detach(); + _managedTitleBar = null; + } } /// @@ -907,26 +919,6 @@ protected sealed override void HandleResized(Size clientSize) base.HandleResized(clientSize); } - private void HandleChromeHintsChanged (ExtendClientAreaChromeHints hints) - { - if(hints.HasFlag(ExtendClientAreaChromeHints.ManagedChromeButtons)) - { - if(_managedTitleBar == null) - { - _managedTitleBar = new TitleBar(this); - } - - _managedTitleBar.Attach(); - } - else - { - if(_managedTitleBar != null) - { - _managedTitleBar.Detach(); - } - } - } - /// /// Raises the event. /// diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index b3c83879505..250b0cf029a 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -1057,7 +1057,9 @@ public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) public bool IsClientAreaExtendedToDecorations => _isClientAreaExtended; - public Action ExtendClientAreaToDecorationsChanged { get; set; } + public Action ExtendClientAreaToDecorationsChanged { get; set; } + + public bool NeedsManagedDecorations => _isClientAreaExtended && _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChromeButtons); public Thickness ExtendedMargins => _extendedMargins; From 42cb926e92269d15c8b49260a3af36bd0571f502 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 23 Jun 2020 17:38:40 -0300 Subject: [PATCH 162/354] indicate if managed decorations are needed via platform. --- src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs | 2 ++ src/Avalonia.DesignerSupport/Remote/Stubs.cs | 2 ++ src/Avalonia.Native/WindowImpl.cs | 2 ++ src/Avalonia.X11/X11Window.cs | 2 ++ 4 files changed, 8 insertions(+) diff --git a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs index c03ccf902ab..dce24df9d91 100644 --- a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs +++ b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs @@ -88,6 +88,8 @@ public void SetMinMaxSize(Size minSize, Size maxSize) public Thickness OffScreenMargin { get; } = new Thickness(); + public bool NeedsManagedDecorations => false; + public void Activate() { } diff --git a/src/Avalonia.DesignerSupport/Remote/Stubs.cs b/src/Avalonia.DesignerSupport/Remote/Stubs.cs index cb0a9cd524a..84c52d6fbf3 100644 --- a/src/Avalonia.DesignerSupport/Remote/Stubs.cs +++ b/src/Avalonia.DesignerSupport/Remote/Stubs.cs @@ -172,6 +172,8 @@ public void SetWindowManagerAddShadowHint(bool enabled) public WindowTransparencyLevel TransparencyLevel { get; private set; } public bool IsClientAreaExtendedToDecorations { get; } + + public bool NeedsManagedDecorations => false; } class ClipboardStub : IClipboard diff --git a/src/Avalonia.Native/WindowImpl.cs b/src/Avalonia.Native/WindowImpl.cs index 898cf2dea8a..ce312b30d2b 100644 --- a/src/Avalonia.Native/WindowImpl.cs +++ b/src/Avalonia.Native/WindowImpl.cs @@ -181,6 +181,8 @@ public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) ExtendClientAreaToDecorationsChanged?.Invoke(_isExtended); } + public bool NeedsManagedDecorations => false; + public void ShowTaskbarIcon(bool value) { // NO OP On OSX diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index 24392f61d6c..56ac7c833ef 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -1127,5 +1127,7 @@ public void SetWindowManagerAddShadowHint(bool enabled) } public WindowTransparencyLevel TransparencyLevel => _transparencyHelper.CurrentLevel; + + public bool NeedsManagedDecorations => false; } } From 2cc40e3c6ab6958116d66d97f6bf8a3aab3c4a87 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 23 Jun 2020 17:39:00 -0300 Subject: [PATCH 163/354] add a prefer managed chrome to demo page --- .../Pages/WindowCustomizationsPage.xaml | 1 + .../ViewModels/MainWindowViewModel.cs | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml index cea8e4b94ee..e3fdbeaa694 100644 --- a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml +++ b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml @@ -9,6 +9,7 @@ + None diff --git a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs index 27ea1ffb155..2dab49cf0ad 100644 --- a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs +++ b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs @@ -65,7 +65,7 @@ public MainWindowViewModel(IManagedNotificationManager notificationManager) WindowState.FullScreen, }; - this.WhenAnyValue(x => x.SystemChromeButtonsEnabled, x=>x.ManagedChromeButtonsEnabled, x => x.SystemTitleBarEnabled) + this.WhenAnyValue(x => x.SystemChromeButtonsEnabled, x=>x.ManagedChromeButtonsEnabled, x => x.SystemTitleBarEnabled, x=>x.PreferSystemChromeButtonsEnabled) .Subscribe(x => { var hints = ExtendClientAreaChromeHints.NoChrome | ExtendClientAreaChromeHints.OSXThickTitleBar; @@ -85,6 +85,11 @@ public MainWindowViewModel(IManagedNotificationManager notificationManager) hints |= ExtendClientAreaChromeHints.SystemTitleBar; } + if(x.Item4) + { + hints |= ExtendClientAreaChromeHints.PreferSystemChromeButtons; + } + ChromeHints = hints; }); @@ -142,6 +147,13 @@ public bool ManagedChromeButtonsEnabled set { this.RaiseAndSetIfChanged(ref _managedChromeButtonsEnabled, value); } } + private bool _preferSystemChromeButtonsEnabled; + + public bool PreferSystemChromeButtonsEnabled + { + get { return _preferSystemChromeButtonsEnabled; } + set { this.RaiseAndSetIfChanged(ref _preferSystemChromeButtonsEnabled, value); } + } private double _titleBarHeight; From 122821317f14cc968b78c61b342f36cf762b0c9e Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 23 Jun 2020 17:44:34 -0300 Subject: [PATCH 164/354] remove unused hint flags. --- .../Pages/WindowCustomizationsPage.xaml | 6 +- .../ViewModels/MainWindowViewModel.cs | 71 +++++-------------- .../Platform/ExtendClientAreaChromeHints.cs | 11 +-- 3 files changed, 22 insertions(+), 66 deletions(-) diff --git a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml index e3fdbeaa694..db2a8a465ae 100644 --- a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml +++ b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml @@ -6,10 +6,8 @@ x:Class="ControlCatalog.Pages.WindowCustomizationsPage"> - - - - + + None diff --git a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs index 2dab49cf0ad..e8dd12269b0 100644 --- a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs +++ b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs @@ -16,6 +16,12 @@ class MainWindowViewModel : ReactiveObject private bool _isMenuItemChecked = true; private WindowState _windowState; private WindowState[] _windowStates; + private int _transparencyLevel; + private ExtendClientAreaChromeHints _chromeHints; + private bool _extendClientAreaEnabled; + private bool _systemTitleBarEnabled; + private bool _preferSystemChromeEnabled; + private double _titleBarHeight; public MainWindowViewModel(IManagedNotificationManager notificationManager) { @@ -65,27 +71,17 @@ public MainWindowViewModel(IManagedNotificationManager notificationManager) WindowState.FullScreen, }; - this.WhenAnyValue(x => x.SystemChromeButtonsEnabled, x=>x.ManagedChromeButtonsEnabled, x => x.SystemTitleBarEnabled, x=>x.PreferSystemChromeButtonsEnabled) + this.WhenAnyValue(x => x.SystemTitleBarEnabled, x=>x.PreferSystemChromeEnabled) .Subscribe(x => { var hints = ExtendClientAreaChromeHints.NoChrome | ExtendClientAreaChromeHints.OSXThickTitleBar; if(x.Item1) - { - hints |= ExtendClientAreaChromeHints.SystemChromeButtons; - } - - if(x.Item2) - { - hints |= ExtendClientAreaChromeHints.ManagedChromeButtons; - } - - if(x.Item3) { hints |= ExtendClientAreaChromeHints.SystemTitleBar; } - if(x.Item4) + if(x.Item2) { hints |= ExtendClientAreaChromeHints.PreferSystemChromeButtons; } @@ -93,69 +89,39 @@ public MainWindowViewModel(IManagedNotificationManager notificationManager) ChromeHints = hints; }); - SystemTitleBarEnabled = true; - SystemChromeButtonsEnabled = true; + SystemTitleBarEnabled = true; TitleBarHeight = -1; - } - - private int _transparencyLevel; + } public int TransparencyLevel { get { return _transparencyLevel; } set { this.RaiseAndSetIfChanged(ref _transparencyLevel, value); } - } - - private ExtendClientAreaChromeHints _chromeHints; + } public ExtendClientAreaChromeHints ChromeHints { get { return _chromeHints; } set { this.RaiseAndSetIfChanged(ref _chromeHints, value); } - } - - - private bool _extendClientAreaEnabled; + } public bool ExtendClientAreaEnabled { get { return _extendClientAreaEnabled; } set { this.RaiseAndSetIfChanged(ref _extendClientAreaEnabled, value); } - } - - private bool _systemTitleBarEnabled; + } public bool SystemTitleBarEnabled { get { return _systemTitleBarEnabled; } set { this.RaiseAndSetIfChanged(ref _systemTitleBarEnabled, value); } - } - - private bool _systemChromeButtonsEnabled; + } - public bool SystemChromeButtonsEnabled + public bool PreferSystemChromeEnabled { - get { return _systemChromeButtonsEnabled; } - set { this.RaiseAndSetIfChanged(ref _systemChromeButtonsEnabled, value); } - } - - private bool _managedChromeButtonsEnabled; - - public bool ManagedChromeButtonsEnabled - { - get { return _managedChromeButtonsEnabled; } - set { this.RaiseAndSetIfChanged(ref _managedChromeButtonsEnabled, value); } - } - - private bool _preferSystemChromeButtonsEnabled; - - public bool PreferSystemChromeButtonsEnabled - { - get { return _preferSystemChromeButtonsEnabled; } - set { this.RaiseAndSetIfChanged(ref _preferSystemChromeButtonsEnabled, value); } - } - - private double _titleBarHeight; + get { return _preferSystemChromeEnabled; } + set { this.RaiseAndSetIfChanged(ref _preferSystemChromeEnabled, value); } + } public double TitleBarHeight { @@ -163,7 +129,6 @@ public double TitleBarHeight set { this.RaiseAndSetIfChanged(ref _titleBarHeight, value); } } - public WindowState WindowState { get { return _windowState; } diff --git a/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs b/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs index 022b6096991..fb6a4056db0 100644 --- a/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs +++ b/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs @@ -8,14 +8,7 @@ public enum ExtendClientAreaChromeHints NoChrome, Default = SystemTitleBar, SystemTitleBar = 0x01, - ManagedChromeButtons = 0x02, - SystemChromeButtons = 0x04, - - OSXThickTitleBar = 0x08, - - PreferSystemChromeButtons = 0x10, - - AdaptiveChromeWithTitleBar = SystemTitleBar | PreferSystemChromeButtons, - AdaptiveChromeWithoutTitleBar = PreferSystemChromeButtons, + PreferSystemChromeButtons = 0x02, + OSXThickTitleBar = 0x08, } } From ce6beb8851aa0cdb1c1601a69b56a277cfcfe5f6 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 23 Jun 2020 17:59:06 -0300 Subject: [PATCH 165/354] add some documentation. --- src/Avalonia.Controls/Platform/IWindowImpl.cs | 30 +++++++++++++++++++ src/Avalonia.Native/WindowImpl.cs | 13 ++++---- src/Windows/Avalonia.Win32/WindowImpl.cs | 22 ++++++++------ 3 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index 55fe8c328b6..43647dc7d00 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -95,20 +95,50 @@ public interface IWindowImpl : IWindowBaseImpl /// void SetMinMaxSize(Size minSize, Size maxSize); + /// + /// Sets if the ClientArea is extended into the non-client area. + /// + /// true to enable, false to disable void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint); + /// + /// Gets a value to indicate if the platform was able to extend client area to non-client area. + /// bool IsClientAreaExtendedToDecorations { get; } + /// + /// Sets hints that configure how the client area extends. + /// + /// void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints); + /// + /// Sets how big the non-client titlebar area should be. + /// + /// -1 for platform default, otherwise the height in DIPs. void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight); + /// + /// Gets or Sets an action that is called whenever one of the extend client area properties changed. + /// Action ExtendClientAreaToDecorationsChanged { get; set; } + /// + /// Gets a flag that indicates if Managed decorations i.e. caption buttons are required. + /// This property is used when is set. + /// bool NeedsManagedDecorations { get; } + /// + /// Gets a thickness that describes the amount each side of the non-client area extends into the client area. + /// It includes the titlebar. + /// Thickness ExtendedMargins { get; } + /// + /// Gets a thickness that describes the margin around the window that is offscreen. + /// This may happen when a window is maximized and is set. + /// Thickness OffScreenMargin { get; } } } diff --git a/src/Avalonia.Native/WindowImpl.cs b/src/Avalonia.Native/WindowImpl.cs index ce312b30d2b..ef2bd32bfc4 100644 --- a/src/Avalonia.Native/WindowImpl.cs +++ b/src/Avalonia.Native/WindowImpl.cs @@ -137,7 +137,7 @@ protected override bool ChromeHitTest (RawPointerEventArgs e) return false; } - + private void InvalidateExtendedMargins () { if(WindowState == WindowState.FullScreen) @@ -152,6 +152,7 @@ private void InvalidateExtendedMargins () ExtendClientAreaToDecorationsChanged?.Invoke(_isExtended); } + /// public void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint) { _isExtended = extendIntoClientAreaHint; @@ -161,16 +162,13 @@ public void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint) InvalidateExtendedMargins(); } + /// public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) - { - if(hints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChromeButtons)) - { - hints |= ExtendClientAreaChromeHints.SystemChromeButtons; - } - + { _native.SetExtendClientAreaHints ((AvnExtendClientAreaChromeHints)hints); } + /// public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) { _extendTitleBarHeight = titleBarHeight; @@ -181,6 +179,7 @@ public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) ExtendClientAreaToDecorationsChanged?.Invoke(_isExtended); } + /// public bool NeedsManagedDecorations => false; public void ShowTaskbarIcon(bool value) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 250b0cf029a..6025f96d22a 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -45,7 +45,8 @@ public partial class WindowImpl : IWindowImpl, EglGlPlatformSurface.IEglWindowGl private bool _isClientAreaExtended; private Thickness _extendedMargins; private Thickness _offScreenMargin; - + private double _extendTitleBarHint = -1; + #if USE_MANAGED_DRAG private readonly ManagedWindowResizeDragHelper _managedDrag; #endif @@ -73,8 +74,8 @@ public partial class WindowImpl : IWindowImpl, EglGlPlatformSurface.IEglWindowGl private Size _minSize; private Size _maxSize; private POINT _maxTrackSize; - private WindowImpl _parent; - private bool _extendClientAreaToDecorationsHint; + private WindowImpl _parent; + private ExtendClientAreaChromeHints _extendChromeHints = ExtendClientAreaChromeHints.Default; public WindowImpl() { @@ -1036,9 +1037,7 @@ public void SetExtendClientAreaToDecorationsHint(bool hint) _isClientAreaExtended = hint; ExtendClientArea(); - } - - private ExtendClientAreaChromeHints _extendChromeHints = ExtendClientAreaChromeHints.Default; + } public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) { @@ -1046,8 +1045,8 @@ public void SetExtendClientAreaChromeHints(ExtendClientAreaChromeHints hints) ExtendClientArea(); } - - private double _extendTitleBarHint = -1; + + /// public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) { _extendTitleBarHint = titleBarHeight; @@ -1055,14 +1054,19 @@ public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) ExtendClientArea(); } + /// public bool IsClientAreaExtendedToDecorations => _isClientAreaExtended; + /// public Action ExtendClientAreaToDecorationsChanged { get; set; } - + + /// public bool NeedsManagedDecorations => _isClientAreaExtended && _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChromeButtons); + /// public Thickness ExtendedMargins => _extendedMargins; + /// public Thickness OffScreenMargin => _offScreenMargin; private struct SavedWindowInfo From aa4dfc54953855395fb8ed132c5542329c1f1c4f Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 23 Jun 2020 18:17:13 -0300 Subject: [PATCH 166/354] rename flags and fix win32 implementation. --- .../ViewModels/MainWindowViewModel.cs | 4 +- .../Platform/ExtendClientAreaChromeHints.cs | 6 +-- src/Windows/Avalonia.Win32/WindowImpl.cs | 50 ++++++++----------- 3 files changed, 26 insertions(+), 34 deletions(-) diff --git a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs index e8dd12269b0..4356a032fad 100644 --- a/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs +++ b/samples/ControlCatalog/ViewModels/MainWindowViewModel.cs @@ -78,12 +78,12 @@ public MainWindowViewModel(IManagedNotificationManager notificationManager) if(x.Item1) { - hints |= ExtendClientAreaChromeHints.SystemTitleBar; + hints |= ExtendClientAreaChromeHints.SystemChrome; } if(x.Item2) { - hints |= ExtendClientAreaChromeHints.PreferSystemChromeButtons; + hints |= ExtendClientAreaChromeHints.PreferSystemChrome; } ChromeHints = hints; diff --git a/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs b/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs index fb6a4056db0..deb9e417abe 100644 --- a/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs +++ b/src/Avalonia.Controls/Platform/ExtendClientAreaChromeHints.cs @@ -6,9 +6,9 @@ namespace Avalonia.Platform public enum ExtendClientAreaChromeHints { NoChrome, - Default = SystemTitleBar, - SystemTitleBar = 0x01, - PreferSystemChromeButtons = 0x02, + Default = SystemChrome, + SystemChrome = 0x01, + PreferSystemChrome = 0x02, OSXThickTitleBar = 0x08, } } diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 6025f96d22a..4b64eabc265 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -694,7 +694,7 @@ private MARGINS UpdateExtendMargins() borderCaptionThickness.left *= -1; borderCaptionThickness.top *= -1; - bool wantsTitleBar = _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar) || _extendTitleBarHint == -1; + bool wantsTitleBar = _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.SystemChrome) || _extendTitleBarHint == -1; if (!wantsTitleBar) { @@ -711,7 +711,7 @@ private MARGINS UpdateExtendMargins() borderCaptionThickness.top = (int)(_extendTitleBarHint * Scaling); } - margins.cyTopHeight = _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.SystemTitleBar) ? borderCaptionThickness.top : 1; + margins.cyTopHeight = _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.SystemChrome) && !_extendChromeHints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChrome) ? borderCaptionThickness.top : 1; if (WindowState == WindowState.Maximized) { @@ -727,7 +727,7 @@ private MARGINS UpdateExtendMargins() return margins; } - private void ExtendClientArea () + private void ExtendClientArea() { if (DwmIsCompositionEnabled(out bool compositionEnabled) < 0 || !compositionEnabled) { @@ -735,36 +735,28 @@ private void ExtendClientArea () return; } - if (!_isClientAreaExtended || WindowState == WindowState.FullScreen) + GetWindowRect(_hwnd, out var rcClient); + + // Inform the application of the frame change. + SetWindowPos(_hwnd, + IntPtr.Zero, + rcClient.left, rcClient.top, + rcClient.Width, rcClient.Height, + SetWindowPosFlags.SWP_FRAMECHANGED); + + if (_isClientAreaExtended && WindowState != WindowState.FullScreen) { - _extendedMargins = new Thickness(0, 0, 0, 0); - _offScreenMargin = new Thickness(); + var margins = UpdateExtendMargins(); + + DwmExtendFrameIntoClientArea(_hwnd, ref margins); } else { - GetWindowRect(_hwnd, out var rcClient); - - // Inform the application of the frame change. - SetWindowPos(_hwnd, - IntPtr.Zero, - rcClient.left, rcClient.top, - rcClient.Width, rcClient.Height, - SetWindowPosFlags.SWP_FRAMECHANGED); - - if (_isClientAreaExtended) - { - var margins = UpdateExtendMargins(); + var margins = new MARGINS(); + DwmExtendFrameIntoClientArea(_hwnd, ref margins); - DwmExtendFrameIntoClientArea(_hwnd, ref margins); - } - else - { - var margins = new MARGINS(); - DwmExtendFrameIntoClientArea(_hwnd, ref margins); - - _offScreenMargin = new Thickness(); - _extendedMargins = new Thickness(); - } + _offScreenMargin = new Thickness(); + _extendedMargins = new Thickness(); } ExtendClientAreaToDecorationsChanged?.Invoke(_isClientAreaExtended); @@ -1061,7 +1053,7 @@ public void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight) public Action ExtendClientAreaToDecorationsChanged { get; set; } /// - public bool NeedsManagedDecorations => _isClientAreaExtended && _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChromeButtons); + public bool NeedsManagedDecorations => _isClientAreaExtended && _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChrome); /// public Thickness ExtendedMargins => _extendedMargins; From 466f015836721450bc8337c751f4130f5509ac46 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 23 Jun 2020 18:26:02 -0300 Subject: [PATCH 167/354] fix up osx implementation. --- native/Avalonia.Native/inc/avalonia-native.h | 11 +++++------ native/Avalonia.Native/src/OSX/window.mm | 14 ++++++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/native/Avalonia.Native/inc/avalonia-native.h b/native/Avalonia.Native/inc/avalonia-native.h index 8b905ea8d27..97ab4ffefb7 100644 --- a/native/Avalonia.Native/inc/avalonia-native.h +++ b/native/Avalonia.Native/inc/avalonia-native.h @@ -207,12 +207,11 @@ enum AvnMenuItemToggleType enum AvnExtendClientAreaChromeHints { - AvnChromeHintsNoChrome, - AvnChromeHintsSystemTitleBar = 0x01, - AvnChromeHintsManagedChromeButtons = 0x02, - AvnChromeHintsSystemChromeButtons = 0x04, - AvnChromeHintsOSXThickTitleBar = 0x08, - AvnChromeHintsDefault = AvnChromeHintsSystemTitleBar | AvnChromeHintsSystemChromeButtons, + AvnNoChrome = 0, + AvnSystemChrome = 0x01, + AvnPreferSystemChrome = 0x02, + AvnOSXThickTitleBar = 0x08, + AvnDefaultChrome = AvnSystemChrome, }; AVNCOM(IAvaloniaNativeFactory, 01) : IUnknown diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index 265f500baea..551c5afea97 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -488,7 +488,7 @@ virtual void OnResized () WindowImpl(IAvnWindowEvents* events, IAvnGlContext* gl) : WindowBaseImpl(events, gl) { _isClientAreaExtended = false; - _extendClientHints = AvnChromeHintsDefault; + _extendClientHints = AvnDefaultChrome; _fullScreenActive = false; _canResize = true; _decorations = SystemDecorationsFull; @@ -511,7 +511,7 @@ void HideOrShowTrafficLights () { if(_isClientAreaExtended) { - [button setHidden: !(_extendClientHints & AvnChromeHintsSystemChromeButtons)]; + [button setHidden: !((_extendClientHints & AvnSystemChrome)) || (_extendClientHints & AvnPreferSystemChrome)]; } else { @@ -599,7 +599,7 @@ void WindowStateChanged () override if(_lastWindowState == FullScreen) { // we exited fs. - if(_extendClientHints & AvnChromeHintsOSXThickTitleBar) + if(_extendClientHints & AvnOSXThickTitleBar) { Window.toolbar = [NSToolbar new]; Window.toolbar.showsBaselineSeparator = false; @@ -612,7 +612,7 @@ void WindowStateChanged () override else if(state == FullScreen) { // we entered fs. - if(_extendClientHints & AvnChromeHintsOSXThickTitleBar) + if(_extendClientHints & AvnOSXThickTitleBar) { Window.toolbar = nullptr; } @@ -815,7 +815,9 @@ virtual HRESULT SetExtendClientArea (bool enable) override [Window setTitlebarAppearsTransparent:true]; - if(_extendClientHints & AvnChromeHintsSystemTitleBar) + auto wantsTitleBar = (_extendClientHints & AvnSystemChrome) || (_extendClientHints & AvnPreferSystemChrome); + + if (wantsTitleBar) { [StandardContainer ShowTitleBar:true]; } @@ -824,7 +826,7 @@ virtual HRESULT SetExtendClientArea (bool enable) override [StandardContainer ShowTitleBar:false]; } - if(_extendClientHints & AvnChromeHintsOSXThickTitleBar) + if(_extendClientHints & AvnOSXThickTitleBar) { Window.toolbar = [NSToolbar new]; Window.toolbar.showsBaselineSeparator = false; From c8cede080f174514f89357f0bc05db3bf8e328ff Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 23 Jun 2020 18:32:08 -0300 Subject: [PATCH 168/354] fix hiding and showing traffic lights. --- native/Avalonia.Native/src/OSX/window.mm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index 551c5afea97..269d71a25af 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -511,7 +511,9 @@ void HideOrShowTrafficLights () { if(_isClientAreaExtended) { - [button setHidden: !((_extendClientHints & AvnSystemChrome)) || (_extendClientHints & AvnPreferSystemChrome)]; + auto wantsChrome = (_extendClientHints & AvnSystemChrome) || (_extendClientHints & AvnPreferSystemChrome); + + [button setHidden: !wantsChrome]; } else { From 2a181d9acb71b481e83d90f896c85d45013b6202 Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Thu, 25 Jun 2020 11:47:14 +0200 Subject: [PATCH 169/354] Introduce TextRunProperties --- .../ControlCatalog/Pages/TextBlockPage.xaml | 69 +-- .../Primitives/AccessText.cs | 15 +- src/Avalonia.Controls/TextBlock.cs | 35 +- src/Avalonia.Visuals/Media/FontManager.cs | 4 +- src/Avalonia.Visuals/Media/GlyphRun.cs | 112 +++- src/Avalonia.Visuals/Media/TextDecoration.cs | 182 ++++-- .../Media/TextDecorationCollection.cs | 17 - .../Media/TextDecorationUnit.cs | 2 +- .../Media/TextFormatting/DrawableTextRun.cs | 6 +- .../GenericTextParagraphProperties.cs | 69 +++ .../GenericTextRunProperties.cs | 40 ++ .../TextFormatting/ShapeableTextCharacters.cs | 23 + .../TextFormatting/ShapedTextCharacters.cs | 164 ++++++ .../Media/TextFormatting/ShapedTextRun.cs | 212 ------- .../TextFormatting/SimpleTextFormatter.cs | 395 ------------- .../Media/TextFormatting/SimpleTextLine.cs | 259 --------- .../Media/TextFormatting/TextCharacters.cs | 181 +++++- .../Media/TextFormatting/TextEndOfSegment.cs | 17 + .../Media/TextFormatting/TextFormat.cs | 71 --- .../Media/TextFormatting/TextFormatter.cs | 148 +---- .../Media/TextFormatting/TextFormatterImpl.cs | 544 ++++++++++++++++++ .../Media/TextFormatting/TextHidden.cs | 9 + .../Media/TextFormatting/TextLayout.cs | 192 +++---- .../Media/TextFormatting/TextLine.cs | 17 +- .../Media/TextFormatting/TextLineBreak.cs | 17 + .../Media/TextFormatting/TextLineImpl.cs | 235 ++++++++ .../Media/TextFormatting/TextLineMetrics.cs | 69 +-- .../Media/TextFormatting/TextModifier.cs | 19 + .../TextFormatting/TextParagraphProperties.cs | 33 +- .../{TextPointer.cs => TextRange.cs} | 16 +- .../Media/TextFormatting/TextRun.cs | 17 +- .../Media/TextFormatting/TextRunProperties.cs | 90 +++ .../Media/TextFormatting/TextShaper.cs | 8 +- .../Media/TextFormatting/TextStyle.cs | 39 -- .../Media/TextFormatting/TextStyleRun.cs | 24 - .../Media/TextFormatting/Unicode/Codepoint.cs | 2 +- .../Unicode/CodepointEnumerator.cs | 2 +- .../Media/TextFormatting/Unicode/Grapheme.cs | 2 +- .../Unicode/GraphemeEnumerator.cs | 2 +- .../Unicode/LineBreakEnumerator.cs | 2 +- src/Avalonia.Visuals/Media/TextWrapping.cs | 9 +- src/Avalonia.Visuals/Media/Typeface.cs | 12 +- .../Platform/ITextShaperImpl.cs | 12 +- .../{Utility => Utilities}/ReadOnlySlice.cs | 5 +- src/Avalonia.Visuals/Utilities/ValueSpan.cs | 30 + src/Skia/Avalonia.Skia/FormattedTextImpl.cs | 2 +- src/Skia/Avalonia.Skia/TextShaperImpl.cs | 14 +- .../Media/TextShaperImpl.cs | 15 +- .../Media/FontManagerImplTests.cs | 4 +- .../{ => Media}/CustomFontManagerImpl.cs | 2 +- .../{ => Media}/FontManagerImplTests.cs | 8 +- .../SKTypefaceCollectionCacheTests.cs | 4 +- .../TextFormatting/FormattableTextSource.cs | 38 ++ .../TextFormatting/MultiBufferTextSource.cs | 36 ++ .../TextFormatting/SingleBufferTextSource.cs | 30 + .../TextFormatting/TextFormatterTests.cs | 275 +++++++++ .../TextFormatting}/TextLayoutTests.cs | 145 +++-- .../Media/TextFormatting/TextLineTests.cs | 175 ++++++ .../SimpleTextFormatterTests.cs | 373 ------------ .../Avalonia.UnitTests/MockTextShaperImpl.cs | 19 +- .../Media/GlyphRunTests.cs | 2 +- .../Media/TextFormatting/LineBreakerTests.cs | 2 +- .../Media/TypefaceTests.cs | 2 +- 63 files changed, 2614 insertions(+), 1960 deletions(-) create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/GenericTextParagraphProperties.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/GenericTextRunProperties.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/ShapeableTextCharacters.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/ShapedTextCharacters.cs delete mode 100644 src/Avalonia.Visuals/Media/TextFormatting/ShapedTextRun.cs delete mode 100644 src/Avalonia.Visuals/Media/TextFormatting/SimpleTextFormatter.cs delete mode 100644 src/Avalonia.Visuals/Media/TextFormatting/SimpleTextLine.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextEndOfSegment.cs delete mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextFormat.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextHidden.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextLineBreak.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextModifier.cs rename src/Avalonia.Visuals/Media/TextFormatting/{TextPointer.cs => TextRange.cs} (73%) create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextRunProperties.cs delete mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextStyle.cs delete mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextStyleRun.cs rename src/Avalonia.Visuals/{Utility => Utilities}/ReadOnlySlice.cs (98%) create mode 100644 src/Avalonia.Visuals/Utilities/ValueSpan.cs rename tests/Avalonia.Skia.UnitTests/{ => Media}/CustomFontManagerImpl.cs (98%) rename tests/Avalonia.Skia.UnitTests/{ => Media}/FontManagerImplTests.cs (95%) rename tests/Avalonia.Skia.UnitTests/{ => Media}/SKTypefaceCollectionCacheTests.cs (89%) create mode 100644 tests/Avalonia.Skia.UnitTests/Media/TextFormatting/FormattableTextSource.cs create mode 100644 tests/Avalonia.Skia.UnitTests/Media/TextFormatting/MultiBufferTextSource.cs create mode 100644 tests/Avalonia.Skia.UnitTests/Media/TextFormatting/SingleBufferTextSource.cs create mode 100644 tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextFormatterTests.cs rename tests/Avalonia.Skia.UnitTests/{ => Media/TextFormatting}/TextLayoutTests.cs (77%) create mode 100644 tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs delete mode 100644 tests/Avalonia.Skia.UnitTests/SimpleTextFormatterTests.cs diff --git a/samples/ControlCatalog/Pages/TextBlockPage.xaml b/samples/ControlCatalog/Pages/TextBlockPage.xaml index f73ef9b4fb0..4b8edcf98c3 100644 --- a/samples/ControlCatalog/Pages/TextBlockPage.xaml +++ b/samples/ControlCatalog/Pages/TextBlockPage.xaml @@ -64,51 +64,42 @@ - - - - - - - - - - - - + StrokeThicknessUnit="Pixel" + StrokeThickness="2"> + + + + + + + + - - - - - - - - - - - - + StrokeThicknessUnit="Pixel" + StrokeThickness="1"> + + + + + + + + - - - - - - - - - - - - + StrokeThicknessUnit="Pixel" + StrokeThickness="2"> + + + + + + + + diff --git a/src/Avalonia.Controls/Primitives/AccessText.cs b/src/Avalonia.Controls/Primitives/AccessText.cs index 4208a2f2f7b..dd33023e38f 100644 --- a/src/Avalonia.Controls/Primitives/AccessText.cs +++ b/src/Avalonia.Controls/Primitives/AccessText.cs @@ -110,7 +110,7 @@ private Rect HitTestTextPosition(int textPosition) foreach (var textLine in TextLayout.TextLines) { - if (textLine.Text.End < textPosition) + if (textLine.TextRange.End < textPosition) { currentY += textLine.LineMetrics.Size.Height; @@ -121,21 +121,22 @@ private Rect HitTestTextPosition(int textPosition) foreach (var textRun in textLine.TextRuns) { - if (!(textRun is ShapedTextRun shapedRun)) + if (!(textRun is ShapedTextCharacters shapedTextCharacters)) { continue; } - if (shapedRun.GlyphRun.Characters.End < textPosition) + if (shapedTextCharacters.GlyphRun.Characters.End < textPosition) { - currentX += shapedRun.GlyphRun.Bounds.Width; + currentX += shapedTextCharacters.GlyphRun.Bounds.Width; continue; } - var characterHit = shapedRun.GlyphRun.FindNearestCharacterHit(textPosition, out var width); + var characterHit = + shapedTextCharacters.GlyphRun.FindNearestCharacterHit(textPosition, out var width); - var distance = shapedRun.GlyphRun.GetDistanceFromCharacterHit(characterHit); + var distance = shapedTextCharacters.GlyphRun.GetDistanceFromCharacterHit(characterHit); currentX += distance - width; @@ -144,7 +145,7 @@ private Rect HitTestTextPosition(int textPosition) width = 0.0; } - return new Rect(currentX, currentY, width, shapedRun.GlyphRun.Bounds.Height); + return new Rect(currentX, currentY, width, shapedTextCharacters.GlyphRun.Bounds.Height); } } diff --git a/src/Avalonia.Controls/TextBlock.cs b/src/Avalonia.Controls/TextBlock.cs index 13bc4ed1243..2361ea90116 100644 --- a/src/Avalonia.Controls/TextBlock.cs +++ b/src/Avalonia.Controls/TextBlock.cs @@ -70,6 +70,15 @@ public class TextBlock : Control Brushes.Black, inherits: true); + /// + /// Defines the property. + /// + public static readonly StyledProperty LineHeightProperty = + AvaloniaProperty.Register( + nameof(LineHeight), + double.NaN, + validate: IsValidLineHeight); + /// /// Defines the property. /// @@ -122,19 +131,19 @@ static TextBlock() { ClipToBoundsProperty.OverrideDefaultValue(true); - AffectsRender(BackgroundProperty, ForegroundProperty, + AffectsRender(BackgroundProperty, ForegroundProperty, TextAlignmentProperty, TextDecorationsProperty); - AffectsMeasure(FontSizeProperty, FontWeightProperty, - FontStyleProperty, TextWrappingProperty, FontFamilyProperty, - TextTrimmingProperty, TextProperty, PaddingProperty); + AffectsMeasure(FontSizeProperty, FontWeightProperty, + FontStyleProperty, TextWrappingProperty, FontFamilyProperty, + TextTrimmingProperty, TextProperty, PaddingProperty, LineHeightProperty, MaxLinesProperty); Observable.Merge(TextProperty.Changed, ForegroundProperty.Changed, TextAlignmentProperty.Changed, TextWrappingProperty.Changed, TextTrimmingProperty.Changed, FontSizeProperty.Changed, FontStyleProperty.Changed, FontWeightProperty.Changed, FontFamilyProperty.Changed, TextDecorationsProperty.Changed, - PaddingProperty.Changed + PaddingProperty.Changed, MaxLinesProperty.Changed, LineHeightProperty.Changed ).AddClassHandler((x, _) => x.InvalidateTextLayout()); } @@ -230,6 +239,15 @@ public IBrush Foreground set { SetValue(ForegroundProperty, value); } } + /// + /// Gets or sets the height of each line of content. + /// + public double LineHeight + { + get => GetValue(LineHeightProperty); + set => SetValue(LineHeightProperty, value); + } + /// /// Gets or sets the maximum number of text lines. /// @@ -395,7 +413,7 @@ public override void Render(DrawingContext context) var padding = Padding; - TextLayout?.Draw(context.PlatformImpl, new Point(padding.Left, padding.Top)); + TextLayout?.Draw(context, new Point(padding.Left, padding.Top)); } /// @@ -422,7 +440,8 @@ protected virtual TextLayout CreateTextLayout(Size constraint, string text) TextDecorations, constraint.Width, constraint.Height, - MaxLines); + maxLines: MaxLines, + lineHeight: LineHeight); } /// @@ -471,5 +490,7 @@ protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e } private static bool IsValidMaxLines(int maxLines) => maxLines >= 0; + + private static bool IsValidLineHeight(double lineHeight) => double.IsNaN(lineHeight) || lineHeight > 0; } } diff --git a/src/Avalonia.Visuals/Media/FontManager.cs b/src/Avalonia.Visuals/Media/FontManager.cs index f9410afe6a6..bc979c15ee7 100644 --- a/src/Avalonia.Visuals/Media/FontManager.cs +++ b/src/Avalonia.Visuals/Media/FontManager.cs @@ -100,7 +100,7 @@ public Typeface GetOrAddTypeface(FontFamily fontFamily, FontWeight fontWeight = return typeface; } - typeface = new Typeface(fontFamily, fontWeight, fontStyle); + typeface = new Typeface(fontFamily, fontStyle, fontWeight); if (_typefaceCache.TryAdd(key, typeface)) { @@ -143,7 +143,7 @@ public Typeface MatchCharacter(int codepoint, FontWeight fontWeight = FontWeight } var matchedTypeface = PlatformImpl.TryMatchCharacter(codepoint, fontWeight, fontStyle, fontFamily, culture, out var key) ? - _typefaceCache.GetOrAdd(key, new Typeface(key.FamilyName, key.Weight, key.Style)) : + _typefaceCache.GetOrAdd(key, new Typeface(key.FamilyName, key.Style, key.Weight)) : null; return matchedTypeface; diff --git a/src/Avalonia.Visuals/Media/GlyphRun.cs b/src/Avalonia.Visuals/Media/GlyphRun.cs index 29c9d93560e..a32a3e1b6c7 100644 --- a/src/Avalonia.Visuals/Media/GlyphRun.cs +++ b/src/Avalonia.Visuals/Media/GlyphRun.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using Avalonia.Platform; -using Avalonia.Utility; +using Avalonia.Utilities; namespace Avalonia.Media { @@ -205,13 +205,16 @@ public double GetDistanceFromCharacterHit(CharacterHit characterHit) var glyphIndex = FindGlyphIndex(characterHit.FirstCharacterIndex); - var currentCluster = _glyphClusters[glyphIndex]; - - if (characterHit.TrailingLength > 0) + if (!GlyphClusters.IsEmpty) { - while (glyphIndex < _glyphClusters.Length && _glyphClusters[glyphIndex] == currentCluster) + var currentCluster = GlyphClusters[glyphIndex]; + + if (characterHit.TrailingLength > 0) { - glyphIndex++; + while (glyphIndex < GlyphClusters.Length && GlyphClusters[glyphIndex] == currentCluster) + { + glyphIndex++; + } } } @@ -302,7 +305,7 @@ public CharacterHit GetCharacterHitFromDistance(double distance, out bool isInsi } } - var characterHit = FindNearestCharacterHit(GlyphClusters[index], out var width); + var characterHit = FindNearestCharacterHit(GlyphClusters.IsEmpty ? index : GlyphClusters[index], out var width); var offset = GetDistanceFromCharacterHit(new CharacterHit(characterHit.FirstCharacterIndex)); @@ -370,26 +373,31 @@ public int Compare(T x, T y) /// public int FindGlyphIndex(int characterIndex) { + if (GlyphClusters.IsEmpty) + { + return characterIndex; + } + if (IsLeftToRight) { - if (characterIndex < _glyphClusters[0]) + if (characterIndex < GlyphClusters[0]) { return 0; } - if (characterIndex > _glyphClusters[_glyphClusters.Length - 1]) + if (characterIndex > GlyphClusters[GlyphClusters.Length - 1]) { return _glyphClusters.End; } } else { - if (characterIndex < _glyphClusters[_glyphClusters.Length - 1]) + if (characterIndex < GlyphClusters[GlyphClusters.Length - 1]) { return _glyphClusters.End; } - if (characterIndex > _glyphClusters[0]) + if (characterIndex > GlyphClusters[0]) { return 0; } @@ -397,7 +405,7 @@ public int FindGlyphIndex(int characterIndex) var comparer = IsLeftToRight ? s_ascendingComparer : s_descendingComparer; - var clusters = _glyphClusters.Buffer.Span; + var clusters = GlyphClusters.Buffer.Span; // Find the start of the cluster at the character index. var start = clusters.BinarySearch((ushort)characterIndex, comparer); @@ -418,9 +426,19 @@ public int FindGlyphIndex(int characterIndex) } } - while (start > 0 && clusters[start - 1] == clusters[start]) + if (IsLeftToRight) { - start--; + while (start > 0 && clusters[start - 1] == clusters[start]) + { + start--; + } + } + else + { + while (start + 1 < clusters.Length && clusters[start + 1] == clusters[start]) + { + start++; + } } return start; @@ -440,34 +458,74 @@ public CharacterHit FindNearestCharacterHit(int index, out double width) var start = FindGlyphIndex(index); - var currentCluster = _glyphClusters[start]; + if (GlyphClusters.IsEmpty) + { + width = GetGlyphWidth(index); + + return new CharacterHit(start, 1); + } - var trailingLength = 0; + var cluster = GlyphClusters[start]; - while (start < _glyphClusters.Length && _glyphClusters[start] == currentCluster) + var nextCluster = cluster; + + var currentIndex = start; + + while (nextCluster == cluster) { - if (GlyphAdvances.IsEmpty) + width += GetGlyphWidth(currentIndex); + + if (IsLeftToRight) { - var glyph = GlyphIndices[start]; + currentIndex++; - width += GlyphTypeface.GetGlyphAdvance(glyph) * Scale; + if (currentIndex == GlyphClusters.Length) + { + break; + } } else { - width += GlyphAdvances[start]; + currentIndex--; + + if (currentIndex < 0) + { + break; + } } - trailingLength++; - start++; + nextCluster = GlyphClusters[currentIndex]; + } + + int trailingLength; + + if (nextCluster == cluster) + { + trailingLength = Characters.Start + Characters.Length - cluster; + } + else + { + trailingLength = nextCluster - cluster; } - if (start == _glyphClusters.Length && - currentCluster + trailingLength != Characters.Start + Characters.Length) + return new CharacterHit(cluster, trailingLength); + } + + /// + /// Gets a glyph's width. + /// + /// The glyph index. + /// The glyph's width. + private double GetGlyphWidth(int index) + { + if (GlyphAdvances.IsEmpty) { - trailingLength = Characters.Start + Characters.Length - currentCluster; + var glyph = GlyphIndices[index]; + + return GlyphTypeface.GetGlyphAdvance(glyph) * Scale; } - return new CharacterHit(currentCluster, trailingLength); + return GlyphAdvances[index]; } /// diff --git a/src/Avalonia.Visuals/Media/TextDecoration.cs b/src/Avalonia.Visuals/Media/TextDecoration.cs index a83555946ba..681fc5d4994 100644 --- a/src/Avalonia.Visuals/Media/TextDecoration.cs +++ b/src/Avalonia.Visuals/Media/TextDecoration.cs @@ -1,4 +1,5 @@ -using Avalonia.Media.Immutable; +using Avalonia.Collections; +using Avalonia.Media.TextFormatting; namespace Avalonia.Media { @@ -14,28 +15,52 @@ public class TextDecoration : AvaloniaObject AvaloniaProperty.Register(nameof(Location)); /// - /// Defines the property. + /// Defines the property. /// - public static readonly StyledProperty PenProperty = - AvaloniaProperty.Register(nameof(Pen)); + public static readonly StyledProperty StrokeProperty = + AvaloniaProperty.Register(nameof(Stroke)); /// - /// Defines the property. + /// Defines the property. /// - public static readonly StyledProperty PenThicknessUnitProperty = - AvaloniaProperty.Register(nameof(PenThicknessUnit)); + public static readonly StyledProperty StrokeThicknessUnitProperty = + AvaloniaProperty.Register(nameof(StrokeThicknessUnit)); /// - /// Defines the property. + /// Defines the property. /// - public static readonly StyledProperty PenOffsetProperty = - AvaloniaProperty.Register(nameof(PenOffset)); + public static readonly StyledProperty> StrokeDashArrayProperty = + AvaloniaProperty.Register>(nameof(StrokeDashArray)); /// - /// Defines the property. + /// Defines the property. /// - public static readonly StyledProperty PenOffsetUnitProperty = - AvaloniaProperty.Register(nameof(PenOffsetUnit)); + public static readonly StyledProperty StrokeDashOffsetProperty = + AvaloniaProperty.Register(nameof(StrokeDashOffset)); + + /// + /// Defines the property. + /// + public static readonly StyledProperty StrokeThicknessProperty = + AvaloniaProperty.Register(nameof(StrokeThickness), 1); + + /// + /// Defines the property. + /// + public static readonly StyledProperty StrokeLineCapProperty = + AvaloniaProperty.Register(nameof(StrokeLineCap)); + + /// + /// Defines the property. + /// + public static readonly StyledProperty StrokeOffsetProperty = + AvaloniaProperty.Register(nameof(StrokeOffset)); + + /// + /// Defines the property. + /// + public static readonly StyledProperty StrokeOffsetUnitProperty = + AvaloniaProperty.Register(nameof(StrokeOffsetUnit)); /// /// Gets or sets the location. @@ -50,54 +75,139 @@ public TextDecorationLocation Location } /// - /// Gets or sets the pen. + /// Gets or sets the that specifies how the is painted. /// - /// - /// The pen. - /// - public IPen Pen + public IBrush Stroke + { + get { return GetValue(StrokeProperty); } + set { SetValue(StrokeProperty, value); } + } + + /// + /// Gets the units in which the thickness of the is expressed. + /// + public TextDecorationUnit StrokeThicknessUnit + { + get => GetValue(StrokeThicknessUnitProperty); + set => SetValue(StrokeThicknessUnitProperty, value); + } + + /// + /// Gets or sets a collection of values that indicate the pattern of dashes and gaps + /// that is used to draw the . + /// + public AvaloniaList StrokeDashArray + { + get { return GetValue(StrokeDashArrayProperty); } + set { SetValue(StrokeDashArrayProperty, value); } + } + + /// + /// Gets or sets a value that specifies the distance within the dash pattern where a dash begins. + /// + public double StrokeDashOffset + { + get { return GetValue(StrokeDashOffsetProperty); } + set { SetValue(StrokeDashOffsetProperty, value); } + } + + /// + /// Gets or sets the thickness of the . + /// + public double StrokeThickness { - get => GetValue(PenProperty); - set => SetValue(PenProperty, value); + get { return GetValue(StrokeThicknessProperty); } + set { SetValue(StrokeThicknessProperty, value); } } /// - /// Gets the units in which the Thickness of the text decoration's is expressed. + /// Gets or sets a enumeration value that describes the shape at the ends of a line. /// - public TextDecorationUnit PenThicknessUnit + public PenLineCap StrokeLineCap { - get => GetValue(PenThicknessUnitProperty); - set => SetValue(PenThicknessUnitProperty, value); + get { return GetValue(StrokeLineCapProperty); } + set { SetValue(StrokeLineCapProperty, value); } } /// - /// Gets or sets the pen offset. + /// The stroke's offset. /// /// /// The pen offset. /// - public double PenOffset + public double StrokeOffset { - get => GetValue(PenOffsetProperty); - set => SetValue(PenOffsetProperty, value); + get => GetValue(StrokeOffsetProperty); + set => SetValue(StrokeOffsetProperty, value); } /// - /// Gets the units in which the value is expressed. + /// Gets the units in which the value is expressed. /// - public TextDecorationUnit PenOffsetUnit + public TextDecorationUnit StrokeOffsetUnit { - get => GetValue(PenOffsetUnitProperty); - set => SetValue(PenOffsetUnitProperty, value); + get => GetValue(StrokeOffsetUnitProperty); + set => SetValue(StrokeOffsetUnitProperty, value); } /// - /// Creates an immutable clone of the . + /// Draws the at given origin. /// - /// The immutable clone. - public ImmutableTextDecoration ToImmutable() + /// The drawing context. + /// The shaped characters that are decorated. + /// The origin. + internal void Draw(DrawingContext drawingContext, ShapedTextCharacters shapedTextCharacters, Point origin) { - return new ImmutableTextDecoration(Location, Pen?.ToImmutable(), PenThicknessUnit, PenOffset, PenOffsetUnit); + var fontRenderingEmSize = shapedTextCharacters.Properties.FontRenderingEmSize; + var fontMetrics = shapedTextCharacters.FontMetrics; + var thickness = StrokeThickness; + + switch (StrokeThicknessUnit) + { + case TextDecorationUnit.FontRecommended: + switch (Location) + { + case TextDecorationLocation.Underline: + thickness = fontMetrics.UnderlineThickness; + break; + case TextDecorationLocation.Strikethrough: + thickness = fontMetrics.StrikethroughThickness; + break; + } + + break; + case TextDecorationUnit.FontRenderingEmSize: + thickness = fontRenderingEmSize * thickness; + break; + } + + switch (Location) + { + case TextDecorationLocation.Overline: + origin += new Point(0, fontMetrics.Ascent); + break; + case TextDecorationLocation.Strikethrough: + origin += new Point(0, -fontMetrics.StrikethroughPosition); + break; + case TextDecorationLocation.Underline: + origin += new Point(0, -fontMetrics.UnderlinePosition); + break; + } + + switch (StrokeOffsetUnit) + { + case TextDecorationUnit.FontRenderingEmSize: + origin += new Point(0, StrokeOffset * fontRenderingEmSize); + break; + case TextDecorationUnit.Pixel: + origin += new Point(0, StrokeOffset); + break; + } + + var pen = new Pen(Stroke ?? shapedTextCharacters.Properties.ForegroundBrush, thickness, + new DashStyle(StrokeDashArray, StrokeDashOffset), StrokeLineCap); + + drawingContext.DrawLine(pen, origin, origin + new Point(shapedTextCharacters.Bounds.Width, 0)); } } } diff --git a/src/Avalonia.Visuals/Media/TextDecorationCollection.cs b/src/Avalonia.Visuals/Media/TextDecorationCollection.cs index 21e2e2484c5..2dced2252e1 100644 --- a/src/Avalonia.Visuals/Media/TextDecorationCollection.cs +++ b/src/Avalonia.Visuals/Media/TextDecorationCollection.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using Avalonia.Collections; -using Avalonia.Media.Immutable; using Avalonia.Utilities; namespace Avalonia.Media @@ -11,22 +10,6 @@ namespace Avalonia.Media /// public class TextDecorationCollection : AvaloniaList { - /// - /// Creates an immutable clone of the . - /// - /// The immutable clone. - public ImmutableTextDecoration[] ToImmutable() - { - var immutable = new ImmutableTextDecoration[Count]; - - for (var i = 0; i < Count; i++) - { - immutable[i] = this[i].ToImmutable(); - } - - return immutable; - } - /// /// Parses a string. /// diff --git a/src/Avalonia.Visuals/Media/TextDecorationUnit.cs b/src/Avalonia.Visuals/Media/TextDecorationUnit.cs index dde425bb94c..a61983e8d59 100644 --- a/src/Avalonia.Visuals/Media/TextDecorationUnit.cs +++ b/src/Avalonia.Visuals/Media/TextDecorationUnit.cs @@ -1,7 +1,7 @@ namespace Avalonia.Media { /// - /// Specifies the unit type of either a or a thickness value. + /// Specifies the unit type of either a or a value. /// public enum TextDecorationUnit { diff --git a/src/Avalonia.Visuals/Media/TextFormatting/DrawableTextRun.cs b/src/Avalonia.Visuals/Media/TextFormatting/DrawableTextRun.cs index 4903342cea8..56790cc0db2 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/DrawableTextRun.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/DrawableTextRun.cs @@ -1,6 +1,4 @@ -using Avalonia.Platform; - -namespace Avalonia.Media.TextFormatting +namespace Avalonia.Media.TextFormatting { /// /// A text run that supports drawing content. @@ -17,6 +15,6 @@ public abstract class DrawableTextRun : TextRun /// /// The drawing context. /// The origin. - public abstract void Draw(IDrawingContextImpl drawingContext, Point origin); + public abstract void Draw(DrawingContext drawingContext, Point origin); } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/GenericTextParagraphProperties.cs b/src/Avalonia.Visuals/Media/TextFormatting/GenericTextParagraphProperties.cs new file mode 100644 index 00000000000..c4302aecec9 --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/GenericTextParagraphProperties.cs @@ -0,0 +1,69 @@ +namespace Avalonia.Media.TextFormatting +{ + public class GenericTextParagraphProperties : TextParagraphProperties + { + private TextAlignment _textAlignment; + private TextWrapping _textWrapping; + private TextTrimming _textTrimming; + private double _lineHeight; + + public GenericTextParagraphProperties( + TextRunProperties defaultTextRunProperties, + TextAlignment textAlignment = TextAlignment.Left, + TextWrapping textWrapping = TextWrapping.WrapWithOverflow, + TextTrimming textTrimming = TextTrimming.None, + double lineHeight = 0) + { + DefaultTextRunProperties = defaultTextRunProperties; + + _textAlignment = textAlignment; + + _textWrapping = textWrapping; + + _textTrimming = textTrimming; + + _lineHeight = lineHeight; + } + + public override TextRunProperties DefaultTextRunProperties { get; } + + public override TextAlignment TextAlignment => _textAlignment; + + public override TextWrapping TextWrapping => _textWrapping; + + public override TextTrimming TextTrimming => _textTrimming; + + public override double LineHeight => _lineHeight; + + /// + /// Set text alignment + /// + internal void SetTextAlignment(TextAlignment textAlignment) + { + _textAlignment = textAlignment; + } + + /// + /// Set text wrap + /// + internal void SetTextWrapping(TextWrapping textWrapping) + { + _textWrapping = textWrapping; + } + /// + /// Set text trimming + /// + internal void SetTextTrimming(TextTrimming textTrimming) + { + _textTrimming = textTrimming; + } + + /// + /// Set line height + /// + internal void SetLineHeight(double lineHeight) + { + _lineHeight = lineHeight; + } + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/GenericTextRunProperties.cs b/src/Avalonia.Visuals/Media/TextFormatting/GenericTextRunProperties.cs new file mode 100644 index 00000000000..3db35894986 --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/GenericTextRunProperties.cs @@ -0,0 +1,40 @@ +using System.Globalization; + +namespace Avalonia.Media.TextFormatting +{ + /// + /// Generic implementation of TextRunProperties + /// + public class GenericTextRunProperties : TextRunProperties + { + public GenericTextRunProperties(Typeface typeface, double fontRenderingEmSize = 12, + TextDecorationCollection textDecorations = null, IBrush foregroundBrush = null, IBrush backgroundBrush = null, + CultureInfo cultureInfo = null) + { + Typeface = typeface; + FontRenderingEmSize = fontRenderingEmSize; + TextDecorations = textDecorations; + ForegroundBrush = foregroundBrush; + BackgroundBrush = backgroundBrush; + CultureInfo = cultureInfo; + } + + /// + public override Typeface Typeface { get; } + + /// + public override double FontRenderingEmSize { get; } + + /// + public override TextDecorationCollection TextDecorations { get; } + + /// + public override IBrush ForegroundBrush { get; } + + /// + public override IBrush BackgroundBrush { get; } + + /// + public override CultureInfo CultureInfo { get; } + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/ShapeableTextCharacters.cs b/src/Avalonia.Visuals/Media/TextFormatting/ShapeableTextCharacters.cs new file mode 100644 index 00000000000..0c6c7229414 --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/ShapeableTextCharacters.cs @@ -0,0 +1,23 @@ +using Avalonia.Utilities; + +namespace Avalonia.Media.TextFormatting +{ + /// + /// A group of characters that can be shaped. + /// + public sealed class ShapeableTextCharacters : TextRun + { + public ShapeableTextCharacters(ReadOnlySlice text, TextRunProperties properties) + { + TextSourceLength = text.Length; + Text = text; + Properties = properties; + } + + public override int TextSourceLength { get; } + + public override ReadOnlySlice Text { get; } + + public override TextRunProperties Properties { get; } + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/ShapedTextCharacters.cs b/src/Avalonia.Visuals/Media/TextFormatting/ShapedTextCharacters.cs new file mode 100644 index 00000000000..2e7e7aceb1d --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/ShapedTextCharacters.cs @@ -0,0 +1,164 @@ +using Avalonia.Media.TextFormatting.Unicode; +using Avalonia.Utilities; + +namespace Avalonia.Media.TextFormatting +{ + /// + /// A text run that holds shaped characters. + /// + public sealed class ShapedTextCharacters : DrawableTextRun + { + public ShapedTextCharacters(GlyphRun glyphRun, TextRunProperties properties) + { + Text = glyphRun.Characters; + Properties = properties; + TextSourceLength = Text.Length; + FontMetrics = new FontMetrics(Properties.Typeface, Properties.FontRenderingEmSize); + GlyphRun = glyphRun; + } + + /// + public override ReadOnlySlice Text { get; } + + /// + public override TextRunProperties Properties { get; } + + /// + public override int TextSourceLength { get; } + + /// + public override Rect Bounds => GlyphRun.Bounds; + + /// + /// Gets the font metrics. + /// + /// + /// The font metrics. + /// + public FontMetrics FontMetrics { get; } + + /// + /// Gets the glyph run. + /// + /// + /// The glyphs. + /// + public GlyphRun GlyphRun { get; } + + /// + public override void Draw(DrawingContext drawingContext, Point origin) + { + if (GlyphRun.GlyphIndices.Length == 0) + { + return; + } + + if (Properties.Typeface == null) + { + return; + } + + if (Properties.ForegroundBrush == null) + { + return; + } + + if (Properties.BackgroundBrush != null) + { + drawingContext.DrawRectangle(Properties.BackgroundBrush, null, + new Rect(origin.X, origin.Y + FontMetrics.Ascent, Bounds.Width, Bounds.Height)); + } + + drawingContext.DrawGlyphRun(Properties.ForegroundBrush, GlyphRun, origin); + + if (Properties.TextDecorations == null) + { + return; + } + + foreach (var textDecoration in Properties.TextDecorations) + { + textDecoration.Draw(drawingContext, this, origin); + } + } + + /// + /// Splits the at specified length. + /// + /// The length. + /// The split result. + public SplitTextCharactersResult Split(int length) + { + var glyphCount = 0; + + var firstCharacters = GlyphRun.Characters.Take(length); + + var codepointEnumerator = new CodepointEnumerator(firstCharacters); + + while (codepointEnumerator.MoveNext()) + { + glyphCount++; + } + + if (GlyphRun.Characters.Length == length) + { + return new SplitTextCharactersResult(this, null); + } + + if (GlyphRun.GlyphIndices.Length == glyphCount) + { + return new SplitTextCharactersResult(this, null); + } + + var firstGlyphRun = new GlyphRun( + Properties.Typeface.GlyphTypeface, + Properties.FontRenderingEmSize, + GlyphRun.GlyphIndices.Take(glyphCount), + GlyphRun.GlyphAdvances.Take(glyphCount), + GlyphRun.GlyphOffsets.Take(glyphCount), + GlyphRun.Characters.Take(length), + GlyphRun.GlyphClusters.Take(glyphCount)); + + var firstTextRun = new ShapedTextCharacters(firstGlyphRun, Properties); + + var secondGlyphRun = new GlyphRun( + Properties.Typeface.GlyphTypeface, + Properties.FontRenderingEmSize, + GlyphRun.GlyphIndices.Skip(glyphCount), + GlyphRun.GlyphAdvances.Skip(glyphCount), + GlyphRun.GlyphOffsets.Skip(glyphCount), + GlyphRun.Characters.Skip(length), + GlyphRun.GlyphClusters.Skip(glyphCount)); + + var secondTextRun = new ShapedTextCharacters(secondGlyphRun, Properties); + + return new SplitTextCharactersResult(firstTextRun, secondTextRun); + } + + public readonly struct SplitTextCharactersResult + { + public SplitTextCharactersResult(ShapedTextCharacters first, ShapedTextCharacters second) + { + First = first; + + Second = second; + } + + /// + /// Gets the first text run. + /// + /// + /// The first text run. + /// + public ShapedTextCharacters First { get; } + + /// + /// Gets the second text run. + /// + /// + /// The second text run. + /// + public ShapedTextCharacters Second { get; } + } + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/ShapedTextRun.cs b/src/Avalonia.Visuals/Media/TextFormatting/ShapedTextRun.cs deleted file mode 100644 index 00f9b918cb1..00000000000 --- a/src/Avalonia.Visuals/Media/TextFormatting/ShapedTextRun.cs +++ /dev/null @@ -1,212 +0,0 @@ -using Avalonia.Media.Immutable; -using Avalonia.Media.TextFormatting.Unicode; -using Avalonia.Platform; -using Avalonia.Utility; - -namespace Avalonia.Media.TextFormatting -{ - /// - /// A text run that holds a shaped glyph run. - /// - public sealed class ShapedTextRun : DrawableTextRun - { - public ShapedTextRun(ReadOnlySlice text, TextStyle style) : this( - TextShaper.Current.ShapeText(text, style.TextFormat), style) - { - } - - public ShapedTextRun(GlyphRun glyphRun, TextStyle style) - { - Text = glyphRun.Characters; - Style = style; - GlyphRun = glyphRun; - } - - /// - public override Rect Bounds => GlyphRun.Bounds; - - /// - /// Gets the glyph run. - /// - /// - /// The glyphs. - /// - public GlyphRun GlyphRun { get; } - - /// - public override void Draw(IDrawingContextImpl drawingContext, Point origin) - { - if (GlyphRun.GlyphIndices.Length == 0) - { - return; - } - - if (Style.TextFormat.Typeface == null) - { - return; - } - - if (Style.Foreground == null) - { - return; - } - - drawingContext.DrawGlyphRun(Style.Foreground, GlyphRun, origin); - - if (Style.TextDecorations == null) - { - return; - } - - foreach (var textDecoration in Style.TextDecorations) - { - DrawTextDecoration(drawingContext, textDecoration, origin); - } - } - - /// - /// Draws the at given origin. - /// - /// The drawing context. - /// The text decoration. - /// The origin. - private void DrawTextDecoration(IDrawingContextImpl drawingContext, ImmutableTextDecoration textDecoration, Point origin) - { - var textFormat = Style.TextFormat; - - var fontMetrics = Style.TextFormat.FontMetrics; - - var thickness = textDecoration.Pen?.Thickness ?? 1.0; - - switch (textDecoration.PenThicknessUnit) - { - case TextDecorationUnit.FontRecommended: - switch (textDecoration.Location) - { - case TextDecorationLocation.Underline: - thickness = fontMetrics.UnderlineThickness; - break; - case TextDecorationLocation.Strikethrough: - thickness = fontMetrics.StrikethroughThickness; - break; - } - break; - case TextDecorationUnit.FontRenderingEmSize: - thickness = textFormat.FontRenderingEmSize * thickness; - break; - } - - switch (textDecoration.Location) - { - case TextDecorationLocation.Overline: - origin += new Point(0, textFormat.FontMetrics.Ascent); - break; - case TextDecorationLocation.Strikethrough: - origin += new Point(0, -textFormat.FontMetrics.StrikethroughPosition); - break; - case TextDecorationLocation.Underline: - origin += new Point(0, -textFormat.FontMetrics.UnderlinePosition); - break; - } - - switch (textDecoration.PenOffsetUnit) - { - case TextDecorationUnit.FontRenderingEmSize: - origin += new Point(0, textDecoration.PenOffset * textFormat.FontRenderingEmSize); - break; - case TextDecorationUnit.Pixel: - origin += new Point(0, textDecoration.PenOffset); - break; - } - - var pen = new ImmutablePen( - textDecoration.Pen?.Brush ?? Style.Foreground.ToImmutable(), - thickness, - textDecoration.Pen?.DashStyle?.ToImmutable(), - textDecoration.Pen?.LineCap ?? default, - textDecoration.Pen?.LineJoin ?? PenLineJoin.Miter, - textDecoration.Pen?.MiterLimit ?? 10.0); - - drawingContext.DrawLine(pen, origin, origin + new Point(GlyphRun.Bounds.Width, 0)); - } - - /// - /// Splits the at specified length. - /// - /// The length. - /// The split result. - public SplitTextCharactersResult Split(int length) - { - var glyphCount = 0; - - var firstCharacters = GlyphRun.Characters.Take(length); - - var codepointEnumerator = new CodepointEnumerator(firstCharacters); - - while (codepointEnumerator.MoveNext()) - { - glyphCount++; - } - - if (GlyphRun.Characters.Length == length) - { - return new SplitTextCharactersResult(this, null); - } - - if (GlyphRun.GlyphIndices.Length == glyphCount) - { - return new SplitTextCharactersResult(this, null); - } - - var firstGlyphRun = new GlyphRun( - Style.TextFormat.Typeface.GlyphTypeface, - Style.TextFormat.FontRenderingEmSize, - GlyphRun.GlyphIndices.Take(glyphCount), - GlyphRun.GlyphAdvances.Take(glyphCount), - GlyphRun.GlyphOffsets.Take(glyphCount), - GlyphRun.Characters.Take(length), - GlyphRun.GlyphClusters.Take(length)); - - var firstTextRun = new ShapedTextRun(firstGlyphRun, Style); - - var secondGlyphRun = new GlyphRun( - Style.TextFormat.Typeface.GlyphTypeface, - Style.TextFormat.FontRenderingEmSize, - GlyphRun.GlyphIndices.Skip(glyphCount), - GlyphRun.GlyphAdvances.Skip(glyphCount), - GlyphRun.GlyphOffsets.Skip(glyphCount), - GlyphRun.Characters.Skip(length), - GlyphRun.GlyphClusters.Skip(length)); - - var secondTextRun = new ShapedTextRun(secondGlyphRun, Style); - - return new SplitTextCharactersResult(firstTextRun, secondTextRun); - } - - public readonly struct SplitTextCharactersResult - { - public SplitTextCharactersResult(ShapedTextRun first, ShapedTextRun second) - { - First = first; - - Second = second; - } - - /// - /// Gets the first text run. - /// - /// - /// The first text run. - /// - public ShapedTextRun First { get; } - - /// - /// Gets the second text run. - /// - /// - /// The second text run. - /// - public ShapedTextRun Second { get; } - } - } -} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/SimpleTextFormatter.cs b/src/Avalonia.Visuals/Media/TextFormatting/SimpleTextFormatter.cs deleted file mode 100644 index f84e45d4c6f..00000000000 --- a/src/Avalonia.Visuals/Media/TextFormatting/SimpleTextFormatter.cs +++ /dev/null @@ -1,395 +0,0 @@ -using System; -using System.Collections.Generic; -using Avalonia.Media.TextFormatting.Unicode; -using Avalonia.Platform; -using Avalonia.Utility; - -namespace Avalonia.Media.TextFormatting -{ - internal class SimpleTextFormatter : TextFormatter - { - private static readonly ReadOnlySlice s_ellipsis = new ReadOnlySlice(new[] { '\u2026' }); - - /// - public override TextLine FormatLine(ITextSource textSource, int firstTextSourceIndex, double paragraphWidth, - TextParagraphProperties paragraphProperties) - { - var textTrimming = paragraphProperties.TextTrimming; - var textWrapping = paragraphProperties.TextWrapping; - TextLine textLine; - - var textRuns = FormatTextRuns(textSource, firstTextSourceIndex, out var textPointer); - - if (textTrimming != TextTrimming.None) - { - textLine = PerformTextTrimming(textPointer, textRuns, paragraphWidth, paragraphProperties); - } - else - { - if (textWrapping == TextWrapping.Wrap) - { - textLine = PerformTextWrapping(textPointer, textRuns, paragraphWidth, paragraphProperties); - } - else - { - var textLineMetrics = - TextLineMetrics.Create(textRuns, paragraphWidth, paragraphProperties.TextAlignment); - - textLine = new SimpleTextLine(textPointer, textRuns, textLineMetrics); - } - } - - return textLine; - } - - /// - /// Formats text runs with optional text style overrides. - /// - /// The text source. - /// The first text source index. - /// The text pointer that covers the formatted text runs. - /// - /// The formatted text runs. - /// - private List FormatTextRuns(ITextSource textSource, int firstTextSourceIndex, out TextPointer textPointer) - { - var start = -1; - var length = 0; - - var textRuns = new List(); - - while (true) - { - var textRun = textSource.GetTextRun(firstTextSourceIndex + length); - - if (start == -1) - { - start = textRun.Text.Start; - } - - if (textRun is TextEndOfLine) - { - break; - } - - switch (textRun) - { - case TextCharacters textCharacters: - - var runText = textCharacters.Text; - - while (!runText.IsEmpty) - { - var shapableTextStyleRun = CreateShapableTextStyleRun(runText, textRun.Style); - - var shapedRun = new ShapedTextRun(runText.Take(shapableTextStyleRun.TextPointer.Length), - shapableTextStyleRun.Style); - - textRuns.Add(shapedRun); - - runText = runText.Skip(shapedRun.Text.Length); - } - - break; - default: - throw new NotSupportedException("Run type not supported by the formatter."); - } - - length += textRun.Text.Length; - } - - textPointer = new TextPointer(start, length); - - return textRuns; - } - - /// - /// Performs text trimming and returns a trimmed line. - /// - /// A value that specifies the width of the paragraph that the line fills. - /// A value that represents paragraph properties, - /// such as TextWrapping, TextAlignment, or TextStyle. - /// The text runs to perform the trimming on. - /// The text that was used to construct the text runs. - /// - private static TextLine PerformTextTrimming(TextPointer text, IReadOnlyList textRuns, - double paragraphWidth, TextParagraphProperties paragraphProperties) - { - var textTrimming = paragraphProperties.TextTrimming; - var availableWidth = paragraphWidth; - var currentWidth = 0.0; - var runIndex = 0; - - while (runIndex < textRuns.Count) - { - var currentRun = textRuns[runIndex]; - - currentWidth += currentRun.GlyphRun.Bounds.Width; - - if (currentWidth > availableWidth) - { - var ellipsisRun = CreateEllipsisRun(currentRun.Style); - - var measuredLength = MeasureText(currentRun, availableWidth - ellipsisRun.GlyphRun.Bounds.Width); - - if (textTrimming == TextTrimming.WordEllipsis) - { - if (measuredLength < text.End) - { - var currentBreakPosition = 0; - - var lineBreaker = new LineBreakEnumerator(currentRun.Text); - - while (currentBreakPosition < measuredLength && lineBreaker.MoveNext()) - { - var nextBreakPosition = lineBreaker.Current.PositionWrap; - - if (nextBreakPosition == 0) - { - break; - } - - if (nextBreakPosition > measuredLength) - { - break; - } - - currentBreakPosition = nextBreakPosition; - } - - measuredLength = currentBreakPosition; - } - } - - var splitResult = SplitTextRuns(textRuns, measuredLength); - - var trimmedRuns = new List(splitResult.First.Count + 1); - - trimmedRuns.AddRange(splitResult.First); - - trimmedRuns.Add(ellipsisRun); - - var textLineMetrics = - TextLineMetrics.Create(trimmedRuns, paragraphWidth, paragraphProperties.TextAlignment); - - return new SimpleTextLine(text.Take(measuredLength), trimmedRuns, textLineMetrics); - } - - availableWidth -= currentRun.GlyphRun.Bounds.Width; - - runIndex++; - } - - return new SimpleTextLine(text, textRuns, - TextLineMetrics.Create(textRuns, paragraphWidth, paragraphProperties.TextAlignment)); - } - - /// - /// Performs text wrapping returns a list of text lines. - /// - /// The text paragraph properties. - /// The text run'S. - /// The text to analyze for break opportunities. - /// - /// - private static TextLine PerformTextWrapping(TextPointer text, IReadOnlyList textRuns, - double paragraphWidth, TextParagraphProperties paragraphProperties) - { - var availableWidth = paragraphWidth; - var currentWidth = 0.0; - var runIndex = 0; - var length = 0; - - while (runIndex < textRuns.Count) - { - var currentRun = textRuns[runIndex]; - - if (currentWidth + currentRun.GlyphRun.Bounds.Width > availableWidth) - { - var measuredLength = MeasureText(currentRun, paragraphWidth - currentWidth); - - if (measuredLength < currentRun.Text.Length) - { - var currentBreakPosition = -1; - - var lineBreaker = new LineBreakEnumerator(currentRun.Text); - - while (currentBreakPosition < measuredLength && lineBreaker.MoveNext()) - { - var nextBreakPosition = lineBreaker.Current.PositionWrap; - - if (nextBreakPosition == 0) - { - break; - } - - if (nextBreakPosition > measuredLength) - { - break; - } - - currentBreakPosition = nextBreakPosition; - } - - if (currentBreakPosition != -1) - { - measuredLength = currentBreakPosition; - } - } - - length += measuredLength; - - var splitResult = SplitTextRuns(textRuns, length); - - var textLineMetrics = - TextLineMetrics.Create(splitResult.First, paragraphWidth, paragraphProperties.TextAlignment); - - return new SimpleTextLine(text.Take(length), splitResult.First, textLineMetrics); - } - - currentWidth += currentRun.GlyphRun.Bounds.Width; - - length += currentRun.GlyphRun.Characters.Length; - - runIndex++; - } - - return new SimpleTextLine(text, textRuns, - TextLineMetrics.Create(textRuns, paragraphWidth, paragraphProperties.TextAlignment)); - } - - /// - /// Measures the number of characters that fits into available width. - /// - /// The text run. - /// The available width. - /// - private static int MeasureText(ShapedTextRun textRun, double availableWidth) - { - var glyphRun = textRun.GlyphRun; - - var characterHit = glyphRun.GetCharacterHitFromDistance(availableWidth, out _); - - return characterHit.FirstCharacterIndex + characterHit.TrailingLength - textRun.Text.Start; - } - - /// - /// Creates an ellipsis. - /// - /// The text style. - /// - private static ShapedTextRun CreateEllipsisRun(TextStyle textStyle) - { - var formatterImpl = AvaloniaLocator.Current.GetService(); - - var glyphRun = formatterImpl.ShapeText(s_ellipsis, textStyle.TextFormat); - - return new ShapedTextRun(glyphRun, textStyle); - } - - private readonly struct SplitTextRunsResult - { - public SplitTextRunsResult(IReadOnlyList first, IReadOnlyList second) - { - First = first; - - Second = second; - } - - /// - /// Gets the first text runs. - /// - /// - /// The first text runs. - /// - public IReadOnlyList First { get; } - - /// - /// Gets the second text runs. - /// - /// - /// The second text runs. - /// - public IReadOnlyList Second { get; } - } - - /// - /// Split a sequence of runs into two segments at specified length. - /// - /// The text run's. - /// The length to split at. - /// - private static SplitTextRunsResult SplitTextRuns(IReadOnlyList textRuns, int length) - { - var currentLength = 0; - - for (var i = 0; i < textRuns.Count; i++) - { - var currentRun = textRuns[i]; - - if (currentLength + currentRun.GlyphRun.Characters.Length < length) - { - currentLength += currentRun.GlyphRun.Characters.Length; - continue; - } - - var firstCount = currentRun.GlyphRun.Characters.Length >= 1 ? i + 1 : i; - - var first = new ShapedTextRun[firstCount]; - - if (firstCount > 1) - { - for (var j = 0; j < i; j++) - { - first[j] = textRuns[j]; - } - } - - var secondCount = textRuns.Count - firstCount; - - if (currentLength + currentRun.GlyphRun.Characters.Length == length) - { - var second = new ShapedTextRun[secondCount]; - - var offset = currentRun.GlyphRun.Characters.Length > 1 ? 1 : 0; - - if (secondCount > 0) - { - for (var j = 0; j < secondCount; j++) - { - second[j] = textRuns[i + j + offset]; - } - } - - first[i] = currentRun; - - return new SplitTextRunsResult(first, second); - } - else - { - secondCount++; - - var second = new ShapedTextRun[secondCount]; - - if (secondCount > 0) - { - for (var j = 1; j < secondCount; j++) - { - second[j] = textRuns[i + j]; - } - } - - var split = currentRun.Split(length - currentLength); - - first[i] = split.First; - - second[0] = split.Second; - - return new SplitTextRunsResult(first, second); - } - } - - return new SplitTextRunsResult(textRuns, null); - } - } -} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/SimpleTextLine.cs b/src/Avalonia.Visuals/Media/TextFormatting/SimpleTextLine.cs deleted file mode 100644 index 11d241bc348..00000000000 --- a/src/Avalonia.Visuals/Media/TextFormatting/SimpleTextLine.cs +++ /dev/null @@ -1,259 +0,0 @@ -using System; -using System.Collections.Generic; -using Avalonia.Platform; - -namespace Avalonia.Media.TextFormatting -{ - internal class SimpleTextLine : TextLine - { - private readonly IReadOnlyList _textRuns; - - public SimpleTextLine(TextPointer textPointer, IReadOnlyList textRuns, TextLineMetrics lineMetrics) - { - Text = textPointer; - _textRuns = textRuns; - LineMetrics = lineMetrics; - } - - /// - public override TextPointer Text { get; } - - /// - public override IReadOnlyList TextRuns => _textRuns; - - /// - public override TextLineMetrics LineMetrics { get; } - - /// - public override void Draw(IDrawingContextImpl drawingContext, Point origin) - { - var currentX = origin.X; - - foreach (var textRun in _textRuns) - { - var baselineOrigin = new Point(currentX + LineMetrics.BaselineOrigin.X, - origin.Y + LineMetrics.BaselineOrigin.Y); - - textRun.Draw(drawingContext, baselineOrigin); - - currentX += textRun.Bounds.Width; - } - } - - /// - public override CharacterHit GetCharacterHitFromDistance(double distance) - { - if (distance < 0) - { - // hit happens before the line, return the first position - return new CharacterHit(Text.Start); - } - - // process hit that happens within the line - var characterHit = new CharacterHit(); - - foreach (var run in _textRuns) - { - characterHit = run.GlyphRun.GetCharacterHitFromDistance(distance, out _); - - if (distance <= run.Bounds.Width) - { - break; - } - - distance -= run.Bounds.Width; - } - - return characterHit; - } - - /// - public override double GetDistanceFromCharacterHit(CharacterHit characterHit) - { - return DistanceFromCodepointIndex(characterHit.FirstCharacterIndex + (characterHit.TrailingLength != 0 ? 1 : 0)); - } - - /// - public override CharacterHit GetNextCaretCharacterHit(CharacterHit characterHit) - { - int nextVisibleCp; - bool navigableCpFound; - - if (characterHit.TrailingLength == 0) - { - navigableCpFound = FindNextCodepointIndex(characterHit.FirstCharacterIndex, out nextVisibleCp); - - if (navigableCpFound) - { - // Move from leading to trailing edge - return new CharacterHit(nextVisibleCp, 1); - } - } - - navigableCpFound = FindNextCodepointIndex(characterHit.FirstCharacterIndex + 1, out nextVisibleCp); - - if (navigableCpFound) - { - // Move from trailing edge of current character to trailing edge of next - return new CharacterHit(nextVisibleCp, 1); - } - - // Can't move, we're after the last character - return characterHit; - } - - /// - public override CharacterHit GetPreviousCaretCharacterHit(CharacterHit characterHit) - { - int previousCodepointIndex; - bool codepointIndexFound; - - var cpHit = characterHit.FirstCharacterIndex; - var trailingHit = characterHit.TrailingLength != 0; - - // Input can be right after the end of the current line. Snap it to be at the end of the line. - if (cpHit >= Text.Start + Text.Length) - { - cpHit = Text.Start + Text.Length - 1; - - trailingHit = true; - } - - if (trailingHit) - { - codepointIndexFound = FindPreviousCodepointIndex(cpHit, out previousCodepointIndex); - - if (codepointIndexFound) - { - // Move from trailing to leading edge - return new CharacterHit(previousCodepointIndex, 0); - } - } - - codepointIndexFound = FindPreviousCodepointIndex(cpHit - 1, out previousCodepointIndex); - - if (codepointIndexFound) - { - // Move from leading edge of current character to leading edge of previous - return new CharacterHit(previousCodepointIndex, 0); - } - - // Can't move, we're before the first character - return characterHit; - } - - /// - public override CharacterHit GetBackspaceCaretCharacterHit(CharacterHit characterHit) - { - // same operation as move-to-previous - return GetPreviousCaretCharacterHit(characterHit); - } - - /// - /// Get distance from line start to the specified codepoint index - /// - private double DistanceFromCodepointIndex(int codepointIndex) - { - var currentDistance = 0.0; - - foreach (var textRun in _textRuns) - { - if (codepointIndex > textRun.Text.End) - { - currentDistance += textRun.Bounds.Width; - - continue; - } - - return currentDistance + textRun.GlyphRun.GetDistanceFromCharacterHit(new CharacterHit(codepointIndex)); - } - - return currentDistance; - } - - /// - /// Search forward from the given codepoint index (inclusive) to find the next navigable codepoint index. - /// Return true if one such codepoint index is found, false otherwise. - /// - private bool FindNextCodepointIndex(int codepointIndex, out int nextCodepointIndex) - { - nextCodepointIndex = codepointIndex; - - if (codepointIndex >= Text.Start + Text.Length) - { - return false; // Cannot go forward anymore - } - - GetRunIndexAtCodepointIndex(codepointIndex, out var runIndex, out var cpRunStart); - - while (runIndex < TextRuns.Count) - { - // When navigating forward, only the trailing edge of visible content is - // navigable. - if (runIndex < TextRuns.Count) - { - nextCodepointIndex = Math.Max(cpRunStart, codepointIndex); - return true; - } - - cpRunStart += TextRuns[runIndex++].Text.Length; - } - - return false; - } - - /// - /// Search backward from the given codepoint index (inclusive) to find the previous navigable codepoint index. - /// Return true if one such codepoint is found, false otherwise. - /// - private bool FindPreviousCodepointIndex(int codepointIndex, out int previousCodepointIndex) - { - previousCodepointIndex = codepointIndex; - - if (codepointIndex < Text.Start) - { - return false; // Cannot go backward anymore. - } - - // Position the cpRunEnd at the end of the span that contains the given cp - GetRunIndexAtCodepointIndex(codepointIndex, out var runIndex, out var codepointIndexAtRunEnd); - - codepointIndexAtRunEnd += TextRuns[runIndex].Text.End; - - while (runIndex >= 0) - { - // Visible content has caret stops at its leading edge. - if (runIndex + 1 < TextRuns.Count) - { - previousCodepointIndex = Math.Min(codepointIndexAtRunEnd, codepointIndex); - return true; - } - - // Newline sequence has caret stops at its leading edge. - if (runIndex == TextRuns.Count) - { - // Get the cp index at the beginning of the newline sequence. - previousCodepointIndex = codepointIndexAtRunEnd - TextRuns[runIndex].Text.Length + 1; - return true; - } - - codepointIndexAtRunEnd -= TextRuns[runIndex--].Text.Length; - } - - return false; - } - - private void GetRunIndexAtCodepointIndex(int codepointIndex, out int runIndex, out int codepointIndexAtRunStart) - { - codepointIndexAtRunStart = Text.Start; - runIndex = 0; - - // Find the span that contains the given cp - while (runIndex < TextRuns.Count && - codepointIndexAtRunStart + TextRuns[runIndex].Text.Length <= codepointIndex) - { - codepointIndexAtRunStart += TextRuns[runIndex++].Text.Length; - } - } - } -} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs index d9b27958ab9..b35882fc0e8 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs @@ -1,4 +1,6 @@ -using Avalonia.Utility; +using System.Collections.Generic; +using Avalonia.Media.TextFormatting.Unicode; +using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting { @@ -7,15 +9,182 @@ namespace Avalonia.Media.TextFormatting /// public class TextCharacters : TextRun { - protected TextCharacters() + public TextCharacters(ReadOnlySlice text, TextRunProperties properties) { - + TextSourceLength = text.Length; + Text = text; + Properties = properties; } - public TextCharacters(ReadOnlySlice text, TextStyle style) + /// + public override int TextSourceLength { get; } + + /// + public override ReadOnlySlice Text { get; } + + /// + public override TextRunProperties Properties { get; } + + /// + /// Gets a list of . + /// + /// The shapeable text characters. + internal IList GetShapeableCharacters() { - Text = text; - Style = style; + var shapeableCharacters = new List(2); + + var runText = Text; + + while (!runText.IsEmpty) + { + var shapeableRun = CreateShapeableRun(runText, Properties); + + shapeableCharacters.Add(shapeableRun); + + runText = runText.Skip(shapeableRun.Text.Length); + } + + return shapeableCharacters; + } + + /// + /// Creates a shapeable text run with unique properties. + /// + /// The text to create text runs from. + /// The default text run properties. + /// A list of shapeable text runs. + private ShapeableTextCharacters CreateShapeableRun(ReadOnlySlice text, TextRunProperties defaultProperties) + { + var defaultTypeface = defaultProperties.Typeface; + + var currentTypeface = defaultTypeface; + + if (TryGetRunProperties(text, currentTypeface, defaultTypeface, out var count)) + { + return new ShapeableTextCharacters(text.Take(count), + new GenericTextRunProperties(currentTypeface, defaultProperties.FontRenderingEmSize, + defaultProperties.TextDecorations, defaultProperties.ForegroundBrush)); + + } + + var codepoint = Codepoint.ReadAt(text, count, out _); + + //ToDo: Fix FontFamily fallback + currentTypeface = + FontManager.Current.MatchCharacter(codepoint, defaultTypeface.Weight, defaultTypeface.Style, defaultTypeface.FontFamily); + + if (currentTypeface != null && TryGetRunProperties(text, currentTypeface, defaultTypeface, out count)) + { + //Fallback found + return new ShapeableTextCharacters(text.Take(count), + new GenericTextRunProperties(currentTypeface, defaultProperties.FontRenderingEmSize, + defaultProperties.TextDecorations, defaultProperties.ForegroundBrush)); + } + + // no fallback found + currentTypeface = defaultTypeface; + + var glyphTypeface = currentTypeface.GlyphTypeface; + + var enumerator = new GraphemeEnumerator(text); + + while (enumerator.MoveNext()) + { + var grapheme = enumerator.Current; + + if (!grapheme.FirstCodepoint.IsWhiteSpace && glyphTypeface.TryGetGlyph(grapheme.FirstCodepoint, out _)) + { + break; + } + + count += grapheme.Text.Length; + } + + return new ShapeableTextCharacters(text.Take(count), + new GenericTextRunProperties(currentTypeface, defaultProperties.FontRenderingEmSize, + defaultProperties.TextDecorations, defaultProperties.ForegroundBrush)); + } + + /// + /// Tries to get run properties. + /// + /// + /// + /// The typeface that is used to find matching characters. + /// + /// + protected bool TryGetRunProperties(ReadOnlySlice text, Typeface typeface, Typeface defaultTypeface, + out int count) + { + if (text.Length == 0) + { + count = 0; + return false; + } + + var isFallback = typeface != defaultTypeface; + + count = 0; + var script = Script.Common; + //var direction = BiDiClass.LeftToRight; + + var font = typeface.GlyphTypeface; + var defaultFont = defaultTypeface.GlyphTypeface; + + var enumerator = new GraphemeEnumerator(text); + + while (enumerator.MoveNext()) + { + var grapheme = enumerator.Current; + + var currentScript = grapheme.FirstCodepoint.Script; + + //var currentDirection = grapheme.FirstCodepoint.BiDiClass; + + //// ToDo: Implement BiDi algorithm + //if (currentScript.HorizontalDirection != direction) + //{ + // if (!UnicodeUtility.IsWhiteSpace(grapheme.FirstCodepoint)) + // { + // break; + // } + //} + + if (currentScript != script) + { + if (currentScript != Script.Inherited && currentScript != Script.Common) + { + if (script == Script.Inherited || script == Script.Common) + { + script = currentScript; + } + else + { + break; + } + } + } + + if (isFallback) + { + if (defaultFont.TryGetGlyph(grapheme.FirstCodepoint, out _)) + { + break; + } + } + + if (!font.TryGetGlyph(grapheme.FirstCodepoint, out _)) + { + if (!grapheme.FirstCodepoint.IsWhiteSpace) + { + break; + } + } + + count += grapheme.Text.Length; + } + + return count > 0; } } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextEndOfSegment.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextEndOfSegment.cs new file mode 100644 index 00000000000..306fa288ee7 --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextEndOfSegment.cs @@ -0,0 +1,17 @@ +namespace Avalonia.Media.TextFormatting +{ + /// + /// Specialized text run used to mark the end of a segment, i.e., to end + /// the scope affected by a preceding TextModifier run. + /// + public class TextEndOfSegment : TextRun + { + public TextEndOfSegment(int textSourceLength) + { + TextSourceLength = textSourceLength; + } + + /// + public override int TextSourceLength { get; } + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextFormat.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextFormat.cs deleted file mode 100644 index 18dd6c7c109..00000000000 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextFormat.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; - -namespace Avalonia.Media.TextFormatting -{ - /// - /// Unique text formatting properties that are used by the . - /// - public readonly struct TextFormat : IEquatable - { - public TextFormat(Typeface typeface, double fontRenderingEmSize) - { - Typeface = typeface; - FontRenderingEmSize = fontRenderingEmSize; - FontMetrics = new FontMetrics(typeface, fontRenderingEmSize); - } - - /// - /// Gets the typeface. - /// - /// - /// The typeface. - /// - public Typeface Typeface { get; } - - /// - /// Gets the font rendering em size. - /// - /// - /// The em rendering size of the font. - /// - public double FontRenderingEmSize { get; } - - /// - /// Gets the font metrics. - /// - /// - /// The metrics of the font. - /// - public FontMetrics FontMetrics { get; } - - public static bool operator ==(TextFormat self, TextFormat other) - { - return self.Equals(other); - } - - public static bool operator !=(TextFormat self, TextFormat other) - { - return !(self == other); - } - - public bool Equals(TextFormat other) - { - return Typeface.Equals(other.Typeface) && FontRenderingEmSize.Equals(other.FontRenderingEmSize); - } - - public override bool Equals(object obj) - { - return obj is TextFormat other && Equals(other); - } - - public override int GetHashCode() - { - unchecked - { - var hashCode = (Typeface != null ? Typeface.GetHashCode() : 0); - hashCode = (hashCode * 397) ^ FontRenderingEmSize.GetHashCode(); - return hashCode; - } - } - } -} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextFormatter.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextFormatter.cs index 7da39dc5dc9..e4c898e2b86 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextFormatter.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextFormatter.cs @@ -1,5 +1,4 @@ using Avalonia.Media.TextFormatting.Unicode; -using Avalonia.Utility; namespace Avalonia.Media.TextFormatting { @@ -22,7 +21,7 @@ public static TextFormatter Current return current; } - current = new SimpleTextFormatter(); + current = new TextFormatterImpl(); AvaloniaLocator.CurrentMutable.Bind().ToConstant(current); @@ -38,149 +37,10 @@ public static TextFormatter Current /// A value that specifies the width of the paragraph that the line fills. /// A value that represents paragraph properties, /// such as TextWrapping, TextAlignment, or TextStyle. + /// A value that specifies the text formatter state, + /// in terms of where the previous line in the paragraph was broken by the text formatting process. /// The formatted line. public abstract TextLine FormatLine(ITextSource textSource, int firstTextSourceIndex, double paragraphWidth, - TextParagraphProperties paragraphProperties); - - /// - /// Creates a text style run with unique properties. - /// - /// The text to create text runs from. - /// - /// A list of text runs. - protected TextStyleRun CreateShapableTextStyleRun(ReadOnlySlice text, TextStyle defaultStyle) - { - var defaultTypeface = defaultStyle.TextFormat.Typeface; - - var currentTypeface = defaultTypeface; - - if (TryGetRunProperties(text, currentTypeface, defaultTypeface, out var count)) - { - return new TextStyleRun(new TextPointer(text.Start, count), new TextStyle(currentTypeface, - defaultStyle.TextFormat.FontRenderingEmSize, - defaultStyle.Foreground, defaultStyle.TextDecorations)); - - } - - var codepoint = Codepoint.ReadAt(text, count, out _); - - //ToDo: Fix FontFamily fallback - currentTypeface = - FontManager.Current.MatchCharacter(codepoint, defaultTypeface.Weight, defaultTypeface.Style, defaultStyle.TextFormat.Typeface.FontFamily); - - if (currentTypeface != null && TryGetRunProperties(text, currentTypeface, defaultTypeface, out count)) - { - //Fallback found - return new TextStyleRun(new TextPointer(text.Start, count), new TextStyle(currentTypeface, - defaultStyle.TextFormat.FontRenderingEmSize, - defaultStyle.Foreground, defaultStyle.TextDecorations)); - - } - - // no fallback found - currentTypeface = defaultTypeface; - - var glyphTypeface = currentTypeface.GlyphTypeface; - - var enumerator = new GraphemeEnumerator(text); - - while (enumerator.MoveNext()) - { - var grapheme = enumerator.Current; - - if (!grapheme.FirstCodepoint.IsWhiteSpace && glyphTypeface.TryGetGlyph(grapheme.FirstCodepoint, out _)) - { - break; - } - - count += grapheme.Text.Length; - } - - return new TextStyleRun(new TextPointer(text.Start, count), - new TextStyle(currentTypeface, defaultStyle.TextFormat.FontRenderingEmSize, - defaultStyle.Foreground, defaultStyle.TextDecorations)); - } - - /// - /// Tries to get run properties. - /// - /// - /// - /// The typeface that is used to find matching characters. - /// - /// - protected bool TryGetRunProperties(ReadOnlySlice text, Typeface typeface, Typeface defaultTypeface, - out int count) - { - if (text.Length == 0) - { - count = 0; - return false; - } - - var isFallback = typeface != defaultTypeface; - - count = 0; - var script = Script.Common; - //var direction = BiDiClass.LeftToRight; - - var font = typeface.GlyphTypeface; - var defaultFont = defaultTypeface.GlyphTypeface; - - var enumerator = new GraphemeEnumerator(text); - - while (enumerator.MoveNext()) - { - var grapheme = enumerator.Current; - - var currentScript = grapheme.FirstCodepoint.Script; - - //var currentDirection = grapheme.FirstCodepoint.BiDiClass; - - //// ToDo: Implement BiDi algorithm - //if (currentScript.HorizontalDirection != direction) - //{ - // if (!UnicodeUtility.IsWhiteSpace(grapheme.FirstCodepoint)) - // { - // break; - // } - //} - - if (currentScript != script) - { - if (currentScript != Script.Inherited && currentScript != Script.Common) - { - if (script == Script.Inherited || script == Script.Common) - { - script = currentScript; - } - else - { - break; - } - } - } - - if (isFallback) - { - if (defaultFont.TryGetGlyph(grapheme.FirstCodepoint, out _)) - { - break; - } - } - - if (!font.TryGetGlyph(grapheme.FirstCodepoint, out _)) - { - if (!grapheme.FirstCodepoint.IsWhiteSpace) - { - break; - } - } - - count += grapheme.Text.Length; - } - - return count > 0; - } + TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak = null); } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs new file mode 100644 index 00000000000..793707d0b2e --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs @@ -0,0 +1,544 @@ +using System.Collections.Generic; +using Avalonia.Media.TextFormatting.Unicode; +using Avalonia.Platform; +using Avalonia.Utilities; + +namespace Avalonia.Media.TextFormatting +{ + internal class TextFormatterImpl : TextFormatter + { + private static readonly ReadOnlySlice s_ellipsis = new ReadOnlySlice(new[] { '\u2026' }); + + /// + public override TextLine FormatLine(ITextSource textSource, int firstTextSourceIndex, double paragraphWidth, + TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak = null) + { + var textTrimming = paragraphProperties.TextTrimming; + var textWrapping = paragraphProperties.TextWrapping; + TextLine textLine = null; + + var textRuns = FetchTextRuns(textSource, firstTextSourceIndex, previousLineBreak, out var nextLineBreak); + + var textRange = GetTextRange(textRuns); + + if (textTrimming != TextTrimming.None) + { + textLine = PerformTextTrimming(textRuns, textRange, paragraphWidth, paragraphProperties); + } + else + { + switch (textWrapping) + { + case TextWrapping.NoWrap: + { + var textLineMetrics = + TextLineMetrics.Create(textRuns, textRange, paragraphWidth, paragraphProperties); + + textLine = new TextLineImpl(textRuns, textLineMetrics, nextLineBreak); + break; + } + case TextWrapping.WrapWithOverflow: + case TextWrapping.Wrap: + { + textLine = PerformTextWrapping(textRuns, textRange, paragraphWidth, paragraphProperties); + break; + } + } + } + + return textLine; + } + + /// + /// Fetches text runs. + /// + /// The text source. + /// The first text source index. + /// Previous line break. Can be null. + /// Next line break. Can be null. + /// + /// The formatted text runs. + /// + private static IReadOnlyList FetchTextRuns(ITextSource textSource, + int firstTextSourceIndex, TextLineBreak previousLineBreak, out TextLineBreak nextLineBreak) + { + nextLineBreak = default; + + var currentLength = 0; + + var textRuns = new List(); + + if (previousLineBreak != null) + { + foreach (var shapedCharacters in previousLineBreak.RemainingCharacters) + { + textRuns.Add(shapedCharacters); + + if (TryGetLineBreak(shapedCharacters, out var runLineBreak)) + { + var splitResult = SplitTextRuns(textRuns, currentLength + runLineBreak.PositionWrap); + + nextLineBreak = new TextLineBreak(splitResult.Second); + + return splitResult.First; + } + + currentLength += shapedCharacters.Text.Length; + } + } + + firstTextSourceIndex += currentLength; + + var textRunEnumerator = new TextRunEnumerator(textSource, firstTextSourceIndex); + + while (textRunEnumerator.MoveNext()) + { + var textRun = textRunEnumerator.Current; + + switch (textRun) + { + case TextCharacters textCharacters: + { + var shapeableRuns = textCharacters.GetShapeableCharacters(); + + foreach (var run in shapeableRuns) + { + var glyphRun = TextShaper.Current.ShapeText(run.Text, run.Properties.Typeface, + run.Properties.FontRenderingEmSize, run.Properties.CultureInfo); + + var shapedCharacters = new ShapedTextCharacters(glyphRun, textRun.Properties); + + textRuns.Add(shapedCharacters); + } + + break; + } + } + + if (TryGetLineBreak(textRun, out var runLineBreak)) + { + var splitResult = SplitTextRuns(textRuns, currentLength + runLineBreak.PositionWrap); + + nextLineBreak = new TextLineBreak(splitResult.Second); + + return splitResult.First; + } + + currentLength += textRun.Text.Length; + } + + return textRuns; + } + + private static bool TryGetLineBreak(TextRun textRun, out LineBreak lineBreak) + { + lineBreak = default; + + if (textRun.Text.IsEmpty) + { + return false; + } + + var lineBreakEnumerator = new LineBreakEnumerator(textRun.Text); + + while (lineBreakEnumerator.MoveNext()) + { + if (!lineBreakEnumerator.Current.Required) + { + continue; + } + + lineBreak = lineBreakEnumerator.Current; + + if (lineBreak.PositionWrap >= textRun.Text.Length) + { + return true; + } + + //The line breaker isn't treating \n\r as a pair so we have to fix that here. + if (textRun.Text[lineBreak.PositionMeasure] == '\n' + && textRun.Text[lineBreak.PositionWrap] == '\r') + { + lineBreak = new LineBreak(lineBreak.PositionMeasure, lineBreak.PositionWrap + 1, + lineBreak.Required); + } + + return true; + } + + return false; + } + + /// + /// Performs text trimming and returns a trimmed line. + /// + /// The text runs to perform the trimming on. + /// The text range that is covered by the text runs. + /// A value that specifies the width of the paragraph that the line fills. + /// A value that represents paragraph properties, + /// such as TextWrapping, TextAlignment, or TextStyle. + /// + private static TextLine PerformTextTrimming(IReadOnlyList textRuns, TextRange textRange, + double paragraphWidth, TextParagraphProperties paragraphProperties) + { + var textTrimming = paragraphProperties.TextTrimming; + var availableWidth = paragraphWidth; + var currentWidth = 0.0; + var runIndex = 0; + + while (runIndex < textRuns.Count) + { + var currentRun = textRuns[runIndex]; + + currentWidth += currentRun.GlyphRun.Bounds.Width; + + if (currentWidth > availableWidth) + { + var ellipsisRun = CreateEllipsisRun(currentRun.Properties); + + var measuredLength = MeasureText(currentRun, availableWidth - ellipsisRun.GlyphRun.Bounds.Width); + + if (textTrimming == TextTrimming.WordEllipsis) + { + if (measuredLength < textRange.End) + { + var currentBreakPosition = 0; + + var lineBreaker = new LineBreakEnumerator(currentRun.Text); + + while (currentBreakPosition < measuredLength && lineBreaker.MoveNext()) + { + var nextBreakPosition = lineBreaker.Current.PositionWrap; + + if (nextBreakPosition == 0) + { + break; + } + + if (nextBreakPosition > measuredLength) + { + break; + } + + currentBreakPosition = nextBreakPosition; + } + + measuredLength = currentBreakPosition; + } + } + + var splitResult = SplitTextRuns(textRuns, measuredLength); + + var trimmedRuns = new List(splitResult.First.Count + 1); + + trimmedRuns.AddRange(splitResult.First); + + trimmedRuns.Add(ellipsisRun); + + var textLineMetrics = + TextLineMetrics.Create(trimmedRuns, textRange, paragraphWidth, paragraphProperties); + + return new TextLineImpl(trimmedRuns, textLineMetrics); + } + + availableWidth -= currentRun.GlyphRun.Bounds.Width; + + runIndex++; + } + + return new TextLineImpl(textRuns, + TextLineMetrics.Create(textRuns, textRange, paragraphWidth, paragraphProperties)); + } + + /// + /// Performs text wrapping returns a list of text lines. + /// + /// The text run's. + /// The text range that is covered by the text runs. + /// The paragraph width. + /// The text paragraph properties. + /// The wrapped text line. + private static TextLine PerformTextWrapping(IReadOnlyList textRuns, TextRange textRange, + double paragraphWidth, TextParagraphProperties paragraphProperties) + { + var availableWidth = paragraphWidth; + var currentWidth = 0.0; + var runIndex = 0; + var length = 0; + + while (runIndex < textRuns.Count) + { + var currentRun = textRuns[runIndex]; + + if (currentWidth + currentRun.GlyphRun.Bounds.Width > availableWidth) + { + var measuredLength = MeasureText(currentRun, paragraphWidth - currentWidth); + + if (measuredLength < currentRun.Text.Length) + { + if (paragraphProperties.TextWrapping == TextWrapping.WrapWithOverflow) + { + var lineBreaker = new LineBreakEnumerator(currentRun.Text.Skip(measuredLength)); + + if (lineBreaker.MoveNext()) + { + measuredLength += lineBreaker.Current.PositionWrap; + } + else + { + measuredLength = currentRun.Text.Length; + } + } + else + { + var currentBreakPosition = -1; + + var lineBreaker = new LineBreakEnumerator(currentRun.Text); + + while (currentBreakPosition < measuredLength && lineBreaker.MoveNext()) + { + var nextBreakPosition = lineBreaker.Current.PositionWrap; + + if (nextBreakPosition == 0) + { + break; + } + + if (nextBreakPosition > measuredLength) + { + break; + } + + currentBreakPosition = nextBreakPosition; + } + + if (currentBreakPosition != -1) + { + measuredLength = currentBreakPosition; + } + + } + } + + length += measuredLength; + + var splitResult = SplitTextRuns(textRuns, length); + + var textLineMetrics = TextLineMetrics.Create(splitResult.First, + new TextRange(textRange.Start, length), paragraphWidth, paragraphProperties); + + var lineBreak = splitResult.Second != null && splitResult.Second.Count > 0 ? + new TextLineBreak(splitResult.Second) : + null; + + return new TextLineImpl(splitResult.First, textLineMetrics, lineBreak); + } + + currentWidth += currentRun.GlyphRun.Bounds.Width; + + length += currentRun.GlyphRun.Characters.Length; + + runIndex++; + } + + return new TextLineImpl(textRuns, + TextLineMetrics.Create(textRuns, textRange, paragraphWidth, paragraphProperties)); + } + + /// + /// Measures the number of characters that fits into available width. + /// + /// The text run. + /// The available width. + /// + private static int MeasureText(ShapedTextCharacters textCharacters, double availableWidth) + { + var glyphRun = textCharacters.GlyphRun; + + var characterHit = glyphRun.GetCharacterHitFromDistance(availableWidth, out _); + + return characterHit.FirstCharacterIndex + characterHit.TrailingLength - textCharacters.Text.Start; + } + + /// + /// Creates an ellipsis. + /// + /// The text run properties. + /// + private static ShapedTextCharacters CreateEllipsisRun(TextRunProperties properties) + { + var formatterImpl = AvaloniaLocator.Current.GetService(); + + var glyphRun = formatterImpl.ShapeText(s_ellipsis, properties.Typeface, properties.FontRenderingEmSize, + properties.CultureInfo); + + return new ShapedTextCharacters(glyphRun, properties); + } + + /// + /// Gets the text range that is covered by the text runs. + /// + /// The text runs. + /// The text range that is covered by the text runs. + private static TextRange GetTextRange(IReadOnlyList textRuns) + { + if (textRuns is null || textRuns.Count == 0) + { + return new TextRange(); + } + + var firstTextRun = textRuns[0]; + + if (textRuns.Count == 1) + { + return new TextRange(firstTextRun.Text.Start, firstTextRun.Text.Length); + } + + var start = firstTextRun.Text.Start; + + var end = textRuns[textRuns.Count - 1].Text.End + 1; + + return new TextRange(start, end - start); + } + + /// + /// Split a sequence of runs into two segments at specified length. + /// + /// The text run's. + /// The length to split at. + /// The split text runs. + private static SplitTextRunsResult SplitTextRuns(IReadOnlyList textRuns, int length) + { + var currentLength = 0; + + for (var i = 0; i < textRuns.Count; i++) + { + var currentRun = textRuns[i]; + + if (currentLength + currentRun.GlyphRun.Characters.Length < length) + { + currentLength += currentRun.GlyphRun.Characters.Length; + continue; + } + + var firstCount = currentRun.GlyphRun.Characters.Length >= 1 ? i + 1 : i; + + var first = new ShapedTextCharacters[firstCount]; + + if (firstCount > 1) + { + for (var j = 0; j < i; j++) + { + first[j] = textRuns[j]; + } + } + + var secondCount = textRuns.Count - firstCount; + + if (currentLength + currentRun.GlyphRun.Characters.Length == length) + { + var second = new ShapedTextCharacters[secondCount]; + + var offset = currentRun.GlyphRun.Characters.Length > 1 ? 1 : 0; + + if (secondCount > 0) + { + for (var j = 0; j < secondCount; j++) + { + second[j] = textRuns[i + j + offset]; + } + } + + first[i] = currentRun; + + return new SplitTextRunsResult(first, second); + } + else + { + secondCount++; + + var second = new ShapedTextCharacters[secondCount]; + + if (secondCount > 0) + { + for (var j = 1; j < secondCount; j++) + { + second[j] = textRuns[i + j]; + } + } + + var split = currentRun.Split(length - currentLength); + + first[i] = split.First; + + second[0] = split.Second; + + return new SplitTextRunsResult(first, second); + } + } + + return new SplitTextRunsResult(textRuns, null); + } + + private readonly struct SplitTextRunsResult + { + public SplitTextRunsResult(IReadOnlyList first, IReadOnlyList second) + { + First = first; + + Second = second; + } + + /// + /// Gets the first text runs. + /// + /// + /// The first text runs. + /// + public IReadOnlyList First { get; } + + /// + /// Gets the second text runs. + /// + /// + /// The second text runs. + /// + public IReadOnlyList Second { get; } + } + + private struct TextRunEnumerator + { + private readonly ITextSource _textSource; + private int _pos; + + public TextRunEnumerator(ITextSource textSource, int firstTextSourceIndex) + { + _textSource = textSource; + _pos = firstTextSourceIndex; + Current = null; + } + + // ReSharper disable once MemberHidesStaticFromOuterClass + public TextRun Current { get; private set; } + + public bool MoveNext() + { + Current = _textSource.GetTextRun(_pos); + + if (Current is null) + { + return false; + } + + if (Current.TextSourceLength == 0) + { + return false; + } + + _pos += Current.TextSourceLength; + + return !(Current is TextEndOfLine); + } + } + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextHidden.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextHidden.cs new file mode 100644 index 00000000000..83c5a640eb0 --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextHidden.cs @@ -0,0 +1,9 @@ +namespace Avalonia.Media.TextFormatting +{ + /// + /// Specialized text run used to mark a range of hidden characters + /// + public class TextHidden : TextRun + { + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs index 0292398782b..2e2e4a8c68f 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs @@ -1,11 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; -using Avalonia.Media.Immutable; using Avalonia.Media.TextFormatting.Unicode; -using Avalonia.Platform; using Avalonia.Utilities; -using Avalonia.Utility; +using Avalonia.Platform; namespace Avalonia.Media.TextFormatting { @@ -14,11 +12,11 @@ namespace Avalonia.Media.TextFormatting /// public class TextLayout { - private static readonly ReadOnlySlice s_empty = new ReadOnlySlice(new[] { '\u200B' }); + private static readonly char[] s_empty = { '\u200B' }; private readonly ReadOnlySlice _text; private readonly TextParagraphProperties _paragraphProperties; - private readonly IReadOnlyList _textStyleOverrides; + private readonly IReadOnlyList> _textStyleOverrides; /// /// Initializes a new instance of the class. @@ -33,6 +31,7 @@ public class TextLayout /// The text decorations. /// The maximum width. /// The maximum height. + /// The height of each line of text. /// The maximum number of text lines. /// The text style overrides. public TextLayout( @@ -46,18 +45,22 @@ public TextLayout( TextDecorationCollection textDecorations = null, double maxWidth = double.PositiveInfinity, double maxHeight = double.PositiveInfinity, + double lineHeight = double.NaN, int maxLines = 0, - IReadOnlyList textStyleOverrides = null) + IReadOnlyList> textStyleOverrides = null) { _text = string.IsNullOrEmpty(text) ? new ReadOnlySlice() : new ReadOnlySlice(text.AsMemory()); _paragraphProperties = - CreateTextParagraphProperties(typeface, fontSize, foreground, textAlignment, textWrapping, textTrimming, textDecorations?.ToImmutable()); + CreateTextParagraphProperties(typeface, fontSize, foreground, textAlignment, textWrapping, textTrimming, + textDecorations, lineHeight); _textStyleOverrides = textStyleOverrides; + LineHeight = lineHeight; + MaxWidth = maxWidth; MaxHeight = maxHeight; @@ -67,22 +70,29 @@ public TextLayout( UpdateLayout(); } + /// + /// Gets or sets the height of each line of text. + /// + /// + /// A value of NaN (equivalent to an attribute value of "Auto") indicates that the line height + /// is determined automatically from the current font characteristics. The default is NaN. + /// + public double LineHeight { get; } + /// /// Gets the maximum width. /// public double MaxWidth { get; } - /// /// Gets the maximum height. /// public double MaxHeight { get; } - /// /// Gets the maximum number of text lines. /// - public double MaxLines { get; } + public int MaxLines { get; } /// /// Gets the text lines. @@ -105,7 +115,7 @@ public TextLayout( /// /// The drawing context. /// The origin. - public void Draw(IDrawingContextImpl context, Point origin) + public void Draw(DrawingContext context, Point origin) { if (!TextLines.Any()) { @@ -132,14 +142,16 @@ public void Draw(IDrawingContextImpl context, Point origin) /// The text wrapping. /// The text trimming. /// The text decorations. + /// The height of each line of text. /// private static TextParagraphProperties CreateTextParagraphProperties(Typeface typeface, double fontSize, IBrush foreground, TextAlignment textAlignment, TextWrapping textWrapping, TextTrimming textTrimming, - ImmutableTextDecoration[] textDecorations) + TextDecorationCollection textDecorations, double lineHeight) { - var textRunStyle = new TextStyle(typeface, fontSize, foreground, textDecorations); + var textRunStyle = new GenericTextRunProperties(typeface, fontSize, textDecorations, foreground); - return new TextParagraphProperties(textRunStyle, textAlignment, textWrapping, textTrimming); + return new GenericTextParagraphProperties(textRunStyle, textAlignment, textWrapping, textTrimming, + lineHeight); } /// @@ -170,14 +182,15 @@ private static void UpdateBounds(TextLine textLine, ref double left, ref double /// The empty text line. private TextLine CreateEmptyTextLine(int startingIndex) { - var textFormat = _paragraphProperties.DefaultTextStyle.TextFormat; + var properties = _paragraphProperties.DefaultTextRunProperties; - var glyphRun = TextShaper.Current.ShapeText(s_empty, textFormat); + var glyphRun = TextShaper.Current.ShapeText(new ReadOnlySlice(s_empty, startingIndex, 1), + properties.Typeface, properties.FontRenderingEmSize, properties.CultureInfo); - var textRuns = new[] { new ShapedTextRun(glyphRun, _paragraphProperties.DefaultTextStyle) }; + var textRuns = new[] { new ShapedTextCharacters(glyphRun, _paragraphProperties.DefaultTextRunProperties) }; - return new SimpleTextLine(new TextPointer(startingIndex, 0), textRuns, - TextLineMetrics.Create(textRuns, MaxWidth, _paragraphProperties.TextAlignment)); + return new TextLineImpl(textRuns, + TextLineMetrics.Create(textRuns, new TextRange(startingIndex, 1), MaxWidth, _paragraphProperties)); } /// @@ -199,77 +212,38 @@ private void UpdateLayout() double left = 0.0, right = 0.0, bottom = 0.0; - var lineBreaker = new LineBreakEnumerator(_text); - var currentPosition = 0; + var textSource = new FormattedTextSource(_text, + _paragraphProperties.DefaultTextRunProperties, _textStyleOverrides); + + TextLineBreak previousLineBreak = null; + while (currentPosition < _text.Length && (MaxLines == 0 || textLines.Count < MaxLines)) { - int length; + var textLine = TextFormatter.Current.FormatLine(textSource, currentPosition, MaxWidth, + _paragraphProperties, previousLineBreak); - if (lineBreaker.MoveNext()) - { - if (!lineBreaker.Current.Required) - { - continue; - } + previousLineBreak = textLine.LineBreak; - length = lineBreaker.Current.PositionWrap - currentPosition; + textLines.Add(textLine); - if (currentPosition + length < _text.Length) - { - //The line breaker isn't treating \n\r as a pair so we have to fix that here. - if (_text[lineBreaker.Current.PositionMeasure] == '\n' - && _text[lineBreaker.Current.PositionWrap] == '\r') - { - length++; - } - } - } - else + UpdateBounds(textLine, ref left, ref right, ref bottom); + + if (!double.IsPositiveInfinity(MaxHeight) && bottom > MaxHeight) { - length = _text.Length - currentPosition; + break; } - var remainingLength = length; + currentPosition += textLine.TextRange.Length; - while (remainingLength > 0 && (MaxLines == 0 || textLines.Count < MaxLines)) + if (currentPosition != _text.Length || textLine.LineBreak == null) { - var textSlice = _text.AsSlice(currentPosition, remainingLength); - - var textSource = new FormattedTextSource(textSlice, _paragraphProperties.DefaultTextStyle, _textStyleOverrides); - - var textLine = TextFormatter.Current.FormatLine(textSource, 0, MaxWidth, _paragraphProperties); - - UpdateBounds(textLine, ref left, ref right, ref bottom); - - textLines.Add(textLine); - - if (!double.IsPositiveInfinity(MaxHeight) && bottom + textLine.LineMetrics.Size.Height > MaxHeight) - { - currentPosition = _text.Length; - break; - } - - if (_paragraphProperties.TextTrimming != TextTrimming.None) - { - currentPosition += remainingLength; - - break; - } - - remainingLength -= textLine.Text.Length; - - currentPosition += textLine.Text.Length; + continue; } - } - if (lineBreaker.Current.Required && currentPosition == _text.Length) - { var emptyTextLine = CreateEmptyTextLine(currentPosition); - UpdateBounds(emptyTextLine, ref left, ref right, ref bottom); - textLines.Add(emptyTextLine); } @@ -279,22 +253,27 @@ private void UpdateLayout() } } - private struct FormattedTextSource : ITextSource + private readonly struct FormattedTextSource : ITextSource { private readonly ReadOnlySlice _text; - private readonly TextStyle _defaultStyle; - private readonly IReadOnlyList _textStyleOverrides; + private readonly TextRunProperties _defaultProperties; + private readonly IReadOnlyList> _textModifier; - public FormattedTextSource(ReadOnlySlice text, TextStyle defaultStyle, - IReadOnlyList textStyleOverrides) + public FormattedTextSource(ReadOnlySlice text, TextRunProperties defaultProperties, + IReadOnlyList> textModifier) { _text = text; - _defaultStyle = defaultStyle; - _textStyleOverrides = textStyleOverrides; + _defaultProperties = defaultProperties; + _textModifier = textModifier; } public TextRun GetTextRun(int textSourceIndex) { + if (textSourceIndex > _text.End) + { + return new TextEndOfLine(); + } + var runText = _text.Skip(textSourceIndex); if (runText.IsEmpty) @@ -302,30 +281,29 @@ public TextRun GetTextRun(int textSourceIndex) return new TextEndOfLine(); } - var textStyleRun = CreateTextStyleRunWithOverride(runText, _defaultStyle, _textStyleOverrides); + var textStyleRun = CreateTextStyleRun(runText, _defaultProperties, _textModifier); - return new TextCharacters(runText.Take(textStyleRun.TextPointer.Length), textStyleRun.Style); + return new TextCharacters(runText.Take(textStyleRun.Length), textStyleRun.Value); } /// - /// Creates a text style run that has overrides applied. Only overrides with equal TextStyle. - /// If optimizeForShaping is true Foreground is ignored. + /// Creates a span of text run properties that has modifier applied. /// - /// The text to create the run for. - /// The default text style for segments that don't have an override. - /// The text style overrides. + /// The text to create the properties for. + /// The default text properties. + /// The text properties modifier. /// /// The created text style run. /// - private static TextStyleRun CreateTextStyleRunWithOverride(ReadOnlySlice text, - TextStyle defaultTextStyle, IReadOnlyList textStyleOverrides) + private static ValueSpan CreateTextStyleRun(ReadOnlySlice text, + TextRunProperties defaultProperties, IReadOnlyList> textModifier) { - if(textStyleOverrides == null || textStyleOverrides.Count == 0) + if (textModifier == null || textModifier.Count == 0) { - return new TextStyleRun(new TextPointer(text.Start, text.Length), defaultTextStyle); + return new ValueSpan(text.Start, text.Length, defaultProperties); } - var currentTextStyle = defaultTextStyle; + var currentProperties = defaultProperties; var hasOverride = false; @@ -333,35 +311,34 @@ private static TextStyleRun CreateTextStyleRunWithOverride(ReadOnlySlice t var length = 0; - for (; i < textStyleOverrides.Count; i++) + for (; i < textModifier.Count; i++) { - var styleOverride = textStyleOverrides[i]; + var propertiesOverride = textModifier[i]; - var textPointer = styleOverride.TextPointer; + var textRange = new TextRange(propertiesOverride.Start, propertiesOverride.Length); - if (textPointer.End < text.Start) + if (textRange.End < text.Start) { continue; } - if (textPointer.Start > text.End) + if (textRange.Start > text.End) { length = text.Length; break; } - if (textPointer.Start > text.Start) + if (textRange.Start > text.Start) { - if (styleOverride.Style.TextFormat != currentTextStyle.TextFormat || - !currentTextStyle.Foreground.Equals(styleOverride.Style.Foreground)) + if (propertiesOverride.Value != currentProperties) { - length = Math.Min(Math.Abs(textPointer.Start - text.Start), text.Length); + length = Math.Min(Math.Abs(textRange.Start - text.Start), text.Length); break; } } - length += Math.Min(text.Length - length, textPointer.Length); + length += Math.Min(text.Length - length, textRange.Length); if (hasOverride) { @@ -370,13 +347,12 @@ private static TextStyleRun CreateTextStyleRunWithOverride(ReadOnlySlice t hasOverride = true; - currentTextStyle = styleOverride.Style; + currentProperties = propertiesOverride.Value; } - if (length < text.Length && i == textStyleOverrides.Count) + if (length < text.Length && i == textModifier.Count) { - if (currentTextStyle.Foreground.Equals(defaultTextStyle.Foreground) && - currentTextStyle.TextFormat == defaultTextStyle.TextFormat) + if (currentProperties == defaultProperties) { length = text.Length; } @@ -387,7 +363,7 @@ private static TextStyleRun CreateTextStyleRunWithOverride(ReadOnlySlice t text = text.Take(length); } - return new TextStyleRun(new TextPointer(text.Start, length), currentTextStyle); + return new ValueSpan(text.Start, length, currentProperties); } } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs index a0f7b44882e..c3b7dfc77a3 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using Avalonia.Platform; namespace Avalonia.Media.TextFormatting { @@ -9,12 +8,12 @@ namespace Avalonia.Media.TextFormatting public abstract class TextLine { /// - /// Gets the text. + /// Gets the text range that is covered by the line. /// /// - /// The text pointer. + /// The text range that is covered by the line. /// - public abstract TextPointer Text { get; } + public abstract TextRange TextRange { get; } /// /// Gets the text runs. @@ -32,12 +31,20 @@ public abstract class TextLine /// public abstract TextLineMetrics LineMetrics { get; } + /// + /// Gets the state of the line when broken by line breaking process. + /// + /// + /// A value that represents the line break. + /// + public abstract TextLineBreak LineBreak { get; } + /// /// Draws the at the given origin. /// /// The drawing context. /// The origin. - public abstract void Draw(IDrawingContextImpl drawingContext, Point origin); + public abstract void Draw(DrawingContext drawingContext, Point origin); /// /// Client to get the character hit corresponding to the specified diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLineBreak.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLineBreak.cs new file mode 100644 index 00000000000..c24454cb764 --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLineBreak.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace Avalonia.Media.TextFormatting +{ + public class TextLineBreak + { + public TextLineBreak(IReadOnlyList remainingCharacters) + { + RemainingCharacters = remainingCharacters; + } + + /// + /// Get the remaining shaped characters that were split up by the during the formatting process. + /// + public IReadOnlyList RemainingCharacters { get; } + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs new file mode 100644 index 00000000000..cf00399b8a1 --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs @@ -0,0 +1,235 @@ +using System.Collections.Generic; + +namespace Avalonia.Media.TextFormatting +{ + internal class TextLineImpl : TextLine + { + private readonly IReadOnlyList _textRuns; + + public TextLineImpl(IReadOnlyList textRuns, TextLineMetrics lineMetrics, + TextLineBreak lineBreak = null) + { + _textRuns = textRuns; + LineMetrics = lineMetrics; + LineBreak = lineBreak; + } + + /// + public override TextRange TextRange => LineMetrics.TextRange; + + /// + public override IReadOnlyList TextRuns => _textRuns; + + /// + public override TextLineMetrics LineMetrics { get; } + + /// + public override TextLineBreak LineBreak { get; } + + /// + public override void Draw(DrawingContext drawingContext, Point origin) + { + var currentX = origin.X; + + foreach (var textRun in _textRuns) + { + var baselineOrigin = new Point(currentX + LineMetrics.BaselineOrigin.X, + origin.Y + LineMetrics.BaselineOrigin.Y); + + textRun.Draw(drawingContext, baselineOrigin); + + currentX += textRun.Bounds.Width; + } + } + + /// + public override CharacterHit GetCharacterHitFromDistance(double distance) + { + if (distance < 0) + { + // hit happens before the line, return the first position + return new CharacterHit(TextRange.Start); + } + + // process hit that happens within the line + var characterHit = new CharacterHit(); + + foreach (var run in _textRuns) + { + characterHit = run.GlyphRun.GetCharacterHitFromDistance(distance, out _); + + if (distance <= run.Bounds.Width) + { + break; + } + + distance -= run.Bounds.Width; + } + + return characterHit; + } + + /// + public override double GetDistanceFromCharacterHit(CharacterHit characterHit) + { + return DistanceFromCodepointIndex(characterHit.FirstCharacterIndex + (characterHit.TrailingLength != 0 ? 1 : 0)); + } + + /// + public override CharacterHit GetNextCaretCharacterHit(CharacterHit characterHit) + { + if (TryFindNextCharacterHit(characterHit, out var nextCharacterHit)) + { + return nextCharacterHit; + } + + return new CharacterHit(TextRange.End); // Can't move, we're after the last character + } + + /// + public override CharacterHit GetPreviousCaretCharacterHit(CharacterHit characterHit) + { + if (TryFindPreviousCharacterHit(characterHit, out var previousCharacterHit)) + { + return previousCharacterHit; + } + + return new CharacterHit(TextRange.Start); // Can't move, we're before the first character + } + + /// + public override CharacterHit GetBackspaceCaretCharacterHit(CharacterHit characterHit) + { + // same operation as move-to-previous + return GetPreviousCaretCharacterHit(characterHit); + } + + /// + /// Get distance from line start to the specified codepoint index. + /// + private double DistanceFromCodepointIndex(int codepointIndex) + { + var currentDistance = 0.0; + + foreach (var textRun in _textRuns) + { + if (codepointIndex > textRun.Text.End) + { + currentDistance += textRun.Bounds.Width; + + continue; + } + + return currentDistance + textRun.GlyphRun.GetDistanceFromCharacterHit(new CharacterHit(codepointIndex)); + } + + return currentDistance; + } + + /// + /// Tries to find the next character hit. + /// + /// The current character hit. + /// The next character hit. + /// + private bool TryFindNextCharacterHit(CharacterHit characterHit, out CharacterHit nextCharacterHit) + { + nextCharacterHit = characterHit; + + var codepointIndex = characterHit.FirstCharacterIndex + characterHit.TrailingLength; + + if (codepointIndex >= TextRange.Start + TextRange.Length) + { + return false; // Cannot go forward anymore + } + + var runIndex = GetRunIndexAtCodepointIndex(codepointIndex); + + while (runIndex < TextRuns.Count) + { + var run = _textRuns[runIndex]; + + nextCharacterHit = run.GlyphRun.FindNearestCharacterHit(characterHit.FirstCharacterIndex + characterHit.TrailingLength, out _); + + if (codepointIndex <= nextCharacterHit.FirstCharacterIndex + nextCharacterHit.TrailingLength) + { + return true; + } + + runIndex++; + } + + return false; + } + + /// + /// Tries to find the previous character hit. + /// + /// The current character hit. + /// The previous character hit. + /// + private bool TryFindPreviousCharacterHit(CharacterHit characterHit, out CharacterHit previousCharacterHit) + { + previousCharacterHit = characterHit; + + var codepointIndex = characterHit.FirstCharacterIndex + characterHit.TrailingLength; + + if (codepointIndex < TextRange.Start) + { + return false; // Cannot go backward anymore. + } + + var runIndex = GetRunIndexAtCodepointIndex(codepointIndex); + + while (runIndex >= 0) + { + var run = _textRuns[runIndex]; + + previousCharacterHit = run.GlyphRun.FindNearestCharacterHit(characterHit.FirstCharacterIndex - 1, out _); + + if (previousCharacterHit.FirstCharacterIndex < codepointIndex) + { + return true; + } + + runIndex--; + } + + return false; + } + + /// + /// Gets the run index of the specified codepoint index. + /// + /// The codepoint index. + /// The text run index. + private int GetRunIndexAtCodepointIndex(int codepointIndex) + { + if (codepointIndex >= TextRange.End) + { + return _textRuns.Count - 1; + } + + if (codepointIndex <= 0) + { + return 0; + } + + var runIndex = 0; + + while (runIndex < _textRuns.Count) + { + var run = _textRuns[runIndex]; + + if (run.Text.End > codepointIndex) + { + return runIndex; + } + + runIndex++; + } + + return runIndex; + } + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLineMetrics.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLineMetrics.cs index 096305c09c0..d47cc0c394a 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLineMetrics.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLineMetrics.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting { @@ -8,38 +9,20 @@ namespace Avalonia.Media.TextFormatting /// public readonly struct TextLineMetrics { - public TextLineMetrics(double width, double xOrigin, double ascent, double descent, double lineGap) + public TextLineMetrics(Size size, Point baselineOrigin, TextRange textRange) { - Ascent = ascent; - Descent = descent; - LineGap = lineGap; - Size = new Size(width, descent - ascent + lineGap); - BaselineOrigin = new Point(xOrigin, -ascent); + Size = size; + BaselineOrigin = baselineOrigin; + TextRange = textRange; } /// - /// Gets the overall recommended distance above the baseline. + /// Gets the text range that is covered by the text line. /// /// - /// The ascent. + /// The text range that is covered by the text line. /// - public double Ascent { get; } - - /// - /// Gets the overall recommended distance under the baseline. - /// - /// - /// The descent. - /// - public double Descent { get; } - - /// - /// Gets the overall recommended additional space between two lines of text. - /// - /// - /// The leading. - /// - public double LineGap { get; } + public TextRange TextRange { get; } /// /// Gets the size of the text line. @@ -61,10 +44,12 @@ public TextLineMetrics(double width, double xOrigin, double ascent, double desce /// Creates the text line metrics. /// /// The text runs. + /// The text range that is covered by the text line. /// The paragraph width. - /// The text alignment. + /// The text alignment. /// - public static TextLineMetrics Create(IEnumerable textRuns, double paragraphWidth, TextAlignment textAlignment) + public static TextLineMetrics Create(IEnumerable textRuns, TextRange textRange, double paragraphWidth, + TextParagraphProperties paragraphProperties) { var lineWidth = 0.0; var ascent = 0.0; @@ -73,31 +58,39 @@ public static TextLineMetrics Create(IEnumerable textRuns, double parag foreach (var textRun in textRuns) { - var shapedRun = (ShapedTextRun)textRun; + var shapedRun = (ShapedTextCharacters)textRun; - lineWidth += shapedRun.Bounds.Width; + var fontMetrics = + new FontMetrics(shapedRun.Properties.Typeface, shapedRun.Properties.FontRenderingEmSize); - var textFormat = textRun.Style.TextFormat; + lineWidth += shapedRun.Bounds.Width; - if (ascent > textRun.Style.TextFormat.FontMetrics.Ascent) + if (ascent > fontMetrics.Ascent) { - ascent = textFormat.FontMetrics.Ascent; + ascent = fontMetrics.Ascent; } - if (descent < textFormat.FontMetrics.Descent) + if (descent < fontMetrics.Descent) { - descent = textFormat.FontMetrics.Descent; + descent = fontMetrics.Descent; } - if (lineGap < textFormat.FontMetrics.LineGap) + if (lineGap < fontMetrics.LineGap) { - lineGap = textFormat.FontMetrics.LineGap; + lineGap = fontMetrics.LineGap; } } - var xOrigin = TextLine.GetParagraphOffsetX(lineWidth, paragraphWidth, textAlignment); + var xOrigin = TextLine.GetParagraphOffsetX(lineWidth, paragraphWidth, paragraphProperties.TextAlignment); + + var baselineOrigin = new Point(xOrigin, -ascent); + + var size = new Size(lineWidth, + double.IsNaN(paragraphProperties.LineHeight) || MathUtilities.IsZero(paragraphProperties.LineHeight) ? + descent - ascent + lineGap : + paragraphProperties.LineHeight); - return new TextLineMetrics(lineWidth, xOrigin, ascent, descent, lineGap); + return new TextLineMetrics(size, baselineOrigin, textRange); } } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextModifier.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextModifier.cs new file mode 100644 index 00000000000..06e93aaa8b5 --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextModifier.cs @@ -0,0 +1,19 @@ +namespace Avalonia.Media.TextFormatting +{ + /// + /// Specialized text run used to modify properties of text runs in its scope. + /// The scope extends to the next matching EndOfSegment text run (matching + /// because text modifiers may be nested), or to the next EndOfParagraph. + /// + public abstract class TextModifier : TextRun + { + /// + /// Modifies the properties of a text run. + /// + /// Properties of a text run or the return value of + /// ModifyProperties for a nested text modifier. + /// Returns the actual text run properties to be used for formatting, + /// subject to further modification by text modifiers at outer scopes. + public abstract TextRunProperties ModifyProperties(TextRunProperties properties); + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextParagraphProperties.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextParagraphProperties.cs index 1368f1777aa..39eb695404f 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextParagraphProperties.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextParagraphProperties.cs @@ -3,38 +3,37 @@ /// /// Provides a set of properties that are used during the paragraph layout. /// - public readonly struct TextParagraphProperties + public abstract class TextParagraphProperties { - public TextParagraphProperties( - TextStyle defaultTextStyle, - TextAlignment textAlignment = TextAlignment.Left, - TextWrapping textWrapping = TextWrapping.NoWrap, - TextTrimming textTrimming = TextTrimming.None) - { - DefaultTextStyle = defaultTextStyle; - TextAlignment = textAlignment; - TextWrapping = textWrapping; - TextTrimming = textTrimming; - } + /// + /// Gets the text alignment. + /// + public abstract TextAlignment TextAlignment { get; } /// /// Gets the default text style. /// - public TextStyle DefaultTextStyle { get; } + public abstract TextRunProperties DefaultTextRunProperties { get; } /// - /// Gets the text alignment. + /// If not null, text decorations to apply to all runs in the line. This is in addition + /// to any text decorations specified by the TextRunProperties for individual text runs. /// - public TextAlignment TextAlignment { get; } + public virtual TextDecorationCollection TextDecorations => null; /// /// Gets the text wrapping. /// - public TextWrapping TextWrapping { get; } + public abstract TextWrapping TextWrapping { get; } /// /// Gets the text trimming. /// - public TextTrimming TextTrimming { get; } + public abstract TextTrimming TextTrimming { get; } + + /// + /// Paragraph's line height + /// + public abstract double LineHeight { get; } } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextPointer.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextRange.cs similarity index 73% rename from src/Avalonia.Visuals/Media/TextFormatting/TextPointer.cs rename to src/Avalonia.Visuals/Media/TextFormatting/TextRange.cs index 65d5c04b4c3..1177c758f44 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextPointer.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextRange.cs @@ -5,9 +5,9 @@ namespace Avalonia.Media.TextFormatting /// /// References a portion of a text buffer. /// - public readonly struct TextPointer + public readonly struct TextRange { - public TextPointer(int start, int length) + public TextRange(int start, int length) { Start = start; Length = length; @@ -41,30 +41,30 @@ public TextPointer(int start, int length) /// Returns a specified number of contiguous elements from the start of the slice. /// /// The number of elements to return. - /// A that contains the specified number of elements from the start of this slice. - public TextPointer Take(int length) + /// A that contains the specified number of elements from the start of this slice. + public TextRange Take(int length) { if (length > Length) { throw new ArgumentOutOfRangeException(nameof(length)); } - return new TextPointer(Start, length); + return new TextRange(Start, length); } /// /// Bypasses a specified number of elements in the slice and then returns the remaining elements. /// /// The number of elements to skip before returning the remaining elements. - /// A that contains the elements that occur after the specified index in this slice. - public TextPointer Skip(int length) + /// A that contains the elements that occur after the specified index in this slice. + public TextRange Skip(int length) { if (length > Length) { throw new ArgumentOutOfRangeException(nameof(length)); } - return new TextPointer(Start + length, Length - length); + return new TextRange(Start + length, Length - length); } } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextRun.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextRun.cs index 28b83333b9d..c15a771755a 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextRun.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextRun.cs @@ -1,5 +1,5 @@ using System.Diagnostics; -using Avalonia.Utility; +using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting { @@ -9,15 +9,22 @@ namespace Avalonia.Media.TextFormatting [DebuggerTypeProxy(typeof(TextRunDebuggerProxy))] public abstract class TextRun { + public static readonly int DefaultTextSourceLength = 1; + + /// + /// Gets the text source length. + /// + public virtual int TextSourceLength => DefaultTextSourceLength; + /// /// Gets the text run's text. /// - public ReadOnlySlice Text { get; protected set; } + public virtual ReadOnlySlice Text => default; /// - /// Gets the text run's style. + /// A set of properties shared by every characters in the run /// - public TextStyle Style { get; protected set; } + public virtual TextRunProperties Properties => null; private class TextRunDebuggerProxy { @@ -42,7 +49,7 @@ public string Text } } - public TextStyle Style => _textRun.Style; + public TextRunProperties Properties => _textRun.Properties; } } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextRunProperties.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextRunProperties.cs new file mode 100644 index 00000000000..bbcdfe2d8ec --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextRunProperties.cs @@ -0,0 +1,90 @@ +using System; +using System.Globalization; + +namespace Avalonia.Media.TextFormatting +{ + /// + /// Properties that can change from one run to the next, such as typeface or foreground brush. + /// + /// + /// The client provides a concrete implementation of this abstract run properties class. This + /// allows client to implement their run properties the way that fits with their run formatting + /// store. + /// + public abstract class TextRunProperties : IEquatable + { + /// + /// Run typeface + /// + public abstract Typeface Typeface { get; } + + /// + /// Em size of font used to format and display text + /// + public abstract double FontRenderingEmSize { get; } + + /// + /// Run TextDecorations. + /// + public abstract TextDecorationCollection TextDecorations { get; } + + /// + /// Brush used to fill text. + /// + public abstract IBrush ForegroundBrush { get; } + + /// + /// Brush used to paint background of run. + /// + public abstract IBrush BackgroundBrush { get; } + + /// + /// Run text culture. + /// + public abstract CultureInfo CultureInfo { get; } + + public bool Equals(TextRunProperties other) + { + if (ReferenceEquals(null, other)) + return false; + if (ReferenceEquals(this, other)) + return true; + + return Typeface.Equals(other.Typeface) && + FontRenderingEmSize.Equals(other.FontRenderingEmSize) + && Equals(TextDecorations, other.TextDecorations) && + Equals(ForegroundBrush, other.ForegroundBrush) && + Equals(BackgroundBrush, other.BackgroundBrush) && + Equals(CultureInfo, other.CultureInfo); + } + + public override bool Equals(object obj) + { + return ReferenceEquals(this, obj) || obj is TextRunProperties other && Equals(other); + } + + public override int GetHashCode() + { + unchecked + { + var hashCode = (Typeface != null ? Typeface.GetHashCode() : 0); + hashCode = (hashCode * 397) ^ FontRenderingEmSize.GetHashCode(); + hashCode = (hashCode * 397) ^ (TextDecorations != null ? TextDecorations.GetHashCode() : 0); + hashCode = (hashCode * 397) ^ (ForegroundBrush != null ? ForegroundBrush.GetHashCode() : 0); + hashCode = (hashCode * 397) ^ (BackgroundBrush != null ? BackgroundBrush.GetHashCode() : 0); + hashCode = (hashCode * 397) ^ (CultureInfo != null ? CultureInfo.GetHashCode() : 0); + return hashCode; + } + } + + public static bool operator ==(TextRunProperties left, TextRunProperties right) + { + return Equals(left, right); + } + + public static bool operator !=(TextRunProperties left, TextRunProperties right) + { + return !Equals(left, right); + } + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextShaper.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextShaper.cs index eb3a4129bcc..a02ace408fc 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextShaper.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextShaper.cs @@ -1,6 +1,7 @@ using System; +using System.Globalization; using Avalonia.Platform; -using Avalonia.Utility; +using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting { @@ -44,9 +45,10 @@ public static TextShaper Current } /// - public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) + public GlyphRun ShapeText(ReadOnlySlice text, Typeface typeface, double fontRenderingEmSize, + CultureInfo culture) { - return _platformImpl.ShapeText(text, textFormat); + return _platformImpl.ShapeText(text, typeface, fontRenderingEmSize, culture); } } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextStyle.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextStyle.cs deleted file mode 100644 index cf52c3ca177..00000000000 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextStyle.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Avalonia.Media.Immutable; - -namespace Avalonia.Media.TextFormatting -{ - /// - /// Unique text formatting properties that effect the styling of a text. - /// - public readonly struct TextStyle - { - public TextStyle(Typeface typeface, double fontRenderingEmSize = 12, IBrush foreground = null, - ImmutableTextDecoration[] textDecorations = null) - : this(new TextFormat(typeface, fontRenderingEmSize), foreground, textDecorations) - { - } - - public TextStyle(TextFormat textFormat, IBrush foreground = null, - ImmutableTextDecoration[] textDecorations = null) - { - TextFormat = textFormat; - Foreground = foreground; - TextDecorations = textDecorations; - } - - /// - /// Gets the text format. - /// - public TextFormat TextFormat { get; } - - /// - /// Gets the foreground. - /// - public IBrush Foreground { get; } - - /// - /// Gets the text decorations. - /// - public ImmutableTextDecoration[] TextDecorations { get; } - } -} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextStyleRun.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextStyleRun.cs deleted file mode 100644 index 55f89991829..00000000000 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextStyleRun.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Avalonia.Media.TextFormatting -{ - /// - /// Represents a text run's style and is used during the layout process of the . - /// - public readonly struct TextStyleRun - { - public TextStyleRun(TextPointer textPointer, TextStyle style) - { - TextPointer = textPointer; - Style = style; - } - - /// - /// Gets the text pointer. - /// - public TextPointer TextPointer { get; } - - /// - /// Gets the text style. - /// - public TextStyle Style { get; } - } -} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/Codepoint.cs b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/Codepoint.cs index 94171b73244..20fe345d931 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/Codepoint.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/Codepoint.cs @@ -1,4 +1,4 @@ -using Avalonia.Utility; +using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting.Unicode { diff --git a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/CodepointEnumerator.cs b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/CodepointEnumerator.cs index 2ff4952cab1..9e1f748ebb5 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/CodepointEnumerator.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/CodepointEnumerator.cs @@ -1,4 +1,4 @@ -using Avalonia.Utility; +using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting.Unicode { diff --git a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/Grapheme.cs b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/Grapheme.cs index a6791b4a534..f268340eb98 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/Grapheme.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/Grapheme.cs @@ -1,4 +1,4 @@ -using Avalonia.Utility; +using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting.Unicode { diff --git a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/GraphemeEnumerator.cs b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/GraphemeEnumerator.cs index fd7831dfe60..1e4ac8fe0fd 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/GraphemeEnumerator.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/GraphemeEnumerator.cs @@ -4,7 +4,7 @@ // Licensed to The Avalonia Project under MIT License, courtesy of The .NET Foundation. using System.Runtime.InteropServices; -using Avalonia.Utility; +using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting.Unicode { diff --git a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/LineBreakEnumerator.cs b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/LineBreakEnumerator.cs index a11c0084095..82257136cd6 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/LineBreakEnumerator.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/LineBreakEnumerator.cs @@ -16,7 +16,7 @@ // Ported from: https://github.com/foliojs/linebreak // Copied from: https://github.com/toptensoftware/RichTextKit -using Avalonia.Utility; +using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting.Unicode { diff --git a/src/Avalonia.Visuals/Media/TextWrapping.cs b/src/Avalonia.Visuals/Media/TextWrapping.cs index 56df3670bda..d649bda23fd 100644 --- a/src/Avalonia.Visuals/Media/TextWrapping.cs +++ b/src/Avalonia.Visuals/Media/TextWrapping.cs @@ -5,6 +5,13 @@ namespace Avalonia.Media /// public enum TextWrapping { + /// + /// Line-breaking occurs if the line overflows the available block width. + /// However, a line may overflow the block width if the line breaking algorithm + /// cannot determine a break opportunity, as in the case of a very long word. + /// + WrapWithOverflow, + /// /// Text should not wrap. /// @@ -15,4 +22,4 @@ public enum TextWrapping /// Wrap } -} \ No newline at end of file +} diff --git a/src/Avalonia.Visuals/Media/Typeface.cs b/src/Avalonia.Visuals/Media/Typeface.cs index 7618598a3fb..677e9308049 100644 --- a/src/Avalonia.Visuals/Media/Typeface.cs +++ b/src/Avalonia.Visuals/Media/Typeface.cs @@ -16,11 +16,11 @@ public class Typeface : IEquatable /// Initializes a new instance of the class. /// /// The font family. - /// The font weight. /// The font style. + /// The font weight. public Typeface([NotNull]FontFamily fontFamily, - FontWeight weight = FontWeight.Normal, - FontStyle style = FontStyle.Normal) + FontStyle style = FontStyle.Normal, + FontWeight weight = FontWeight.Normal) { if (weight <= 0) { @@ -39,9 +39,9 @@ public Typeface([NotNull]FontFamily fontFamily, /// The font style. /// The font weight. public Typeface(string fontFamilyName, - FontWeight weight = FontWeight.Normal, - FontStyle style = FontStyle.Normal) - : this(new FontFamily(fontFamilyName), weight, style) + FontStyle style = FontStyle.Normal, + FontWeight weight = FontWeight.Normal) + : this(new FontFamily(fontFamilyName), style, weight) { } diff --git a/src/Avalonia.Visuals/Platform/ITextShaperImpl.cs b/src/Avalonia.Visuals/Platform/ITextShaperImpl.cs index 4d770a6c6e6..d915da26034 100644 --- a/src/Avalonia.Visuals/Platform/ITextShaperImpl.cs +++ b/src/Avalonia.Visuals/Platform/ITextShaperImpl.cs @@ -1,6 +1,6 @@ -using Avalonia.Media; -using Avalonia.Media.TextFormatting; -using Avalonia.Utility; +using System.Globalization; +using Avalonia.Media; +using Avalonia.Utilities; namespace Avalonia.Platform { @@ -13,8 +13,10 @@ public interface ITextShaperImpl /// Shapes the specified region within the text and returns a resulting glyph run. /// /// The text. - /// The text format. + /// The typeface. + /// The font rendering em size. + /// The culture. /// A shaped glyph run. - GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat); + GlyphRun ShapeText(ReadOnlySlice text, Typeface typeface, double fontRenderingEmSize, CultureInfo culture); } } diff --git a/src/Avalonia.Visuals/Utility/ReadOnlySlice.cs b/src/Avalonia.Visuals/Utilities/ReadOnlySlice.cs similarity index 98% rename from src/Avalonia.Visuals/Utility/ReadOnlySlice.cs rename to src/Avalonia.Visuals/Utilities/ReadOnlySlice.cs index ff2b3b93633..5feaa88e26c 100644 --- a/src/Avalonia.Visuals/Utility/ReadOnlySlice.cs +++ b/src/Avalonia.Visuals/Utilities/ReadOnlySlice.cs @@ -2,9 +2,8 @@ using System.Collections; using System.Collections.Generic; using System.Diagnostics; -using Avalonia.Utilities; -namespace Avalonia.Utility +namespace Avalonia.Utilities { /// /// ReadOnlySlice enables the ability to work with a sequence within a region of memory and retains the position in within that region. @@ -47,7 +46,7 @@ public ReadOnlySlice(ReadOnlyMemory buffer, int start, int length) public int Length { get; } /// - /// Gets a value that indicates whether this instance of is Empty. + /// Gets a value that indicates whether this instance of is Empty. /// public bool IsEmpty => Length == 0; diff --git a/src/Avalonia.Visuals/Utilities/ValueSpan.cs b/src/Avalonia.Visuals/Utilities/ValueSpan.cs new file mode 100644 index 00000000000..7a10d865ef4 --- /dev/null +++ b/src/Avalonia.Visuals/Utilities/ValueSpan.cs @@ -0,0 +1,30 @@ +namespace Avalonia.Utilities +{ + /// + /// Pairing of value and positions sharing that value. + /// + public readonly struct ValueSpan + { + public ValueSpan(int start, int length, T value) + { + Start = start; + Length = length; + Value = value; + } + + /// + /// Get's the start of the span. + /// + public int Start { get; } + + /// + /// Get's the length of the span. + /// + public int Length { get; } + + /// + /// Get's the value of the span. + /// + public T Value { get; } + } +} diff --git a/src/Skia/Avalonia.Skia/FormattedTextImpl.cs b/src/Skia/Avalonia.Skia/FormattedTextImpl.cs index 5f876464e23..ade659f5eb2 100644 --- a/src/Skia/Avalonia.Skia/FormattedTextImpl.cs +++ b/src/Skia/Avalonia.Skia/FormattedTextImpl.cs @@ -569,7 +569,7 @@ private void Rebuild() float constraint = -1; - if (_wrapping == TextWrapping.Wrap) + if (_wrapping != TextWrapping.NoWrap) { constraint = widthConstraint <= 0 ? MAX_LINE_WIDTH : widthConstraint; if (constraint > MAX_LINE_WIDTH) diff --git a/src/Skia/Avalonia.Skia/TextShaperImpl.cs b/src/Skia/Avalonia.Skia/TextShaperImpl.cs index 7a0823a2230..786af7726c0 100644 --- a/src/Skia/Avalonia.Skia/TextShaperImpl.cs +++ b/src/Skia/Avalonia.Skia/TextShaperImpl.cs @@ -1,9 +1,9 @@ using System; +using System.Globalization; using Avalonia.Media; -using Avalonia.Media.TextFormatting; using Avalonia.Media.TextFormatting.Unicode; using Avalonia.Platform; -using Avalonia.Utility; +using Avalonia.Utilities; using HarfBuzzSharp; using Buffer = HarfBuzzSharp.Buffer; @@ -11,7 +11,7 @@ namespace Avalonia.Skia { internal class TextShaperImpl : ITextShaperImpl { - public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) + public GlyphRun ShapeText(ReadOnlySlice text, Typeface typeface, double fontRenderingEmSize, CultureInfo culture) { using (var buffer = new Buffer()) { @@ -61,9 +61,11 @@ public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) buffer.AddUtf16(text.Buffer.Span); } + buffer.Language = new Language(culture ?? CultureInfo.CurrentCulture); + buffer.GuessSegmentProperties(); - var glyphTypeface = textFormat.Typeface.GlyphTypeface; + var glyphTypeface = typeface.GlyphTypeface; var font = ((GlyphTypefaceImpl)glyphTypeface.PlatformImpl).Font; @@ -71,7 +73,7 @@ public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) font.GetScale(out var scaleX, out _); - var textScale = textFormat.FontRenderingEmSize / scaleX; + var textScale = fontRenderingEmSize / scaleX; var bufferLength = buffer.Length; @@ -101,7 +103,7 @@ public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) SetOffset(glyphPositions, i, textScale, ref glyphOffsets); } - return new GlyphRun(glyphTypeface, textFormat.FontRenderingEmSize, + return new GlyphRun(glyphTypeface, fontRenderingEmSize, new ReadOnlySlice(glyphIndices), new ReadOnlySlice(glyphAdvances), new ReadOnlySlice(glyphOffsets), diff --git a/src/Windows/Avalonia.Direct2D1/Media/TextShaperImpl.cs b/src/Windows/Avalonia.Direct2D1/Media/TextShaperImpl.cs index 2d2865e2b9d..254b5684a45 100644 --- a/src/Windows/Avalonia.Direct2D1/Media/TextShaperImpl.cs +++ b/src/Windows/Avalonia.Direct2D1/Media/TextShaperImpl.cs @@ -1,8 +1,9 @@ -using Avalonia.Media; +using System.Globalization; +using Avalonia.Media; using Avalonia.Media.TextFormatting; using Avalonia.Media.TextFormatting.Unicode; using Avalonia.Platform; -using Avalonia.Utility; +using Avalonia.Utilities; using HarfBuzzSharp; using Buffer = HarfBuzzSharp.Buffer; @@ -10,7 +11,7 @@ namespace Avalonia.Direct2D1.Media { internal class TextShaperImpl : ITextShaperImpl { - public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) + public GlyphRun ShapeText(ReadOnlySlice text, Typeface typeface, double fontRenderingEmSize, CultureInfo culture) { using (var buffer = new Buffer()) { @@ -62,15 +63,17 @@ public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) buffer.GuessSegmentProperties(); - var glyphTypeface = textFormat.Typeface.GlyphTypeface; + var glyphTypeface = typeface.GlyphTypeface; var font = ((GlyphTypefaceImpl)glyphTypeface.PlatformImpl).Font; + buffer.Language = new Language(culture ?? CultureInfo.CurrentCulture); + font.Shape(buffer); font.GetScale(out var scaleX, out _); - var textScale = textFormat.FontRenderingEmSize / scaleX; + var textScale = fontRenderingEmSize / scaleX; var len = buffer.Length; @@ -104,7 +107,7 @@ public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) glyphOffsets[i] = new Vector(offsetX, offsetY); } - return new GlyphRun(glyphTypeface, textFormat.FontRenderingEmSize, + return new GlyphRun(glyphTypeface, fontRenderingEmSize, new ReadOnlySlice(glyphIndices), new ReadOnlySlice(glyphAdvances), new ReadOnlySlice(glyphOffsets), diff --git a/tests/Avalonia.Direct2D1.UnitTests/Media/FontManagerImplTests.cs b/tests/Avalonia.Direct2D1.UnitTests/Media/FontManagerImplTests.cs index 572749a58ab..c6ecc0a7e55 100644 --- a/tests/Avalonia.Direct2D1.UnitTests/Media/FontManagerImplTests.cs +++ b/tests/Avalonia.Direct2D1.UnitTests/Media/FontManagerImplTests.cs @@ -41,7 +41,7 @@ public void Should_Create_Typeface_From_Fallback_Bold() var fontManager = new FontManagerImpl(); var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface( - new Typeface(new FontFamily("A, B, Arial"), FontWeight.Bold)); + new Typeface(new FontFamily("A, B, Arial"), weight: FontWeight.Bold)); var font = glyphTypeface.DWFont; @@ -105,7 +105,7 @@ public void Should_Load_Nearest_Matching_Font() var fontManager = new FontManagerImpl(); var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface( - new Typeface(s_fontUri, FontWeight.Black, FontStyle.Italic)); + new Typeface(s_fontUri, FontStyle.Italic, FontWeight.Black)); var font = glyphTypeface.DWFont; diff --git a/tests/Avalonia.Skia.UnitTests/CustomFontManagerImpl.cs b/tests/Avalonia.Skia.UnitTests/Media/CustomFontManagerImpl.cs similarity index 98% rename from tests/Avalonia.Skia.UnitTests/CustomFontManagerImpl.cs rename to tests/Avalonia.Skia.UnitTests/Media/CustomFontManagerImpl.cs index 8d64190ebd9..feed1179ef0 100644 --- a/tests/Avalonia.Skia.UnitTests/CustomFontManagerImpl.cs +++ b/tests/Avalonia.Skia.UnitTests/Media/CustomFontManagerImpl.cs @@ -6,7 +6,7 @@ using Avalonia.Platform; using SkiaSharp; -namespace Avalonia.Skia.UnitTests +namespace Avalonia.Skia.UnitTests.Media { public class CustomFontManagerImpl : IFontManagerImpl { diff --git a/tests/Avalonia.Skia.UnitTests/FontManagerImplTests.cs b/tests/Avalonia.Skia.UnitTests/Media/FontManagerImplTests.cs similarity index 95% rename from tests/Avalonia.Skia.UnitTests/FontManagerImplTests.cs rename to tests/Avalonia.Skia.UnitTests/Media/FontManagerImplTests.cs index 8f80d89ac6b..df286d709e8 100644 --- a/tests/Avalonia.Skia.UnitTests/FontManagerImplTests.cs +++ b/tests/Avalonia.Skia.UnitTests/Media/FontManagerImplTests.cs @@ -1,13 +1,11 @@ using System; using System.Linq; -using System.Reflection; using Avalonia.Media; -using Avalonia.Platform; using Avalonia.UnitTests; using SkiaSharp; using Xunit; -namespace Avalonia.Skia.UnitTests +namespace Avalonia.Skia.UnitTests.Media { public class FontManagerImplTests { @@ -39,7 +37,7 @@ public void Should_Create_Typeface_From_Fallback_Bold() string fontName = fontManager.GetInstalledFontFamilyNames().First(); var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface( - new Typeface(new FontFamily($"A, B, {fontName}"), FontWeight.Bold)); + new Typeface(new FontFamily($"A, B, {fontName}"), weight: FontWeight.Bold)); var skTypeface = glyphTypeface.Typeface; @@ -88,7 +86,7 @@ public void Should_Load_Nearest_Matching_Font() var fontManager = new FontManagerImpl(); var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface( - new Typeface(s_fontUri, FontWeight.Black, FontStyle.Italic)); + new Typeface(s_fontUri, FontStyle.Italic, FontWeight.Black)); var skTypeface = glyphTypeface.Typeface; diff --git a/tests/Avalonia.Skia.UnitTests/SKTypefaceCollectionCacheTests.cs b/tests/Avalonia.Skia.UnitTests/Media/SKTypefaceCollectionCacheTests.cs similarity index 89% rename from tests/Avalonia.Skia.UnitTests/SKTypefaceCollectionCacheTests.cs rename to tests/Avalonia.Skia.UnitTests/Media/SKTypefaceCollectionCacheTests.cs index 726052351b7..f9f924e7827 100644 --- a/tests/Avalonia.Skia.UnitTests/SKTypefaceCollectionCacheTests.cs +++ b/tests/Avalonia.Skia.UnitTests/Media/SKTypefaceCollectionCacheTests.cs @@ -2,7 +2,7 @@ using Avalonia.UnitTests; using Xunit; -namespace Avalonia.Skia.UnitTests +namespace Avalonia.Skia.UnitTests.Media { public class SKTypefaceCollectionCacheTests { @@ -19,7 +19,7 @@ public void Should_Load_Typefaces_From_Invalid_Name() var notoMonoCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(notoMono); - var typeface = new Typeface("ABC", FontWeight.Bold, FontStyle.Italic); + var typeface = new Typeface("ABC", FontStyle.Italic, FontWeight.Bold); Assert.Equal("Noto Mono", notoMonoCollection.Get(typeface).FamilyName); diff --git a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/FormattableTextSource.cs b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/FormattableTextSource.cs new file mode 100644 index 00000000000..6a5065939eb --- /dev/null +++ b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/FormattableTextSource.cs @@ -0,0 +1,38 @@ +using System; +using Avalonia.Media.TextFormatting; +using Avalonia.Utilities; + +namespace Avalonia.Skia.UnitTests.Media.TextFormatting +{ + internal class FormattableTextSource : ITextSource + { + private readonly ReadOnlySlice _text; + private readonly TextRunProperties _defaultStyle; + private ReadOnlySlice> _styleSpans; + + public FormattableTextSource(string text, TextRunProperties defaultStyle, + ReadOnlySlice> styleSpans) + { + _text = text.AsMemory(); + + _defaultStyle = defaultStyle; + + _styleSpans = styleSpans; + } + + public TextRun GetTextRun(int textSourceIndex) + { + if (_styleSpans.IsEmpty) + { + return new TextEndOfParagraph(); + } + + var currentSpan = _styleSpans[0]; + + _styleSpans = _styleSpans.Skip(1); + + return new TextCharacters(_text.AsSlice(currentSpan.Start, currentSpan.Length), + _defaultStyle); + } + } +} diff --git a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/MultiBufferTextSource.cs b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/MultiBufferTextSource.cs new file mode 100644 index 00000000000..40aa8629064 --- /dev/null +++ b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/MultiBufferTextSource.cs @@ -0,0 +1,36 @@ +using System; +using Avalonia.Media.TextFormatting; +using Avalonia.Utilities; + +namespace Avalonia.Skia.UnitTests.Media.TextFormatting +{ + internal class MultiBufferTextSource : ITextSource + { + private readonly string[] _runTexts; + private readonly GenericTextRunProperties _defaultStyle; + + public MultiBufferTextSource(GenericTextRunProperties defaultStyle) + { + _defaultStyle = defaultStyle; + + _runTexts = new[] { "A123456789", "B123456789", "C123456789", "D123456789", "E123456789" }; + } + + public static TextRange TextRange => new TextRange(0, 50); + + public TextRun GetTextRun(int textSourceIndex) + { + if (textSourceIndex == 50) + { + return new TextEndOfParagraph(); + } + + var index = textSourceIndex / 10; + + var runText = _runTexts[index]; + + return new TextCharacters( + new ReadOnlySlice(runText.AsMemory(), textSourceIndex, runText.Length), _defaultStyle); + } + } +} diff --git a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/SingleBufferTextSource.cs b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/SingleBufferTextSource.cs new file mode 100644 index 00000000000..045deacd0be --- /dev/null +++ b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/SingleBufferTextSource.cs @@ -0,0 +1,30 @@ +using System; +using Avalonia.Media.TextFormatting; +using Avalonia.Utilities; + +namespace Avalonia.Skia.UnitTests.Media.TextFormatting +{ + internal class SingleBufferTextSource : ITextSource + { + private readonly ReadOnlySlice _text; + private readonly GenericTextRunProperties _defaultGenericPropertiesRunProperties; + + public SingleBufferTextSource(string text, GenericTextRunProperties defaultProperties) + { + _text = text.AsMemory(); + _defaultGenericPropertiesRunProperties = defaultProperties; + } + + public TextRun GetTextRun(int textSourceIndex) + { + var runText = _text.Skip(textSourceIndex); + + if (runText.IsEmpty) + { + return new TextEndOfParagraph(); + } + + return new TextCharacters(runText, _defaultGenericPropertiesRunProperties); + } + } +} diff --git a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextFormatterTests.cs b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextFormatterTests.cs new file mode 100644 index 00000000000..697cc4fec7a --- /dev/null +++ b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextFormatterTests.cs @@ -0,0 +1,275 @@ +using System; +using System.Collections.Generic; +using Avalonia.Media; +using Avalonia.Media.TextFormatting; +using Avalonia.Media.TextFormatting.Unicode; +using Avalonia.UnitTests; +using Avalonia.Utilities; +using Xunit; + +namespace Avalonia.Skia.UnitTests.Media.TextFormatting +{ + public class TextFormatterTests + { + [Fact] + public void Should_Format_TextRuns_With_Default_Style() + { + using (Start()) + { + const string text = "0123456789"; + + var defaultProperties = + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: Brushes.Black); + + var textSource = new SingleBufferTextSource(text, defaultProperties); + + var formatter = new TextFormatterImpl(); + + var textLine = formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties)); + + Assert.Single(textLine.TextRuns); + + var textRun = textLine.TextRuns[0]; + + Assert.Equal(defaultProperties.Typeface, textRun.Properties.Typeface); + + Assert.Equal(defaultProperties.ForegroundBrush, textRun.Properties.ForegroundBrush); + + Assert.Equal(text.Length, textRun.Text.Length); + } + } + + [Fact] + public void Should_Format_TextRuns_With_Multiple_Buffers() + { + using (Start()) + { + var defaultProperties = + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: Brushes.Black); + + var textSource = new MultiBufferTextSource(defaultProperties); + + var formatter = new TextFormatterImpl(); + + var textLine = formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties)); + + Assert.Equal(5, textLine.TextRuns.Count); + + Assert.Equal(50, textLine.TextRange.Length); + } + } + + [Fact] + public void Should_Format_TextRuns_With_TextRunStyles() + { + using (Start()) + { + const string text = "0123456789"; + + var defaultProperties = + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: Brushes.Black); + + var GenericTextRunPropertiesRuns = new[] + { + new ValueSpan(0, 3, defaultProperties), + new ValueSpan(3, 3, + new GenericTextRunProperties(Typeface.Default, 13, foregroundBrush: Brushes.Black)), + new ValueSpan(6, 3, + new GenericTextRunProperties(Typeface.Default, 14, foregroundBrush: Brushes.Black)), + new ValueSpan(9, 1, defaultProperties) + }; + + var textSource = new FormattableTextSource(text, defaultProperties, GenericTextRunPropertiesRuns); + + var formatter = new TextFormatterImpl(); + + var textLine = formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties)); + + Assert.Equal(text.Length, textLine.TextRange.Length); + + for (var i = 0; i < GenericTextRunPropertiesRuns.Length; i++) + { + var GenericTextRunPropertiesRun = GenericTextRunPropertiesRuns[i]; + + var textRun = textLine.TextRuns[i]; + + Assert.Equal(GenericTextRunPropertiesRun.Length, textRun.Text.Length); + } + } + } + + [Theory] + [InlineData("0123", 1)] + [InlineData("\r\n", 1)] + [InlineData("👍b", 2)] + [InlineData("a👍b", 3)] + [InlineData("a👍子b", 4)] + public void Should_Produce_Unique_Runs(string text, int numberOfRuns) + { + using (Start()) + { + var defaultProperties = new GenericTextRunProperties(Typeface.Default); + + var textSource = new SingleBufferTextSource(text, defaultProperties); + + var formatter = new TextFormatterImpl(); + + var textLine = + formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties)); + + Assert.Equal(numberOfRuns, textLine.TextRuns.Count); + } + } + + [Fact] + public void Should_Split_Run_On_Script() + { + using (Start()) + { + const string text = "1234الدولي"; + + var defaultProperties = new GenericTextRunProperties(Typeface.Default); + + var textSource = new SingleBufferTextSource(text, defaultProperties); + + var formatter = new TextFormatterImpl(); + + var textLine = + formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties)); + + Assert.Equal(4, textLine.TextRuns[0].Text.Length); + } + } + + [InlineData("𐐷𐐷𐐷𐐷𐐷", 10, 1)] + [InlineData("01234 56789 01234 56789", 6, 4)] + [Theory] + public void Should_Wrap_With_Overflow(string text, int expectedCharactersPerLine, int expectedNumberOfLines) + { + using (Start()) + { + var defaultProperties = new GenericTextRunProperties(Typeface.Default); + + var textSource = new SingleBufferTextSource(text, defaultProperties); + + var formatter = new TextFormatterImpl(); + + var numberOfLines = 0; + + var currentPosition = 0; + + while (currentPosition < text.Length) + { + var textLine = + formatter.FormatLine(textSource, currentPosition, 1, + new GenericTextParagraphProperties(defaultProperties, textWrapping: TextWrapping.WrapWithOverflow)); + + if (text.Length - currentPosition > expectedCharactersPerLine) + { + Assert.Equal(expectedCharactersPerLine, textLine.TextRange.Length); + } + + currentPosition += textLine.TextRange.Length; + + numberOfLines++; + } + + Assert.Equal(expectedNumberOfLines, numberOfLines); + } + } + + [InlineData("Whether to turn off HTTPS. This option only applies if Individual, " + + "IndividualB2C, SingleOrg, or MultiOrg aren't used for ‑‑auth." + , "Noto Sans", 40)] + [InlineData("01234 56789 01234 56789", "Noto Mono", 7)] + [Theory] + public void Should_Wrap(string text, string familyName, int numberOfCharactersPerLine) + { + using (Start()) + { + var lineBreaker = new LineBreakEnumerator(text.AsMemory()); + + var expected = new List(); + + while (lineBreaker.MoveNext()) + { + expected.Add(lineBreaker.Current.PositionWrap - 1); + } + + var typeface = new Typeface("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#" + + familyName); + + var defaultProperties = new GenericTextRunProperties(Typeface.Default); + + var textSource = new SingleBufferTextSource(text, defaultProperties); + + var formatter = new TextFormatterImpl(); + + var glyph = typeface.GlyphTypeface.GetGlyph('a'); + + var advance = typeface.GlyphTypeface.GetGlyphAdvance(glyph) * + (12.0 / typeface.GlyphTypeface.DesignEmHeight); + + var paragraphWidth = advance * numberOfCharactersPerLine; + + var currentPosition = 0; + + while (currentPosition < text.Length) + { + var textLine = + formatter.FormatLine(textSource, currentPosition, paragraphWidth, + new GenericTextParagraphProperties(defaultProperties, textWrapping: TextWrapping.Wrap)); + + Assert.True(expected.Contains(textLine.TextRange.End)); + + var index = expected.IndexOf(textLine.TextRange.End); + + for (var i = 0; i <= index; i++) + { + expected.RemoveAt(0); + } + + currentPosition += textLine.TextRange.Length; + } + } + } + + [Fact] + public void Should_Produce_Fixed_Height_Lines() + { + using (Start()) + { + const string text = "012345"; + + var defaultProperties = new GenericTextRunProperties(Typeface.Default); + + var textSource = new SingleBufferTextSource(text, defaultProperties); + + var formatter = new TextFormatterImpl(); + + var textLine = + formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties, lineHeight: 50)); + + Assert.Equal(50, textLine.LineMetrics.Size.Height); + } + } + + public static IDisposable Start() + { + var disposable = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface + .With(renderInterface: new PlatformRenderInterface(null), + textShaperImpl: new TextShaperImpl())); + + AvaloniaLocator.CurrentMutable + .Bind().ToConstant(new FontManager(new CustomFontManagerImpl())); + + return disposable; + } + } +} diff --git a/tests/Avalonia.Skia.UnitTests/TextLayoutTests.cs b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLayoutTests.cs similarity index 77% rename from tests/Avalonia.Skia.UnitTests/TextLayoutTests.cs rename to tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLayoutTests.cs index a2c9f8b8cd2..5d9aa2cf97f 100644 --- a/tests/Avalonia.Skia.UnitTests/TextLayoutTests.cs +++ b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLayoutTests.cs @@ -4,15 +4,33 @@ using Avalonia.Media.TextFormatting; using Avalonia.Media.TextFormatting.Unicode; using Avalonia.UnitTests; +using Avalonia.Utilities; using Xunit; -namespace Avalonia.Skia.UnitTests +namespace Avalonia.Skia.UnitTests.Media.TextFormatting { public class TextLayoutTests { private static readonly string s_singleLineText = "0123456789"; private static readonly string s_multiLineText = "012345678\r\r0123456789"; + [InlineData("01234\r01234\r", 3)] + [InlineData("01234\r01234", 2)] + [Theory] + public void Should_Break_Lines(string text, int numberOfLines) + { + using (Start()) + { + var layout = new TextLayout( + text, + Typeface.Default, + 12.0f, + Brushes.Black); + + Assert.Equal(numberOfLines, layout.TextLines.Count); + } + } + [Fact] public void Should_Apply_TextStyleSpan_To_Text_In_Between() { @@ -22,17 +40,16 @@ public void Should_Apply_TextStyleSpan_To_Text_In_Between() var spans = new[] { - new TextStyleRun( - new TextPointer(1, 2), - new TextStyle(Typeface.Default, 12, foreground)) + new ValueSpan(1, 2, + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: foreground)) }; var layout = new TextLayout( s_multiLineText, - Typeface.Default, + Typeface.Default, 12.0f, Brushes.Black.ToImmutable(), - textStyleOverrides : spans); + textStyleOverrides: spans); var textLine = layout.TextLines[0]; @@ -46,7 +63,7 @@ public void Should_Apply_TextStyleSpan_To_Text_In_Between() Assert.Equal("12", actual); - Assert.Equal(foreground, textRun.Style.Foreground); + Assert.Equal(foreground, textRun.Properties.ForegroundBrush); } } @@ -61,9 +78,8 @@ public void Should_Not_Alter_Lines_After_TextStyleSpan_Was_Applied() { var spans = new[] { - new TextStyleRun( - new TextPointer(0, i), - new TextStyle(Typeface.Default, 12, foreground)) + new ValueSpan(0, i, + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: foreground)) }; var expected = new TextLayout( @@ -72,22 +88,22 @@ public void Should_Not_Alter_Lines_After_TextStyleSpan_Was_Applied() 12.0f, Brushes.Black.ToImmutable(), textWrapping: TextWrapping.Wrap, - maxWidth : 25); + maxWidth: 25); var actual = new TextLayout( s_multiLineText, Typeface.Default, 12.0f, Brushes.Black.ToImmutable(), - textWrapping : TextWrapping.Wrap, - maxWidth : 25, - textStyleOverrides : spans); + textWrapping: TextWrapping.Wrap, + maxWidth: 25, + textStyleOverrides: spans); Assert.Equal(expected.TextLines.Count, actual.TextLines.Count); for (var j = 0; j < actual.TextLines.Count; j++) { - Assert.Equal(expected.TextLines[j].Text.Length, actual.TextLines[j].Text.Length); + Assert.Equal(expected.TextLines[j].TextRange.Length, actual.TextLines[j].TextRange.Length); Assert.Equal(expected.TextLines[j].TextRuns.Sum(x => x.Text.Length), actual.TextLines[j].TextRuns.Sum(x => x.Text.Length)); @@ -105,9 +121,8 @@ public void Should_Apply_TextStyleSpan_To_Text_At_Start() var spans = new[] { - new TextStyleRun( - new TextPointer(0, 2), - new TextStyle(Typeface.Default, 12, foreground)) + new ValueSpan(0, 2, + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: foreground)) }; var layout = new TextLayout( @@ -115,7 +130,7 @@ public void Should_Apply_TextStyleSpan_To_Text_At_Start() Typeface.Default, 12.0f, Brushes.Black.ToImmutable(), - textStyleOverrides : spans); + textStyleOverrides: spans); var textLine = layout.TextLines[0]; @@ -130,7 +145,7 @@ public void Should_Apply_TextStyleSpan_To_Text_At_Start() Assert.Equal("01", actual); - Assert.Equal(foreground, textRun.Style.Foreground); + Assert.Equal(foreground, textRun.Properties.ForegroundBrush); } } @@ -143,9 +158,8 @@ public void Should_Apply_TextStyleSpan_To_Text_At_End() var spans = new[] { - new TextStyleRun( - new TextPointer(8, 2), - new TextStyle(Typeface.Default, 12, foreground)) + new ValueSpan(8, 2, + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: foreground)), }; var layout = new TextLayout( @@ -153,7 +167,7 @@ public void Should_Apply_TextStyleSpan_To_Text_At_End() Typeface.Default, 12.0f, Brushes.Black.ToImmutable(), - textStyleOverrides : spans); + textStyleOverrides: spans); var textLine = layout.TextLines[0]; @@ -167,7 +181,7 @@ public void Should_Apply_TextStyleSpan_To_Text_At_End() Assert.Equal("89", actual); - Assert.Equal(foreground, textRun.Style.Foreground); + Assert.Equal(foreground, textRun.Properties.ForegroundBrush); } } @@ -180,9 +194,8 @@ public void Should_Apply_TextStyleSpan_To_Single_Character() var spans = new[] { - new TextStyleRun( - new TextPointer(0, 1), - new TextStyle(Typeface.Default, 12, foreground)) + new ValueSpan(0, 1, + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: foreground)) }; var layout = new TextLayout( @@ -190,7 +203,7 @@ public void Should_Apply_TextStyleSpan_To_Single_Character() Typeface.Default, 12.0f, Brushes.Black.ToImmutable(), - textStyleOverrides : spans); + textStyleOverrides: spans); var textLine = layout.TextLines[0]; @@ -200,7 +213,7 @@ public void Should_Apply_TextStyleSpan_To_Single_Character() Assert.Equal(1, textRun.Text.Length); - Assert.Equal(foreground, textRun.Style.Foreground); + Assert.Equal(foreground, textRun.Properties.ForegroundBrush); } } @@ -215,9 +228,8 @@ public void Should_Apply_TextSpan_To_Unicode_String_In_Between() var spans = new[] { - new TextStyleRun( - new TextPointer(2, 2), - new TextStyle(Typeface.Default, 12, foreground)) + new ValueSpan(2, 2, + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: foreground)) }; var layout = new TextLayout( @@ -239,7 +251,7 @@ public void Should_Apply_TextSpan_To_Unicode_String_In_Between() Assert.Equal("😄", actual); - Assert.Equal(foreground, textRun.Style.Foreground); + Assert.Equal(foreground, textRun.Properties.ForegroundBrush); } } @@ -254,7 +266,7 @@ public void TextLength_Should_Be_Equal_To_TextLine_Length_Sum() 12.0f, Brushes.Black.ToImmutable()); - Assert.Equal(s_multiLineText.Length, layout.TextLines.Sum(x => x.Text.Length)); + Assert.Equal(s_multiLineText.Length, layout.TextLines.Sum(x => x.TextRange.Length)); } } @@ -291,9 +303,8 @@ public void TextLength_Should_Be_Equal_To_TextRun_TextLength_Sum_After_Wrap_With var spans = new[] { - new TextStyleRun( - new TextPointer(0, 24), - new TextStyle(Typeface.Default, 12, foreground)) + new ValueSpan(0, 24, + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: foreground)) }; var layout = new TextLayout( @@ -301,8 +312,8 @@ public void TextLength_Should_Be_Equal_To_TextRun_TextLength_Sum_After_Wrap_With Typeface.Default, 12.0f, Brushes.Black.ToImmutable(), - textWrapping : TextWrapping.Wrap, - maxWidth : 180, + textWrapping: TextWrapping.Wrap, + maxWidth: 180, textStyleOverrides: spans); Assert.Equal( @@ -322,9 +333,8 @@ public void Should_Apply_TextStyleSpan_To_MultiLine() var spans = new[] { - new TextStyleRun( - new TextPointer(5, 20), - new TextStyle(Typeface.Default, 12, foreground)) + new ValueSpan(5, 20, + new GenericTextRunProperties(Typeface.Default, 12, foregroundBrush: foreground)) }; var layout = new TextLayout( @@ -332,13 +342,13 @@ public void Should_Apply_TextStyleSpan_To_MultiLine() Typeface.Default, 12.0f, Brushes.Black.ToImmutable(), - maxWidth : 200, - maxHeight : 125, + maxWidth: 200, + maxHeight: 125, textStyleOverrides: spans); - Assert.Equal(foreground, layout.TextLines[0].TextRuns[1].Style.Foreground); - Assert.Equal(foreground, layout.TextLines[1].TextRuns[0].Style.Foreground); - Assert.Equal(foreground, layout.TextLines[2].TextRuns[0].Style.Foreground); + Assert.Equal(foreground, layout.TextLines[0].TextRuns[1].Properties.ForegroundBrush); + Assert.Equal(foreground, layout.TextLines[1].TextRuns[0].Properties.ForegroundBrush); + Assert.Equal(foreground, layout.TextLines[2].TextRuns[0].Properties.ForegroundBrush); } } @@ -355,7 +365,7 @@ public void Should_Hit_Test_SurrogatePair() 12.0f, Brushes.Black.ToImmutable()); - var shapedRun = (ShapedTextRun)layout.TextLines[0].TextRuns[0]; + var shapedRun = (ShapedTextCharacters)layout.TextLines[0].TextRuns[0]; var glyphRun = shapedRun.GlyphRun; @@ -390,7 +400,7 @@ public void Should_Create_Valid_Clusters_For_Text(string text, ushort[] clusters foreach (var textRun in textLine.TextRuns) { - var shapedRun = (ShapedTextRun)textRun; + var shapedRun = (ShapedTextCharacters)textRun; var glyphRun = shapedRun.GlyphRun; @@ -426,13 +436,13 @@ public void Should_Break_With_BreakChar(string text, int expectedLength) Assert.Equal(1, layout.TextLines[0].TextRuns.Count); - Assert.Equal(expectedLength, ((ShapedTextRun)layout.TextLines[0].TextRuns[0]).GlyphRun.GlyphClusters.Length); + Assert.Equal(expectedLength, ((ShapedTextCharacters)layout.TextLines[0].TextRuns[0]).GlyphRun.GlyphClusters.Length); - Assert.Equal(5, ((ShapedTextRun)layout.TextLines[0].TextRuns[0]).GlyphRun.GlyphClusters[5]); + Assert.Equal(5, ((ShapedTextCharacters)layout.TextLines[0].TextRuns[0]).GlyphRun.GlyphClusters[5]); - if(expectedLength == 7) + if (expectedLength == 7) { - Assert.Equal(5, ((ShapedTextRun)layout.TextLines[0].TextRuns[0]).GlyphRun.GlyphClusters[6]); + Assert.Equal(5, ((ShapedTextCharacters)layout.TextLines[0].TextRuns[0]).GlyphRun.GlyphClusters[6]); } } } @@ -467,7 +477,7 @@ public void Should_Layout_Corrupted_Text() var textLine = layout.TextLines[0]; - var textRun = (ShapedTextRun)textLine.TextRuns[0]; + var textRun = (ShapedTextCharacters)textLine.TextRuns[0]; Assert.Equal(7, textRun.Text.Length); @@ -526,9 +536,28 @@ public void Should_Not_Exceed_MaxLines(string text, int maxLines, int expectedLi } } + [Fact] + public void Should_Produce_Fixed_Height_Lines() + { + using (Start()) + { + var layout = new TextLayout( + s_multiLineText, + Typeface.Default, + 12, + Brushes.Black, + lineHeight: 50); + + foreach (var line in layout.TextLines) + { + Assert.Equal(50, line.LineMetrics.Size.Height); + } + } + } + private const string Text = "日本でTest一番読まれている英字新聞・ジャパンタイムズが発信する国内外ニュースと、様々なジャンルの特集記事。"; - [Fact(Skip= "Only used for profiling.")] + [Fact(Skip = "Only used for profiling.")] public void Should_Wrap() { using (Start()) @@ -546,12 +575,12 @@ public void Should_Wrap() } } - public static IDisposable Start() + private static IDisposable Start() { var disposable = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface .With(renderInterface: new PlatformRenderInterface(null), textShaperImpl: new TextShaperImpl(), - fontManagerImpl : new CustomFontManagerImpl())); + fontManagerImpl: new CustomFontManagerImpl())); return disposable; } diff --git a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs new file mode 100644 index 00000000000..ed00d6aaed7 --- /dev/null +++ b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs @@ -0,0 +1,175 @@ +using System; +using System.Linq; +using Avalonia.Media; +using Avalonia.Media.TextFormatting; +using Avalonia.UnitTests; +using Xunit; + +namespace Avalonia.Skia.UnitTests.Media.TextFormatting +{ + public class TextLineTests + { + [InlineData("𐐷𐐷𐐷𐐷𐐷")] + [InlineData("𐐷1234")] + [Theory] + public void Should_Get_Next_Caret_CharacterHit(string text) + { + using (Start()) + { + var defaultProperties = new GenericTextRunProperties(Typeface.Default); + + var textSource = new SingleBufferTextSource(text, defaultProperties); + + var formatter = new TextFormatterImpl(); + + var textLine = + formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties)); + + var clusters = textLine.TextRuns.Cast().SelectMany(x => x.GlyphRun.GlyphClusters) + .ToArray(); + + var nextCharacterHit = new CharacterHit(0); + + for (var i = 1; i < clusters.Length; i++) + { + nextCharacterHit = textLine.GetNextCaretCharacterHit(nextCharacterHit); + + Assert.Equal(clusters[i], nextCharacterHit.FirstCharacterIndex + nextCharacterHit.TrailingLength); + } + } + } + + [InlineData("𐐷𐐷𐐷𐐷𐐷")] + [InlineData("𐐷1234")] + [Theory] + public void Should_Get_Previous_Caret_CharacterHit(string text) + { + using (Start()) + { + var defaultProperties = new GenericTextRunProperties(Typeface.Default); + + var textSource = new SingleBufferTextSource(text, defaultProperties); + + var formatter = new TextFormatterImpl(); + + var textLine = + formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties)); + + var clusters = textLine.TextRuns.Cast().SelectMany(x => x.GlyphRun.GlyphClusters) + .ToArray(); + + var previousCharacterHit = new CharacterHit(clusters[^1]); + + for (var i = clusters.Length - 2; i > 0; i--) + { + previousCharacterHit = textLine.GetPreviousCaretCharacterHit(previousCharacterHit); + + Assert.Equal(clusters[i], previousCharacterHit.FirstCharacterIndex); + } + } + } + + [Fact] + public void Should_Get_Distance_From_CharacterHit() + { + using (Start()) + { + var defaultProperties = new GenericTextRunProperties(Typeface.Default); + + var textSource = new MultiBufferTextSource(defaultProperties); + + var formatter = new TextFormatterImpl(); + + var textLine = + formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties)); + + var currentDistance = 0.0; + + foreach (var run in textLine.TextRuns) + { + var textRun = (ShapedTextCharacters)run; + + var glyphRun = textRun.GlyphRun; + + for (var i = 0; i < glyphRun.GlyphClusters.Length; i++) + { + var cluster = glyphRun.GlyphClusters[i]; + + var glyph = glyphRun.GlyphIndices[i]; + + var advance = glyphRun.GlyphTypeface.GetGlyphAdvance(glyph) * glyphRun.Scale; + + var distance = textLine.GetDistanceFromCharacterHit(new CharacterHit(cluster)); + + Assert.Equal(currentDistance, distance); + + currentDistance += advance; + } + } + + Assert.Equal(currentDistance, + textLine.GetDistanceFromCharacterHit(new CharacterHit(MultiBufferTextSource.TextRange.Length))); + } + } + + [Fact] + public void Should_Get_CharacterHit_From_Distance() + { + using (Start()) + { + var defaultProperties = new GenericTextRunProperties(Typeface.Default); + + var textSource = new MultiBufferTextSource(defaultProperties); + + var formatter = new TextFormatterImpl(); + + var textLine = + formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties)); + + var currentDistance = 0.0; + + CharacterHit characterHit; + + foreach (var run in textLine.TextRuns) + { + var textRun = (ShapedTextCharacters)run; + + var glyphRun = textRun.GlyphRun; + + for (var i = 0; i < glyphRun.GlyphClusters.Length; i++) + { + var cluster = glyphRun.GlyphClusters[i]; + + var glyph = glyphRun.GlyphIndices[i]; + + var advance = glyphRun.GlyphTypeface.GetGlyphAdvance(glyph) * glyphRun.Scale; + + characterHit = textLine.GetCharacterHitFromDistance(currentDistance); + + Assert.Equal(cluster, characterHit.FirstCharacterIndex + characterHit.TrailingLength); + + currentDistance += advance; + } + } + + characterHit = textLine.GetCharacterHitFromDistance(textLine.LineMetrics.Size.Width); + + Assert.Equal(MultiBufferTextSource.TextRange.End, characterHit.FirstCharacterIndex); + } + } + + private static IDisposable Start() + { + var disposable = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface + .With(renderInterface: new PlatformRenderInterface(null), + textShaperImpl: new TextShaperImpl(), + fontManagerImpl: new CustomFontManagerImpl())); + + return disposable; + } + } +} diff --git a/tests/Avalonia.Skia.UnitTests/SimpleTextFormatterTests.cs b/tests/Avalonia.Skia.UnitTests/SimpleTextFormatterTests.cs deleted file mode 100644 index 8e695a11c84..00000000000 --- a/tests/Avalonia.Skia.UnitTests/SimpleTextFormatterTests.cs +++ /dev/null @@ -1,373 +0,0 @@ -using System; -using System.Collections.Generic; -using Avalonia.Media; -using Avalonia.Media.TextFormatting; -using Avalonia.Media.TextFormatting.Unicode; -using Avalonia.UnitTests; -using Avalonia.Utility; -using Xunit; - -namespace Avalonia.Skia.UnitTests -{ - public class SimpleTextFormatterTests - { - [Fact] - public void Should_Format_TextRuns_With_Default_Style() - { - using (Start()) - { - const string text = "0123456789"; - - var defaultTextRunStyle = new TextStyle(Typeface.Default, 12, Brushes.Black); - - var textSource = new SimpleTextSource(text, defaultTextRunStyle); - - var formatter = new SimpleTextFormatter(); - - var textLine = formatter.FormatLine(textSource, 0, double.PositiveInfinity, new TextParagraphProperties()); - - Assert.Single(textLine.TextRuns); - - var textRun = textLine.TextRuns[0]; - - Assert.Equal(defaultTextRunStyle.TextFormat, textRun.Style.TextFormat); - - Assert.Equal(defaultTextRunStyle.Foreground, textRun.Style.Foreground); - - Assert.Equal(text.Length, textRun.Text.Length); - } - } - - [Fact] - public void Should_Format_TextRuns_With_Multiple_Buffers() - { - using (Start()) - { - var defaultTextRunStyle = new TextStyle(Typeface.Default, 12, Brushes.Black); - - var textSource = new MultiBufferTextSource(defaultTextRunStyle); - - var formatter = new SimpleTextFormatter(); - - var textLine = formatter.FormatLine(textSource, 0, double.PositiveInfinity, - new TextParagraphProperties(defaultTextRunStyle)); - - Assert.Equal(5, textLine.TextRuns.Count); - - Assert.Equal(50, textLine.Text.Length); - } - } - - private class MultiBufferTextSource : ITextSource - { - private readonly string[] _runTexts; - private readonly TextStyle _defaultStyle; - - public MultiBufferTextSource(TextStyle defaultStyle) - { - _defaultStyle = defaultStyle; - - _runTexts = new[] { "A123456789", "B123456789", "C123456789", "D123456789", "E123456789" }; - } - - public TextPointer TextPointer => new TextPointer(0, 50); - - public TextRun GetTextRun(int textSourceIndex) - { - if (textSourceIndex == 50) - { - return new TextEndOfParagraph(); - } - - var index = textSourceIndex / 10; - - var runText = _runTexts[index]; - - return new TextCharacters( - new ReadOnlySlice(runText.AsMemory(), textSourceIndex, runText.Length), _defaultStyle); - } - } - - [Fact] - public void Should_Format_TextRuns_With_TextRunStyles() - { - using (Start()) - { - const string text = "0123456789"; - - var defaultStyle = new TextStyle(Typeface.Default, 12, Brushes.Black); - - var textStyleRuns = new[] - { - new TextStyleRun(new TextPointer(0, 3), defaultStyle ), - new TextStyleRun(new TextPointer(3, 3), new TextStyle(Typeface.Default, 13, Brushes.Black) ), - new TextStyleRun(new TextPointer(6, 3), new TextStyle(Typeface.Default, 14, Brushes.Black) ), - new TextStyleRun(new TextPointer(9, 1), defaultStyle ) - }; - - var textSource = new FormattableTextSource(text, defaultStyle, textStyleRuns); - - var formatter = new SimpleTextFormatter(); - - var textLine = formatter.FormatLine(textSource, 0, double.PositiveInfinity, new TextParagraphProperties()); - - Assert.Equal(text.Length, textLine.Text.Length); - - for (var i = 0; i < textStyleRuns.Length; i++) - { - var textStyleRun = textStyleRuns[i]; - - var textRun = textLine.TextRuns[i]; - - Assert.Equal(textStyleRun.TextPointer.Length, textRun.Text.Length); - } - } - } - - private class FormattableTextSource : ITextSource - { - private readonly ReadOnlySlice _text; - private readonly TextStyle _defaultStyle; - private ReadOnlySlice _textStyleRuns; - - public FormattableTextSource(string text, TextStyle defaultStyle, ReadOnlySlice textStyleRuns) - { - _text = text.AsMemory(); - - _defaultStyle = defaultStyle; - - _textStyleRuns = textStyleRuns; - } - - public TextRun GetTextRun(int textSourceIndex) - { - if (_textStyleRuns.IsEmpty) - { - return new TextEndOfParagraph(); - } - - var styleRun = _textStyleRuns[0]; - - _textStyleRuns = _textStyleRuns.Skip(1); - - return new TextCharacters(_text.AsSlice(styleRun.TextPointer.Start, styleRun.TextPointer.Length), - _defaultStyle); - } - } - - [Theory] - [InlineData("0123", 1)] - [InlineData("\r\n", 1)] - [InlineData("👍b", 2)] - [InlineData("a👍b", 3)] - [InlineData("a👍子b", 4)] - public void Should_Produce_Unique_Runs(string text, int numberOfRuns) - { - using (Start()) - { - var textSource = new SimpleTextSource(text, new TextStyle(Typeface.Default)); - - var formatter = new SimpleTextFormatter(); - - var textLine = - formatter.FormatLine(textSource, 0, double.PositiveInfinity, new TextParagraphProperties()); - - Assert.Equal(numberOfRuns, textLine.TextRuns.Count); - } - } - - private class SimpleTextSource : ITextSource - { - private readonly ReadOnlySlice _text; - private readonly TextStyle _defaultTextStyle; - - public SimpleTextSource(string text, TextStyle defaultText) - { - _text = text.AsMemory(); - _defaultTextStyle = defaultText; - } - - public TextRun GetTextRun(int textSourceIndex) - { - var runText = _text.Skip(textSourceIndex); - - if (runText.IsEmpty) - { - return new TextEndOfParagraph(); - } - - return new TextCharacters(runText, _defaultTextStyle); - } - } - - [Fact] - public void Should_Split_Run_On_Script() - { - using (Start()) - { - const string text = "1234الدولي"; - - var textSource = new SimpleTextSource(text, new TextStyle(Typeface.Default)); - - var formatter = new SimpleTextFormatter(); - - var textLine = - formatter.FormatLine(textSource, 0, double.PositiveInfinity, new TextParagraphProperties()); - - Assert.Equal(4, textLine.TextRuns[0].Text.Length); - } - } - - [Fact] - public void Should_Get_Distance_From_CharacterHit() - { - using (Start()) - { - var textSource = new MultiBufferTextSource(new TextStyle(Typeface.Default)); - - var formatter = new SimpleTextFormatter(); - - var textLine = - formatter.FormatLine(textSource, 0, double.PositiveInfinity, new TextParagraphProperties()); - - var currentDistance = 0.0; - - foreach (var run in textLine.TextRuns) - { - var textRun = (ShapedTextRun)run; - - var glyphRun = textRun.GlyphRun; - - for (var i = 0; i < glyphRun.GlyphClusters.Length; i++) - { - var cluster = glyphRun.GlyphClusters[i]; - - var glyph = glyphRun.GlyphIndices[i]; - - var advance = glyphRun.GlyphTypeface.GetGlyphAdvance(glyph) * glyphRun.Scale; - - var distance = textLine.GetDistanceFromCharacterHit(new CharacterHit(cluster)); - - Assert.Equal(currentDistance, distance); - - currentDistance += advance; - } - } - - Assert.Equal(currentDistance, textLine.GetDistanceFromCharacterHit(new CharacterHit(textSource.TextPointer.Length))); - } - } - - [Fact] - public void Should_Get_CharacterHit_From_Distance() - { - using (Start()) - { - var textSource = new MultiBufferTextSource(new TextStyle(Typeface.Default)); - - var formatter = new SimpleTextFormatter(); - - var textLine = - formatter.FormatLine(textSource, 0, double.PositiveInfinity, new TextParagraphProperties()); - - var currentDistance = 0.0; - - CharacterHit characterHit; - - foreach (var run in textLine.TextRuns) - { - var textRun = (ShapedTextRun)run; - - var glyphRun = textRun.GlyphRun; - - for (var i = 0; i < glyphRun.GlyphClusters.Length; i++) - { - var cluster = glyphRun.GlyphClusters[i]; - - var glyph = glyphRun.GlyphIndices[i]; - - var advance = glyphRun.GlyphTypeface.GetGlyphAdvance(glyph) * glyphRun.Scale; - - characterHit = textLine.GetCharacterHitFromDistance(currentDistance); - - Assert.Equal(cluster, characterHit.FirstCharacterIndex + characterHit.TrailingLength); - - currentDistance += advance; - } - } - - characterHit = textLine.GetCharacterHitFromDistance(textLine.LineMetrics.Size.Width); - - Assert.Equal(textSource.TextPointer.End, characterHit.FirstCharacterIndex); - } - } - - [InlineData("Whether to turn off HTTPS. This option only applies if Individual, " + - "IndividualB2C, SingleOrg, or MultiOrg aren't used for ‑‑auth." - , "Noto Sans", 40)] - [InlineData("01234 56789 01234 56789", "Noto Mono", 7)] - [Theory] - public void Should_Wrap_Text(string text, string familyName, int numberOfCharactersPerLine) - { - using (Start()) - { - var lineBreaker = new LineBreakEnumerator(text.AsMemory()); - - var expected = new List(); - - while (lineBreaker.MoveNext()) - { - expected.Add(lineBreaker.Current.PositionWrap - 1); - } - - var typeface = new Typeface("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#" + - familyName); - - var defaultStyle = new TextStyle(typeface); - - var textSource = new SimpleTextSource(text, defaultStyle); - - var formatter = new SimpleTextFormatter(); - - var glyph = typeface.GlyphTypeface.GetGlyph('a'); - - var advance = typeface.GlyphTypeface.GetGlyphAdvance(glyph) * - (12.0 / typeface.GlyphTypeface.DesignEmHeight); - - var paragraphWidth = advance * numberOfCharactersPerLine; - - var currentPosition = 0; - - while (currentPosition < text.Length) - { - var textLine = - formatter.FormatLine(textSource, currentPosition, paragraphWidth, - new TextParagraphProperties(defaultStyle, textWrapping: TextWrapping.Wrap)); - - Assert.True(expected.Contains(textLine.Text.End)); - - var index = expected.IndexOf(textLine.Text.End); - - for (var i = 0; i <= index; i++) - { - expected.RemoveAt(0); - } - - currentPosition += textLine.Text.Length; - } - } - } - - public static IDisposable Start() - { - var disposable = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface - .With(renderInterface: new PlatformRenderInterface(null), - textShaperImpl: new TextShaperImpl())); - - AvaloniaLocator.CurrentMutable - .Bind().ToConstant(new FontManager(new CustomFontManagerImpl())); - - return disposable; - } - } -} diff --git a/tests/Avalonia.UnitTests/MockTextShaperImpl.cs b/tests/Avalonia.UnitTests/MockTextShaperImpl.cs index 0772e0e9bd7..fe1c34385f5 100644 --- a/tests/Avalonia.UnitTests/MockTextShaperImpl.cs +++ b/tests/Avalonia.UnitTests/MockTextShaperImpl.cs @@ -1,19 +1,19 @@ -using Avalonia.Media; -using Avalonia.Media.TextFormatting; +using System; +using System.Globalization; +using Avalonia.Media; using Avalonia.Media.TextFormatting.Unicode; using Avalonia.Platform; -using Avalonia.Utility; +using Avalonia.Utilities; namespace Avalonia.UnitTests { public class MockTextShaperImpl : ITextShaperImpl { - public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) + public GlyphRun ShapeText(ReadOnlySlice text, Typeface typeface, double fontRenderingEmSize, CultureInfo culture) { - var glyphTypeface = textFormat.Typeface.GlyphTypeface; + var glyphTypeface = typeface.GlyphTypeface; var glyphIndices = new ushort[text.Length]; - var height = textFormat.FontMetrics.LineHeight; - var width = 0.0; + var glyphCount = 0; for (var i = 0; i < text.Length;) { @@ -27,10 +27,11 @@ public GlyphRun ShapeText(ReadOnlySlice text, TextFormat textFormat) glyphIndices[index] = glyph; - width += glyphTypeface.GetGlyphAdvance(glyph); + glyphCount++; } - return new GlyphRun(glyphTypeface, textFormat.FontRenderingEmSize, glyphIndices, characters: text); + return new GlyphRun(glyphTypeface, fontRenderingEmSize, + new ReadOnlySlice(glyphIndices.AsMemory(0, glyphCount)), characters: text); } } } diff --git a/tests/Avalonia.Visuals.UnitTests/Media/GlyphRunTests.cs b/tests/Avalonia.Visuals.UnitTests/Media/GlyphRunTests.cs index 028caa35c64..219c7ece46d 100644 --- a/tests/Avalonia.Visuals.UnitTests/Media/GlyphRunTests.cs +++ b/tests/Avalonia.Visuals.UnitTests/Media/GlyphRunTests.cs @@ -1,7 +1,7 @@ using Avalonia.Media; using Avalonia.Platform; using Avalonia.UnitTests; -using Avalonia.Utility; +using Avalonia.Utilities; using Xunit; namespace Avalonia.Visuals.UnitTests.Media diff --git a/tests/Avalonia.Visuals.UnitTests/Media/TextFormatting/LineBreakerTests.cs b/tests/Avalonia.Visuals.UnitTests/Media/TextFormatting/LineBreakerTests.cs index fe7d7adc175..91e6482abf0 100644 --- a/tests/Avalonia.Visuals.UnitTests/Media/TextFormatting/LineBreakerTests.cs +++ b/tests/Avalonia.Visuals.UnitTests/Media/TextFormatting/LineBreakerTests.cs @@ -1,6 +1,6 @@ using System; using Avalonia.Media.TextFormatting.Unicode; -using Avalonia.Utility; +using Avalonia.Utilities; using Xunit; namespace Avalonia.Visuals.UnitTests.Media.Text diff --git a/tests/Avalonia.Visuals.UnitTests/Media/TypefaceTests.cs b/tests/Avalonia.Visuals.UnitTests/Media/TypefaceTests.cs index 0e43c76da1a..e526172622b 100644 --- a/tests/Avalonia.Visuals.UnitTests/Media/TypefaceTests.cs +++ b/tests/Avalonia.Visuals.UnitTests/Media/TypefaceTests.cs @@ -9,7 +9,7 @@ public class TypefaceTests [Fact] public void Exception_Should_Be_Thrown_If_FontWeight_LessThanEqualTo_Zero() { - Assert.Throws(() => new Typeface("foo", 0, (FontStyle)12)); + Assert.Throws(() => new Typeface("foo", (FontStyle)12, 0)); } [Fact] From 8c41ab4db65b35182b0d5d4b3c23e6d85c4dac31 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sat, 27 Jun 2020 21:28:02 -0700 Subject: [PATCH 170/354] Update Avalonia to renamed XamlX branch. --- .../Avalonia.Build.Tasks.csproj | 6 +- .../XamlCompilerTaskExecutor.Helpers.cs | 2 +- .../XamlCompilerTaskExecutor.cs | 47 +++---- .../Avalonia.Markup.Xaml.csproj | 4 +- .../XamlIl/AvaloniaXamlIlRuntimeCompiler.cs | 36 +++--- .../AvaloniaXamlIlCompiler.cs | 75 +++++------ .../AvaloniaXamlIlLanguage.cs | 78 ++++++------ .../Transformers/AddNameScopeRegistration.cs | 98 ++++++++------- ...AvaloniaBindingExtensionHackTransformer.cs | 10 +- .../AvaloniaXamlIlAvaloniaPropertyResolver.cs | 10 +- ...IlConstructorServiceProviderTransformer.cs | 28 +++-- ...olTemplateTargetTypeMetadataTransformer.cs | 28 ++--- ...aloniaXamlIlDesignPropertiesTransformer.cs | 26 ++-- .../AvaloniaXamlIlMetadataRemover.cs | 8 +- .../AvaloniaXamlIlSelectorTransformer.cs | 118 +++++++++--------- .../AvaloniaXamlIlSetterTransformer.cs | 68 +++++----- ...mlIlTransformInstanceAttachedProperties.cs | 78 ++++++------ ...amlIlTransitionsTypeMetadataTransformer.cs | 12 +- .../AvaloniaXamlIlWellKnownTypes.cs | 96 +++++++------- .../IgnoredDirectivesTransformer.cs | 14 +-- .../Transformers/XNameTransformer.cs | 19 ++- .../XamlIlAvaloniaPropertyHelper.cs | 103 +++++++-------- .../Avalonia.Markup.Xaml/XamlIl/xamlil.github | 2 +- 23 files changed, 510 insertions(+), 456 deletions(-) diff --git a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj index 582e4499c58..49e793cfdab 100644 --- a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj +++ b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj @@ -21,10 +21,10 @@ XamlIlExtensions/%(RecursiveDir)%(FileName)%(Extension) - + XamlIl/%(RecursiveDir)%(FileName)%(Extension) - + XamlIl.Cecil/%(RecursiveDir)%(FileName)%(Extension) @@ -44,7 +44,7 @@ - + diff --git a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs index f94f10f7927..5a2c74e16f5 100644 --- a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs +++ b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs @@ -5,7 +5,7 @@ using Mono.Cecil; using Mono.Cecil.Cil; using Mono.Collections.Generic; -using XamlIl.TypeSystem; +using XamlX.TypeSystem; namespace Avalonia.Build.Tasks { diff --git a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs index 30e8f120d7c..b8e521100d8 100644 --- a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs +++ b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs @@ -7,17 +7,18 @@ using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions; using Microsoft.Build.Framework; using Mono.Cecil; -using XamlIl.TypeSystem; using Avalonia.Utilities; using Mono.Cecil.Cil; using Mono.Cecil.Rocks; -using XamlIl; -using XamlIl.Ast; -using XamlIl.Parsers; -using XamlIl.Transform; +using XamlX; +using XamlX.Ast; +using XamlX.Parsers; +using XamlX.Transform; +using XamlX.TypeSystem; using FieldAttributes = Mono.Cecil.FieldAttributes; using MethodAttributes = Mono.Cecil.MethodAttributes; using TypeAttributes = Mono.Cecil.TypeAttributes; +using XamlX.IL; namespace Avalonia.Build.Tasks { @@ -51,11 +52,11 @@ public static CompileResult Compile(IBuildEngine engine, string input, string[] // Nothing to do return new CompileResult(true); - var xamlLanguage = AvaloniaXamlIlLanguage.Configure(typeSystem); - var compilerConfig = new XamlIlTransformerConfiguration(typeSystem, + var (xamlLanguage , emitConfig) = AvaloniaXamlIlLanguage.Configure(typeSystem); + var compilerConfig = new TransformerConfiguration(typeSystem, typeSystem.TargetAssembly, xamlLanguage, - XamlIlXmlnsMappings.Resolve(typeSystem, xamlLanguage), + XamlXmlnsMappings.Resolve(typeSystem, xamlLanguage), AvaloniaXamlIlLanguage.CustomValueConverter); @@ -63,10 +64,10 @@ public static CompileResult Compile(IBuildEngine engine, string input, string[] TypeAttributes.Class, asm.MainModule.TypeSystem.Object); asm.MainModule.Types.Add(contextDef); - var contextClass = XamlIlContextDefinition.GenerateContextClass(typeSystem.CreateTypeBuilder(contextDef), typeSystem, - xamlLanguage); + var contextClass = XamlILContextDefinition.GenerateContextClass(typeSystem.CreateTypeBuilder(contextDef), typeSystem, + xamlLanguage, emitConfig); - var compiler = new AvaloniaXamlIlCompiler(compilerConfig, contextClass) { EnableIlVerification = verifyIl }; + var compiler = new AvaloniaXamlIlCompiler(compilerConfig, emitConfig, contextClass) { EnableIlVerification = verifyIl }; var editorBrowsableAttribute = typeSystem .GetTypeReference(typeSystem.FindType("System.ComponentModel.EditorBrowsableAttribute")) @@ -126,35 +127,35 @@ bool CompileGroup(IResourceGroup group) // StreamReader is needed here to handle BOM var xaml = new StreamReader(new MemoryStream(res.FileContents)).ReadToEnd(); - var parsed = XDocumentXamlIlParser.Parse(xaml); + var parsed = XDocumentXamlParser.Parse(xaml); - var initialRoot = (XamlIlAstObjectNode)parsed.Root; + var initialRoot = (XamlAstObjectNode)parsed.Root; - var precompileDirective = initialRoot.Children.OfType() + var precompileDirective = initialRoot.Children.OfType() .FirstOrDefault(d => d.Namespace == XamlNamespaces.Xaml2006 && d.Name == "Precompile"); if (precompileDirective != null) { - var precompileText = (precompileDirective.Values[0] as XamlIlAstTextNode)?.Text.Trim() + var precompileText = (precompileDirective.Values[0] as XamlAstTextNode)?.Text.Trim() .ToLowerInvariant(); if (precompileText == "false") continue; if (precompileText != "true") - throw new XamlIlParseException("Invalid value for x:Precompile", precompileDirective); + throw new XamlParseException("Invalid value for x:Precompile", precompileDirective); } - var classDirective = initialRoot.Children.OfType() + var classDirective = initialRoot.Children.OfType() .FirstOrDefault(d => d.Namespace == XamlNamespaces.Xaml2006 && d.Name == "Class"); - IXamlIlType classType = null; + IXamlType classType = null; if (classDirective != null) { - if (classDirective.Values.Count != 1 || !(classDirective.Values[0] is XamlIlAstTextNode tn)) - throw new XamlIlParseException("x:Class should have a string value", classDirective); + if (classDirective.Values.Count != 1 || !(classDirective.Values[0] is XamlAstTextNode tn)) + throw new XamlParseException("x:Class should have a string value", classDirective); classType = typeSystem.TargetAssembly.FindType(tn.Text); if (classType == null) - throw new XamlIlParseException($"Unable to find type `{tn.Text}`", classDirective); + throw new XamlParseException($"Unable to find type `{tn.Text}`", classDirective); compiler.OverrideRootType(parsed, - new XamlIlAstClrTypeReference(classDirective, classType, false)); + new XamlAstClrTypeReference(classDirective, classType, false)); initialRoot.Children.Remove(classDirective); } @@ -323,7 +324,7 @@ bool CompileGroup(IResourceGroup group) catch (Exception e) { int lineNumber = 0, linePosition = 0; - if (e is XamlIlParseException xe) + if (e is XamlParseException xe) { lineNumber = xe.LineNumber; linePosition = xe.LinePosition; diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index 985a6b9f5a2..48f4b75e90c 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -58,8 +58,8 @@ - - + + diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs index 5a5da518d0f..88da8dcc9e4 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs @@ -10,12 +10,15 @@ using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions; using Avalonia.Markup.Xaml.XamlIl.Runtime; using Avalonia.Platform; -using XamlIl.Transform; -using XamlIl.TypeSystem; +using XamlX.Transform; +using XamlX.TypeSystem; +using XamlX.IL; +using XamlX.Emit; #if RUNTIME_XAML_CECIL using TypeAttributes = Mono.Cecil.TypeAttributes; using Mono.Cecil; -using XamlIl.Ast; +using XamlX.Ast; +using XamlX.IL.Cecil; #endif namespace Avalonia.Markup.Xaml.XamlIl { @@ -24,9 +27,10 @@ static class AvaloniaXamlIlRuntimeCompiler #if !RUNTIME_XAML_CECIL private static SreTypeSystem _sreTypeSystem; private static ModuleBuilder _sreBuilder; - private static IXamlIlType _sreContextType; - private static XamlIlLanguageTypeMappings _sreMappings; - private static XamlIlXmlnsMappings _sreXmlns; + private static IXamlType _sreContextType; + private static XamlLanguageTypeMappings _sreMappings; + private static XamlLanguageEmitMappings _sreEmitMappings; + private static XamlXmlnsMappings _sreXmlns; private static AssemblyBuilder _sreAsm; private static bool _sreCanSave; @@ -82,13 +86,14 @@ static void InitializeSre() } if (_sreMappings == null) - _sreMappings = AvaloniaXamlIlLanguage.Configure(_sreTypeSystem); + (_sreMappings, _sreEmitMappings) = AvaloniaXamlIlLanguage.Configure(_sreTypeSystem); if (_sreXmlns == null) - _sreXmlns = XamlIlXmlnsMappings.Resolve(_sreTypeSystem, _sreMappings); + _sreXmlns = XamlXmlnsMappings.Resolve(_sreTypeSystem, _sreMappings); if (_sreContextType == null) - _sreContextType = XamlIlContextDefinition.GenerateContextClass( + _sreContextType = XamlILContextDefinition.GenerateContextClass( _sreTypeSystem.CreateTypeBuilder( - _sreBuilder.DefineType("XamlIlContext")), _sreTypeSystem, _sreMappings); + _sreBuilder.DefineType("XamlIlContext")), _sreTypeSystem, _sreMappings, + _sreEmitMappings); } @@ -115,12 +120,13 @@ static object LoadSreCore(string xaml, Assembly localAssembly, object rootInstan InitializeSre(); var asm = localAssembly == null ? null : _sreTypeSystem.GetAssembly(localAssembly); - var compiler = new AvaloniaXamlIlCompiler(new XamlIlTransformerConfiguration(_sreTypeSystem, asm, + var compiler = new AvaloniaXamlIlCompiler(new TransformerConfiguration(_sreTypeSystem, asm, _sreMappings, _sreXmlns, AvaloniaXamlIlLanguage.CustomValueConverter), + _sreEmitMappings, _sreContextType) { EnableIlVerification = true }; var tb = _sreBuilder.DefineType("Builder_" + Guid.NewGuid().ToString("N") + "_" + uri); - IXamlIlType overrideType = null; + IXamlType overrideType = null; if (rootInstance != null) { overrideType = _sreTypeSystem.GetType(rootInstance.GetType()); @@ -203,6 +209,7 @@ public static object Load(Stream stream, Assembly localAssembly, object rootInst private static string _cecilEmitDir; private static CecilTypeSystem _cecilTypeSystem; private static XamlIlLanguageTypeMappings _cecilMappings; + private static XamlLanguageEmitMappings _cecilEmitMappings; private static XamlIlXmlnsMappings _cecilXmlns; private static bool _cecilInitialized; @@ -215,7 +222,7 @@ static void InitializeCecil() Directory.CreateDirectory(_cecilEmitDir); var refs = new[] {path}.Concat(File.ReadAllLines(path + ".refs")); _cecilTypeSystem = new CecilTypeSystem(refs); - _cecilMappings = AvaloniaXamlIlLanguage.Configure(_cecilTypeSystem); + (_cecilMappings, _cecilEmitMappings) = AvaloniaXamlIlLanguage.Configure(_cecilTypeSystem); _cecilXmlns = XamlIlXmlnsMappings.Resolve(_cecilTypeSystem, _cecilMappings); _cecilInitialized = true; } @@ -226,7 +233,7 @@ static object LoadCecil(string xaml, Assembly localAssembly, object rootInstance if (uri == null) throw new InvalidOperationException("Please, go away"); InitializeCecil(); - IXamlIlType overrideType = null; + IXamlType overrideType = null; if (rootInstance != null) { overrideType = _cecilTypeSystem.GetType(rootInstance.GetType().FullName); @@ -261,6 +268,7 @@ static object LoadCecil(string xaml, Assembly localAssembly, object rootInstance localAssembly == null ? null : _cecilTypeSystem.FindAssembly(localAssembly.GetName().Name), _cecilMappings, XamlIlXmlnsMappings.Resolve(_cecilTypeSystem, _cecilMappings), AvaloniaXamlIlLanguage.CustomValueConverter), + _cecilEmitMappings, _cecilTypeSystem.CreateTypeBuilder(contextDef)); compiler.ParseAndCompile(xaml, uri.ToString(), tb, overrideType); var asmPath = Path.Combine(_cecilEmitDir, safeUri + ".dll"); diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs index b84f50fa8de..1e7128e75c3 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs @@ -1,29 +1,32 @@ using System.Collections.Generic; using System.Linq; using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers; -using XamlIl; -using XamlIl.Ast; -using XamlIl.Parsers; -using XamlIl.Transform; -using XamlIl.Transform.Transformers; -using XamlIl.TypeSystem; +using XamlX; +using XamlX.Ast; +using XamlX.Emit; +using XamlX.IL; +using XamlX.Parsers; +using XamlX.Transform; +using XamlX.Transform.Transformers; +using XamlX.TypeSystem; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions { - class AvaloniaXamlIlCompiler : XamlIlCompiler + class AvaloniaXamlIlCompiler : XamlILCompiler { - private readonly XamlIlTransformerConfiguration _configuration; - private readonly IXamlIlType _contextType; + private readonly TransformerConfiguration _configuration; + private readonly IXamlType _contextType; private readonly AvaloniaXamlIlDesignPropertiesTransformer _designTransformer; - private AvaloniaXamlIlCompiler(XamlIlTransformerConfiguration configuration) : base(configuration, true) + private AvaloniaXamlIlCompiler(TransformerConfiguration configuration, XamlLanguageEmitMappings emitMappings) + : base(configuration, emitMappings, true) { _configuration = configuration; - void InsertAfter(params IXamlIlAstTransformer[] t) + void InsertAfter(params IXamlAstTransformer[] t) => Transformers.InsertRange(Transformers.FindIndex(x => x is T) + 1, t); - void InsertBefore(params IXamlIlAstTransformer[] t) + void InsertBefore(params IXamlAstTransformer[] t) => Transformers.InsertRange(Transformers.FindIndex(x => x is T), t); @@ -37,12 +40,12 @@ void InsertBefore(params IXamlIlAstTransformer[] t) // Targeted - InsertBefore(new AvaloniaXamlIlTransformInstanceAttachedProperties()); - InsertAfter(new AvaloniaXamlIlAvaloniaPropertyResolver()); + InsertBefore(new AvaloniaXamlIlTransformInstanceAttachedProperties()); + InsertAfter(new AvaloniaXamlIlAvaloniaPropertyResolver()); - InsertBefore( + InsertBefore( new AvaloniaXamlIlSelectorTransformer(), new AvaloniaXamlIlSetterTransformer(), new AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer(), @@ -55,17 +58,21 @@ void InsertBefore(params IXamlIlAstTransformer[] t) Transformers.Add(new AddNameScopeRegistration()); Transformers.Add(new AvaloniaXamlIlMetadataRemover()); + Emitters.Add(new AvaloniaNameScopeRegistrationXamlIlNodeEmitter()); } - public AvaloniaXamlIlCompiler(XamlIlTransformerConfiguration configuration, - IXamlIlTypeBuilder contextTypeBuilder) : this(configuration) + public AvaloniaXamlIlCompiler(TransformerConfiguration configuration, + XamlLanguageEmitMappings emitMappings, + IXamlTypeBuilder contextTypeBuilder) + : this(configuration, emitMappings) { _contextType = CreateContextType(contextTypeBuilder); } - public AvaloniaXamlIlCompiler(XamlIlTransformerConfiguration configuration, - IXamlIlType contextType) : this(configuration) + public AvaloniaXamlIlCompiler(TransformerConfiguration configuration, + XamlLanguageEmitMappings emitMappings, + IXamlType contextType) : this(configuration, emitMappings) { _contextType = contextType; } @@ -79,37 +86,35 @@ public bool IsDesignMode set => _designTransformer.IsDesignMode = value; } - public void ParseAndCompile(string xaml, string baseUri, IFileSource fileSource, IXamlIlTypeBuilder tb, IXamlIlType overrideRootType) + public void ParseAndCompile(string xaml, string baseUri, IFileSource fileSource, IXamlTypeBuilder tb, IXamlType overrideRootType) { - var parsed = XDocumentXamlIlParser.Parse(xaml, new Dictionary + var parsed = XDocumentXamlParser.Parse(xaml, new Dictionary { {XamlNamespaces.Blend2008, XamlNamespaces.Blend2008} }); - var rootObject = (XamlIlAstObjectNode)parsed.Root; + var rootObject = (XamlAstObjectNode)parsed.Root; var classDirective = rootObject.Children - .OfType().FirstOrDefault(x => + .OfType().FirstOrDefault(x => x.Namespace == XamlNamespaces.Xaml2006 && x.Name == "Class"); var rootType = classDirective != null ? - new XamlIlAstClrTypeReference(classDirective, - _configuration.TypeSystem.GetType(((XamlIlAstTextNode)classDirective.Values[0]).Text), + new XamlAstClrTypeReference(classDirective, + _configuration.TypeSystem.GetType(((XamlAstTextNode)classDirective.Values[0]).Text), false) : - XamlIlTypeReferenceResolver.ResolveType(CreateTransformationContext(parsed, true), - (XamlIlAstXmlTypeReference)rootObject.Type, true); + TypeReferenceResolver.ResolveType(CreateTransformationContext(parsed, true), + (XamlAstXmlTypeReference)rootObject.Type, true); if (overrideRootType != null) { - - if (!rootType.Type.IsAssignableFrom(overrideRootType)) - throw new XamlIlLoadException( + throw new XamlX.XamlLoadException( $"Unable to substitute {rootType.Type.GetFqn()} with {overrideRootType.GetFqn()}", rootObject); - rootType = new XamlIlAstClrTypeReference(rootObject, overrideRootType, false); + rootType = new XamlAstClrTypeReference(rootObject, overrideRootType, false); } OverrideRootType(parsed, rootType); @@ -119,17 +124,17 @@ public void ParseAndCompile(string xaml, string baseUri, IFileSource fileSource, } - public void OverrideRootType(XamlIlDocument doc, IXamlIlAstTypeReference newType) + public void OverrideRootType(XamlDocument doc, IXamlAstTypeReference newType) { - var root = (XamlIlAstObjectNode)doc.Root; + var root = (XamlAstObjectNode)doc.Root; var oldType = root.Type; if (oldType.Equals(newType)) return; root.Type = newType; - foreach (var child in root.Children.OfType()) + foreach (var child in root.Children.OfType()) { - if (child.Property is XamlIlAstNamePropertyReference prop) + if (child.Property is XamlAstNamePropertyReference prop) { if (prop.DeclaringType.Equals(oldType)) prop.DeclaringType = newType; diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlLanguage.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlLanguage.cs index a1fe6976b72..e1e360cd372 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlLanguage.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlLanguage.cs @@ -2,10 +2,12 @@ using System.Globalization; using System.Linq; using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers; -using XamlIl; -using XamlIl.Ast; -using XamlIl.Transform; -using XamlIl.TypeSystem; +using XamlX; +using XamlX.Ast; +using XamlX.Emit; +using XamlX.IL; +using XamlX.Transform; +using XamlX.TypeSystem; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions { @@ -17,12 +19,12 @@ ONLY use types from netstandard and XamlIl. NO dependencies on Avalonia are allo class AvaloniaXamlIlLanguage { - public static XamlIlLanguageTypeMappings Configure(IXamlIlTypeSystem typeSystem) + public static (XamlLanguageTypeMappings language, XamlLanguageEmitMappings emit) Configure(IXamlTypeSystem typeSystem) { var runtimeHelpers = typeSystem.GetType("Avalonia.Markup.Xaml.XamlIl.Runtime.XamlIlRuntimeHelpers"); var assignBindingAttribute = typeSystem.GetType("Avalonia.Data.AssignBindingAttribute"); var bindingType = typeSystem.GetType("Avalonia.Data.IBinding"); - var rv = new XamlIlLanguageTypeMappings(typeSystem) + var rv = new XamlLanguageTypeMappings(typeSystem) { SupportInitialize = typeSystem.GetType("System.ComponentModel.ISupportInitialize"), XmlnsAttributes = @@ -51,18 +53,22 @@ public static XamlIlLanguageTypeMappings Configure(IXamlIlTypeSystem typeSystem) }, InnerServiceProviderFactoryMethod = runtimeHelpers.FindMethod(m => m.Name == "CreateInnerServiceProviderV1"), - ProvideValueTargetPropertyEmitter = XamlIlAvaloniaPropertyHelper.Emit, }; rv.CustomAttributeResolver = new AttributeResolver(typeSystem, rv); - rv.ContextTypeBuilderCallback = (b, c) => EmitNameScopeField(rv, typeSystem, b, c); - return rv; + + var emit = new XamlLanguageEmitMappings + { + ProvideValueTargetPropertyEmitter = XamlIlAvaloniaPropertyHelper.Emit, + ContextTypeBuilderCallback = (b, c) => EmitNameScopeField(rv, typeSystem, b, c) + }; + return (rv, emit); } public const string ContextNameScopeFieldName = "AvaloniaNameScope"; - private static void EmitNameScopeField(XamlIlLanguageTypeMappings mappings, - IXamlIlTypeSystem typeSystem, - IXamlIlTypeBuilder typebuilder, IXamlIlEmitter constructor) + private static void EmitNameScopeField(XamlLanguageTypeMappings mappings, + IXamlTypeSystem typeSystem, + IXamlTypeBuilder typebuilder, IXamlILEmitter constructor) { var nameScopeType = typeSystem.FindType("Avalonia.Controls.INameScope"); @@ -78,23 +84,23 @@ private static void EmitNameScopeField(XamlIlLanguageTypeMappings mappings, } - class AttributeResolver : IXamlIlCustomAttributeResolver + class AttributeResolver : IXamlCustomAttributeResolver { - private readonly IXamlIlType _typeConverterAttribute; + private readonly IXamlType _typeConverterAttribute; - private readonly List> _converters = - new List>(); + private readonly List> _converters = + new List>(); - private readonly IXamlIlType _avaloniaList; - private readonly IXamlIlType _avaloniaListConverter; + private readonly IXamlType _avaloniaList; + private readonly IXamlType _avaloniaListConverter; - public AttributeResolver(IXamlIlTypeSystem typeSystem, XamlIlLanguageTypeMappings mappings) + public AttributeResolver(IXamlTypeSystem typeSystem, XamlLanguageTypeMappings mappings) { _typeConverterAttribute = mappings.TypeConverterAttributes.First(); - void AddType(IXamlIlType type, IXamlIlType conv) - => _converters.Add(new KeyValuePair(type, conv)); + void AddType(IXamlType type, IXamlType conv) + => _converters.Add(new KeyValuePair(type, conv)); void Add(string type, string conv) => AddType(typeSystem.GetType(type), typeSystem.GetType(conv)); @@ -113,7 +119,7 @@ void Add(string type, string conv) _avaloniaListConverter = typeSystem.GetType("Avalonia.Collections.AvaloniaListConverter`1"); } - IXamlIlType LookupConverter(IXamlIlType type) + IXamlType LookupConverter(IXamlType type) { foreach(var p in _converters) if (p.Key.Equals(type)) @@ -123,15 +129,15 @@ IXamlIlType LookupConverter(IXamlIlType type) return null; } - class ConstructedAttribute : IXamlIlCustomAttribute + class ConstructedAttribute : IXamlCustomAttribute { - public bool Equals(IXamlIlCustomAttribute other) => false; + public bool Equals(IXamlCustomAttribute other) => false; - public IXamlIlType Type { get; } + public IXamlType Type { get; } public List Parameters { get; } public Dictionary Properties { get; } - public ConstructedAttribute(IXamlIlType type, List parameters, Dictionary properties) + public ConstructedAttribute(IXamlType type, List parameters, Dictionary properties) { Type = type; Parameters = parameters ?? new List(); @@ -139,7 +145,7 @@ public ConstructedAttribute(IXamlIlType type, List parameters, Dictionar } } - public IXamlIlCustomAttribute GetCustomAttribute(IXamlIlType type, IXamlIlType attributeType) + public IXamlCustomAttribute GetCustomAttribute(IXamlType type, IXamlType attributeType) { if (attributeType.Equals(_typeConverterAttribute)) { @@ -151,25 +157,25 @@ public IXamlIlCustomAttribute GetCustomAttribute(IXamlIlType type, IXamlIlType a return null; } - public IXamlIlCustomAttribute GetCustomAttribute(IXamlIlProperty property, IXamlIlType attributeType) + public IXamlCustomAttribute GetCustomAttribute(IXamlProperty property, IXamlType attributeType) { return null; } } - public static bool CustomValueConverter(XamlIlAstTransformationContext context, - IXamlIlAstValueNode node, IXamlIlType type, out IXamlIlAstValueNode result) + public static bool CustomValueConverter(AstTransformationContext context, + IXamlAstValueNode node, IXamlType type, out IXamlAstValueNode result) { if (type.FullName == "System.TimeSpan" - && node is XamlIlAstTextNode tn + && node is XamlAstTextNode tn && !tn.Text.Contains(":")) { var seconds = double.Parse(tn.Text, CultureInfo.InvariantCulture); - result = new XamlIlStaticOrTargetedReturnMethodCallNode(tn, + result = new XamlStaticOrTargetedReturnMethodCallNode(tn, type.FindMethod("FromSeconds", type, false, context.Configuration.WellKnownTypes.Double), new[] { - new XamlIlConstantNode(tn, context.Configuration.WellKnownTypes.Double, seconds) + new XamlConstantNode(tn, context.Configuration.WellKnownTypes.Double, seconds) }); return true; } @@ -178,9 +184,9 @@ public static bool CustomValueConverter(XamlIlAstTransformationContext context, { var scope = context.ParentNodes().OfType().FirstOrDefault(); if (scope == null) - throw new XamlIlLoadException("Unable to find the parent scope for AvaloniaProperty lookup", node); - if (!(node is XamlIlAstTextNode text)) - throw new XamlIlLoadException("Property should be a text node", node); + throw new XamlX.XamlLoadException("Unable to find the parent scope for AvaloniaProperty lookup", node); + if (!(node is XamlAstTextNode text)) + throw new XamlX.XamlLoadException("Property should be a text node", node); result = XamlIlAvaloniaPropertyHelper.CreateNode(context, text.Text, scope.TargetType, text); return true; } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AddNameScopeRegistration.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AddNameScopeRegistration.cs index 805b733feba..970e1ea15ee 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AddNameScopeRegistration.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AddNameScopeRegistration.cs @@ -1,33 +1,35 @@ using System; using System.Linq; -using XamlIl.Ast; -using XamlIl.Transform; -using XamlIl.TypeSystem; +using XamlX.Ast; +using XamlX.Emit; +using XamlX.IL; +using XamlX.Transform; +using XamlX.TypeSystem; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class AddNameScopeRegistration : IXamlIlAstTransformer + class AddNameScopeRegistration : IXamlAstTransformer { - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (node is XamlIlPropertyAssignmentNode pa + if (node is XamlPropertyAssignmentNode pa && pa.Property.Name == "Name" && pa.Property.DeclaringType.FullName == "Avalonia.StyledElement") { - if (context.ParentNodes().FirstOrDefault() is XamlIlManipulationGroupNode mg + if (context.ParentNodes().FirstOrDefault() is XamlManipulationGroupNode mg && mg.Children.OfType().Any()) return node; - IXamlIlAstValueNode value = null; + IXamlAstValueNode value = null; for (var c = 0; c < pa.Values.Count; c++) if (pa.Values[c].Type.GetClrType().Equals(context.Configuration.WellKnownTypes.String)) { value = pa.Values[c]; - if (!(value is XamlIlAstTextNode)) + if (!(value is XamlAstTextNode)) { - var local = new XamlIlAstCompilerLocalNode(value); + var local = new XamlAstCompilerLocalNode(value); // Wrap original in local initialization - pa.Values[c] = new XamlIlAstLocalInitializationNodeEmitter(value, value, local); + pa.Values[c] = new XamlAstLocalInitializationNodeEmitter(value, value, local); // Use local value = local; } @@ -36,20 +38,20 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA } if (value != null) - return new XamlIlManipulationGroupNode(pa) + return new XamlManipulationGroupNode(pa) { Children = { pa, - new AvaloniaNameScopeRegistrationXamlIlNode(value, context.GetAvaloniaTypes()) + new AvaloniaNameScopeRegistrationXamlIlNode(value) } }; } if (!context.ParentNodes().Any() - && node is XamlIlValueWithManipulationNode mnode) + && node is XamlValueWithManipulationNode mnode) { - mnode.Manipulation = new XamlIlManipulationGroupNode(mnode, + mnode.Manipulation = new XamlManipulationGroupNode(mnode, new[] { mnode.Manipulation, @@ -59,17 +61,17 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA return node; } - class HandleRootObjectScopeNode : XamlIlAstNode, IXamlIlAstManipulationNode, IXamlIlAstEmitableNode + class HandleRootObjectScopeNode : XamlAstNode, IXamlAstManipulationNode, IXamlAstEmitableNode { private readonly AvaloniaXamlIlWellKnownTypes _types; - public HandleRootObjectScopeNode(IXamlIlLineInfo lineInfo, + public HandleRootObjectScopeNode(IXamlLineInfo lineInfo, AvaloniaXamlIlWellKnownTypes types) : base(lineInfo) { _types = types; } - public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public XamlILNodeEmitResult Emit(XamlEmitContext context, IXamlILEmitter codeGen) { var next = codeGen.DefineLabel(); var scopeField = context.RuntimeContext.ContextType.Fields.First(f => @@ -91,49 +93,55 @@ public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeG .EmitCall(_types.INameScopeComplete, true); } - return XamlIlNodeEmitResult.Void(1); + return XamlILNodeEmitResult.Void(1); } } } - class AvaloniaNameScopeRegistrationXamlIlNode : XamlIlAstNode, IXamlIlAstManipulationNode, IXamlIlAstEmitableNode + class AvaloniaNameScopeRegistrationXamlIlNode : XamlAstNode, IXamlAstManipulationNode { - private readonly AvaloniaXamlIlWellKnownTypes _types; - public IXamlIlAstValueNode Name { get; set; } + public IXamlAstValueNode Name { get; set; } - public AvaloniaNameScopeRegistrationXamlIlNode(IXamlIlAstValueNode name, AvaloniaXamlIlWellKnownTypes types) : base(name) + public AvaloniaNameScopeRegistrationXamlIlNode(IXamlAstValueNode name) : base(name) { - _types = types; Name = name; } - public override void VisitChildren(IXamlIlAstVisitor visitor) - => Name = (IXamlIlAstValueNode)Name.Visit(visitor); + public override void VisitChildren(IXamlAstVisitor visitor) + => Name = (IXamlAstValueNode)Name.Visit(visitor); + } - public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + class AvaloniaNameScopeRegistrationXamlIlNodeEmitter : IXamlAstLocalsNodeEmitter + { + public XamlILNodeEmitResult Emit(IXamlAstNode node, XamlEmitContextWithLocals context, IXamlILEmitter codeGen) { - var scopeField = context.RuntimeContext.ContextType.Fields.First(f => - f.Name == AvaloniaXamlIlLanguage.ContextNameScopeFieldName); - - using (var targetLoc = context.GetLocal(context.Configuration.WellKnownTypes.Object)) + if (node is AvaloniaNameScopeRegistrationXamlIlNode registration) { - codeGen - // var target = {pop} - .Stloc(targetLoc.Local) - // _context.NameScope.Register(Name, target) - .Ldloc(context.ContextLocal) - .Ldfld(scopeField); - - context.Emit(Name, codeGen, Name.Type.GetClrType()); - - codeGen - .Ldloc(targetLoc.Local) - .EmitCall(_types.INameScopeRegister, true); - } + var scopeField = context.RuntimeContext.ContextType.Fields.First(f => + f.Name == AvaloniaXamlIlLanguage.ContextNameScopeFieldName); + + using (var targetLoc = context.GetLocalOfType(context.Configuration.WellKnownTypes.Object)) + { - return XamlIlNodeEmitResult.Void(1); + codeGen + // var target = {pop} + .Stloc(targetLoc.Local) + // _context.NameScope.Register(Name, target) + .Ldloc(context.ContextLocal) + .Ldfld(scopeField); + + context.Emit(registration.Name, codeGen, registration.Name.Type.GetClrType()); + + codeGen + .Ldloc(targetLoc.Local) + .EmitCall(context.GetAvaloniaTypes().INameScopeRegister, true); + } + + return XamlILNodeEmitResult.Void(1); + } + return default; } } } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaBindingExtensionHackTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaBindingExtensionHackTransformer.cs index c89106312fc..0846bc5faf9 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaBindingExtensionHackTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaBindingExtensionHackTransformer.cs @@ -1,16 +1,16 @@ -using XamlIl.Ast; -using XamlIl.Transform; +using XamlX.Ast; +using XamlX.Transform; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class AvaloniaBindingExtensionHackTransformer : IXamlIlAstTransformer + class AvaloniaBindingExtensionHackTransformer : IXamlAstTransformer { - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { // Our code base expects XAML parser to prefer `FooExtension` to `Foo` even with `` syntax // This is the legacy of Portable.Xaml, so we emulate that behavior here - if (node is XamlIlAstXmlTypeReference tref + if (node is XamlAstXmlTypeReference tref && tref.Name == "Binding" && tref.XmlNamespace == "https://github.com/avaloniaui") tref.IsMarkupExtension = true; diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlAvaloniaPropertyResolver.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlAvaloniaPropertyResolver.cs index 74f5c29f6a9..9219a39ddc4 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlAvaloniaPropertyResolver.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlAvaloniaPropertyResolver.cs @@ -1,14 +1,14 @@ using System.Linq; -using XamlIl.Ast; -using XamlIl.Transform; +using XamlX.Ast; +using XamlX.Transform; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class AvaloniaXamlIlAvaloniaPropertyResolver : IXamlIlAstTransformer + class AvaloniaXamlIlAvaloniaPropertyResolver : IXamlAstTransformer { - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (node is XamlIlAstClrProperty prop) + if (node is XamlAstClrProperty prop) { var n = prop.Name + "Property"; var field = diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlConstructorServiceProviderTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlConstructorServiceProviderTransformer.cs index 7e8f296b443..35e2624ff9b 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlConstructorServiceProviderTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlConstructorServiceProviderTransformer.cs @@ -1,15 +1,17 @@ using System.Linq; -using XamlIl.Ast; -using XamlIl.Transform; -using XamlIl.TypeSystem; +using XamlX.Ast; +using XamlX.Emit; +using XamlX.IL; +using XamlX.Transform; +using XamlX.TypeSystem; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class AvaloniaXamlIlConstructorServiceProviderTransformer : IXamlIlAstTransformer + class AvaloniaXamlIlConstructorServiceProviderTransformer : IXamlAstTransformer { - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (node is XamlIlAstObjectNode on && on.Arguments.Count == 0) + if (node is XamlAstObjectNode on && on.Arguments.Count == 0) { var ctors = on.Type.GetClrType().Constructors; if (!ctors.Any(c => c.IsPublic && !c.IsStatic && c.Parameters.Count == 0)) @@ -27,20 +29,20 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA return node; } - class InjectServiceProviderNode : XamlIlAstNode, IXamlIlAstValueNode,IXamlIlAstNodeNeedsParentStack, - IXamlIlAstEmitableNode + class InjectServiceProviderNode : XamlAstNode, IXamlAstValueNode,IXamlAstNodeNeedsParentStack, + IXamlAstEmitableNode { - public InjectServiceProviderNode(IXamlIlType type, IXamlIlLineInfo lineInfo) : base(lineInfo) + public InjectServiceProviderNode(IXamlType type, IXamlLineInfo lineInfo) : base(lineInfo) { - Type = new XamlIlAstClrTypeReference(lineInfo, type, false); + Type = new XamlAstClrTypeReference(lineInfo, type, false); } - public IXamlIlAstTypeReference Type { get; } + public IXamlAstTypeReference Type { get; } public bool NeedsParentStack => true; - public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public XamlILNodeEmitResult Emit(XamlEmitContext context, IXamlILEmitter codeGen) { codeGen.Ldloc(context.ContextLocal); - return XamlIlNodeEmitResult.Type(0, Type.GetClrType()); + return XamlILNodeEmitResult.Type(0, Type.GetClrType()); } } } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer.cs index 40386924c32..f95d086bf6c 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer.cs @@ -1,29 +1,29 @@ using System.Linq; -using XamlIl.Ast; -using XamlIl.Transform; -using XamlIl.TypeSystem; +using XamlX.Ast; +using XamlX.Transform; +using XamlX.TypeSystem; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer : IXamlIlAstTransformer + class AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer : IXamlAstTransformer { - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (!(node is XamlIlAstObjectNode on + if (!(node is XamlAstObjectNode on && on.Type.GetClrType().FullName == "Avalonia.Markup.Xaml.Templates.ControlTemplate")) return node; - var tt = on.Children.OfType().FirstOrDefault(ch => + var tt = on.Children.OfType().FirstOrDefault(ch => ch.Property.GetClrProperty().Name == "TargetType"); if (context.ParentNodes().FirstOrDefault() is AvaloniaXamlIlTargetTypeMetadataNode) // Deja vu. I've just been in this place before return node; - IXamlIlAstTypeReference targetType; + IXamlAstTypeReference targetType; var templatableBaseType = context.Configuration.TypeSystem.GetType("Avalonia.Controls.Control"); - if ((tt?.Values.FirstOrDefault() is XamlIlTypeExtensionNode tn)) + if ((tt?.Values.FirstOrDefault() is XamlTypeExtensionNode tn)) { targetType = tn.Value; } @@ -33,11 +33,11 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA .FirstOrDefault(); if (parentScope?.ScopeType == AvaloniaXamlIlTargetTypeMetadataNode.ScopeTypes.Style) targetType = parentScope.TargetType; - else if (context.ParentNodes().Skip(1).FirstOrDefault() is XamlIlAstObjectNode directParentNode + else if (context.ParentNodes().Skip(1).FirstOrDefault() is XamlAstObjectNode directParentNode && templatableBaseType.IsAssignableFrom(directParentNode.Type.GetClrType())) targetType = directParentNode.Type; else - targetType = new XamlIlAstClrTypeReference(node, + targetType = new XamlAstClrTypeReference(node, templatableBaseType, false); } @@ -48,9 +48,9 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA } } - class AvaloniaXamlIlTargetTypeMetadataNode : XamlIlValueWithSideEffectNodeBase + class AvaloniaXamlIlTargetTypeMetadataNode : XamlValueWithSideEffectNodeBase { - public IXamlIlAstTypeReference TargetType { get; set; } + public IXamlAstTypeReference TargetType { get; set; } public ScopeTypes ScopeType { get; } public enum ScopeTypes @@ -60,7 +60,7 @@ public enum ScopeTypes Transitions } - public AvaloniaXamlIlTargetTypeMetadataNode(IXamlIlAstValueNode value, IXamlIlAstTypeReference targetType, + public AvaloniaXamlIlTargetTypeMetadataNode(IXamlAstValueNode value, IXamlAstTypeReference targetType, ScopeTypes type) : base(value, value) { diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDesignPropertiesTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDesignPropertiesTransformer.cs index 9cc4c5cf11f..3096be522fd 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDesignPropertiesTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDesignPropertiesTransformer.cs @@ -1,12 +1,12 @@ using System.Collections.Generic; using System.Linq; -using XamlIl; -using XamlIl.Ast; -using XamlIl.Transform; +using XamlX; +using XamlX.Ast; +using XamlX.Transform; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class AvaloniaXamlIlDesignPropertiesTransformer : IXamlIlAstTransformer + class AvaloniaXamlIlDesignPropertiesTransformer : IXamlAstTransformer { public bool IsDesignMode { get; set; } @@ -17,14 +17,14 @@ class AvaloniaXamlIlDesignPropertiesTransformer : IXamlIlAstTransformer }; private const string AvaloniaNs = "https://github.com/avaloniaui"; - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (node is XamlIlAstObjectNode on) + if (node is XamlAstObjectNode on) { for (var c=0; c() + var pn = on.Children.OfType() .FirstOrDefault(p => p.Property.GetClrProperty().Name == "Selector"); if (pn == null) return node; if (pn.Values.Count != 1) - throw new XamlIlParseException("Selector property should should have exactly one value", node); + throw new XamlParseException("Selector property should should have exactly one value", node); if (pn.Values[0] is XamlIlSelectorNode) //Deja vu. I've just been in this place before return node; - if (!(pn.Values[0] is XamlIlAstTextNode tn)) - throw new XamlIlParseException("Selector property should be a text node", node); + if (!(pn.Values[0] is XamlAstTextNode tn)) + throw new XamlParseException("Selector property should be a text node", node); var selectorType = pn.Property.GetClrProperty().Getter.ReturnType; var initialNode = new XamlIlSelectorInitialNode(node, selectorType); XamlIlSelectorNode Create(IEnumerable syntax, - Func typeResolver) + Func typeResolver) { XamlIlSelectorNode result = initialNode; XamlIlOrSelectorNode results = null; @@ -63,18 +67,18 @@ XamlIlSelectorNode Create(IEnumerable syntax, var type = result?.TargetType; if (type == null) - throw new XamlIlParseException("Property selectors must be applied to a type.", node); + throw new XamlParseException("Property selectors must be applied to a type.", node); var targetProperty = type.GetAllProperties().FirstOrDefault(p => p.Name == property.Property); if (targetProperty == null) - throw new XamlIlParseException($"Cannot find '{property.Property}' on '{type}", node); + throw new XamlParseException($"Cannot find '{property.Property}' on '{type}", node); - if (!XamlIlTransformHelpers.TryGetCorrectlyTypedValue(context, - new XamlIlAstTextNode(node, property.Value, context.Configuration.WellKnownTypes.String), + if (!XamlTransformHelpers.TryGetCorrectlyTypedValue(context, + new XamlAstTextNode(node, property.Value, context.Configuration.WellKnownTypes.String), targetProperty.PropertyType, out var typedValue)) - throw new XamlIlParseException( + throw new XamlParseException( $"Cannot convert '{property.Value}' to '{targetProperty.PropertyType.GetFqn()}", node); @@ -100,7 +104,7 @@ XamlIlSelectorNode Create(IEnumerable syntax, result = initialNode; break; default: - throw new XamlIlParseException($"Unsupported selector grammar '{i.GetType()}'.", node); + throw new XamlParseException($"Unsupported selector grammar '{i.GetType()}'.", node); } } @@ -119,15 +123,15 @@ XamlIlSelectorNode Create(IEnumerable syntax, } catch (Exception e) { - throw new XamlIlParseException("Unable to parse selector: " + e.Message, node); + throw new XamlParseException("Unable to parse selector: " + e.Message, node); } var selector = Create(parsed, (p, n) - => XamlIlTypeReferenceResolver.ResolveType(context, $"{p}:{n}", true, node, true)); + => TypeReferenceResolver.ResolveType(context, $"{p}:{n}", true, node, true)); pn.Values[0] = selector; return new AvaloniaXamlIlTargetTypeMetadataNode(on, - new XamlIlAstClrTypeReference(selector, selector.TargetType, false), + new XamlAstClrTypeReference(selector, selector.TargetType, false), AvaloniaXamlIlTargetTypeMetadataNode.ScopeTypes.Style); } @@ -135,32 +139,32 @@ XamlIlSelectorNode Create(IEnumerable syntax, - abstract class XamlIlSelectorNode : XamlIlAstNode, IXamlIlAstValueNode, IXamlIlAstEmitableNode + abstract class XamlIlSelectorNode : XamlAstNode, IXamlAstValueNode, IXamlAstEmitableNode { protected XamlIlSelectorNode Previous { get; } - public abstract IXamlIlType TargetType { get; } + public abstract IXamlType TargetType { get; } public XamlIlSelectorNode(XamlIlSelectorNode previous, - IXamlIlLineInfo info = null, - IXamlIlType selectorType = null) : base(info ?? previous) + IXamlLineInfo info = null, + IXamlType selectorType = null) : base(info ?? previous) { Previous = previous; - Type = selectorType == null ? previous.Type : new XamlIlAstClrTypeReference(this, selectorType, false); + Type = selectorType == null ? previous.Type : new XamlAstClrTypeReference(this, selectorType, false); } - public IXamlIlAstTypeReference Type { get; } + public IXamlAstTypeReference Type { get; } - public virtual XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public virtual XamlILNodeEmitResult Emit(XamlEmitContext context, IXamlILEmitter codeGen) { if (Previous != null) context.Emit(Previous, codeGen, Type.GetClrType()); DoEmit(context, codeGen); - return XamlIlNodeEmitResult.Type(0, Type.GetClrType()); + return XamlILNodeEmitResult.Type(0, Type.GetClrType()); } - protected abstract void DoEmit(XamlIlEmitContext context, IXamlIlEmitter codeGen); + protected abstract void DoEmit(XamlEmitContext context, IXamlILEmitter codeGen); - protected void EmitCall(XamlIlEmitContext context, IXamlIlEmitter codeGen, Func method) + protected void EmitCall(XamlEmitContext context, IXamlILEmitter codeGen, Func method) { var selectors = context.Configuration.TypeSystem.GetType("Avalonia.Styling.Selectors"); var found = selectors.FindMethod(m => m.IsStatic && m.Parameters.Count > 0 && method(m)); @@ -170,27 +174,27 @@ protected void EmitCall(XamlIlEmitContext context, IXamlIlEmitter codeGen, Func< class XamlIlSelectorInitialNode : XamlIlSelectorNode { - public XamlIlSelectorInitialNode(IXamlIlLineInfo info, - IXamlIlType selectorType) : base(null, info, selectorType) + public XamlIlSelectorInitialNode(IXamlLineInfo info, + IXamlType selectorType) : base(null, info, selectorType) { } - public override IXamlIlType TargetType => null; - protected override void DoEmit(XamlIlEmitContext context, IXamlIlEmitter codeGen) => codeGen.Ldnull(); + public override IXamlType TargetType => null; + protected override void DoEmit(XamlEmitContext context, IXamlILEmitter codeGen) => codeGen.Ldnull(); } class XamlIlTypeSelector : XamlIlSelectorNode { public bool Concrete { get; } - public XamlIlTypeSelector(XamlIlSelectorNode previous, IXamlIlType type, bool concrete) : base(previous) + public XamlIlTypeSelector(XamlIlSelectorNode previous, IXamlType type, bool concrete) : base(previous) { TargetType = type; Concrete = concrete; } - public override IXamlIlType TargetType { get; } - protected override void DoEmit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public override IXamlType TargetType { get; } + protected override void DoEmit(XamlEmitContext context, IXamlILEmitter codeGen) { var name = Concrete ? "OfType" : "Is"; codeGen.Ldtype(TargetType); @@ -217,8 +221,8 @@ public XamlIlStringSelector(XamlIlSelectorNode previous, SelectorType type, stri } - public override IXamlIlType TargetType => Previous?.TargetType; - protected override void DoEmit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public override IXamlType TargetType => Previous?.TargetType; + protected override void DoEmit(XamlEmitContext context, IXamlILEmitter codeGen) { codeGen.Ldstr(String); var name = _type.ToString(); @@ -242,8 +246,8 @@ public XamlIlCombinatorSelector(XamlIlSelectorNode previous, SelectorType type) _type = type; } - public override IXamlIlType TargetType => null; - protected override void DoEmit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public override IXamlType TargetType => null; + protected override void DoEmit(XamlEmitContext context, IXamlILEmitter codeGen) { var name = _type.ToString(); EmitCall(context, codeGen, @@ -260,8 +264,8 @@ public XamlIlNotSelector(XamlIlSelectorNode previous, XamlIlSelectorNode argumen Argument = argument; } - public override IXamlIlType TargetType => Previous?.TargetType; - protected override void DoEmit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public override IXamlType TargetType => Previous?.TargetType; + protected override void DoEmit(XamlEmitContext context, IXamlILEmitter codeGen) { context.Emit(Argument, codeGen, Type.GetClrType()); EmitCall(context, codeGen, @@ -272,22 +276,22 @@ protected override void DoEmit(XamlIlEmitContext context, IXamlIlEmitter codeGen class XamlIlPropertyEqualsSelector : XamlIlSelectorNode { public XamlIlPropertyEqualsSelector(XamlIlSelectorNode previous, - IXamlIlProperty property, - IXamlIlAstValueNode value) + IXamlProperty property, + IXamlAstValueNode value) : base(previous) { Property = property; Value = value; } - public IXamlIlProperty Property { get; set; } - public IXamlIlAstValueNode Value { get; set; } + public IXamlProperty Property { get; set; } + public IXamlAstValueNode Value { get; set; } - public override IXamlIlType TargetType => Previous?.TargetType; - protected override void DoEmit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public override IXamlType TargetType => Previous?.TargetType; + protected override void DoEmit(XamlEmitContext context, IXamlILEmitter codeGen) { if (!XamlIlAvaloniaPropertyHelper.Emit(context, codeGen, Property)) - throw new XamlIlLoadException( + throw new XamlLoadException( $"{Property.Name} of {(Property.Setter ?? Property.Getter).DeclaringType.GetFqn()} doesn't seem to be an AvaloniaProperty", this); context.Emit(Value, codeGen, context.Configuration.WellKnownTypes.Object); @@ -302,7 +306,7 @@ protected override void DoEmit(XamlIlEmitContext context, IXamlIlEmitter codeGen class XamlIlOrSelectorNode : XamlIlSelectorNode { List _selectors = new List(); - public XamlIlOrSelectorNode(IXamlIlLineInfo info, IXamlIlType selectorType) : base(null, info, selectorType) + public XamlIlOrSelectorNode(IXamlLineInfo info, IXamlType selectorType) : base(null, info, selectorType) { } @@ -311,11 +315,11 @@ public void Add(XamlIlSelectorNode node) _selectors.Add(node); } - public override IXamlIlType TargetType + public override IXamlType TargetType { get { - IXamlIlType result = null; + IXamlType result = null; foreach (var selector in _selectors) { @@ -340,10 +344,10 @@ public override IXamlIlType TargetType } } - protected override void DoEmit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + protected override void DoEmit(XamlEmitContext context, IXamlILEmitter codeGen) { if (_selectors.Count == 0) - throw new XamlIlLoadException("Invalid selector count", this); + throw new XamlLoadException("Invalid selector count", this); if (_selectors.Count == 1) { _selectors[0].Emit(context, codeGen); diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs index 629e2562d38..ddb394645d5 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs @@ -1,64 +1,68 @@ using System; using System.Collections.Generic; using System.Linq; -using XamlIl; -using XamlIl.Ast; -using XamlIl.Transform; -using XamlIl.Transform.Transformers; -using XamlIl.TypeSystem; +using XamlX; +using XamlX.Ast; +using XamlX.Emit; +using XamlX.IL; +using XamlX.Transform; +using XamlX.Transform.Transformers; +using XamlX.TypeSystem; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class AvaloniaXamlIlSetterTransformer : IXamlIlAstTransformer + using XamlParseException = XamlX.XamlParseException; + using XamlLoadException = XamlX.XamlLoadException; + class AvaloniaXamlIlSetterTransformer : IXamlAstTransformer { - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (!(node is XamlIlAstObjectNode on + if (!(node is XamlAstObjectNode on && on.Type.GetClrType().FullName == "Avalonia.Styling.Setter")) return node; - var parent = context.ParentNodes().OfType() + var parent = context.ParentNodes().OfType() .FirstOrDefault(p => p.Type.GetClrType().FullName == "Avalonia.Styling.Style"); if (parent == null) - throw new XamlIlParseException( + throw new XamlParseException( "Avalonia.Styling.Setter is only valid inside Avalonia.Styling.Style", node); - var selectorProperty = parent.Children.OfType() + var selectorProperty = parent.Children.OfType() .FirstOrDefault(p => p.Property.GetClrProperty().Name == "Selector"); if (selectorProperty == null) - throw new XamlIlParseException( + throw new XamlParseException( "Can not find parent Style Selector", node); var selector = selectorProperty.Values.FirstOrDefault() as XamlIlSelectorNode; if (selector?.TargetType == null) - throw new XamlIlParseException( + throw new XamlParseException( "Can not resolve parent Style Selector type", node); - var property = @on.Children.OfType() + var property = @on.Children.OfType() .FirstOrDefault(x => x.Property.GetClrProperty().Name == "Property"); if (property == null) - throw new XamlIlParseException("Setter without a property is not valid", node); + throw new XamlParseException("Setter without a property is not valid", node); - var propertyName = property.Values.OfType().FirstOrDefault()?.Text; + var propertyName = property.Values.OfType().FirstOrDefault()?.Text; if (propertyName == null) - throw new XamlIlParseException("Setter.Property must be a string", node); + throw new XamlParseException("Setter.Property must be a string", node); var avaloniaPropertyNode = XamlIlAvaloniaPropertyHelper.CreateNode(context, propertyName, - new XamlIlAstClrTypeReference(selector, selector.TargetType, false), property.Values[0]); - property.Values = new List + new XamlAstClrTypeReference(selector, selector.TargetType, false), property.Values[0]); + property.Values = new List { avaloniaPropertyNode }; var valueProperty = on.Children - .OfType().FirstOrDefault(p => p.Property.GetClrProperty().Name == "Value"); - if (valueProperty?.Values?.Count == 1 && valueProperty.Values[0] is XamlIlAstTextNode) + .OfType().FirstOrDefault(p => p.Property.GetClrProperty().Name == "Value"); + if (valueProperty?.Values?.Count == 1 && valueProperty.Values[0] is XamlAstTextNode) { var propType = avaloniaPropertyNode.AvaloniaPropertyType; - if (!XamlIlTransformHelpers.TryGetCorrectlyTypedValue(context, valueProperty.Values[0], + if (!XamlTransformHelpers.TryGetCorrectlyTypedValue(context, valueProperty.Values[0], propType, out var converted)) - throw new XamlIlParseException( + throw new XamlParseException( $"Unable to convert property value to {propType.GetFqn()}", valueProperty.Values[0]); @@ -69,9 +73,9 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA return node; } - class SetterValueProperty : XamlIlAstClrProperty + class SetterValueProperty : XamlAstClrProperty { - public SetterValueProperty(IXamlIlLineInfo line, IXamlIlType setterType, IXamlIlType targetType, + public SetterValueProperty(IXamlLineInfo line, IXamlType setterType, IXamlType targetType, AvaloniaXamlIlWellKnownTypes types) : base(line, "Value", setterType, null) { @@ -82,21 +86,21 @@ public SetterValueProperty(IXamlIlLineInfo line, IXamlIlType setterType, IXamlIl Setters.Add(new XamlIlDirectCallPropertySetter(method, targetType)); } - class XamlIlDirectCallPropertySetter : IXamlIlPropertySetter + class XamlIlDirectCallPropertySetter : IXamlPropertySetter, IXamlEmitablePropertySetter { - private readonly IXamlIlMethod _method; - private readonly IXamlIlType _type; - public IXamlIlType TargetType { get; } + private readonly IXamlMethod _method; + private readonly IXamlType _type; + public IXamlType TargetType { get; } public PropertySetterBinderParameters BinderParameters { get; } = new PropertySetterBinderParameters(); - public IReadOnlyList Parameters { get; } - public void Emit(IXamlIlEmitter codegen) + public IReadOnlyList Parameters { get; } + public void Emit(IXamlILEmitter codegen) { if (_type.IsValueType) codegen.Box(_type); codegen.EmitCall(_method, true); } - public XamlIlDirectCallPropertySetter(IXamlIlMethod method, IXamlIlType type) + public XamlIlDirectCallPropertySetter(IXamlMethod method, IXamlType type) { _method = method; _type = type; diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs index 548f0161d66..8e194e93850 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs @@ -1,20 +1,22 @@ using System.Collections.Generic; using System.Linq; -using XamlIl; -using XamlIl.Ast; -using XamlIl.Transform; -using XamlIl.TypeSystem; +using XamlX; +using XamlX.Ast; +using XamlX.Emit; +using XamlX.IL; +using XamlX.Transform; +using XamlX.TypeSystem; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class AvaloniaXamlIlTransformInstanceAttachedProperties : IXamlIlAstTransformer + class AvaloniaXamlIlTransformInstanceAttachedProperties : IXamlAstTransformer { - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (node is XamlIlAstNamePropertyReference prop - && prop.TargetType is XamlIlAstClrTypeReference targetRef - && prop.DeclaringType is XamlIlAstClrTypeReference declaringRef) + if (node is XamlAstNamePropertyReference prop + && prop.TargetType is XamlAstClrTypeReference targetRef + && prop.DeclaringType is XamlAstClrTypeReference declaringRef) { // Target and declared type aren't assignable but both inherit from AvaloniaObject var avaloniaObject = context.Configuration.TypeSystem.FindType("Avalonia.AvaloniaObject"); @@ -70,21 +72,21 @@ public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlA return node; } - class AvaloniaAttachedInstanceProperty : XamlIlAstClrProperty, IXamlIlAvaloniaProperty + class AvaloniaAttachedInstanceProperty : XamlAstClrProperty, IXamlIlAvaloniaProperty { - private readonly XamlIlTransformerConfiguration _config; - private readonly IXamlIlType _declaringType; - private readonly IXamlIlType _avaloniaPropertyType; - private readonly IXamlIlType _avaloniaObject; - private readonly IXamlIlField _field; - - public AvaloniaAttachedInstanceProperty(XamlIlAstNamePropertyReference prop, - XamlIlTransformerConfiguration config, - IXamlIlType declaringType, - IXamlIlType type, - IXamlIlType avaloniaPropertyType, - IXamlIlType avaloniaObject, - IXamlIlField field) : base(prop, prop.Name, + private readonly TransformerConfiguration _config; + private readonly IXamlType _declaringType; + private readonly IXamlType _avaloniaPropertyType; + private readonly IXamlType _avaloniaObject; + private readonly IXamlField _field; + + public AvaloniaAttachedInstanceProperty(XamlAstNamePropertyReference prop, + TransformerConfiguration config, + IXamlType declaringType, + IXamlType type, + IXamlType avaloniaPropertyType, + IXamlType avaloniaObject, + IXamlField field) : base(prop, prop.Name, declaringType, null) @@ -104,11 +106,11 @@ public AvaloniaAttachedInstanceProperty(XamlIlAstNamePropertyReference prop, Getter = new GetterMethod(this); } - public IXamlIlType PropertyType { get; } + public IXamlType PropertyType { get; } - public IXamlIlField AvaloniaProperty => _field; + public IXamlField AvaloniaProperty => _field; - class SetterMethod : IXamlIlPropertySetter + class SetterMethod : IXamlPropertySetter, IXamlEmitablePropertySetter { private readonly AvaloniaAttachedInstanceProperty _parent; @@ -118,10 +120,10 @@ public SetterMethod(AvaloniaAttachedInstanceProperty parent) Parameters = new[] {_parent._avaloniaObject, _parent.PropertyType}; } - public IXamlIlType TargetType => _parent.DeclaringType; + public IXamlType TargetType => _parent.DeclaringType; public PropertySetterBinderParameters BinderParameters { get; } = new PropertySetterBinderParameters(); - public IReadOnlyList Parameters { get; } - public void Emit(IXamlIlEmitter emitter) + public IReadOnlyList Parameters { get; } + public void Emit(IXamlILEmitter emitter) { var so = _parent._config.WellKnownTypes.Object; var method = _parent._avaloniaObject @@ -133,7 +135,7 @@ public void Emit(IXamlIlEmitter emitter) && m.Parameters[2].IsEnum ); if (method == null) - throw new XamlIlTypeSystemException( + throw new XamlTypeSystemException( "Unable to find SetValue(AvaloniaProperty, object, BindingPriority) on AvaloniaObject"); using (var loc = emitter.LocalsPool.GetLocal(_parent.PropertyType)) emitter @@ -150,7 +152,7 @@ public void Emit(IXamlIlEmitter emitter) } } - class GetterMethod : IXamlIlCustomEmitMethod + class GetterMethod : IXamlCustomEmitMethod { public GetterMethod(AvaloniaAttachedInstanceProperty parent) { @@ -163,16 +165,16 @@ public GetterMethod(AvaloniaAttachedInstanceProperty parent) public bool IsPublic => true; public bool IsStatic => true; public string Name { get; protected set; } - public IXamlIlType DeclaringType { get; } - public IXamlIlMethod MakeGenericMethod(IReadOnlyList typeArguments) + public IXamlType DeclaringType { get; } + public IXamlMethod MakeGenericMethod(IReadOnlyList typeArguments) => throw new System.NotSupportedException(); - public bool Equals(IXamlIlMethod other) => + public bool Equals(IXamlMethod other) => other is GetterMethod m && m.Name == Name && m.DeclaringType.Equals(DeclaringType); - public IXamlIlType ReturnType => Parent.PropertyType; - public IReadOnlyList Parameters { get; } - public void EmitCall(IXamlIlEmitter emitter) + public IXamlType ReturnType => Parent.PropertyType; + public IReadOnlyList Parameters { get; } + public void EmitCall(IXamlILEmitter emitter) { var method = Parent._avaloniaObject .FindMethod(m => m.IsPublic && !m.IsStatic && m.Name == "GetValue" @@ -180,7 +182,7 @@ public void EmitCall(IXamlIlEmitter emitter) m.Parameters.Count == 1 && m.Parameters[0].Equals(Parent._avaloniaPropertyType)); if (method == null) - throw new XamlIlTypeSystemException( + throw new XamlTypeSystemException( "Unable to find T GetValue(AvaloniaProperty) on AvaloniaObject"); emitter .Ldsfld(Parent._field) diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransitionsTypeMetadataTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransitionsTypeMetadataTransformer.cs index c4136f48249..4be2fc6f609 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransitionsTypeMetadataTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransitionsTypeMetadataTransformer.cs @@ -1,17 +1,17 @@ -using XamlIl.Ast; -using XamlIl.Transform; +using XamlX.Ast; +using XamlX.Transform; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class AvaloniaXamlIlTransitionsTypeMetadataTransformer : IXamlIlAstTransformer + class AvaloniaXamlIlTransitionsTypeMetadataTransformer : IXamlAstTransformer { - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (node is XamlIlAstObjectNode on) + if (node is XamlAstObjectNode on) { foreach (var ch in on.Children) { - if (ch is XamlIlAstXamlPropertyValueNode pn + if (ch is XamlAstXamlPropertyValueNode pn && pn.Property.GetClrProperty().Getter?.ReturnType.Equals(context.GetAvaloniaTypes().Transitions) == true) { for (var c = 0; c < pn.Values.Count; c++) diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs index 1efae902c6e..366ef9de109 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs @@ -1,52 +1,54 @@ -using XamlIl.Transform; -using XamlIl.TypeSystem; +using XamlX.Emit; +using XamlX.IL; +using XamlX.Transform; +using XamlX.TypeSystem; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { class AvaloniaXamlIlWellKnownTypes { - public IXamlIlType AvaloniaObject { get; } - public IXamlIlType IAvaloniaObject { get; } - public IXamlIlType BindingPriority { get; } - public IXamlIlType AvaloniaObjectExtensions { get; } - public IXamlIlType AvaloniaProperty { get; } - public IXamlIlType AvaloniaPropertyT { get; } - public IXamlIlType IBinding { get; } - public IXamlIlMethod AvaloniaObjectBindMethod { get; } - public IXamlIlMethod AvaloniaObjectSetValueMethod { get; } - public IXamlIlType IDisposable { get; } - public XamlIlTypeWellKnownTypes XamlIlTypes { get; } - public XamlIlLanguageTypeMappings XamlIlMappings { get; } - public IXamlIlType Transitions { get; } - public IXamlIlType AssignBindingAttribute { get; } - public IXamlIlType UnsetValueType { get; } - public IXamlIlType StyledElement { get; } - public IXamlIlType NameScope { get; } - public IXamlIlMethod NameScopeSetNameScope { get; } - public IXamlIlType INameScope { get; } - public IXamlIlMethod INameScopeRegister { get; } - public IXamlIlMethod INameScopeComplete { get; } + public IXamlType AvaloniaObject { get; } + public IXamlType IAvaloniaObject { get; } + public IXamlType BindingPriority { get; } + public IXamlType AvaloniaObjectExtensions { get; } + public IXamlType AvaloniaProperty { get; } + public IXamlType AvaloniaPropertyT { get; } + public IXamlType IBinding { get; } + public IXamlMethod AvaloniaObjectBindMethod { get; } + public IXamlMethod AvaloniaObjectSetValueMethod { get; } + public IXamlType IDisposable { get; } + public XamlTypeWellKnownTypes XamlIlTypes { get; } + public XamlLanguageTypeMappings XamlIlMappings { get; } + public IXamlType Transitions { get; } + public IXamlType AssignBindingAttribute { get; } + public IXamlType UnsetValueType { get; } + public IXamlType StyledElement { get; } + public IXamlType NameScope { get; } + public IXamlMethod NameScopeSetNameScope { get; } + public IXamlType INameScope { get; } + public IXamlMethod INameScopeRegister { get; } + public IXamlMethod INameScopeComplete { get; } - public AvaloniaXamlIlWellKnownTypes(XamlIlAstTransformationContext ctx) + public AvaloniaXamlIlWellKnownTypes(TransformerConfiguration config) { - XamlIlTypes = ctx.Configuration.WellKnownTypes; - XamlIlMappings = ctx.Configuration.TypeMappings; - AvaloniaObject = ctx.Configuration.TypeSystem.GetType("Avalonia.AvaloniaObject"); - IAvaloniaObject = ctx.Configuration.TypeSystem.GetType("Avalonia.IAvaloniaObject"); - AvaloniaObjectExtensions = ctx.Configuration.TypeSystem.GetType("Avalonia.AvaloniaObjectExtensions"); - AvaloniaProperty = ctx.Configuration.TypeSystem.GetType("Avalonia.AvaloniaProperty"); - AvaloniaPropertyT = ctx.Configuration.TypeSystem.GetType("Avalonia.AvaloniaProperty`1"); - BindingPriority = ctx.Configuration.TypeSystem.GetType("Avalonia.Data.BindingPriority"); - IBinding = ctx.Configuration.TypeSystem.GetType("Avalonia.Data.IBinding"); - IDisposable = ctx.Configuration.TypeSystem.GetType("System.IDisposable"); - Transitions = ctx.Configuration.TypeSystem.GetType("Avalonia.Animation.Transitions"); - AssignBindingAttribute = ctx.Configuration.TypeSystem.GetType("Avalonia.Data.AssignBindingAttribute"); + XamlIlTypes = config.WellKnownTypes; + XamlIlMappings = config.TypeMappings; + AvaloniaObject = config.TypeSystem.GetType("Avalonia.AvaloniaObject"); + IAvaloniaObject = config.TypeSystem.GetType("Avalonia.IAvaloniaObject"); + AvaloniaObjectExtensions = config.TypeSystem.GetType("Avalonia.AvaloniaObjectExtensions"); + AvaloniaProperty = config.TypeSystem.GetType("Avalonia.AvaloniaProperty"); + AvaloniaPropertyT = config.TypeSystem.GetType("Avalonia.AvaloniaProperty`1"); + BindingPriority = config.TypeSystem.GetType("Avalonia.Data.BindingPriority"); + IBinding = config.TypeSystem.GetType("Avalonia.Data.IBinding"); + IDisposable = config.TypeSystem.GetType("System.IDisposable"); + Transitions = config.TypeSystem.GetType("Avalonia.Animation.Transitions"); + AssignBindingAttribute = config.TypeSystem.GetType("Avalonia.Data.AssignBindingAttribute"); AvaloniaObjectBindMethod = AvaloniaObjectExtensions.FindMethod("Bind", IDisposable, false, IAvaloniaObject, AvaloniaProperty, - IBinding, ctx.Configuration.WellKnownTypes.Object); - UnsetValueType = ctx.Configuration.TypeSystem.GetType("Avalonia.UnsetValueType"); - StyledElement = ctx.Configuration.TypeSystem.GetType("Avalonia.StyledElement"); - INameScope = ctx.Configuration.TypeSystem.GetType("Avalonia.Controls.INameScope"); + IBinding, config.WellKnownTypes.Object); + UnsetValueType = config.TypeSystem.GetType("Avalonia.UnsetValueType"); + StyledElement = config.TypeSystem.GetType("Avalonia.StyledElement"); + INameScope = config.TypeSystem.GetType("Avalonia.Controls.INameScope"); INameScopeRegister = INameScope.GetMethod( new FindMethodMethodSignature("Register", XamlIlTypes.Void, XamlIlTypes.String, XamlIlTypes.Object) @@ -58,7 +60,7 @@ public AvaloniaXamlIlWellKnownTypes(XamlIlAstTransformationContext ctx) { IsStatic = false, DeclaringOnly = true, IsExactMatch = true }); - NameScope = ctx.Configuration.TypeSystem.GetType("Avalonia.Controls.NameScope"); + NameScope = config.TypeSystem.GetType("Avalonia.Controls.NameScope"); NameScopeSetNameScope = NameScope.GetMethod(new FindMethodMethodSignature("SetNameScope", XamlIlTypes.Void, StyledElement, INameScope) {IsStatic = true}); @@ -70,11 +72,19 @@ public AvaloniaXamlIlWellKnownTypes(XamlIlAstTransformationContext ctx) static class AvaloniaXamlIlWellKnownTypesExtensions { - public static AvaloniaXamlIlWellKnownTypes GetAvaloniaTypes(this XamlIlAstTransformationContext ctx) + public static AvaloniaXamlIlWellKnownTypes GetAvaloniaTypes(this AstTransformationContext ctx) { if (ctx.TryGetItem(out var rv)) return rv; - ctx.SetItem(rv = new AvaloniaXamlIlWellKnownTypes(ctx)); + ctx.SetItem(rv = new AvaloniaXamlIlWellKnownTypes(ctx.Configuration)); + return rv; + } + + public static AvaloniaXamlIlWellKnownTypes GetAvaloniaTypes(this XamlEmitContext ctx) + { + if (ctx.TryGetItem(out var rv)) + return rv; + ctx.SetItem(rv = new AvaloniaXamlIlWellKnownTypes(ctx.Configuration)); return rv; } } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/IgnoredDirectivesTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/IgnoredDirectivesTransformer.cs index a79a4977efe..1f2508715e0 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/IgnoredDirectivesTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/IgnoredDirectivesTransformer.cs @@ -1,17 +1,17 @@ using System.Linq; -using XamlIl; -using XamlIl.Ast; -using XamlIl.Transform; +using XamlX; +using XamlX.Ast; +using XamlX.Transform; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class IgnoredDirectivesTransformer : IXamlIlAstTransformer + class IgnoredDirectivesTransformer : IXamlAstTransformer { - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (node is XamlIlAstObjectNode no) + if (node is XamlAstObjectNode no) { - foreach (var d in no.Children.OfType().ToList()) + foreach (var d in no.Children.OfType().ToList()) { if (d.Namespace == XamlNamespaces.Xaml2006) { diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/XNameTransformer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/XNameTransformer.cs index dd64ab542af..f4eb7cf5f92 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/XNameTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/XNameTransformer.cs @@ -1,30 +1,29 @@ -using XamlIl; -using XamlIl.Ast; -using XamlIl.Transform; +using XamlX; +using XamlX.Ast; +using XamlX.Transform; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { - class XNameTransformer : IXamlIlAstTransformer + class XNameTransformer : IXamlAstTransformer { - /// /// Converts x:Name directives to regular Name assignments /// /// - public IXamlIlAstNode Transform(XamlIlAstTransformationContext context, IXamlIlAstNode node) + public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (node is XamlIlAstObjectNode on) + if (node is XamlAstObjectNode on) { for (var c =0; c< on.Children.Count;c++) { var ch = on.Children[c]; - if (ch is XamlIlAstXmlDirective d + if (ch is XamlAstXmlDirective d && d.Namespace == XamlNamespaces.Xaml2006 && d.Name == "Name") - on.Children[c] = new XamlIlAstXamlPropertyValueNode(d, - new XamlIlAstNamePropertyReference(d, on.Type, "Name", on.Type), + on.Children[c] = new XamlAstXamlPropertyValueNode(d, + new XamlAstNamePropertyReference(d, on.Type, "Name", on.Type), d.Values); } } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs index 6fc83cb5a5f..a3a484d7f19 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs @@ -5,17 +5,22 @@ using Avalonia.Markup.Xaml.Parsers; using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers; using Avalonia.Utilities; -using XamlIl; -using XamlIl.Ast; -using XamlIl.Transform; -using XamlIl.Transform.Transformers; -using XamlIl.TypeSystem; +using XamlX; +using XamlX.Ast; +using XamlX.Transform; +using XamlX.Transform.Transformers; +using XamlX.TypeSystem; +using XamlX.Emit; +using XamlX.IL; + +using XamlIlEmitContext = XamlX.Emit.XamlEmitContext; +using IXamlIlAstEmitableNode = XamlX.Emit.IXamlAstEmitableNode; namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions { class XamlIlAvaloniaPropertyHelper { - public static bool Emit(XamlIlEmitContext context, IXamlIlEmitter emitter, XamlIlAstClrProperty property) + public static bool Emit(XamlIlEmitContext context, IXamlILEmitter emitter, XamlAstClrProperty property) { if (property is IXamlIlAvaloniaProperty ap) { @@ -32,7 +37,7 @@ public static bool Emit(XamlIlEmitContext context, IXamlIlEmitter emitter, XamlI return true; } - public static bool Emit(XamlIlEmitContext context, IXamlIlEmitter emitter, IXamlIlProperty property) + public static bool Emit(XamlIlEmitContext context, IXamlILEmitter emitter, IXamlProperty property) { var type = (property.Getter ?? property.Setter).DeclaringType; var name = property.Name + "Property"; @@ -44,16 +49,16 @@ public static bool Emit(XamlIlEmitContext context, IXamlIlEmitter emitter, IXaml return true; } - public static IXamlIlAvaloniaPropertyNode CreateNode(XamlIlAstTransformationContext context, - string propertyName, IXamlIlAstTypeReference selectorTypeReference, IXamlIlLineInfo lineInfo) + public static IXamlIlAvaloniaPropertyNode CreateNode(AstTransformationContext context, + string propertyName, IXamlAstTypeReference selectorTypeReference, IXamlLineInfo lineInfo) { - XamlIlAstNamePropertyReference forgedReference; + XamlAstNamePropertyReference forgedReference; var parser = new PropertyParser(); var parsedPropertyName = parser.Parse(new CharacterReader(propertyName.AsSpan())); if(parsedPropertyName.owner == null) - forgedReference = new XamlIlAstNamePropertyReference(lineInfo, selectorTypeReference, + forgedReference = new XamlAstNamePropertyReference(lineInfo, selectorTypeReference, propertyName, selectorTypeReference); else { @@ -62,19 +67,19 @@ public static IXamlIlAvaloniaPropertyNode CreateNode(XamlIlAstTransformationCont xmlOwner += ":"; xmlOwner += parsedPropertyName.owner; - var tref = XamlIlTypeReferenceResolver.ResolveType(context, xmlOwner, false, lineInfo, true); + var tref = TypeReferenceResolver.ResolveType(context, xmlOwner, false, lineInfo, true); var propertyFieldName = parsedPropertyName.name + "Property"; var found = tref.Type.GetAllFields() .FirstOrDefault(f => f.IsStatic && f.IsPublic && f.Name == propertyFieldName); if (found == null) - throw new XamlIlParseException( + throw new XamlX.XamlParseException( $"Unable to find {propertyFieldName} field on type {tref.Type.GetFullName()}", lineInfo); return new XamlIlAvaloniaPropertyFieldNode(context.GetAvaloniaTypes(), lineInfo, found); } var clrProperty = - ((XamlIlAstClrProperty)new XamlIlPropertyReferenceResolver().Transform(context, + ((XamlAstClrProperty)new PropertyReferenceResolver().Transform(context, forgedReference)); return new XamlIlAvaloniaPropertyNode(lineInfo, context.Configuration.TypeSystem.GetType("Avalonia.AvaloniaProperty"), @@ -82,40 +87,40 @@ public static IXamlIlAvaloniaPropertyNode CreateNode(XamlIlAstTransformationCont } } - interface IXamlIlAvaloniaPropertyNode : IXamlIlAstValueNode + interface IXamlIlAvaloniaPropertyNode : IXamlAstValueNode { - IXamlIlType AvaloniaPropertyType { get; } + IXamlType AvaloniaPropertyType { get; } } - class XamlIlAvaloniaPropertyNode : XamlIlAstNode, IXamlIlAstValueNode, IXamlIlAstEmitableNode, IXamlIlAvaloniaPropertyNode + class XamlIlAvaloniaPropertyNode : XamlAstNode, IXamlAstValueNode, IXamlIlAstEmitableNode, IXamlIlAvaloniaPropertyNode { - public XamlIlAvaloniaPropertyNode(IXamlIlLineInfo lineInfo, IXamlIlType type, XamlIlAstClrProperty property) : base(lineInfo) + public XamlIlAvaloniaPropertyNode(IXamlLineInfo lineInfo, IXamlType type, XamlAstClrProperty property) : base(lineInfo) { - Type = new XamlIlAstClrTypeReference(this, type, false); + Type = new XamlAstClrTypeReference(this, type, false); Property = property; AvaloniaPropertyType = Property.Getter?.ReturnType ?? Property.Setters.First().Parameters[0]; } - public XamlIlAstClrProperty Property { get; } + public XamlAstClrProperty Property { get; } - public IXamlIlAstTypeReference Type { get; } - public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public IXamlAstTypeReference Type { get; } + public XamlILNodeEmitResult Emit(XamlIlEmitContext context, IXamlILEmitter codeGen) { if (!XamlIlAvaloniaPropertyHelper.Emit(context, codeGen, Property)) - throw new XamlIlLoadException(Property.Name + " is not an AvaloniaProperty", this); - return XamlIlNodeEmitResult.Type(0, Type.GetClrType()); + throw new XamlX.XamlLoadException(Property.Name + " is not an AvaloniaProperty", this); + return XamlILNodeEmitResult.Type(0, Type.GetClrType()); } - public IXamlIlType AvaloniaPropertyType { get; } + public IXamlType AvaloniaPropertyType { get; } } - class XamlIlAvaloniaPropertyFieldNode : XamlIlAstNode, IXamlIlAstValueNode, IXamlIlAstEmitableNode, IXamlIlAvaloniaPropertyNode + class XamlIlAvaloniaPropertyFieldNode : XamlAstNode, IXamlAstValueNode, IXamlIlAstEmitableNode, IXamlIlAvaloniaPropertyNode { - private readonly IXamlIlField _field; + private readonly IXamlField _field; public XamlIlAvaloniaPropertyFieldNode(AvaloniaXamlIlWellKnownTypes types, - IXamlIlLineInfo lineInfo, IXamlIlField field) : base(lineInfo) + IXamlLineInfo lineInfo, IXamlField field) : base(lineInfo) { _field = field; var avaloniaPropertyType = field.FieldType; @@ -130,7 +135,7 @@ public XamlIlAvaloniaPropertyFieldNode(AvaloniaXamlIlWellKnownTypes types, avaloniaPropertyType = avaloniaPropertyType.BaseType; } - throw new XamlIlParseException( + throw new XamlX.XamlParseException( $"{field.Name}'s type {field.FieldType} doesn't inherit from AvaloniaProperty, make sure to use typed properties", lineInfo); @@ -138,25 +143,25 @@ public XamlIlAvaloniaPropertyFieldNode(AvaloniaXamlIlWellKnownTypes types, - public IXamlIlAstTypeReference Type => new XamlIlAstClrTypeReference(this, _field.FieldType, false); - public XamlIlNodeEmitResult Emit(XamlIlEmitContext context, IXamlIlEmitter codeGen) + public IXamlAstTypeReference Type => new XamlAstClrTypeReference(this, _field.FieldType, false); + public XamlILNodeEmitResult Emit(XamlIlEmitContext context, IXamlILEmitter codeGen) { codeGen.Ldsfld(_field); - return XamlIlNodeEmitResult.Type(0, _field.FieldType); + return XamlILNodeEmitResult.Type(0, _field.FieldType); } - public IXamlIlType AvaloniaPropertyType { get; } + public IXamlType AvaloniaPropertyType { get; } } interface IXamlIlAvaloniaProperty { - IXamlIlField AvaloniaProperty { get; } + IXamlField AvaloniaProperty { get; } } - class XamlIlAvaloniaProperty : XamlIlAstClrProperty, IXamlIlAvaloniaProperty + class XamlIlAvaloniaProperty : XamlAstClrProperty, IXamlIlAvaloniaProperty { - public IXamlIlField AvaloniaProperty { get; } - public XamlIlAvaloniaProperty(XamlIlAstClrProperty original, IXamlIlField field, + public IXamlField AvaloniaProperty { get; } + public XamlIlAvaloniaProperty(XamlAstClrProperty original, IXamlField field, AvaloniaXamlIlWellKnownTypes types) :base(original, original.Name, original.DeclaringType, original.Getter, original.Setters) { @@ -168,41 +173,41 @@ public XamlIlAvaloniaProperty(XamlIlAstClrProperty original, IXamlIlField field, Setters.Insert(0, new UnsetValueSetter(types, original.DeclaringType, field)); } - abstract class AvaloniaPropertyCustomSetter : IXamlIlPropertySetter + abstract class AvaloniaPropertyCustomSetter : IXamlPropertySetter, IXamlEmitablePropertySetter { protected AvaloniaXamlIlWellKnownTypes Types; - protected IXamlIlField AvaloniaProperty; + protected IXamlField AvaloniaProperty; public AvaloniaPropertyCustomSetter(AvaloniaXamlIlWellKnownTypes types, - IXamlIlType declaringType, - IXamlIlField avaloniaProperty) + IXamlType declaringType, + IXamlField avaloniaProperty) { Types = types; AvaloniaProperty = avaloniaProperty; TargetType = declaringType; } - public IXamlIlType TargetType { get; } + public IXamlType TargetType { get; } public PropertySetterBinderParameters BinderParameters { get; } = new PropertySetterBinderParameters { AllowXNull = false }; - public IReadOnlyList Parameters { get; set; } - public abstract void Emit(IXamlIlEmitter codegen); + public IReadOnlyList Parameters { get; set; } + public abstract void Emit(IXamlILEmitter codegen); } class BindingSetter : AvaloniaPropertyCustomSetter { public BindingSetter(AvaloniaXamlIlWellKnownTypes types, - IXamlIlType declaringType, - IXamlIlField avaloniaProperty) : base(types, declaringType, avaloniaProperty) + IXamlType declaringType, + IXamlField avaloniaProperty) : base(types, declaringType, avaloniaProperty) { Parameters = new[] {types.IBinding}; } - public override void Emit(IXamlIlEmitter emitter) + public override void Emit(IXamlILEmitter emitter) { using (var bloc = emitter.LocalsPool.GetLocal(Types.IBinding)) emitter @@ -217,13 +222,13 @@ public override void Emit(IXamlIlEmitter emitter) class UnsetValueSetter : AvaloniaPropertyCustomSetter { - public UnsetValueSetter(AvaloniaXamlIlWellKnownTypes types, IXamlIlType declaringType, IXamlIlField avaloniaProperty) + public UnsetValueSetter(AvaloniaXamlIlWellKnownTypes types, IXamlType declaringType, IXamlField avaloniaProperty) : base(types, declaringType, avaloniaProperty) { Parameters = new[] {types.UnsetValueType}; } - public override void Emit(IXamlIlEmitter codegen) + public override void Emit(IXamlILEmitter codegen) { var unsetValue = Types.AvaloniaProperty.Fields.First(f => f.Name == "UnsetValue"); codegen diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github b/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github index 06816224547..32702e32fab 160000 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github @@ -1 +1 @@ -Subproject commit 068162245473ec39ee36da12150e928072b96403 +Subproject commit 32702e32fabf2ddda28a740d8e17937678d57344 From e99a38cd02cab2203835e125b0c8296d7a471774 Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Tue, 30 Jun 2020 13:54:29 +0200 Subject: [PATCH 171/354] Remove redundant classes --- Avalonia.sln | 8 ++++---- .../Media/TextFormatting/TextEndOfSegment.cs | 17 ----------------- .../Media/TextFormatting/TextHidden.cs | 9 --------- .../Media/TextFormatting/TextModifier.cs | 19 ------------------- 4 files changed, 4 insertions(+), 49 deletions(-) delete mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextEndOfSegment.cs delete mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextHidden.cs delete mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextModifier.cs diff --git a/Avalonia.sln b/Avalonia.sln index 3a2c619d5b8..f6dc039c2f0 100644 --- a/Avalonia.sln +++ b/Avalonia.sln @@ -201,9 +201,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Dialogs", "src\Ava EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.FreeDesktop", "src\Avalonia.FreeDesktop\Avalonia.FreeDesktop.csproj", "{4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Controls.DataGrid.UnitTests", "tests\Avalonia.Controls.DataGrid.UnitTests\Avalonia.Controls.DataGrid.UnitTests.csproj", "{351337F5-D66F-461B-A957-4EF60BDB4BA6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Controls.DataGrid.UnitTests", "tests\Avalonia.Controls.DataGrid.UnitTests\Avalonia.Controls.DataGrid.UnitTests.csproj", "{351337F5-D66F-461B-A957-4EF60BDB4BA6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NativeEmbedSample", "samples\interop\NativeEmbedSample\NativeEmbedSample.csproj", "{3C84E04B-36CF-4D0D-B965-C26DD649D1F3}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NativeEmbedSample", "samples\interop\NativeEmbedSample\NativeEmbedSample.csproj", "{3C84E04B-36CF-4D0D-B965-C26DD649D1F3}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Themes.Fluent", "src\Avalonia.Themes.Fluent\Avalonia.Themes.Fluent.csproj", "{C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}" EndProject @@ -211,8 +211,8 @@ Global GlobalSection(SharedMSBuildProjectFiles) = preSolution src\Shared\RenderHelpers\RenderHelpers.projitems*{3c4c0cb4-0c0f-4450-a37b-148c84ff905f}*SharedItemsImports = 13 src\Shared\RenderHelpers\RenderHelpers.projitems*{3e908f67-5543-4879-a1dc-08eace79b3cd}*SharedItemsImports = 5 - src\Shared\PlatformSupport\PlatformSupport.projitems*{4488ad85-1495-4809-9aa4-ddfe0a48527e}*SharedItemsImports = 4 - src\Shared\PlatformSupport\PlatformSupport.projitems*{7b92af71-6287-4693-9dcb-bd5b6e927e23}*SharedItemsImports = 4 + src\Shared\PlatformSupport\PlatformSupport.projitems*{4488ad85-1495-4809-9aa4-ddfe0a48527e}*SharedItemsImports = 5 + src\Shared\PlatformSupport\PlatformSupport.projitems*{7b92af71-6287-4693-9dcb-bd5b6e927e23}*SharedItemsImports = 5 src\Shared\RenderHelpers\RenderHelpers.projitems*{7d2d3083-71dd-4cc9-8907-39a0d86fb322}*SharedItemsImports = 5 src\Shared\PlatformSupport\PlatformSupport.projitems*{88060192-33d5-4932-b0f9-8bd2763e857d}*SharedItemsImports = 5 src\Shared\PlatformSupport\PlatformSupport.projitems*{e4d9629c-f168-4224-3f51-a5e482ffbc42}*SharedItemsImports = 13 diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextEndOfSegment.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextEndOfSegment.cs deleted file mode 100644 index 306fa288ee7..00000000000 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextEndOfSegment.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Avalonia.Media.TextFormatting -{ - /// - /// Specialized text run used to mark the end of a segment, i.e., to end - /// the scope affected by a preceding TextModifier run. - /// - public class TextEndOfSegment : TextRun - { - public TextEndOfSegment(int textSourceLength) - { - TextSourceLength = textSourceLength; - } - - /// - public override int TextSourceLength { get; } - } -} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextHidden.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextHidden.cs deleted file mode 100644 index 83c5a640eb0..00000000000 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextHidden.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Avalonia.Media.TextFormatting -{ - /// - /// Specialized text run used to mark a range of hidden characters - /// - public class TextHidden : TextRun - { - } -} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextModifier.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextModifier.cs deleted file mode 100644 index 06e93aaa8b5..00000000000 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextModifier.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace Avalonia.Media.TextFormatting -{ - /// - /// Specialized text run used to modify properties of text runs in its scope. - /// The scope extends to the next matching EndOfSegment text run (matching - /// because text modifiers may be nested), or to the next EndOfParagraph. - /// - public abstract class TextModifier : TextRun - { - /// - /// Modifies the properties of a text run. - /// - /// Properties of a text run or the return value of - /// ModifyProperties for a nested text modifier. - /// Returns the actual text run properties to be used for formatting, - /// subject to further modification by text modifiers at outer scopes. - public abstract TextRunProperties ModifyProperties(TextRunProperties properties); - } -} From a08f00d78fb22ea78905b703aefb1d02e3bb7124 Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Tue, 30 Jun 2020 20:21:18 -0400 Subject: [PATCH 172/354] Update ComboBox selected and focus styles --- src/Avalonia.Themes.Fluent/ComboBox.xaml | 191 +++++++++++-------- src/Avalonia.Themes.Fluent/ComboBoxItem.xaml | 70 +++++-- 2 files changed, 161 insertions(+), 100 deletions(-) diff --git a/src/Avalonia.Themes.Fluent/ComboBox.xaml b/src/Avalonia.Themes.Fluent/ComboBox.xaml index 1fc657c1a32..8cac89f156d 100644 --- a/src/Avalonia.Themes.Fluent/ComboBox.xaml +++ b/src/Avalonia.Themes.Fluent/ComboBox.xaml @@ -1,4 +1,5 @@ - + @@ -25,6 +26,7 @@ - + + + - + - + - + - - + + + + - + - + + - + + diff --git a/src/Avalonia.Themes.Fluent/ComboBoxItem.xaml b/src/Avalonia.Themes.Fluent/ComboBoxItem.xaml index c26dec3d34b..66ccea99b52 100644 --- a/src/Avalonia.Themes.Fluent/ComboBoxItem.xaml +++ b/src/Avalonia.Themes.Fluent/ComboBoxItem.xaml @@ -1,17 +1,19 @@ - - + + Item 1 - Item 2 - - - - Item 1 - Item 2 - - + Item 2 long + Item 3 + Item 4 + + @@ -19,12 +21,11 @@ - - + Padding="{TemplateBinding Padding}" /> + + + + + + + + - + - From 82bd3564a5de5db3f02a72d14d1679b42f482fc3 Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Tue, 30 Jun 2020 22:53:11 -0400 Subject: [PATCH 173/354] ComboBox: add focusvisual pseudoclass to replace focus adorner --- src/Avalonia.Controls/ComboBox.cs | 15 +++++++++++++++ src/Avalonia.Themes.Fluent/ComboBox.xaml | 8 ++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Controls/ComboBox.cs b/src/Avalonia.Controls/ComboBox.cs index 6557346b1fb..5fdc19ed052 100644 --- a/src/Avalonia.Controls/ComboBox.cs +++ b/src/Avalonia.Controls/ComboBox.cs @@ -262,6 +262,21 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e) _popup.Closed += PopupClosed; } + protected override void OnGotFocus(GotFocusEventArgs e) + { + if (e.NavigationMethod == NavigationMethod.Tab + || e.NavigationMethod == NavigationMethod.Directional) + { + PseudoClasses.Set(":focusvisual", true); + } + } + + protected override void OnLostFocus(RoutedEventArgs e) + { + base.OnLostFocus(e); + PseudoClasses.Set(":focusvisual", false); + } + /// /// Called when the ComboBox popup is closed, with the /// that caused the popup to close. diff --git a/src/Avalonia.Themes.Fluent/ComboBox.xaml b/src/Avalonia.Themes.Fluent/ComboBox.xaml index 8cac89f156d..7ece0045302 100644 --- a/src/Avalonia.Themes.Fluent/ComboBox.xaml +++ b/src/Avalonia.Themes.Fluent/ComboBox.xaml @@ -191,20 +191,20 @@ - - - - From 5ed9f0f42038e5f1e786afb12ce811b20c2c2682 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 1 Jul 2020 15:09:06 -0300 Subject: [PATCH 174/354] fix some nits --- src/Avalonia.Controls/Window.cs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 14b25682225..3b36cad649c 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -72,8 +72,9 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot { private readonly List<(Window child, bool isDialog)> _children = new List<(Window, bool)>(); private TitleBar _managedTitleBar; - private bool _isExtendedIntoWindowDecorations; + private Thickness _windowDecorationMargins; + private Thickness _offScreenMargin; /// /// Defines the property. @@ -318,17 +319,13 @@ public bool IsExtendedIntoWindowDecorations { get => _isExtendedIntoWindowDecorations; private set => SetAndRaise(IsExtendedIntoWindowDecorationsProperty, ref _isExtendedIntoWindowDecorations, value); - } - - private Thickness _windowDecorationMargins; + } public Thickness WindowDecorationMargins { get => _windowDecorationMargins; private set => SetAndRaise(WindowDecorationMarginsProperty, ref _windowDecorationMargins, value); - } - - private Thickness _offScreenMargin; + } public Thickness OffScreenMargin { @@ -542,7 +539,7 @@ protected virtual void ExtendClientAreaToDecorationsChanged(bool isExtended) OffScreenMargin = PlatformImpl.OffScreenMargin; - if(PlatformImpl.NeedsManagedDecorations) + if (PlatformImpl.NeedsManagedDecorations) { if (_managedTitleBar == null) { From 9f64463060bb6a6214b48faffcda5f86f88de0e4 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 1 Jul 2020 15:17:10 -0300 Subject: [PATCH 175/354] fix nits. --- .../Chrome/CaptionButtons.cs | 10 ++-- src/Avalonia.Controls/Chrome/TitleBar.cs | 32 +++++----- src/Avalonia.Controls/Platform/IWindowImpl.cs | 60 +++++++++---------- 3 files changed, 51 insertions(+), 51 deletions(-) diff --git a/src/Avalonia.Controls/Chrome/CaptionButtons.cs b/src/Avalonia.Controls/Chrome/CaptionButtons.cs index 58f5b09c0d5..cc49b8b6431 100644 --- a/src/Avalonia.Controls/Chrome/CaptionButtons.cs +++ b/src/Avalonia.Controls/Chrome/CaptionButtons.cs @@ -38,7 +38,7 @@ public void Detach() { var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - layer.Children.Remove(this); + layer?.Children.Remove(this); _disposables.Dispose(); _disposables = null; @@ -49,10 +49,10 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); - var closeButton = e.NameScope.Find("PART_CloseButton"); - var restoreButton = e.NameScope.Find("PART_RestoreButton"); - var minimiseButton = e.NameScope.Find("PART_MinimiseButton"); - var fullScreenButton = e.NameScope.Find("PART_FullScreenButton"); + var closeButton = e.NameScope.Get("PART_CloseButton"); + var restoreButton = e.NameScope.Get("PART_RestoreButton"); + var minimiseButton = e.NameScope.Get("PART_MinimiseButton"); + var fullScreenButton = e.NameScope.Get("PART_FullScreenButton"); closeButton.PointerReleased += (sender, e) => _hostWindow.Close(); restoreButton.PointerReleased += (sender, e) => _hostWindow.WindowState = _hostWindow.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index 8e8010d3d4d..70ab172cc63 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -26,36 +26,36 @@ public void Attach() { var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - layer.Children.Add(this); + layer?.Children.Add(this); _disposables = new CompositeDisposable { _hostWindow.GetObservable(Window.WindowDecorationMarginsProperty) - .Subscribe(x => InvalidateSize()), + .Subscribe(x => UpdateSize()), _hostWindow.GetObservable(Window.ExtendClientAreaTitleBarHeightHintProperty) - .Subscribe(x => InvalidateSize()), + .Subscribe(x => UpdateSize()), _hostWindow.GetObservable(Window.OffScreenMarginProperty) - .Subscribe(x => InvalidateSize()), + .Subscribe(x => UpdateSize()), _hostWindow.GetObservable(Window.WindowStateProperty) - .Subscribe(x => - { - PseudoClasses.Set(":minimized", x == WindowState.Minimized); - PseudoClasses.Set(":normal", x == WindowState.Normal); - PseudoClasses.Set(":maximized", x == WindowState.Maximized); - PseudoClasses.Set(":fullscreen", x == WindowState.FullScreen); - }) + .Subscribe(x => + { + PseudoClasses.Set(":minimized", x == WindowState.Minimized); + PseudoClasses.Set(":normal", x == WindowState.Normal); + PseudoClasses.Set(":maximized", x == WindowState.Maximized); + PseudoClasses.Set(":fullscreen", x == WindowState.FullScreen); + }) }; _captionButtons?.Attach(_hostWindow); - InvalidateSize(); + UpdateSize(); } } - void InvalidateSize() + void UpdateSize() { Margin = new Thickness( _hostWindow.OffScreenMargin.Left, @@ -80,7 +80,7 @@ public void Detach() { var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - layer.Children.Remove(this); + layer?.Children.Remove(this); _disposables.Dispose(); _disposables = null; @@ -93,11 +93,11 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); - _captionButtons = e.NameScope.Find("PART_CaptionButtons"); + _captionButtons = e.NameScope.Get("PART_CaptionButtons"); _captionButtons.Attach(_hostWindow); - InvalidateSize(); + UpdateSize(); } } } diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index 43647dc7d00..8a1554d344a 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -68,6 +68,34 @@ public interface IWindowImpl : IWindowBaseImpl /// Func Closing { get; set; } + /// + /// Gets a value to indicate if the platform was able to extend client area to non-client area. + /// + bool IsClientAreaExtendedToDecorations { get; } + + /// + /// Gets or Sets an action that is called whenever one of the extend client area properties changed. + /// + Action ExtendClientAreaToDecorationsChanged { get; set; } + + /// + /// Gets a flag that indicates if Managed decorations i.e. caption buttons are required. + /// This property is used when is set. + /// + bool NeedsManagedDecorations { get; } + + /// + /// Gets a thickness that describes the amount each side of the non-client area extends into the client area. + /// It includes the titlebar. + /// + Thickness ExtendedMargins { get; } + + /// + /// Gets a thickness that describes the margin around the window that is offscreen. + /// This may happen when a window is maximized and is set. + /// + Thickness OffScreenMargin { get; } + /// /// Starts moving a window with left button being held. Should be called from left mouse button press event handler. /// @@ -99,12 +127,7 @@ public interface IWindowImpl : IWindowBaseImpl /// Sets if the ClientArea is extended into the non-client area. /// /// true to enable, false to disable - void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint); - - /// - /// Gets a value to indicate if the platform was able to extend client area to non-client area. - /// - bool IsClientAreaExtendedToDecorations { get; } + void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint); /// /// Sets hints that configure how the client area extends. @@ -116,29 +139,6 @@ public interface IWindowImpl : IWindowBaseImpl /// Sets how big the non-client titlebar area should be. /// /// -1 for platform default, otherwise the height in DIPs. - void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight); - - /// - /// Gets or Sets an action that is called whenever one of the extend client area properties changed. - /// - Action ExtendClientAreaToDecorationsChanged { get; set; } - - /// - /// Gets a flag that indicates if Managed decorations i.e. caption buttons are required. - /// This property is used when is set. - /// - bool NeedsManagedDecorations { get; } - - /// - /// Gets a thickness that describes the amount each side of the non-client area extends into the client area. - /// It includes the titlebar. - /// - Thickness ExtendedMargins { get; } - - /// - /// Gets a thickness that describes the margin around the window that is offscreen. - /// This may happen when a window is maximized and is set. - /// - Thickness OffScreenMargin { get; } + void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight); } } From d75ca95648c0893954805c763165ef949ea6eece Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 1 Jul 2020 15:27:13 -0300 Subject: [PATCH 176/354] add nullable and null checks on titlebar. --- src/Avalonia.Controls/Chrome/TitleBar.cs | 76 +++++++++++++----------- 1 file changed, 42 insertions(+), 34 deletions(-) diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index 70ab172cc63..5e7bd8bebec 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -4,11 +4,13 @@ namespace Avalonia.Controls.Chrome { +#nullable enable + public class TitleBar : TemplatedControl { - private CompositeDisposable _disposables; - private Window _hostWindow; - private CaptionButtons _captionButtons; + private CompositeDisposable? _disposables; + private Window? _hostWindow; + private CaptionButtons? _captionButtons; public TitleBar(Window hostWindow) { @@ -28,28 +30,31 @@ public void Attach() layer?.Children.Add(this); - _disposables = new CompositeDisposable + if (_hostWindow != null) { - _hostWindow.GetObservable(Window.WindowDecorationMarginsProperty) - .Subscribe(x => UpdateSize()), - - _hostWindow.GetObservable(Window.ExtendClientAreaTitleBarHeightHintProperty) - .Subscribe(x => UpdateSize()), - - _hostWindow.GetObservable(Window.OffScreenMarginProperty) - .Subscribe(x => UpdateSize()), - - _hostWindow.GetObservable(Window.WindowStateProperty) - .Subscribe(x => - { - PseudoClasses.Set(":minimized", x == WindowState.Minimized); - PseudoClasses.Set(":normal", x == WindowState.Normal); - PseudoClasses.Set(":maximized", x == WindowState.Maximized); - PseudoClasses.Set(":fullscreen", x == WindowState.FullScreen); - }) - }; - - _captionButtons?.Attach(_hostWindow); + _disposables = new CompositeDisposable + { + _hostWindow.GetObservable(Window.WindowDecorationMarginsProperty) + .Subscribe(x => UpdateSize()), + + _hostWindow.GetObservable(Window.ExtendClientAreaTitleBarHeightHintProperty) + .Subscribe(x => UpdateSize()), + + _hostWindow.GetObservable(Window.OffScreenMarginProperty) + .Subscribe(x => UpdateSize()), + + _hostWindow.GetObservable(Window.WindowStateProperty) + .Subscribe(x => + { + PseudoClasses.Set(":minimized", x == WindowState.Minimized); + PseudoClasses.Set(":normal", x == WindowState.Normal); + PseudoClasses.Set(":maximized", x == WindowState.Maximized); + PseudoClasses.Set(":fullscreen", x == WindowState.FullScreen); + }) + }; + + _captionButtons?.Attach(_hostWindow); + } UpdateSize(); } @@ -57,19 +62,22 @@ public void Attach() void UpdateSize() { - Margin = new Thickness( - _hostWindow.OffScreenMargin.Left, - _hostWindow.OffScreenMargin.Top, - _hostWindow.OffScreenMargin.Right, - _hostWindow.OffScreenMargin.Bottom); - - if (_hostWindow.WindowState != WindowState.FullScreen) + if (_hostWindow != null) { - Height = _hostWindow.WindowDecorationMargins.Top; + Margin = new Thickness( + _hostWindow.OffScreenMargin.Left, + _hostWindow.OffScreenMargin.Top, + _hostWindow.OffScreenMargin.Right, + _hostWindow.OffScreenMargin.Bottom); - if (_captionButtons != null) + if (_hostWindow.WindowState != WindowState.FullScreen) { - _captionButtons.Height = Height; + Height = _hostWindow.WindowDecorationMargins.Top; + + if (_captionButtons != null) + { + _captionButtons.Height = Height; + } } } } From 0b9a4fc3ab9f11563e4abf05c5778e8062a65809 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 1 Jul 2020 15:33:23 -0300 Subject: [PATCH 177/354] nullable and null checks on titlebar / captionbuttons. --- .../Chrome/CaptionButtons.cs | 38 ++++++++++++++----- src/Avalonia.Controls/Chrome/TitleBar.cs | 5 ++- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/Avalonia.Controls/Chrome/CaptionButtons.cs b/src/Avalonia.Controls/Chrome/CaptionButtons.cs index cc49b8b6431..a66eb853cd3 100644 --- a/src/Avalonia.Controls/Chrome/CaptionButtons.cs +++ b/src/Avalonia.Controls/Chrome/CaptionButtons.cs @@ -1,16 +1,15 @@ using System; -using System.Collections.Generic; using System.Reactive.Disposables; -using System.Text; using Avalonia.Controls.Primitives; -using Avalonia.VisualTree; namespace Avalonia.Controls.Chrome { +#nullable enable + public class CaptionButtons : TemplatedControl { - private CompositeDisposable _disposables; - private Window _hostWindow; + private CompositeDisposable? _disposables; + private Window? _hostWindow; public void Attach(Window hostWindow) { @@ -54,10 +53,31 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e) var minimiseButton = e.NameScope.Get("PART_MinimiseButton"); var fullScreenButton = e.NameScope.Get("PART_FullScreenButton"); - closeButton.PointerReleased += (sender, e) => _hostWindow.Close(); - restoreButton.PointerReleased += (sender, e) => _hostWindow.WindowState = _hostWindow.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; - minimiseButton.PointerReleased += (sender, e) => _hostWindow.WindowState = WindowState.Minimized; - fullScreenButton.PointerReleased += (sender, e) => _hostWindow.WindowState = _hostWindow.WindowState == WindowState.FullScreen ? WindowState.Normal : WindowState.FullScreen; + closeButton.PointerReleased += (sender, e) => _hostWindow?.Close(); + + restoreButton.PointerReleased += (sender, e) => + { + if (_hostWindow != null) + { + _hostWindow.WindowState = _hostWindow.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; + } + }; + + minimiseButton.PointerReleased += (sender, e) => + { + if (_hostWindow != null) + { + _hostWindow.WindowState = WindowState.Minimized; + } + }; + + fullScreenButton.PointerReleased += (sender, e) => + { + if (_hostWindow != null) + { + _hostWindow.WindowState = _hostWindow.WindowState == WindowState.FullScreen ? WindowState.Normal : WindowState.FullScreen; + } + }; } } } diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index 5e7bd8bebec..c3b4dbf3ead 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -103,7 +103,10 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e) _captionButtons = e.NameScope.Get("PART_CaptionButtons"); - _captionButtons.Attach(_hostWindow); + if (_hostWindow != null) + { + _captionButtons.Attach(_hostWindow); + } UpdateSize(); } From 928189c8420498bc6c310dc27ee9790a0c3d92ab Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 1 Jul 2020 15:42:55 -0300 Subject: [PATCH 178/354] nits --- src/Avalonia.Controls/Chrome/CaptionButtons.cs | 7 +++++-- src/Avalonia.Controls/Chrome/TitleBar.cs | 11 +++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Controls/Chrome/CaptionButtons.cs b/src/Avalonia.Controls/Chrome/CaptionButtons.cs index a66eb853cd3..75d6c366b84 100644 --- a/src/Avalonia.Controls/Chrome/CaptionButtons.cs +++ b/src/Avalonia.Controls/Chrome/CaptionButtons.cs @@ -2,10 +2,13 @@ using System.Reactive.Disposables; using Avalonia.Controls.Primitives; -namespace Avalonia.Controls.Chrome -{ #nullable enable +namespace Avalonia.Controls.Chrome +{ + /// + /// Draws window minimize / maximize / close buttons in a when managed client decorations are enabled. + /// public class CaptionButtons : TemplatedControl { private CompositeDisposable? _disposables; diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index c3b4dbf3ead..b044ffc59c4 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -2,14 +2,17 @@ using System.Reactive.Disposables; using Avalonia.Controls.Primitives; -namespace Avalonia.Controls.Chrome -{ #nullable enable +namespace Avalonia.Controls.Chrome +{ + /// + /// Draws a titlebar when managed client decorations are enabled. + /// public class TitleBar : TemplatedControl { private CompositeDisposable? _disposables; - private Window? _hostWindow; + private readonly Window? _hostWindow; private CaptionButtons? _captionButtons; public TitleBar(Window hostWindow) @@ -60,7 +63,7 @@ public void Attach() } } - void UpdateSize() + private void UpdateSize() { if (_hostWindow != null) { From 300a6952d125911c8e77ee9d3e59b0d8f5f16fc8 Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Wed, 1 Jul 2020 16:34:49 -0400 Subject: [PATCH 179/354] Use focus-visible instead of custom focusvisual --- src/Avalonia.Controls/ComboBox.cs | 15 --------------- src/Avalonia.Themes.Fluent/ComboBox.xaml | 12 ++++++------ 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/src/Avalonia.Controls/ComboBox.cs b/src/Avalonia.Controls/ComboBox.cs index 5fdc19ed052..6557346b1fb 100644 --- a/src/Avalonia.Controls/ComboBox.cs +++ b/src/Avalonia.Controls/ComboBox.cs @@ -262,21 +262,6 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e) _popup.Closed += PopupClosed; } - protected override void OnGotFocus(GotFocusEventArgs e) - { - if (e.NavigationMethod == NavigationMethod.Tab - || e.NavigationMethod == NavigationMethod.Directional) - { - PseudoClasses.Set(":focusvisual", true); - } - } - - protected override void OnLostFocus(RoutedEventArgs e) - { - base.OnLostFocus(e); - PseudoClasses.Set(":focusvisual", false); - } - /// /// Called when the ComboBox popup is closed, with the /// that caused the popup to close. diff --git a/src/Avalonia.Themes.Fluent/ComboBox.xaml b/src/Avalonia.Themes.Fluent/ComboBox.xaml index 7ece0045302..e996453b2e6 100644 --- a/src/Avalonia.Themes.Fluent/ComboBox.xaml +++ b/src/Avalonia.Themes.Fluent/ComboBox.xaml @@ -191,20 +191,20 @@ - - - - @@ -214,7 +214,7 @@ + diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index b044ffc59c4..f48ca4e4e80 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -14,28 +14,32 @@ public class TitleBar : TemplatedControl private CompositeDisposable? _disposables; private readonly Window? _hostWindow; private CaptionButtons? _captionButtons; + private Panel _underlay; - public TitleBar(Window hostWindow) + public TitleBar(Window hostWindow) : this() { _hostWindow = hostWindow; } public TitleBar() { - + _underlay = new Panel + { + IsHitTestVisible = false, + [~Panel.BackgroundProperty] = this[~BackgroundProperty], + VerticalAlignment = Layout.VerticalAlignment.Top + }; } public void Attach() { - if (_disposables == null) + if (_disposables == null && _hostWindow != null) { - var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); + var overlay = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - layer?.Children.Add(this); + overlay?.Children.Add(this); - if (_hostWindow != null) - { - _disposables = new CompositeDisposable + _disposables = new CompositeDisposable { _hostWindow.GetObservable(Window.WindowDecorationMarginsProperty) .Subscribe(x => UpdateSize()), @@ -56,11 +60,15 @@ public void Attach() }) }; - _captionButtons?.Attach(_hostWindow); - } + _captionButtons?.Attach(_hostWindow); + + var underlay = ChromeUnderlayLayer.GetUnderlayLayer(_hostWindow); + + underlay?.Children.Add(_underlay); UpdateSize(); } + } private void UpdateSize() @@ -76,6 +84,7 @@ private void UpdateSize() if (_hostWindow.WindowState != WindowState.FullScreen) { Height = _hostWindow.WindowDecorationMargins.Top; + _underlay.Height = Height; if (_captionButtons != null) { @@ -89,9 +98,14 @@ public void Detach() { if (_disposables != null) { - var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); + if (_hostWindow != null) + { + var overlay = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); + overlay?.Children.Remove(this); - layer?.Children.Remove(this); + var underlay = ChromeUnderlayLayer.GetUnderlayLayer(_hostWindow); + underlay?.Children.Remove(_underlay); + } _disposables.Dispose(); _disposables = null; diff --git a/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs b/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs index ba0fdfd535f..2313222bd3e 100644 --- a/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs +++ b/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs @@ -6,6 +6,27 @@ namespace Avalonia.Controls.Primitives { + public class ChromeUnderlayLayer : Panel, ICustomSimpleHitTest + { + public static ChromeUnderlayLayer? GetUnderlayLayer(IVisual visual) + { + foreach (var v in visual.GetVisualAncestors()) + if (v is VisualLayerManager vlm) + if (vlm.OverlayLayer != null) + return vlm.ChromeUnderlayLayer; + + if (visual is TopLevel tl) + { + var layers = tl.GetVisualDescendants().OfType().FirstOrDefault(); + return layers?.ChromeUnderlayLayer; + } + + return null; + } + + public bool HitTest(Point point) => Children.HitTestCustom(point); + } + public class ChromeOverlayLayer : Panel, ICustomSimpleHitTest { public static ChromeOverlayLayer? GetOverlayLayer(IVisual visual) diff --git a/src/Avalonia.Controls/Primitives/VisualLayerManager.cs b/src/Avalonia.Controls/Primitives/VisualLayerManager.cs index 3084d7fa724..0213c53c57f 100644 --- a/src/Avalonia.Controls/Primitives/VisualLayerManager.cs +++ b/src/Avalonia.Controls/Primitives/VisualLayerManager.cs @@ -8,6 +8,7 @@ public class VisualLayerManager : Decorator private const int AdornerZIndex = int.MaxValue - 100; private const int ChromeZIndex = int.MaxValue - 99; private const int OverlayZIndex = int.MaxValue - 98; + private const int UnderlayZIndex = int.MinValue; private ILogicalRoot _logicalRoot; private readonly List _layers = new List(); @@ -26,6 +27,17 @@ public AdornerLayer AdornerLayer } } + public ChromeUnderlayLayer ChromeUnderlayLayer + { + get + { + var rv = FindLayer(); + if (rv == null) + AddLayer(rv = new ChromeUnderlayLayer(), UnderlayZIndex); + return rv; + } + } + public ChromeOverlayLayer ChromeOverlayLayer { get diff --git a/src/Avalonia.Themes.Fluent/TitleBar.xaml b/src/Avalonia.Themes.Fluent/TitleBar.xaml index 45798d3fa15..72998583b80 100644 --- a/src/Avalonia.Themes.Fluent/TitleBar.xaml +++ b/src/Avalonia.Themes.Fluent/TitleBar.xaml @@ -14,7 +14,7 @@ - + diff --git a/src/Avalonia.Themes.Fluent/Window.xaml b/src/Avalonia.Themes.Fluent/Window.xaml index aee15347eb4..086b05bb011 100644 --- a/src/Avalonia.Themes.Fluent/Window.xaml +++ b/src/Avalonia.Themes.Fluent/Window.xaml @@ -1,11 +1,11 @@ - diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index f48ca4e4e80..b044ffc59c4 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -14,32 +14,28 @@ public class TitleBar : TemplatedControl private CompositeDisposable? _disposables; private readonly Window? _hostWindow; private CaptionButtons? _captionButtons; - private Panel _underlay; - public TitleBar(Window hostWindow) : this() + public TitleBar(Window hostWindow) { _hostWindow = hostWindow; } public TitleBar() { - _underlay = new Panel - { - IsHitTestVisible = false, - [~Panel.BackgroundProperty] = this[~BackgroundProperty], - VerticalAlignment = Layout.VerticalAlignment.Top - }; + } public void Attach() { - if (_disposables == null && _hostWindow != null) + if (_disposables == null) { - var overlay = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); + var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - overlay?.Children.Add(this); + layer?.Children.Add(this); - _disposables = new CompositeDisposable + if (_hostWindow != null) + { + _disposables = new CompositeDisposable { _hostWindow.GetObservable(Window.WindowDecorationMarginsProperty) .Subscribe(x => UpdateSize()), @@ -60,15 +56,11 @@ public void Attach() }) }; - _captionButtons?.Attach(_hostWindow); - - var underlay = ChromeUnderlayLayer.GetUnderlayLayer(_hostWindow); - - underlay?.Children.Add(_underlay); + _captionButtons?.Attach(_hostWindow); + } UpdateSize(); } - } private void UpdateSize() @@ -84,7 +76,6 @@ private void UpdateSize() if (_hostWindow.WindowState != WindowState.FullScreen) { Height = _hostWindow.WindowDecorationMargins.Top; - _underlay.Height = Height; if (_captionButtons != null) { @@ -98,14 +89,9 @@ public void Detach() { if (_disposables != null) { - if (_hostWindow != null) - { - var overlay = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - overlay?.Children.Remove(this); + var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - var underlay = ChromeUnderlayLayer.GetUnderlayLayer(_hostWindow); - underlay?.Children.Remove(_underlay); - } + layer?.Children.Remove(this); _disposables.Dispose(); _disposables = null; diff --git a/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs b/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs index 2313222bd3e..ba0fdfd535f 100644 --- a/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs +++ b/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs @@ -6,27 +6,6 @@ namespace Avalonia.Controls.Primitives { - public class ChromeUnderlayLayer : Panel, ICustomSimpleHitTest - { - public static ChromeUnderlayLayer? GetUnderlayLayer(IVisual visual) - { - foreach (var v in visual.GetVisualAncestors()) - if (v is VisualLayerManager vlm) - if (vlm.OverlayLayer != null) - return vlm.ChromeUnderlayLayer; - - if (visual is TopLevel tl) - { - var layers = tl.GetVisualDescendants().OfType().FirstOrDefault(); - return layers?.ChromeUnderlayLayer; - } - - return null; - } - - public bool HitTest(Point point) => Children.HitTestCustom(point); - } - public class ChromeOverlayLayer : Panel, ICustomSimpleHitTest { public static ChromeOverlayLayer? GetOverlayLayer(IVisual visual) diff --git a/src/Avalonia.Controls/Primitives/VisualLayerManager.cs b/src/Avalonia.Controls/Primitives/VisualLayerManager.cs index 0213c53c57f..3084d7fa724 100644 --- a/src/Avalonia.Controls/Primitives/VisualLayerManager.cs +++ b/src/Avalonia.Controls/Primitives/VisualLayerManager.cs @@ -8,7 +8,6 @@ public class VisualLayerManager : Decorator private const int AdornerZIndex = int.MaxValue - 100; private const int ChromeZIndex = int.MaxValue - 99; private const int OverlayZIndex = int.MaxValue - 98; - private const int UnderlayZIndex = int.MinValue; private ILogicalRoot _logicalRoot; private readonly List _layers = new List(); @@ -27,17 +26,6 @@ public AdornerLayer AdornerLayer } } - public ChromeUnderlayLayer ChromeUnderlayLayer - { - get - { - var rv = FindLayer(); - if (rv == null) - AddLayer(rv = new ChromeUnderlayLayer(), UnderlayZIndex); - return rv; - } - } - public ChromeOverlayLayer ChromeOverlayLayer { get diff --git a/src/Avalonia.Themes.Fluent/TitleBar.xaml b/src/Avalonia.Themes.Fluent/TitleBar.xaml index 72998583b80..45798d3fa15 100644 --- a/src/Avalonia.Themes.Fluent/TitleBar.xaml +++ b/src/Avalonia.Themes.Fluent/TitleBar.xaml @@ -14,7 +14,7 @@ - + diff --git a/src/Avalonia.Themes.Fluent/Window.xaml b/src/Avalonia.Themes.Fluent/Window.xaml index 086b05bb011..aee15347eb4 100644 --- a/src/Avalonia.Themes.Fluent/Window.xaml +++ b/src/Avalonia.Themes.Fluent/Window.xaml @@ -1,11 +1,11 @@ - - + - + From 2a439bddf99ac65154b1112877259a37723ce37d Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 5 Jul 2020 18:43:01 -0300 Subject: [PATCH 217/354] use avares for fluent theme. --- samples/ControlCatalog/App.xaml.cs | 18 +-- .../Accents/FluentDark.xaml | 10 +- .../Accents/FluentLight.xaml | 10 +- .../Avalonia.Themes.Fluent.csproj | 8 +- src/Avalonia.Themes.Fluent/FluentTheme.xaml | 109 +++++++++--------- 5 files changed, 75 insertions(+), 80 deletions(-) diff --git a/samples/ControlCatalog/App.xaml.cs b/samples/ControlCatalog/App.xaml.cs index a6754143a22..130c0004402 100644 --- a/samples/ControlCatalog/App.xaml.cs +++ b/samples/ControlCatalog/App.xaml.cs @@ -11,25 +11,25 @@ public class App : Application { public static Styles FluentDark = new Styles { - new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) + new StyleInclude(new Uri("avares://ControlCatalog/Styles")) { - Source = new Uri("resm:Avalonia.Themes.Default.Accents.BaseDark.xaml?assembly=Avalonia.Themes.Default") + Source = new Uri("avares://Avalonia.Themes.Default/Accents/BaseDark.xaml") }, - new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) + new StyleInclude(new Uri("avares://ControlCatalog/Styles")) { - Source = new Uri("resm:Avalonia.Themes.Fluent.Accents.FluentDark.xaml?assembly=Avalonia.Themes.Fluent") + Source = new Uri("avares://Avalonia.Themes.Fluent/Accents/FluentDark.xaml") }, }; public static Styles FluentLight = new Styles { - new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) + new StyleInclude(new Uri("avares://ControlCatalog/Styles")) { - Source = new Uri("resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default") + Source = new Uri("avares://Avalonia.Themes.Default/Accents/BaseLight.xaml") }, - new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) + new StyleInclude(new Uri("avares://ControlCatalog/Styles")) { - Source = new Uri("resm:Avalonia.Themes.Fluent.Accents.FluentLight.xaml?assembly=Avalonia.Themes.Fluent") + Source = new Uri("avares://Avalonia.Themes.Fluent/Accents/FluentLight.xaml") }, }; @@ -61,7 +61,7 @@ public override void Initialize() { AvaloniaXamlLoader.Load(this); - Styles.Insert(0, FluentDark); + Styles.Insert(0, FluentLight); } public override void OnFrameworkInitializationCompleted() diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentDark.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentDark.xaml index d29db79e7bc..9ef92a44d5a 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentDark.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentDark.xaml @@ -1,9 +1,9 @@ - - - - - + + + + + diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentLight.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentLight.xaml index 43867f6e973..8c920401224 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentLight.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentLight.xaml @@ -1,9 +1,9 @@ - - - - - + + + + + diff --git a/src/Avalonia.Themes.Fluent/Avalonia.Themes.Fluent.csproj b/src/Avalonia.Themes.Fluent/Avalonia.Themes.Fluent.csproj index 84bf799d8d0..c5eb016fe81 100644 --- a/src/Avalonia.Themes.Fluent/Avalonia.Themes.Fluent.csproj +++ b/src/Avalonia.Themes.Fluent/Avalonia.Themes.Fluent.csproj @@ -11,12 +11,8 @@ - - - - - - + + diff --git a/src/Avalonia.Themes.Fluent/FluentTheme.xaml b/src/Avalonia.Themes.Fluent/FluentTheme.xaml index 2cb34431fad..3d54f082bdb 100644 --- a/src/Avalonia.Themes.Fluent/FluentTheme.xaml +++ b/src/Avalonia.Themes.Fluent/FluentTheme.xaml @@ -2,60 +2,59 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Avalonia.Themes.Fluent.FluentTheme"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + From 16077c3f93f6f2c9145e585249924f0f6311a92a Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 5 Jul 2020 18:48:29 -0300 Subject: [PATCH 218/354] control templates inherit fonts. --- src/Avalonia.Themes.Default/ToggleSwitch.xaml | 3 +-- src/Avalonia.Themes.Fluent/AutoCompleteBox.xaml | 3 +-- src/Avalonia.Themes.Fluent/Button.xaml | 3 +-- src/Avalonia.Themes.Fluent/ButtonSpinner.xaml | 3 +-- src/Avalonia.Themes.Fluent/CheckBox.xaml | 3 +-- src/Avalonia.Themes.Fluent/ComboBox.xaml | 3 +-- src/Avalonia.Themes.Fluent/DatePicker.xaml | 6 ++---- src/Avalonia.Themes.Fluent/ListBox.xaml | 3 +-- src/Avalonia.Themes.Fluent/NumericUpDown.xaml | 3 +-- src/Avalonia.Themes.Fluent/RadioButton.xaml | 3 +-- src/Avalonia.Themes.Fluent/RepeatButton.xaml | 3 +-- src/Avalonia.Themes.Fluent/Slider.xaml | 6 ++---- src/Avalonia.Themes.Fluent/TextBox.xaml | 3 +-- src/Avalonia.Themes.Fluent/TimePicker.xaml | 6 ++---- src/Avalonia.Themes.Fluent/ToggleButton.xaml | 3 +-- src/Avalonia.Themes.Fluent/ToggleSwitch.xaml | 3 +-- src/Avalonia.Themes.Fluent/ToolTip.xaml | 3 +-- 17 files changed, 20 insertions(+), 40 deletions(-) diff --git a/src/Avalonia.Themes.Default/ToggleSwitch.xaml b/src/Avalonia.Themes.Default/ToggleSwitch.xaml index 88266ac9798..893d64f5054 100644 --- a/src/Avalonia.Themes.Default/ToggleSwitch.xaml +++ b/src/Avalonia.Themes.Default/ToggleSwitch.xaml @@ -43,8 +43,7 @@ - - + diff --git a/src/Avalonia.Themes.Fluent/AutoCompleteBox.xaml b/src/Avalonia.Themes.Fluent/AutoCompleteBox.xaml index 44e7962e170..0d5d733cd9c 100644 --- a/src/Avalonia.Themes.Fluent/AutoCompleteBox.xaml +++ b/src/Avalonia.Themes.Fluent/AutoCompleteBox.xaml @@ -22,8 +22,7 @@ - - + diff --git a/src/Avalonia.Themes.Fluent/Button.xaml b/src/Avalonia.Themes.Fluent/Button.xaml index 345a74512c0..f9a3601eddb 100644 --- a/src/Avalonia.Themes.Fluent/Button.xaml +++ b/src/Avalonia.Themes.Fluent/Button.xaml @@ -19,8 +19,7 @@ - - + - 2,2,2,2 - 4,4,4,4 + 3 + 5 1,1,1,1 diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentBaseLight.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentBaseLight.xaml index 2b960259d00..699a5d606f3 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentBaseLight.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentBaseLight.xaml @@ -11,8 +11,8 @@ - 2,2,2,2 - 4,4,4,4 + 3 + 5 1,1,1,1 diff --git a/src/Avalonia.Themes.Fluent/Assets/OpenSans-Bold.ttf b/src/Avalonia.Themes.Fluent/Assets/OpenSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..efdd5e84a0397ecada7b9cfde51db87db08766bd GIT binary patch literal 104120 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

n{#NV($fZ=b2Ttd7 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 -Ui0>vvum!cQP#SwwX988o3plLZOz)* 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 literal 0 HcmV?d00001 diff --git a/src/Avalonia.Themes.Fluent/Assets/OpenSans-BoldItalic.ttf b/src/Avalonia.Themes.Fluent/Assets/OpenSans-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9bf9b4e97b6576c8cc3d4527073731fd9cc57493 GIT binary patch literal 92628 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

4J;+I{;ffTJG!iGMcG*?Vwl&%p(3b?*`L@59ZU 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

9nNjw4~{@r0I~;bjWEs}nhrT# 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

!GC&_!#ZtN*Mh&_?3T(2tal^%sA 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 tF{6TqYG~a+&=^Ld*=$fFp9q2yx(>MC>Dm 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�?uC|3&0+ngjt%GBCAB^%e& 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

_T_kl)Xoan=RX{3lY#VQTZ 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 literal 0 HcmV?d00001 diff --git a/src/Avalonia.Themes.Fluent/Assets/OpenSans-SemiBold.ttf b/src/Avalonia.Themes.Fluent/Assets/OpenSans-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..54e7059cf36359cb5a3860085714a95306af0dea GIT binary patch literal 100820 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 DEZ%x^ literal 0 HcmV?d00001 diff --git a/src/Avalonia.Themes.Fluent/Assets/OpenSans-SemiBoldItalic.ttf b/src/Avalonia.Themes.Fluent/Assets/OpenSans-SemiBoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..aebcf1421226d045b8043d26433d780fa365b7de GIT binary patch literal 92180 zcmafc30#!b`u}_0_nn1dm>q^y97aGzL>&=#P!SLj5fK>_+;GD^!!=wo#of|0Gc)s= znVFd)E}7<*nv$6<*XuPavoe>u-SQeThyVAScLvaV`~N}lE z*hUaEm19RtpDJjDFzokt{9QkG;_NYHQ$BuQ5J))wKR0glh!W|CIb#J9U4XxL7>5^3 zb4_)CkNt&a<0d^lYf9>#Tlo9)f?!xXamuI>bZ*rUfi#f;KX=lISyNU0$UcEYu;*zy zdBmjAlh3~JFM;&fjt9=4I%WFPKW%%eOd!31Uz2N7pBg=N*6z*G0!hYt5-fSi9q!EOKb_uSwZLAKnBMDz8q&~F=$BDB&6{@P5%yIG$AdKLsyCoLzcNvA? z6n{bjL@7Wsz#U)}lH-KnWJ{-nwrz;h>LBeqxY`8;+SJad7?QJhCoy@>4;j=cwK%JL zZ*o+sso9lN(xY4dk-ZqyFQgq(xfhp!O0}qwBq7;V-4386z`~a(zqBz!9KP}8OjVWV zSJA}2*gIWqW?8G(lkfm@fLUj^N@|@2(2`x2PMs1GTrQWH z|IfZL_zn$&?_^&|4lADA>XKaSOG8{%r>xH-MkBpEyK?Ts*?Y=r%p^FEJ~WZo+52YK z&fYV-)=+z^Cbvc!N59)ii^(?jwUad2Np{de_O+9KN1A}f-RhRf8EOl#j27aA9w||Q zDMm|1cyxdi7iX2#DNXfieSf#44z#9(#aLtdxr3}if-BA}xI%+X)eS#cI+^XRIN)tl zYc$TJnApUiAiFgtCb4~oq$HOn$gYWrm70j8Lx;rnv65OHXtPV#e)&gyMf{m%*%yZ9 zZLYZYNpywt^#%D$Cg&_D>qv*^kDhLDyC;+TyFasCxf0Opa?6e)S=8~3vNzA0|MrHd z=i#1Oy2@4X6#dqJWWUj^#8m&HtdT81c41ZBU3Hr3g5VELiV#`|NkVLjwMnAdl!*Vr zBcyPPVAnKj4aorUlOY-)zZql)_E8KoS38EK-6k>_No;Rn0uxP~#QK+i6)i~xi8<{D zcR4YoYWg$JmF}N8f3bM-(Wz5%cYXW8od&coV1Jo5e{t#l8S|H_oO8YzTk-UrF^d*% zrPZ6ZtlvRmH*8!~!$c^0`pt<;%6=NRX#VT;!lswkzD-)L-vB=Kth=i!R8hN`Jz5ND*CC0p zM-7Swe;AV#ozPf2B)LS5)e);^&o15_T-<%#_zZfb-^xt-aPf$#^!2yT7kqno>!JM@ z?@Y?LJ?&66y;EHJ*)zwks4No;CJpUdmfAD@(H1~2&#cJLpR{M)mm^<#uJVg*%NBk- zgdUlCkp6av-d>cGeo7!ryF{65m)|~-X;w9pd#_F@>V#F<^r&RVDxIL)?-$FKCBqh& zELN9bHd&ow_Mdf^sbTuTb;L#ni@k`}^H0w_dXWA>R063RLyw9H-gnEfTIJouBoZgy zEx9aW!UIY#li%=uX(-+0IYIvrn~BeobP_=SgWXSv`SK!lq+k&I_Nfhm7sqH#v=z1> zmP9A1tWwF-WSySAu&a8^&21!_Zc8U4qgB7t7wpyX^rdcOIz9J1(UqLqN9M!C31vi( zBjlZsPRl_*B9dIUTJ)+E9^aAZfG9cw9cCx_l`bZ8E6HqHQ7O)>B;|BbC0&MR+C(3c zeBr*J7PRld>L!3}(RNYe>|iC?+VWNV#t*x1r?uDa6D`{>fgBTa#buBo|4Jfcx$z40 z)SBebB*c>k@#NTr3s~i-yGgQ%4Or<9_(=oYeoThiwn_3y2Bg7JoY%3}uzo$0iwBNM z?v_0^9nkAw)ult6hr0ceB*LJ9I|Rxi9jg7}wiL%qH2w^WIJEAroCOIE5JCleir(MQ z&+V^~1N*t<5XD3@>tPaQrgJ7sGp2J7{3<#BO;sA1_^IJzxXQO} z<8VUSVXb0`ODw=_d&@hHDok5Gdit!d z%MN^*z4IJBFHWu`J6?N!ZrY$xUHfkxG4RNiiAPSoO&@Z;MS@;z=jK9uie0h?2iyC* zgMJF|kk3arjzt1T1~h~P4h&)*4y0se81zeQ?{FsZ?~U-2lRw%uf5lQ- zxA)tvc^8Ub-AjL799_Eo(x}3W^#$W*U73CG6M5m5&m%R#+vhI6^i=<^+9s|kzjkna zdH*4WAppa~LkXobf=hi$y8f?j(zCscoB{Z>C=4CsGBM*GF zlKy_|%T;f_`_9Q{<_&wc;GB3qo~lcWq!pK{UjKb@|EncC){UR$lc{Ncx5;EzsURjQjXkuV+x`R^j8V|N_7*1JaEZ<+L2@aw!kvwZdmd+$ zL9*L|rp&%fqEDCQ$7M{arVo3l%g=9qciGP`pS(=|HsG1meJ*$JHciA)!ltb)B2v*Fk4Ww>n{ z7eSDrA?4z4p5i!ZyThZCZ&&ZE`3;sM3(r~%-L(r&Apv~0sV%|5En5a4A_V0%0Zsb5 z10H`=7S#BN4#q$l)m*Woc}QU8zDHpLyegDj@k`>h{hw}mYu5O=-@kg{7MVJvKkd1G z$&69cSBwZPdMdle^zz}V>U|rYJJmD$-KS)l}0Wdb^_O zrML$~xAo$Y%|y56msZ6)hL4|obnV22kS1n-YvfYcUpupolHUNgWC}D6a0dp}TSsdn zV=OiLxtbZ~5&e30+wHT^QYACd{l}!&eqC>?#k$S#8*C3XbTu%=Pfk(mOat6H6W<^q z^pkow(s(28QuYoTJHfXJ_bp$Nrs7B5Js@4vh3j&de3yG9h)cpp07Vi>AR%&CZGp7Y zlP(^18}`8QCL8NKCdgLS%|rR^_^7LWEqmk&x#JeuA+;{9^iu`Km-m zAi-Cew37jolK1bYQz|Q;*jKIWYbAW+>0*^9ldUJ)NCGK1MT2M4T=8d-L4prnS$YQzE}TPDn%&_8<6fPQPU zvoBqE`}F*sG zOX||pyHu4zMcm15KAI+@MQ6J=d!a+XC>cO54okIwyY?apWPqqqJbhl%+dY4(c8mH$HS)ZCdZQWB-? zz4Y3Sp_w~gUHK9r>vg6`I_s(Up^N`M=lfsI(igvhb^1R4mBKek$IHY(s%qBLpJq%r zF!t5wU;LG2Om!8oP}!6YQ$h& zXxL>c8Hr`b&z+k4Ck@_BHqcVlp_&YF4B7f_`xQIsUW5Qb8lYc*{WC(pnld|}ZVG$d z7k0p4G}^P=M#&J24H3Vvs9Evr^&XYG4#la;4hOMv!{u~JUO(cLbYI_m=jDkr>F4wh z3Q?VWcE!dU2X5Y2_vWmp _*ZeM${i8lPDiB}&Ys@*<&%I-(kmd+bFmf7VB#Ptry zV=&WtE5b9Ytk-0@@uPwW9@rNJao!BVizvK0 z^^51|Bl=A>nfc3>Y{-Bc?$-Jk_pDa)G^mCp6}j#vBUg(;yTYH z$k{G2AMxuY2!Aq%)-=WBC#&VY;J8jAQeTAwNaUHg3rKzu!X{Z`5dvr=yQuS=2|aLg zQ-s(hwCaZ~i@VCME)^AB9#wZ02t7u}iPHg7FPIM^qXJ727I1NG+eV6tO=5%~F65UR z$Msa@^**0S;_lN+t$(EBLe2-)s48j-uL3PDA*wMP4!n_8eEcb4)*KE=!yht3YZZ|0P*1JyqLLwl0%b*_tOVr z7!s35_G1w9 zuQmBeMC;=#e`4a)sMTyA;_6^Y0&{oLS~^Cp3%2iO`{>CUjk=w2>os{r@AdO*KVds` zAb~x^e?hyMEm_4gtS}|R%5wY5a$uHQ_Q|lK-Sx67G|sTv$Ea2vqx=8K?DQFufAtZu zd#)}2X8zySF26o^i?oT}rdc;h9E8@N9R8VpS@a=&`{Q?x9w!4o*>y~@Ei#@M)kQ1I zl>%VP0s>4%i%Fa1Ho<~3yQ*j<@!3t4O>iI+AdYrHlnlIF|MZ*i^Z`N;?1)t-7!0V# z7z~nLv`9f&ZdSKo6kutPFT7Nq9HB7^E>f(IC}huE_VBqk?!WW)pS1SUnz_4n&Uj{~ znBhU5{lV!sZnpPSh#4PkSTuepBq|n>c^6o(W&-rvzljtS6qe-S{$zxxc zL3V$3zwb9A%EtAcFtFF;Mg13iG;!$h?6Ts7^lm*y9AMf6XDgoq9W+8vijG(`k_;te z4xHJTVAKYfNrsJah^Bj>`r>%$hd8zS#5m*@1(l#kDgF(#A}C z{eZL+7#@Lr&%hpf!BnMJ!@@94XM91-in|<8lBgw+Nbd6=_c%(<=>U)N98#`lSDduaS-V?Yyi-oT zwENL1z`KR|p9$~~7al;`swT1A4?-GPyZ|3a*3n#2PWHrJr61|QNYXngQBE`rKCag<&oZLi0YJ#-PxTc>(? z@1JTwj}}8@o9Y-c9z&%{6l9d}lvvyfgs?}nID9@a9Xd+0#SrO@+9BdT59e1Zc3W4M z0j#v|5mxtO&ynO1%W5w*k=oLuD+MA($XBHeY6m!=+oxWDR49}cMx8Mzs=E-@Z+O1P zlBhot2FX{G-|H2)X+3OWF|5FRc?_IgQ`EX`{$@d=H)=xD+!~WHP_U-C1#cF~Z4mMX z2)l|Y60dFBT}dv<2^o!Ll{Q|&Vs$sNX4Uo;zpov!GFI2U@@`e2ddv9SEn|wa25l%D zV7qYWV=}yY$lxuH_Ut`<>=hz!Dwwc|{%7@=(ac6C0G}MS4ZAuSJ~DJoBd7yS_A~_C zLX!r3m`O~o$0ydw_=)I>X$McVM787#e;I0G&ylN|>r(cS%sc4;?Tp&O4f!u@Tk)HI zz_w9Eg9g2rZ!65-thUkp$?qpj8+@tiWBTej>Bv_4Xyxz;uM*7~_z%KpB~^n~JkQqX z8I1%>BaD2M@l|NNB}hcyq~`SB*Ad-Y+ZU(J8MWcu)KQrWd#tp5e&!Mxc)Z)8L|Xmb zlv%Bso0Zf!tt)@@pK$f_yWK6K5tHNWa}Umr2pJ?O;(dCb1GLnd#czpsGN;@C+wpn)IwgXmle&VYl`nax6m+icQBq`P%K%o?Iz z)HM|sC2_%F1=>KH>~Lzlb~sS27B>!mD>~xn=P6&Ex&8|A+y44~x}RQ*6Q@nhSUqC+ z>(aj6t0s(eb*k_4}=G0$3MGZPFgp+MA%l6lAoexs8H0 z%s)6dEW;ga6jY#HnBqj4FEO*YmB*WjEZ(#_lf?#arqQ@GPRLPKVV9J4OX9BX4?G#z z>cEca!@Fg6?>#Wcax41QjpkLS^WE|yw zHyCG2IDUy!Vr-((C})qcyyyjw%V@|5svN_3&tmM#;fzA>SmoS_IXe_`<(ZKmhTlKe zzWJ2ouJiY9q@U5BFWgwMDXXZY;*aw=IW%kPtSL|Z?NH&g#XUxLNblKWSfZS}%+b03 ziJRKyDKX(%Q_!M0r@!2=XzYge@wvT6Ck%M|^slx@A6iPYd-R()+SOSvo$0r@e|o>{ zr2|$&TM}T+Ga<*JLU@Y7q_f$;2Aj!W5Ojge3@Z-_uWkiutn`hT1_})NdlgtCiN{u3 z7EV1CKk_cLwo_PZt2XbgqNOj`SBP5+qbq8z(s*cW&Ad1JmKMMAeAYp(9o5Lxyu=Rax$SGdlu-quHPpu8>ydZ2Nog9CVl+jX5={L~!%S;TubD2HZkYTG zl1clR)FlinE@GA#DGnDo7<#0%jrN@eX-ixbOXS=1LCk*AA}hT^4`7hWXGBX zE={(AiOWmd3eeUdgro$B0V=hu^%Df6tW`*B=7)9;I9(+T5}|<7Ok$!D#7S!|FYU(& zTG7@i%egenvyOZu8KclpLkB?ovB538E zHP+b^-;W!8XN|dR^81j1yN3e(UX;h&d3xr{D^kil)5WdBVirEErjg>--1rK5g~rLb z)!#BZ%_R@m1vAMr_**QHJc~(h6#W0EYFl}lW4-F-PpErthmv!7{wW@tFni4(E2hj?`p2@5>4EodojFUg4*!ID z*Lhf&96X;DKAYKKoe&TJn->77(}W3O4Ias>WZY$=#K%<(&-uUogjWDYEQ$yeqL|m#OGZIv zxI{3oWekEn_R*rjYcrWhf~&G3oc$|rHSORK_-wlSc3*w6Mw_>_aK+ZOzXarL88Ku) z{)=w7t1W+?Bt;z`nkN=kSA9yxoTyFRMzqU{C%i%*uI4ow$bz&Cn3)9R1*!m@VA2Kp zGXYIDcVf*L-Xx}81f+=Wtz8}3%=;*|luO*e9r76cHN$rYsUG4rYdn)L1LA;bfEmT& zRR3_vW(!G&X_K_@g}&#k&z#_fm16*wIq@TmMv0TXi6|NFes=7+mtPw(tM`QRv0ql5 z-jKC&UY{X7$BZv%P4eD(zt@GroZhZJ-FmGU_R8M8y;(iG#HS^7$r}Yca4srEt1@to zgf0c6ImO>*Fq>^~#74CMO{_*m-j9PY?EaPA5gjF$=`buqt2?Ly*A)7%jRG zm{hK3-d(+6KLgIZ4@0r)qe3) zS5}iR9_^`qdeX+#$#c7l8Q8G|{v-!G>RB|eBSr`tk_+&VHMax>LVZ~Z_T!?Tk_?*g zJUdCM@$3S)U9T4aU`tx?yr;LC;{1E`qet&{ z%Q)Y|vFiOnqltA%Mb|^Ax%9%sai>JCT=N2KF%w`%sY(JP{gn}=MI84n<~Ut`wo_Ggr(4E_9*)&V@=E9@Z!9?|_Rb-R zljfM!ZQe}kd8Sp9&dm=o4Hdh{and+QMP!P>sFo}ieXiT0#zC1HeH=nCzD&WVd7TRs zOk`dGK_!%xpB6A%MG9PVx|Xa@nKU%5ux-2Y&STdl&*_&nSgh>c<@m(l*d`&}J0F|k za5S~UCtaZ{M4em=8sVHIMJEUWN)w&;h!70KX&j2q=rQ1R7`EN@Jv-=qF{wDGOX|q% z9$m%7wQ5y zx9j5%C$4$0X3DI%rYC!=z+cwKaR^w13vE+E{OzonLK_^6gM73r2pX%=V$611ct?j) z5NCZIN_Shmd(p6?2~=m9xlKY>8#*e$bE)9y_JTFj54Y?@`bE*bj=*69#eMO$?PJch zbDnN?rd!MpstfrCGpp&(yEl$p((=-Y_#e0LCUJ*PvOH`RF~}kEMp&{~Xnla6-ek3h ziYjenV6+Ccfz$0+2xx7e6q{rRsqIO2mOW_fnpmd%n%Jb6Bwhnka`wyJ7S5bMX8goa z^Jg#Y)@}aG`NO8p8a%&jez%?FLx(*3?2w`5;+4t6u%=t`!m@>E}DHk9xzheHGy8JqwxP=@7nJf zePio>lYUn_g;qFIjZO&^<87|c7V1c?*3ieTC6UegxFhTRE1CioVmG+=7|0&nD$ml? zzQm2i{!GJ}YVlxDXmoc{zm^u|JVE_98{Q1X3^j5 zZ;omgDz}V6Nm)4)VGMWSe^4JZGSwR#-b#p)GHK6_DP>EbjkQoT6O(Kf*~QNjMSdDB zZJSnpKjGO{WpmGbe)H_|1*xUA73WCt$7e~=g)?;fCzt59Q*(EaW^cbkqPK0Q*WcMm zukDm|8(*PUnp(HG{`2|Y|LnOgiC$*!`G~%D{w&>o@e(QgXeYg~dk=B!c!N0Kd5d0y z3~ZG|sf+3?YGV4;_<$2c9V-j*B) z0{LxPqB?fQy16>J-SBQh#uvY&X*aCPnA~ZqvttWAdE>h$J@?dt>rZ)(41cZv%u|ce zaw7^kLWyjVZld@T0Ium(S|m2mYiKpG6Z8;9E8lX+iVFJ8%lod9LuBDH`qR3~%VILw zK7&@$HCg10NcN%il5Wc)EdJpggi;(k<*E|lyK~(t?h8!p3CvEjBT>UME1k>p5=3^S1)eT`3XKEsQN9TZoA*g_fq4Vr+bimMvSvOZsqGwz0!# z#&tWiErBte^BrAG|6dMAvvUoc?l6R!)*tyS`ahX0eK=&$m2>~kW0L{zDD;zQ~ zL%jBXFxqe6GtCf8^``Gjlj+!uEvu-uH8*6nlVc1W5vtoM}3Lso;1KtCfz@A5GN%3_d`odI1d)^*IXB6;(nUYMC#${)o z-L-t`yg7xV)=msBa!)85Iy`mW8_z749~RCCl`SKCF5J}dwe-y1(-x=pDCse~a0=qN zTGYpHdF$iS0tOy0<+7Szgw!^3Co8{jop0f5l-X4;`v+Z?=ctcryXVL34 zc4JVOF3^ZP-xRu-`F43>E=){q}`cl+v;4he0SrS%@U zwp~UFeONljSYa66JkD?D@Q^&FJtxFW5$8_m?KGe#xTzW;9E>HS5J+Q1@2pxAE84al zIX=qVJg`%FKO9lLNUHlUx3$h$$ZX$sSY9nGZvZ@&Ek$P)WRon)27lOG*Xbgbw|lz+ z`8gzO_vLA3VtYxOw`KC2qnr>xPvyKvRJ&n;&= z=!ButCFvTsu7*maFM3!)*XaZXo5T_chl9#D=@Om3ghakvd6j0+`724t+Wl7urNuKz zCV480b`ojMG%}P7&!RcZUam)6cm_`%E84|%plysW_e+6j#IE8A&q2X&za*Lw`6MQ? zwJaNL;$1saS$i03g{LJ0)@t^NCbpEVoQRbP&{jZ|99S7Ec7=^TNYp}^EC8xV)CyEY z;@4@JNaaFkcC-+m608wIOd+Db6cS=`@@_Q~?^cWQ)x&wXiuxpD4%lMw9a`AASfRMg z^6ExGySO=I($f?AMduC3TGzjC^~F8M7ra?CJcz^&&+XW&sDIC7anagc1N&#^v`HVF z6!YHHw>QuFs4S&y7%3h!sz=xCF{yYSrDIDoU5vr$GkfA*bsmx{=qg1tSH=i&=0xwB z-Hq1F5Y8%V?DogjEN)ms`U-{0n!v!v)?CnJ`1Zozrz>lMgCAQnUDMsS29fMgtkEBk z#AeNuMLvwOH5%_KHOUE^#5vjwX&yKV+E*aDWM`_-SD|Z4Q(ZuoTc;yxD^9YlR-#r} z{47f66frdJV`7N|f?(x%ABh>un=x<1PAR=zO$4<7)vvYx$)`DW00unz zjTFN?{g&s_sl0!UwK|=niR2Y=k*A!=4$dQ3pBS)?f#hg}Ibxi^Ugup_oOaEhhrSA?}=NuHvai#Pqf7q zlZbeFtI*pVCr&vh&Tr_CqkYcNLhvpXcwOf*-Ih^`PK9;~HH9gB zjTjN}muqGqrsR6)6MH5;g zbgXS#Wl;h%5t-YrV&=hs-J)2!zDazRt8LXKCQGs*-4DGeJo+AokeMbI#E7j@xrmJ5$b~l zGZ!x|_FP-_&9lMc=A7eJ&xF1+SKN5U+Y&W!{kW~mZ}O(7;`QTpJiGb`-Fc}XOG@oQ zHxwk*p6z%X1Of+mZwu!D3r%4yg=|h;(qIYyYt0N2rmShwq@Dv$zyT+#lr`buPpn~F zQuZnp_F@gw)VMe=mw*xP^xznEO-JD$$N_nw(Kd$!c} z-}K+~lB(+8A5-$`i<3s8vyh?&TBQyXI-&nLxUDT(iqPxZr@Qq+L{x@5BIvO*VDAYl zlP1Ym2}Q3qPk&LR!KhmkctKy-S=KwFTl*dZgNV9K%{NCc@1M~v zb3#VUPajo{o;Pp&jD&*RZ1<3n1BwTI)}B6Wc^Kz-CjtkLlRx|M;?|0{o*mr7*{V}s z{;00I&-FN;Uy#!#Gc9F$@4gGV_8i*2N5(IYY-jc`zVqG;wFA6>zQfn|LQN7rGAhdK zv#U?8m{G`Av}o~HD@b1tUlAMo_zKkn-!3HA!dJ9x`NWF5z7;}g9p-TAvr%OYnnClu7M5$TlE^8o3Odc9zt@8vx_6c-KC3KwAp1pj4X6)YigV34mFwN z!048KEpc|_hZ>7F$?<(>N8-FgSA{xO!;wOLJBr53NY-D#!f}-Tq8oQW1flBSZAXx| zeLc|rl1)44_2MNjE&pXz!GczP$uEYuwwA1XowXmt%d@AKSH4@jWY8vos+gUW{Nxa!>=FtBytm zCQj&(60X7ox~vWlmqHAIfzj#iz(51q)(lP3>pNn2-ojk51!Y*pV<2q_;uhP?OG*vR zOEEC%N|h$YTPqeTS`8^(m{XH>^_8`>=D?Y2i|(%*{(K9yZf;FR&d?Rv(>Cr zU6LEkDe;&V;{=&gG*{vOYitGlbUm&38FQl*Gr&Tu@F^FUp~qm5z98z8w&K2A$noI2 zkX(_kcudLwgL6c|qx2U=LfW?V@k2so;w~x^tT)bxm?%6&uL%gT24Hjs=L$$oStZ_u z@;9HlXLX21l@N2IpD~c**^}J8dyn3oJNNQ^$Ea#0r77td$tiu(#aizVtj_4F+aVXq z>)=VyYtOuQc(br*xk-cfPIntkGNeF$tSIZ9UgpQ`iudM~C$IO0jfeA=c$E$gTuyw^ zvu)YP@pGrAt-=BP(y{sFCCRj4)ln@u5`W(P;vhB6Y9Su|lSGLLkd zIJ~SRn_j;b>lCA%9%1pFmGMEI?;PL=KOyBjD^R%lI-@rU3#;eqlPhLS=PMdX#uF<@ zUlid0qiNH}VQ`))yOgRG9YXJrPpg&lL5>MK!cz+~{(KAy@)q7vfI34E@-fzR7l2+f zbWr`@U3c*0Xxl;F_`kafV#Lhi)p1(hSFra^n|3bkEAKr2`qJCsd0U1L&Cg$#pKBX3 zXh<<_s}*ki^zONfhn4PvZS+4&MvmV^v@ev5MkdJ5H~BLv_?Nz{JY#%(!!siDlBcP! z!MgE`lJpbi@`yxil!b6_sajU=qxv}+9U5s7&r8>83hSX{3mN|#idtI_C7V<8F(@>i z%_AvL&_X^yg1Kfoir3L4p}dp5E^g-SyR#(4 z^0*{C0R_?B2_+_rjI59DKmqBG1}LQO#~ezNCiU{9K*<7*92e4`TvMPliuM_lYE=!^ zFkCdGzwo1>VIQKY~I)e{JUQa$lzaiUsSi@)$5MiuKZ4M!w0Af=5}G7Cmzc75D> zqc&2TfHJ?NMF%ZLR1t!p?%fp54ED|(7=(V7AYX$6Y9_4n5@|br;z3H|CQRkfiZv7d zMKdPCOmWP?LaoXYME5yJPW0{Qjn0>-2W^?TZxpTl+mgHCIj@xD4IR90kes!v@Ayf7 z+q36ykGkz0TlDFH4>6WlTfB(~iw93wSF`K_Hii+LOVvtnc@rQ;&m~yiX z(nHph%jecuK?OBv2O7sP3Zg2miaPx5uY88>+p6fQgnJ2MhlF3~+Bnb0aq?HY9$jG* zZF2ms8#iuvc41IN=?zSV?nk0N=Lqr-4Gb^@^l@7ZhEP)|>l4PerlC@3s6RZd(k=*e zij<}nnRCdsW z>c`_bCC1LBe{jB|e&^#mhcky;1qDvOy5|%)jjRITh_QgYycv3ksa< zx&i+Sjugc0f&wR-UR3aD42QuNF}%}0e~4U>Ll z*Zy9gUT;Sfeu`?G&hTzkBWpn7-KuER3PblU{=le7$Ei{vd){4zco8E*(DVdI|1$In zE4ylhexi%L&ZZQl@m%KP6?v}ft~{;P>eD)m*4ZS&G)GKQ*3d7Nr?pyrRD=EM!lo2~ ze{1%%Vkcpnci%2Dx_9w920PFJ)@e9E@H~Na)EUsvp*NrtTJ|G4qsq_Q8m82~d_BEv zib+FOV4AT}Q}54rIt3(&`J}eKsTcjdHHjzKvqFz0r6vk~vlyf9E#;XE2H!I=45Tv6 zZs675yXJYag6XkdkJorro;?$rlf>^>&2VQqPTdyTh4l<8?_^I}XXQ`I{7H%Gpt73z zW+K=94ZfMcpDMnY?RnGpPPRf=1i08!tp;Dbdt%K8^?Nc4H^no7@ei-NpvxRzNK=2| zmZu1m)ZukD%Nc+vKZ`~u6Io1wLs#J*n})GYsC8&HBdW`ab{Nnz$*w}1PFiVR?iZWy zJ##dV9vg~bPjbJ_<}&d|&z=dJ_t7k7L15~|7qF|p&^#rSrMWUOY9ciWn*N$$n%6Yw zU{~n`6%#~eIrtU??KiMrd>?XiSpOSqex6p4^VRO3q>7}M=X(l8i)+(dsVU=ADzEIa zxQSPG5ew!hd5 zBun^0*|Sll7_^orHSCEse9uN1C}dn_6RNSo0AU@6u3?wM38@&WXRimN=h9&I3$Pia z088W1Uv|{UPM>`9zfN41hEYF^v9eJX%!XW^m?97E^+^ZXOC2BfDjQ}M$ToFoyY<)T zg}A%4G~|N)yu5;5EBD~Gr$?1z!sk`Nez|1q@_VzNHgozDko z_{pQs9+Vh$L*MgAxpstFr@wQc$Q`1EKA{8IO(Tll*WpByTYMxYpg)=#TNesg3Pm?+}bl`PWX&?D2K#G&Xo_tDm>EE5~8hFxe2Pj2*)`@Ji$< zE*A-?7YZtBv)&ZmQpJjps)iz@FU$wNti%MV#Vj0asq@y9 z(9p%J$iCtu>!nnq;D}%!rARg*heHEj_3`|y!)=z`JMxcpbvy2j?DKK?Ywywn^pgZ> z+O*z_rVQEXDH^8^0$i@`KO1+J+9T`ti&sq~E(A4jH?C;lYbtr_6J< z{UENHRJGub7oMI&qVG&8Grhff;^;OV6`LT4hE%50~AEB zxHU~#^B9yD>!BdRtwWPPThpkD9t%5yS!p~gu;GmxA_~i3WT`8O&aL*sh&HdG!6`)xpZE@3L3- z!v3D(&#FWuS%Oa4vmt8XH>o+*;mSL?w>^bfQTXFyu z>Qxq_zaHLG55KK6-NL!~jyjp1B06VBoe0Vu;t8T{K_4!?x42G-qlLanZ7KPrXOUQb zlCVG=J4Jh^7nse6um+}t>jU(C+#vx0XbKDtgf3bFADd%n&^`XslLHMHB0*~48){&Q zH}3_nA8gPjR5&WyHX3ed`>XSpSl@s{c+Y=szriOQZfrlyM;t&=<-Cm185M3=>s+5- zY*c+<6}n|S3g`7VlG~Q^uu%Sck~`MAwjp!7o^3Q1^G0akEf z`J@6RTiBs+_em(+<||NGbosxa+^vU_!>ck%&0Rr;*?gtyxCyHiI61#4^)??mYz@Qb z11@a}J_AWK@L`aeH-8M0O5ifCKpHqsf#f^5;E-rMo7`7$VmX0`aE4)l>>u&4f(3tl z4}TqFJ(^0sb7#(#zL?csO^|4ddCl6PZ+alQ6>9`?XQe54K1`$h(%AIAH ztnJo2FOc4Det?fVmW)@KK70p5wSz|0TsyuOJN*XhJ4JN?IeYVzKoh2)b>Si58E!pV zni_9uI_)({h$XDPbKUuU<29XM^!M00&!s_3&giEEa%SYdjf-EBEBXvB7-m#s4&=F~n^|$Rm<&ig>G ziLr0elZ|{2=+Qo{e%u>LK5oTMbO~OM)2Pcox_Goy}ZD}21*nuf;ubw$Bj734KuY5k;g}4f|Ab5%sw9!b#3=SIkwrqV zocwH5&FBSMunOS?M1N{@E8~s)cXmG?zlZIyd-?b!1V}GP+dImAe7A5DA0VCwgcdk$ zRg2B*A+l2=H9HBz->>5DxK#+hBWhB1_seqgOw7!~!(&EV))^G$7&AI~r;%+cGB#s8RkS6S<@7|&h>9td2@Yj??c)nQs z-7`Daue@HqUCKItz8n1yEx1eCpasy6RNkhajQ)VWcj>Lum1NMT@01M_D64rznQ&?*st!R13#}jn2jFTH# z(jhBkpGNR_Er)dmec1@+aWAH{TN`9XP;KvzxGh1F{0Ij8R0e z7Ift|Wu0#!p*oEw6uGs=q!CS$nOK_=+$lPo^|fjUF2d8|I$5PZ5{FN0fS(;V^B+)i zVsox0A({_kurWCeZr|r^invFCO&yAHZNL2;eZ|?$eu)0=U)$-K>+K59USBo;$J5_b zEVkV+KllvO=PMe{%jyDoEZ7cmi~?;|Wmk15b`Z zN|2>NLvV8*k%O!%98KKY)VGY`Y{;mez$A z|4?kWdf#4ncbH}VBGaB9_Lz1Za*q9FViJ9y9HJTI(3STG&cx?UbRXWKtW-*>J->4| zxk+XE=OgeGI?ZqLi-NDSSa4sUMGnzKNIE}U4;s#o5rK(ax#tJvHeLlPZ)KA2s) zfniutnZ{*BIcex~m*(V;it`+8LB@?KJxqFkvFne8UwlC(#d%i6{o~v1D&cv0=grrC z8hN35P~EHFlG4-9{ki=%T{^G&!U8h+)~-WdU0wHBNBJ{|l5E&iRaP;7P{{S&;#nnu;Xa@04baJ#;iLmBkQYt@@K_gQsRfZ3_~Uer@@ zKdum$Vh<8S1vM&2D4v>ZMznM~aP?0pFQalZfwFHyuS60&FiP!8iIm4Wv43?P$dnHT zX>BcIPZqVwF-1j$$8^vAFi@TMYSHS~mi}hUdwJO4{`u>0iB)B6ZtVN#=+4ySsAl?o z;YY^gRaadh!_L&EzDe{8hD_c-={npb&AXmv7xDUU_o)}ezPkrl2}sf$&%k8qH%TF?1csqHS&%W0k)Z@isyxtr*GbdTNwACtky&7epm`VBC1ZxN!S zLsTk#I>tmpn&RZdM+fEyl@FWoW~oT-S&^RU8P_cqo8wOcx-0RiE!--Jt{wk8H2m<$ zqU1F>d4*k{Dxa~mZs)Vd#t`Ae!mV?6ogXXhT)h3IgNfaDHt(95gU0X1sCvuw zaN7!wyepWQCsTA{!^}4So69AhSyZv1XzZKszIOe{m!xxc?(MUmzu0fZ(#g|LFC@3z zgL`Bbo*J-m2}Z=!k<BSX>tKh1|66bG@2tLwINQOMymxjT7*g7 zi!l`cf)Q9DS`FcFXk>w#C*E?7PvY>ln-^o!j0BfFbG?Ol*@@4o_{R$c<0cok>o@wr zxWPR~Zmb}iU&2Me?QZA~z3QPK(+Bg0PK|GqS=^)V3q`}q+c)pjvd0l%jgpJH_!GPYpY0>o0` zwsd!RI4a1vAqNA@ru6#z1idX4h^6>-f=L$KG0v>Ah`R(WRtFO$SZ>JydXNkI4z?{K zvA6c_oAl;S3(K}9Q&*EdBzMxzWO6>jcH^rP|0HWj(amp;Q9C{NY8A$R19mK$Jxjjw zCw=tt?7NIN%+_UcjWHkef2^+j_^mkHTan5hgPb#y>AwSCzPs6=T!G^nD}LdLOpPvP z{vGERyfYM6JdLp4;ohK#5wn-LB3YZ~Y$r@8$|pee247Jd+$(;CzNzA;uiE@kn_ zB3_1`Xoyo34F1Wfom)lp8M5i+z{&n`v60QX6_iXg1c!;C?W1sCsT@DE$gMjXxMg2$ z*}&fV%FrqEzPj^l*LmGN*Wia(FDK?z;kjpW&kchi<1!k4Z;l3cgz0%h0h=Rdmz8$F zr{Rc###!=HFP-1Z7c%ap(`ygVH{n@Vc;pq_fS*d&dH(%(M!|eKT{c0w6Yv>Ap&Fab z5FLi23MgLd*3kxMY_sU-X6bI057Y~Ky`AL4{*BB75>KC;v$R&x!6Zc;unfF+xTMsq zkM8F^y=Ht~@x$qv$zxwwe&J-vly_fVIWQ?k+}X^yKq5Uga}b7W^|M5 zO%{l!#i$Zs?&_@vYiCAB3BNeW8_=-B4rdZH7xx6>4nAjx_PG~hUPisoY2`x>>;zF_&V@xTa^})|8{e3&v*+Hv)3N5W4?m;B$1R9S>;Fvt zio$%c@+{q7`AqtAbf)Yk`g`9+y>^fuD_KHF#S~UfDW;|TKFdfU6rUS`&mYk_?eKPX z<<1sJE9YDNEf$S<=DkRs@rq;(p0Q%wz+n#ukLfYw)upcy?ccUkq|F&!w0RV{G-htQ z&hv-#f2kmMNpgIr=pLW0KTa~=#*LRVzvEHEeVKBdWS!&&qgii;;WnypUsz)XFd7(8 zu7E$mz6i=O?~BhQ;OD8avNQMjbFz5`eyqB(H=ODJPS#N-c!xcGCT$=T`VZasV*qVnaVkR!jn%Rxs zw@ss8*-nZ3V(Gr8%-*ZAx)q6GjN9L)#^a(a?8PG}>}6ruj1gfGS`e_YFPl-UpAseG zk<2cWAZm|a44L)wZ2SKA4&J2~Z6EGUpMj&lvtu(pL^p1==YWU#YTUV|D#mAWgd&qh z&$ikW8fJ$3Gn@1dAvhQjS1{XzrwqzTJH%MU1K=b(i-_&)_9Sj{@lgp*qTIpQT_m>- ze!A_*hNbgPj*lL_dD_-}uhY*jj=CxSHl<63ea`H6iVQ)&d~lwm?^w2k*1q__L4JGh z{h^nSUZL+D*VE?mr3)h_dM+3@{Ryk6gC*LGJAv>CaVb{WW>R5ro?lOAGWp{=*G3m! zvP=hT#tlU565PgCQ9`aKc`YWfO`VB3*h$p$Nt%EAj`8tX`P1jx;^D^%K^LcuvKEio*3TI7{WDX8S)*CFF zQGGGjBh6>|S#>H(X2~s!p?G)!>A-C~UZX8-euvg3i#=O-K2&etw(98Mcc)T%k9`Qp zS9^*#%Jl1xFGTiz_eg5BBZ{;{WlH%JkX+!(x*FIygPL_g{C9PVSF8Td4A}P>5P*X2 zO8CPQI4AiHTnR%o-zFv05`}Euf;L=dmOIp9!c&?g71H|pPt$;7Y=|Av!@y-fkvYT; z76gt8TVw}5Y=z|>_y`h7?z&>j$(J&_bZwqmFtBuWn)rKp!FRvVi}X9Xh-f!#e*I?o zX!*x)J#}>9rl9kI$mj3y*l~FN8hYmew?CMC^BxTZv$6mJ6fcmo6M}o zr;?b>Isu;oW6^~+l*0J^8NLPyTwcXw1xVF@_J$WXIp^LpBft59eoAlA@>MisHJf#P zhTOWddF%JjjK(Ka>^*km|B?1408v)$+xVR4d1eJ>h8c!ohhcyL5s`I71#tlpQ4tLR z6%`d%M03}Oe2H9eC(Yb)d(G6$Ej2UuB{M5uGcz+YGgHZYTYL+dhwnP)nE|xk-~a#n zK8<7<<~ip+=iKLBuj}VVZmk2Iw2s}5VGHM-pd(>u`EpuM4V>(B1MREz@KAdx4DKp5 z(9&sjCDr^+(g17-V|7f^ERyKc3#OWQuqHUxsP9xSUMaW)Hd-tp zhkH8rtGs~i*Zt1@`YBEtPGfTpTIP=ZI#xLod-?1a5o>n4;~KTUVXM$ zMryGepNcGFt+H^ksv#kF`1kNc+;Pa=-QkYm#He^B>d}-m@b~m?a;_4Beiq)feYk=j z9^jd`#Yqya%wMEV8a?0G?b%|v zJPD)nKqWjpY?)wHLlJ?|!ysoQG;~Z@IV>F=8WjTFGR6dh3^GXId8oD#O@$um~J-^EpA1)#P2GPzku^fydgxgFqo|qk*6f=Hv?Ebg`HM$?BPp-m zspWbi4!el-ZV->Z_QNX2R`DlZ!R>bBfE$2**c?{4PSM7hl&LYqnKgg(B$ zK0OP4eKipgh<`>18qc1Ezmq?7jKx z#UtYPFQ3fof4S`K6K}5G8@1)=g$cvoK2%guSM%=ILgj`}d`4bVxOzO()3t zbjnev!Rc`0lp2kolDA-IV4)WaWmLeHz_SI)Sh0K+)g3Fia^meM<1RVCUFyi>4m+Z- z(kB}4$!RaXk=nZkgAQ6%#|sF4yC^c~X2YbORi<>Ug}Lv2vb%4hJw{TVyg@ww5D}-l zjz1hXE`yfGr7r8Ug}Zc@A%E~xK7mRSkz?q4C@%c`sc64b9*FkigiK&Rr#E6#{NDL` zieEzO!RhZm6>EpAn6|;(OqiR8%7eBpK6RJV9gGcZc3tD((4bjrh)v6#pU@|7lEzRL}*CT^WS5A48jUE1=T225S-b92X-6j}1 zpcx@L=>u(Dzlpz+^F;HT_?Vm}ZvPgc`>0lyG&6lqv5dVZ@Z!Mi!vvyxS|U(&&@@lW zgg!vIWX|3EKhOR35szDnhd#>)ZBKW_Rg9gYO;BwQ{SIxf(O{2jcqOnW{wHm3xA15K zX3B);72p3PUKDSMlZgg)9G70nZQe4ayoTxfdkwJP9J{E#A2SFFpRvO!C+MC<+SnysY4kDlKEwK%p{?h;Y){6>BY2|_f@Vg&p+&&y{gkT4 zGKSD9P&+H&VPI{rJQ+1FRoN)jTR0Y3762HpukF5cY}$vPKOwr~;{?$C=DkeN4z@dn7HG@JBI9Ut(=1Q2+%hdwcDk(9{g8Rg1L|BDd?g?DE*hBoD<3kR*qeXgZpr4h%zvqrp$*VX4DB&i(9?`_F&bZ=Lqy+?`I-g~ zA5TvUf&`wx1@i$?Jc|)HH;SY}D8;NjISd^u0&DB0H>%`dMz}a;6{xJ$kACI$vaY1) zZU3=IS=ZRO?1Mv>Y^eFq=F^{$t$kn0Th?<&s+pYn2EK4mqJKBz_X$tdZIyr;Vii4_8L2jZydiyhWRa`u7Y)j7*PWgSTDLrxjgvq#ji}=)V0H~uI*D3LqBL^S-r5}l@UF{^Abz5v9?rdLlseM zZIK7j3T|!~ikq9@>kIsEUofb)h$qt3ZO(&8M^a+(L0KIYR49Xb3?cCbq?fS;>5zq? zo5k-BzyHaLca|J0R&Z4d$Bj(xw6Qz6=2$)J-6+53d-Yq`dl0`}{6*~W;Ku2Fq|Mv= zLIZyMD&}4Pp!zD}e!pmR#r3MOlW}WftgL5O!FqN{<87Sg{*Yn^U$)=}q^H7t%japD=7ADY;s52(x3e7;TxqK@a#E5;^sWr$nc&G$r4X|UDaZbi* zmnu)2ykWWkNp`qHyzlyCFxGWT4R70O$javm`?gEX$$R^_eA~zyrEl1Y|EYe-QLW>P zY73w17vD8Af9G*-`^f9$%5AY;d&GV5;{{V^nvQvY^Ra&fxhh88AqwpgP1T=ECs&wH zcwPI%Vu1ohFB;~(0rR9-d}cijl4li$hnqDTIjC~1vffa+}L*Si!pL~B^JHkTaC;w-MRZ_I|~J!%lQ zVs@!q!*NQPN+&qc^QoPMdmOq9|52ZX=cmFJ6-g%c$H&jt)!mzbyuvld70%+giO+t+ zX=>aH_KXr?C}JD1Oo_=4c@sZ9t0s1dg;}Oxtz>%=_=H$($=kQ5;a)TIm33#rEm_5V zvj>b_Ff2VGEHW-Tqg#*RGd4|LTf?tXrLX+z$)0?#GrG>zr!T!bDvsT1QLv|uU>=OQ z5iHb7wO*q$3ar;sLMdjUZ$#8+5e+rgjLc-@t-^MW7u)VGahLDC`hY|Y(WfSp5hUfo zbv}nzHXP+P^cvEzACoKEy||Do2jIU`YM>&3O^EtnqUw%&TEim=B@yAUYXD-Sgq-wA z_}~=9}i5#NkD`NbAu zJwEt`BX+{DjpbVglbvOoizf^fiv4~)c~tyto0}LxzA^uP<_Kx~CKykjykGg68~0c_ z?V31LGySWVURdmbxuU9;@+n~K12J|YD-&nZ+#Is7sDt$NS6g&mp?bMLn!8Q@H1#C~ zMyNSPg$}KN(}Y3N&v3Bp5I-_;R+k-3>X+&(C!UEJes7a|Sg0kT;=95Q?G=jJf4%am zAD-eU&Pl3n{G42I$l8a7Mra)$kV@0A+<&cF+^vG6IhG9=9nCWNQTx~6;pe45DTJ4Y z#!sRkl57CUzjclP`0xxQm9nBp#=M)(6T*t|6x2|2C28_ZXaEly6i=yZJ`7yaAtrHtzJocB#H#j&nUK6P^g(^JTgto~n^!E;> zi^T>hc?c~=NfqETOD3(@e;u$rjg5GVTSQ1$+lpHSlih{db8O^CM}uvMjeOjZXgc!Z zoVadX>Chdr6st9yEotP&E7Bx7%)%s!pKAl+Axr{yZ~^Y%m5?*FT%h4)YL0{50xnoj zPh=B4b!uNwwz*W<(|52_v%7X0tY%{`nTYa z4uTGe=@#RWToTFbBfN7s(v~xlP^Ff4jRi(&0%;gg@!YDNzkYt?fOj=<%Nk0d8P^V; zkk2i;e;)~BF~)c8{C%Hqdo6!7HwI%0j1CL-Tr+AwuXNED;{m2MbkH??M)RID@&!qG zGD*RmfN|#%5_MUeLwZI)2~<2y@*ykBXS}s<%Jo$z-}kPrOC2~)tKK_y#y}>V$?pt% zYgIuBm{(SKbxpKN!Xdy2spCs<7yBcF9c;kE-3{NrGsxvgHA@xqP}G2cqoUrHNq@A8IFdgt0D z@#Ncq-XEo|SiRd)Z}HiMK147bK2(^&8|8&{fqP8!v5EnIWER0dXpn`5g5EDQ z)a++6qwmJ7W88->5k2KSpk$-P6%89#qNSsk8t?RKjNH&pg<(CP8`GnE>#%^D3nD+s3X;2lB7f}KdT$n zf=sPfgP9M1)z(Ov)nq^(-r&qmQmJG4|B3)YW5j6ocj8{5ehufC878jwaV6YMh71BY zen5X5^EAb)R-Br*)O&rzyS2s19oo;atu<7F-VP8U+!_iIA}`&XJ#qEfbxU)GI(!dq zr@iFdH+|Ytrn_Q_5<=%qy^ja98-&m%N_2xLn2qMD`@^iAcfFJ?(iyVgCCijfwn|J4 zKItfXY^_2sF|6O)StP!lE`;#q0E&Nx7f($2(g44JEr}NqJ>^xoB?sd0i^R^ zdwF+Q#Mp}9m{Z*`MkhZOZsdHIwZYIm6cpV9KZmu#{eK|;0focKw1;=;MLk(qiggMV zEX64FA=}dfss3n1^@lHzhcXLodS5K5ueZ8wvnpvB-2Z!(5<&f(78^EMvMF2YVgAZX z12;ntub_I^;+2}0)w}Q5g~QVlLR+=%(K$0`(8QG`n_sf`X1ci$>SygDmu}vt=vZ^_ z@xDSBpQ#m}eYZ=nld=Z7FlIz6bIh=@64L|djGzd;bRZM+GC(_e8-O{b4r-nd zQ`l&mLWi?tGCZvz=_zBp?k&eJsHzH_<2Q>nOe2u##rIoWCe8tOnk=aUa-_wLBCQrZ zMOcS>uGJH2*be+$+JPuAV)-9eHrClSN&N^|lSIKKzs+9ZLcW9UE5pg8HkyE4iauk5 zcL44#Z*72%_Xo-rxbvD&wmQ*@Z17;hSd&w;$oPzv;<`P#gqY%6x$|Adnu}8mMp}y4 zi;NPkHd$&;S}~`6Mx)I~6n9W-PFbgw3UFE>R_H7?XXHp!q%;n`sq?k54)8Og`#^qx z#EJr~H>X+#LkIV?^bQJvHwgqdgrJzC+mF2iT^DNH&k+Zmtg9nCyMD*7YJgElQs`;8 zfT(MWepXpmBK3d~S3xjdGZQiO=6+Tn!D85uxyv*An|GP!!fk7T!2I;PDAAGTg_DK% zX_1eYMnn5q+hgsJNhedCne_Ph=DuF`PE7k2Nw1P2=EW)mny?}jQ-$tc0#log85WdnB4>cyY%&LNul;&)f+^C#mska0o(l6tRPh2QuD1_SDB zQ0Zo{b2e3YZQkDK7X#%7y!(m2Rt_QQP>rNkH{?*PRqJF`f zTBn!?e;&UBu4$RaewmU7F;6Fn`p1@x!at?OIVsMp?tc)Ia?Ea?-BDt}rXcsCEZo{l2n6H1xjnyJN%I<==}%vGyPcI-}=64GMo-d~H3=Sjq1Xmv<{d&nd} zS#I2bJSmHfr~QadIj}c0*j?h_s?>wt**&9=Q!M6B#Gi@p4M+$3maoHI?*@Md=rVFQ zT1zPi=(14p23megFLDt4C3w;(1@m{1gduXf90xO;KOvr7|2tUaKaD1~(8o(iCVwKR z!NT7R`YecS6o&-i35cf(0-j)!Wu#lY+}u31M8&DFL%``PR~X&h4IUmktwO7i16_uu zWf;0O3yR>Wh7|VjrvE`^;YykYq9d?7hk>3_E`emmh-dvCSBoFS5W8k5`^W$BEA-pv zRh%aH(?D@PnI8CQFi|}Yz7#}ei1UIj1wY0JSCNa{7C{9WsP-T=LXeYiT}aAr zpO;*aa=d)sCz#S5!nU%rz>tyrm_e0%&WQ-2)o`sNPOYQ;)u zmn-~MPGEUX;7>_k^A+rCWYw`c;B(?i7@w1B4`p!y<&u-hsfoggOC?*UiF?ImIphR> z0~{q>Amba}jBc#qp&wR}iH za+>%&eS#S$X*V9`Ng4IDp1tAs$dRN|DRU{-2)GqIdKXf9KW61Px%6;=5F5piX=w(n zzXjL`KEnq&LOg@Thwbj#*M+RV!HLn1x*_DZ7*R_$tQPBuVzuCXQOvmjZTkq%rA&Td zvOek2p4KpHZlN|z7Zx1Gsd-ayNN{eUAtVfc{h&8`6$(m!v!A(lp&yu4q?nNu)~B@G zEGz-Hpoy^#o(_vMQ-e~;ENF~OK|i5B5Oo94QC1cd``wYFn+n=3Oe-$;wvyf!ac>am z6(sIXS;*~=X-EzmHa+C1<#^y3D_{HS_4D}$gQG`|-u8OU+QZqOp75=jwzlSVETha0 zyD_M36_1HGyG;2WtP6@Se`v7h=1-h5 z%bZbV+*n={cinnD$GtUI_vZ5R?>`YAIBv)foPV;L%4?3u*v$R$0`B>1Hcj(Nck0W!LO(b3=ZVfGM|Y)psoq@3G^{qESR1}Y1H;E zG`c24tzc{m>Y%ySqG?624z49|R>4_Axg@LvTMpK3K$}+hWz$Y{CRG-3fNx+_ z_WhwSS_Ijq#^2=I8-@jotiNgR}pJ_$01}S zOGp6HUDU*81T7g(lljiAC8cDrWLP2jwkOBW3SCc~+B$pwfX!tuED#^|8ZjoZS4_k8 z%K61_KVMK1147Lqi8Es}!gHmg{p5#}KP;ME@nLzbcK7W0xeNN#Tw78x>--Ks}U6EXzeGz1x!N}XWI%s)37i%J&(U$GNo^bmy(U1ktaHJIvLY+bF|xpf;O#-`>z}`^5lV& z2j2JhU#*KI7dCEwbJ;GjeyDh7x)`2vDt5gVyFLW_J~7>2&0&#) zY-XJ~*vti)gUmV)B~Td+dZ|)JisUoCL3RVfhpwpatXD%w(QZ{3u`0u3Ln32i7+X$0?dY6{m zJXx9l#Ypa2efE|u+|em#CNHd-d49@jkNldfs=o7kRYSs)xI1!clOX|%N(E0Z&~~ec zH-PcAN}ktJW3$OfpnxXv)Vu=C7r@kM;guPLUkOGdI4eDo!XoFEpXLJ2a-H@nghf}k zAGo+&P#og!aCw!Lj$NGpWU&B+K=(OsM=aSi({Ts4!!=|+Sg$RahTDNg6U?x?id)>tA2> z`zsBn{4Ivepv$x{Zx17mJR6iffZHNB<*g%?n%&5K6jC74Ok| zva0dEA`J4Nj9GIqCNO55hUdYh^LocV*qH*)`Qg+gB_+kRrLP}=*UxuyVd3TYy>x!6 zV;^E6Q-20#>wa{c>!jDySC7D}=Q`gV2`5PqK( zYw3G)oqm7jy&=1y&|rgbQ&OfaAk%mVZe}Dd-9l&%)+`8qP4PR5Ow;7EKb3lw$|OJn zjMD#>nO9-ZTjKYJ4xL+af7Rx~>X{uDb?&^e_w@&kI{u`<4tEoJMUZ_Ue zqYZ1>!bfn+h;mu*lVbrOzRDJ7bGf~B=oh~{5q}d%T(6-`7Q}oK~md{y8WU zyj>_6U%II&d$8Yw>Z@NLZcoH?J%g}$# zE1j+6O*g(XykSft1lykG6HV*6L5}@GX~VaikK+sQy2PkNKYoJR)~Hcr4&dFm`-7nJGjIanKgAxV2;aTeS+yD`d2vYQ9yv z4HV6Jg+U4g(?K;YGw2O4tPJToK)Jd|r}bz3F4AZ^qn=)~hv5~kwgXO3%g}sluJEcw_?m%)Nkf6lV4SAhK-5s{F z9nhyHLg-ckaFY`~M)jW|F%n#ckqe&UXuJ`EDA#8%Wmw=H1jBeK)*WLjiZl zkwyRAzaQ3gTT*aR^qnapwaig8UZGTe0vbdu0~4c?S1Dv_1!|S)!I3bD;kqRl)tpc& zrWK2+f9yy~;+od*UAv5(?O1;nWk$fwwT0 zdf_5J6esHM5o$<%ZpsbIyyUsU-KFciGTx(HW;J35@~E+j{f6o#IOKjbjO4<_sTt7r zo4}Vk&lU66F7xXA4#EqB+yM$s4*E#xGn#$_x>&M-8=ao^W?Tk z*CyAJptq~%?-74kzkbC#By{;IyniNmVg>mTygvXZ(!D&CM6Q-Ac%43253)vH8N`Q3 zv6aDQ90ukeS{Z3KO6?NRGY4;oyF1Hv&?YYRBR9^>oGpHu7#h;$eXf4@?)hkHyLe+x zLM|XW5J3Y|tUvAsKiDA}Pk63ArXV-Sg4)ZH9l{cDu+^F?U_!y)g9E2bCf6p-{ba}d zK@%pA9Ff6%gSmWPF&5>1S69q-=%6viVisPog}|_e8wt4K z5db3)+yIB<@5bg3@5#<69X^O#8L1gO3W^_+m~3>W48fYpQgddOJmj=97N72v^ZuHD zy#9Sk;+yenI;XVn?Vp_5HYBq{ocw&*&`n)!!+OrDeW7$;AKSo=W9EunQh9tzM*AZ2 zPNz08?Ysjr+k_`T!jriUjKkF%`Azf}$WVX42lE`V(Pnk9N#8=mtP-R7j>IsVdU~Xh zN%td{X&u*L$Zf7v8&F#w)kD~o28y>{J8OD z{gP9M^y%0GH(-Bpj`D>3A#|76Sj#q*a%w&Y5W>BQ+vEJWglws2JDtrD^}*^YeR7>`8i3fWP)2&7C^F&v-JW zsAy2%K7ENs=FxL}HOg@MR*&!Lp&-72F-GtU8hip;3+^F_?Z7sO=B%U?0U;nWtOav| z^B>7I2TwL*$;MHd1YZ^r2E2m#TKd!R^soMGJpBtuE2Ae|0#kSr?5!l?nP9@*la!E@ z01|K9K=`1x6Fdj%DkQi*r~lHMgnmDXejgulY7Nj0fn6?#Hl;c3aB0UYP12@8UddS> zZ8EXXtU&9gRai-QdoM+Q5_??!329sQr>y+ATzjg_(SvwCxka?%FGMRGEW@8CCyBnH zZFxC&oam<$&-!iU_@fZ}>j&hFGGXNpz0UMBiiC+O^A;uUTDt=FI6~UHip#Qwbj3+Vw3YC7~gqfwxyjhi8lR zno?ChSuQ?5WH`0@`im!&+oAV)R8+K*1*UsM26<_NLbck^ARbY**jN@)fgIo|sd+i% zh>#B}s8lGKxrb9n>lRFWQ%x#x4McutL;r?+{z2=`qk6pm&pwB{=WQtJloprOzk`4G z%q~5$x@Ki4yc+Tw2Jmk^iH+|Zm-k}9+|}(`?agf;o76M8+r;b+;!mBjdZeZI$bz54 z_y{s+R?f*skRzgLpXO0~d|Y`sSB?Vt57au~gyx}EBn9=OZGeHDo^EX&FSA(Uk$^-c ztIP{%-4-v4mteEmyBFHXv*cQ?xC;v`@1 z3p16pBFrfxVNt91#oxC7^RQo#pWQ3jAPgH=Fx)@Hf60=6b@)^K>Fa$*&I`3R$GFuS z70>nV*^duLUHH5Mt6pw9ctBrkd%fE(TXCL!#Nfi#b4Uhhr@Xjt*Cp}KUz0=kl11ao zxX7-rtsX^h7n+MQAU0!ww%2*+WuWunbp}D*6Cg%Xcnra6$(l>1ZT6CehqglDLIT%q z`js^$S*bCRrnnK`Zh8LU^twm9?=8}IhWUVIw75aM?YP55@rxi+#7~s8-o+c*B_`e5 zOKr8v)b4&tHBdm*Xo3L30DguBUj*Y=qZbQowrKKYedbn|4nzfFqRm19LU8O*7$(&R z8OWnmTZa_`pW?LqYuh7p)y<`!#3#SXeW`Us9q5#nQxagk8DyM1W0lv*122=vdFV$U z@!~0Q=f0BzM{&Ov4-`Lc7&HR$?&Ucti%1W6$uK??ca&3+sY9tfp_##>q(9v~E$}Rn z=Tz*XJB-#0ve)dDc33kKW#e4OiI&V)+&}{KD7=3$zTblR3g2fqS&i}7feonX2RdCj z>_KjjIFjzn#_f(1qzaak8??1C9cYUTdl3P_*hvW=Q}eHd%4&(ZNUG+PkFTg4J9^&S z_OWd`CMU+W7q^V41m@zbS)+ir7zcPyy7MmzC44?ScN&Ayz3Z(!uHoRpp7r~hhS()U zKx=qnI4d`Da)CyW+s}2nIb~_Nc%Ou;yL9&n@Uh1wbrGu9z3Q{!)iHkI~8 zb9gK!%~M-fxf3>R3UKFo$a<#Rx~F&U?4#?53TIVRvQKhWp<9HHE*>~xnT0Vj|4=WT zS7u?Lj{0d*xY_kjQwtsOjre*Z=Hjo46)_dQaI+TLq_VqU0vE9BI{qC|M$sLpDMP3!N zZ$=(aw7Oq+?{M#o1q6{VIx6l%dKGo;ARs1f7G(9(Jyu2SSsdcHPMHywFSs##y_0{q zi6r4l_@c2stKM%{`nyDtaE$c(WcyK!5SS_QB|<$k78{|4)64Wgme7045Zsc(CFpck zQe-p`j}aoi;To2+XM|#Q(C%Z&Murkg=2l&w(7nLtXI12mbw0}*w;um)3E{}Vl7WM3 z`wkygv@};3u`FO-m3iHJDcuV{65ri(=gc{h^PX5VZswBTYs#n1LnIElPUu-HWEThw z2c2M46XFqQVQNvzw{O0~Z=>U&b+)mP zPzWmJ%-RsMUx=GA8}UDrIz(qOQA#O_dq#!STy2S<2V_OlDr^J^&Esq4v$Y$WE02A0 zhnRj-wf^IS-S3%Hd3#4Sl^(~MP;TwH|ZsL-G-!rTlLA&soE-Ip^P-l6=yn@ zHC8}>OPOfe7SKZPG|cUtnVilv#~qg{z%4;*ajF;^awNN9x;FkTBR#rjQBy*2``{Mp z>SCmKF;COm204soK3%+~5uK&D&A1j^rxM0Jz0Fv!gRJWsW-T?TPW+MyPQV#oShq-6Ptr(pIi_O^f)|yr_<}5 z9pA@E1Ct7B-#-3n*@@rQ)fJ{~pYgA|?~pnl^FrsHp)-52Flyb1Toy z9VVBx3fVjC_a9G-)5R}q_7Ck(JRQWHeDTw;-GR{`i;GXL-B~sJ@rC@P?EYuT>z^%J zh&@}1o19`{QS=)RH-*y6q*W1}5eZ+o^2k2G4x(8HIPmC{HKThF%@0nPC^XGHoOi#I zyTFsEm^;b(rSD}w%oOk3yBj0_6}8h#MvurQKa*9C(%T!zB9be<=6HA&k*^}E?XbEv zII#x!U$N;vS{TJW3*D4D@WUu|N}XC@h>}ud8Ub_442}RB{lMmtuoF;m3+^}kg?B9O-nu$?quY8F-X2eDL0=gewS7@^UZ_PzFB$duqlN89#?k{T`7n+kA2jp`_2!-gD-{!1B1>ZJ=xg|8BQ_>okG+Q zo-ORUOQ^ICqa*f{(`F~MJSkN=rAZ4bN2`|wx2QyYdc?FGm3C*rRAI%<7#=+@ESu}J zgG~y);q({69ahbFGo1vS+B842?YJ(ZHnk?}ZDNTqX+-;q=N5W>elB0CY5e-P)I(mD zC3D^njxL*Ji9XdGmIvLB+vF5G*C<1#Rxek$@kYL9A%H9tJcXUb*-oI6q=ICNjV2_d z2pF=i)sE=14c9NX?E2z-v9_M?Lbw~Z3;L(%RR-eQaT+Baq)@wD?Wx&uds?T=`hwcE zwJ;3-z{vymA$_J+<0h!|sw~hYxhXh}$qiM5cxcOK62SOUVbBK~DMCBn;e(sqx)fa< z(@ku6#4XquthG-P@=zXqK}@0_sOSzqF>U+>>~QE)#U{+qh?p9B6U=IjkypB-8QqT( zFKT!q_e8g_tdrRpVWSg$dZsi}it0y-C2U2|h)!6jxxOf0T-iWoipOj2k)(T-WFE;U z!u9V9`nL~O2?3oa(7ChuA8>5v3YZM;5AB>@eHLSa7a>0d2^gV$+NS%Ov_QHAic0rF zZ%p$d{MPl|Vr= zD533LwV-TSSSSYQz<|!O^T-{OAkIv2mZ65|8ey06NLKZ~lUlyC^ydI!P=J^+a8i3! z-~(S}x1QShj~2Q;H^zRED+N&ZFQjhHD>-iDR?Q;OUprvMT!hZg%`A45aO(%p5>xn6 zg3vqHxDvZ`FXZKi5dy#1=q-3>7y3h4DolW;Py}Wb0#Qs-Pt4$P9(#bhBtJbu8wSY6 zXS9qx(qsM1%O?J)x40rBzpXawEck3AUg}rc|y9sZ=j$?@vJUXtyZ`zd6U142Ov$D zlQam2+_j)=jL_;9#KN(Rbc;EKX`sSO7|pId=k#HZxkRVvr~3NgtkSGo@sb0F6cL;^AP z0AGw9B;pn}b{!kL$=!+;5vO$j%h>4_d}<@K5HlI^Zfu-bFKxz~7a(shu{NV1&V$N3 zwJVi(KIHv-J>)&8$mXoR?ni}g$eJ>)h0r?<6n8P9lg9mGH({*e2D)f_rAM|;?AlJ3 z7MzAOTUw$f1jMDb$Vgky!pKO!OmJWHEKC&qbUh3GSRRRm8(0+;Et{cbkUsj)ky|>A zeM4_pSBt5fwvwO`j=GYj2&+=bVuPR|VYjW_dF_V6zOkbh6^suQMvlG`yUUw_ugrS` z@C9c#jj!l7WJuR>T{})8lFm_KRts?flfrcEk2`pPT{(lX5_`%T{|X@wbK+A3B1p+U&c zG;R{}`781wS%$1fx-Bv_q+3Qtx2(d{j10TR9@D+h9;(-P_#l|zo@LbdqXIb#{kJ$d z(0PzUbo^=06np{6_{65Le_2qA+8D5To94_qBJ$ ztSv9TmA+(BfvPR768W$535th^b%-o8>L&`q8UX@?byEdylrR&IzI~J`!e5+<= z#}gaFoZY(}biH2o&nupmqp#Am>)!6@_+|b|pK1NdmlXsW;-Ygjw!=0-nDcy9ZHQM) zkM>pjVE-P$-e!m^WGaikIPva)S+W9lu!MMz8W4t0z!2~K02$%uCwZT6KDEuxr&A)d z@UDgT884$LY!^nWl47(z<9I$HW`}LfuSpJf#TL?i)uVQxnBDlS+bMq0VEXl|*6ns2 z6|(MJu!g^NjE>HU)5%5`Bmy<3Nd8}R+4c~MV_dx?5d{4}|XxynV%4mDL6~f?pdnHMr)GLUQAD+X^Tzxt;nb!rzSe%`P@Dm<3VM35q&f6u%GalwK zz-Hr(peBs1=9xgTAT&O+;kv$yJ)r}?=A9{DFVlBUYTHh+X2+xC_U4YQ`gxD8?35Op zlVK^H$!$QiVp;2?_>{Im_x9}|p~w8%wu*}m{c&sGS$>h0j5cD!TZ3ntI;XZG98Mhb zbX7y)nOSB1WdqX92{}2*sbO7HyTYyDIEzf9*WilL(0mtaN3t~D8gHdXt5l(PkK`UX zg>lI(+~CuQu)=f0y^?}D7^mqh6$UA-p_FxoV*fJM8G7Z|sp^0!os@`q)6*(>&8$X> z3E)|$8L+R(c5nQTddrI07E8|b(t&LU`ET@kZEEVI^2wdWx<$)X6<(eZrtzKn>~wk4 z$Hh;semG~q<{_Vbx08gQlDz532dCW0-JsCzP_OEU4QCmM3;H|k@5A}&2C9va+l_bsyUB;0GJ!RnA= zi9*Fzb8wF;8NZ7Ssh#VDC}rYPj^eS$MqD*{4Wt8`5D)Y>e1KuKSYCoX^M&;ifL*_3`*Co5U5`Crm{NNR-4R-M#wWFuTIPAE`%Ny&3N)Uk?Wu|m@G#Gnu29>)?OJU$7N^m*4 ze{9BZbpOx~Gmo#iJQA2C-rhfFzxYE22|g#@&LRN^D-V+3Z1D%Od+Y2i;<;?nVax0- zq-aaU7Lw9KJdH0XMJ-kEakTww=bCAp?q)51ln$}-ne;5vUn{@J*OpM*_W2yB6UV-#Z2nSPL z0yGxbw>2|rbH~Synxa_E<+mC!Yx#gci@c&ku>Y76Yq*zZjy2l49t>Y&Q9o6t=!VD# z7`~39RMPKbNZS<^rio2hPZ8YMg3N??Yhdiynbq>08U13z11;{xkR(g43C1kpM&n(o zo$sPOj(7rl7cY5I(?!D6R<(HhWp7WjmFge)k+V^GVQEyS1VE=`qq-^zIsFqT>U4)+ z9Vtsj{xeTDL{=tSzDIDQx13(B%W{)>d4#rY>)$#eh)<;7)Zv?nQAMLh^&8rwOM5=o z^}XDTw45A!#_-~NejNRtA6_?ZsBS2U8k&(YG>VtuH0rWEDC8D;+hP+gMx!VPbsmHD zIE#=gEP-b}qu*lRq-zMf#wta?tjWffUnD>Eqh!nf-Orx>HU8eAYfhb0;~OYlD;N<0Gw1vmI|_QU-$_RNU(3@_1lot-0u}Br$dKXk=^n!8U#-dnFsKNJq&JEt1f^9gqUgFYNz;b;?E3@ z2cd}6kVCbo3mz3fkwyfg>^5R~wq~;>Wa{Iefvxvb!`U}tTS>sFsS)2_+;c?zv9NP= zIr^+67}Y2Kj2GhYneT5&dLUL}zH%m5ocLurjpI+=+lg5#RqZ?s{~YXDyx( zH2mJlPyVdCw8gAm{bBWrh}rxmXA!D==je&v3`!=c`uWR?$(4pu$0<^M^k1(n>9vE) zB3E4HsRK}9#Nudz1#vW*8A(X@qnVK$WJZ*NnkGkdIzi31$c;!LX%?tpHX($~vLnvK z!?W2D3$i2s5?9`REqX=xPhrF>Mtm4E`p%Dz4rRL!Or0U+M!J2pZQDoRo))8AxsjR3 zpxr>OhUP|6(gOt#1@C3@0(OSUDpLUg2dK{)gByfN z`=9AOkKw|8cE)*t0Z$`fdZk$j(;1Om0;P!jk{u_OUMt8kt$f_|wVW|k6D9*=m-MFM zE6$1Sup+Hw+N|k9xcJ2@i+il|Vf}87M$Me=RlQ#=8-eI8grO$vUQosBmsV z)Cxfr8Y(mRYjL&8d?@4$%`+jk;o6$6V}uwTMka}pS?tmPLv2>XnGrSx_=wqQAF-jr zyyt_LY6qhCcA&PB2JhmK`j`G?3*{{ z;Z*FUq#8ojz4JcC6f0`@U6^qI9g~mI&ySL$`FR;(`v4XU2OTX#Eod=ZhYA6v=8{-C z2zYT2vvY{v{Mtq0TUGfbWo!0L7@itkP*=y*Mv3{Uz3sa$9R5^1zA^Sn3L#%s&DV?h zLf$Fy8^iC2mo5P^FGc@0$-sud8x?xAdz&cux4~raurhd67^_q?v;rGJ;%9Kcp(tru z3jg~n7Wi+cf!*8xzrlgmQF!AfNN`|5inE@s_1 zAyA!zqJ7&&x6Le!rpJWpZ3=HsKfwT7COlcK^WS4XVyp-?NZCcJ;;*=oB>L~r9}D{T z&Z)T3f9V^Uoar2&JJ|!C({jA4qE^N`7C54jg0BRZVwc6)G_R#5i`D$ zEMgHejTl4mBJur8&hMkz4m*e9O6M~zN6(_0R;zM{S~KugIkq*;RkDSmH6|=h7VcUc zBv)|r@;AS$yk9UK7~wwyXPRP!dpXJ(jPg@J;cSP_6soX8we-xZQB3P5qmWdJP!$h< z34Y|$&%t{)?*j(-sC9_fE>~PH7~c%}cwJoSI6&q)VIL_v9qJ7k9=U<$wB+uBhv30s z_bc2C1{L7D2_r~%P6oy@R3H?z#lkDCMyC0AT+?V+BSKQ6?0~fmmgq@h3kwzU2a!-Y)LZ=cqqu}Na3RX@B1WH6& z=!2;ko1aWmjr5Ur5Sk*mi(%ME9Pk;-$8@a<{vJTlDtD41Hmnb;?wN{v|Bvw`eQBMe zJ`GtuufwEx9MeabGdK(I?08fg=#6Nr(CEZhNI-38x3G~WaFGIa1E7P#z-~NMLbU@r8gHxdnl!6)JNXnM>fwgb&9e|?%1M|-FtzSH5x?|d$1=k z!aZAD_c-D%oI&)2Q-CMwy7z2x-80)SR4H`$nP?n$8P72Pcxigk9pbq~{NnhQDKEZU zac2CRYx=d3$cG)n_2O4z<4tk>iMUS_mNdS;>jr=M9L>zS3YTPzc3MTZ-zYV|y*E9mv4f=S+NV@MX4OQ}hWLR^Qh=lqy| z3;0RZG5inFVinV7l-V~Sgld;&#m;P|*WSy&sBDKr@Q5v0dt`dFPeX#c!j>da-* zxhxsf6eqZXjsX+}>aoWj-F&ZTbTUxvOf%Zc8cEQzR=%ssrOY#3#EyaIb5m_li|%^nIIjHf-RzB#ai^8 zn-XhO9aD~V=5^r)v!hoflkA4NTBai5(c+EH54(u>qKU8S;V--|x2~bwa#1`_>=(n) ztO6h4vUBW48L*O#9=KjK{wjA5_pCy>2ek&A=5>q7NRNUYB28&+)9)r8g+K%Vk z%SVfvMy!tJuSJW?zu_#D1?KT38tfA8e){Q?A8^0;)29`QGv!{GR|Nb=vtK}%DO3g+ zBiJ=zI!}23tODz zXWuUBn5q(1pMPb!&oJ?>jrX^qTGgj-+vqe`E5xh!-$yBu#AxJHF*Jk2Hgpqvp_-_O4_d)kiN zf9}&xepv3lwRlSbh-`lShVor;-P%U1S==d|3voPZ8^54cD7PD&FhsTiyFkL;1`e`8 z@5J8LtNnD^P{u&%+6pbl;M6fjy2G(j`0E-Fxt?mw?DR{C|GndfU{jr+t*Slv%Bw!@ zP;q%PC!tGsvUfU6E9?u-Yy0}eDCDIp25>+o2Y*=oKExeB+;V_%@Ct9E0uoUueBE1c z_)w=7%jE;oN5=aIIv=XiXfhYx2OF6g|I$UItUfOc=(ecyj`!WCKAfcKnVYpJW8f@_ z+$Yf>o*~hzm&K=XF^=!sM0CsGQH%Y7t}P?_p^||&K+i`o9hE}i73|}q4fclJ#KDOhMg&CF{%93HLMh1${`+V_QE)n$y7+J7Lo;|?9w>N^~h*`jJ?{vwYT5>x(A(j z_i&{uZ?wHCZt3e(SjRp#P1h6QaTY0TP&k0S<1It4 zp3IAv*p9qRyvB<;M=f?t)6LN03c#6qSovo5n|s`+{`9=tw&E@M%c*zBPf841w=^*o z`~&{6w)w3>9eH>LvrWNFk%w3(o~F|n46sNI1`TR)C4Bzor_p*v8hfGsA25%auz!`@ z(KL;sTj&1__NlA;DY|v2df9=wuiAZyHLiE(EHQhkkayveS=-)NQ1A$#JJc4bQ-s6z z3Wr^cc(1=E3XwHgR0#fh^E}F5cyR1I!>vPMu9~o|3^D{LDW9NKI?65Tx@jo|@(rlq zqa=_CA?Uh{AglY5`NZSg4Y644KU)6Q8~J-)c>ZEpgZQJWdUe`|vHiKaO=3ez57LH& zj^MLlQWbu%{r89d_79GP$6ab;1^bL9xFWujI9VKO=)o(1 zC~+G)6S;q+e^#Mqqy~RwUS8qoB}Jw8Go0ToXF_YelkBuJl#SUtA%XIBNK;eNtDeq` z#}zMGzTBlVH@HTbzu&>=&?wLLB>MC}_W&;MVze-EQr3b|+rx*w86N!J7nxq)p0NZQ z&P5i5cIp-!_Z?9$tA6*Bj^!_g$G+c}Kl{#tvBQ&-={i7n({)hG;$-d9gJJ{t0K^1& zcl@=PqO2xZJtm=*%?7jAM$KMHk0T&P;}I>Eqgl{S(Sxn;uM0#^GObxc9knpES>8`- z=?ZxEhezg)6)F(3@}(8}=fT{c^7o&|5(%OtadE7)0IkV@54Qh#-?=^+8nKcrv5|mp z=^C+Bf#*n9#W}ACFWw90EFX=(K^`HY9su+9&|3i3(!DUq8BCMt2A`dmOYY=vR)tOH znbqS*I~TyQ<1dS|cxle9e*ak9w0!(tX&uD#PpwZkH{7t*)=xIISU^}^j9au5LsM)` zEm(=Wkg@0?q5!n0WKtqw%OcC;!j@$mGnCJSeCB!$tXy=pq8f|62B#lUVuocDAj2J@ zlxZ}eYLe*o1Vc-ok(phtdx`~!Szyf@{mjkrVd^k)1%(5qHZ$=p`Sb^bhtI5^R#AoU z@OCc8-|;C8N`aWKzghh0hp)v=#}Of(?^w5!HZ;))F^j+X)A9Iw!B^}7U(rYAtMf6n z^b?;Nk40kLz(v&(8Uy=HipYtUbz7>%UDZV;Wor*rPwtVKFLAMmT)?e8XT(d}5Fh^a z%Q-82&^dwN73`-Iu+u1CpqbWR3RW{B=4Rd<3}fy_5PlaboR>F^KhO_qMX^L5BEikB zDy3tUk3f7tyeB?v_?mc#hn}Vq1X>zP=>3&T5Rz!zi(Ncj7>XP&#=wULAtw-|*8>_~ z@69OMotJm>7@T1iC}`;Bzw*Rvz0`33(~JL|E9MY-j_3X@VT`m(XvD`v;}HAfs2Ml>L-IDxK?KZ;F&8pwN!|wt32emv)?pFK-$6fsHPHBFf^fC7k||)4Sq7 z^=l~yopV3XD3D1Onr|p}R)K|pnpc25-^C_#x8s8g3r388 ze)7wK}Z1@u>(GOSd+~hOS~aH`$_cl~x6EK$S}7 zqlLNNL~zLR94+p8dV2oe808c4@6NfF3uAQaUS@m27|mY>RzL?iMcX8V+`>2rpCIryE*{2s5`Pi?yku`Ym3r5keXR^JSZh_TB87n{v}Oc zHS3)i-+T8i=Y3ao%o6COs`+3+t+orbM{{H6fBoguC%eR%T=wc2_D!1>gbgIAkU8=Q zl${gSPDHxV47?iyVtq0|CRz<1xcr)|aw>DgU=elatqPvz!(ek#cZH?%Ddj0Qcd|mC zvh_L=qFu`rV4N)w>*-N{RR8H#Q+JKRQ6U^%FaFk0hhttPR7gji|39t02Vhji_CG!| z_wH_bC5@0|lO+iug!D#B-6bLPnuKC1B$xszgdn{I0-;zCupy%Iuq{PJR0I_f5fKp; zkq20wqKG~V&nK|^|IFOGn}sLe-}`-k|G?cTckVf7=A1Kk?wOf0J<8!=`FbuWiLug5EwVy~CCFpr_|8^sW;0 zV*Z2Ei*Ir4hQ+xF%3DzEg@k{z6Of7s-rM?y@NIDJ@Y{yIUUuA6ts4Be9hmO~PD{pq zbnybju(Nk~GJgT`#rFoi3`-3=_0IcuzdH{Lrvu-&JaYEbB^=>luF>wYYAB zzb}_96HmoO!@P3srp5H@YdimSB_(S2q3Z`OeA2P5pcrE`__~!&i?NJ>Qx+iO{E+}} zn0L`XczI(a<88Cd+4ll)m!x5!5Ni+;LBGX>@D(u85G=Kg#~($oYpX z|Jw2RUOIxN#IjklO>3r?Kef%gx~@DqQ+ns`N8hnLb713&mrjI*G%oC&aG-y0ZUe&J zQH_@KmtEqm4$du7`J0i^&0j$~=P&z`w>z1+_qH=i?Bf_fqGB8afBWMFBu1m7?U0ny z@;D@AB!g1ewJiMYj~Qc^73E}QP8FY16jTMNu;9;6u$r&c=O@yc1uV=ka;ml{kOmG^ zAwf5_kW6k($LcujzX%8n#ALZ2M)cZ1N$XxzqE(H+=q|Y{JS_WwJaA7zA{=VVx>U_Da+;HQs zwRTy2q;u#Wg0P1)i1_yC;aiAvF?2!LlI)M}K{4K$DRK)3 zJ@xd_jh27zJ+^6^`S~Lc-8;iTU$u}JDKMO#^fq!Ov%!DJ1h-wG>XT6H@L-wK(rt@I#y~4}MfB{IH!a53LgC*$IBYo=UZJ1T+u) zuQuL z&U|$>PCmkV9jq3RFzj&{xkF80f)p=MDlfrmmJ8=FEqQ?-Z*t=LMdb);F-mKfc0vyY zET;&H6B?=FMA2ac&R6GfgC>U-e}#3$Sf)I<|DLakvE1Zl3ZHJ|@&p~wZWZ-AqSTKL z6!nv(xVY~6i4)93{k~CKVV95sS<1-hu3-%JLGrapJu$1$i)b)yPAy3Lh5$k%FLnuzgMO{o86v1mzR_GL`t&lQC~ zXvq(J!>_AetYPBInJi6~`ya)&Zc2zHU#w>832y=+oQ{GL(BbSsFw!H=9yp`O!_yfj zjPXMz)sGgCqP(?)srF7(={Qx7mL{d7SL*}5zkS(L`Z<%GD*Fnk8f|gnSZz>b6S#BN_anRZ<%h}JGVW;t1B8NWk#s~J-6H74}LM+ zP6E5d6o2!dYU@~cf?qhL5hDzI*SdJwn#J1#hY~ttKGfDK{}m~0NeL`1wY>snZ?l}V z{7lb(`}+nM>wPTA+s>N8H>o_j&1C=WPNl<8u(+prnW7hBf+Pmdg|CFEAa! zy4PO_rf`!88U-J682uWsMnFtPVE0MbKdnSG1igk8KH9U&goGuIvRM9+!`p$~cbpZA zIf#{MHBZ$oX>Q^F`PHk`AUJYZhI_r_IaXUuFjuJo3UXt#r-bud}g#4tt+|)Uo6Q z*K0nG#cENENrysHgTCE;(fNdgxcGR5!LyND|Mh2nrNM0M^^?8Bj6>_{>EV|ie_-6? zYIMkoO?D>M#~83)9CIr=U5J-Yke&o#3ty0z)Z3>wKGA$I)Kp34O2Zi>?BR-`QYZ;0 zT>V57Q{0%lgt1=I;^=H;-5%eWC|ww4nq1a%;17BIPQASR@i3RiKY#q0jw=t8uJ7mM z>CiytndRoCxLd3OhO z>X_WH$#QKYmoRc3Uk7E_RTD?jva#m52Mm5;VWCAOVPQRDW21^nV&xu~lHp#;2VFtr$K8PKCV2t^rx!WGjF|g&}G4j zPowvlkJL=w^1`$asczqCdBOc3N9uwXH+GF0F>^6BTf*Oe<;iV^vB?#a_pMtxVN%1B z>-K~8^%&P2#z;S!(~bk{^pQRM{9w5B^K;YdF%hr#a>Ej|zd8flM!U_Qk|IE<+*Xf? zO8XXWVOYjN;ZpkA(z2keEBP^>y#3rOtfXm6^qe(IceL%vKK$mM*Ri0C&dgdeyM@MC z4uA00z3XzvnD&kw(}r`DI~SiHtO?=m{2Jb`t!U?HzM><<$=TVd2+L-uf3(5htEj|Z zrto?|9bUDd&^E~hCnEpZmV8lw*q@{9Cr6KOkSe|z>9t_N4>8Za_+pgZGAq zt(SFP=p}k%=G52OIjDDUzu_glB~54$oS%6Fb$1WyJ5uxvx3L)0V*g=r9Qmp5hVj)s zOMjZ)_spBm9SPiFId!|)@rL)**wyt5Ac}_fUVn1)h(?Ls{Nv{N(?Q4lvNq5p`YVNh z3w}2B743Mr409W?+5S3RufBcpqU!6_3m(vV`QIXp=ncB5ytO;vQ+IbVNou9zh56&B zg%7-HiamR1?|#pjcRa~@4Hg&{)uXD(=i1 z&mRqnbTDE5bk2ijt)4ZHH|Gbh?0PV(d7sUUdHuH{&;xHk+WYYC58?FS1V34e6Y?;i zaFRVGzd#tj0@ZK$+vwp-oWz2;?(UxtM8xNOnv^Mwn3u&#+4s2*H%%-H9{9uHlrLW0 zb3oJW=;h|H0ntWN!&0={m*2nph6vSS$A2BrB1f* zTa~BW+JUn^@ja<}-{Z@fz*E`g!z*0!VlzVeKW+Kt2$l|>KSi6aUVW)_`hyc5vsgCl z*tX-XK9>6=uLpm&TwO!^QBQo3JonGi<4L_=wd{NM<%0)507d*Ax*FOV%&i;*-5o|L zZsHttFAWac*8GQ+0~GNOT)ZLedll{Eur}t?bAaW?-_Krqg7!apcH_jA8{Yb6QPcd# zf-UFS%=wmoU;p9Edo<^T@%x5Zez-h;We0rCU@Zf;YCvvqo&|gpdH7NpndrzQU(8Q( zUuV3V;Im+AhwCfWFxX$scHX4>n&YG^ah3(UJqioQRrZ?vqmY_+{CDvsK{pN;>2nHd zmMY@1V@p;gTwMcEDOzB?_}&M0^#7P*?%|80Fg|J2GKID(5gW{ z8e=~{v}eD6wdL(dsVc_u*4++D^xmsa-=8~;o;q;grbWmE=fE+@L?nT)q%aRxR}Z)+ za}9)KKs@9?-=dO0dlQI_E zmRXBltK?%WoR%bg!|i@_DaKfQh9+Ok(BLE-%;0-^Vphfz>%xml#8N$9J%)FB_1h;_ zu#JECfLN?RJbet*fxgkJRi}tiA9*J441WijQc8wH~YR`AT(>{}Rs^cHNP>@0IeHb(}7IX26!} zU<(pfUF~M&Szbnl2N7;>?e;#%;b;!%PTAl{Z5mm82}{go#Nd`5K+;UpF0w(A+GH5U zgcTWHmu>buLDOspSaa_LOJ3vvYpx7C)L+5UlsOHw)75?_SQ)<&mdJ6#K8ZgJ$Z2acXugq-26BxDr+TNdzo zic$`iHv#LE0~Z$BVck9x;mC!B@M@yKx@9f`T)0(ekWM+w?dN@SnYR$B_9$pq`;bIhvjIuC_Dg`@~Lcz?_mQYW#fC`YNgsu?LHML>eop{<3~MZwDw ziS3aoi{Sc3;U)RFT^NF87iNFC>skUBo2fwzLqRIf^1x{x|RX=O}I5h4-n?qw|9159}C3xAd-yNak;gl^-lbw}+0VVHV z0i}CHAtd4q*8nDH>6R?Vnh9DkG7+@!o>P^q|ELpsMFkEhIjd09zrUk|YS!~!QK=Ih zYZcTu^or06?%7;{!sWkPFStK(*@GUr4p>PlZpg6SI?NIWF(wEV&FgrE3Ls9)r+lCNIopc7lK|u>RSfkJq9)24X z&OuHK=O8xKacUgirwTQkg8~jjU zq#m4wzjK8G!9j&12f#tTD?*(0F7mOO0X?Ufi4z=znN`4fR&bDe)gyv~gVdTlt5E6g zZmX?&Has6m<5^K#>|Wuu?bXXprvit+#RVL|;A1$H=^l%yvv`nKWfqT)eOf?qX!{V$ zYnsu#w&XOY66e5UE{?Dp$?%x&CeGvX#tCE|+QlxgW+eCI=aW-7WfAT#HMYpjZ7T+K zMttA5gx0Od?$BTETOywwv^U>x)0Uv@z1avj#AEVV@{)EDb|?CgAe^U$z>jzxa>03O z$vxj!mX!iH+-m9!+}$tSu4}M37Ji#`hMQ-v#m&~tojhjA?A7u|bZc$iDZ|#h1zOU! zB_OME`k)yI3h-OD+zSBiz#bpTzI%~)YL7W4uts4)I}NM+^Sr1v*sA$6>6+!bzX#@STHQx z*_ng}c*BwsfZbht!y*cJnBCJmxFCSIxsd=V%rD+A%TMyd%8~-VL*cyy7hSB`XIoI~gy><$oY2Vl9?hAS)N2uo zHFHaf7uK(lv%9o0!Qs6UV_KSfMfB>I@NMFhX9EUKojNdR;3C3qI)Q8VX%B-{{@5Su zCAwoXTi`Nj z#G`|k8TKEVHvG-7zhzg+XYXI;Ga`TE`mHpmxXnAFGui>8lZug0UoI)$8jewO$Qwtl zKrS6HLP&ryKquXT+LD@96UfXV!!&h{s5R%4=0^KYZ1=O=u;I4h)M?@GL{C!og%KJe z*b?aJ1GeCJE^U}=yla+gqw6A9jq4%!2IC}5O%k<^71h2?T(q9-7HV$(=`>_;Zft1p zK}C~>nLOfeA?d_)=iY{Bmr}PO=>x`k#{6a{43x=e|I?739#{u8INJ~w=ov_zus%`a z63CYZ2THxdeB*tyd?jBjo-6P@gxxlxd8R5JorKq>w{d2dO<*7|-QvQTC3wYUM{D^d zvdEOvt01&B>4o0I3vz>_`t@iYU|F~Jfd!gL6DL*mS{CuLHW3FQO*{`t>EHi?W#_t% zoIzPbR%}3LXsxisi9QOu6!s8T97-w9Y2b4m(aC%!L6~^55;963Y+l|nEVZBIa9Y}w zw&o?ZbNtqO;SDe!BjzC*e%f4*PIdkZCwtx_&JhgA#w^Q-68|Vq4bBk9>A1px#OnkL zBSarFS=|Q;@=cCx#mc=0Cw7jzy8h;qZ+~_lCEMTpL^@!3@4KIuQ_aJdfBo3<%$^@k zd`!pexeVH|1Cy|CVe51ue%a2lvrb2yy(msu=UyE63}Cpy$A=#r7>(tIe_k0gF{0n3 zJ$KWqZ_-BEQP*!k+jg3T7Px>K90kQeBqZC@%XvhJR}>4NG;m}IhozWqvtYUn$LY3; z^J3v%5)2VDEgGECS%0I+K)c?XZ!8$Kb<(U=r(6H_(tR&meq{Z3(x7$g$7Bv4mH$w~ znC%zDmh#%=!A19>GW$O|1t9Brbx+$vbWx_Op8t&=Hy=-YH19% zbkXKL(v};IFMabz?{;{T;B;KHJSIzWE$9feK4alNf2Z@WFIX?NBSDJlfIXEFP?2_}`qu^Z#%J&;S1T zo&Sr2cQDV}#?EW*gQq+__IzNT(Ir^&jR|*>r0_TiR*IoTkKg%`x zgx86w0ZH*E#NI4EL9J>RKPgY~T?&~}_W5GXA$)vc$LFobbhE*0+U58C2*sqIm3v>#coCli>=j{~uI*iotQPCtdAKM2}`)HKMIb7)A z<1ot|*t1Va?-+tM*x3H}u?VCd*5YCx-?OnSO~Jb4=)HsGFHprH4H-H6qo z=fruvd#SQ{538ThRhek|4;Gy4{^u~@;-%*BFAE7v#_(;JXSt}1OEvIp!#};1GSVuC zGIOj?C}rH-ZYfjSU4|A}hbU#>!Q2r}8DCeW;+knKL>adi8FjQKgCgk(Ztqe`;j67k zfz&AlV^3q z?N5#()BckJOO1RQts70^SQ)sZ)?XX1U7)?8i`BL1p4WZthg>hZIl1+A%Wxa#*66mxZL8at?g{Rd z?t9#CdgOT=^<Oz`W$CxgH2<(9xk& zLhC~phOQ5NJalj9k=zYi-4n-W$ZwlHjc*tW1eVL$4J>WlTY`g!`b`bYFv^p7`&8`9u~+&f_uCnl8aFhqB<}9G`Eea__r~pu`y}qW{_b$cJh}g({`>m>z5l=B z2gDb}kB^@oKR3QJ{-OBi;t$4u6#serm+{vVqy*Ol--O_V+JxB&?FkPhJdyBB!WRi& zCrXK~iGvf3i6au9N_;-?_oS?(u}RfQbCNoeHYe>$dObNXxi$Im- z&6)c%4`rUtJU1Y5z?=bl2E0AslL6L&x`DX^hYcJ%aKpgO15Xc%8Z>TD^`NdnZw)#= z==7j-gT5N{!=PUWT_2n@c);M?!S#c;4SsL1WypXbZ9{eq`6(+uYiU+z*7@w@?77(= zWPg$~EN64hww&ELpXd7J4$p1PU68vXw=4I7+(&Ys%)Oo`I)VYY$(`X@M6Kc z1)mpODX&SB>e;wsADtuJNsMVwPjXE{TGTLi&!swNwcaJfQ znLK9cm|bH|jX6K&@>sXA@nZ|dmXDn`cGuVo0Z!omp~CTyPQ zF)?@IBNJbkczEK8iDxH%Gs$n#&`F;c7Z?An_*%(;l8%xMC0k0immDd%Sn^A$Tn0zW5-?@VlvPtcn%Z;f%&GgQ`A=(_X1#0qU2E^U|E{mfV#_MZ9xU5c z_IlZ|vNPow?YV)-grt}P^=8T+k@0?HDdbUNhrL-B_irZ$kHMPxaTif_Sp8p?IYXE+nd{0wr_6V*1og-)%FwZ7u$cGrElcHEj_yQ^QAv7la>W8 zi(NKk*_dTj%i5N8E_-B|dD%P5&Mo_P*{{nr%LA6jEFZ9Z#PYJ`&C6FV-?IGKzi zX!&=`Z?5oM5xydBMdk|QiZLrHSG2BJwc?=_&#ySV;^P(HuK07M`%1&gjFrPyPF`8R za^cDiE4Q!QxAMr!Q!CG}yu9-F4qZo3M{LKSj*%UAb<1+o#CBxIyZGb+WB$kzt$wK8L*~x&B8S+*Q{Uj z;F@h~eb%*y5e=1$q{c=8g%Yj%KQ88@*MO#amLsYf5$2dFylnXnb`Nw+z7jQ*d@rR z0&iqzT;fkYK@RhX+yf&Ue#Mb+sg#`2#FAvWh78tjCS96kB$s|g&R}=MNVdp2U9KR9 zaj%v6Shup(B%Vd%nI6_1$eV)e7rDlI6=4{{8wgWzHR4);YdEecygZAxK8$!Xu2vpO zYshx(Nm3;ruy)87h)F(1IyBP|rs876q-jHX88NXFRveUMIfyxSlk^8MY0r~<_)5;l zS7C>|3FUbB5}pYs(Q*he?e)VH>64{lXlt3x=XrZg$pa-KSiA68u|-6W!;JTH!5v!J&pKVYWsB| zK9iS`zCv9Z=`QU~vW%T2+vG4Z8uwax+w(lB132o*Ya;J5cyyW6p!^N_i1nCeFnJd3 zy@~Fy<|F?w@b19#F4_g;0bK3c`$(O%#(G|~J8%2jF6~+5ffs@goEPdP_`rFgUf@-# zjSrj$ju+^<59xZ&3&%_F0z8v{u~;EC-^2}xGjv-{7*N4kI z4@En3+2if~AEEUrTfQdIdJ^p&&vgWHdV}i;msNgoec{h4q4m*Q(&t6K3mZuo=cB-V zdpMHxx8GCrZJN+Gw6!gSO|%2LHjV2b*8?SluG`YkORgJSKmRfeA*-M_1Gw%A{RtsE z5k_*k;k^5AL$2>a=b-O`zpCDI-Q)W27_ts4gUI zLLaA1Ca-BuqmSXw^Lp=r4xJJ5A20A8L0^nK`50vX5-E_^lPrE;+J!vcmn|a|q8yi- zbn9l`kI2!aO4?2)a=pS#=y-V-p5^6_1NJVY0aNoD(&<(gZ2(yY8m8HCab3iHp2zE` z*-p%&&b(hi+X~s`at)c)Rag(}rYL2=3lr+^ChE%davNyHyMaHenPMHrVQDv7*MnX! z%}M0p;?HPGt%pT>@pg1JBi=9K zUBvr93s%!u_h|Q^58}8$gOK_Cq@K5xRDt(|st>n^Tt0YN)FEE?ymH}P*pIFzZMd5G zJ09UB$w1n0HA}m!Tk$?Rj=m$G{YExxD{z$jMAF5_2YlSX>d9zaE^>_3O0^ay$H+cWu zgUf`g8P_6Q_u-n!)1U`OFJK&`h73FQ_z;OsL|!}M$%t=72AqM~{!o5Azc?O>wgQb~ zaXQ!m?G?}ueHCK^^?jlpXiZ|fth?B=5_Fj?;E&&a=j3;c?SIdg;dCD=)8w?IOPhOI9HGm$PUe8*R{W=u*6pZH&DTPLaN`p4PZv{MTqbs%^!%u#}W)R+CS$vUMBu|5NBU z55;>A{q!`AOcHG&@1J--!*yL#0GdFfW{35#d=z@l-_Ou<&>(0Nu*~EoT{Ou@zaJy| z;M>L&w)YF~zqnol=5U1Rw$O&l)-G64u9ca!OUMC#2l9T7hbj+m577<*yzk)soahH` z3weLX`y6}Ufc}p6Ip9wW=Z|~>?PS8Zl#iErAGL{$1gvS=qhzf18-&NndF?>5Uj7zi z&S7MSZV~$1lh!@DgTw^+i`N_gKQ5tOZD?l~Qi^(r_m60^OV&O7-T0Sdt^dFB)poVD z@BeKm-beN^mi33*+xNdt+w}YY6y83zQTqd1zi_9})_4C$_&mWDuN&yGZr~7v8)0gQ z_)TmMNcg4rr3l@KEMcyhyh9da=Fx;TtA%7CIgT|+ z(b#BJPAlmmIP!cPK1+Y5Ru;_C*=y`5JI2nlUnMF@a6{~gy>P3gPHC;QS=u5!F8xi~ zC4C@$Bz*#}@uP6M#uWK3c_ns^Y?R-S56K_MCpEsIG&C!8Md;Dc_d@>}`fKRF!$#;` z^?v$LeS|(rpP*0H56}TMpAFZ9`-c06>%$|$qr&@#Pm5p?+6d1G zpNO6jp%JkW1rcQt)sgRAmn~N7P0U8{S{9OFWE**(d`SCX@~47Up&r}l3#iAREKtji{- zz2Ga4ukZQF{ma}-KV7BmdoU%GVZ;-zz!KEHJO((z00UfObL&ZQPYE(Kn4z2y95 z-9^jA>lc5!`0mBXixC%lUJSbEbJ6pnbm7|zA6_`|MJ*(G6dNa`jFYPT@x2ze{_$0R z|NY-)wJ27p-Qmwx;tsd%*>mi%|2e`}nc`2{LVm!w^hfC-@{{y1`KR;<`Bi$97Sds~ zH;rU9^kMo4eUv^%w@KTjC+HJ&2Yr%0MW1H1>~4CE{!4mFGD%NMt*n={hNZAnHkD1w z9y+#o0-x)yNW~q@UhQ%Zz3zQtxdlHy91&1#$iK#=x5VxPC^1sm!b| z*P9W@QHBECL6)K1tS{4>qY#ukWS5z1+4hpuOFxJV;wTJy^NDWY}Tk73qs+GhwA5!S~zU^gR9?i?*@YAmlZj~-KO%nuF^FNy0{X!bAw5^j+^0n)6^ zGwTFMeJyHbCTsM&`yJ|ByWfjcl*PJL8LG;s6q}`TJliQ5J3Bkf-m&HwL%um?-q(R> zqiSnz`IU0h+%dl@=+ySa7FGNQT3=wdTP{(&{YX4BddvsYOS9RN~A z)lFlI%)VnL7n@n6NncZr#=!q9LwH7TxVOCw0Q~iB3?K8*IB4PUaNZ1S_Ggm{B+QG) z6f0>xsR-Ufvg2b*%&d&xIb^%zH-X<-Y`bHByvzXJ7L6a-3jq{qPz?YtL1zhQ*4em z%rf^d zAG{aN)JaJ`vd#W^kg_OaXK~eZb68n$74&YpzBoACoLvGAml%qxOSssfg<>uO9sW=) z$jbQQqH%_zF{Q=eYIupb!*6hKI8N?1Foxn_1q=kx>=fywFJ{3~2?}~4LvKRFkUI#! zW?iHcE-y5=$mN2YJ4jzlgNdy)$S}v~jn(;TIi9`+C=ya+UV#momL~xxuOK)aDlY!w z`Z3(rtBCQq6K~W4evjWmH-+0ykk34xr?h1t7kYiMq1sSlsL`9VM;G%Z;>{ykS#1o_ z<_cGe#uq!L92yJFM8a`fw4Bc)a4SD05hl;eVtsyhF-Y&G=)^|D?ipF(vP8d{x zFy2KLnh6)->3f;LoJDV$W%>YPar=hT_(=e`hkSLA*WI^ye zj@yS6(W3FWasAM>(m zT%O5`=y`%e8jFOJC?EVvHX)0}U0Gy^bme|ZM4nOzd6ZP{XG)%zD7QOGAj&2TcVy*G zwhe-eJSQb@vB)dof4d29(QFq@wo|rqwi|P2!Mi~YRKjJSv)^W$=C9Hogvpu{V5(_480p|ruZE{ zxi}musqc9#xYO%L&Z!b~DxF^6#AQF}9A2QGpr@e|!U}MOQcnzKUkH^(nR*NVgp-~$%#(V0UhuSfN?N@8 zC(vXvp^+>iFOZ*z>_zBef2yJT>4x3o$Hm4L?bliHx^Nyn*-TfNBggUI>@lTg?J6^w zP&&DIH>K-JR&;fd+>j!3(zs%?KBT0`T!n~N$Zmgiu5Km zj`NntCN(Z$w}DvMgYq&-B44Zd8WKqT)wq`Qr~TEqj_jaQ)VLGrgYPv3zAMRKebl%c z<_XKxxI5ynsc{c7UJ6v>Uc^VLQ{&zwR9Z;#NiCUys|D9QQcbGxl~YB^kuFE9k~ET8 zq#bqOrD~9?Cx6401dln1xZ>1UBKFSd;R&b_|7MUnz|j-zX~J`}#4m?ei&z8cPeviH z8ZkW?2OJHgS;VSIJxb)FOdaqS3jB4*sRW+>0@pzN=HQt;GSCjg1|bglcZTraVC3I+ zyv_>FiGbDw$`qRUx>1D&8>Ig|-da&#-nK2kP>#BCy2}y28+nanI(~0$N8U!9E4)-Y z!U{a0NBL^Ow`RcMv?`pd742Fna(Hc&^i0x<5*%}tXi*z4no+A9sAqRQT2PL+R1V;jgB~Sy>oZ(xZ|8Lqs86^f-QBSIi@MH09Tl0e(b0^Y;gF_0 zVuUBIarot0!eQE^r(5!Gm)cvUkl>|7tiR!!4!QV?Kdc!fl%bS_UPJ?1iw-7vXRNWu z0e-|C=lOYJC80O=T==4=^dtW0N8wc*{_}$2Cnki1k}%XioJ0@<`l(0~g%y~6;J=|S ziKP;#?vI*qJx}82_~6W_G^{wzAeoSXfn*RFOooswl8yGwMP2hzPZK1U+j@qPBDBB= z)P58hO~zpN=r}T-Oh8Ld!k)eoQc5P1DP$^{M(!eI;LWq>RhN?$ z(9i6kGU=omvW(nEej&e-F7hBe;=V=xPX0+ACA-M)X>rNw? z4T<5}-wKJJ14;j$%thbWPVONKu!mwlc^ogsg|KZcAy>#%a)7!}SIUPX9@LZEgr`t1 z>Wy8YzQjri?Lqx84xluE2GStflLpgXG=zr2bDbWmI3vg(+3f8ecICh~g zjfKOQI2_CnPZMY&EN02%QG>c}_9GXkMBwx`ynoo^b zkUW$Y2n#|H9S;AtBeCLnG#!IC*KX|F9|upf6X--bi5AlmT1qFA>*NOBKHtzObSj-j z@1kX}&sD%eS4FGobUK69&{{f^-c9RhJ#D~dj9GLxd6hQNX4*nq$v?=qbPjx9w$Zt8 zzC4fKL+8^4bRqeSTq2*7bL0zho?Ikn;rDbAT}+qIrF0ox4*yUqaq__`oKMk-b*yV? z7hOl!(+zYZtZDbr`{@I86Mc|wrd#M%`cStG1Qx^X-8K;T75*FDMW3P1(&y;&u)&$> zZn}r=rTgfM^dn3woaZonD|9=_UFl{fd4~zoGx2-_q~s zW%@n+fnK3M(yR0*SONb@e}N;Z-{|k$Iz#`U|E7P^>+}Y_NiDE+5{$bUj=YtbhT(i7 zjH;cP3v*?BbnC%9nHTeBKFpW(V1CS>1;C;h#CpO$+KYv-P!@(Ec{qz;2G*NJVlQSi z>%(GLUlxlI$X?cu#gUiD%j9j=pX?(qVtlfcyh%F9Gvpl>&l1Q%@&-#JudyWZFP1E9 zMQN~CW{|byF&uF;fDL4W*kH059;UaFEg1AYN$w>Nlc&jgjCUR&udpF3i)FJMmdo;3 zJ~J{C8_Eh;Asfbu*l;$2jbx+PXf}q8W#ia*Hi1oKlUOk;VWn&`o5Jl<>@HTu%2@@g zWL2!1O=mM$4eVGm+1;#;)w2fHh?UHGV(Zv?wgD@l?`8L~``H6*6MK+tW?R@+_7HoRJ;EMk zkFjm+akia3!FI4G*;DLkteXBC+r^$?&$8#(^Xvs?X1m!QwwLW=FS3`|%WOY;g&n}k z>etxo>>zuC9b$*so9r$2Hao)JfyMe=*m~b%$JzVr1p9!UWFN9q>?3xXeaz0VPp}^Q zGj^7J&d#wfVA=jVyTC58OYBSb75kcf!~Vg(W#6&O?0fbDyTX2CSJ_YOXZBC_3;UJ* z#(rnl*uU5x?BDE9cAec|H<^W5VN<3OgI!scG?G@*!MUrm!kJ425F;ouXLYuzx05#NqSJs9c+~zk{*U#wI9ao?_=Elf%K^K zn6wS^A%Ak4s`r*fi9W=2waSKuDr6cx}n9T+8)&zRn*l=s5L4Ot3}{Cv>UnWjPAHRloK)oKW;-S z8|&-K6}WCQ91^Yt-Q`_ty5n*|MR}84gCCbdoGVl%T2EUmqOOGs<)X=ImAFfxAfIPx zYem$xP@z>RrNli7?Nt&b3y1N5)y{Ms){WYAW_R4J$bnY3yKhO%XsWJms4H)%s;$%x z7aZ2siNI~RW4Stqgm$>nZgnD%hx7KS!;f~P@_d8x{78pK+!`Db+L6lh4NAK=l+S8x zZfRT8?RW)DiwNZLoa-(4(M}Mo z*0zd3H$kmct6HlGO08N&pqbEA+b~1Z%75J_IM&I%)iI@;ph|J861q<6rqH#`AztDT zZ|{z4OO?9L6M;*qU6x$t*`u1e#)cWqE;*bQrC7N=s>?BoEM0lE2wg`t*OfQdDDlSb zxZ5~~2697hVpknaOJhT0v%9U&5Gj|Ox>+^lBI;b;(AZL4S6y4~W}MYr3sOY3ld(m) z?_LPq7Fk^E-A2{d^4>;dxJ__)z-3f@^$ew;cP$>d1)oOXlXI(E$~8mFL7M3Mk~33u zDo(i+wMN?s*@#v)vXvFrLSO|IY;>(Owx&@tu69O! zxir4KRi{!UjjpMc@^FoAu2oRwWO{L!HmW#mPqnZu&!ybnC~nmbHFE+%N>lNAiCB+T z<-YAvk*N{S%M~cDnZYZmsj9APDc7m6+v)WT>JY_GRZjWWyW0|&CT7o@h$CYNo zm6(!hyPIf-l4ysLXor$yhmvH6l4OIDkd$JBl4OUMlxEMfLr$_oPO?KzwnI*~Lr%6s zPPVs2vK>dV9Y?YqN3tD9vK>dV9Y=~CM~WRsiXBIa9Y=~CM|ZoV*m0!TairLBq}Xw! z*{MpiKapmCBF+9pn*E7%J5}j+TGH*bq}yppw?j_1Lr%9tPPao&w?odbL(Z_*H^Yu2 z!;T}vjw8d4Bg2j(!;T}vjw8d4Bh!u}(~cw4jw92KBh!u}(~cw4jw92KBfT4n4F@zu zm7&B0+ug(j8xCyZwcoYjNKCNdNKCNdNKCNdNKCNRBQe2_Bhikdo90woUP5Muc9Ix4 zYTJ}xl6XC6+eF|z$<`e>x7lLa5~X0f2n2;t_=F7i)`lu|ELv4j=RUg?uLeGvY-+Bq z($?2DU_`2IuC8ossB*5JTZwK9rJNg@TW3`_)iyRMa56Ge61B6cn|U8+Y;9^3xoL?> zsyrg5@+U1ZIW@_-y150zv6kv8XN*&;YiHE7)VQ_OV3?%Dn_Z{Z&auVann6p0dV_bD zrrd-?HB54^Y;UTqtE;UP?{_D>UF)iwn`e57L4w2k(A6RC?GSI`oqM(0yy~V#TZP=F zH?}r)CqRfT;o4j~*A{mdRM}I4JX^}Gp|-*P5T`ULAt6Bx1?5O5sp(`jOi{yBHB3{( zbT!OS!%Q{IQNvswnv5os2u-FuHO%K>LZV6FO-RZW`3cGS0zX25AECgLXiPTp@(2Z- zM5974LQy`^l%l{(G9^1#l{eRxH_ojUuXFH1)Bs_MW>igMQ-h{a{7w+Rt^8L|lB_^X zNLC;s#J;A+#=AMoDyr)m+eE1pwNy%if-faip+6;6O{b~pG^HLXX-Yj((gYO=DQTh| z5sG$1DC&n$v?D^%jtE6NA{6b2P_!dLrJYjJZ1_aGAYZggLQ1-dKV8M2uHsKu@u#c! z(^dTGD*kj8f4Yi4UB#cS;!jucr>pqWRs88H{&W?8hKfH!#h;<#&rtDasQ5Ef{240# z3>9yNiZ?^Wo1x;(Q1ND{cr#SI87kgP6;Gy$2ZJ~+Un!X?o=g=_rdrQT6=cxE|RQx$A{u~v5 zj*34=#h;_%&sFi~s`ztN{JARrTor$=ia%GypR3}}Rq^Ml_;XeKxhj5DA5(Hw{JARr zT$8J4*SrKij#AnH>&uJDt@*9 zOfjkWO)7qqir=K-H>vndDt?oS-=yL8}$~Oe%hpieKr^6H?XwFjeg} zQ6!ak!^dS`VAr$l> z6!ak!^dS`OgHX_iP|%lXRP+>~ieJ%Fq*eTio+7Q{SM(HV6~CgVNUQi2Jw;l@ujnb# zDt<*zkyi2NiS|h}Dmsc#t-qq9NUQZ%bQEc|{(0$K*O1Pz=^EmhYF>^*o=S(Jt0<$= zk*Bspo=S(Jr-?>IPZ6qgD0+&tN{6DSNUL-xdWy8l2SrbjR{5alDbgw*6g@>+#jogT zqEXRPgeo5tJw;mOgQBNMt9(%O6ls+Yik>2^@dWy7Ke??D`R_m|mX`)fl zQ-o@L6}?1St*@e&NUQZ#^fD;@n0&jnIIF=342 zc^+b5YKNpG?LgecUEA}@P5Yx>wy`b0UspZ7#R-Gu{<9id>vep*+P|?`%QFzPwDFXa z7(pYV<0DuRV(`lEW8BK`iy_H zIC?smYkAsbh9I3sow(taN4y;EwLC+sSY&mo8CI*9UUjOyl@$(i=H?k;fRK62jsMs_ zSJY3agjCyyQ$ng>VnT|dbO>!qs4_DzhhUW$R^H-dN-JimDJHkw)Cq3J_b4!&X@dEw zbo>rvlkq!MnnNgN0G<|Qd3hH+f!$x?Pf0h>QbOy>TN(h@i?9)+hU-b6v7<)lF+&R<$;1~d)QO{EIUlsByFcdo=VKP| zeaz%u#ksEi>1egAlV}x9_sk3OHJJUsfZ5-#$Ttq9`lGe`VP1bd=I1wJKAq2-|BN~P z-!KO~1GC4N+2#8tFt0QeFezqmp0-njtt{{e)xh(?fnE;z4E%G!oY3tvLQ7FrLRnvw z^}`cfZm=BCP7jAyhZF@>O07ALK{xJoNNI22+&KQEJx^dGzR0gdw9-uJ-tGcFv>OwM#O%>sAcz9r>5SqY{ OmxABnc!Ht?`Tqc{BF`NF literal 0 HcmV?d00001 diff --git a/src/Avalonia.Themes.Fluent/Avalonia.Themes.Fluent.csproj b/src/Avalonia.Themes.Fluent/Avalonia.Themes.Fluent.csproj index 8a38b5eeadd..c2a1359e8a2 100644 --- a/src/Avalonia.Themes.Fluent/Avalonia.Themes.Fluent.csproj +++ b/src/Avalonia.Themes.Fluent/Avalonia.Themes.Fluent.csproj @@ -13,9 +13,8 @@ - - + - \ No newline at end of file + From c3c82230d2ea87e62b4136a8eecd647a6022f203 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 5 Jul 2020 20:52:56 -0300 Subject: [PATCH 221/354] remove usages of old ThemeAccentBrush. --- samples/ControlCatalog/App.xaml.cs | 10 +--------- samples/ControlCatalog/Pages/BorderPage.xaml | 10 +++++----- samples/ControlCatalog/Pages/ButtonPage.xaml | 10 +++++----- samples/ControlCatalog/Pages/ComboBoxPage.xaml | 2 +- samples/ControlCatalog/Pages/ContextMenuPage.xaml | 4 ++-- samples/ControlCatalog/Pages/DragAndDropPage.xaml | 6 +++--- .../Pages/LayoutTransformControlPage.xaml | 8 ++++---- samples/ControlCatalog/Pages/ToolTipPage.xaml | 4 ++-- samples/ControlCatalog/SideBar.xaml | 4 ++-- samples/RenderDemo/Pages/ClippingPage.xaml | 4 ++-- samples/RenderDemo/SideBar.xaml | 4 ++-- src/Avalonia.Controls.DataGrid/Themes/Default.xaml | 2 +- src/Avalonia.Themes.Fluent/CalendarDatePicker.xaml | 4 ++-- src/Avalonia.Themes.Fluent/ContextMenu.xaml | 2 +- src/Avalonia.Themes.Fluent/TextBox.xaml | 2 +- 15 files changed, 34 insertions(+), 42 deletions(-) diff --git a/samples/ControlCatalog/App.xaml.cs b/samples/ControlCatalog/App.xaml.cs index 130c0004402..0baa6589c64 100644 --- a/samples/ControlCatalog/App.xaml.cs +++ b/samples/ControlCatalog/App.xaml.cs @@ -11,10 +11,6 @@ public class App : Application { public static Styles FluentDark = new Styles { - new StyleInclude(new Uri("avares://ControlCatalog/Styles")) - { - Source = new Uri("avares://Avalonia.Themes.Default/Accents/BaseDark.xaml") - }, new StyleInclude(new Uri("avares://ControlCatalog/Styles")) { Source = new Uri("avares://Avalonia.Themes.Fluent/Accents/FluentDark.xaml") @@ -23,10 +19,6 @@ public class App : Application public static Styles FluentLight = new Styles { - new StyleInclude(new Uri("avares://ControlCatalog/Styles")) - { - Source = new Uri("avares://Avalonia.Themes.Default/Accents/BaseLight.xaml") - }, new StyleInclude(new Uri("avares://ControlCatalog/Styles")) { Source = new Uri("avares://Avalonia.Themes.Fluent/Accents/FluentLight.xaml") @@ -61,7 +53,7 @@ public override void Initialize() { AvaloniaXamlLoader.Load(this); - Styles.Insert(0, FluentLight); + Styles.Insert(0, FluentDark); } public override void OnFrameworkInitializationCompleted() diff --git a/samples/ControlCatalog/Pages/BorderPage.xaml b/samples/ControlCatalog/Pages/BorderPage.xaml index 8133d0e408c..b8fd3ad9a4c 100644 --- a/samples/ControlCatalog/Pages/BorderPage.xaml +++ b/samples/ControlCatalog/Pages/BorderPage.xaml @@ -12,24 +12,24 @@ Border - Border and Background - Rounded Corners - Rounded Corners - diff --git a/samples/ControlCatalog/Pages/ButtonPage.xaml b/samples/ControlCatalog/Pages/ButtonPage.xaml index 74073bffa67..a4427c70c51 100644 --- a/samples/ControlCatalog/Pages/ButtonPage.xaml +++ b/samples/ControlCatalog/Pages/ButtonPage.xaml @@ -12,7 +12,7 @@ - + - - - - + + + + diff --git a/samples/ControlCatalog/Pages/ComboBoxPage.xaml b/samples/ControlCatalog/Pages/ComboBoxPage.xaml index 486cc55d445..369f7037186 100644 --- a/samples/ControlCatalog/Pages/ComboBoxPage.xaml +++ b/samples/ControlCatalog/Pages/ComboBoxPage.xaml @@ -16,7 +16,7 @@ - + Control Items diff --git a/samples/ControlCatalog/Pages/ContextMenuPage.xaml b/samples/ControlCatalog/Pages/ContextMenuPage.xaml index 8f147638b51..8ccd8e97f73 100644 --- a/samples/ControlCatalog/Pages/ContextMenuPage.xaml +++ b/samples/ControlCatalog/Pages/ContextMenuPage.xaml @@ -9,7 +9,7 @@ Margin="0,16,0,0" HorizontalAlignment="Center" Spacing="16"> - @@ -34,7 +34,7 @@ - diff --git a/samples/ControlCatalog/Pages/DragAndDropPage.xaml b/samples/ControlCatalog/Pages/DragAndDropPage.xaml index 65a798e53c8..c22cf68b682 100644 --- a/samples/ControlCatalog/Pages/DragAndDropPage.xaml +++ b/samples/ControlCatalog/Pages/DragAndDropPage.xaml @@ -10,15 +10,15 @@ HorizontalAlignment="Center" Spacing="16"> - + Drag Me - + Drag Me (custom) - Drop some text or files here diff --git a/samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml b/samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml index 446dfd7ce17..8cf3610b472 100644 --- a/samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml +++ b/samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml @@ -11,10 +11,10 @@ RowDefinitions="24,Auto,24" HorizontalAlignment="Center" VerticalAlignment="Center"> - - - - + + + + diff --git a/samples/ControlCatalog/Pages/ToolTipPage.xaml b/samples/ControlCatalog/Pages/ToolTipPage.xaml index 73d83e08f1a..ec073d48a9b 100644 --- a/samples/ControlCatalog/Pages/ToolTipPage.xaml +++ b/samples/ControlCatalog/Pages/ToolTipPage.xaml @@ -12,7 +12,7 @@ HorizontalAlignment="Center"> @@ -26,7 +26,7 @@ diff --git a/samples/ControlCatalog/SideBar.xaml b/samples/ControlCatalog/SideBar.xaml index 1ee6bf7a293..9b50a1d633e 100644 --- a/samples/ControlCatalog/SideBar.xaml +++ b/samples/ControlCatalog/SideBar.xaml @@ -12,7 +12,7 @@ diff --git a/samples/RenderDemo/Pages/ClippingPage.xaml b/samples/RenderDemo/Pages/ClippingPage.xaml index 8920b8a1235..10225f7c491 100644 --- a/samples/RenderDemo/Pages/ClippingPage.xaml +++ b/samples/RenderDemo/Pages/ClippingPage.xaml @@ -43,7 +43,7 @@ C 72.078834 28.113269 74.047517 25.960974 74.931641 23.777344 C 78.93827 14.586564 73.049722 2.8815081 63.248047 0.67382812 C 61.721916 0.22817968 60.165597 0.038541919 58.625 0.07421875 z "> - + @@ -53,4 +53,4 @@ Apply Geometry Clip - \ No newline at end of file + diff --git a/samples/RenderDemo/SideBar.xaml b/samples/RenderDemo/SideBar.xaml index d6bde0b1466..07fdb91a162 100644 --- a/samples/RenderDemo/SideBar.xaml +++ b/samples/RenderDemo/SideBar.xaml @@ -3,7 +3,7 @@ diff --git a/src/Avalonia.Controls.DataGrid/Themes/Default.xaml b/src/Avalonia.Controls.DataGrid/Themes/Default.xaml index 17e7ecba433..738732f6710 100644 --- a/src/Avalonia.Controls.DataGrid/Themes/Default.xaml +++ b/src/Avalonia.Controls.DataGrid/Themes/Default.xaml @@ -188,7 +188,7 @@ diff --git a/src/Avalonia.Themes.Fluent/ContextMenu.xaml b/src/Avalonia.Themes.Fluent/ContextMenu.xaml index 44783a8dea0..33405ddc57d 100644 --- a/src/Avalonia.Themes.Fluent/ContextMenu.xaml +++ b/src/Avalonia.Themes.Fluent/ContextMenu.xaml @@ -1,7 +1,7 @@ + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - + + + + From 3acf969fcffeb6b9ed951b4edd4e4c043fbc9ab8 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 5 Jul 2020 22:04:47 -0300 Subject: [PATCH 224/354] polish fluent notifications. --- .../Accents/FluentControlResourcesLight.xaml | 11 +++--- .../NotificationCard.xaml | 38 ++++++++++--------- .../WindowNotificationManager.xaml | 2 +- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml index 8700c412bd6..c3415930524 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml @@ -492,11 +492,12 @@ - - - - - + + + + + + 1 diff --git a/src/Avalonia.Themes.Fluent/NotificationCard.xaml b/src/Avalonia.Themes.Fluent/NotificationCard.xaml index 87690996d01..5a0fa326577 100644 --- a/src/Avalonia.Themes.Fluent/NotificationCard.xaml +++ b/src/Avalonia.Themes.Fluent/NotificationCard.xaml @@ -1,8 +1,8 @@  - - + + - - - - + diff --git a/src/Avalonia.Themes.Fluent/WindowNotificationManager.xaml b/src/Avalonia.Themes.Fluent/WindowNotificationManager.xaml index 7c1efa2e829..551dc38b2c7 100644 --- a/src/Avalonia.Themes.Fluent/WindowNotificationManager.xaml +++ b/src/Avalonia.Themes.Fluent/WindowNotificationManager.xaml @@ -1,7 +1,7 @@  + - + - + - + - + From 33415bd0c6508b48cdb26c1de34a97a764760d61 Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Mon, 6 Jul 2020 00:25:23 -0400 Subject: [PATCH 226/354] CalendarDatePicker should use Fluent resources --- .../Accents/FluentControlResourcesDark.xaml | 23 ++++++------- .../Accents/FluentControlResourcesLight.xaml | 6 ++++ .../CalendarDatePicker.xaml | 33 ++++++++++--------- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml index 78da05e4e95..fbea5977e3e 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml @@ -339,12 +339,12 @@ 0.6 4 - 0 + 0 - + @@ -493,15 +493,6 @@ - - - - - - - - - 1 @@ -709,7 +700,7 @@ - + @@ -736,7 +727,7 @@ - + XamlAutoFontFamily XamlAutoFontFamily @@ -900,5 +891,11 @@ 32 + + + + + + 1 diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml index c3415930524..b05771ca8c0 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml @@ -897,5 +897,11 @@ 32 + + + + + + 1 diff --git a/src/Avalonia.Themes.Fluent/CalendarDatePicker.xaml b/src/Avalonia.Themes.Fluent/CalendarDatePicker.xaml index ae9a63fc2a5..4af47fccf6d 100644 --- a/src/Avalonia.Themes.Fluent/CalendarDatePicker.xaml +++ b/src/Avalonia.Themes.Fluent/CalendarDatePicker.xaml @@ -8,11 +8,20 @@ + + + + + + - - From 8c44474aa2d0412a4783daf559948b918a6d7457 Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Mon, 6 Jul 2020 00:38:44 -0400 Subject: [PATCH 227/354] Deal with some another missed resources --- src/Avalonia.Themes.Fluent/ContextMenu.xaml | 2 +- src/Avalonia.Themes.Fluent/EmbeddableControlRoot.xaml | 4 ++-- src/Avalonia.Themes.Fluent/Expander.xaml | 4 ++-- src/Avalonia.Themes.Fluent/FluentTheme.xaml | 3 +++ src/Avalonia.Themes.Fluent/GridSplitter.xaml | 4 ++-- src/Avalonia.Themes.Fluent/ListBox.xaml | 3 --- src/Avalonia.Themes.Fluent/OverlayPopupHost.xaml | 2 +- src/Avalonia.Themes.Fluent/TextBox.xaml | 1 - 8 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/Avalonia.Themes.Fluent/ContextMenu.xaml b/src/Avalonia.Themes.Fluent/ContextMenu.xaml index 33405ddc57d..a6b61569440 100644 --- a/src/Avalonia.Themes.Fluent/ContextMenu.xaml +++ b/src/Avalonia.Themes.Fluent/ContextMenu.xaml @@ -35,7 +35,7 @@ - + diff --git a/src/Avalonia.Themes.Fluent/EmbeddableControlRoot.xaml b/src/Avalonia.Themes.Fluent/EmbeddableControlRoot.xaml index 9ffe51fae8f..3ff47111eb3 100644 --- a/src/Avalonia.Themes.Fluent/EmbeddableControlRoot.xaml +++ b/src/Avalonia.Themes.Fluent/EmbeddableControlRoot.xaml @@ -1,6 +1,6 @@ - diff --git a/src/Avalonia.Themes.Fluent/OverlayPopupHost.xaml b/src/Avalonia.Themes.Fluent/OverlayPopupHost.xaml index 36dbc1b7618..3809e11251b 100644 --- a/src/Avalonia.Themes.Fluent/OverlayPopupHost.xaml +++ b/src/Avalonia.Themes.Fluent/OverlayPopupHost.xaml @@ -1,5 +1,5 @@ From a894bf4966dad5abde55fe8a5733d1f6e412078b Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Mon, 6 Jul 2020 00:48:22 -0400 Subject: [PATCH 228/354] Remove unused Menu/MenuItem resources --- .../Accents/FluentControlResourcesDark.xaml | 56 ------------------- .../Accents/FluentControlResourcesLight.xaml | 55 ------------------ 2 files changed, 111 deletions(-) diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml index fbea5977e3e..9bc8275a52d 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml @@ -254,9 +254,7 @@ 1 32 0,0 - 12,0,0,0 - 12,4,12,4 @@ -266,31 +264,12 @@ - - - - @@ -300,41 +279,6 @@ 1 - - - - - - - 0.6 diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml index b05771ca8c0..59095436b2d 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml @@ -261,9 +261,7 @@ 1 32 0,0 - 12,0,0,0 - 12,4,12,4 @@ -273,31 +271,12 @@ - - - @@ -307,40 +286,6 @@ 1 - - - - - - From 4327d315cd6f06a278dacf870d33808400c9e839 Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Mon, 6 Jul 2020 00:56:47 -0400 Subject: [PATCH 229/354] Cleanup TabControl resources --- .../Accents/BaseDark.xaml | 14 --- .../Accents/BaseLight.xaml | 14 --- .../Accents/FluentBaseDark.xaml | 95 ++++++------------- .../Accents/FluentBaseLight.xaml | 95 ++++++------------- .../Accents/FluentControlResourcesDark.xaml | 95 ++++++------------- .../Accents/FluentControlResourcesLight.xaml | 95 ++++++------------- src/Avalonia.Themes.Fluent/TabControl.xaml | 4 +- src/Avalonia.Themes.Fluent/TabItem.xaml | 36 +++---- src/Avalonia.Themes.Fluent/TabStripItem.xaml | 36 +++---- 9 files changed, 146 insertions(+), 338 deletions(-) diff --git a/src/Avalonia.Themes.Fluent/Accents/BaseDark.xaml b/src/Avalonia.Themes.Fluent/Accents/BaseDark.xaml index 68b33d104a0..fb08b97b472 100644 --- a/src/Avalonia.Themes.Fluent/Accents/BaseDark.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/BaseDark.xaml @@ -158,8 +158,6 @@ XamlAutoFontFamily Segoe WP Segoe WP SemiLight - XamlAutoFontFamily - XamlAutoFontFamily XamlAutoFontFamily Segoe MDL2 Assets XamlAutoFontFamily @@ -217,9 +215,6 @@ 96 8 16 - 24 - 40 - 14 0.6 4 2 @@ -262,7 +257,6 @@ 44 44 12 - -25 0,0,0,0 0,0,0,0 0,0,0,0 @@ -312,12 +306,6 @@ 19,19,19,0 19,37,19,0 0,0,0,32.5 - 12,0,12,0 - 12,0,12,0 - 12,14,0,13 - 0 - 0,6,0,0 - 12,14,0,13 0 2 1 @@ -346,8 +334,6 @@ Normal SemiLight Normal - SemiLight - Bold Normal Normal Normal diff --git a/src/Avalonia.Themes.Fluent/Accents/BaseLight.xaml b/src/Avalonia.Themes.Fluent/Accents/BaseLight.xaml index d8a641e8acd..6c8d16ddfaa 100644 --- a/src/Avalonia.Themes.Fluent/Accents/BaseLight.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/BaseLight.xaml @@ -157,8 +157,6 @@ XamlAutoFontFamily Segoe WP Segoe WP SemiLight - XamlAutoFontFamily - XamlAutoFontFamily XamlAutoFontFamily Segoe MDL2 Assets XamlAutoFontFamily @@ -216,9 +214,6 @@ 96 8 16 - 24 - 40 - 14 0.6 4 2 @@ -261,7 +256,6 @@ 44 44 12 - -25 0,0,0,0 0,0,0,0 0,0,0,0 @@ -311,12 +305,6 @@ 19,19,19,0 19,37,19,0 0,0,0,32.5 - 12,0,12,0 - 12,0,12,0 - 12,14,0,13 - 0 - 0,6,0,0 - 12,14,0,13 0 0 1 @@ -345,8 +333,6 @@ Normal SemiLight Normal - SemiLight - Bold Normal Normal Normal diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentBaseDark.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentBaseDark.xaml index 58b87be5866..1c659115931 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentBaseDark.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentBaseDark.xaml @@ -373,74 +373,33 @@ - - XamlAutoFontFamily - XamlAutoFontFamily - 24 - 40 - 14 - -25 - 12,0,12,0 - 12,0,12,0 - 12,14,0,13 - 0 - 0,6,0,0 - 12,14,0,13 - SemiLight - Bold - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + XamlAutoFontFamily + 24 + 40 + -25 + 12,0,12,0 + 12,0,12,0 + SemiLight + + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentBaseLight.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentBaseLight.xaml index 699a5d606f3..ad239557764 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentBaseLight.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentBaseLight.xaml @@ -376,74 +376,33 @@ - - XamlAutoFontFamily - XamlAutoFontFamily - 24 - 40 - 14 - -25 - 12,0,12,0 - 12,0,12,0 - 12,14,0,13 - 0 - 0,6,0,0 - 12,14,0,13 - SemiLight - Bold - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + XamlAutoFontFamily + 24 + 40 + -25 + 12,0,12,0 + 12,0,12,0 + SemiLight + + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml index 9bc8275a52d..77f5f21ffe0 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml @@ -672,74 +672,33 @@ - - XamlAutoFontFamily - XamlAutoFontFamily - 24 - 40 - 14 - -25 - 12,0,12,0 - 12,0,12,0 - 12,14,0,13 - 0 - 0,6,0,0 - 12,14,0,13 - SemiLight - Bold - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + XamlAutoFontFamily + 24 + 40 + -25 + 12,0,12,0 + 12,0,12,0 + SemiLight + + + + + + + + + + + + + + + + + + + 0 diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml index 59095436b2d..6a2a04f7326 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml @@ -679,74 +679,33 @@ - - XamlAutoFontFamily - XamlAutoFontFamily - 24 - 40 - 14 - -25 - 12,0,12,0 - 12,0,12,0 - 12,14,0,13 - 0 - 0,6,0,0 - 12,14,0,13 - SemiLight - Bold - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + XamlAutoFontFamily + 24 + 40 + -25 + 12,0,12,0 + 12,0,12,0 + SemiLight + + + + + + + + + + + + + + + + + + + 0 diff --git a/src/Avalonia.Themes.Fluent/TabControl.xaml b/src/Avalonia.Themes.Fluent/TabControl.xaml index 3cfdf60ae04..c91eab67518 100644 --- a/src/Avalonia.Themes.Fluent/TabControl.xaml +++ b/src/Avalonia.Themes.Fluent/TabControl.xaml @@ -21,8 +21,8 @@ diff --git a/src/Avalonia.Themes.Fluent/TabStripItem.xaml b/src/Avalonia.Themes.Fluent/TabStripItem.xaml index d45f705a400..628ab8ddddd 100644 --- a/src/Avalonia.Themes.Fluent/TabStripItem.xaml +++ b/src/Avalonia.Themes.Fluent/TabStripItem.xaml @@ -14,11 +14,11 @@ From 01a7a8360d47b1e7e554582121875be155a89d2b Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Mon, 6 Jul 2020 01:09:37 -0400 Subject: [PATCH 230/354] Whitespace --- .../Accents/FluentControlResourcesDark.xaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml index 77f5f21ffe0..653e4733cb0 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml @@ -283,12 +283,12 @@ 0.6 4 - 0 + 0 - + @@ -644,7 +644,7 @@ - + @@ -671,7 +671,7 @@ - + XamlAutoFontFamily 24 From 899461f6233ac8271b5d5aefc0736c972aab5212 Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Mon, 6 Jul 2020 10:11:06 -0400 Subject: [PATCH 231/354] Add TabControlTopPlacementItemPadding Fix #4232 --- src/Avalonia.Themes.Fluent/TabControl.xaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Themes.Fluent/TabControl.xaml b/src/Avalonia.Themes.Fluent/TabControl.xaml index c91eab67518..9e9dea7001b 100644 --- a/src/Avalonia.Themes.Fluent/TabControl.xaml +++ b/src/Avalonia.Themes.Fluent/TabControl.xaml @@ -19,6 +19,10 @@ + + 0 0 0 2 + + From 1b2599b07da330b5d245a1636a21391f0d249add Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Mon, 6 Jul 2020 10:12:12 -0400 Subject: [PATCH 232/354] Rename TabControlTopPlacementItemMargin --- src/Avalonia.Themes.Fluent/TabControl.xaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Themes.Fluent/TabControl.xaml b/src/Avalonia.Themes.Fluent/TabControl.xaml index 9e9dea7001b..04ed7a97399 100644 --- a/src/Avalonia.Themes.Fluent/TabControl.xaml +++ b/src/Avalonia.Themes.Fluent/TabControl.xaml @@ -20,7 +20,7 @@ - 0 0 0 2 + 0 0 0 2 From 785a082fe7327ebdd4019d140ec5dab5f3cfeba5 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 6 Jul 2020 12:26:12 -0300 Subject: [PATCH 233/354] fix tabcontrol --- src/Avalonia.Themes.Fluent/TabControl.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Themes.Fluent/TabControl.xaml b/src/Avalonia.Themes.Fluent/TabControl.xaml index 04ed7a97399..c38ecb0452e 100644 --- a/src/Avalonia.Themes.Fluent/TabControl.xaml +++ b/src/Avalonia.Themes.Fluent/TabControl.xaml @@ -20,7 +20,7 @@ - 0 0 0 2 + 0 0 0 2 + + + + - - @@ -264,10 +259,6 @@ - - From edddd048f99f4c91bbf74e3ed33ddf5136501d3c Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 7 Jul 2020 14:08:55 -0300 Subject: [PATCH 252/354] use hinted roboto font. --- src/Avalonia.Themes.Fluent/Accents/Base.xaml | 4 ++-- .../Assets/Lato-Black.ttf | Bin 614544 -> 0 bytes .../Assets/Lato-Bold.ttf | Bin 657188 -> 0 bytes .../Assets/Lato-Hairline.ttf | Bin 584784 -> 0 bytes .../Assets/Lato-Heavy.ttf | Bin 665420 -> 0 bytes .../Assets/Lato-Italic.ttf | Bin 723544 -> 0 bytes .../Assets/Lato-Light.ttf | Bin 644556 -> 0 bytes .../Assets/Lato-Medium.ttf | Bin 637068 -> 0 bytes .../Assets/Lato-Regular.ttf | Bin 657212 -> 0 bytes .../Assets/Lato-Semibold.ttf | Bin 669228 -> 0 bytes .../Assets/Lato-Thin.ttf | Bin 627220 -> 0 bytes .../Assets/Roboto-Black.ttf | Bin 0 -> 535112 bytes .../Assets/Roboto-Bold.ttf | Bin 0 -> 541248 bytes .../Assets/Roboto-Light.ttf | Bin 0 -> 543036 bytes .../Assets/Roboto-Medium.ttf | Bin 0 -> 538564 bytes .../Assets/Roboto-Regular.ttf | Bin 0 -> 539264 bytes .../Assets/Roboto-Thin.ttf | Bin 0 -> 545920 bytes 17 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 src/Avalonia.Themes.Fluent/Assets/Lato-Black.ttf delete mode 100644 src/Avalonia.Themes.Fluent/Assets/Lato-Bold.ttf delete mode 100644 src/Avalonia.Themes.Fluent/Assets/Lato-Hairline.ttf delete mode 100644 src/Avalonia.Themes.Fluent/Assets/Lato-Heavy.ttf delete mode 100644 src/Avalonia.Themes.Fluent/Assets/Lato-Italic.ttf delete mode 100644 src/Avalonia.Themes.Fluent/Assets/Lato-Light.ttf delete mode 100644 src/Avalonia.Themes.Fluent/Assets/Lato-Medium.ttf delete mode 100644 src/Avalonia.Themes.Fluent/Assets/Lato-Regular.ttf delete mode 100644 src/Avalonia.Themes.Fluent/Assets/Lato-Semibold.ttf delete mode 100644 src/Avalonia.Themes.Fluent/Assets/Lato-Thin.ttf create mode 100644 src/Avalonia.Themes.Fluent/Assets/Roboto-Black.ttf create mode 100644 src/Avalonia.Themes.Fluent/Assets/Roboto-Bold.ttf create mode 100644 src/Avalonia.Themes.Fluent/Assets/Roboto-Light.ttf create mode 100644 src/Avalonia.Themes.Fluent/Assets/Roboto-Medium.ttf create mode 100644 src/Avalonia.Themes.Fluent/Assets/Roboto-Regular.ttf create mode 100644 src/Avalonia.Themes.Fluent/Assets/Roboto-Thin.ttf diff --git a/src/Avalonia.Themes.Fluent/Accents/Base.xaml b/src/Avalonia.Themes.Fluent/Accents/Base.xaml index 9cf2824c065..8358297f8ba 100644 --- a/src/Avalonia.Themes.Fluent/Accents/Base.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/Base.xaml @@ -12,8 +12,8 @@ #FF0066CC #FFFFFFFF #FF000000 - avares://Avalonia.Themes.Fluent/Assets#Lato - 13 + avares://Avalonia.Themes.Fluent/Assets#Roboto + 14 True diff --git a/src/Avalonia.Themes.Fluent/Assets/Lato-Black.ttf b/src/Avalonia.Themes.Fluent/Assets/Lato-Black.ttf deleted file mode 100644 index e2aeb6cc358bde7bae229aa66e77ad0d10229881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614544 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�^<>H$LsU?^uGqjm6VJrW4II=nNh*U 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 U^18nrh}Pa7MKm@fVqH~SVr7pM%-dX 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 em|a@|8RI${l>=4!&{+Upd8BPVtpfeB~5hImK5_ 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 i$k#DXl?g#_qo32{?`3`@W=Sz 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%0ArEZ(ZAeY{ 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 diff --git a/src/Avalonia.Themes.Fluent/Assets/Lato-Bold.ttf b/src/Avalonia.Themes.Fluent/Assets/Lato-Bold.ttf deleted file mode 100644 index ef5ae3b43e99637fe8c09fe8eafd2302df88759e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 657188 zcmdqK4SbH}|Ns9!ZqDnxxn{&L8M}5T>>7(<7|m`NhGEzc*O;3!879nP)vASZ)8r;; zBqY@}jTWjEA*qxl6kH`Pt=lgWry^r_tK9BP_ zkMlT=^S$d!jEEZGA4$|FWzf*C*3Q~QwimXLi1O_-bXZ*0mLqe>{IZNFG;7e%_8q1S zKf9WU6{41F{M3x>l&zoqMs#Z^k>95Acjq`_s&+m_G{k}OuP0_tntI0Xv&%$@hl%Vf zCuPjcR;@vQF+yWf*4&A|ZkTZo(S1o|Yus}3gp5q%opvjs-v{NLCnKZY{XTagoq%-c z+j=M6ZPT0T4_eZj= zM7n8{>}fM|syowow4blavu8}mo@U+Ajc9Nt(yx%}3obq$v$}22*!nR)Q8WDra_EC| zTjqMh^Ie+%-tXFeE8kcNS(CW82AU(%cUBK4vUdL7@0aCPer>+0&9`sPwN1#V#7pJHV{^8s}UJF1{e{Nuf&~)D2R~ zbLOTblY^+*W9wI)%a-ap*;WTJ+y&fJu5Ci#AiL~MZB-8Y8ZAuq{G?6s{HXWyT++g5 zy%tUbynIjVZPMeB^J%@8ER=1d{x%Ky&B%`rruAT=7)4FAQIM$*+EYCh>f<1z3$hO!&sH4lvR6nAfBt>kI^mcGTmcar0Udi53Vr}{cs#%Hu4m>W_|&E zG7WtMY%Y+2_I5zWC~C{kQ7}JCLHsg>YV#>rGbjWEtGMAu!TKT!0l{b^+lzxtTOu`- zeq@t@WD_eXihoXnMG*BB5j2{2hrXGV#G6wagibz?+OT5eC8LcQl*FQ`E9>ex$7dtn zgObE@$YxVtJ`3_Wh|i>O_B_gdpkP)`fhddPQN+X)jH_|ffOqm#b4G22gHnXU^Q&;M zdWa*WE}&y=7>*I#5b+_kc`*pvfe9cJj03$v2`H}(4hz$ z`All4#;kTH#@Lqs5O>!(vvsn}idWlax z)ix(hv2{TIIheYRuIx>W6(BFdp6)fkPG2L9xLia{m7Q8PIO3@?hJi&j&!2V_d8X$F zZMo-rTVLv7>x8t*OQL~BF0D6CAby@&=#(dlO@! zkj8@vY%@(3O=+^WnflsR(kNRtY^w!*KSVo6Q^akUy9((paI=giAB6GXZV(1;0lvs@ zVtbCl&0FbJqyuFYjlpx-NcNy1vK_|81oX|f)LN#%hT{ka(I`B_JyEY6m<|Sjc)&n^ z&<6|$gFuqjk=$v6>W9^_k&~*2MjO*+zy8FwbTKm zfbJj~GzM`X77PUOAQ21!6BKM9wFhkwS9Oy?SI`;U1eE-3pkHmg5A&~{rF}}nwK7Vr zZTDe>Q^9DU;)=CkB{&XL{`25XP+*$~Tjx+ALDNa*bZvvrs{LTp{Pq=4Ex}V8IRTW1eJJtrHEzJ3R>VYOI_?eY96F1~y`BWqC5SQrv^do(jH+)@Ybd zjfd$mo94;%u4yb9U<*LKcQJ4Fq8M!i=0B`u)cZl(O)IoFJ>SbWC|o`TnPS|xN63kJ zx4)5$`}jC`8~EYbJ4CIuZ%Mb+rxfib^3$Hc+DEO01j?U?r2fm%cK@Kj-5_O27KE{NtH3Q=nTtf!>F^CcEg zjJOwTs|P3&Yoy!cV9$?YzUMQoA@p^lo?nu+mCC=AR3s-#{+nxqLOfz*l>&iqBxv zr(hO!VHZ8I3O>=3$1jn=PvZU`!JN4RV=9)$VJboxs+%mP@*;mYv^dK>8??T zZ5P&^QJ6QnV(rm}GO*U1?j?Xst+(e2#%`>vhqcmC%FD3o2IG_28d ztW|PFBz2ct(0@nq?%9O?+>ZA{cj|++XPkH+cCDkK7~83MSE}o8?qvWqzJ1YOI(a@aA`v)!v>Zp}JcwatD( z-5wq{dl%3CN@~SdU@flZ#gUl%u%2cfto$n>m~6H;5qD#a^ECBSYiRK-#?)5osMW`_yMGfK7?asp8+}JHTvCy3AaurK4t@^n@n0}k?w3 z>)R2k_XOs4^)A4gcRkj;!P*1FF@JZEN6Bd$1X|#EI7;<(%*Fal)cFDL6N>`W`^6UQ zslvNH7vrWio}t#_E6hdZkbeSstH4Uk`~K)RtdX@3P&NU1=WxwFc&|3ca}z?A%p|G3 z2$}mZXSYEAG=Xdc_IW_2BW}lO!VJ_yeHnmt#V-gkSBi%{U#tEU186SRwyouO(y*Sm z#db3#VE?a+&oNJp#2P*j^68i_w&2;s{zj8n)0a{|Efep!nUsdLl3L?Bu|^(>Fj#+% z-Y}-qP}{4t%jSz~<<#H&gkrEq=z{W_v{%u$U*nm5l?Fq{Alov`H7n3}Phy_Jx()W- ziEz2-&RUD^o}aZ7p7*p9d|eH7anF0kLMqa_QG2a1>L$`qZKCHBZ5!61_fa6`@#*qT z%$Z}c-zvnKb(-hAT!!__JGc*cu8ccqm_8f#VzcL>q2r!DM|RT>da|gom4W>p)?vn- zcrRbY`yKm9?QZnJL!RHTug*oArhYTV_H6Pq)}cR}QJk$g_Qg1R!1Hhu#=6>vs6h! z|9O;>%>)_%yQ;-R?0>$eS*Z7-EgsKm24#YK@f>D?dwDO)MA_0>?&SUGQS7q@@@`n) zcf%Tf8NCGJ`8>=|^RWLq@A+KqZM2`TN1TWC&Keq_g&4*G2$X9!rCZKNbGXU|ry^m@?3ZwybkCgu2pj&Oa6?C)%ZIQkOq0*VeOK3XM z|5R7)r>@sUT-E#QwJDoiK-twFsOwNRXh7Mh_E^dWWuxi`wTDxEFdWqNf!e<*dwT$7 zR~yh?_|iRuQ&U@8O0i+SQmFSZ(eF6#{rxh}@%)T;R|kGC-s^qnR-TBlpw@03G3T$t z9Qrm5@~)v?Lw~?;(#@EpDk)EUttFdJlp!rBmV&sR05=T_D6o*#{4i!e4%VBc~M zXQZ_uUxO2;D*#Uqo(aNxlL#l?xO%G9Q(fC`W4s$2#wVC-7UP|UeIleTYQ5==8r!c` zD?L1j=Hi`8*x&T<^52^m)I9PZ!G2_fNT9nFh)+Z~4fo_b*n|J7>@}gX|N1%F1jKs+ zoS~_{q5h!mZ0-8l8_JHNzo(-NXJ_7Xw>a#3KScgRxW=Dq^VE5qs*5#%=PiWLsruJ5 z51~5KQun1J`Z&pZ-_*UU+Z(ELyFc$om&z|OCnyT&Bh;G$Hh}vf*Hs%$k13E=_TLEh zx8AeBaaw!4cWcjSkvAIrh%?ts-aXG&%>UOg=RfE@!%4t3JcqtPUnxAL-aX5KnsZ%s zrmGN{o^x6`C1ZV%jQw7+_7W%od%+os)lMVCoU6I879NCWF4FTP*5fT?N6&9E4`aW^ zPIV@^L9MeioVly#0_haIv*voAkr?FRTvnZ}dC$Bbp=Z>X7hCWSev8Vm#_x`E@CEAp zPo3L)W%l7LBLe66xLzKIHJgK^THC2Lp7;>=YCQH;-%=B_Fq z>xy&6=P`d_ZK~Fg-nDNU)#tb1>?sQSgIYcK#xO;pYz69lr%-)81pTG<+TOJH>;Y#5 z>Ulxl=GuF@M(xwFo|=U<{vEi!ToH~n^*L$``ACe*PY`|sRM-?Wstqw-ui?GwO$Q+K z1&ILn>slOW1(tzgfOCgy6TnfR^t=V|KEBor;QNQ7ItSr4a3A9MX5(#3wWoBcc9ia) zYN!rE_$*NQxb|x!Knj>#8zNqXHWb%jTlH&LPp!WZtdYkc{Wp-`5BYxs`3cDX8_4g4 z{J(+xvB>`?{%_gwH=EUU{Qt;~zxA=|_kVL={*U^jc07JqI~EcC`B}ib1>Zru-$T^6 z$7#5C9IEk%ap@hOwPUsFP4C(s&mHD3@Sn!28spWkLGBiyo;CGstpLlxS&Zpd5Y|3N z)e^Emy+f+->{MkS-VZ>w3Uj7c2W+a^1#I9wunOg9u=>0ya zzES>Hn1pW?{}s9aip-qrZMJ|;6XezEz8N9EA^lNp{*5;N>pIHDT07M@S1-Li=e02G zM--jNem$DLTA=KJoFZvJp zf8=?N{1L~zHXq+L>f}rCeyofCDf9?Azgo)q*DlNX9vyLp_<332>4tQ3Z=Krj%GkU0 z|0leAZnf{Wdxl<*tMs4n2%A8J!TT|!X%ksgV2XHn5 zJnz?X2x&t6ON2!L-@QHEfy!5L6%GRH5I+E#0?6X~r?;&72R`_k;&VQ@dNBAI@$bOL zHEB;ULJ#WKwV}SNug96vdVz22UZ&N2V^`nV|B9?nMPR*jP*ZPMAMa_E2KxQzCr8cq zcpcy5Z{*MY_t*aXBW-4&UNzFS-|_!#IM6fa-D9bngWdCPNI z!YAWjf%AH=uf~5Xyy_YB-;!5tT*WzCzrVHBSm{xIB6VOL?fq`x4X0zRseDKN%3;q3 z-aPn}c-P%^-xgH34Um#zzMltCVc?+Vt&fB33= zR^xBt-ILUPOF^F3|3vw!Oa#hDrTw4tlurugiCh0AH(v7%ah##n_|(+pP4=u%YxWwv z@xHb33z&D5PfIPH*Kp=O0(-2t*fqKz;Wlspd;mTLAF~VIIMU=qdK+)#IfSqT=lTNQ zB61Nf@XB5Dgdr^DNuHyqqx5XzKA!R#Um4Hxnh-Xr?_TgDknJcJ=VHUu*%;2T{1MJz z-+SH#N5BUD0CkcUd}|)@e*aP5fND5{@Nt}{UBAA%>->lC4all*7wTO4ze}E~<5~0H zuBY1Z)~yZe;{VkCe6P>ZA7g)-=O^!3FrEkR_p1vy(^B8|Z1`@WzGq#)`I6!Xoc&y& z+57_b?6p2c|1tak=Q_&QNckC^!*|BB@O{Cz#_Lpjp3`)kk1K5W_F5OO32#iRc#v17 zCu9}1vid@tFDo9VpzHC!rfbTAyfS+rtEjDqds^e)^iScWe^d5P@^yKyT(6gk=gRcb z7T8^!GVomzK34xzlyBBQatvpC%1`Sbe6{$18~nAD&sH7{VNcUkHpp|; z>$4S)Gau!%rTn#OeYWu3D2e@ydN=xOO@e<$9<}iLY`LhR^4aqGOetR}UHu$b7;JXlt?;{bSpw^E~`Lf*z{MzdL*_6K;zRi36)08h8gHM_AJHwgq zMEQ-U8sQk6i;qEmF22|0+TcS5-@Ez359eUuum9nj@^FrC-M0Ps_ECuM7lrhdtqlG^ zb-aT3t{VR!%3tWOXgKHoE7)hRs{>~V(Kx~OB5*DTdv3tv#u?rM!UOd z;dM|K{z44r1b+Y>*xO&{F~q&TL@K<2MK{D%{&=t(pgmel&_L1Q@%R#}A?`)_E+OtkeXFm_SH4V$d*SeDx}Fc;rt5L| zI3eyuz}E?JFX}86@#`r6C#1b__(37=MfpP^?gjm!A@1cb@o~ua`bi;F{iKlUJGYlN za6Ya4Z{CE@!Awtqi1);bw>{s8cAi`jMt)vj5cqH?|BX7|4e=lRHuyjJYSj8BplzJ9 z;=2%h613pzZ#4K3Xu;RkfQ3jm2PeRuntWAOU2aRmGmdZbY7W5q+Upyn)>#lT{QgBA_gb*ImAS5VsX6S{`D`6DI!+gRT zg!zT}hpi8LF6?mF`(atk>H?^qOqCT#>ZHxF8Pq*0Jq8is-97uuw zfsVkWz?9nS9vhe+xHE8n;IY7yfj>x)&Tz7j%2S-;&46b{OBioVV$aUm9mN<$X z&p4iUl+|8$lN+vkK+w>j`-7I&UiVG7?qfCoaw!8N2m+eeKFMYr|aGtcIbxd zzT4??=HR-UZg$|hsoLSaZtqy2(YX3yMhi+ceQ7A-gD~IbsxFZW)xYY$Ujo0v==-Yb z+q=H{9pURL@9Zt=-@57Il~H0q^*~!Z3GhK6ULN z?f{Ya8eD4IgMatiF6nUwY$7tt)xQXlZ_TkD$6vv`=acWV)u+^_x}H%}R>~@yI2D9PpCDw)Y zW8GM9wuCKZ%h+=E7%P&q*a~?!dz^J;(QFrcneAqsmleP9Q*&yGCn$)5DU@2ld$$e#S|=R4;~}gs8_GuE>+@E;mm}#`>Vi4G2i;C%@ot_7 z--#T&52oUKWoX zOJJ|V`tkHKo5=Rax$ytqW-VYN*&x~rUyesvqRf-`$oX=C9~E%;!_4942r~`)j%@Qa^L4Y_e8c>TW}0X9NaIQU zR`}jXYNt;z%JnSc4gD@-uRhgy6CPI4dMp)`;3qD`;BAd18=eg#)tYw!=pcA zlD^4g`eu{EQ^|$Dz{=1MnSuIYGf02e45o%OUWXTfe%@@VUodagzcD+~9r}-EH~os) zotn}V?V{#KP3TU8nSBjuCL7%BXC0@T=`N$8nQk;PM;dPMo;rT zqqn)p=wmLX5SncynU5H$<|-ovegk1N-?&}7WQ;Z6G+gFhBg5Qhj5FV&Tj(Jp$NbEg zZ+>koFqWA=8jqPj8OzNpG>>QVUe=3zI)^VKkLL+|raq4+^4>g$&*FV}67S3V@w<6{ zo{aa-0Iek-$mg0dJQwex6l*9S%)Vyl_z*si59N70l@H_hSpIwkpU;Q$1$+cM%g*yO zp3X<|e7w8v#Vme1zYlM($N3n{oe;FUuAt{KV&~_e@FjK|J{r;?1qmyRF5}a z(2tp|j6iduF~NM>m}nj{CYkRTlg-1%9p=0I0X@NZQBO47`gmg(AIl%qx0piz&WzGd zYF`)*bCUfLZJ)MRpQFz;-qW8oC3o=*!)6Z9I~v9MIO7!~%FNY!8!zj9jGg*2)rx9e%HG<7KMy$Ee=w&`^+-ZJfOff5rzUHIGU~{GYQT~wrqS=6t7> zU&@!+i}-SV5}#l-)r*YN`X#eHpU5BMlgt7>nHO36c^Q923*fsTg zwXmj|ZEa!JoBR_0#yY~k<=^qk{CoQf`{OoW{yVSY*DNXKTQ;knSRnGny;ei3vHe;5 zR_kNy6TCMc6c31pM4@%gIxij;3+V-T;xD3?ZQt4&XHUDK-ZhFv0- z!gur)c%1B}ee@E&E|zOu#AB9W`C5(a&x<0lLOd>3idAB@SYz|kHd>!*&uE*p&Ds|2 zS=)D7mF=>2PWxTksy(M|)1KE}&|cKswp(m%Y~i-{wvLv^*2&i0cB^jMy4bqfBJA9* z*$um8ucz0yH?%jQ?Kb?)j@{qh%-&qP-Ts`tr9IH@um{+M3%g*e=-y+5K#{ z+0yN|SZD0Iy@kD_-cOr_S@|)`*{0A`yKWy`!xFu`z-rhd!BuP*4MsF`$fBI9ivP1jo!)nN`F9q zUO!^oYu#*R=~4OwIzR{Y0;5RZMsMry!;9jOUS(+Xj?tJ78=dG~V~CMY@4>tDeLA9l zVBBZ5xB6N`tSMFjeLx>#E&UN4qmSu0eL|m^UFig!q|fP;IhwwpFX;@OrmyI0I!ouV zYq_X>ZryL*Zrx|C6dT26@ud9)`-@_mcvh5(r^E|bLv0u9#Pgz9yeKw^5_zkPmK|hQ z*->_rQL?-2Bx7V}*+X`bJ;fHW)!1)FTCa#_#3my~yrfUZ>eDTr(_Yhl)qc|-(hHf7 z36*>sftv6Klx)jE`Ak)`T^+-e&%+8Eei0%rPv` zoM-G~4)YufHY-^O3uCR=Evz+b!`iZN7QxyX$Bj=|duuOqnoCT7Gt_LyZe}gaCf0k_ zA@e*7m9erv^JS5;mrRy%a)6AN17(67Bok$d>@5dd&9K_|owcND7G%9)RmeVah)j}0 zWnYSO6(M;#mnN1(cR3aAF$so6JLo}#Mfe%III1n zeIs^@b7GG;FJ2WF#B1WBcwJl)<>DLhhWJ*zDZbNw*1i>c#bslu_+IQ2KZv))k7B>L zA`Xb3#6j`1cw77;4vDMc9r3Gv)+({~iNoSI@vit?yeF!}`{J57BC5p)!lR$l#~P)& z%h;i38oTuk#(D9fB>OA&J=S*XE$b!gpg1a-wbMFmy==W}bTns+3d!xe?5|qo)=_J> zdD+@yes8^M{$RakeIP!P!g}5MP#lv|d@MC_T-wAZ#=GKEsf*8~Ax=nBoRpUMT-wDc z=_4v-J@JL~6<^Bw*8A2w=5L~>xJ|^GRc5v65xqp5h_|>%uyo55iIydLi#{UB^0De$ z4Mbnj&$>zU7s+CP7$^pb6q|0tbZ)b3cAJkFEQZ+XiJ{tg?Sc&lC?eIyZNetSFq>wx ziQ!^|NVC7I1zLBR^F_KCX}oS6Hoh@^%xKMF_A!T;3(P`uh5a$}xOv+A)p*IiL<`b_ zwGiuoeYe?M^N3OAQ88NFZe9~(#8~07n8>h%)dYKxc_L5TW53V-0PkTh)SKxy>&^85 zy@lS=KHI*~zF5yN%Jj*`9{mpERsBxmHGPJ0K+iD_>a&cu^}CHj+Sl4yeYWwAzQQ=8 zKW==buQa~aR~cvZ)y6sfY2%W<)zoyid6QmZHq^J9jcmcDpZ=09RR6@hS^v~*tzR}f z>ED~3^&iYG`p;$${TH*Re$~89|J97utIY)6VbL1vLL z++1ypFxMDq<`YJ`xt8ByzGq~a?;BIiBgS3k2gWq>LnGTfW=uCfHfETg7&FaJjalXi z<8Je$G28sy$Thz(=9ym_51HQ@E6ksb$IV}imF88mv8|PP%KXlrU_P#QF*fMY#?yLN zW24^9ct-DTY|>+l&3X@Gi{8_CR=>^Is>d47>Aj3?*b_XjKWu!eFEl>W7a1q?#l}hf z5#w|HQR9@p#HiGl8eixYW|;nw+05`a#~RH{mvOV1VKg_#83E>aqlKAiv@|DJ7pyDR zMe8T)lJ&FojrEK5t##EHZyqo*&4bo=*00uO>o@Cr>v!u1tIGP(x@P2=XN>#J3&sQH zC8NN+Xhm94RtKxIb*t6M>S%S*`{@JqWIaXiuMg4(=!30()&MKn8f5ji2I_0{C-t@Z zQ~DG7IxE#mvxZwEtzlNWHNqODm+EEuPJNfYLw`koS>J6!MT)z*{N6V_8!faS1STESKeE6578LaeSrU{Yb98>S@BjcD^VYzkJ8ii+x0Ykv_4WFW4WwMYn(OF%CII_-t{( z4gD>>T;Hd^sqeQoT3f75)>i8o>sf2F^_+E!6>hb$BCOVy(`swAvtq37Rv)W})!XW3 zCF#TTRDGyEL?5p8*7|DET8x%x-C>QjCR<~yJN5N?vHq&QM}JN0srArqv*ug(U>7*s z%CqL`U+Z7#XY|uroEEF~vWl$7tVgX!tbFTUYq_<=SYkYCJYp<1x@ieoyw=@%-g?^F zW^J%uFgh5wT47eG)k^E8b=CT7$r`+4w1L_nEkzrw4bg^bsagjuQoB_ftGQS|tt0Et zlC6{4ciQ(XhV@{vS`_QaZezW)PHY5AV*|AenXlGd+7H?l)>->eeqw2|LVhHV$@B68 zJt@C6f49i8TYlmRGf6go)=q;`~*XccU`_ObSf_L26fc1%02 zeWsnzKIBvFOWE7(9d?KvW*@K**?a6=_C7np4zN--h`q($l%cFlw$dibaCVSgWS6v4 zW-qPM=*sUjwwq7d%W#r1g|ETM$`gDopT^hmrzjRDTj`WcBk>nSmfEZ0C<6cYfArt~ zw|BVY-J2TvJ=lrfgnj2~>^aw9zxf1qoE@;+eBZm@Y=Ipo_M6yk4#R$PxS59i=IhvN zVyB6*Fwwh5PG+CIlH+<6xd+S8j9e-aGuD3H9sJ)>Yh2C+e#^6qN&^&7_U~Y_{IGjM^ zZek=3VzI23%*Rf9KK9%B*kyZn*ZKjqv(}nmhpqP1BjI=d0#^4g*RJ&U((735<3z?y zPKTR@r6s029R174cW{5VZRp4}cT{tC>vY#d$HHN0ZXTBLia`dAA0INVc~Fp>(%lpv zlCT}4C*Bno;bu;^!!5}KBb1TpZjG$kl*1jV$|IFzc}kiCMl8&5xUG~l7jhh`%u=z=D%RQ6 z+?Af5-rUW?)6+xTl#(_fJw3uLoQ_0?TZU!8AT2&6&8>yRxoshFFhAYRToG>R41rya z%o1%}oI{n=G_L-2Yp%rcZqYUf`SFg0j)l-&5~+pZvIeKQQkrKBNlyz&M``TPG!!*g z7ggJGgj;jE_4x4Z#A~|7hGa-w2)Z~VF2l{oO?0#IXy2{1jd1HuhceP0KfX-TIEcW^ zSXa6daV2<-G@RRYJH;o)wGF!7*{1W)op04>Vc{?#9#`ygBrXieP&dNcQ`B7brrXgR zM%G#B7GWV72{ldF|3!6oC~Bed^-H_4l8+iQA#vO7mPkwsY911l-Zm)0UC&v%;{(9B!ZZe(Jgq35iR0*Hft>NYz6s!d)L~8hE?JfgTtSv)#V&F2_Qb!|jVs zi*Pq^_D@YKk(mkUq3(JULgqxcZ*uk@oYsG6O=j~TH*}Uz{rF*NCH3payIDq@ zyMDMDq!_w!B|hq(dicl9n&3`|u#~hCHFD8eaSL&KRkLk_LQt(P-n^zB@J!i?pfi@gV9ZXxVA>&5$?v$5~ji?=w}r+b(RPf`a4Uc3Y$4g zG!@?LEU~GuxwAx9VSuy5P+<#aiK)UiPDeX8yFJ3))*G1~;STpkW<}ux{C{9$ zAZ%<2-458O!XVhF!eH2_!VuV~!cf?#!Z6sV!d9?Rg}1;)6}EG2TZY!ilbF z;Bv&{{5d3@N8m|nk3rlAqwOCbrI3v15H*ecTL}!M2zTW5+ryf; z+qW&zSmVSrOhf7>+=V)l zlSLY)bxezRqB}Fz*bnVTW0q-x2L%7;6>*#K;S(0N3voDN7D89oKZ+ggYIL|IbVADE zcB$t*c5vED+#wvzU*fIA&FOJ!4m2>EqCK=2(i=}7?&hB#B|P^myk@fJ@vh7ew}{Wk z#5Ba?GnymrO2@PN*E$(62@`Wj?~Lf?A!wmDt_y*;73lkiMqr4VEF~rY^u2}wg{l27 zmOx_$Du;QEz`uCYs9ElhwlE^PsXlO^b*)uxAB4o9Yr1>0-3A_Thog5$AJv$;TQS}) zQx{O%qm-J~&Jlxmqq4X*6UzSRa$6WueNlA%?OSuB{yw-|A+>h~Hb%I6)LIZHMm0XRJ6lGQe$HRCJoHt*GFpI z_5SCf*yo=H#{XpWseV)QOH4>~^Pn5N>Tzy8a;5^UB29>$rZ&eQ?Q* zYaUL#?eQEoYUhr^vzYWR^7~@WWqys^ogmZC>F$D{zv{I_^sA#cUTbyzl5P|C;^dyh%glyJ&k#R~!MaC-` z70FaGDl)<8?smPKC#r5jQBdY4LgMW=aVN;KOWQ=-$I?jF}gXQ+f%bf!0^M030`B|6Lb5vUDv;593AzR$eyGHiz9IR1Wm5BApFa{VsY;BCDx@Od7 zO|gxz;csSb4$Yfok9*BOzfpeud@J9EFRo-ltU=ss6np)D-aL_+P!h@t2V)Idm{y`v ztyF3kj;Wc9EgX-97&5WcPLK5&ZwxYSvxOVYbj_!28S^~gmXF}&l2D>$CV1au|K)$G zshVD;SG7&}^3C!0LM7@q5w)H08*k|Oz9t2U>oVFVNuD47kkWQQt~O2E@xKE6YSR*J zlUTvOSDI`qv=_u9{IvI%7VFCAi4}j6xnDf;C%GHjJN##>w8LJzR@MA+W6f2nE%bF3 ze+(#4yeZgmlLXN=YDUztwaky5&j&Ru79(j=nBO!Au;vFs%bp)Mb z0pz;+6U9^zeliTMLTmAaCIRS*FTxD72cRqwHufd}**-p?n5Zvo={FhVgH=SysGD30 z(9S^UO-X?ZR49I*6M9o~h=xPoh%}3AJNQI zqPvrca+8SWp8qJ?O8kpsY<#VG*w z9zpm>Dbb_ITjCFjh?Zs&Ekk_SL89f*^BCGIlK2@2gpZdKtxO|Y6$#3~C8E`kS-lZ1 zZc#)}G$2~*1EBLsG`tRa)K>jbnYAtkbe0xQCTH^UbUELR}?^<-N@Sm zxmVH7YsZORM;qlXqBo%T%>tsmXlHK)(Y~cbZ}|Y!-JeZ#05S(x5xt#EbO^GC%81@6 z1&}@L1pA2IB`}%jJ%6J2CDD$fXIjDR368v<~ z)>j5V{A>e&HqOO>BSh!Hg&c4gKM}Bz=u#foL-Y-7|7Hu(cM@a)$X!kVYl*)111S3; z2_XMRaHRsSXUP8<@n4|-Y8rsfUy}jC-%8=~i1KTNpbB#`uB96Ks!^}{3Vh;XfeXw5 z(Cw+h^ydd$U>n#6PGA88zc-cy7K6k1*oSG-`sn$Racv!s5R1wJ72piGLadVnejpS?0myWY zA=ZTeY>J*ktSi!8p|e{iC;%$H51b*^U4l@M05U-V*a-H4GsI#f2n7kmdcY3M&8%k` zu~^v93%19nVL=xF3W@c}BbEf&q)bo*_7Urgvc9;^zNp(T8K6JbP?dXzXW={loMO(0MNY@?c@EymZAQ# zGGfbN^J80x6-@>xTY)xLM1ncQ9(RFr#8##dTZQy$#MeM>O%<^x@`pX53G%kLCiW7-QiIqI2eF;dzq5ka%Wh(2u%qk}u~(pP7xe5# z{vNdXDs;c@BvxKP?2SD9xXM~$d!b`5^7ldJE!eXkb{yP7?CnfqhtS@kC}QuV5<84` z4x`SyNuU^Yg;-?( zu`lKj`?8SOX&-<(XJG5s8;PA=MeIE4T*xMN5jwt+;4-mqONm{EUN}jzAC?mP@hY*O zV9(Dfppw{CwDBwK{4JT-?@nTvepwatU5f$GQ;l*Dbb9s?Cj*=#j$g9nyo$K=Bd#SA zw;jh{JRBizZ6xlKMcfyjd<`mzH=In|FOzs<{DN7NwZxl3rda{;n<3MD3-N%<#9QL8 zB?4W<9jU~FCGn8M#9Kl3mQ}>tv?ktm5ApED#GO}(M?gw}+gF=a?_<(%`$9e!;hdPL-LdP(F z0KLPjh^N7(bX>#8B2YnmbPRFKH{6Bm7zde5KpQV3{&FVqGSq)%3-Mi$-Hmo$ zgO1ljiI=Ake*<>BnFG+yUWEG$fI3(M@_i?W@6Q7Jh#$xX2ZqL^do*L0i+WDrZw?zq3=7$UWWe5 zZsOl>B>qDTfQ}!b`${M{LHuXr{em{HI*9*@I=`aMZ_x95KJluh#IGfTD&p19f&YgB z+;flwMUr3zBxDLGC7~sODiXFiBy=CJk%Zw#!gP|bAY*rt@Ijq=F~Cj2H-SWb1Dqgn z6Y4gEY{P64jesBiW}-3ju(uWdl0-A;YX-TSLGv;a0eK`^ARf3BTkazyf-aE=-bW%N zltie5L|AKpx~=j_+!6^6l4uyE=2(iQXwBlAy02+Ui$8qJJTYWVAg1d4v2(q@bO_$RC2XhwLMPc}xtC zBrzg}L|Q%xtf9n6)EQMy;`TBUW1w>kY#DQc#8}9UT}r}*Ixfh%N&)m`v<8!b8(bwZ zK8ZwTC5ef!VItC#kU#kfi92#g+*w6p3hGSVM&hnQ64RU{vQxkj64)b)8K{?oHgiyC zRyK*dQ8qi7L@spY!sdAh??Jd=8;N|>zuyTCk|-!3@qmlOgQ+AIt^%mP2zl5O3(Q|) zSpe8aVmb03gWe*vQB+0(bC_6x`YWTsXpj#!0+n}(#Ht1$3Z#KNPz)+atTq7Zu71}J|9<l(m9+r2?SkFA@<{9sC9x*~6oG>zUiAan zz)j*c2RKKf+(qIIwEHG(c(a(qULSCo1m`hP!1|dyhFeN zVu1_fgJMt)DoGqB-~h3}1@b{LCU#OMAbP9c2?=`V1P zPNVJ_+`F%d#MyHESRwSEN8R(K;0lQgqiezaxKIhu#zn|qi~+bemx@3IiEsP>;@=)7 z@!b^?-$#-70r&Dp$X$^D?frzZpAVAw1?~RgCUF(ETwVO%Xz#ZzBz`wY zTpLYN;+Np%IsB4sDoGoD(bjgHq@GfPv6!U7%qIL`14%nVpUEVBQK$Y=k_|4CY?wl_ z(OQyzt4KCUCfT%{WV5Rzn@5psF^6Oz@`LdAdBIgALpPEPyF#)x+G(3lG6LlhkdHuK zyI26(_K^U(+e3FG+K#+b!>z?6J7j?hk{x4!3mhRCb&zDI9FmiI|WY-2D z8lc^7DC?F0pugL3lHL6P%DO|Ydp>|&-Jz#D+KNHFm_h)XdMpK{B(a{BJyE|W+V5Ee z_K>_S78H|=B>+9K$m@l?UI^n_gL0DbXd@o=<1dp;Ks+H2lmX~Yj0Dh^xDBA)-cArh zvX4PBse)u*7eL*e0vA|HGBpVxo?1zA80;Jo08+pzaDrr-0nla|^3t+N zj+7)vAwDVxEGBt-0m-or5DlPfEb_-9e{3-*BRQ@$$xK{N=5bI(asp&0Bml@wC;}*( zP(gB1GReuYB=1C9Szs!3+=cRKup#>(I7f220ibVs5||7M!4{G;4bU1SfzbeV&P3Ze z0bmX|LvmIos3duJ8Yl_b zJ+F#nUIX9)IiL`%1#Ykp90!+3-b26-v<5LC1!RIbU@<5LrQjeq0WOoA51IMUv!DUU z275^6JHb)_o%bezjo>oL`_TST48CIi^>4Dy~?3@(%0lmgtKisa@@aG2y4 zw6g_mZ@EhH*#uBb66+SZ6*{-Vj^|OTja+mZovJ|77-g3BadKpy`8%E=dfKpwb6 z(j5(o0Ln{JK^e*ItwAAxo|lrq7O;}D-tAuERy@t_I|XzA8qg72GI6?w7nl~AMgQa z`vBTLkP0Awpa84|djRAPRFOOw0Aj#skO$U+Qg9fY0aYa5_5;v;2=(7dAbB_xzy_?# zcAD5Cm zz7)WY;}zf%$xqPErv+dwK>4SK!5L6R@-si+1PNd?$Oo%{8=(GYsDDC&01yR|0d${$ zj+3zcBy2yK3GzS@*ar526W|KT&wW5Bhyke}3lxC0pcGU9$er>7Q6LrMfFe)|(9Wqd zpo(OrA8>*MFdD$tO4wOh0WOjJA^=2zWRMB+KoQsmjsWQR5<0$wjxV9(OX&DA2P_5~ z!5&ZnE|EMfK>$bwc>sD&ZzFjoh2&Qb5DgB3N`QO$bpwF@_!|B3HSXotWdLn{eVOE0 z1E3DhS>##NKU+oe+!jy{&H$v(!>;pA0K3kQ2B?d5wY=aDB0&;xfjM9)K>Z7-f8jW| zO!6YyxQI3`qK%6w0Cg{+?xj7T0^pi(hAh7c08s$f^-UHiAo*<}C8`4-dR6t_t5>gH0r=K??=a2#dzt2M8o&!gndXB& zU>DPTh_XLC3H%s%6Zn{E{+(J;56_$@F9~WGY|rrfPP>*aFEHGBfv@E$H1Gw$4r(}fIOfB7zXwLhk#?i3&3l@ zdra1Pfhs2JjxyPRG7KogfHDjy!-z7BD8m>9Rx;VV7T60M1|DUy6@Odtx0U`znby~s zY&*?lI|H5rUIpG^a;gTvcT({k2i`mJ+==HdJa^%_3(sABz$maExEnaZWH$ln-LC^5 zGTCDWLO>JH4{Qex0>_w~j&d>%0r)%PIp9^`VF}V=+DMWpWP@f{yr>G3*0@ebkS24a_jBl6h0&Zqo{&wW=U_csB1|WS0(s%3y z4g-$@F95Fr?=iVk59Ba;t{12R`j|WqX}f`*L%=cMIp9?$_ac2C()S^KUzEx7KV~xa z%jE@m0Ddo63G4!HW-`{p@OYof~NV^1Sm%av|%zl*Fk23q~n7nKh z*bm$doB)t_8S*askjcx5J+iN6OP1zrG9<^akZM45vqa}Z??E&`Bd z@BnZGI0>N4AqEsNc~u9KSHHvLH5$MRfDUW=fKgySfV!+X0h|VqZw>0Q)(nJzCZHcc z*=teuT9m!^Rp4VLuS)^)fGCsKuLO1hHv?Y;PBD1|X-9qxya^!vDAJE2{V39pBK;`7 zHHvR-z_&J50jSeP)M+E?wDE2xZ$kP_NWTf`HzEBdl)nk(Z$kN-Q2wS@fVY{vnE`1) z8PEl+1@;1mnY;yMZN=Z)kas)Ua}nBe(Z@{Q@g9?Ro@DYaeD9JXChtZ)_TcY5V@$sE zH6~xS9e9+s-U3kO4Nd^x zyrBaa2KE4l0HnL&Ip9^`9VXwX0lYvJ&knYA4z{|ipOuoqs6ajs}cHj_j0yqu4 z4t&Vuo6SH7Xaf2Hq`UbbaFofnlmVdCEo*_jz+nJ1x#a}_G`QtGCf}+DK$}}Zms>&0 zTXz9Shy4Tj)>nY{n0#9bPzEdlb^(WhlfaLGH<^40^|@UGpgp&vJ-7D(qriUPZUA+@ zozlDxpw4%o&Ub`>CIEH519iURAd~ML2KE4lfMdXOz^lMJO#ZwE@B&ppA215+2kr(= z0H=Z1fe)E{ml+5FO+Y`B??(E27?1{(0iek}YXQ*Y9<=2i(Bz&M0MO)~_n7i|bAaIn)4{Qbw04Vo?lT1E}JP)G02T|UGDDOd( z_s|~T5O555j>%udcfWWFcm;Ty$zNhX8j~N!zYl{R5AOm{-or@qFy4RJ2^0ay_vIIu zd@KdP-^Y;V7~Vfp2iy$2$>ihs`_YvEzV+xkOnyuQpze>M?vM2WqriUPZr}uP8h9P} zkjY;)10kRZ=m+)!M}ZfBw}3Gwf2|Ba8DBdB;Cm;Wz%XzM!28GX?Z=Vl3Dofk)agl- z_vFh=KG_63%H*fgfP(VZYT$4ven-hFQuZ~}On${oC1*NM>)Vz0N?oWO5jx{ z|Kuc-e|nn9KSTbPQvkgG*AUPF;2ZyX5I6>$2Hs-w&r$x*@!fxWfyu9I2VQ6LFFKg~ z%O)oOYLv;Z4m0`xpk4otw7(u>@@q$#{2MRu9Fu>GI{o%_CjV|T@HUfQNB-B}Ve;=$ zk2ikI9F-^}Fy zuL;1r|JDP$0F?a~{QDRD`wr^+F6#ByE++qv7kGuq?;-8`dB6z(b$EY_$$tw0qriS9 zfABVw|9+IoA01@!nIHtnMt!6XuG}Fp;z^hEF-Nm#zJx~N7jcyp&1E3t; zG2l4>>2&Wftsdp*_XBqWCz#gQ1oQ*jfib2v?FHUuTJtFIA=6q=Cu<(?W2UtsUy2uq z0xJQeO~Lz=Q%swR@?BY|eF0+{uY8;Zd5kjLYaN}#BvBA00bWiTQPAvQjENExN03<7 zYvd7TFlYzRijiKX*XstDPB*ISYi+UHoq4&z0&l=*^c6Z23;a+0og;I1Ey(v4RFni|_hWXgC%>{dyR0Ns9?G-@ zQWm*F6+Uly*yReBdwmrlSL`wAZ)4UrY0KEXnk!3Mb34~H)-G%;2#4HjF9}x{hVv_f z!6Ivl)i)mTR#3JIudh7ha)rt@w|+9%N$U~u?B5xb0<>R`SYf5nB8|W_h&~|TmB7UH zOrsg;m2i4=ROn;O?Q*8ttR@2z>$OH_p&*qA5v!n+gkT^yBKajNg5U^#>0eG-yjF|X z@+7v9gGHw8KOtqM( zf`+6DTB(ZFRW-FqH5GzZ$>nrcR#1<4qz5MI{hEKIcKz1w4&Bu1*Ht-lvr=;djx?J| zPL&gzGj_`DThdm$pbXk6aU0qco2L0(EdkxKuYGtyBIt``_Uf9L& z^=@p=%!+Q97kmHTZ~feXn{WT=wM|*A>)M5axi_A^di;%FhME=?m-beBV=Fb9*y_=X zE?)ae&FJj|m8%xd@wA^EK6-H!wHDa?v+v0c`B_#mon_4H z9T?~c3NMP=dQpEqthOWY0n3kM`#f&DO()~x_fj1ZxguM@eWrm>F4~Y<6RNCmdvr9q zO7PH%8J~qVwTQJXg62B6ee25D*{8o0JNxXq&EFNY4?Xzz<%9Zkw=E~PV$O>Cbzj;O z?Y!)Z!?gpw?S7+MSZ3dS(ViWrg_JLSS+JeHXmkHn=2UxnR=U0O`tM$`?|avEnltjV z3?>>!XjkkgZ&w$4xR(yvM^o|zS@LFTBtdIKWGksBbIK!8>KRay!k#4SWQ}eY!|gLV z?GCVQSu5;7%cUUnaU63-v~C zVc3eOT3G_`TX2fn8cx%~Trc;uV}hb>8@c_1U|9Ogkf z%Z_@{Rz6Dj{NzEBM_Hdg&mYnl(+UNrh#>-&UZHWP%6z2b?-o&hWa|sDzdbVk8!_^T zV0~e0?48!jAKM!Hvyi^^vCCVc#?_NK5Ogs1b?}BHX#kWu4 z+bPV?TBA)mK|~NL2&Hx4ewrZzpM1n3PT-VD1x)zA5afu#s3#-zz-2am7| zR7ICs-(Yp6UHskF$1aOTFXQzx#y%3#c~#YlKl9ALqe_=kWKUk^!;bs(c@nQ)-#a z^if}x9tM^l&5hGTMz?V)aC(f2L<$2lQ2n$thLjp{I*3{0e~kT&Q=$LYH)RE-(*~ttPWH#HVLg00c*C4+kMEl^ z@7iZ~ExNkt*$kiff5yMLxL4(8DW|u4%jXvC^I2SuTyJXEjnD1b|I$tK0zN_ObHP`g z&#zHFW+GA8w(&%RF(ZqTGy-Z_lANY&7o|79HiQGa0^ z2v72QIABi{1oS*_m_0=_x(oBs<-(KH1|-3M0^1n-itsLe_!wxCi9m%UcQLfNLe`6^ zlrXAY0h#8{#E7Q4CXHm_U3DZc5v-Bf2JlpcMPTl;?}J5I7b^Jp!*lJ6s6&_)M+>~Nh+vuc zzQiN}S2jSCN}8Hs7AkjFtGp{{uc{Tag+d@gV&5LL(}Kr?zdh(`p+&0HzWA;-)|(y8 zjb_K@N}6|nmYU(R>xHN6KC3m$E__X&>dHu^nJgWzYa9DnW202(k7kYy%Ev{0s%`A| zIUS*JXO85zrRv3aU7>d#XKogZ=0K~%*wjc^CyYSFj+5NY+;+ELHhR#_yu;m-RVxvy z?egfYIfc$~i}u~m+0z}VCh;RlLv?VaOQ+}5je(;`2D^2vF4*D2Ekh)S9^l^$vpu~O zKPqa1B$YJK;sp`v*TgTZU@%W8K^iz3mw@0ilhcK3S=sUFl9(huYmj0fYDGg4=ict| zhrG|m`B_0Y{1Nr(aUj-!SKS^RGuOKf$|49@m8mk7E*zZ20{k8vDy}PN#yrEqOVDc~l6TXoROa9wq#l} zm36YR)Ku2V;8qTGeaz*PczMr`?og;}NAFL5a_6hJw$DBEtIz!;_JR0s;m(ofhShU| z)SIF<0rAiPxzn-yDpUTHSR>ovs>_4@O_?WC&^gdKsOI88}6e<>myPuqMt;;@m~^{u^cUb6&07)-aU=<@Ijw6n{kv z9A%-y+03U8WCZ`)YMsi2);)FqwdD$JWh2OJWFgWo{agd#gay-~-sTIl2{lAuX{2D< zEhdAG83hC+CbI&OHW&Sic1&s_akB^nr?|ZD;_lF$_neT1Kj_Sky<*SL+YL?RTX+5H zrfA{f%lk5lQpJyQ+lOm+To%h2H`WOMmf;@%nS8u?$9==y*KJ+ovE}2uC@Vo^69#%W zvzBNhngpXBu4}YX|TI# zPc<5n(+2RpQqTh($Su{-5Q!f8AuJ<751o$p=1wS;SZk8V*u{CE{erS>pPDW0g0fBf zTE+!soAxy_6n*BlMd6TZ7oe03`GU`;b0Ie z?->Wr>;@v~vy7?gjrXjz&0r`hY`t>V`p9P*Xe%Drx5QRG&17`7CaZi--fW`}q{6Kz zaHa-7&@rrnXz?0f=W{zc)|DyTNVttxRH9z^ZR`ZkJgE8WMLX`0k z%CM`$mZb~na$L5e?p*sUp#_^A zyjcA6f-C!r18>}{kbk><6(&GQ?-#zBE8fC;50FbL{rQO?7pf3Z+Xt-1>zzEz^fF-Xdhz@H?>Mfz_I<0Xt1vu0?Qr zm*2xzl=RhH+Gv4W?{xIHzswCAP|$67y#owguqzb^LThq35?1WWZF;esE% z!z6f7r-f9>Oqbn~@{zWj*HC&rRFz)j7z@eA{ob*Ma(eR%dUB+7o?KM?p_au9qtd$c z5T_GX7;rR0y)#)()R*b7VCMi8CpCCtm6;dF%c04gFOWe&t3!_#3I@SXmE;x&Xa{m# z>_e~L7<)=@ial@6PXAPRGgc{>z3C>Q+h`R^Oc_o=h?RO%#lrN|7_=Iw;!pNK4VU5@*ihVf#{=30^ ztDyG;t(JgW(3y$?e-+EdUlGfs%K{lOUtwQvZeOABC%4jPdEiGk;Coip`WM~(NJyMjzvWojjL~Y_R^J0n-(^e zXJv#;!n1N_L7l&?uC`9x`f%fx&#xHY>&oc~R)-wHxtlv9^XImd_@t&yBi^7lGnK{~ zXcGI1^jA)k1#C%lVJ(ywqDyPKOOmiNrH2LsqoxK%Z+Jz6EC^qWb(U@j`iV*wnBBmm z^m=`UJWj36W}sYe7UKbYB^=P!@LSt)gVJh_n+sV!-4!4VeX#X$NE?tc625 zL95-arByF|<)6sB6Pcr}2_J>7s+skp5P!-yA=~1gM+s1@LLQIR>KXD3E?Lyq)7c(v zX>2Gf$;-{j%1pPqt?vBXloXo(6Ma@4rk$t&b_cV-5NO96@&*GOe08Q_UJCOl@eTTa z?#Unq#rwD2iGkl)zN{rA9!;z0t=zoZDp+s3sAG9u*cGz2=Z|dNQFYOGo3jSC?rrYb z+h06&CKL_4c-fx2bL+pld&L)aw900eUHG}2UDD+5jApftcD__TJg?w}EAF}Lwv3z% zPk&ikBxU{Pn!XB8Zudp=A`5z=6Th4M`|(aG-3*us!cC6H zqhy5BEDn)tj$P2pt+;+mgHc6`%xWAL(TlQv7p`3t^;kfgAf-&$jx?J$z)^%YgN#^W zfH*pxFkq0Nxj==;gjMhY^Qn7aIvwsXG~kXJj6LV-Rf8)R&F^dniHpOIpetaZojY}I zVH1KxxK@WhO2F`FRJuLTBWEP9!Wt*XDYgexx2;N@+}?C}UH^3}iq9-x8QoQJM(Z!G z_0}u}O0%ldXCry?fOdrKPIvXjyVrDVUfP}`NO#xGt>1LV^6}l`=T>iOs2IMISSs86zbFJOB{Pb7eIb=F7&elG5OV}0C*Y&9rm;Mf@6mL!zrWd0vVhml&Xw} zIU5(ZXTxq@lJ2veO^IaxG4^60&*irX%m3gju*N>IW@Xh)8FA<1j1yxc&6gnvV^3I| zLZizayS_Nhmgk9C9qGai9&4;XUYY7m9C7ja{+{-JjH7MB6}=~EJ#Aj#H%o%P391tI z40=!I;+buMVAT7~qF|)Qims(R(Wp-bAZ96d9X1c4jgeu^B4{l;Fq{Mn+^-Bw)EmSR z6Fe?qQzG{_>O)y((6_kDg8HTQ3(60zcSkQT%Q(P{#*Nd8Dn(VI=PnA07dQE#An1KF zmJ@{=*_76p1&ev2H8U0g4yZPYT+JrhN2W6OmQADU*Q{POykZ#_qeaDFQy8FdpMsiJ zt$1Ky^C)ieCI%MwKAR#QX6Ii%TAYFTC@P@aqrJc8Q16X*Y;k(OZgkj;&ay>KbGLPe zi;5b`E{v7AA`W{>#fEz~j@~g;Af(3rTAJ_9@uV6|R()@A$-TI`E+b=omN(iK_2$j1 z$u8<%TUB>)rN8_<98D42S%U&bSNOzhH!}WdlRCX-D+fTZiX_6+?YvFN9%S@#?h*X0vISnM}J( z#7=1j&6zAi5{%LgNMEkD%~%u!t)jwBEs1C{fA*5B@k&{TnAN(YSE=9tSOV%dYoSEO z{#gn&Yb+YGWf!&h0t;srOG4AB0~TLc*_i!mwaNPfH;zrIbz;HMm9vy-z^;e^YwIcX zp0Vt>n89*;vd)UlFXNi4_FOWuZq4e!mA&0_JA%cG;~9bp{iAQC#tKf+N`C96|cWv6%)R9nSId{S^&i?$+p_234a@hHiDQ)o1 zFxsej@RN$-k$EfU-f;TrOHLnNTvHdD~0b zl~G#+vY5Bsg9To^?P1(04*gr!iR&nuEwS4jc`)VX z@zW0zeh_>cuvQ4pK#pp1qN{XOif1`hT0xchW%Dm86>hrYNV&z?3cB0|y6pb)hUHh3 z{qc_<-y!~?GB3R7>Vd(%UD>UTQq!mR5N+BHeDCVr&)+(~rsTEze)?1Ne-t#xlaIj1 zp`8sz9kBmM*ms95v9+bKvZPombt%hU#PxzCk%W=NosP`t^v64~krjnUHMxQ-{sr+p zklOe%B1;sqU``|JV7$LQI2oafYG| z_93CVez+~ze%%ZEH-G)Q-nPph+x+}K*U0i8l-kVcy>t3fGHimuyWuMsimXLxE{($% zNn2)bDZ6-)JD=3)u$&| z9BJeil#-8(Gy@DXhGIieZpfQ~!y^_tnGrG=U4_DgF-l4_M#bqz7AI{`vSngjwe3o~ ztS#yqX=+;0R_@7$X<*~d-8I`z-MpaVns4r2ckHtEw19Yd*|KPO->!QW?(PkH176iO zaNED$wB=j3ENZ#@@tt)MK1b%juBx=ZLpU6@x&^J6D`>QEp4ZS6q0Qe)Ch0{zt#(AM zUexX|K>dTkRnQYX;ucmI0cmfX$2Hh2lW?X@s|(BuTV7IDvcp_p)~R15mEZ!iPW>v` zFE21_@>ef3SJDR+dFbT>qQlVM+*nyrTo}li7!;;i28A&D4%x&(s#!-$(}PPL!D*Xj zEe)ezy=vaM2G86ctI0cM18sFgJO8#H9Y`8aU<(jBKaihi*{m*FonoVHGYlm-R80C^ z!%uer&J|FdNU-2=42DrQ%eK36!)_8DmG(#pZr7|-EDW$maO;Gkr+4%hCl?Y+UNHYJHg-`c@uVU**_uwHqWy>HPYRlVjgR>6qvFXWz$W$bYeV z)+N9@k%oyg4GfPqP`Vl-l2J~@u!adh5sC44nxuCVStcHf$U@pIjo2`D81z{9lNd44 zT5Ui_m(@U$7>&XZJgfx)hiFu_^#T&_+Mwy5oR*Jqd)~Zte2}Qar-RN(=?psI)22x?a(w(4K8NwMgsl_5p^TAq2qK{^MHCJB zf{CqLDo8dHY#}yU{>=Oi_rJzHYN$)OwuOGBsi8P#r&vU+=mv~hoK2vCW3%ao>{hd0 zqtk8I(a^!2t9&#lzK3dF^w>!6d9%`j>!19p!jGxKQg(DHKymq4_gM+000$_$1XXuq2vJbN`8w(1DU(kJ&}N2@4_BE7}43 zFV<8B+NGRE&>1T|}kNF&|STVG*O_+Jg_A67?7>k{W?Zjqq!nTe&6B{@qztWnjF!BmM zGxeC67;W&Qik9hsn|0kf|U3~HD~%UyoDi>`5Qnk5`oYg6>{MSJo(ashta$) zoRW|)C3nR0aOJ=RE*Q^3Q?C?!5;KK901_+ZpEFyu7=4e!*g87&b^i1;kEnmDSXE_( zD~SD)U?A+C-alBx#b-*=9*RIK-UKa$Y_+g~DeujT3&uP<1UqZdm8>#koM6!)KrU9Yylzxqp; zwHu5FJcdB~hW7L^-ITfo=nT9E)uLlu@Ocs7^FlkZbaoh=2FJglSW6PEQ+V|R=JP5? zAyaHdgI2==0=#$0S>2tD+0PxMzyNsN5|vr;zdQS#w;%Eb9h;Z#o|nU`$W_&b>whW# zvN-gC&3Ta+Y9EQJRZOfttzF>zinHxMf*)-uyHAl|rrb%AW=5?k&_r_u5i4_I&#HAj zqDQa@ChBl%orsQ?;F<|kH>y<6j22F&G#KD8H&Y+QQx8OOC=SO=3Ujhip)44>!eO^* zhRz~`ML-*;heDs+2;6P>@t;cGc?Api^kx>h{GP@NrQ-%3vHGm*O-7S()SPAe+JC;S z(&Ex32UeEKx|j?^4BSvMQ4R^w)iS#XmbkbHzc1f3%68)6V+Nz1sy34i_< zJa^#DT-FnvSBEtz*rox)QLE(^oelg@tpKAZNqSN`)iqUI&gbRj&CQ$J*+I?Cz>g4L z( zPbHIV_9}r(yp)SdnezLSU(ZfA5Jsid8=O|(oTQcd{6F~fZ%saj>?yz*^UE-w8`z@g z{P=v<7hr8)EWqzBabA;{QP%fHgN{Tv4LZ(TH*0CF-@qE|uKWmTKo~ev)t}^9Zk>!r z65kM@pe3_TeqWM1o#GSR-O)KaOGt2?<9@-l8}k)4h}w+tR03LLvHECD3Jm5K#=<6M z#Y`+Lc?irr2^3St3`1V2llEEkLoNHOvKq7nQLB)mx$5-TYgR08wuwh#4^ohdJ0&5R zEoeDefZj<|7q~#A9p?#M*K9IKaaDn=dPT?)SBg2WQ1s(j@_d#L(55d&2v?D-DitL; z6n2x}O0q0ayi~ZpmE;!0pQsF26%eEp&uy0DI`I)MFjgiDjE`fx)Cr@mI~1k3Vnzuv zF+Q-a&_088MFTq$HQKQAjkN=Kio&6*;19q=8O#@f7t|F*0?#sTaGuH@0Odl57^*4Xym#x~lYy7^K_f=`~9mmMUzUsHgB5-4V>KT-J}u z>(~>TC*yoccXh(^Z)hIJdx_?v?qWPA9==MDlvRYOw^kJNu)dh-xTdvNkoC2kwVTWn zQn1kg2UXQ>Mt{Q8Lf%zM6orW&R%|S528=rBAsc(4I7%kdDBogM6i*1vSo0_s*Sd`MLkrU;vJ3!fP#OfoAX zo~m`ZBZ(3z;ueOvL@Lj9xpK?7MEb{)xCu6KQWY%P)8j34<)k$zf*cd-!i7}woST8~ zC5)LZ31j1%nkOd4%=U!m-=gP=%);@YU$VtQvBK&+i7e36jFo;=FzC5M1MxLaoM%qF z(x|+1wv2He3irP0Jk$a&=?NZcvzm>x-Xafl?xMHZKr1i$Z0*eK^!(Y$tMH%rEXI}> z^jXZ}rlRhSIb0eO)1Zy`^D+(YBB-+3*(LOZl%C2+rg7l(8Kri2?D`Al%d?1al~qs3 z%^$I9_9uluTWwsR>-4I8>^+%^zQ9vjE>Ap-T4~6{AA+f*mp=0}TJnXxl411mYt zC&5Ta^O(oxVPVuhr;Yc}1#2D&Ok{emT{!Phdr~iDgu|88lNZP{X6RalTX1`^&Hy`G zGy6`|S_Xe#I87LH-~vE9;$*+dgF>Q}B{&4=^>K42j8kmDpltY=O*)D1Y+?+M;i+gM zJvU)eCdC9YV;(5X_$HiuN0PJ6lvq`mn^|*HV?%wA0{ZxaGw}evopw$yU98Zj*)NrS zv~&92&SKA`O|-GcXLGGhwrfJSGu#P!_X{P_RGVND+656#rdms-04s~CPgi3(Z_sP8 zVPY~RD#nU+(#>YBdwnj|2!s z6xrB|T^;oRWB>w&hir(?x9N!nq7;af+z%XWcK^)sr4s8R+Ng#xtI`!z%#KxCAKtO- z-rg^NRJ|d%>#`62qKd`BC12RxX%ar^lFg#_s@;XE{{iPI+Fzm#b%I9m7BH!MP+F`Q z5gQ4=;AbSzFQ^!_;Tl9t651Fh7jVRj;p;_pH-*-VTJ7k>sk;)sE25@Eo6n!C5FemD znCUZVmJeb3MV5KEhr}#=^v|4wMleZ-I>uL}l@*-6v>iF)x-{L3d%0|(a zltaE%6Pf6o9s-QbmKh|T%!~5`@o$|k8@J0*UW^xfRuv?T3}U3NhPnxs&R~$A7@EN; zmwIFtFCCmaNALMvn#E;#o@~YOy{G23-Ww0c)^MvgDVa&`J5N{3UiSeZRqCGbYF9mD zu_rmRUyqRPbjNU^E&hW(cJ@8JjJ{hWT%z=yEuhRMqoG~ER3V!fbzJU{;gphZ~EcO|O%I0H*I8@;-NX2Ovg^B_cxWHyhQsoy9p0>U^cIT^x28BE4=l>n6? zxd5tU8w!vGI^C@n5Le7F`Bc07Nbi)YOeqLQgg$#2(9Nw@=-sH(FwSIbH&eWlXbuRx zh^a0G^Ez>;wjP_;*s|glrVEfk33iA0z(_c45x41LcF!t*su9IF!PM{#3>MEdURqA7rc8y-`~pJZ6_vh#J-d zPhnC5si%u5I<*F2MX?=-_)M}mLhC^8Hyn40lq5dichL#wQoPk+VJYmImJeKXdX9mp zFBB43XjN#{&_FxR%9oYoWVxLPkz^BWJiN6MA_-!Nf-J*-R1>ixq%ipyw}=iGHi)rT zrJT^G6cZ7NC=h|-0I&YTqanOs(oyUg!hfFPPN5^zvUJr*X?|s9>`$E}1vt&%KS=HTfV6?focYSr&I-hH9 zy{Eja&|Yw8b>EdMN-{HOAFMO>fb@5qYd5nN_DJtZid5og#7P%3IkZPGYtrDJK&SZV zscy+`FZoJmt$4w%2D^Eal>OW&W|_Updm+Bz|+O zXZ1t7+nk}&%+>bPjI4~voPml3{_-5#yo1m0z397#7TI%(y!FMLf9`{U^<&tvU91pG z8;CkP{Qt2xrn-9ZIHfy!$y`ZcE$ARA4>+c}3t{F?93;gN?c|;1Gc%mz{5kfY&fZ1e z)aAfue+}xOV^5x4OLaN>-*|oob@9=j%Vb@^&k$4{fdST`1Nf?#*J|TLttj9R)r<#o zn4xBhdp%SMrH0qiY1I{UTJ`YZGeUao&(fvprZ!^a@)M`^noI6`>81N<+@WT|QTb}T zzo9TgBYql#idUFZN6+f;jQ(w)@4`1*_zAx2VC59&x|E#Id+7XMT%9FjHILCt(VgRQ zEd*AWAK=md)7*-KKEH|?ZN(v8zhiqmZ08HFNvx-53T^gG`E z2%FD7h+5|h22BH0vI@j!k9()*n-HslNJ8UtLobEiN6`iY=cw@0RyTNeai4V3tIwGM zF4{>M$ozlK49Qj-m)4F+Tw;vw!EdAWZdV}$x(>$=VrJ}Na;~mSzL*si^ zZ!$Oov#4=Me4RR7J~;285u1+Xda0!1)X*TIe^Z!fKp-#zKLNG>m<0xbygW zNi8MY-t_6E*n)Bl+!mB&p~=?B2PUs^BcE))OS0%`!ZXY~jHa{CpuRL-9V|B*RBKBo zqNdbQsUHP`5~kO0U);(lrE@DI2KLmi6VGGdznWss^U9+o7AWo@4A>wAOH_|u(R5LR zHsg(t`M9A+37U1T1-@|cIoIs+&u3qWBT~jh-9QH)L(JnTb)!?7|4-_r5o1@(VmcxN z8`TS^SH!)bnT=&dGi_$QP6G=IjVSKq!ozfVTogteDv^ztu@VOw0sZ#|4xf26>((oC$*WNAALLh9u4WIugR^Ap1^zwskv5aZ3|SMk!GOeY zy$FsqSP+H0TUlMW$xDdA`H?$3>UFZDS|Kt}fZ{`>7%OmmH2zYtJ`}McI2*chbNz~S zn@-y!CNu?`!T*C_t0EQ$>L!KlzI)4TDVdG!^GnuUm7UhLd|mmngM+1KmM_h1EBAi9 zbWzQ!JdIe~mxYUQwydb^E^$|l9$rQ96xNSql=qa;Uz=7}my9F$nA*?M$7o+V>v+Zi z@lQ4uzSxDdW7xi?vj(aLfG7!=vX}_;2AL;b41CiM5v)WbO|ChQGJ$(5gmu}S^H)|S z1dBi`q=VVjVOMgv2UK0H7j$u|R{{I7V)QYF;B!JX5kPffIbe`uofzYBM<5q?=ofmib+8yPoguv!C?H$-)9sLbfiih zhjKX$EjZj_^pfw~(A9OrcP`oe+zs8`H$1odz?D}XxbCW}G^sr|pT2?u)A!tZdfyeN zZ|)iUmlMa2Kk?)vk30^UUVio)nzfn@uy3beFAg!OOR&F|f}rI>$cynrQk{hK3=yZ% zPnetMib*}0f*(>eWSi!Y9FzNk=`SPFS~Flyo1#)SuN zO|h-3TXOwvesQF=lUmw!O-;}mj1)Kq@1HZ5ntXU?t=W~Ha97x3)6R~Ht z6BNL{p^+KkKY{@M7QrY>#t~ARlmkWxzGVWNNsPWl1N*}B@Ss~Y(?5YZ9sdFbP5jS< zk14UX5VO&27MQEk)zQ>YQ&m)u8_M#gd(2L=Gc^U51DOPql}EBVa|d~JW{+^e44 zvj4e;+Edr8xMxQTMbdgw8Fj}`2v1Lh(V933xqkDyE%EWWan0bi$*@__yZ6PO(iC8w zNoS_7gJ~9z1V6-bJVaC`NF(AXj41LE#}@>^F!h2^TjLk$9Q8|A@5VXm>eAS-yqNP_we66rDJ;x3Ms2hboM?Z-JHC0~_OwTX{w486Na&vT0957jz!{ zK5trUO{`akL*isRc#7K&s85e8rT`nvE6QPbCqEDl7dbppj)*HyR7*U0OW@8ix~c$u zg&hdBv7(4Dg0TDXkf}4JL4PV~lr!|`aw-UdXR?@h5_Gw8h(0$j=$!2kybO z>~E#ojA_Nud|WysW(M(Lw3A|MmV);-v&Lv0#rw`eJ7DXW2>O;3?;ABujQ1UkltO&O z@0H=xG10P?XxB*$_AS0+blX$&YdTB2mln<&T!ji(Z@zD|dc&%Ps#T|^yRN7;-%&Vk zXwA^P!isfwuG#uTgVc~>ai%+4D*VNP%$)qzl`TD24OLS=-Ti z$+F71^=cat^Nrfr&%UahRJ8ZQ!dP8Vo`FkK!k{=T;?XJ3aM~N)NQdQ$KnrZ7QFu|T zKIk?y9DPSzl?fvy5A;pj2HZ%7t5If5J`p%QZrTJP)l36X`;tYi%?))$1$mL6KN!#_ zhQOXMR?Z#)Tlfr=E?j!$q8X!e3>>XgOllWM{5hAbY%op_5_iBjr&KYq&E6k~$GHqK zqxK8WDBIEIjm?NVHi#h67$An@8lI(3FtVAV`LpbHYfXW>iM`WEpf4e%^V?fCxiKDyj*;^Ao&n z*5b&BGCy7%lh7RF4rVk6#%UG1;6f2<3P+P+ZbK+Gqh2XbpHLn~s~V}n45R$HYY0os zKs4i$T_fvOBhu88Mat>P#(F;6t)F?e!>HE6O}WZhu!+c06MG%7yEWs2r=+k|h==jd za0zc!Mo!7vFKpiM`PIcr9Gl4*ZRwuqt~>ywR-cqYjO~Vqptn>daXrAyf$`}kNdmCE0l5XzN#O)Y8O{mNEU5* zhA3Hx8BLtIPwy8Dx~l}iFeL#$Pd)QH4Mmeu{OoAVbGC&rX$s%cGn-Ct8?hp`6!ur> zL?#`V*J>?82uq}11rTRrO8wds%D};T6XuNxv9l4TX{NH^h%$3gG<_CaU{ToC-OgvS zU1>y_AFkc9)E!x}|2?ui0J#4Np zSGhxmZ*}0#n=IuTU6?T@6$iSG1-DSsP1K4aN2awFQM~ceu z?BSjlnofSI9tR@b9k2V{JtO7Rn+kctU%E=7&0m?@-jr;x;reSSW`51oIMY`Sbeu8yVq{FKqzXZ8Yz z@DSpb4t^IiSqC#V1vFM%khk?3$u_SYphGqrd1z>9nEN>?5yNS^<4lyA2^JM>+Rv65 z13n=yoSH5y8-=9@W1!3!rT8rLIyz3KI5pMghV2m^ZIGOra2L!>1m>!l+6{^xhnW@k zO+%kZ7suMBQhc&Yo}cF0M3IT6c{NRT&rIQpL>9zZ%UAin=Mur8^p3S&&=`vmyKRwR z=F7Ll2b1wCaM}p2Dh9R-HUq5$#6Wvci#(CW^CI*Z~lNCXS`32V3184GRYjaIic`047MRzyH z_p-^XC`{P}P29^qZ?7irb!&7J`|e=J*e*Pgqug{qKNgzmU$oijJytDedaebL}HXPnHEkSRMt$%P#DP<%`gNqT?>MHLDWgZ?*;Lbm(~n?DRJ6p zZa5PQ%{oWKU!992iv0qz2)wBYUOu-(O(ct&A|jh$%t35~LfYUwI^MwLm*f%dgT)C| zHf+E(6^ckIP*P#_hf8w6my?p4z`!RH^D$RnTUAk7QkWkKWczT_pU3S~g;a~sLSt^a zkeXoDGZ177k&@-t*Z3fs(SvPW65XZL+qS z%!#rHE-`Bn6aglofN1k)$O{HO%EQ6vhN-s@{R(3-tA7a==iNAMG6#N$Ri(uRdE}%D zN$LuaFCzDTh#z8@d8kh58S;U#CkfwV=8r(XiLrE|Q+YxxxyO{i(W-z}`}qYD3Z1QT znd*MX1MMVs8mTW+e?vs5Ttew}MNq(w4cVX@?K&4mt^ zWT~RPb&8A4ld22V!dM-gqH{cUgVWMWk%r;4I(0}*h#BDo*LTI|9iLg+xK;n@^9`#h zB1n-zxY4nRMcFe^Q@J3R!YMe$9v4DE+#_HzUSc5657PjhP~F(8gFiG$7d@$eaD-Du zQGt>a0aO%Wl$3|U1}5Z)mYgdw_{%82BSSMxx{M;0+|gEab6st9Nf9^z=K?tN1HJD5 zZrbZ~XV67c9gEL9$;IcVOSSXSUXgXXur~QCDCc2|qeeHRHWmH<<%l-) zu?Xbkje6owxv*A!5%@CLf-*hK10M|RdZ&>O;$+xm)g!E?)-L@Ok(TYPM>h3ieR^gE zc|nrPT`{iJs^1)U+^Vk-|BGbFF6g35QNJ>FgIcF7L4yrx+`G)Lk@7>w=!VB_!c$S| z;ZLzrAc^5sL^Ko%#r*{e29Dv7JX?R#n`Yq1X zwn}@VC!=PmI`71(4L*}JrDDHT{T8RwV5%RZ0Xuje&|~V|fLNCE?!o_0yBkowoez?w zQsaqjc{8@yuVKFOe^3&bhX@$5KFc6UtYZ+GqO1N(xJH>9#(j9Z*{t z`}Pk5mQx0sthE`wW6u9x>^ncm%+=myvTIH0)~{-V=@(^$wU1alCQI7AYCVg@#aWG6 zS$CEoH~=md+UHgSjiZTOQ^)2=3tPO=PQyFJtH z|AV(0LZ7d}1mt3Uo3<|)OpAnZ3Eq@j|0X=Bldk;}6R-UfUTo|uP7Mch8-1}S>TX<6 zKiKMDnwD-drxle{`wKeCGXwp%Z!awl6a}(ej&!}IU9`BoDLLtxK4D{JX{c>wRqTM( z9d>3rVW(})_jlIiis?1Q)>Ny@49bYCTWS_xlTUHqCRoI<rSOX)S*y_+iiAsVai(k2f0{0*J8%8VLz=4VG3|Wr>;B@j_4Zm_ z;wlGL-&EiY|IlQhnh-6u4KHnTNQR}jJZai{yz%$!i?Xlv8P?t+jv&0!Hg zAwHImJ{XsuK#dX4E)Tnl6e>Q^Z-7?Z6PLxI1Js*F=4twHcTEUx1E{d-oy}d))C*^z zX~Mh&k8RbbLwH$lwVE9spSz~Csw~6ja)7E88TIw`nPmg*d4cxPw&>c3>@%1^&7L`( zJ(d)UEt(Z}>cVq3w$+bx7v$q=Qjryb#zmaQ5tznXrri4grVJNW*x%s%Ac#B2E(9WL zG;_JTWSiJW#z}skLw>4GpRSx^InR9#!Zk!`KPc_Wa%P0>k8jU5>2v1S<#$&2{EbU1 zBGqm=6@>QJ7vzG_4u`mOTV<{^avo1jv6xT@0_^K20_^Kt%AlEgqZMrxXoJFydPh!Lq*!lgC`k`zW!l_^ z%8bV5#>~3)J%!Y@eIro^%&G`9C^0jv77|WzNaQz65gXtGgMkho7<3Bx2B9M)DM|wf{g4^; z(Q7bsT4qmwKk!W))O7h}>LVrG9-UB*?*U8{6jospTHotd5!J8d(| zQfjI()vC`HgLABQS)bz0Yb{QbbS4{)E@#$Ng*t2ep4^IzK#|oP_N7wfA5Ydl;@Z@uO4Sm`dDbuah6x!dPIejg}r$ zUhtcd@B*HAj7=Wq0`I{6HTGKd@SZZKvc$igcs|94uvnqYl$6X6!ejYTTuG7=t2nHkzR4kRq8=0H%kXL5&G>&hlP9U&_~8ld9phR>rel0c3n6EMtRz~f z#Wo)E@%>g>kE&(SNLi#bZ_7Fwy&a((`o|x%Sz@<{_H3L% z>85!jKY`mre{}Z0rF)p+DJGnf?m1am$j8$E&)RzcwpE{d!#YRHwq)5FmTWC+56iY} z%d)&J@9o4{w&OTX;@D*G#Yh4nAwVdEP1u1XguR;3G71z*7lpRBtoGivU*EPbrS!5c zH!Z}+-|zV!$#EQq(eEQ9mUYH|KjZf-#vi-TZ}Ry^RL-P4+`{$^3r%R{&J~Rrfng@` z$-+ESJ^Hz->e049pl!6edbB+dXdkUEE-WlADJ+yf=51YG7awi)`C3Qgb<115!bnql zdt+mJdlT(#NgMwO-wyed+hk7)83o>B0d<`GR>3Tp4?NpVDP$#4X8nYptn5|ST@B9E@gG|Hw5ep!a) zu6%FHC=>jQ+E@4!nhcCBgt3J%HVyot_jf))!^v=Ad!u#`6m;~O;jQ>aKII#5ExIum z=K#T67&ozQ=0BVqIL|i_b9X22API~ec*f$-x(nneBO}9`;elhY&owEHB{>5X*NUFw z7tHO_diB8~H54wZ5A@R3DvG_3!-}eN~ma^9eo5SZ38ZcZ-&ga*QUL^c_Tlua6w?E&bWn>9mAZL)T_80*_Hk!CQ5$pgS zq(|YdnyA}WF+XOBMG7(kN`p4TnC-}RX1mL3%G~DY?6S%cn>?ULItYi>pf$M4LV?C& zOPbE4X@qwf#AUTkpK0*c6uWD~)*xjF$Cz?4rh65YIN>GnFv*NoBcMSj9A|lAV9St) z1)gY?bioed*Pqcdl7@{s4gg9P#6mF)opt_RM^9eQ+<-sVY6z2?1$)HH|0t9mrR+#uII+Mg8Q_hP) z^1(H>bfvwyG}KU-VCwQ?;~&{9Hg|4Wdx)DYJdx|xW^kLRZ4UG>g0`n)ZtTE_Edq1X zYGvSjoYYN`bGcMutd=9L65%61zw2iQb!J&SC0(J+NNJGfXsIzCxjSBW#T|~g`{$ZW zv||827(hD(5@+1*Gp1lrTnCHii!WoC2K_Nq=d{*nEComZ##>i-IvK$3}hnS=g{*qT2547L{UOe{uF7tEB= zGBAdlOup@Bou}!+)==_uj_Hib1&Wjgg-Ltpu?LRnw2FRNio9H9x%&a>&3g51di^G~ zp3_aFs%}x4)T5?TY>!R|pp9i{{~TP6Elk4{Tn!783gs7ZR_82EnedS+$Fyhcm$&PU z@^(dT#0&iQ%OHvd_3Z|mB=qcp`<>2*mrwulfLG|0GZBB#mva*>^ z&D02=D7Bn}-o>S(Pam*8A%31F0e#}Q)f^qSR7r}P#m_U~G)7zggHw99^`>hx0s;9+ z;Y<XJ!j-#AE1_w2Ae}6gS`%5;|g%mH4ZYq_Ve&3#CUSqqIqQ-r%u5{i`%Xw#}ey z7XGA5;W9K@MC-A4#bgKhzhNCRC6;(LoWX!j5PzR4t7u498)Oc;ZOdkNLN`_X;Auf zl|{wr&+4y^`pf2!p}-?-5=9C^9-}i*kiY%q{l7e%VM$pfS1E94SEg7s@?*jWoH0$g zUY@R0rpwnWRIH6qqTh(5jT`CpXD0Y7TloBw_dj_$BTqXZhvii%@7IPhln&t^oIb_4 zRj$UNkZ&;|Cm^SjZR2y{%a$(gO)yp3o1+}|raDcM&ZQ^zCPg=ja3lA>)^ySU(*utF zTKO+?)Ty~uLv6N9ZXr#<9N7{6SMtN4A&}n@HVZgN!V|QzO=h;$t~+F@YI%t4L0YY-15$RPhDA|e3mm*K3MNYCK7iZ zK6vnf%~u3DDZc=V$(5AFBWPc0gp9~{z^w)2>Vx=1xEd=;Nph`(o5e}2W^D$>n#<)< zoz2sA68taQKZicdq&h(Ma%vPS0%=*SXszgx%t2yj38a-h%^@ICf z777m}O9!A3L6+ijOOeN5@Dy2+WeKMJ&em*H_5=PoRC<&WT|;*`c$(k`EEy7xY6IX9 z>0!bcL-6FfHpl3y;y~wH4 zIg9L-D|!(6hEBIA()iyhEtumZvcCx}N%%g{F=lDt0fR{>gEQLGbNXrRiARAu*m=={ z@CzEGiJevZLU_SNiZo~A1ugbMhqk^N%9Dr#NS>4}hhx^4Om`a=>-A8A43_Kxd!1vA z(pKlWSwPkZl+vLylXef>J4#~pc^?`WIO*|;dsK7{KBMu)$a5=!Fg@w1nVnxSr`GGO zol}rMyT)@xI6qKS6vz+D3kti+?Dn#*!h(*d%@*w_@I@lNyy9Xs%}ZXAf5b0Qu44U% zHSK&||0Z2{$yL!2%ugaG&x7-3{tt0pspNI}+tN8Hvsj-)-@MNuNAR2VSiQA5CAUuZTL z*89ETus2Xx$Q}N*F69-G%kz?3WY((2l9rWbKp|Ta zLKKw5XL9zOiBHl9Z}@Sh&pNtG6AW;|X`S1)<;hfSmenvRn=lb2U9VBHJ+==r$^+p2 zshF+&c#yS*X8XiulXQ=@txuyOx|3})jz3*M0>MrQOXEMTF-bAY;bI?FR+eSh2JuH#PGysqfPtPtRFP==b zQ$ZPaD)7#KDb&1Q8N)k?Rx;vE1QV(-k?xsa>_@tqTw7T%J3Clr%SB!##l7|@{T8+7 z#^`5E?C)QMJNY#dH{u0Q(Ud}X(o9ekRiMI5KTrGuZVLUJ3WMq3@ySWYm@ZB_;|Aue zLl0_kMY`#%3+OFbLgs95I{9t>YCZfjhk zBq0>YOilMCzlGERKiH`Pmb`>P@d*Lzk5&MrR--21=qp(W`N|RLh*&c@gmZA5M|K^b zFMkLWAhD;&-ajJg64@l@hBf$KZ>_yUb{$6oIwv^{sHhk`Pfqe9zTpQj`60r@@}baZ zGo?yM)a1PGlogNf5tEgP!JN?0|S>0Xjb7U_P zJ?lhFs|<7jcq{Z}@J(t$F5#8}SYcp$WYRoS%6A3eil@y~C}9GHVBj_I3YpvG@xkh; zEAs&Dm&sWWPSV1NFdQpy9REQ2{>qnxPmdlEK7D!Bs+T#*davwe_DKn?3U!ddnLxYbOR4n%z-C;ilM0Km zwaw?d;Nl}urKO_Es|+=Y@dBwfMF~m@m6iUIEG4`7%V%WmUq16sCQ}{z{qMgl|NZaz z)qkZo(w>noM|(;d4_29ZmxLJVPQ$^jK?aRb5J_3-k9@iC>G*)~sqB^H&Y^c8d{VX# z@9>ixPFSo1vyp|vFC|%Al6WOvp6oOy@p&!g93v7h`sGT<;m~1$x#;bz@;gnLlIXCg zcBf*q)nMuQoLGOTsN3<5(UKvTWmt{E|2pzbq4r$=dA(2xZW5s|(k*eq}F3Q$w&Dv~jc4nFqZo{=K7T3?R;E_Jg#voH> zxub=+QVX}2i1ar@x2&qHTy@LP#L%tu;ntyvL#G~FoHu*xO;3+a+kR6g7a3o7g0CpaU|IqtM1tq!s0j z|D*ZB!P3?X4=-GJct>mL;DycO|Hv!)Yj|1Fz)h>F*1p6^Z@Gn&zPPSx)lCCMOT+(l zl{d^4sps!GKD_?unzFJrN7oM@-!oq={4(slDpl#&bo+BF4}SL4^5su`c5vl$hc-Ku zaONYrNja1rNA3%Qq)u{oA~#40HVq#~xgjjt_T}&(JVPd9 z2@Z_F#VgU9aelhE@G)t3L-sCS@*c^0M_vDAVssbt8Q(1vZkFT|+IMda;U?8vW zmUVS47aw1?^wvm5M)=lJK80%1@o!inK2u=9l}q|A>U23;*7pd%S(a(f))<1dp>Tar z*K+yu+jhQw{jBzihJx|`E*cJbN?jy5@sbOLqp}kD3FM8dkgSVqLYNrrBrXOXkxV1w z!fix+$xxWsMtGEk?U#}RXc48&J?Ew<&DU8s4aC(*SzQ|RIgvL7+ikK!aUmb#qN0Zo z3=5bwe*&h!epHHd3ht6xH@CsNu%U5z+)>cJxVY9)IwxjZHb2@`WI9#0{-G^v?_3@p z8);tK;g4@WHg?aFQ=GOmoZmTC(Xlvcc-c_U9$hsO=sU1H<&qy?(@{6Jr*YLiK7GsZ z_Qw8uFKk;PAY_~P69oa|qF%c#x%< zA%*WNuCGU=+cSZ}ph--KP@YrQS}{7iERB1weyqhi`|9UbUvgqw#r)g;W7pDsz3yfF*!Bljgp1~F zX=)xVms`J^Q{C9gSMd7EivBgF{a4Z)aEM)a zQr0U|L1KkeZ%L5@UZ;e8;;tN>xPY7vnej-> zm-XiKt>4phDl<@0)iNjSOS2StM{Zr$mgR4V1~e%Fc-C(G_@lp!2_4*b2TmNneogH{ zy)#EM_N?%)dt2|m?{G)H1DmjJ;xn0D{sd(7CP_`avI&->Xc`uW2;A9g5`u*_u_$3e z#_DSe^KBNBkx&5zn4mW?@i>ii^q8=EPMR3zu)+8Wt$~RziVZe+f=vsH!~Kl`TlFCK zfZS%+w)8CyG{nmKH*DL`U)H$$dt0`C@6x8D59M`~ISK|34EvTW9|=C{?^xB?w!XjF zuCH3KxvO^VoFZAH!;opn^xN#EWi=f`J8m0Z@%W{!ZM&aXarmzdIc4>;N-Bn%{R&kE zqkX_WCO(s{N3NJENmsm`yhhWZOJm^3%OK?unXi;9wUnyAy0m<}UsQp^ud%vTMk73uom(y_6EdADtC z9_|iSdbH7%cU-XTp{jCCwl>of?T8Kxu2_2X==zbIaC3fjcP!6j&p1>R_hnLb%z4{f z`qHYp+=>gj3tK9Njp@c5V?$}I>2OP}BN{N;+%{MWX%E&5&q+JLYs)3@M=oT#hB=3a z`3x6HG!IF-%3~#Ao+KJ0L8x+CNE00%g?OAmYsDeOVAuib1i409BUR=U2YiDI=QsH6 zHA8g^H`Qks=D(Dx&rH+gb=CCkTUgkB`O~Y$wr#QcvsL_4@_4!}5c7KnMmJu(x4Cj| zZK1(d*D@==`O20KjmIC<>0BO<-qN=0vIXmY@#7zj=`u`K&35X)4rizY>*XS!g%t8x zu)rUm?+|?!z_27(8ksDg{Kty;E-GW~^N`>zA|BIIN-}SSQeTMErQ5^q-ko+=Pv4R< zF+XEp{f6RyR>q2@-zSpa*6At_7%5BRX^-?j#TRCE@1H&tK8re#P_rwYyGij>R^g*mZpS z!|O^**FC(Qzijcd!iOhL3V(lYc=$Ok>*NW}@a$sH0E#(Gl|PMsG*Yf*=wAqcMQV3S zf`<_2)ezVT3?#=LB=f}PPf});O4X=p3>f`xzu)W8Q9L(iAejcc8+!+PgoGNg|JW-u z*B}6N@@=?Jq|}KGMY0gDz5khXe|c+ubshgtU*0U9uix|IeJk!-S?Vllo6{Lt*x*~T zlpHmr*Z%&t*#!$O?tbQzBH2ytO|r_xjh?C>EzK>mRM;ODKKRk9+RaBsACE?tIU=^k zb-j;o-CMQqt=lWh`Out;daK7e^WOO__S5Ex&-rTjr)wovh$>*mAbI4k0I`JUA%u9{ zOkLDdK4Bc$BnGniR9W4Sv#iVZfN~+ML{y4>D{|$GbPnGQoJG;}JWx+gL&EnQ+t12H_W_Ie7 zx^Qot8!_h_vO*?-*IA`^jOY4Ise^iW*Jg$~Do;S zmY=wZCNOaiNwfGhAo0VI%IEWvG<#+e8L9*Q(Z)gRPG+x0tP)FOEqgXASmDX*sV_+{ zySl%6u_sM=acRY={spr)x=zK*ABIS3(qtERMdl4UazlgukE12B5615s+R#6nzkIx) zDUP{<6N3z{ToM!65;7RwXU0D!ev2xLNdkM3ObH91f^t5%nQp>@XGB>;VH?_UZO@@Z z^p3`qn%^7^WXgjOGWH1nEqwmPN--WLe|}!aqbE~M90O$>{mw1uHV|EQ^-)F zU_ZvqwdF{QE~)40MU%_dk542~QznJ?)(uu#9nFcsfhUWD^U&aorTz823mPweZ1w9} zi%T~eUtF7e`HoTkmaiRI{<5Jt7VlN77T>TeGDcHkkG6$Y48MdO&PkdkPRX8;3X+)Q z_=#eI9}=Vwh+KlevO;{!AGr{oC5+JGxKTCc^WOuYC_y97e-G0tU0`0&Rhf4`sQJ1X z8Y6WH~Cs4#k`5Y`0NnlwR$~uiO8_y|ePtml^C?s;3?) zShn?={zruIXD@2A%GEmc(Z-uUdSrzr*Q^BxS_`^XB+~=M^h?6=d<=&3;ygeqCG{FR zgsBOPiGWziaBr7B5Dd8FXDfe92%s^4# z`HFaW(&Z@;IOqz1IMUuqrCk~gC(-ydKD#wb4-XPp>6HvIQ)Fc_gB-XBBZZ=@Ao3M9 z)BJ(Q?i|1DVoh$5leef0Hr=~*ZLNEs+q~(yD>`~_d+#b~^FxmaFC9A`T`|y*`P^1j zPF8yC!Oa_{qAQk z-27;>G^oim*-QmJE2{_AcSduKk($;#A{rSUWO>yS(a?t~dsbgFIP&xrvpOh65Bjd1 zI3+!bvt%Lb6Mkp%2_u&TJSC+Rcb3;JE&JtC$K)1^xPU+G7pz!Cix8%A41ar^?hRc(uW-mhpAlw`{Mw z@vW=sW1|NbQt^avdx^z0|JpT?k&)#QW3C}>A8`*(Zazx>@h7L<)#J+D5MPt~UNEG+EbJ^KOa%TIM|o15P{FnHNqfA{`p zR$cn~!C9Q}5*O!t4*YQI;Jy1UaE)jjR+FsY*oK~63rom}NQ%Arr2J>#2c$cMCCfx1 z&<&`Ts$>(qNXi3cm?!OlGF~EIj6$)3prNn2YklG_IM0R)0rmpwC9oI5xpzjemnD=< zsCC+i^upfD2EyTi%X;7My_7y&+WY?A-`?5Rcjs^S(uV~L=)(gXUBC@R99JZM3Ukuc zT<29k+;QP6S9h|(bDdYea^a32UImA|o3NiJ1mPa(2go`clYA$hS{%qy%MeQs{y@U5 z1$J!U4OBCpWMqnWE5maP5drC^T9mnT3yM&IxSzQN%U_fLPB1HH?ns;uMuk8!&)fy- zj}Qm+p)BO}g}elsK~+i0v&jftPI{Iw3pd>u{vsF`_;^J6K`P=KiWYRnE!WF5DGw{1 zwx_tB!y2o*(COnd1OC{e&MMROvhv7bWgj@9% z{ukU9d%%>&kQoDf4utPIDoxxHy=A;n*pThbQ4<|ljeYV4_DNWRNKl6@JqQzgP|k2b6T5)$B>5q=Aw6Z`?Z4V~>W1H3)$nkJHA{W; z=2M+J<{=hUD^(eClE?F=pYN$p6Q1K5RkJUDdL5skvpO<_o&&dM$^P-BHl<+xp5dMi z{XO~OVMS~NbjrVjezcOkADK5G>qunq-<3%>04nDBLZ}&pnlq`J(UVq5i!ZCt6hQVj zV7*2tzKKOi!YR5K4FV~t7_tkN491)_>GqPOHu6;!ZI!DJEv_8yt}>dcx`!$j-?qB4 zwerbyJDiSE{eHWrqS={O>C*zt^i}3Ln=3qazb{oS&&tJEHw)vtx4m|-*IZEN@zfQV zdk?<0Z8s;~tTG4ene*1~tX#Ff#};T?UiH~$Rmh@QaGiA4(OpH zE2UgZ#cl3v^+wqaZhgoj{1J4dLbh94DgOv}nxUqx6Vu$lISGWLPsSsKF_xu5zICQ=$n8sJLu5Kc5@p-Ug3`iO@6ypYxkS7 zaT^}Xp7uLxX-OKS*KwE1KawgXA3^-MNQ@VeU6hCy;UKGIahGyi;Y(?Z>(y|NX~npi z&u69tg%Szr0#saxoV2{pPt1~A=F(;*D}S_0NRhrZUjA!mWlurz?3i7c z$M33Lef`|AW835MW4{zGB3f}6vtUEN&a$EB5CJrcHgv_L4c#_=18nG*BrTzdXBGb! zw$wTiuQ0;U#Y@L%z+{R~zQ%(6gSbrcH#+P4fs@SMs({Niv$kp@GS&wF$S=i4xOz5s z8sWIYg+40b`Pdw9z;|SuROED~BB>s74KjnPIr$q8X2A0{zAFV%KuT^35~9HYL6@Py zCPb*YHcbJ@RZG%3r$ovc$nvlQvLBIJshNwRic>_`st%Sl_+;H--+f>H7XRFBjg^Ld z7NzvoH)Sbr2`9gJsz&g+^SFNDb9Wx^&uG~3Jua17{hH-fZ@a(PZCLZu`)e-I>{6s3)S9BB&5$pYIjEWqd$Vp9rBfAP=cDFVzFZ8PES$@tjQ_!pRSslBfM*Ah#VR}RMKb`-p!d;`CaZJ_uOcHolQ9K zR#UqVt2ysC!U0=tLD^h)B#(PD-!s0Kzr>R-6z4_w(V8}$wx*CT z40wdHd@H|r{61?w_cKpm{MUswT3uTWmH}fmO?)b=fW5O?@@YH`IS=KCYhyWC2)`;o zWWQWN^*NKNO92(~1QjL#aR)_1Fdf#(XbquS-{K)Rdx*q=Z}AYd^lk1(BcuZA2)Pdz z~uw-n(;Y?^N$ZL>vBqaXi^Y_gAzu(#V!rs=Q#U*pA zob3mGwx{d*y;}-qsdDw^+WrgY@4qR~u`>QT_w3H^?Az78vOAh(u&U+uw%O&Q2j-3) zjbzu)T2#91p4dNKRn> zbSR0SVdG)>awT?czE)009A^Oa?XZ(zK}wtmn3iKyq=%d!IbsOZzzE~)|IUDYbq+%+&S`-#W!70R(8Qni}@|0zt}V&B`6q4$Rr3m z>1V_~Kn3$LcO)Xz1W_kh}O{8{`TgShb+tND}ZENTOB9o`9 z7=Qk>J5R&qn7kTu@N-o@gpV)X_4A7KIHoDt`JOG(|8<$i|2uy{!NU2x&ges*Kf&tk zfnD4zsXt*tkEzR42u92LN-8;4kmt=LHA5N#!AlMz`Tf92r_Sq=ku)SS5W@GBoCvK` zZ$XZwfAHLRp}Qa_Ew<1nEd6Z!d+)-@j+?K|)u^pn*?(+UtAKj;z=|(#kRNkdPG1XG zyNU}!m+$DVV=>DEA)JWj@>aqP@J^M$idFc;i zi|_vBw(Y;Vd$H`1M`Xiy{c8KRU*5G?{vg{^kpDRB2MwV(B;0}Skq;Gf(*#Xp{#4|1 zYhzqZBcbX*TDKA;*_#yb5(kzef$mnE&MjQVo1z4VwGGnl!}GL%h2wJCzZ&w>WN*ew z!Su6`+_gaXIhb9Db&8FkR3aK7=9!QqsTp~RP!jeX79!LPaYvF7xqh)7Y6JBSWDlSX zy#$CY;-cXsMlustiS*tP7AJ~UlUy1u)`l#-RzW)huh+n@DM~HcIT(Fp4+x)ZedoE` z*H&{GmHU2onA+nTZPv8ts{1!{|0THRtuIaU^Y^o{A))tsXjetprUEq=ISz6t=2L?3 zri4hKlBj6%CdVbtn^UWN@1H-xcog`XLTw~xP4*5R73VGGINq%zzc-c#ASY3}F|kUb zhaPi{7MDqf$XWKEJ5^zszEIR`%5f~#KR-^k%4w!8SYpwr-ljzUBHBJjx01=^15mL3 zKj~IcB(i>VCf!O{!5^KGz{`I5HYhuE&BHiz*PvfMj(qi%60PjN@N=pzXrYK@BzVLG zk}fEdgxBU?Edsu?ZN151% zz+Gk*+Lz8Kw7Wf8gVz&)IGjlJAR{D3%5~DFERrbZa6>DD=KDqy} z@bRnbwyfQZ{U0=|%h%jB`jg?C$D*D*k4}y8bOT4yV>~4iq-fLwk;W!RI%Js4F!6pg(TovSk%_KQcVWl#uiEt8B>GOKrxi*tgOF3ssxRO-NJO`ipv%RsC zjyiDBh64-~@x*9rIoTegc2&PH@!iA1#L1;AUf>k>-2M52g(*4442Q3zp|4{84I4T% z{2k*X>aHy}&W#OpHad~ia=v!++AZr|FEY3$9mD_-2b{l)!lZTsox6>a>=Yd&~r@%q<>m0aQrkRFWhH^<6Z=MgVWH z{lS8KK($5i9Cns_KTAr^yhQlyrtE@XKtBPk{pVa)_0a6?Jw6hp;XWMT9(7iB1H~!N zJ^e1fAl2m071riOxYJ95S#3+VHx1pnp^o~^!S*AOzlMH0Dfb#%csxEr#()H7g0-g-;e&H6VnAwP!xnFt#pm%$9|Q=CuCIcOkiI8V}SOt^?aX?2Dyof13( zauF;?;0#Fj1ZOO40_qQcZ1c|^-alL-d>UB$%I%ZgXt!Eb!~=y|?v=UgOH;k$+o%_G zZV<^Rzlp7_ThbJ-$K;SOB$q9P&XAzQXEcg4l=xfg2~pNR)TfZ{nUR6q&keza@Ij$( za;Bz2bh7Lp{q(0l`U(0={;>V>r@^l{9pZT8Y$B=Hic?M{MesGjhZe>{ zn3J$`vc~55?{QO78FS(lNeKi5gS`M3aagm`)f_y~Oj+u1dZCzsOXNdSGH_|6No7O*fWmo0ix9{TC zrpp|`qet$(>&P9q-~X`8q^P;zx;}q>*xa`F`x~}AdwEOSeVp{UyEx6yFHu`B4OWm% zjF;5IAJu`i)B}Nf=41i6q9$DkOqA1~O$i-S+)U1m`Kp1E0&y+rNc@-m;tP@Pr9JYlCW^n@p@lxo1*@t1fdc_5!57(klbd^tQZyak=h z%R)WXZfo^oV|8)Wl8Z09cu7^;zGpXWJ9%;4o!92~R62`>_V;mb1l^DNIyZK;teRbI zHdOVlZjNu5S0vMUZT3iUY5lx)*A8wtvAe15(kEBl^~+jgX~UdoY^1Z`9uL9RkVpX% zOCN+?CJiUHkWPyW=aq~};z6O%9MSG*VE{Ixie`CNPPPg`U8lGXmwsnazBbfR z5t&!*tY3RwkFe;$t_Fl;8-#!G-xEH|@<$z}0(aJ7U&CP3+1gN+q4HPFD(>0T;lTjV zUm8m>KAwejTZpBdg>@qg9cAh>#k4`@OFGz84MVUcf_X&$7R1p+tV;_OA_V&TFl#YF6NDx z9p$7#BqH7=wNf1rZ>jHenmrJQ{wP$(ty zB;L(zsFe@(KbjMa>u)nOH9YijPQ1ihn*H%Bu8PdZ^pU)#kLvPb z`o}UW+&}y{yVP3}&j}Q8R_x6^GG-gD$~4+sOf4$g0P z3zr9q(=)5YxOdOQC(;`D5>!a8h^L{F{Upx)jUa2+SvdFCqt9pVC-gb4i$zO{^7Ddz zx6^K&jy*%}Oa_+{_{`j8MZ}r0Z;?ieVs~xjBRhs~8jWiG@$kG0nm66plRrAPEYJ#& zHZRsyF|=f4{gy3DR}2oogWQv;&DKb7EN?C79x1ccRY!D=O9nf)^yX#y>x&ke;3Yn< zuD0cHQ+cET{^RL@P9+yjOvnt_2Z+6j1K>P^Ia{V+&bX)zCk_Czz?H=mu+Sox9ho`E z8APEhL%qis{((QJ;gnov$mTs2ZQj0hngZLc_}ysa*zfB#g*HkC&i9#O)Mbiua2VJfEhact8rZRv0aD7|Ot%kb1p;M=3=S6hVmu()}KAMcG z0%0IOC~i3!Pg{%5H^fNrbfl68Rh^DKgI>&xJ>$YT*t0Q-JtLRDTXaAZVJvXWD$ z)g{gImyDIhB2~_Y+VZd`jsJnP`32#lA8d{TQ@GtwyZHr9hbUE|Ip~vO4f>P@3F*9; zGwA%+V$PHIknnU4=8QUwlKha@?XXkn7*&C~K;#Xg=%3&XQ|+7Q3`{HgVBQ>EFkW!- z#G0EH1xrV+TO{<(G}I^OHCRgnCgFG7Tc!P*>)MdVdWO*pdujZPKge@|^{{vWOF9g8 zqz%KH4)EOupfV&|F&K!!OfHGjX)H^?GHfSP_9~YjP#xtrOpq=@?Z`|d&;5fkMfkO` z$XsL;-cY9g;dOIF`)Q_Ct+r%-tSd3gWM7`(%;IRIm)Vg%DMcJLmCO`O5l5qimUeFVj$C%kMaA@S4h0>)13J*j8V ziaXU#am7W9eTEfJ_BW!HJuz>tJ`gW>=HzOubc9xVwm5`SGc4|zA&F}$W$}uYpxY=1 zjFGJnC1%GAK^Gvo38fAIJ4!8l|aHTRB9yY)- zL}mcPg$?(NTnurimgmYeS8d+7U&CpyShwLyEtk4U493{B`T2eA5Q@3)U3t}2S027> z&z{S;?{{4J>V+4*dUZ#~)vsQ3;j34Ysx)OEoQ1PbZUKlGnS>;RD$rCq#dVkNN(wZ{ zQv_M)1FScDo;EcTD3Y>D@_ABRNz0OcAlz_DxKa9RdV#d_8LS&aXQ zK2qBma^_{H+Vd(k!XN)AtoVh+t9(tHoeCeT=DMDO%oLSczTfRX{a4Yqykxj&XgLN3 zKfvQGhFyWkjgaJRWXA*q1dU))QD7J$sR%B{2AtF{I1oTlAdei=w9D=@mx=jLzdYq> z%1AT)@|35k_U-h`lTV*>CHWxf5r_{U*hD;4dYyu#YVud~O^eH(=Bn3v^ZobV{BFnQ z-n_it%^iQd_~+Npo_+n#FMfaW!-J})?zrP=l_JuAad-E{eMmU9LOJWo=eKNq;mX-c z;Uw3goPFgBTem!aR_O-WP|&7N@U~xK2E5=@Quvw3`Mbsv=%?#?L8%>xgP%($9%lgIGaM zWl>v1rXcz`&BPP{#qs=w{v#3vUmOJr zdRY*FgOyL(j?HG)E1MZ6VJ4vDsB^wXK#6EM&`I8QZr}bc{ct8e1-84FyW~p&of3Jk z^qxfjrr85TFehmbppKp0rAZuy^y#TGQ)K4u%rH;X7jZA6-5V2EHl__n0bn}JJ z?yhg&b$qyN-33d6jhXfgv(1@b8Mxr;Ore{5Qh)jSNK3>E+nGvwd2`3?@4UQm*N?7j zCG};lFbNI`F74G9_^a|=R&%B;voW~jg0*GC$9J{Y?-FAQiZz)S?4B*h z_guw>Z=73H@6RMh!Hq9}XEqBWfE)-NfX5uDB)+e(DY(9=O=0Sd=dmd;nS)_-({Dc8 zrZDxsnQaPcz?5pAnk+ZKYOQ8nrU+I}Di(d_i;gZ||J_Sl+V*^R^@;~B>`eRlsZ)0aZ;SJSEv8;B>u@%BB z9HPb8LxdGc;37%%FGvV{?hJMV0^>y*55oZk_o{-bfF&nWldi^NsZR1N13h8J17n0J z3w_RDj#*Gjlhy^kX1>mxK5-pDhPX7MyNxM}Ingn1 z2QftyOTi#+dm42#5=AQ7EGM_I`ry*%o_5ys#eQ7aQj|>*At=Ol>d28(T#fLGw7jC_ zzyGrG*Kho2QD^@nPrtabV?~3#qGWulto+&k{Lg1;NvNilL^eyFjtO>3TH=jhx{6Jc za6iRO$OpuA5p^69_5U|C7j&95Ep(gz1+jzrf}j12G#93$wtxBM-?<9m$1_l2Y0Gn* zTKJ#mUIHEJkX_Ed4NTi2p;#L5CLk#+mtzj)ax`USq+?$ryQrL*B!Qqp*PMbDS8$win1UAS$__|in45%3>0~YzVt$1@cdbryT%+@wg5{3fa>{a7 zp6e(Nnqau0xwEk%v~ zidivVh9~n9Q=r`85EBME9OVI%+-)xln2H8=^>nSDQyq;sZn!_(S{1ABE%#IejXAkF z_Ag&QcY=BNAABl(O8!IGqiQ8D#x+4qX(6H`_>MeguOqMMTsR|uf&x+k+2P43HNtEs zOn^dd%EVNEq*uQ7c&>1k;4eKkOIdNkqnx3 z!slaR$af-8j=8QsJ9QQ@tDI}NxM%N@X!-o*3ma0>57{cSpZoJ3xi-Z;&=WQI%3P?# zXfeyU+$mcXn>vs!+oaa`d$x4XUEdRn))d^)dQT6(v_eQTH06b=D(Z`@#Yj7!MOecE z;m_PI4$jOHHF~QiNXC( z$)WlH|5HShaNPI!pHegl?pXzza){kiiEh$8hO_UXzT=*K=(}DrTRe@B2gGEWXLiEm zS7%mz@+-E&lfQ|p`CTzrW^5YOSTKE$UpajPqtED%{7Ll3hu%sgey&oMkDur}&q$i2 zOL~}FtH_3qtauus(?ubDA;~0U<<;;;`f+!W%R126ZIG$5d>J~AE;C1Zc-AAw4%LLy zeX5)}V_Pb1ArO7EHBWkw+X9?N$;Bml*?WmtocF|799&0R{P)q8k3+^i^r4zO@5JZ$ zmlR6$jy*@ubHjLEN3~yM^gJyC`#_V4xXEX@rCcHAIMHW7w6GxooI}qkj>iYr@(kAP zp0pGc)ZXb;I8p$qV~U= zGc)0Fj?l(k+=q#GW%Bf{EGm+SN(3=fNc5qa0{7tr-lEbTptl^*svNz1o;<+%bOMPkb9h}M1d zrI!?{f8GVb;y8->tYG&lCCJ-N?L)F$N<4P}g4hbwF(f<_X;hI~g+z7t@t5$QLUsBb z;neAOXXr1)m(BPZ`Don^>Mw=DnK+_Pm8=K}5!_og%h?@Z2LAB|VcLod>!=`UVji!}LBX2@=j zGza`m5gR|(k8+c?NVDJHNIx6#-ge1A_%lXZ32%8=^4wYpf8POmQ=cegyC{)9Rgasu@A1CL2Z2k#`8U`2b9hW8Cc?n|$>boY%Zm zS+~?o3Dr4Csqi}Y25TGfdepWaTS^Su6gQ5zowCn-i>LZ%gCsW9Nxjp}&LL&NMb<

sr_~|VMmm#*#P+T5z=Q!yE`jSS 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∓|7+9c^;23UyH*YFD~?Y{r=K;z~uMqOv=`c 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


cMI>u8(q5b7=!U@r$6 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

~i^J4mP< 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

|k+gQT-apOzFy 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 diff --git a/src/Avalonia.Themes.Fluent/Assets/Lato-Hairline.ttf b/src/Avalonia.Themes.Fluent/Assets/Lato-Hairline.ttf deleted file mode 100644 index 4c5a8fdd99ae07c3901f5fc230f51a160e269bf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584784 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

ml?iIiX+TM zTpRVay4QqTqRwbz@fB=%eqi)r2RHQ$|Fa>V za`0b`KDg*UL`+XEUgUgGxm{`!c(`dTYjtc9?m0M9s20T1VCtZuNKJ36R{Ih2|IgZY z0LE2aX}|l*%xGpLjiiw@s@7;Eje75Otlq3%EX%fROO`A*$zAT<1_!V)#u#H0sv$Pb zR6}S>AP~YP>;i$Xge3_fg$+v}OTd<%|L@#4Bgw{;?7zl%`g`}Dd+#~te&;*qTKtr& z&Kv&A2c&SuD&aGo;cf79`Aps4K)=++fuJq%jQRu)=P|PogP)&1Ui|ts4i3EjcQV_#&QI|71Z}OZfox6T}ZNQbc>7)f6?jwqL4CVY*an~;Pno{EW|wm z2f3!`yi+8z<(DPCNE=7T63KRzr0*Ce22XBD`U;SVMktKl>B#He5nlPc8 ze+d>|V9h-)oE;r%^Yu0wga{VFQ94v=%X07eIO*QO4LkCTbeZX*#V0&DGAcheC&CsR z;?4YhBavS+JH3kLn{bW% zg?L0ULavy@Gyzfe84rNh1vbl%ue1Ol>eq;di7zqC{5Pj{3&i!hwcqud)9f`hTenvG z&9m|maS?PwpkT)-Jy2QbXCH~LpV+5<7Bi^qz+-{q6OjmbYL=Vgf+s#AJCxs&6>PPp z)aGQ@rC6=OSuOIBn6kFCgoXl#qo5%nt*tDEx9vwLQn60=57>0Xd~kgcS(gYbiQSmm z90eBv4GF$JMucSqKZaa#x?kM%+v(WB&C7yS~7xymg$tSO*w4^k&y*$Ih)3C zwQ+fq7^58L`>JqP2;RYMG?*Q2SS&Thqk05Qg#h;w@L(Z%o<6y&N{k1`=gyds8z1a> z3<`)&4GT++hO?zTD#jVv&Y&P?_6*PC^iT0EnlIzZc`-&G%G-ko4cY)6p41OR&UnAc zd4lQsziXB5fTuN{$FH>tZGfEG#3Q=5c)QZcw@V@f02^qnP{Jir1MZLZrN^gHD=Dt} zU9y`rW#27Cw##Ge(Mc%SNvRBX#6Zg~c z4sA2hg_vmW2uwrB*ef1wr?hy=Kj8PeCiaT%Y5bma99P_==zxTg+WwY{==OLn!rNg% z?i9{RLe&8Hd65x_Al16BgEBb?eo ziz0rAi_#RrudP|Z{MXoEQ2^bJtWl8Ea}6j5~T}E6tTprq?)WI z{5}7X7j{ubox!Zk$K@p9>WiN#H}U=i3rS>q=q4x!KwD|FYc5 z*Mo;XInx)~d)FThT=n7I^XA?C;Z+Cza96MRA3WR}Ya zizZy5>$;$WAI1xr0a-{kmtn^ z&awwS6&M#75E=kwq*HTZ!>sYa()HsAH+fHdrby?NMWPZgBXr_^gHCUlcpxK0l!6R6 z8{jVSv|ce#_aKhJi&rTxDxV5Qcv5Lxo?f!oYAWKh1}QGE_=K@z?+0oSyi>%vkYcU~ zN^@GO&Ckz9|5=Rsh@@C|?l^oO4$g^L0iJRJfsPz^#Q+rbk?cqR_M_h3AN}p9ZSu+O z7w(@k=l%<~+vv%>2hX3h_4VKL{+2E8-`n4RFFoGVFTXc*{~xyR`0)P07hfE_|HB>I z|8W1%V|;vep-G1z-&jJVqjCHJt4G1TS{%v@QNuClCwP5oZ3lx*8mQNY0qUW>1;&ip z1_T}0IyqB_6Hrh55JXfCwcqjAn{7A$^^SILozi;Z!^5`2AD(DMLhqOwxZ~#sXQ{{8 z;H-l`-@!iCE2@3VOIO!R7spxs)h}&f|EcIPcMhU$KLj7QNT_hRa-*>|#qrRT8Y|0O zU*r&)D)mwellc+m?&ngYDCFm*B-v*~g!!0-BC$}9xe$vTd#a?tn;Q73%?AWzb4u}k zsz}=;VvV3SO>_wpGkqQYiyqq7yzG&`?C8AX(8lhJ=6z=u`a68tNwey+;;~(|OCI>` z#*M#yU`g$+$5yC5W}771Ha+#XgQwIpvz@cn-1OAQ!M{DV$p(XLjtbfK7ymAIA)nbQl+*0VjuN4yC`!*0zH`wncaS-m^efj~X`qb+ z29^iTj8AgL$LRGG5eF)zwVlHDc?kb$G?(1G%Zd-c+ylaLlVhaaz6D+D8#`}UURtnl zM@{+G#g$&4Cnq)(M$2MQ&HPnmO$UaGE7l(GZrnJh$R~`pu_Z_}&aF=o@6Q`<%`D&c zX&Y_cDs z@PxVu=j!eg?1GE3o-?q1OYt^VHT?@miGotR{}^FfGFUxn6bH`KHM+`>D;w{x^*b*T zI24Di#Uz&FdCEoM+3oVp_>>Re=lEr~tEsQ3_sEj`vi0{47Z+9RTwI#aw7RZ&tTn-w z(!H~zaZ^`HYSWU!+1Cx^6t6h3V8xxewtq>gN)IU-`ax^wwFCM7F%9cmUCW!33%0y) z^$&iwt0b*sO=b0pW*i1z(!aO0`^J@JT|E=eq2OusB)z3U_?K+ed4blXUTJau%PYw z6=fAWpV_Q_#VXbwY6*`j?#P;Z_x4#5yK2FWOL8mM9Pj$c&ztw3?Jt-+(-Bs?RcyNY zoukb~>mOVvACb(ZOK;M+u~qJF> z0P;blN1e0gu9;8(-(LPC{_kE$lP`R0z1| zALLx}0S8m6%F|OL!h`@8Kz78Vp53JeIixVDFD8?;Nw?%psu(d?4Cy>LR8Y2f`^?^x zYi4Hj-^jLj8Kl&z?xebblCb=F>o>2Tm+u-m+C6-7IHzdj_MyDNrnFGk^0v^KwRLtw z{?eNk44&9HFFvGW?1uxLC&y}(*#^nrWe7>kpOM*GThlau!_kF9cZ?R*Z@s&B{;gZ) zMnsoYHK*IlGG~DPsORG|2DyYmzm(HT3wIw?3r~ou14tk-_v7tzx3p&lgyrYw zgt!(Yn-b<0+A`DAgRKQ~_Vn%i>mPnU2Jq8NZM9UJ!_}roBu0_iW@4Ovk=T(g$JKNglgiHT! z99WapRy5;<2gYNh_a;jlDMNEfSDnOM`5)*i@?{dJq9hza3YAFknqhpA_8`mCG_ukd z9Aq*Hf_+9%LU00Tvw?oT_^mO<3lk<_(n~IJTPHn&*vvohQs4Tq?8P??pbAhn%N{&B z(0>!2up^h%K@uOo`=an*Z|{RlxZ8S%`ao~*1L_^()AJu!|L6Yu)qgxXckZLi>;C(h z>2Y%Xp$kw$SiTeeFav6@chz8@B7gz0qh)SbgDa~iXXG# zfzuysiT~Nr!p{6~sZdeQ7>)n>%f9`c&VYonl<=Uicog(-G;QgjDm+GG$L-f`?8+cw zXZ@b#EkW{2HFNWV*qg70rIo24nha2TC%WIus*Lx8TJ%q8EO@W&$Y^;3 z_7>-wt|~U!oQ2KV@ip0zsY~wOK=J|heDQPk9Ov=!_=o^C4HHZ@2wS082j9O1fI1(9 z70nUkxSWSK=qlDK+=UvKusuVgdi?G&~=7D$exTk(eBif;Xi z8zh6}AZyW8=ods+P0-EX_!Vpp!oK-aTmS?qZ`|D}#5v+p96D?wVmaLjiAiFgBPyT141x@?|juhb9iE5e37rcw=aafIHNw-8`3n* zC`c23ZwxR7SjJB%UeX!X7Lgp`i%*KnE?hIK1hRZWJtmJqmPx{Xm)YTi-~qai05$>z z)W2|||EF>nbZ#<&-F_GG>C%fFL-$#=f}5|9Fsvy+6xfY=BSUf>Ku4BYvnEo_`K zQnV8D`Le76nxOJnazbN)qw3|gyN-ka_%-Wvp2P?n`FLhHbXhG0gX=f13dzgM2~w}q zD@r} zp?O6WvwE_9CUXb$V%56-Hbkai>_?xw_ojo_*1H+`R?~vl|Hy&Sf$>B@X?r1 zC!BGaa z-%=^=Z~5&Ne?}pCml3H|W%l?Ch0qWJwKWHQnw7k=?eUl(G1_f|9`bIOePn5I+PtfK z%i0HT9?UFWytlq-ZmM^Dh&9-0PHwMlxMsO4p>0b?)lh{!xoty3WRa^jd5J+RQ%1b= z=Wm)>*k2nTnAx+Xp>=g@L2yV)YDTzgak4pnepyILLVRFQVb|uK^7V5|&E7e6JsE{7 zdn-|Zj{#}bI3}As-m7DOa?`$_+AVVDiBgiaBOj^;9@Qf#@BlM zZQUddGhH-d)HipqV|!=KlB(#mg*PnTiL;mB;tR6N6#wO&n+|gmbNd(MOu(0G^rxh2F3t56qz+GQ2_zLH5HlcfAn6`Yto}S zdG-yv*B6f6*cJ{27&hy`Xwr`3_xGsk&A(fs_aFEVHt)QFn7^WM27b-Y;n(;>J14sm zVrf^$cRbw2z@NcVq#|ZehM*~eeH@<t1PT=VcISLL=xNB{LNepVT!URu^2?OFBXy>;a~o*HwPbi_P`Un>gSd9`D=v|pl27Tvv}qHyI87x(-i zQyL>*yJGB~{`Du9xI!+~8;Q=q@Y)r(Zy3CPTWvuKKaoA@bBM2*L4U*jC`a%X z*qvwr5#VTKl0h1{8##3NJX>gt4NTzs&S|6LNeRS)z~IFpg{{v!*w?Fc*|kk=d;79& z={;L!RqPsa*+Y@bCcRm*bjeEBq1X4jGUs2dl`w|&E8PC-p(P&-!HE=w4Y2?BU|hUm z1(8F87Pu!l_%oR0giU#-IgY0Ev&F_+^zhy%H}twd2j2+u9X#!h-ReI$2=%G79g28t z=d)Xi(>m8z_szBqENj@-n>};SPxsjNytvbq*u17z#>Sy$xY|*;>FJ#Y)^^=9%jVp% zxpvK}joa(CpI*4?rNbRey^GCd?FSy~pM7Hcq9~*6CC=#IcBpaQ{rg(cOf*#3h<^MC zdS1gZQQ;AVF!}-0Qr&p+`>C+H8@*IU2#Z;wYn+Z@!atteBs;W*X92_D{-YZuq}{P! zmUt52L{ZV^XLi~qpX_;Qx68HrC3MO2#8AEcEDD6Cy3x(ogEPcus12BQE zrweKEj<_TT$I(0TeZBt9<&a7Mb>%Nl|$a^MAhfI)p#^nw?;{3D;pq{8@c zgSBm5#P2Nu%$wd;pJvS8;YSG2urTmyarO1zRt2?t3-(}NU~N_tHx=Fl{05?H zuOgIe^1x$@vC(d3Wd=3%KLG&&>2*IPHlLIj=n?i48Zvse3(UB7-%XctfqA|43`k^ z>I9u#B4te+L!^D~?e+IEDg*L<7Gp7~|Dd(_1g`lUzotLp9v#|sLCAwowgw6XA_R^@ zwd?pDa6*bCte*T7lf9d?4tHB55!4`mlmtg=63#O8;&<0i-92_%tX7%!+|w$im39vf zbf`-_kz7wpd%sR!0SA7MyhQk;^0uTGKq{2K&^Yk&7j6zb6ZTwOE&NgVtvj}523|PH ztg{Hd1kU6Ifj;Go%f?2*Nj}OSz>SKtgP4|(;HwyZo4T-XjuV_zx#0R5mjd`fKTdaUwh}BS3&U~`_+eqt4=LbS4+|3Us%sQaNp^PO7Zn`5BFTVFiRP; zPVB&dXt7a5I4+HihS2g1)ncQ%$=IlF{Jc$y^n|)Rzt#NHGsG)4GIN6@_UIqxe*i()dU9diBG9yJ234daa2qQSUUdZQk_<{+%VTt0&IiioRyU z#~wr*i-ZhUYJRZDbW}@LM?5Ya>-W-QQH3;M&;=n>Xw1&E`ytd}_lt=#>ZqUrkACvJ z6iVUXnc<)WW7`ksmiGBLJsFyUGzMk=7BOG}l(M29^!4_dn24w=dBOHVNnON*>g8<_ zts$k!$%SDP7ku?5g?(X-PfQIvYdag3niy|oUnnNM@5F_$!sO)A5RnP$nL=MS$OU*Th_%CBh~)Du#*Mqv8yDXC(UCdGRyp*UDb(SrOr> zLr$JA7O@E9gfW&Snx@=gi6Ym9Z>H?5ab_9PS2Gji34g_4@FKbz>_1t<5sH#F)0uA7 zs6kL%OKPz!8DhFIu653m(!OKM3Nl*XBtiAi#Anu9T_PLNvlW# zJ2b?Z> z=g(^|ln{y=(mn6OJ?($h8zLBk4P+O#t)X zi31|Fd)~-*`I>yaCjQ_XW>1cM!G^h!?2NUtuT1_v6Q76WB*bThB8z_5FVxR#!i6NP zxe85!S>6-3Ma3F)jtKZCpI`h!Ud82rtVcqIsOX`4J(48IqI1vDu2DU&{Gmf^?0F(6 zFxL+}>kzcs&u$bEhUE|>jeIBzu*<7#6YIR=^J_Z?@^t|gb58cWmWteXZ}BN*k@|bJ zLw)Vl^=VXJ-zQ_^Yb=}H%fOhU_UZ3L`wYO6Hft?R@S0Sl;9XFmw2%hFq#`9BkVoe1 zIIZ6GJ-_Qf{TWvnY2d^JM|4Ce*TPB0Buxt&zd;Lsy^ns%A1~L+-_YmF74XfB5cq0%+eNFo5D*$<_RqoC!5&{4XO2IBi_&b`~9golNO*n-_=CBhh?b;$G$ z9paPBj)|rlyu2HrKiH&qY?n1#e0ri1^JK!9Qu_`G6;5Sqk)NM;|FK)WmU1jzG&j-RvgtW8T=H**TBxmpxIoo zcg^CftFHb%Y1}a0;}d1E%&nAr z+fDE6v+aNTSZnLCxA)tw|J^OEt+)K{dOSJN+HvxC*VEdO$eUfg2M1>n(Uw ztux@*a9%W@B@2E_mY;H)$#h}9O*(7~;{FH>#;r7kX#Qb;Me~neTOmd!zbXaKUuJ?c>5>!Y^t^ukKFRidmHE;;=e{`Sb`h&53y&} z^0`}TLwrCiyb%}D){}k??q?EEqXh^CBn3Z;HeFM4G6^Qg3CSX`A=DX7NOnK{oUg94 zNfw&~avuz=TS&?xeqHsLp#|6VBSepn0fa@@*6V1YO}jc$nE9VT0}Sh><3P7Ew3tj^ zKA_#^vf04z{5Gh*hXW&aH zKSf*O7{$}|f}i|TJWk(p1XA=C<@q6evJiJa`HvU&)`0@ry|TksCvzxsp?nSa^|OVgN0K1Ht?e z^vPaasf@a#WstlG3Hpj?X#s;Bq6IE^Woy(^?B$^ z03u&Cu1YUV7w#{>OX4<&`*yr1p;JzjLu$0*q#$dmH8mwUDKQ~FCOXunofxF~LKu*o zONpl}*TYDiiljSfH<;xof3o=(H@3Im_>0Z%M>SLIIsVr69dF;#-F?g3J9hl)mTso@ z+H8jT4>NY>CFIkG=Zi1i!KB9)4S<(=H!StJMGK!`y1ORoG37eYKV*%_+M0~wEJt#r zl_h#8NT>nqVca$AHC+QsCJ0fHp&@|*-XM=+A?xk5rG&DH=Cx%QJXhf8({^q=8XTIf4brS!VIyIOV3J0?D8<2*ur5qgeUyA?7vq0^4#&!Qd_~$;YWTs z>bdD}+;%{dt*3ot6In+oa<5U%R&fb>v8xb_iDMensR2RwADZ7 z%R;5Xevo7qd`+>gX9sNTk7~$e+EwlfVrKR4h$w6AB#xY_Y{%NkMP+z!JUMkM0-GeB zT1~`+FwW585Dpein9GXpaed2qz=Z7JZBE=uaL$O(mXN~rECKzKR4p;UM-=s%bLBxB zImbIMHaJKx)(+e@v1uq+i%%WQ@ruq zR^&-Bv%Y-ekA{X$Z>lI5zG?oNXZANJ`94FSbDwV6+@4g0qpFrYw5_V}`u}Wa*}Q z5oi=cbV|L{Lkr=VV!n7H;0Td0|n- z>SLXQw=Btd@8v?AIUA7I-@^6+5;Fki9WEQ5U00SD656u%*rN86o9dJ~5vc{?SuHh{ z^|ME=?Ol6jRbK7ZyXQUjc~MkpRZC`gS#FHU0FpRAueA;MuNgBxoirkjEl1I+C7y9Z z0eMh7QP)5Y1K-@OJ>YYOg?d9sV4lTL|9eHjq z)B}tF!TYLVLwibW)5do7E#_0UY*tca#YijbT3;6xm@~V)b!A0lTF;JF^*O6!=DdQO z?h?BiF5Ra#MwfKuIBN@{t+6GoN%qFdT$7Sm-jP;1P~${b@Q0s~Cw_((m*hT#T?yY4 zKbv^pCKgK1kGuGfwcma&{~BHdd^4)9EYS&sA~EefSHNpjS%W&DtqA#MPyl}7=M%rN ziB9>~>L2M^Oo0%i;kVAgb=?@B^-_!vGW{luFZgndPxO&4h4?Z{C4WGC(m^%O5S5Z! zP#7vbWAeK2sopy|roO5yE5-{jt#tZ6^?!bL?fh($dXNylAL`i_N7r?4u^99ha!S3Z zD(j`UgdCdTnZWl@h$@B2wf>-oKoJqnr!bsvN#jou3@Aasd#MER8Fb+U$PkSOA^^wy zYY-o8hTI4rLNZf0jj|pIS?XKSJ^A38=l4XbZ|VH}SVd%YinAbC{fWg}&$7b168GBn zCU%80PysCJPl5}aDbXTs?H=w{mcw6Luyr5TJcarqAfNhNR~mOjH_Bu zkUM8)tTnp0H7&lmEDlH>h?Uyekf$);Vg<^u1da#4h4NA`arxkZ|1WY2&w)I|E>YW( zlG|Y%faT@pf#sWvUP-5H%%o@G8Rd-~Nk^YkkXgu#23E3Yvx{Ew!l8SN{zjBGk9Bno zjO73HydH0E!CMxS*s}f34!ptJb5WI+pgrM)@gdin>YQO+;4lqJj~2psr6@q|fcRpZ z5H&J;JU}o2;%T#s7dFb1K)Tjxv!SbqRp9VY_cY>DMS4}%@v--9PzT*pMf#QMOmUD- zxcKG8FQnVh7Mx9e8MdcM=NquS%Rbbwy_ldWY!8GD__tJeO50$ZyB= zuJ~OI)ANDWPEB#f+N0o71$n3Wq+LmCBevq^uGzhbAY&dPat*}WA`)gYQv8x~|1EpAA>f+SShz4Q4iAD8|^h!&7j6&`5B zBIVT(pm(eRlT(-KlydGb&|t7Tp?s#07XqV?gW0EMql5wWK%yGQz+ylF5Y#jPJyv9I z$U5mi#$%=Hb>6xOy5#6NI0ZXJ69b^+JbdGRrK2!GNTO_3=6 zj|6Y-E)jegb}4-6rZvS}5$gQ4nI$k0>IE~iDa|6F?imdeU4_b;_Bg_~Km?V+XY zZzVs}u3dt$PEIp88$71y!C1AqCBEx%T$m7pxq2Vw6#qRLYrc8$xGbLEYca_j zI~=K6n_4Sf#V_zYHjcFZa`3A+u>Qh`tAk=DH6EvjgR@}_Tpg=KJ`XwPLDPUwPTM8; zRkEW7s58LVKQyz*s@~_X_Ve=28@2Mz(vsLz8)^u6r)H0X6GXMAjs7N3cQJNj@Rg3h z-=5BGA&40<7S3&np2lr)kPeLaI`&!0GsK*3Y6}Viakj!V!VZ`%hqpgDR#-Ups z?k84_KDoDEWJfgl;rvy(3S)371{(JLF;Kb6w9vd`=i$;iaBlvoxi!Q@J zF~Hvw1CP!|yUQR0^`S-hOy%Z?-M1W8Jks>>%~WJ`RpH`sMc3vQqVhnO&KF#;6eXmRsj5 z*WkX>uu$4ZUV>I$s$r+FQ01Bn$u_YXf9W0`VS(I6I#xZVBcC4m@5IXSMSbcT9;$|Y zAa8_f?{IU2lPo+NyvcA`csOs}jBqG(?kj}(gngHu%>|m@O6(=`}Y+gc^8h(=^QXO2R|arkXX~ zZFw%_%5p=SAe?^KlN{KSG|FqH{ewUD4!}My!*F3z+$bpa4#04e;<+yyz~latMuQ`` z+J50u{B}*|4|*2=aAjfPvYY1@476zbgP7{&O|uUU=1n{&&Xfv2bn|Yb(Ny-;7IHX)RMRnehp#n*qIq_WH;KA8V%d2S%Bl{M%3>1LV zP_zVmRZ@_M>e}C8BC`9vC5rKZJ_hOIX@NSfAQ~1E!uqrjFuZS4!NM^it`K0?#?#3yv(#1-A~+?Bxe_vyVrg*j?i> z>(x6R8&&O?)+j0?0%;b+-}3qF6iQu1Axx}+7YVs90UK-*m*pAf3OdLmjNV9^@pgL0 zMMn5raE7;8Fu9T0$<#fna!W5XaCQ<&5?{H{I#Lmt+P$^;!;q7~_OM`Y^$yxzuMdoy zy`?!es&0K3`;fhtTGO4F+f_7!eG1k5x@-*aRfoOU12ep&`0_b9Npl<0$tGNUM?EE- zP;Nt>*^tYG(-L8g>k+p^9tV|Fi~uk|wZLSFW)x`?V##=-q+zZI9L}YH^Y*nb@jim` zmJsiZi;Zz`moY2^!R|{bG)~Q&6S6?P&7r(?V3@B*cjADMwyhmW2`%dy{Hs>CB*!+V(HZ-L!mSuDmITS=3K~zH)sn z{X+?cfE_}$tAYvwte%8jiBPNb5Gd{Oud!OdB=}!>xsw2_c<-co{29xeRN-gTe`9Gj z)~DWnWqtH)5UWt12~rW}!zzASJ}y!`J(w^mKg26*;qYNLb(7ym;TTjKV}iFy2xh?& zhstx2c&!oUIA;@Rj5UZIS~w5o)IbW&&u`7L;n;wA^1Xvg^@g;@+{nn>#x#R|=^($~ zm+~qxUhzR(5j-%Q1cGS*?+{FGfvrYl9JZR5O`xSIh`6(nQjB2@c!?Y^_Hd54o42Ul zx6)-a*0!|N8jUV_TTPw0yt%pDTu0NwEC#tKUcL2WilZY6OyF+JUrwMSF zS!kK$#)gGConc|Ih|Ij0Jga4HQPJF%S;=DY`E%O)u{8gN>6~=LqnwBkf|qXfCw)MA zTB|sX97x0<$lM{iiB=k3YtXQ*q@gFLWNlAw zMtygE7SmZW8oC-XGTW9F)GVoqgO+}EvYkRmhBMe%H(b#$((WoKjJfXtXGvjc+tT{d zMU^qA&?H~TpKLj`eFxh9m9i23RW7RId85OjFpI3-&O}t&aY8=?q2XM9{TwUjVM02? zo5uxEB~RiYkmqe47syQa^+x>F#7vZ%gklh$d6O$~unpk=Ss&~GhfvB3Ai@Vo($sTE z-^sSR+czVtxMr+7qqujt7wl9^U_#)X!N+AkgJI^JfzG_-mQ_{BNqR4FH4P7SU;d3H zzILdrc4$^Xc3#XIt+%&|+m(qsEp6z)4+_Rf0tBYfq~Iy^)DQg$Knr$zD6>S`qU>Q|j*6_0!7x<3l1dtr z0_;mQ9`-A~R*y;_ z2@}c#;0fyY0K`zeq6<9F;6eV8YLAQB19@*24zM+d7mz&kGUO2(gwmZ-P5{Y5(&@2HUV+NYy1)Dd zqz~O|Nai%3@-l-f4#xdz8E5^d&-$an6~ER|Tzx(q9)Yg2pCF0mQcieu%xz2(AtTzM`MO{JR>1TKhJyIEY+jsEj3&R&j{R+2NNk`i|dN z@ke=oLZ?13LF;g;eUXm(K7onG=<82K7z;Lo=2jnEEeedgd@i}JB>JkX@^1Q zEh)E|&qvA{&+A69T%09#q21qF$MHsXPOTNY2qa;`^J1#>idg<#zj9cb~6ixzgL@&R0 z-bEkinD^0l@Y<*bCs{5yycmg2`hr&U6VC{wh(>8lFg5{5M*wL9wZ-w-CqC*Y%-=_O z?W+!~_t$l1w6_D-9OTyo-wfkOsUi#UK8BdCtBr89UjRR;OhL*W;%IbMww(>CpZI+8 zi4XJtOlQ{JXC{~$znkxFW3@2TRZ6^d7-1^ZqadY1Rs`^!V3}p9A5OZ+i`|h~X5^_= z%tVEXj2OoZP%~LI9boQBoutUSJ6NlwsiI3B?2{Ya9Cv7!MvpRt9qjS6<|2DwXkb`U zc1TEeQW&1vi<;At&G|V!We&UwO)ZO!Elb6dKu1|mPQF=rExK%WUct!7NPb*VVhCti ziA8bwcv+A)yDZvhh_9ZXTQstKMNxENqRkqdSm-ERxqPH3cYbxef%0_F_b&APBgnFv z5SJYE-GQK`wns<(6zoXgtdIz>c0{UYO0yPqJ*%to^RhA=DL9A>c%~Mc=Ua6uM1X4I z8j8SYrZz#T&-fz6d9tvL>qbIOWUV48&6F&39*ZF69 zS&>PfzoH(No>#5`YS!`u4mhLTjC+r1qpdPS`W({^9&|q?ns6ZAq}2#w6MgJnH6EsL zn9UK&kGJy+&}u9MQ0giQo=Jqt0K9;68NtLR8AtdbqzS`m(6Ir}D>k4rNXI8$n@9&e zSrlIvvynBeWAD=oHCpGTX!gU??gU}Q6X8s$1=GsiZn*c@Lv(U~UP75$y(yWHta{xZ>Y*AwOl5ofpTXEY6`@ zM0=Lbf@D8Ea9Y~&_*|H4bs5flsaqi^5v@&+2WJjDpAsf*~8Wf01ka*Q?Id69jT(xJBGvq%A&9Sq6_-! zFVdmxx!dX+#yV24j$Rkvlg{BjVE4LwET|8PWg!eFc}mGoR-@$J95xs}-g@UGzqtjJa3&>|)1KlbKiUfiP z^s0bK3{~ra0B}$ek{Nk{>KSYXH!K*>D;GPLW+YaCT51i;Zp_FU9bJ)r=}XZvBeyOw zxw#}JB{zkhCbjUVnrt7I9u|oEi@ZXYl@tf{8Pde3I7Wb<0^p}dv6URB-%mvx7>UA$ z?;bN4jpnsSn}-(1 zCC0}m#wR2q9T-)cxCC(6jfOSn1?#jY+|h{k!3X|9$Snpr1;=OTkTVw(2SNJh#=sa) z9-0Q@=5|o<)u3Q`j&DR{bWqh;|E!$w;FPMggxPI1p+VttVr86b{hZw4vwz$^@9fFl zeL3rY#>_Wfe{q!#r{=9uzc_hP{jXnaSo<PG4V4 zDy*&j7eCX5Df@&JVI}~EB3FKBFdb+Qacf9EN-%;+AVJ)EJuk(GDd{GMELR$nQ7|_i zJZ!QU;6upGT~OHf!! zKOR50;GyH&dNVS5w;ey**LU{jZF4f%4$&Bz9OYlS=B}ZEyVlM04sqfnSA;W)Ms8g+ zaB@YVPgnx$y6jr~`Ul5VRp~uw)w3;gEj!we7 zJWCAzaX%!d?=>^Mep!PFmYSb&xZKc~l^J3)n{c*pQD#+El{40s5t0Eo$KMoe4h9+7 z$c)|`g(PEzqHcZx8qUf|aRHeen&W~aAqQk$B3nL#rJ7kIwb54{e){QS$DPe%Ef3lL z{p->pnO&jp;xR{ASN77?YCd~!`>H$~EUNC1MlT%wnmGDMNXnL}QJ5N;>2fj%Q9_~6 zB=ouF0=AcsSgId26R;2OxgRnBpPWm|VDReo!MTsi8oVJdW3ON|E;lw77e(7CYp}Yq zsHwOqJ=ImRP}0t>;$A zG15Bm3sJDB3v@d6Ltj-8GbKq~fO9?Zm)(Y1_ril{>s!h$Ah;dE>n`7h^0LA(?#tyd z9Uc5hDX@_WylmKd%mSWbsnY=%pYriQO!CIJke!Oo!T+0wWpw!$h-dWOm!T6szvVLD zbp@@Qmpv?i&QT+2UgBeZ>p5yD$MJ0fXMcdn@eNOoipq@kOLWz_5`$A_Cgj&e&{4$x z_UyQr0%st9KhRka+nOtW{B1*1F8c=f2G|pA38@i*QQ0Yu;^fe{XoC_M5*X~vj!aCA zutsI4g=NMC=cRnt`0bVEi;r<%+{qcAZVz0-QHvNNoLo)kDtwFm*H6$lD z3>6j)HYD5PtLEqA%&&^~Jj!be2O5%+8U_jr7t_}k7f$~a-y)ysab}VJT~3Cdnv7@wG)k$BSQWXjs| z@-->9`rMkBp5}SIF6D%ecq@Hv+RyGvSyx`ZHU&RPOiNG14^q~6UT35yp5RcL1^HYH zV2>Ng^YMXJ%qPr>qD3Z<0|dF>$Z!}uN&)NO_-J`iu*iD7$CflUR9972q{KuAI;<%% zIKCwU2&ERx(abSf3e<9--JP8Zss!Vy!yZXlU+`(%sZ^p9u~3RDyjg>;;rn;Cd5c#mUK4u|KN2&1CjQghyz_zKs%3432{vrU<(Rhqb=4z} z?`t!aMDQVQzR+P_lCE6Jw=^gtiKGF+aB*OJI9(hxCGs4hCwyDB+%s6Xprf8R2!{BkvDtmMZkXjOcHu~Z zM^O_Fb4Ey-%voz@cN`ummp%h4AT+fyk%~>krNo7bZwF>Jj&_u9npYq` zZFx;Buh!|DIO`TV;>YUWr8nevg=FXmRN4q9!+|gwPCl>2*?d9`WgCddw-&{f$T^{$ zLfX(Fv}OzT3kkFZS~&pXBWY4_Z=~`7*-h)XL~AP8gX#rKZ}^sWFE2Hq%ZqPcUE&&h za0Jf{bFR(8B+*5?7FI@etZQ)Mh5EwqsnsP#%Ws~yHW1Vl_9-^eQuWSrYl)!pk>v|H zFG(kd*(0R!d=`@g+0CY+aI4O4E{7w|&*P9?&<};=tNTJfWFc2Ff$0>9bOh4f6 z3_zZGVJ`=CjlqsQ2dcS5Q|ADs1MhW1_0S8R?IGdGydE1=1T>%aimKxKIcmL>=Q9@_ zUQj>UmTxs04c3g>!MZtD&rQSjOHs{q3bfU3l>h~er#oh5M*c!P1gD^U?uk`pF~zMZ zqU0S@of}=e?8e#ZvzX-S@$B~UtN@XL9uQF3q3;O9#x{@Y$??50w?a7N#Z6xR9$y~iUnYkF$3K3{MYZpdU-7*!O76vXU-Wxk zkDQGj3U$HBiw%tC|9O$mAz_n+3VDeA1~>^TMidy}Drt3J9AzQu7Mo@++E#1HUpZ%{ zY4LB(pN5)B7i@2|6s_nfGl#LAQttQ*^RJqnXf(2zmK}XkDR%E~YHv7Ncg=s3!bup1 zZE)IA#Q@$qcxiAfp;KV`7b3rzJakb)?jRM0!#E7cjZrfK$iw7+EWAWACEZdoAkSOO zLGB{VsK>#iL>;l4ZB@6hJ?a*l_JEhOP(y(og}Vu#lO0vOtl|Re4y#(r&f!6_87BM< zCIkM8pAa;PHjY9e{uI7I6y+ApU|zLUvj}wzzTQ}^nbR7{5rOY)WCrV3kFe$H5u5ga zm%~=1t*qD1S7GasImBMHj#<_BSPUM-CB}&t4BiI(6-z02APWmG{ciG7M<%;Y4$qpEQ?;f& zHMMPIX2Q(e)L>bPPw(1TSG%z*9gnqjcnnEy8LcQEZAnRK87;3EZAn%}4d)LTq!e5* zH*?M3i%7g*e!c=JMe5OEt+1NMKB{HQ((1}#U8C!0E zC3{;9+ks0>9JP#TMi1Ch2=Tvl9KTAY=c5I-Zr>I`&(e2OyvrfC5x z5)wIyk_RMp$7R6YB{oP9l~m@LA#vIK6db*|U}2ThS+%gBaA8$kT-CzDvZ02AgodHA zvSE50o;Ya*crqT&tOhSd`cEcRO#DPyAK$p5vTAule0;<5s>&6O@e`+#TGrImtZq$C zYQ^K4mLzfR`K$Cwqu#7L4P|`Acpu;7$5d-2or4v)~Y0=vvN&qIt_3{APX52 zZJ{?anfe<5+@Zc#kFSqeG8z#i;6}l%H&d`*1b&9^5~il;49a)>h_XNaiF=S5{ip9i z1iMqkuImFQm(x-HpU(m?H3&sjq|B37D5W`lATdG zV#!W1RzO;Dc>(-vG#vB_g&TkJd`VV~-uAW}Ry4Yf$|6IhpeAGV<=?r?Q zUp?I~c^ik`_W9!?^}l_X(l7ZMhFI4Scmn;>akY~DLT6Sh%{nz(F|nuBN(%#BgFUS? zv!^X;HhT@KPaEI;sBJSOQ@q_ttRQGU;@HyRDBS$Paq(=zzH`M7HSd3H@#4q!H+vpK z8+M#ou;9L(4GlZ*Td?5Fjt0@T@3jNf)dybNxA(OJH8lrb+q?6neU+8_UfQ|qrM;Dv zdtah9@$;D2pW%}m1)KqEq%&ag_5d>2`B7n57TI}w!~~!HfSiBf73nV_ z)~^i6^s@jLABO&ZOU}na-7XSNzV2eFbP(6nu^oS<*ENV~B*?jVz0*OjS6wWZnxXG? zY}YU8^CaNWVlu;YLwP0m?<(!CS4tV0sj8@RN6z-N(O^tD^gb8%lF z+6~4Hx&pp&J~+b;R}^GGtZk6wFqNimkt!soCPh<-A(j?E4!F#otulhQbY3tyzgmb| zk8nbk^pel`5%!mo{;JrN*435m+j?@%NJqpfGZpmhpHsJ~J3YR3uvAS6%#8{%8!c=g zW$vP-MXqHHiJ9$7^H8=(ELl4zFS&J9b@Awug(>QTB7&}{3sNfGfwtBPIj&6N9AMuE z-vf1KVEKWva!>ctn0r}CmR2lJA!^RFW=49dipn6#gE&U}U9Q`m(++*&y>mWn%AT`( z&dkky1!+x#xh-SO@rA?JcQvl*D2NM&29`zdl=i)YZC5SIO`L!8Nc+C|SvlQnN?JB{ zW^0`mzo5>tqMQa-HjMS#( zGiQy|*fUy}7D5*28+gN*`#Q{h9KK3>7?hx{B|gO(1iK*`#C`b_5M)Smvt}J=8oEGT zppUoNgtLEfvKYm~VrhE7DZ~b!JTZ#l!gPu6GBzo+!#`|Hjk3m2j8P=j7UqEZ6uMr=jt?|k6C>n_x zGagDM_d_V`I!*G#x^@DPMC-oVzjo1)fy}CPH+N>vX)X_uC6ghjxV9s;_3+A>Df165 z%-dG$zd+2lO#D?$iOySeRokLt!+DlayPpoB9^VL?Pj>&|zJ?w1ax4KzCp7>{fea5~ z{l5hL5P+)gXgzq8#9qJzqN8Uy;5?b^0ro2sGSi*05tM@hHvk2=CktJnPF8C{WZ{y7owKhWF3ewcVsX_=+t@gf-{6ZwZ@rE& zu+W+XrdvZA0Y^&W!NW7(d#YpK%8t5pg~~wYl*Hk5@W9N(pCG3~xKIxWG|7tD`eEwzFeau_J%r2VW($Z*6be z+Mbx&wRzU8&0VSN?$TA=S;fn4nB8;3vZAc6Ri$P9l`-ja_jGjZnVTL{)i0-YZEC0- zs?Urtnf#~}Zs+)iXug*|N^Wg$rca^uNsAP7=)ni9?@qtjDU ziJyVs);6B0q+oC^4VG~-6#4d|Va_!RGIQo_Z|FF%C^xHjJBv-P4hpWHw>+OFP07;h zJDRWR&kss0ajGZu-ac&C%>J?b#x1kcvrz+V*4FN{n5vP2jMk#4oW9+&n)WQn&78ll zBe`qtK)wodjs6_I_?f)gjpL^hxM80f2xUH^M}y%qEPWB&T^ zd3udfxpKR*37_BKN3S>F^ONwUb?nH$(rW}Fq~Gw@H$F?R7vuHa{P#zHPO|KPEVKWw zWtr`fq37}cPnM{_EWH6){u4e0mo0pXH^`@efR7rD@ZiX&P%I?iCxHO5Mdy!j{j?9) z{|qunrDzna6jCeYQRrF@ye~sWoh)DKUBtwuM$=i+ntMSuYMO_EB`~FAHTU9A#_=Nv zD1BM7vOT?Ya93s1?tz(R_|~SX<=3{?{$P0pDFM|#FfTgDXa=B!#aK4BWluxz?vD8M z?y)*c$Nu?Qi9H7vwj9{Du?&R*$i^~ZH^%yJXm<@&_=JC=x*p7k7!-EYN;!C_L`FJeRI-guDz|V zWBa_a#1IhREQ;toBfoc7@6hp~?9Ao&uAh5!xS*(iM`hEVfpW8ClEbNI@f~~T)vTXg zVAL1R-CR5Cnx$pYd38-q(OB2M`s|wKieykcN@};v&4II#)w8j_duvM^mkWAC* zP>wY~z6M5+d=2hhz_oy#Bs6hAY`n6E0TA(04+AbgrVXkLOf*Y>wWxmznyAHARTSU! z0l{YwRt6ak58S+G}&SDmy!W)0n-sQR_ha{uf9h`Mk!wt=};MOt*@8y4IaEPZRCN4ZSoLjK?!2hG}z2oC5 zue|YFr)Z>+rjOc4BaLQ8y^MMt$&xJFvL(65l4Z-5CHErRxEGp@F}TosGoi$Uj=_K- zP9SWSkc5;aKsIa|ftL+sS&~pa*YEc{_l`7@1!O<({{Hv@Vn(_%_dd^g&U2nqzUQ2| z{Wq+yuNpqgHZxakG;Mg*Zu7KC#Jl<3ir=p*B_YjdON;9hkpzA z{~odq&wu_NeBZ&YKN!6};rY98y_8*lD0=@1<6npS*RbmkN3T!#{wTg*$j0|b^tu>3 zzYFmFRCfK*==BNrUv+M`P{9wvHTq)o`h@%M=SGBNZac33Xv*scxHQ4dy@czqFsGRR zkn#$5R;b4HUq!D^xPK3>f5@)?`uywc9Q<795Ptl>;G+;af~^Cg@`2Vspmm@;G|(D! z`x@sK70+$*d-X;D07t!lQ>fZbg zgj<^MB2wyrfj7mGsld`0)jp6TB*bwLAmL6VWgq5r$Wo<;Qc(pPDNVWag!GtRuX{Pk zYPAYmymtYG@iGFdG6WK`_;qJ9>gts;~y+mwCddFLJr2+K=yM(qM#P0BDeEoBU%k4kMf;0 zRmDYqpWEp>&whqSO!X#DvY)dn)RviK&FQi)Qis}Jk(r!Z<(b##t?wym>@H2w8^m}~ zNX+dFm(D6pc8BKG4z5lsX<+j+3T7I-Bfq66yEZ>fXBwQIJG~+UO`j0Q=Z(6u$^vhw zDLuQPFgZ!=@5rqWSTSKN9dtzG)||n)Wv6osCB%SXxwd1+@B$a*H ziKt{Tl~FuK)NE>Ob)G%!Kku|stzjHiC);XjdaKj?&Ar9d1Bi$tX(3SU%b!z|)l)UQsCr?2h8I!bL~CMNWp{aQds&)I#}{a46!n(=TqwnOZK%M9 zYR~F9Qi3E((2$wIbe=F}ZIsO5ob1$O)d*HIBvn62)N)})@K}aI)CeYTC_lTTvpg-W ztSz^!vm!OMti8(NHKi}BE}m26$*P}URy?~VBd_db(P)iJFQ1-QFugRzTiN2x@2K$b zx2Ko5@=9nj#dE4NJhk&H{i|DeGfV-Da2?jU2IIHT84J&+I%r%{Jz{_&X9vh51{RIB zdt|mRdUw|VkMszDgGtb0b)quQAe=$#c3osGl*H?0lN1*Z8*UWzDb!@wEV6y;zuER3 zl|ZGoX`#~bGOaPTFI*jFq%zbu)f`s(Ow@& zub6qjS&!{O(O)ad+ptKewgS?_k#TF@OD@{o$MRIC$VXDr&xG^VOlA2l) z&S^xJlfa=_jgZRdP&RJomVJwzJCR$WSuIf-06#O1nbqcs*fJr{_@?5Sp_H`JX+Z*f zq!hQ@;_$|&4OJD*tVm}$J)Kn<@lLPfMZsX_TOa{4^1#@sC9Sz6EmAyX?!u6#Vn#s$ zK9^C`Rhm**Mix=qG#5 zeJ&TnMhftc3Gk8P^#t0`oaXiX10sxOH8WN?J*KbF=ToQr{DUH?hAfjd`gt(yPGrhE#^}=uR3a zj}(=PjeNk!14`}^=JWf_%3fu+nZHcglf)n3FHI8eRQ8(r{mLFQe~>?rr0n7MQ|91y z?sH&sC|5C&OXX142Ye(VK0(ew9=MdD$*^pn&zEgMN)()f7!x0pAPiFikxT+0Wcjy? zx1L?eABm<6M_(~|e!Z4H9GN$kM~r7aDHz1pL>h;lPJ3+>Lm0$_Bsvh6WxUa|snWxf zV&>UD(vOg4=WDgt_bKi@@pWkg@)FTn4)qJ+FNEtAHPg^57@=Bu2m+JtOLCL%XC7F} zmb7s;H3p9VvnaTTCy3dI7kSxF2)_$AjiP?U%&pF?%0v9(QKf?aw{6aCsA^TDd}LSt z$Y8* zPSWd!QBjrP@Kjipl0SflPj>TML0(RFrpH~JTx_={m<&3q-VjFtPvG8NDz=?@WeN4> z5o}ZbRWug&xXmg3q0sR1WhG^E@V>XQe8tex;;;F;$mM(E0>y!%K=f64Gx{$2%J}$M z-X~rsxxq=glgKbe{w5{uxOikyq3Jx_ni01v-fa^0+aiA9-)+JZ33}0_Q%=X3O#Ie( zeyb_o$nNtG+~*hCeb5Sm@|p>|#iND^AK>8x7k?4)+l2k>ZjpU9;of-Vh{+Vkx3e4a z?Z$W$$-^C7w`7qhcQ=vHHmr6BnWcirZ2}qvpd$G4h4Xj}$91BFAdSUh1u7YkjVfaF zC>R2pc?U5!B7oY49+oRy+Li3tcgkOOQIE3?dJx;MxK z^zImyek1&Q#NX<6x!h4o;R(wV^!kL!q{6d)i)WqGp5+OrTH}HB|At46Q4&aM5c0S5 zDEeX4bh$xHJZt_qIrRw|H8FbbX@0f%TgWMy!;|O_fc)a5T|lNia$E%-vM)&_fF^^D zh`)87{kxcjEbju^3KzBU1Ljv~Go1a{=MyLQSz6_9A8Cvauk7&e{8yg4 z;uc>1!G@8OpIw_g|E|N^<`s`T^47=fv002Q`w=hvcqsI6V zWYH>es4)qro$7XJt#o;+TMY;wx%agi@GPlR5BOpRM`E?@nuz>24C-B;M!ap9vIOT9CPyBEu-60wqx7fEu8+7X&uY7~Dek1{rFUpeT2t4KY=e zZEL6tl?JTAx)Y3>V!7S3w( zdfR3#jNCW&HWcb>@%vl)gcmA?pjFHms;C^8)1H;pK4+lvyua}6zP6#phUIO(!kJ6U z%9hS7jK2EXmNzsGwfO`eRXUlrW=5cJ*3wXD>8!%ZzcYT=gBbMt@)6LgjcW?mw?S-| z6FwfI9TX!%fk=$8SBzJ7V`_R+LkUc^XrF+n0vbb%@$e_YF;S!tvU0|KtpsBE#n9b* z7dVW?-CO5ud~{Ds(Y&pxSq-%{ne#91Ey!pX*mYAsg%;W_d3tl@h9%RJbWj$8-8;G} zyQ{KL<1TLgjlbAayLF&u?$s}hQusx#bfjAi?U%i<_rm{t<^Ju><;xB)-29Up`!c6* z?g`HC4BNIpdr=E8mXwog1=jEHfc6Er_AuPZC{+i6DrimPZM2OMUm=(SoBwKRh;`my zH=z^OsX%UkVbGc5n6OZ4;-{XVa=>#}RhD^hpn+3_T2p=Brsm9Q6t9SP`BLjw_f*9n z#NRfDC;mf2c%31q=h7u#nY2IX)!#{cQS9L7x-;;aB5xnVM>`tm38dIf z$g;;o9GpGNMkWgK^ms3&*^lR2P(9h7M_#om?bwkxh~v~`imxU{&2Pl0+}-Iu$lWoemGwtrl~wR*1)aR4B&C3 zA+!uE3^Ybc4wl~k>I&gsB6ZS^uSO){$B{ajo^tktboPWZUN4FLVxO#swk>eS&vl6J z$#3CQb#R8K?3Q>*ApH}EGXkt=s>-@7fl@{w3tm+YkUt*~(*yio^&NksGLoc>@V6%k z*NQqdkM!)9XTMb6iMq3=fQ6;}wS!#0zE!#kRhOcAaZF8#(tIjcVdJU6F6BZ(<-u&g zEi4fxkv}N7p+Lz>so7;TXQt~Ge(^whMq-kOe+_??g&nx8H_~MUoS`xErZlBMHt313 zk8p$fnbP&zbBP-kf`AkPK~;^?4tg$BZ9j#M$vA>~2yP(NqzL)(`k9gU=)wFiJW1vZ z&leBq7UH=^ml?OG2XDt^JedDQnu$GEhZODC*n`j0M?GNq~Vd6)9cD<84heb6IdW> z7DrBSxWCissW~ty0Jz|3hOD0vl>wk`j4nAo^5?Ia%o~xnqvU5)(5Me8F!JM>9k9Rb z@MWfO$agl=GoeZlrOEY9;To_sMv;P|T6S{p@fK9*sEE!wK&K~>o@x}xb~H8@1f#?L z)qzB5kKJuDrQ0KGvGsZBrHGN|(S`CVd%DTwwtsb5qO{lU0LqLPkeP>vyo_;N&&Gjz z==dzAj^{J`3#U1d8Phzp-Z^?=Z=$>%^++sUAWihdY~XeI`oymeuzMmPAt*drE=1O< zkJFD2XEQbiFMNigQh=>vsPt^;X`sQ+Xp&(EH9e!o*U?DZGz%-oV(|iWQ59vdD%xBc z9b|h1v_k6cjg#jl8imgy#<539dlSF9Or?r&6^6mq{AE1*dOSN>#VM(Lrj|}%j#XT6 zIc!AvkOg&DFmJZ($fHrWnupKeUk2SJ%td{G%VbKk3pWzkh0loSkjXutZDM`A9uiuFY zE_M5(ZHp!t-0&dAZcd*274}I2_GT{Z8wb_0(zXWHgcy^_p<*Cc**?|Sg<_*1mGEED zono>=-o&R)ei{=)32s#sD5s;lCmyk@ThcSkR{8>M+4QJ%fmln-NdIDmO`9mFm@X~j z6?rq4%AqG666@hD1wX6XiSh`GvlvT}aY$x56^4uYe#tc);M3jZp2nKudMT+o6zBG* zxiTH`$k&i(*{!ufZ^%4*k)bftoaRc5GodOM@e!XS|ED19-c|XC9w}*CC`MElPW@az zX?^tABzI$G{WSHl6_svZ3XEh?_d~n2IOr*)hX&Fz{p^wO6G+#Jvvon7J&bb^oC3;) ze2T&rOq5%bl$4a5{`qYj_C*kX{nycOUyPGDgLd6wt%DrxV24`YV7^PvJ^WC1bGgO?}L zBlH{`X|JbP%%%tUhbPh_NnVV{{x~lF6!JdiS(2Mm~PNsqD+h~BQ;FE_kkp?ki zdEq=7oY4mJgNY=-nt&gKw{?x+hkOpTMl#Y;l3tvfGmTivPtu;Bma&t+8p(r~()n(Q; z4C5i;ZT&;g(+Wsa%S=zTB+96aFg9RKTV5k}7U$$MUl%`_U5JCH-oe7flSwx^^=QG# zG0e30YlaK@J_h>k*7b4eTp@YZ;mJXo3MXd6Hz>{oGK5p}ekpDSdUGO`q@m+m4!EAV7iS5~CEbCMHyYoezh-CJEzkzQ6J z{Cd)!)%B*9`kctWvu5PEw6`rKzmM6y82|0y*JJv3F#aOstS3gtUzjb>1k}x&tjz=C z2PkzIQjHlbYp4((a|=1!3|U>ffGfqDn^W5;FNDU5~nZBhbn{gqK7eVVtZ;Am9lwNs^LV3gex}N#H~? zDyPSpZb5>n4zLm4LG~w4R%R%Q_zPjtY}ERN3Cyd*1GTAkclrGK`uXKQ z|-c#@VM9>(~n4?LZahB#UnxNO{$J8D4KdK!FPZ+-ZWQ?w3h$=uHV(-|QM0xyT{Yjj{ z#UvwLW;mGLYzj1H3||DCPMrklOyng5x2L3}6sHu^JaWe7p{Ya@rcrhNG!9mW#`Glp znDX@Hd2`Swjj2wUfvQb~&Y!{fI`lzygeY@88Txgu+QoA`AOUrfP~!rE72~3W`r4Hg zQCPwma)rhjpM@pPV;2fZkYFK))`Zhwij7bSnV~<^zodGnr z%ffNvb5q5C4&)5_m-50UL|Z1#5lKh-0p#+nK|{N6{@CYYf;7?3gNCGLaA-sV;y_fT z{(nc9Fb;{NuQ@<;ax8Z;VZ457!ti{b@+|-Ixd41ng|i-`HjSpJu|OHQ;iPe+Otr`R zpY*AkJPYwrsk|~L|8lm&<@LH8*~))8yk2_GXnqCi5@pL@!Y|s$AdFL=U3hOMQ`=c^jxdM;>{=2Izxn)Uxx-js`4U;;cZ(75r6gCA?)9iMegWPc--0SB)k|UUZ2}KEDtqN@R zoQOJ;I6MTn;mP52HTCWteXXbzjI# zfM!Uwc#vAL1vSe!NyiOSd><*7td^S=r(zY~DUfBc<=FgQ7t8I|=7#Lj3KqWbYaPHz z*Tu@Io_kt2X@^0V-!V|4GfUa?(W~Iz<8I%qO|vg}afZ8OZe13elC%mlsGnb%BAoqI z((}}>;KfITt&t;hFIiN)d%f`28-(Qi2LISR2nUk^EbDRT-cGKHyC!Tb@t_-^su`gA zakw5a$}B_>5Fp13$9E5koaQf?zluO-f8H3vpX=#_GD#<(q0eDQ0)(;s%a zT&TEGg^s%+ThQ;d2Xib*2}sODaSpFq#*N`?h$uEHXQUA;8sc!GpixDrBIMX5ZaI5Q z_-p3$?nR;1x2z~DU3_5PuIE~xzZX>V&t1H#e&E<*fdN{Gk0ys8EnZ7jSE(=cFgV=K+o| z2ViF?ra0hW0FW@(>cB>mGi_sNAC+&lx@TkDeL?RHFK^!b@(sPwSLfVgKis(ShsWkd zUxj0_m+500e|VL4mAzsJunceJj!3t`?~UdRTsCxyIyhwKaZ7=t+QIGTuHtUvzRR8D ze!wZS9`j;Z`|u?eX+gm<{R@<&@3+d+f-egO^^sclY+Kn>MapJ+gdoabNG; z?#`L*t>MPnYM=H`Rwm{7vI9uPo4Edm?_aSD4Z@$pt` ze7xnE=$kvDZ&pU%GH>24cs9h18R^WBy=H;sX1`U&|9-u6MNO%~Q!$BRnndXTY3Yw1a zT;=HAW4+7o*jSgh@UlfkbNmo&qGZo5_bu4h9jIJ&!{EHDFWgk_HpNLJ)7H%jHe7J; z%E*zP{evNMqET-!8jAb&&JngPyKO^#LD!~fU!9S6T4?;rp$X$h*c?!YuOI&=lzIDK z9)IuN9{<$iKbtja{Nf)bkN-B%e;?>yN!a6jAMA0AAOFKTz?MN#1}q7yN;_W01zBf) z%%O0C%SQ#tqB0dwsFO$^jc;3|ee;eyJv`^=zBNG|st{+@bg$eyW9cK8b;XWes2ts= zt`q<4mIt>~XI6Fu4RTt3S$smL?$@4TWMNm40 z0>QfCvbx@?RR8pq&9%b|=lI+SM$uV3E0mhwv!z3sRWpd@A#q5;w|eV)EBR9`>pF8i z)w7Etdhs_2G~Mv#X~or`)rmb$w(Q#=JTYOUPZZBAXEP#t-vWB~ zVay@opF$Y$L~iIJIG#3PA50*-deRc!2NchrisBPfgC_COkH^MVxBSxfsug`R(};~q z=WU@;GiepUCb?x4#bN;67%WqJNtn>+c<(dj6Mg`Nbk4d&4aK>1Ge=0dl= zr_CnX0pw@N!LbYThzgFA&4*7iizxw01^%O=bu0PK{-=WOEY0%|?+L>ULz6cHMT~VI zC#Z|xnKCD@r7txvdBV78=){yz++e*V=jF*T< zgbdwG_@@Xj3rYeLGX(zua0Fn`E}~mE^-RJCj0APiVVtPHuA=N5xA60ohur*~x=Q7= zLwQ^{13g{fx`p?JFEDQ#eCI%_qOT(e4L6Z$Ok(PqJ<>;apD%Oh(F!=xia5eGc9ZVJw7Ie6a^}yH-q-5ebZhl)B9H5y%#5vrv+3@9 znlaZX9^n6g@zxQ(1eN49NCsiUFj#HH`Y36`?@LYgBa}L^A|()Eq-jn{G+@=v$;jnj zLfJ5Tc2#a(INy~KYHn=~Wu#a4luuvmqoBVlzon#TMkqzQl2Y1HT;7w7O6PW$9eF68 zKsoY6Qv5af1+!{0OY#kJYDQ{$XqrD*k?nS*1ZoSino82Me3*wFYq=R~X(s%>+S3R` zr(iYKkwfw8PK!k_s^A!6YNv~!5g}o-@|Ht+%cd8219BjAyg@YRW=2|sGy2GWb5fF7 z*hfffp7Y@T9k_oAhh7CKwgefzG8WVmx@J*O4-ZJTrX(>|CUT%n4zd{F@P*)lXA)Kf z)p8L!oQRKp!pk2a`P0eEU$}tGdruPnEa{zJh({20U4XJ>Pl+-BiM={O`Myr#YYfUm z7y`x+hcOgl3|7K65-1m(Wt})lE1M(_y#e7DbdF^(7nV2?bSqyv^eD$PwJBv9-dJP_Ru7y}@bd^eCkc8iTo)vnj@IVj=b z70PAB$NxcrH~&9?9{*f7O(vKD%1jA2+c`e+7hRr^rfY)j7sbk)hasoCMgBrnTy#wi zJdeLjx|zRCSB>w)_JL6W=SZi?<}Y(Pb=Ar;+I#?8 zM;3NL)IFXZeZ%)^UhyCQ8sW-k;2!_Ie26*2HIF!rF^E{t9KDG>2lgC$0$N?*dEA=G zPoW<7>dgZHAu?}#K;(B?tj6!*=08*3vLu<#VCDXzHyIQD226v&O#cV3Xg+KC&+sRD zDT54NE%fN3s(llp0X&!KNpX)mM5m6hh_Sx3^Me8UsCR7&ho>{v-$rqki}mwhGkPia z0}czU5OB^|CPXX9iH=w|RaX}P)Py^|DC{#S;~Xf64QjOpv2qO+LTIigP(!t z{R^I#!r8+B&#K;iG`2`~Sy^utM$>>tbOCXpHZo#f(;sEJEe->p;`O4NyqJ=oVa-lW z^~y6+y~eow*$sI{l>R~s`KH!3Z%Kh4H2j`YAe5Xt4bL-hO5j7_I`FWVUO<^P0(Z!8 zoj_Vt2qjkK2*0&m*>c8uhSp&G``8&EJg`T&iz*|a({TK3+)vNzovZ{2RhbSsyh4d` z#A@ZYDt|r0AH!|vKGO3-3FMc|*!-=^dT@M zNF_7N%(RoKSqW8#3FL2>|fm;opaSJYlPa5A&0A=^-OPKDSla2F5?xP+0XwPhO=r(2(bJ9tyOUrQ$3;&>eB-v&t2M@7x2--$r%N#{6xn z?g|q)>S}X+i>vLdD_EI9IkwSPCyL#srWR${qOboaqdeer2Ff#{udx^LA)5bX%1r*Y zbAQE(#Pp;CBdRB$tet>PoMAlIt-LN=dG3DjAw~}Ukn+FVbr8V+bt5B=F ze&)Xvg+9arWR6}HDK}x zkXYI~m$Okoe&m(2+iKfQruN#l+14Z!ANLezB5MWMf~>O4q(#>LMKh|ZW-RKrT7C5e zZk|smsPh7AP*;$`^X`IrpUQU==B9^c)kEGZWOwi?~Lp0+)=q`&_uq~5i=vwA>S`v{T zmBy#hks?D+)EDuD+Qi}jn&(Gl31-8)8hQTnx|x7xH`dpO1*;IQuWvM1O*89=u5EqO zrc3p$g3#ZboZQ?m2(9(f^l3y>Jc~OefuH5iaONThkL4+$1UZV2qwIKTh_ej_Aztt^)T^Xx;Wh65xgR_sNmO98*#9>H#9Z)^~UjTM-`btw>c^Ovi zZApu)Pp_z`_NEtj60Lkfa*jK_qOv;EQ;=p(5=zu($shB-)nChHaDEjcfH)s=7jcb& zE}(y@?HJeeKlzOV5T_b|JI`a)ElMvgEc2%4ro>x;8P0O27Z;UfdUD;SB;M%AqWj-2 z%@>ZzPjWfjKsXg(dm$sugaRo%ij|1sOiwy$J0m%ddU_H2pvx@@N;0Gw6bFzM;vTFt zxbr-qQA`4XW-ze|@Gp^G_yW+9A=a`&AZFIE3+;YVQ2Wh z0WHdMJP>!no*9J~WjXGMyThK*0-_?XM+u3il-~e%Ruhg(#5vXhO`L{L9(fi=rFwiZ zanzWjy8lVkvZm9-36%iiBH%|&0qiUBVWaVI>%xI!h@I#eUfP$|l1F7(K^~=h~pMFaBWW10pU5&a-XK{X`A1hC} zb&O&8|2Re5Dz~39pE!a11l}xN&;J1NOUDHMOi}rhltYrx4lPqU#Q(tGT%4L(-0aV; zA)#E8EnS~l(u{PRk~C{_etlMUU7j1yC*Aoq;bQrB=jo|XN(og1Et*0Z3~#RnoxfR6 z4N&&=L|t(#AYEPE-{`fc*UT-i=&4D!dmH;v6hRG9pQcRpV0$P%J=7j7nqB1~+Heu2 zmVW^B)ub8b+e{k11$=i zUBU9tAt3mntXiUdZB}$Gq|e-Wb=g_<`N`I_668iTmoS}`8&Nj!kDq&+tH3<-lQ2&i za*+Vt)CCie_OEFKNXT<``e=;+k!qY^PK-D1Htvp#OArOCC?W}SmvNWToS2kg9F5x; zX8@AdihxmE+-~D5vL4Mag$N(|$r1Grr(7ETpGcLq6H=nA=VdlB2LZ(d4NmEnNknrn zyA$GhE>xNu$o9IclB*CfaV5CaCey5(FzZEw#9BD+vSZ%oL`e^ygqnP-76d>jn-_9R znwm=R^P=|3XQh>7+wIvUX+=#YQ*+VSZ_OrClk!vcS^B*8^RX?vI4!L>+g6&JTN?Ww z{KrWnLL&T1=tmxA**`J$ick$jRpAL_+{9<2z^yY8n9aqg*)Gie+hQXs>&}%|DCZ2i zKk$5<^at?$h|;0I4tlGD^iB)d6uK|=1F3+}hIkI>XCMTb`VFpAGcd^`>k-AXSO4wb zf4W*f@~c08dgYa$zWu8a{hFWt_HW8!JF0vn1sn1lj=Y9oQlLK9jvW0F=_UPj@=j4N zK>yV3ReLz=_KxM`Zlo)oWw-tc@u{h9)X;=t6jiEnhCC<229N>_&_oroX6a0) zl!4{DwuFL(?dcz+x8ya}8H|#*t+23V&p|9oe!2yoA2~-36%_^xJW6IpXNwXs)@J*Q zD$B!SQGM9ruwW;Wx)K9@?hl*2UT?q~$jwIY9|rGZsf?<8AdN2DJ01lH(7cd6a+@JNr@+;- z3>8CiGpo^tMR|Sx^o-&R3tR;9teTcNdg+=td!ljUiu~#2>8|{6t}$`xax)?dPfefQ zGYzs5wPK`Y+!MMRutyT9rVa|Z;nZQJ_PNc7UI=WIq*I9k@~h0KLxhit=t+!nyD*Kb zVthb%yMh*z$!ay3Eb{xxHvaHYv}`pYL>r~u_dz?7$v`-fD~Ew60Hebr7vd!fpCH*9 zD^aO3D_n1?b%SNK#Yj{>VZp$_0{WTVN&j}r|2?{RaKnZ{R9e_OGJoExRrBVL(AmiC z1kc?kzmL6x_^=(hmT-(>rov3ZyRcT_7^RBHqv296nS*m=+X8CGR|)`(8&-_vEc|^) zVii+63tO69RWEWIo4*G+AEMcvlhV=C)8ffXNrXkCOKL0Z zTm1&-Lxr;{(_MCrm+#Wu10Q`B2fUrvZYH-M!M}01 zQvC~K4S#q+x1XFflPPD>2LO^Z9XN0#jRrkx>yGMi}r#lv*nPx+?fX?)reg z)^D3WEw4SrWip_*%Z$QVJ#+l7q8Kz@ zF2E9sBDWAP03*V6%86Yzv>dXLUlcvpqJ|=tDf)1;5Phf9(=f_h*Ez$1!jK`pqoBIQ zRaxfB&9J#ji*o8+E)z;kU|f}@6=j_rkx0|DByVXZaa6uv`89tSFnM*1d^5(#Dma2B z6lVleVPJ^2gF>JRJi0MSRbJbOmAT#3(NX`1F`|??uC+9T;@#+tF3DC)X^qVlXOu6l ztdnH3q-&^GBK%=kee~Qe?4t_ZZrFyP4a74ZYll~VMp6PSGV)GPOSd6*IFk36Vx1D# z<#52!LQA6YFgTk7E%mr?LZlk_UC&+P^UYeDX=(1o`f^?C^9xUY3 z&_nqq{hb!&9bYCIm%@UlF|~s~9>m^GqDTXnl-v=j7tX6DMT*&o{ESCnLi~dd*dDML zgsYJ}gY~=yMUk1nGANJe;`R8CpKH+WdkFVU;ot*JvBo3Lgz3VY+JOSK6R4hc}JK38owe1SXx)2zrUb7{vrG8yg4O42m(h zr&#>d2Q-echbzxShat^j1ALXigS}q#5+|In*Gp@B?gVNd%{uoYI)cTNcEbdkWy4(`$xSckX+<&&!(PVYWXwu6+49V z2Y+9J)rv+QdW+5DPRmY9_9WX}woEfGIs#UwH6U-=+PBJ^}js#0GVnU*vVNY;7Y(|sA;Z96Sb~@q{P(oFNgOg$(hYEGu z-bag0K^Z!d1oCc>hUv4b4fvu#Y84;vuL%7*Ex#hAcwSSEJuq!?MR&hlZY*ociqEK9 zP*uHTT29{}?jM0Y|AJ=EpKr6u?W)Z>*%n2j^0+N3lPOxI*`oWH6{^~z3z&I|!Gbps z=#`t0BOZ_QzKQD&&#odU5aIxkP4a3?ht_ZyImbwx9DoL>wQY$uuY!pM2QwOWfEb#_oLPEj93+LGj z7Vhuu+_SJK(kFLE);A7qtG@jq`^g6yw=Qnb>ni$pclKYoq(mOszd5Bg&45Y@z7}u8 zP+JbBxE-=@l+hrabe`0dWCWd|>8NvODiB!>K;M`#S+_GG-JGsYaY8kEuVt*viPsXK zVwH!tKD?!-?t+IlDTnx-+n(IrRKN4oZe`2mN3C`$$l7^$O(QDlWQI3hJGcLqO<`$f z%LkF?XQdq>N2 za&3eSf}={zvjZ3}A>#*92y6vQL1NY?>-WRpHB`|&4|8CanA#?r2a{Oo@Iy%yjUC9# ziy8@}z39@BhD`_$?06n>!Ro;$VZ0*x=90yN6+5q9c=V%3hK3&h?1q+YYnK%XJe6Mb zw)h0WWJs?`S-uQ?|MWF$?^t*2!v~iwJ@L-L1qVl$7E?_5395HDe401jf1Edbf0fN& zo#QD_X&;@Fn}F6)ybx!+@zUKo2{agbN>PsAqbN@r(7pU29jvBVsbzA z;u}Vl8;$=^becuoT}G0{R(KH%oZf4oniA+`LC%yADk(5uVr2*}fA~L@LqC1v&7bkd zlr8J--(36l8~o0*pW21zzxU81&&VTR9tsT|?SJAKB)O`*zZqk>4`Wel@`1WINujD> zBr4JpN14_Xg%Cz+HI-aGK#yWS;(cdd6~wg2pzxiu?;<5nxZf#UO%4^T(}n2S^S*o~ z7srLTns6n!l(luo0ne^D>{G3 zeTpdqATKaY8$N}=_1#xIv--lHUe_Q0)tfnkJFZ@M?Crbe&%NzWR|7yk&!m%@#opWA z+&}M<;f|6tJ@nSr%U`>8cF&E!zC^gj*HY>k`GNA$Bey6|t?0V>4_BkaP4FQ;{^@1O z{sMn8ncduB$cd1AkZUCiJq?6PM1mSemC{MgM78uuT?eDPuD-UcgwkORILXUbX7`QP6|1?M-O*xdwzd=>55y|4j<_cQUmm>UT%YVVklj5&8l_x zj8@OsbMK-*{9(t_dz;%XdSdZMP?G%YFuIr4T)v)^2lOm zBz~eSkY8dvrOLft$i11|v~W0#sx1{zxj3A7ka;taYJ#S)dh$4^e2fDZh5uxRuZ_0s zfCS7ba|Cl)FF8hau+9Yeh7ComKDun#ljrW5xo`clLg73i`JPVa@&>)GrB5o# zJxtWuaw@X;lZe(UB?tyMnV`InH=Z7``l@m~C6fdt_S(4!&eh+^yPz4n2`y*?ii*|> zCJ;Z22B zfW*Z8-oqSU!u~5#c@c$LVTa?y!=JJJsIxqt0IQFjuGDftBsIcf3FHL>nXFYcJH0Sb znz3G&r5H;IGf$G|ShVCI|@$_E36wRiUymG0mQw zZ5N)7OH2TMEZ*VHbdS2-!fS#7zEW#VJv>4N*qJaT!G4zq+R$Fkd?$N4K* zX|M4jZxb@yqRDPm7X2(8x({Ryj9%D0=aOYj@ku?KuAH&>#iseW9=Ul&~&0W6i z(7e_QH};{3|Cfj25_mtlRh5>nxOQ;l`k|86{V(hjFFAV=ik3|a?>oJl-e2&{C2f^U z56qDOEFl@ORr(ln@p03`37Ho7{Ky-DLS{gy6v7i|q0l^Ad?pd8t0);HLfg`z!xlJ5jf0G?Jan|}Gts&QuAC%F-c)-B%4qo@ zLXY}Hz6rV?>E!vOO`stv#wFr>f`vVRX0p^|Rg)v@MotmL2Em}l^@=emayODE50O6cl}~z09=!LDmmm1!eamEFV^puW>O;~mJ`|q6 zM>%(LDNCX>I&c51$EDe+^{pHeGHO@=#NczwsKH!WOv)2lmnyn1tQ@6E4@e{+>~R{Cd7Z%&&#u<-Ub zFTVKA+ZWR7uAk2Kw9c3ltVQC2+c5aVL%@+(QW>ea2rTGGbDC6mnb zMpIsVE^2kf@o}t{f@U0&5yi|y)*5XJ%h0y!{%zqu{fRoezVnZ^3m;jdyyc#x_X_Ll zR$bZs+zSzd82{r}7GAfuK5}9TrI+#Od*>3RO_1Mlh!p^RLKO)vz>&>!I^YoioMY3# zagE>+8^6;F;qCQjvXeS$(RwG!X$OF(s)Y*)&haU$?%US%`(G-riJQ>d+YtG?!Qx1F z{JY!D7yR!1mYv^S5tn4(|Fv{r|GWq9`to)Z`Pv$1Hj2t@`QW+lJ&D#*m4cMOupHC_ z=|SwL77nLrOD5C_C_W^SF%zavFntFJthLpF9G4?YBImzqNntqAI;040!RN*F2&k)# zfSogAigeXS+wNF7aCBK&c=cshUbZ@1wdSUwmQ~%=K^Iyyh>~y4lFjWak8iBiE*CGl zthc(ir8v_8+_t22v{Vo7nYM6SPjzYK>`n8!_79dP2MPkoa2(`MD^9K)K0JTHwz)N- z$~mJwO(dP5E)gNaT7u~uIG<(=~KOC}rrpcv1k zsw1DQ-G3NOq4fy~Hy)9H=7c86Q(rv!E{vy+^vF0AF9_J+i-9shRtY_m5o7Evtvu~C zoW(p>oSz%?q*;^9C}7LikvS=AXbx6Sk2<4js3TH1Xw3sCZ)_+dZP|&+a6JFXhNmv=SpCSKcJ2DpBda?ueQE>$NxU+glxLqbCFqD$vJr2O{3 zpWWA7G;-%A@vmo{n{HYhXu0T_5BT(Z(Vwo!7zZDd>dW`x$W4c=$RMnr-Gct-WO-;j z8r_AgDU;P6#O_0QD5}?K&I^4s%RnopDgHWd`8018b55j{q|^=gmF4cpr_^x!4MUQw zOEgITXz5bj55~Az4UsjGhlP1!jv?YtaK!`7z~~7rTIykZjJON@3@kVZWdTJl`jP$( zuF=?;sh)_Ef@7KdQZo_MYy_lsfLrND>MKucm$fbKANPk9Ip?Q%GXcj5U{cZFu6swu&7u z9PZNz&a)@QZK51`M{H?Wd$ecpyBE&%mWML{$#&O;vf6eWUo`vj6?Jkv3TZkelw*th znbC0%=8(#T{orIrmZlDA$g;$kNk#Oc-=hE zf8x?^bxq_@Q~At&cQ1_g@Tx&d2Iz}9kw4La^RAKlz!gLFrGPAaO-6%$h%@Rq;{ud^ z#{%iNA?(7a<3{r_LUc4XWLdHum}O29>nooP2{_4mp3>H?$YHiN+RxBBhIEcUPOzBg zT)Jtv`0EVp=V4%XE6>OCEC0wZ_~}GL*%oNXozkp+5nc=9TXAt8tMh*E+<)o+h_x)G zJ_n_|Y{0YuNWgZ3e}lO;AdrX$)ud2rN*~=@ez-U+7Dq74NQv~(71f--IFBf%iT_9I zj*z!li=6~?*TExR(^+Jjd-)3poeqQC;P(4jx( zhyKsz+I2S#b|1ZDM{V5&$Rl2Q{DScIkCYq#hP>{?wZD5GhwAWsJDT&mM_V(R*3Bts z-Sfc8Yn6Ze;Rv=hZ@V2lb%l5hc1FpU~F10bX2UvZYNIx07+h0ygn8q z9n-!iC9d-0x##ZKROj(T^Dlocmq+uO)y#6D(=o`OdaS#H>mdugz04EOGUjSwwW`NI z;!G;Fz}>9YTaU9lH$W(^n3g~iN|aE*Oe;4Njk846fg)6?N3o_dCs5P$F&GhG0+c-t z2`kpzx3$67*gL$jdfxGUvm3VF$G=ce(7Nf`IrHw?*V(-5(Ty7)-5u`Sch|f**KBSr zC^TX*vhv$5xPH!@Yqzu(_z+iva`%!%o}Z)zk5-u$1`nU_xzU8JcAKyGY`JL zRiH@*MP}forKN$$*Iay1j0l9zmWHhq?0CDy0ey^+U9y^_6HV%_#BQdk(-}v-c)il9 z4coHoGX-d7`nuA!%g#dNioc{&&TzI&{G|8DjR^@Tw(K~(zn2a>xzi~bO<$g3Jk3Lg zc>&{!2Tuc!gTNaC9bjr1J??qt^wF?ph|%Qu*rtT5M3qB$x+YeuvQ;Nj5itKqKhgGP zNcz#)`e?-;<=tozpm*POi!Zs~6@L7Dw8+nyGttsNXPm=rK90q`=z*SLPz(hd` z7+XM?H$OeNVe5;Q zFUy$j%+>)KkhBNu5C@DJv`J_l1{{7&_uzR}{f1nPOerJNjoEHYHcoB3(IUiJZ>F!c z-rjweZyht=gl8t3Z;{2qy>{V;F$SE#Erb5(##jv~$}(^&0g5GrpjxXeRTb<;102UF z?ha8OElfmqM>74+uE7x$Jp)j*2)XECi_vKG7(EsndfXtHHZCp=CQ>wsm8qLxcL-0H z&CAkhy$z^^Yqui!iV&A-i&KL{r zOw2-J^6bozyWuwtQnbv+qDU~+fHr}Wf&^sfTx1uZK$wp8kK)vpXhANBFqI|fActv= zh032#@bCg~gjlBP_GZ{^7cY04OvlNo+ikKsJnliad(f8Zu$zPLL5`m8RiCB-Z} z=TwfG_|@>~UKy8!rUdZm;y~7$O~Mvb?B1FP)LEiAvYw579@d0ps+IGFy#NdlMn=u% z!8$;l)V%T#q;_V+&@d-UPLt^@STsgjD)->=lf)$G^#8{=_Izx?gP@OE<3Nkskh>A& zfpe};t4Je+)Go_q&HO+On6?^uSiEoIrn$*CHXk;fCb!^u-TKIXohacdvPo3&_U(E ze2CYg8W;{FG65OtnMrnNi<(mfLCw^#56ZJ{OU!4YW>}7H{4w< zNe086ce;5&QGT>){;UH}tor*0yVqroZ2QN#bgr_{`XR{oL@> z^UZ+7U<$$4PBk675{b9+5b^mGb2O?GB%R^gC-`ks6Mhou`r3KP$61V9;7ViW1zm6A zI_CJYfk2sZu(S}wBi}wwAW*(>34lWR+F?ptT0T&Db`NR>E|=rEX%ye804Ay+h0soL zN`a(+V-H7p3T&eh7lE|A03wphdh;C&9ni zdf}6sww~M*MpB(5ISX^#t(TnMLB#@#{kv+HwdFAV4t7d*xWAI-E1=)t-^I)2sKgXhVq+jKspbLgZfdBEp9Tzm04PQUpdu&xr(~66pL4rzATW`UPk%rXj zCENFGUsByPdeg!+cdV(X8@+o~)yg@=DdF{VQ<^(wc=_KX&)<3HiUoJO(OYVuw78ojiYF!D zE8fXpp`ga(4^o)ue|T?dGVo8`o6;BjNR}7%EaOo1`NxcY;*crC>4VEa6c(USBDSqw zB;gmeW@Dy@r%(DA%3jD4ff&_KL&;?SgiTqtV7A2(KzK1NUoDzQA!`;r0Bjm^5lvJ` zof$K@Dl7rGP(uF}Y+qiN-slj7_~cwqd4F>bzeKrb-}dY#wrTZsp*0uW8~>OTp1-F% zU@{>~UvKcv*f#G*`&lk(gI#_(faIDV_8Itv;;~0_xzSUOBvkk%Et*cg9B3~qn9_xn z(V}(H{WA5O&P$mMbaITl+WTa9t6m|fN2S0UmSasxQgNJZNf z7G3=P_uPA*50$5=?58_x0qTI>bGN^9%k0hzI{o5nkt2`1_~IkHU9I;SamvRdtJNx? z$_Mnf;zgIt6}HmZr`#;QB>n}}RdQ*+W?L;|eiMuv>I3;r*!;+El9roK2ZO6oj@Hc{ z_nMfaPLp5uJ$BF0)%6AQwsth_T0fALwP@Y0aL3+(iu!d|pLk{ogo-DB-NmTTqcv)>Grjo42RC_x8iPR?f>%UXklr{vOXg19f5$d#r$L^DLg%k!G)^i$L)h zN4czwT3}$GoPa-xf$u3BNL6&zW|FENjOst|?l3^Ii=77WPU#%KEHb(i`Cl87;;l+j zLcG~-6m(Yf+E(n=G*8eyk&^_sWae)*7?e2xf+rXhgJj@;pA;YYQW_a&CZZl!b?yuF zcsmFr*kxgJaZzCbke_askt`H7(wqv>&ZIgslt%#H&>|G0fD5RiA zqcfRKuiPrc8O;2lwll^b)WoOd)dm@EW$xnSx)+T<;xEaVSqZBX0?(9DQ!Kn4XN$8X zoxL5^jUIetj;-tJ^n&z6cDcUkhAwN**^1c>7$E8fD>oy1?=RrOFnO2ra-HzG!oN)9 zP+JRu31R4vOd2H%Vl{B7fgFcF=x2u;f=hI)tK%n!6SPJawbr%~)lZ3WluH%jpuv^j zHqsU?2wXEbv&vSpy1BBaGR5sG?kKBUUgfrh+6HR1I>IZaEe+?`VRKol>g!89(UQQ< ztUP;d9R;hudReNbsCIRgY|qVdPQUo%`t?s-*q&a5#_I4kYkLj6U`A95)q-<)L6-*A z8rB?Comgg`tUr>`x?1WCW?M-$qxpWlY8IG^x2IH--`qHftEW=c9*z7%{@Em+UVH9i z;Wt>TMh-FJh780Hu_?#3UM*UT;6+u1FDuyvgnBIaFB%M1vBT;zjYp1|<|h2c)6_Aq zv};#SZfNe>jcezIay!?xH1^hH8c>6*?!sBqxAYWfR|1`zX3Q9A_8CM-+SCG%C3pJL ziiU+vMZw&Pj!CTM{>zF*yd=0nPXl4laX%`GYp;Y46f; zS`_^%LceHt8gm02rc-W>j@^!$%wf5)S(Z;r*8Wn;Ee4r#Xt z3R6x^m8~2}H7X8KJvYYiX6o^&9VWtp%*AEB%fDlO%mB@kpQAjHTu|%HZ_H0I#80L7 z)_QXX*9&i<}+S~RS-M|@>%1$JaUyi&LHe0>-61;4CevDhcVaY=}Ip>P0LUZrgT zcw3Wyg#KmtThf!psjJts%J>uw(})^Si8L*rkG{T#>$ z5QQ%*JuNlG?KH<5^+@k2=8LI*yc{K`*5_yJ$k4PAm58dn!GD*L5y=e8yk)B1QC9Rw zl%jb}1*y!o$Pd*dX%zg&1=|pLMKtk`|H;UhZ%^^0NGKtjti`9Q;78euy_UlT!U$&~ z16z#;Go^wtMD%dZ3Ir!K!epGFBC@F9osGRh@g zqA)2oj9Tb=jCDLX4EgQiT!6U|7%iB^0^*co|%e_D6f;NiuEwQH{Jo3(nH-w5I3 zX`Z<-wEXrBb;UzBuDnEP)rqg!BX8&ohO&W+<_ui3vWm$Yl2CQ)Z&}iP`B0^hi#h?2 zKQ`1hdKF`Crnt5j5=PZ=fW{jOZnNcP#{!_n&EY20v!?#9YQ;MWS*wvN7)WYdMzw(n zg9CY>9*d~|LrU9Nq+7Tj^c`Bf1k)%QzIFYa)r~1BRSW7fi;y$Sa3t+{ErYeGsna$u zTy^#0yu98^7w*;ZcSOD?>=a)i>aPs6Ew8Oz)m35Cc?xR0+4Y4fdg#?UB+Fz}wC4C4 z%e;C+$;`p3>Vf8LgF(mNs$uW@fsg$w=37Pll9y{$>*;D*9XY8rApovn>L-f3X4$3% zi-O}Rm8vyJQ)4k?XG|y`;pXuWG9^pDQaPC4d!WCluy6l@>fx@sM8xw2+}hW^cKX~s zb8~||d*&_~wQjHn?HvYTt{GNctJ#!4du_OB`{F8BPN56CPT+I$edWEQ^>xD?xoLX- zFe1n%6POw2`Ucp%N3loaP;nZu5EF9P3G+|>3y7Uq%s=)jrb(D1hWRhZ%g*{H%s(@E z)%649Keky-V1MP(i)Qv6UD;raxRP22*4K>OJz7uBirI%&)WVhjCC?*jxp?l*?mW0N z_-mJ5H&R}``kH?J*N#HJd-}l__pCp8@${Ey4ZXO z8@iF79ySfN2~vCmZ%!bw9glOZ0iR1SO9{i!W(3hJ3?~|qYHrXa!Eu9)iqk4?01W~# z;rMt{KW8$5gW-~=RsrhaNCs~m(l6pAQ#{!GpS; zmM-a?-_t#(v$m$XDpXon5cGS}OfHj4%jmE|2XblVTN96-;|QSY&#x`ZVqOB3iG!F{ zGn2FzlHRD?rpsnsO9($fg+mZD)44)tDu<8tcV4w=y3AKE-hR=A6@{~FePUC7_m=51 zwshsu>+~(%`C`wA+`Q@5CBrwbuGqOtzh!Yvo5ho#+B&0X;qKYZ>+(K|)4fz!T)c31 zXW4?BvT)*5mgE1GjeL-YFCd3m$fH*2qF?N=g!-IF}_@^Te2s?F3D}O`f(B<7rZdqSv z@!<5Ynl=5mq9AN3b2?(T~?zZs?;#Pp*K(&zi69{Z}~<)N<4C1b2?|X zwh;E$lji)t)O~k+TxXT`eeaz_V2lu&~R=Zh(blfenc@{+{#Rd#6Zp3hX~$ez85$-164* zp7NaM*f2oJESVQoQgC@Nc(IHm)g($IL)l?djV1+qj^Ges-LMdSt6YUa&F$s=!3zF?^H*|Vd0W(~?sVm3Ty>R{f__>Xhl^f5E&0oK{$CX21hR$P^ zmZF25lgBo6=H_?0rfOORk3gJpmOUJuJ)w}5De=SIqG?}~3t z-a2t`2B;Y>scAivU?mSn>L*wBiJz9Fm2vUgM^+mGM@UPPK4v4e?b0;n?BVb!@e6#v zlnd8|jK%q>v`xqfuUoU2Br{x0?Z>g zGh>VHD0B^#^FO^ppzNU!|MXDi-CASSMwr#KNF zJ5Mowg7qdymD%wVBs~;$7hqm+US9r#?j-hq5>Qv|!k$oSC|FsVmkW0o5Lu|p9*H#P z@DmeOFH&u2yblaO!&G?M4iZlrF3=c2)P02u;2}x%6~J!>Wr09B-ni(pKkf+Ri44(L z^O_J@P`WABljdA?>_r36kJg!?b;pFxoH4$&!q{_8%!$OL=RX`9O{1fY>lOFuPD=m6 z$Ei~QJ5L+>+1c7sUcv{-KZ0e2^M)ddurFxdArLvbj5|a?oH;Yq-&;V5d0@RTp&#RQy?Xxp;I)J=L2MymP7-hI?k< zSs<=DvOlEjF$STko9^E`z9e3#S-^k5GI}r+(Qc>f@ zEx1BCsma9Mz+0-iv^estFvG(uf2+V;xHqsaWj_XawvbL#lhQuF+_K@$#p=dgcT6}Z z?%35>zUlnT=!uCE>_BNVS-aJnPWKL-U2IDTzs@p@O$(<7+K}G7#7Wq@AHy0; zf(ID(djU*#zt0KG3lr+%u#9}Q$>w`3ma)j^hg+T_5lWdHWZ)XL>U>$dlhi;SAJl_Q zAKDoSxwGcH=G^MOQhVG6O43;Zq4G3ewvAjfl6`Sjjli!wmze17T4-c#(XDe=%A239 znG3lAI>4$Bg(3J56R{@rLLT8rlc5y@6bSPL^p=2TX@spLFR(l~INFkLby-r~mNYIc zxxdg_z})BzoQM)EQwl|@NWY+%&;5iy3|ER@`RDL5_aOf9U%vMg`4B(E{^dh@bJ9m% zMO_NG3fb>3EtB_9EU~e(MlEs7Cxy=-hx;MutQPGz5reFzxCrbQR?Q>n6dHm11bOXB z8j`HS(#D4yjB3aFz1f**Hl+Aj7}D;k+_235!WqZ_PnKmEpMYp^2ys-JAL_>AwHsR9 z*B_{zZ}R}3AwHVd>OOip*kgd*XD&5TADYu zvq-CHIfwBZJ zQ6y(HM<((_Th2uZfEIRfgV2!f@fKK|`PCe12}2B4Sdgbu@vRAy3}}t$KA=k5F?%Fv z7k`!4=?$maYxBidO_$z>_`&OWE!iv2id%?Gw`IrK&f#<0+Y+Qileuf(?GwH4+1KGH zXvn`TKH%x`hS5Az0t{QU($$uiRyZ}cxoZC0WT1TJSYOKIO`C&-bGL4--ZD2CAdn_# zGcW&__$wYiITtcnxy@0|G>UrVB04_~o!S8{Jt~Tn(0|ma4~8RrI~8*|IczE3N7sPz z9oDpF3S=*k6f}6zFQE|`5dq05D&cz&E|Ex(lk#CAP5>PM&~b4Qw$oMH-P>L3s@!nx zP~Fl*OA2I$rg&(7SI5!WO69v4eMdUjv9Y79u%v0Sx$pQ)xzkr-*JvO|3Wl%hZJKB- zF0ANW=nBMWI!rhdJ|W$qy$IX%Zkcy9572FJ3V|nByA_rxVrSTlTj3Vt_6~yVihYv@ z+eSQm#fuSOf_|^p>4~3j^>r8;M4B))b9g)zLYM;=nt(O{zpMObrrZs+W|B;4LdbBt z$crL4skQkN|# zl!SUVA3!_@2M(xa1p=vN5}Osk5m)#c1ej=SwvY`-gcrr-(^VAfdWZ;3m)ZEdYC5Pm z2wV7007bYK zkQvIwHw?vimFv*{_$y>Ihg)!4e0GP=LTC;v;I{D~1mwjK0D+S($WVl}&;#~g&zp@G zqv!+e#Y@NH5eHekiz@5@ok72ParTq#ZxuYDc+4%D8O7Yf;9nPWE1UOb<7#7`qi*Al zaynBW+wSIPW)($&ON%n>sVO?42Wx;LqG%2WjtGOGhpb8t=I4RRk}`!U4@AkhHu6J7 z@AuV$vz2_Ee6Mnpmz5tor~~z{b$iAtHjK?Krl*Qu2~Ve97F->9qG+kEcUUryY$@+8 zcUDdwZ2AR1gxGn#Su9Q|Z5^-fo!z^+V$uf=pkmQ#Ox77p8gp{Fd$wlp;jD@_Z{191 zWoo!E#b!)3N@t0a0WmD`4vgIzJT5weJ@htsT=9;TFN%S14*NN>8H??3va|1F3}~%k zoUY+#FIBCG;&J(7*TLgT*R0HeQ{xF14vW&O;a0L?uK_;t35<0jfE>tPMtc<9m-e`< zj!1*S%78bJq9urjdN2^zaAZs)VIW7EP6-k@#QUy&=~PSE)Y0yRS?Bh>183%|I&XgE z#`9l0-(EO!xED?oZO`s*chiX%uQP}fw|{=`hDT5K9=_`MwSCtjNHkt1s69q@%33|w2~2c=BCK#>D~{Ecjm0_*EvPJp?;=sgr(co*-X zXg@MK(R3VAvUL*ItM$4dpqIig#LzL3Agpu*`W z`K(r`bruAyK6}1}w27dMms8=eb{lO+#InKq!=a%qGIkaxC3usOD1c19-vKz6-#lGy zNjEw2w(S>7*rGk-r@6U)dg0sy4Ag) z%rV~dkWXDd=orkKn8n8LQ7@Fin9v#W^XMQ(F1NgVGOxURP`Js$+#oy66*-yfnnmMW zc}*-zc{SBw__R*8eG51UjG~ zE+;S(l^{ofwRtlH#S&%?MapDQ4t-RRw(9vUPh82{-7ceUqc_nM{uS?}$$Z!Eq-m{; zG*m!ECjHb~^;T_ds62WT;2SbB7w!nn)-`u4x5!hSo(t_K*PrY6x{)}RlTTWrHPw?y znO<^*JL0@1F+ua}j>-^J$H|4PC}Zq@%sEL^T<<%FPl%?~%*<%gn2eg`n4M=b8Rio) z^?R?dX%p0yFVB4?J%gEy;6;vzXhf-FpP}yIm^*0!{IzeVRq&U+ot8pvwC}49m{qM; zPS8l>L)Fncm6K!b&W{d&dY`-~vT{+|q^z_s;Bn^!bAvIGAPEq}D;^|V5)k+@uC~g$ z@*sarZNBK5h@K#{R3Xqf_noQeGs-!QCy&t2u>VDmvk%PQr?xF?r*SwV$ z%e#LoEtFtvTX|n~!1PV6+v7-sLltZ8GU~L%e1P#WQHn`qz|?!>1>$nKoK9DZtA(Nw z6gw&@h5*S2FI=w2WotAho*|V{);gLq+VbYysFaG;}&)N;Gun{P>mJ7$$Yjmdg>H_AF~8aO8GsJkY?B*E}BsG9|#?6|d&2rtLt zfO3brTVn2^w*Qr{rEb34*V4wQUb8XYqR&Z@Hiv?dRZZREhG?|U@sEhyC7%LV(@hOz zW`dJASXn`~!e6weWzABtBGO{ah__qHq-?IdqB#cR0{(?q>*DR!u&jl0lS3=T+8nwh ztlK)Fjs4Se4rbD;I%roCelX}whGh#&PKKZ`o4HuUC%s-_86b)d!7!HqtrS@T^n(It zO-TfVnFtjW3$lS8rq!FYZ}%|mT!H}x+>U|RC(si6UuzC6w!f}9wDejdqXWpbpq+Y$ zV-)RGs5$Zk44+mo05YL6o?Q81k^AN4m|tHn2=#6CZLQ6i!8(cnl$RD3@FhuRO)5mK ziyJXSwfp#jBLiohrRnY3-pWlOgW)?zt`$o=Rr^O>Y;Pf5 zV+2VX6+*kW!J5GtoMlGRs} zWkaMZjL?R-9&y>N>t7pkt-ef;CsfywSlw=r_9T%5@7#C!~$jNh| z+kv@Q5Plc3*W}=|WD}SSi2-ukKiDN26?j59*WQhDCPq#m{)1r-*0KUt0QoH+WMp~7 zPe~zEWM-I(yPLxs*1dzKC4g5L7`!T|2!)Wnfo;9g^&#(?OX1(b{|hm9$kUU$al`o7 zKtD|p&5}0(n~k9^&f84X+fAO5IU1cq-7K&w(K&o%!I=_k_E9At}*l8y{>1pHv4DdK3$G_Fg@QLg zLBe_^>?3e#tN3B49HUGi84qv;?jSCggIM)~(p%BK5PlP(!8pw7FE15Gp{mmx?&4ex z3Xc-U1bC^fD&J5ZBi<+;*~QSSu+3=X+D}RCM0UxO+F?Y};48#WG|D={O6UnRfwBLG z&KLJT_hRMJeLHtO5~};){yiVuSNqCK2VZQ*KCA3vI*-Q8-ID6~o$w1`4UAv_`I+ey>tgt)Z8Q z1rA4n!ZK4;Jh?;+R5&jJ4(5baapV#xB7wZa3XFG=;0@&yY7Pj>^#&L@u5$gZSTGdE zm;jVY`7R~X(C5Dz``p#KxpQ4Yq|Nusgh+GmsobJcA07U59QDzQM~V8VzJ&JU$;&}$ zGhe$s0+7p1dCAy|l?=H#!0$pvOF;H1brT37q%7ux8X)_+I?79Zo^%INmr@wWJYp(W zQH_Z-hD9OoQ7YFL#lFc|am4C@D!?(Bb7HV_SGU_<*yJznZmdYFXM?<-GV#;RXVa?N zhRaI3OB}_c``bJnxh9KIG-`}StLfJFQc@*4Y{;(aEpnle84JRgYKilyRyY_+^k;C+r&VSeIg1Hh26s8mOU ztryXM;CxpJgteelAiU!dsj>25EhhC7;@&_1ItodZ<(lT-z=e^5y$H;w0|OEC@iC#r z5g}Rzsq{R$4*`eD2o&k%9$Mi3L2DIQw|i@dT~>>{HNA`9eesl6@q$mfCd!2I=0i~t z_zBD!`V^Z7+)myQE%PE57^PxCK0s98oXJd;D+=ua5`ig&)Ldz-(dU;A8Jl<9KHGooLJeS>4NEryDH{QFq0rH`H?(SW6RomaYkP4sD!~1H9sO03!=X)Y>#`bGpJb|3xHGTU3Ket&F z_FVphHW@N08CjY@<&Lzsw$v0k9mz(m1Xc;o!~&{A9IpgARu5N9E@6&AI#*CsTvX`e zYJ!bm@f>aJ*K&2MnMG1_OEny)TgqaEEY4a7=-LT;OduOan&Uc)r*?R$b?b$lHBi}~ z%nRlW4cwyFk;LiRH__m=piswe^1pSTlEtmziQXUnp66ls$ve{WGf;Af$XA9kyL-E8 zT%9LBy35y{cT-~GkF>OpVmR*3kHZ9`4{mM%Z(p1ykXjg$V&`i){*Uc*?qf21v- zvN3tuHq{eJlg(tP?42!Z+TQC|nVd?xXA0f@t!2D_r^4?6Upt*o!$NPUD;-Asa4SEb z%0UnWRWbIAQr8FUdOEE*V3GG7+zNXN) zf?Nmf0{>nf3x~9<`k7E6pdwQO>?)pUMB)Mt2StsRl{#68ktku`pOulCVm9e@LItZ(mAYCS z&>--Gtx1ERPB_(tR85y0Q5^$@Aa_#&`w@ZsMgx`hg>^aZaHdvW6~Vp zO(T*Ws%XyG`<%I{`IULKeYwuTjTvr`OXhm({Wf>TaCkh$tY>#YG9$Lb?$Dc4!sEvB zZ9Z3HNyg-0!M5_dZw&4%DeNds&keS_OST8^lj@T$h0Q3kmuQw)(xtD_K1{?u{GRj! z1~bIV;)Vk?n(Q`NrkQ>=^uoeilh7ZlO2?V8LF z$889Q0?>ZUkzsY0Wu=$o+cO-)E2-Yn24A`$hj8kA^Q> z@&a{%EK|C#q12oD2M}h0xX0`3_T*Oi?5X)xZeNe@H2Zuu2xxQ~Q*usmR(Sil!u~>k zW5AwX+?Zd`TW|w=D6=Rx#iY?$a!a$rClV9%W~%?dgr|XhzX|i`pbV!pIC?ON6gwg? zI{d-B&<`osaH`>NFc5jIUJDW80gBI;9^6+-#R_ap=_aRp5|oOMU37W|mWRNxD82f| zm&GcXLQy=ja+{o5AihTLCXDwzkQF`w>;qX)9;}p;fx|OuP9h9Q{v%3WIQ zqHNAlN?=&AL_pLZ+PlWK-w3ciwzi`)cZuE}g zx8!=yLlJ7K(#TaBp5zg$*PwI}9Ij-GQ(0wKLxaIOng-CrI8^PWcw0wD*dQJ+|VUyR@P?Qn$vj4k6lq$3?!E0B7 zaX^iR=Tb4{Gz!$a6ihfQO=V5;vXuCh$cSZxF9iH*?m4$LpOP;XS0Zf=D6ZK3X%4Z3 zr^z|h#JKRIyu#R@-Y_YtZ~Wc2O7F$HD}__ffzCy%zB|Bk*|ma1dKDTG0qJ7t;oMXb z<9Q{tfS}Xs4n?oO;-#Fv0MwdP^2x6-!c?+KnZ7{Q9cYN-j3$`~iwbpM0x0nbv@oLn zEoou)!)<$h*yX`)oi?gK3W-QJ~(Ei9Lr7|TD-t>vAK}as`VHmL4 z-J^5mM{i6?Xqwzv)3rQYkvC%fbhcBLoND3vgHD-gCZZPgj2Vrd#Jo zsD0$wqM36us(3rTNBj-i!DTCNdoi`W2oChvwiC`;X?9e;77N9^?Ou!0c3H%}P0O8c z-);!u@``ubZmfUp8R)1Tg)e>COOO59;OY^+icBcjMpp60GGT=ET00v?#^MiZjNiCF=oqVUJq{FexX? zIuEhkU~mVGFwuI!fTCVou{u@v3(y&JeC-0uZsh45+XqZ=7ps< zm5sn>v!HcJ$=Wn`ubgW zKxC}^ZEEk*^#dC&>~Ct?e__MG^-H~}V)M%P*{k7VbK9wBu3CmU(SG{b<*S}K)n>A@ zu8~tyC0*CQ0K?;KPwC955!PuBH`&4^==brP?NC9{Dz_?>RJ5 zRB_;w*WUT^HNncOzi`LtXRfL)8adSSEB1xz6JLMt@z0!San^6?>Df~6Y&-M((f5A! zSQX}%33-=)$Nq%9kU>0D>Da;OrWra$AJt@6PCWIrm(RNlA*0aaqU!9lDNy8_t}*D;&3_IcZ@VU`GLlg?|#IXXu$7v+QRWu%9$ zY&&FC2xVA#qB8bnMEO8-GDGx*h!o{jUw};pzxr#Ms=fHemXy^^)r|5ngWS%7 zoMT^=e(avRAC4c}Sc(ZQx9>y#?7sW3O-tKoUPZK2+AQ!rutbNY4*l7?Hg^18#+-LV;mRZ|61MV6+`6Y zfGdv97wmmXcsq^urwX~DEa<&xy}CuWp3lIdgz z*J1sdgnVKvM(l>*FVOTApJ0TeA63%4E+5>0nKbO&`v4Mp+U_{*xkXOzgwCN)bNs{0 zJ%`7N?z{V2;;vL3SVQhLXJ%h;{_>&6O2!X&Cz{xQD6nl zZCvQ|OS;5WZQ|_2=rsm*k+eTK)0m$kFzT3)pO*=4{xn-sVzg$smmEE0ELg0dOoU$& zX)D-F(WL$l+`XJ;tu^XWt^1GG&$s4>11y}Vll+|v zjn^U>JX~l_X3yv;8C+O~jrJqV$u#-VYI8xxQi27GV=!u%Mu;J?7fVB>)?;T;KUXTS>=O>_ejM08{Qm^-9f9`;!085!ec|cExc7ksTA=_Nb5ypl#qd9Y*N(;|S!hL#E=wBta+*ur6v`3% zeM|#N3nHG&i*ZxK$tZilB9V5gJi}cbYP?J7N$dr4fEo&o^%Z3lngm@nh(yV8E5X(* z#g3JI_iXK$BNPS~E|sMAE2om;?5?REo?6Z+zh<&%% zsMg5tvxz^h=#BxjIm(A>Ry-z>2~>|@3fMKT06v{Wehy^6EuW4e$jNgeg9g{((}}qT zWE4?89Zp6R{Zir6iLiposwH-nDnwS-7hw7|0s;(HF~m7XR_}U^DT3u9QgBh|L|xil z{Os^jT-G8Nt~43oq=doBP=47cGs(lh7U7lIrx`>UGfGyr!v6Cjv;g#*Qu(x|)=Hi= zpq#H4$$M?=8{t~|gZVjq z`Hz|ew6#v?2%&I*CGIW3NFcN<)b3NL1Qio)m4RooU9CIQi4z?*78*a z;Y0@uEhZ&Gib~l?rE#H@v?{^r4DweK1C;oigp8!FlbdP=&OEkZ!-vld)NDG@nVA;; zHxt`DaC$>!@3Ds_Cm%Z2Te;!P0NZSmUIJUn%=J$!9{JR<=H_FcI*yZ0#?}LrfK)PH5;=^1IfdZwGbxs}xmW2r$ z41nrd);{HPCAK3}^A}dF93zSCiYyNOq7kaZ(2nNxzLSs6b}o+=12>20hDpNy*J%m{ zcDGL4d!*A@x2a2E;QB^lV#UTA#vlCeCueI9K6ThXIW_L9T&}hh?hN`TrY3y{9^G3# z``EAU896mmN+eti)}f@N+ zF`&FACo3~Oj|~0QZ-UiN{N2i1Vfm*y;EY7bNc;XoYQT3idQd)V!e5ub@g#*`F;EhJ z_*H7osL3d?1{|9@kbdb+)HWFN`2W%olS#TQE!AW-^JbbZEvFn=o7Nx7s!iMFl<7)MEZh#1|%Cpgg#9~QBllfB{fCpf*^ zrSnNzpCKuHQ{-Jf>7Ss>;#~+wK?meKm8uUUE7iii%kY@3j+wpS48PZ=)3HvSS*tPQ zU&&}?7sFfFMX_2RHkeY4##9q~9dKpzsUNti3d{rNJ6@0Pka%R`Tt!|YJdSl0t>HLU zS1RcdnhH|mq3*1V!<>jx9AAu;c&e3jB#tHN=7`Wk_xmrmNjc*PmmbsjyQ?dRGMl@k%(5VW@azbbk zU@jm-=784cl2K8vc({UKdz^^cAH9}9Hbi9@xhM9@xlpDB6W)qM`nsBuBCk88!_pyZ zTQY5XthQz44jvtBqg4tPSA69v5s@k%obG{9+j$n@XKXr@eN49>buB?WX zEqlP~FUqg$4|Ggle>iwyVf6Zq6|uDV(BHxHDK==Y72Lu)JfFzL<_TT27BNvx; zT-@KF@_aG@P8MlWZHp@vT2G8Ifwpi9IHRb53nmq%gj!75N_w8wDKKRHsC;M6A;PDUd*!RTY#t5jcVgJP)OBavyn8S%Aw`x!q zt^u6&Zei+qY6^5tMCXh=I!C$17#MC%M6197!5s5@PNNt9D_-yIIko*!m10%g%Z~u# z9Wm{1=lH;A`#-SNDczeiuwMJOe-Q0w|4r?GD11RW0J~Me9#e=F`=6VqP!ALoGMQxx z_BdjpMhm^i!opIyo53Mbnn8Z^eCy%^yKC!qy>DaRE{BnjV1~y(%#1H= zUwk3_KaYQiiO()9JR1&w=tJSl&u-rQEMp&5GL5J|& zpLu2R3Zleo(22?uhky#^W>#CL=g{mz&==w zJW6x;s$_-|av{KcB^QG9;Z-1`?d!skcHG@64i7lXG9+fy*#ef%c4;{tbF@A-siM-B zYu$RtWHjm!gVycbAV_523vWU`n1xKCNw_YQSQkJQ4KiI_5$oQ^iSo#(hrHkv|5`2I zfkZ-2D**~SxAB1)hp^L1i>q&ly$ppz5)+uv)JU-gt0f^bF%u_{nVBh$Zp{Z99Gx#v zCs@4gZ+i<<-xB;=P_Q`cZg=>H@mBxvmF;||*2I}xz~J)ddtyy~w)x6tzVvu4#`*vkW1tg(Xg$sBo)gH`k;yg$_49{-)8}NFhHyvive|ssE!#Oxqfnf z0?;L)j-L26CzS{dmr{vP_B(SDN`$VwK_x=juZ_tm_T&Izgd~q9DZImAV9%Jf+C&3; zU1JF68_a0xB;w76vaoMIp-A*->3qQs^)NN+;@Bj%7WNz zwlZ58Dr{1rc21S(WiGvnLF8kE$}do@QBnXsO$c%T zvQ8=~C&Uv3o-U1n(&^OVTY5eBn;7N+en0`$XxKj!)`-byIuw1zySjZYl$~lJHk-bl zw$?^o{EBd%mhseaANb<{jE);ZZ)|ijj-6SpOeZ^SurxXUB-{rWT@KG#la=zsTf%j? z5<3R>PJ~GvNh{(%pr})PQpb~Wg{S?|3Qx7M6`n4IR!xeG=s}te@|#-qR?JN@tX#J+ zE4&o4k61;m*zSgP*T&#p1OtMgF5(94dD+p*=SY&&ITA%>j*=3PtcZk{2=-2%EU?go z8u%1Np73sNo(p+B9wvBZJ+l+zRH3XJpIq4xT|IBKlj020ReR_M>l&!5=MEI?C_jXK)rbi^3LmQz zc+ihN8)AC38Voj=0_ToNx2BH@1|ed$$!I~!#z!?6e2pTb>)aW4d58+ZsHxewX>0VB z*z4ebMLE*`-tMl}=EjEVN>?uMgHGn4gIKZs5w@wRm9uywnl-dinfV-w9UO^VxlwDt zD(ZFS;+ftowIYQt{Jy~0i3!oXHt>@-a?_4~oVj79SoPuF=wEC=VGEnTb318pUq!6Ub&&GK-wLR_f%rz){iySZ0jp7?%!4`-V|~4X6BXz`5D#-pN$@8Sc1?g zyb?-jv5H2i3?y94!=d#uRI@sInxSADQ&{@wqmrMEM{%@0FZ>bFb!6XnxtyK7?jzQ} z4~2Tw>}*(GNY0MlyY3B`qomG`d@B^p08|+hJkMSwRE*qs@0!DORS*i8esW94PZE#2H-kPM;zsh^pj0sG|r9_2{o}19ko{Zv)AedI8l+K^mZ*9qWz86^0;Gi$g;) zP0_-ZP=FnI8Oi|^dC2;A(k#q{a+$Dg%fjZ_>B))F;g+VVN)!{6GkB1Zn-~>E2wPB~ z-pgZ}JmnUWNsDl&icGq4elGc#*X#oB#gd+loE|)1cjdl`zWTi-^-c3r;aTa^@DjLM z-#&SFV{7r%&9fWTUGmk1Yu6<5eqsAUeSO>Kj^Fj8ww$+5>CI_tY23Liek-zv8e~5M z6PkfFJr9}I%^nO{Ynfo`2G@B$imM>AOw?$gsF^XFjVh-~)axLFPZbS-aHxuSBY*-| zYPpv}4(rj9uDH@840AFU&U!b}YW^$VO-uPNdN-}&8Ug$dVDnOVe6G;@wJi@-31)-V zOq?0WpEYQ=uJ?pBx5?`_wX>t8sXEA`gOJi5PK`lI4A3mAq;V`*l4S3aLQPa8i?65!Dr5>8#J(=9B3--yV7>rzNz66f^fkP=0$_!=n<-;Plvu3YpgqDE*hzIl)o1s112tSN1^N_WuQgSMjopF;ol zYA*`uYX7s)H=aA7ouk4cWJBXRa)c1O9_(r;;fG-2toOBCT_jydPqo`!yt+u#sw1t5 zL+O#Z<*L@~Rjjx6;CMr>Gb`9%k|=&+rCTmOereifFCVVgy!vKwu&2n1+LmamDBOWV z^+EV;^soxbLnT<7T6h~J@J*v51kBZHdCXvuBRt{7B}zK{mqIQoz`AJpMgB++rmf_r zNs02`JOcew_Br`q_||WxoG0x$p_n4(>3~TW0nb42b_FLyq}Uwt9YqkSZVv$Tk;>zZ zxIGkYgkz>D5Ul{efB}wV7DRKRVnbgl%59xADJeG+0OJ_9Ee)4`7EPPt?I%uzb3&T{ zc8FZGzru+2x1q)g+eHnC+(Dc27jws0zG89ttF$Jcl zfB@d2Z*k~8HRQ)aa_-ezbv6zvi8WGqjChziz6 zLPCNi!D3GZNRfwT{gO-Kk!q{tM`Tz!X)#FWS1z9yO%`^){Xc(`pfUW~z&gTzV~}25 zxmB#sOG;fqrXa0N7xvM&x$ns#jD%23kMcN@2nmBK5`tE@m5dNkFTj}!_rM%9V5+F0 z*K<-->@1ADpmXRPZ~`KuDMiM{z+c5fRKV-%aj{Ej9-Jgr`Xhd9R5I$rpOd~NhK)tx z{ud;JRjd%ttbC|}eJfnm#5RlD%{KGOSHsWS*+BU7dg)brxS6ohl5hw)Gk*tPw+VpT z9qc}ZL3V0L6b;}p(3ksRGH|L`Iu}#u_Y(0NM1N1m9{>HS>**|8d;Qu==^&BcT7hw4 z;*6j-Cx}eYBaR1MbRMS>q^m-$e1I1k)`I^DwHG60B0RW_--BQ;DX_+QVwzfeEj9Ho zdI|OAoxS8Qcs>mP5MsiPrA_k_W8Iz2O>!c4nk~VMX)(dUgY!eNds+cUh$OeIVNQxb z(Src9tCy+pDX55AmES^tzH<6-+xWRnH9F_RuiZZw=-N`-e{Ng-DsrWsJ>4Fb9NK(h zp!?*;YLoaJtKNFcMBm=t0EOd{o5#0R-TTE{$=5VAKJKaCIb1sQf!{yQ9^LuiuBxVe z_iwUkO9pqgwr^_63~sq;GW=Q$5mVXB>EWSMv*mRMKYYMsNHrY){I%^7=7bkN*0p!6 z&Yhgux}(4S;CKa`JVGz_^Iq($B>3tpDVxCuP8QZ*!Nf$S7yA&Oz#`Bu<4j_Mc5 zrBfIRF)AqA)rxD4vrrI(2(|hwV$tmn6%HQg2><7AfBRoU`#N&nz5DwR#PR1fj+URi z{mJ{n-+%E%+tthUvn_c)O8uqubhx3gYo@qjxHiX{*Dz64G2L0LH(!6?*ts`TMJ`8p zTn0JQKLbwP8_EYyD2I_mlnoS`BB(c_kpZOR5z5<3^jUJwnws$*V;;!pvf3Ky4h=Kr zc26xeFFtXiv-8x`ySH8F&`LUOpl{#6w#SaPw;%ohk`e~n^Q4VM!DU~FWk`A zRA-P}0awTAXAV+gw+dbd1ssFnTd$Y;)UNUye^`OM+vPaJE# zG|_rY;emmimHq?oO@YJ(cR(JQ(1K19Bpu-T07L`Dx)r*LoS-9vkh$j?#br`aojNBQ z?o(H)D>*SSLFPY-as2R>AuDMo2m8eH4FOzoeey9N&GX~Y!;A3jwK4UMMLf>g%F#BT1=3_ESS00!i%#Zn}#xH z=#ThkhC)~&q{e(FTtZO`MV8B4RU%}0JLxI{C)|)US=b0T>am9ihlzup&k97UGE+dz zH8r5faf#QR;Y3)L7Z8ic2{pnEY%gp^c^T100QMoWCt#W)!D=D7A<7~$*teraWf38Q zjJM<;k+u_=NYTI!l}x0qKVK#j(Or>$1mh_Rw}qF5OBhcHdSKVUCy4+M8NtXxAXg%{ z>$t+sQ6fmu!w5(V(eK$HS5uP`3_3gk#WB%!fX*$F8iRv|_E~4A8cU}1m++G@abhNT zFaMD}kN5MH53iZLN3rzb-BPxvy@*#=cz=eT54RDS*;z!wqJ$s3jE~ZzcyX?Y~r^Fyyx+pb!2M>cQyz*Qu9UO3y`eOAsd>pu6n!^_W}YUi{T&(Ocm&=_pJ{731$Dx=?u8?Hd% zh67BKX8^_>%{W}5X@J;f%aY`3AEeZtU8H}5G;cy3@O8=qD;Mt#iBy?PO69kHQ7-5u?jm-8DQ9JtCALX zZNG0R7+kt<`_jGi@4b8t9Ty(c>_)pv1k~-zBvdC>F`H4g4--Z_`9&gjrMId!M(cql zMA~sOLaXWo(^B&Lq;E=jmHDYeTC)7?nNFevkwjzXQ1`hPj~sdNT=!6?QG8aCvRZnl zs+JzuSyi?3fu*Xc-j*zcH<_vKk>%YN_tnYLj)n_`p>-K+O*TVa1c5C&9lr!~>ltwyrbM+o0@KL1u z|3TM}^TG48>*Nhvo6Y8?E$7C%k8cQ?kmehsy&BY| zsxDpjh^n@-mk8)qv+Kf^P4C}buP*Z1op*1TyL)HdYK;}MeF|~_auSy2px_SWwN;m9 zq~cKNC85kcCOBhpTDYlzvJ}-W(OFs=pt9jC~y=;geIP)zb$WYLd($R+(<{!~fxY^dCpR^B?@99ryjyE_*{%~P#qY4)xzhWdInzxmfSOIYbwCqPZk>a&8$tgn0GKK*LLiAS zIk~?84r9$=0!rCH1f`lC2@W}pjVBp!Bf&>$Y;tBDKYQ5&$gL}W=)qTB`OrtpXHO2i z;$+VSdKPNW-njAyG50-pqJDj0cmZz}g=W0}Z}|K3g<2|s19C%*DjGmL4rPjUk?cNB zXP9qxWo9_+DM^V5XtNO<7ILyXJc-cMtgDeWSU@#F@x$Melj(lQQ|Q9?QVJbAp(fU` z|6t#j^Xb^HE)}!ynv=uBdWrpQB(sjjX;nMXNUU=pPxw=yiO6+S+L`al&2VCs zN89N|=#&zh(x{y>451bZiwp$<7~Ud&SV>C!Wh4(Ve4ers*>1{Cw6gEZNr}>zE)_?T z5!v5L`tWeFnSGbeXCLM-3*)I5GDA+*u<6Gxr|-wPer^lnKUak%{Xs6~scT9@7Cmh&cIkdjG7lEQTZl4Ad+5?)o1 z`6#4CMBXEfM6+>Z;-xPE)P%F{YV8;JJH0}M&>iaF??o^RHZ(j}fB`O=U|Aaw$6nJC zzb`YRq{vs{ufQ~WGrhcJW&(Sy-!jxQ#EH#ky@qcUSkTPJ-x|Q!0R4I=+fo1f#z$lZdAI?Z{Y=i;cF`V&$I38cd=58Z2H| z7+l+jEePxnm3WS2L<>r%!#i!^ovB8VodETesME0H(4=9%NUs_$9WkbuOesd`Hks3_ z2awJKc(#|cY9hR5{ZMXtq0L0{Yg`VVMndnA6ISBi*T`b%*n-*v;aBY8mxwe|48LRx zen|2KLH}3j@05%c(el+C z0r9)~@a>-Mx6K49H=Y}>+d5L0Y=D8MNvQ1IR6BTLrpz;O!>P_7N9U^sy75TL5^6$j&;0$gP;N@;BFLR|NgY6EB zT#><10}0UU#(D}!LCJ?s9d#DfR!6n#Sb9uEoMW=%&@J&hIjy}D6(h&T3TkE!)>myG zDK8k@+ukx=pNFB;G@cpgIW$&WHoR0_cVM>GKe*i2x4q3{kaRmTi*qc#_6@=2;VQ3f zpEb*0Usl*(lbhwr)aimHE^uI0wG?Eh?uF6PUtc!X?9MODm$95~oc+H7_g)3fO|jDm z8y@Z(m8^!d&&dQsvLa9+l$Y27ZX%r{1CwO1nw-ed$kB`gMdu1izcQtl?7!xCZQZeJ z_LqQIuWog1KXqQk`eKpT zMKak%ggPgN1+tDJJ3mX!tc%Sd3rZ)k*}~_^6xW1rl8gve*bLI`7K_nhxO5n?3b|bp z@#pX}5l>Y15S@;4pp2i1YLHC2%egY^6u+-FjtS7npc1_*xM{t)cyz-JGYBy_QvWo9 z;*U`KndY@v5CF`CDnv)3-CZr8ij{KA3&$fJSC*=vMrgR|@x6|{k1sbQn(FpGwB%TN zcyFBv-iMFO-MLir#v3(Dch0dHQ~25Gn-_xO*H-F-3pY=*ArtzPhdhsdw8+Lk?cZgAuaHa=g*53l@vsi2 z7BU8*bEZ7z?Gg2!LKN2)3j>XDhVmwIy?|L$ka##(X@J( zUv8fowqif7)0loPewu|Z``$ps1acsR^sqzmMy!W?oENthR0@g=9KB#gv{6EG=s z{8Bi9e*_29SIcLP^{uS*9h)gnFCJa)_{A?eDC_xG6K6M+i!YULI5!UJsN$7f#ZxEo z26|^6-f0%VT%x>jE8fD_Jv{PQIa8`*UMpb#;mW9A9lE0@oRDe@~rj*_z=ha|=vMC5Ha{n`7i2MC{p%jqm;tkdO5Bnva&u$7o zj~AR^k4U%KShtNekwX@~GU*2KBf4?;(!jr9L7YE;#i9|R2LPzSL~MoVJL5(Zcb5ny zcEpj~vPPps`6E#ze<{LBG6w}eLaQmENBl_Dsky;ZbLABqt{)vaP)4~s8C9bV{l_Lt zOUI9N7j!fPGwwBLzVM%(g33)dPK@8UxiU}yPfjEtU{DKn;~r~IQ{&WERY zxPy-mxMeAeL?a!d6Gb>o_74!fs0nY0w}s2;T2>q6M^1fh&`4U?sTLMm8VPc}Sf? zJ``j!zKt;xtbsV^J|}&l90pi@tR%a7ptP_Qw`ooJu8FNq%~g$ajYu!jiQ0s{``Hii zFzWL@yeC@#mmP)%jUwJu5l$31waJ-C@e4s3u~@tT4|nT>%12INr!-{He=yn2uMqm& zUuw0Q8Qk^>`gCYD;kOQ}xjp4_r zy&k^B$=CY|f&$8OB-&FsLS87_ znP7wyg+e3TtWYxHce`>Tx#>{SAzYEHpJuaTGRc-fteVK3gAx+h!ruju8F~5NWcDPO zGSx(>A+jQko+eqm#i(8RAH7~Q4jHmP2zd#_a4mWHRyLL^*a$(gsg}6 z!kJ92ZF$M1bEA!+qfO`{ohon<=+Rg48aoSTpjNt#v0rF(ymvRzOActomsU=gwBnuA zCCJH9=|=IV*y|Jvc?&tI`t#o|93uX-eEN7_@A2t!{M*}yf4SUjUmh(f8C`Byq~{Hr zDl0eLfQ`H7Ol$Oq%=IshW2GP7H3*D3j+E^BFrYL?;EbbZ7G07b& zun`7=M54JNZzw-xxS9@cP^>dl_6jI@k?Xrc%Xb|1whR{(3^jQVGdRv&HQl}dez^9k ztFHAn4;A=&YFtG`1e;>dukH2wx@%l^3q-GU?}o{OhN8TbWLHr`!Q=+OVcLiPDFVZzbmhyuX40LcmMv|Z$Em{-8xruyHoSEtjZ4mhRxx- z*tw-0#RE0D;U92$CAVV~?Jx*=!VhH)I9CxQDjGQ|PyqabL{ZdWFZ2g+TIfHlP<*j>NLX66e!Dzo6uqCG`2 z|2DAzW2mRSOKbEnB(ES%(ZJ1NqHE_>!2bt6rHAKSBmM6RwfYi6`)! zbc&0@5a%+TwD=j-ZHVB|YOf*VM$l@nAv;z()0F4*bSyOSxNu(6v~-`pbH18AAMUGP z>?}MKdQP_@i_4C^62>&2}H8%(6dcMmH-zNBdVr$1Kk$QYh*|m#oFs-P- zs}zol#?Z)jjB!)z#u2wXFfeKcl}>;1fxE3a0ejo5ClvD4cm|o3a9#iM9TJ9+*hWNYm(ifz9Kr)6{RzcP1v~l;yV#YpDG_(s}kz zXnzu{4rq({$)ccf+0?{PXmU8b!7qw%AjcWVtrt*6$s^ZZi%$k6zjs`nI4TpzUdkP) ztmvj!jE~gp z7_=Vtrwk0xPdf{0^F}u6((b>Ge#{LZ{+QG)$lI+Cv()NN|uka$P~=SvZrKq+;ws6~*@>(0q^*pm~L$wFz44NGe6Bgl@F?VYIo4^480s-+JIKkWD1T&cq2$2qBIXTNDNx>I!_RS1i6H zhuLC85KSa9+9Rcx*j=zfw-FkD8q^BxHj?+)WQwOB=cKQ|!$Bv?WRfYW?jx0C zmhUp3zZWOF#*$O&+O%WGl&{*AitVdQovL5BD!Xp9sz)8RpYhUnzPk2E&2H^ zGu8E*J3O9_&Gq~}o2Bz&s^%=72K$XL20ZqURWU4t{@w9KMubyskxmu=?F2ICI>2Jk8Z5`f4_Af*$G$2V_q;|k;VLKG4fz4uf zd3jkI?iW-efj&R{GzkB(pO!aln+boJH4V=;1jFxPzcFd^-COF%#~j`LnC~>45sY*p z@!MF_0a|l@GjtP*OhR@7*0;>P>F{+d$i*wL*3gE4fFxMA)#r)SswjgKfb4(ng65%S zt`Vu9P^m)vw#mq(?BVkI4x>J|FqqLZ;ph%!RTVhXLQN$@+1g{!A*M>}x?1xqTq&F9 zS!4JsW7GD+mO}b8GFxB4j^Wj4Zz5#OAG9aIfsc9crBNJ)wjr;8#P{O@j&3v*yW44_ zO+hZx`0xvneZ(TRa^R`{gDyF}uCYEn1K6bW6m3%B;YMGX(c#U`_Bo7YzJ?=((tSpa zHqBq1msjmi(`t;J!@+|!wj#H~;V!b(EC+|E5Q~UC{6+Rh-I$Px=m|J`3a}~Q6eWF! zs>r~Jgs2|jU-2ul&LHFA7{;9>>fslzuBt5eLe?YE1p#%mjC+7%aIUnI?QRk%%9$*q zb^v^}xUbLZsV_lA;oSPs%A71$OL@*v_t3CoekRaT?6CVPv!)kwYDdcVRXL>J6_#dK zcKQoD%QN8AsrR>z9=Y+>>zqXm`S~^e3|+$FXz@U8-bDD97<2ZLb~k&4%RSw*Xm@!L z5k<3?5YW}`HY&b=PRz@%btCWvgalL-tP7f;Ph%zFZ-S*kv07t$v@{hLW@ic@?&lE% zrKbuS$tuqp^%lh!$@|T54Dsh$MnP9aR!&7rUJ)AWEbsXu&UvS&*xp@J-Z#}(o>wR{SSoD#}WUS#f>QcQJxO^3rSd2X|=iw zf~abn0f2$f{4#VTaRTGMDD=z)l9iSPlnuAeZ_0KR0oHeh>jLfNnfV<{+nw#h?VcHZ z2#(CJ%C}}U&TEx!3wF(~DH&+=u5WGkwa%)9Iac(@BSl^Fss{Jx0dY&IXzE6_#kL^k z@!Y54+w6PTJH_O~^igW1K#mn&I)<=S>>8RZd?gCD(z9sb*%)?=`>?u4Bb=|;>0|Zo%9~kL*;nb#tm+KG#SqAUC699iCMl&oFLubwvP(6R=-5`}Tlu;#Y;@k*=Kj(KbAZ+@jb zbIzv2{e2rI1>6O_YkJ#uuV3IvNwtgJi*8w3UAOY)!D+;gs9k%{az#PK++ANwh!nd0 zaLby3(yE1rM+zzhCa&uafxrC2Si4ul$!fXc1Mii6g2}wy5KF)c6@XNGXTN@i_%t}zp9=>g>)#Y=f zrczSm9L1%H8L*|W&`IwrQ*b<>R0ISMa7+LcT3vh8{{!WMWjAkLw|4#JmRMx7w8vK3 zTkVd$=$<{Q@Ioi z#gzg?C72Sjq!f0|9a>WC%*mLw0HSZ%9Dqu`(&A~``)g)&x8#gTj9=Qfc=@s-dsgg9 zq_iz4js;AQX34MUsL0RBaTtsXCL_juHDg(m>YG+iF0lD_K&+JO#GaoEi}cNFhv;uw@Zl7)x6UHO`3W42X9wIo3_2 zx;i}Vz)D_MhY#+Ckt7=B=YJ5F!%#M&M$gC{uuio((LSan3;3^}7x`}=1#uC{Eh=I{ z(aNF~ONWOR^>k@9c@ufwqi3wGv@G9$ zX#et-=Jods4d1@9CZ~3CMQx`wr#Q2-uWa_^{cUTC{tjZ*-9?kuwzaLDR22U%=hSuh zlJz=MYH34vQE0H;U)Z~HV9gT>K-wRaF47n@dtGz=C#`P2aGX)(lvE^{jdSuBv(sIR-d zwD=+_9(JfcS%G>76)&#d#j{V!wJ<4saPWHAcV^zTwX0**zScQ+ZtkdAbdY_+oZ7JU zvW4Bj(9AU(*UStdq4?ZcH!QDf+jRH5lF5zv{?3K#cSmL&ZC3Xg#5dKuOQ&w=>{vT@ zqPJk~%57~8OL~J!IYeVxeb2z;i8`(;_#8ga z97i+NLj$b!#=AQ`>WXlFlB%k3+FyF#yTUcGW%1Y`m5qSYK7TgUE+J}B;x zBy~tE2y_oMHmn*bPst3r|91ZHeHuR(m(`b1@CWp83X`t1&oj4X z)?7F2gsT2rR=cWZYB+1z!n*k$$%rI3vJz_8v^@l(X0XyZlM>)wd3k;1JR>1yHKg(@O{{qYo)KmuM7HLY# z%nP_H%Vu;GWD#4zXi$tw*F*xtN&&vzR$Z7^ld(ay8p-O|J zJQJlma%)_!U5iFBIqLH@sNU9#GonqHA4x6Nsw1{EH-yT|bP|&9Wn+2U=%m2mLFOix zN|+R)JYEzq7>poPp341cQC)G&062F{`4cgfanTybcU+()A|$UBE-zTDtyHd?%xso{ z$;=Q9xfN|i6}=VdIn|x(A~Q0>)9Xt58$4OHQ$m>yHKi%aq^5o(>gmkyFBJ8nSTZZn z15T@SN1$i8DYL#b+tV;mRy8@CEiNp%XJ^OyDJ6N0GixemMtrHB8sD1h3i}nEuEUYZ zGd=0E(|Zv`OZz^KlQ#&c17)DRQ5I zpzFuk>k<&%VPiC(=r3{sfxd@yKtTM&b=cP%QQU^qFJYMc$ujmgMUW!9N;390vM{0aPA6!5Tq zuU1OV2G_n58Nc}m*DQCIl;>JpHMLOi_E&_EwW~?Py4OfYgni0Rj26Xt@PT6t+jEqq zw$JI5j?9Y1q!LqEp;>TKx(~8~j zfTekoJH!5h+CV{m1$!SOfidCpq??F&%86vs3&gS(Iirsh8zv51dcJfMqmL!dSFQM6 z;g`CF$Zrbd6|`cGyMnifKv~>P7KiYNF@!<1!Y#P1wn7K3dz&US6UwGR{e#=;mnOGA zD>XOfCUTZ}7rLZ-r{z?7?QjmsqB&CCCZ38$v_8SsV4JZH6zUUC(Iv12+N9%H0|$-Z zZJB6R8d-0%`Y(rcZyG#cem*AfeThF)t^{h19aK|=)3F?sAVqc|ouM6zNuEGi;bQxV z;?5RPDmX3V0y_yi#pg$^YeEFL*C~D;a%sXHh%p7v&rb`WA>@%7af-!V6U9}TJt(*5 z^+-%7qZ(OlcWd^Dmx6o9(#vCBibZqDPi8SHS!YlwxkfxH(oJbieV@=9Ps2Ye_UpXhrW8CQ}q8swr4JV-v8 z>(R-*jTqxR?ti2~9`!t8{J6hy8I3HW;oI6p8yt^}e52y^SRcH7X(@1s*^;nl@D8;P zcR~}XefUb$D0~5%4|QhY2I5;gancF4Cel_yt^4cq3R)v0&QOVaO6x-IY)BU-{@OCR zmn|Ogh7NL1>Amf3CUTVtkeTe)kePNt_Y_(M9|>qRqf}BTV5l`+AJZ;^=pv4#1S}+{%ZA}Q9T&4l}HT|Y&pJ{Xcn}rGMI+{ zqS$k7LY4>8k`}P^%HE2K-pX_at*E!WytgugeTzJyac?D*L3wxejHbN2rWw_#R7Kd+ zI6d?+xklsOOLCQx96-CV-q(ZsMeQyZ5J@7S+R!HM`+`)!9tOTQj07FAj5s(|%FEpF zkus4`T{ElM%l?eeDcq#?JmiL&=LGN z$YDcZhOq?5YX@y2k(p7B#Cqi@%L(re7FZc{ERH+H99I4SCx^kNfUQXj5EVJOff4gc z$eNmp#jyrZLTYwt9!b}t$b?9dv$#1>+LBRF>g20WD#)%wWpG7F%d7O}hYM`{A{V$E z#qHTjk8H78(sBZh{6K~+r#zTj6Lh)kgVk+jCL5C{Hm*W~6T8)(U!GA=lwr>*4W^fQ z9d1DH?A$BZ_XY4*=8>-CL~lV9C1)ji3aLvl?3k0I&=JroZ=S!s&o`X+)wkwr8$8<; zDz9%%i=QK|>N06XY-EM5 z9w^O2_6dtDePdJO1PfRcI4I|(q*d0jGzcC- z!V!&$zD@uj4wMy&6yzMHVFTbLXpKP0htN@?^^r*d@(fTMo2>vPq>M3)iDYdn!wC|n z^l>By>a&MbX!c9>`R)l&WLHlIqtCmjVcOJ5lU%IFHC;Z~i*qY<)xV8guJu~q#UC2g zKJXr#XkR_CtKe)B12zhVfv*sg0%sw@1%SptJc`)LNM%-1h?0kCsfe(zXZ2diL!u)A z*CV%K4Gm+=#~JtcB7svj^A@pKVMJC@Ha+6cC~e9&r0B0UK3>pN;`TO7EDZM7d)+0C z1&`k0vw8HS>kfs*jl+N`YFso|1=mLj}l7L6sX zQ_Jh;H0Po}JEVh5vri~j1QrgNptQ(%^T!6!UxW@@=5H!=I@2pUi;6lb(w)x2M);JG z%$tSO*Mi;EIXTtcLHzuBL8Kho9iF)u&-^WFQI(PB61*rfM_`Fa;6Y*7MoKM0jqw)- zgW7S$#Y9XogGNd?98OS9^oS8oIi-dUS?0*|2CH)|@K~32&(b3y9=MLOzP~BhSLX?} zxwF8AQ#M)B%i9Yl?V3@tZgXIcKcgK1tNvivTS z`Y05F0rds8P*$H}J>D`+bc%0S?B2@kHiZ63?A0`rBCGW?sv~B=wwU~KsR#u&$bR9G z`PocDO-Hm%M8W~8(g!CTahqbL`>^GbU|%GaC6yHggMoaH+nJWCSs1a}Z84&gR;rKS z7+yd@Lu1IDzyrZ~p|(}+9RZ&sKih4xC1rYo=@sQOI@=IE0t^OY_{W64NcV;ah6zN< ztGkQS!Uffh_TqFPFBuh%#7^-sP7_bDtI?lA0hv22kR41bRSJ2|Nhd_Uqlj|!h#R0j zuQ#7k3jkCpWQE)SjUTtrIulPTLKCWMZJb=Bm%dg#smh&GJEf{-0(XMhJXOBp?oih3 z`BRlQ)nBr9yWXv0ApzyuC9Yc>dl5sjD`u@jQi05Ux9O28Fd zZLMh@Yuw~eTov^o;l)+qYsGSYM(UspYx^i4{B=9#*g46YB(2e05>!>oIf5lh+HEYc$pYGRudjhm;_EO5-aR^ zk0&eOHaq(xiA`~7TN(02+sdzWj3p|ThMJO_|a9nX& z563!<3KO!kusv;j`y%jm6k3HQPz&-Y=>r7+I{1kS7YMU<_YHI{*rU^TO`S1yhqEU+ zS@)1)uu1pS)YrED{+vNpx*JO;xK&*h zyOk&Y!{|NP_6zPFe+Uz9mCg!hm2ZQapnD3;l!{`T6J9yONu9`SCWdQ&fj}LHTk`mj zY1Ln1abzhcC6nS`wtiC;GAb5rx_me1EFO?|F}HFj)?@-^w2bvSu251B}F(NOqR;UrNKs7|3T&z+h2mc*jR$MW;HaD+f zpdz=nJl}-8qmrwzF)(M%#wAX9w?5cBttvdTJ}1fMO43QlF}-%_k}YPHkHu1HhWIA- zja9%Hqlyu)o4l%+=XPMEU;r6|O92WoMfHnsCRz0AS;dUX5(>hOOok*@l_bqbW~Y$c z8DDCdViXI|ztQ_5_XPUWL*j|xNIcalqV3!Q)YYkr@kCMh7{hrC{x)E(e3gPq z8_Qthu+u8_g%P;pwds(-AjBF$+3))NJpTW6M&or-AO6E_(65i#8|;|40{1aJix*be z8IhH=j}7n-uy?eJnQ(%2iVfl^#B(8r7y2e8W5ZC)#5bNTMxa1qjEY{+^B_c0)PcQ; z4eIi5r?FXSX>7N80M8t~4{9vaSmL!YvD$gO3jpr$x5gtjd^_#i>`w6|^#I$QmhgGh z7>u~#8D?k*#0lQf!a=nWAj=^RIP+WJE~5Ct3u!OBK=%+u^u>;`Mqg;d#MbFd8WjXZ z^SIfcz{|hg{Mi7 zj+*WX0Z@*+B&U@l-Jrvqmh6Aqsz>rF$M&UVI zDCq~LxyG*UWw$Czxj#MrIlbVGTAof|@0qYD#V@ws`5&had_9;6~ACk>> z%p?Acw&DMLFY!sc_~idj_hN%~**x}Myrv>%KUOA}T8+WM|A3jbnu;veJ9Q1?owF-T z(XUs9{o<3-6kPV%V#{Nd8J|?0&SQ4*^=S9VJqENrO;|KV``vspc?-?JqYrN`k z8ri!7jCMh&A#z~}h!h$LHQ}95{GCX`i}A~me#Yl>II0yrkkxP+0jW8NDg*ij$e5H~ zQKJVFNfX6%U1B(O(bf0Q(AiRxY6c%UG{ZgP&?AF2NvSs7jQg)%lqxQMi50!JhEV3@ zeg9PNepj8!9($K9{pY@90-o2rroR0W`UCfgoPmAeB;6B%dvsW$pIGRKa*kCoD2_E7 zZ#V^~)mq}w>5++-C;R3a9TBiSXrjk~Is0Aflv3B)`{&95_zR1KnX%kGP$>a?D1rzCO7mf3&=jQvd|RF`>AW{Fc>K-5 zhz%q*WII8HUb4GDfY%e%Ag;~Ca8Fk}fGfsMvwFpcw|(pS$&;`D*0wD#9~l@p^75)3 zuii9e+ASzI{Ms#32X1=VZ|@Ip z8W2@vC8YJyfQM#}IZav1w-~vt{&?`l$3I zG>!YjS4_Gn!J>SQly$ggofH004+ z#(2_SE#n-exngWFd!yy@rr96fGW~`<>#9->a?AEBZ=8Kk^od2K1FM_BpfJ`i?=MMC zZr#!PspD&&k?B0H=1>Y%|ZLJr$4=A-4CDtVjr^Hw4Zq9)iw2N z5RTwi-?g&muOC)%dNJXkdb3=wd<}k3oLr^FIJa$SIJdd_KwT&nV9NLlgi2N^(ISd3 zo*V=cfX?|D;3_Gr%8D#2NeV7(O)o7361@2*tB<_k{&HnPIGe)z~tR&ky_nq8Mxn0f41`{-fww({J(el@< zMSIJ6dlAEEOND(4A)`}dgqw5s7dim2N{e1Zn?}lK@~`e_YTEwfwvJ69vpzpOq3pdsMz0okNsVZ8acfzQ$s+wA z*-Qy&x1ZeCX-ihndgGZtG5eZ_cebJ3rq~(sfqXyKxK8*5AM^He|B^eUU&H?b&P)*c zgV&61K(Xh+22^(*mX*e#3nPoDq!n?f79h69d!w9)bg;c}zq0I1x6`ZWk+%=ai)J94 z24EL?q{C@p9;HMmM-B{FJ#Ar^PSm02a%WD8zrP{R(%uDk^4T-i&Ms?4O|Q?F_%fnU zV=r4$B`Lk{syA8rPf%&@?CmLUvd~*s^`^&OR)0b-ODj{}R9~Z)(J;v8cGQn~MS4l_ zfR~D@17U*6fwDrzOTq?#YA7WMN|wP;#%nQYff3b8e|~=cg#5nrU||7REd?fh7LvBp zT(!V8;}2-T1~T{7AeRnx*+UzP<~5ekF9vRVh&3Qdp5|HM?2gXX%Iuz=v#t+0Lg zz^vW>yYI>mFQ0W_xV%Rv2`F{;xU%7T2izcM$X-QzGT3%q#Ye+9Qp&_ zYJY6iirbe})i1wc#^kGq>+&aTn_026zOJ_r*s78eXs>EqTrs$Js=sN~jnn5GTi0B> z_P*6?pQ-=ZsudFtJh@`$Gus<$SKcyTb*(-+H)u-ED$KAY(eZ66S$yX@_UECy);2U> z{*AqBo4aop4C_^5l`EOZLSQVyJY)|e0(@J4dbKJRp@vDFCJZF z)MsDN;|rpTsAdZ{r_S%7`@D`k_niCW$@6+Mw$;cw_oE-#Azyc*CiqvB9gwd?CSk&Z z=t~~vJ4ksx%)sMFDFWClbLX8_{{j5~JxcDkmiP(_NM*C}2}l&8*^H{8j7$_1qzC=; z@7h+jx!q#&)^wL`I6BMAmb46%rC~-=i~8!-d)@5qEiYd;DJDUC4}5L&tmMpKZ0MsU zXv8kG?G)NZIum(^xep+J-Fy{MwBG?=Itg@yjYv3e1hiy)LAg$7u)U*k$1}SYF96N7d~(D4?}_GZ_pFShrU7;(gqw^q!Uc+JTTzxyju zVe^)5ZQb?c=I!6UuKzLhL}W@S$#aq($}I`M@HuTqo#=a^vvdk=k(MSPIJLRp_7%Xq zGN5lVj&h0f`ytC>$vpVh;S*jVAcC;6yrc*bX{cLKOi^#xr-=byaD#s~Wu=kH_agkQ zCbv0Hgc>8+v;EGBNYJ|ZzffTIZfRW9<+E6j-WxiaH!>LB;_lveik1B*edhHy_IJnf z8k{=!DZ4_POkOc4W!SKUd-GEX**b! z-4DS|ts&hg#AKqi^trHUdU0nMu>fUdIh~h~K z#}y4F^c{rQk>jR@NyMN<7CBM`xzEI!#kl^5ORUnD6}>wITJhA7Td$ZF3=J(1ldg5` ze@Zl`na)mAj45vVNqQ7N>3*m;l=p{oa*){6pkKXw`Rad9Q1`Qyip~*qSkseF|B0-= z)7mdey8iUNSUccQpbL9obCTZ&9D8shaF&BmGh`xc03w$nDAFgwWunEuWJvwwKgr6> zNOuzf7fv8!wkaEaTzFH=Ix4)*Irda}3vXjF@w}ISWnpSq#g~8hv!8t*48I+3|DJLM ztDDrb3~5egsSnzpd-UN4qn+Z9pL=rf$WTb0c248=HgXnY(8-S| zuptbZjyq)2Y1A_~E!iSi03YFxK?iCPe=Z072)5{_MdVcfNP)ZEsxFm{Cxe5}m4nElj9ZZ`YqiAKHZWNNaNz zI6e$MS6IEE!C=fxI`YjUj65B|j3$#X2uMHxs7&Zzn}7l^9%~?2;6Y`lBpoWXTPcb| z^J4JRl~|v&Of{1~Ug|-@QU&l1`G=A)2xW)4$@5z3&zj9QT8zr<}U@F+Z zga-#GyPubPHTiJRsRCXQz%Lj~hz&+MUP=)c8;XDs@S_Y@&_PQmJ_=)NaZzWYfdpn|B#aDDam=+jsBDbe0KJ4fZNfJGHVKhp$yTlb;n>5S6MTx#%KhdnfVGe ze3B)4BF|^gd9$N8^LAssKZ;b%BM%3;NO;Qb#P-XNrkGO=swFuyza+=v{*fDB872M#8~X{` zuV!Xc7X_=`db8GU^;K4{Rd+t~T+>z8b&vc!48@`$bJ zKcanBvJ4Ve^U(OK8NNyWCvi3N;>nb6H)K`*Xf}U(Hi+c8KXYsAQ~Y|g6DxDB_(hx& z9GBE|`v4gGFTk8W3hLAcf)n0%`5h^H^yA~9b-GPE)n1>V&Yi%N_T zO#~OY!fA2X!xo1n;Rms&5hOB_hmFi@O5sksKaOV-stj$4L7n1G6yzQ_>}#D-vHOPn zwnZ&fbK3o@EvB5Z)?z|y7vBG?y+1fsIjhZA)Vrjvb7gnI(Y?L5wR)S&^K_Qdg|(e0 zCQUxM`rseGG6V?s7~oIwwe2r{Ze3s|D?T;+(4OAvbq|XkLOX|^QPmUotLoE>76v!m z_R@~M&ul@}-6vMOt-dy=ri5TcgV|D6AF3KY$&6n-!3^J6VWwQw*{~UBVtrVMD~w7i ztcM3uag7nW3$_52KS|g`4y#T_&KFR8_|Xe_;t+d2!B&m_U9MA>oPL_0j1UoAcWJ_Q zT#5T<5SEdF$Z`m+Q8fu9MjQ}WE6|X#(nuJja$SWaD%Xu_Ftnp~GLAKIp{6N4$Yw=9 zu_NjCPYtPx4(!OEBDrz&6ZWE0oz1@D{G8-7MEw>QxEdDm7lyOHq`lmLGZ)Gx%O_wL$f!L4{re8?R(bQlr=XhOLt-<3+RIcV?I7y=Fc9_j)7OL~5 z#rStLCRAyrPCt!_gW}By-;qhCW(tt0ZapyO*a!iHVsw@RStiG<_Pk6XGdh zpLi=*|EV2VHv-y`Ei8H))u(`&LC2{vX1Sn_Y zaQu%~dSh3jHaj2J0rTWWh~~Yte;nO{d7G}A=05Vfd;TxO>y1?A zit6XtLbmJ$miEZ_gNz{~yXUa{1lDf70A4Vd1z>aP3^4V$Axoo(&3v97g`!0vUN8;u z{TXhHnW7Mku;@`jo5$qn&o6#lT_$rnK-~6=DY|0rgu8CpH&i#_>XYlwGi$>Oci(WV zSAFk1>&R7{EuOLjdbfUg%i%X~p2S9M+zCfsJFwyYjR1tsGnF#(;l4vZ&wYgT1X%$| zvqIa6@JNU;M1Yhi?O3J0a%TkA4oM}fol9SbmBX)t6OjLq?R123YI1XsLpC0hsClw@ z*&yU4uz9S?24FLvMz>mmb-go})^Wy0^@1rK;h;r4>EvL{67@ZGhWf+rZ$s)@5H>1z z{*YC(FSB$_&&HgQ&Ez5eIiNf8!a+}zpl!z#ZOC8X4%jn<)uJ2t-y@I#0;i&ec5wLa z{36wH6XD(ZT6NzBadX@bz=Jefn%b8lfFVpR zL(+pG%@{Hu?;0EAc0g?8@QD;5g;WjvF~U0XY2$`H6f-+Mz-aw@#O?r8HEI!zo{@Am z@iQ_5rSKrzp*jgjBmfWu3m5}2_Kb8`>5OD}1}ROU^G``x_|$CvWXvH+$BcTvne7pu z9q*Wo_Z!J}b_fLmDk9`NQp^TL>ZKE!0WyHnHrnF?p#au5Kd0ls9>FE!QZxXX=#w!7 z|76j-G@iya%#OMj;%;y>C_Bzd#c0r0O#>23oO#P+l1q@I{q%Ri)Hw4K9VKkn$>jzb zD^b{k+S-5R=Tk@+ekPX#9omLKm2n*gN@nDHkDp61G|xj=_@yrJ0t%0SfmmGV^<<{U z4kJATCV2;9h!1%-SegcSac~pKpKFN41h8BNc=WlEW9Q7z_}Oy9d&g%?yX$v1t$T^i zAGvMp`6G754;k@h?Kn~Y{^%X*Gt0E|#ut2;CB@GhOb^!OqH`Zm*nZ0=h>&Et&$S`gVf%<`pDFUU)nRlQys|#ug2XN z%J15KV(z4CmVqFv6SJK%rQClPeUOC1=l-GG2Ah%UO7U#m&?V3{39|;$4(vf$hB^Ub zk+K;=ouIN$UXQyty%;5*T)u(=0~Wq5rVFq%&?S5tTS5=T+)qj2Qi|VJ(4-Y@j3}5^LGoDC7qV#6Va97U*QXEl@Usi8^Qyr1vx(5f}X(Be-nbZG=qKTU*?%kOC% zY|c&eS!|Ah%47>2=C)9naE+Q0e>QTZQfd!z0vSOX@+i(Dv*>)m9u~r66cus74$8>5 zei=Y}moSqqYNBJfSIw~gw9im;RkqRU`mzFS@x$@{TyPWar$0PxL zRu3nPIYU@W2zDi200NOFtAAYa#jTNdf6J=W*Z=r&*PcgLu?)ME)UxJ=fs;Q}mYzQJ zqaVyZwysqq2NT)=yJ9}tkSaukp|3^&*dv5h6Wo~s@KQtt0UaWB4Qm|@qLt#IQQ+35S0K6v40yZd#|sW*;cGi?i}9JGwp_zjao0=1+B9}?eiNl;PFn9@>HUkw~-yzO{a%i^x4MeX_FrqX`6dJ{t0Wl%jQl9>CIS2 z_2>SnT%jBUy&Zd|1$F?D)zjgOlHkh3m{C4&O3;d7;WCj6cQ5Pj>Ihet6j7R=5*_LE z*fKm8Db`=!8Kh(5TqN#>^YbJ>Bg7jVR&htYG_h*R^3Vfc33LpO^vFd0t{a+A^!*o} zc(Hlwg8K0A4YNCzPYM^fKpl|%Q|GR1S#f+A}@?*?oJK z{QPIG!pWO@ySB_Mw`J#N+jKf_b-uNF-sR|f4dmx~^gT?te?IzM#f1f?9n?#BycF`t z#r(N>-07I00zqVy20cCp`5R+E3K_f??Ij5n8X>E^9x^vHe9NLscC2dZvg$8Js5yWlk-OpsgGhyo%`tAC%Q#g<2Axd&%oo!z4>J5xuC%D5}&l&fOpIz zPk;x?dCaCBeH%TFy-P0a#0v@K9QQt6ejh?LJ>%R5`hEO9bm2vB!BI=258A)Orz3ab z=<2bKX9C2uqS(gKO)yyYTpOO>6}X5|P|z~7GBU58Zy2#d+aaBsXUpvuF%!;wdD@!R zge3(Lf;IC##`o74-vGGk0e}#30RqL2JGo+R0VonUW8ml_%)I9}*Pc+%J-vAG z)8~#)-oIhETt*SZ^s??Hd#B$1$)gJwKKidau6p~98R`;6FV3}p?zhMKIj+kU9$TQf zP^WXDl%;FY)2ezuM}>QD`uWX>M&k354V|1YU#~Fj8OqEUpBEPpH8@YS!w`#;A2VF2 zkNXZ6=wyZhCe8O`W%z&$BhCg`78i)o~)V zQ=1aZlLky7twH=pI&>;Y1D8XNDeJEr*!uOWx+|C6xqA5e!C>q5ht}NqY8TunhROvu zuUK>c`ntZ$ADH`_-)w(&cUu?yYs6BS$%bD2p$+Nr=Y8?zb zN!WE4<;7%<;l(7Q4sX6EFE=NfvtyhVZ?YGvR}$!WoEH<*Gl&@zlIf~dn zW!ofQ?u1?Q)L$|0(yJ!t6;0nWLw)hoDffpT+5?>nYOCjU1XP2VR5o#ORpYXWMN*ml z=ux}+544vdL#810aQ@}^{20LY5dY)xV<6ZnQ_=6SM8? zejXq99C8=8;r^vUU!=Q8LcZEG2n29rkR}F+yvYZE477;oN0{6o?Gii?2PRozT)cr0 zg|~Q>T8}@73|&N(fe0JVUkhf`h)%{+u#5kQ{<`$4*^>?|sjVA6IH{>cL_#M^WqIEf z^Q)`pU)f(XwWT=OExl=1)BK^(+6T97dishsCsnx9*;=MIdh| zYgW-g_raoBSuCWtq^jR?)dxzu;S05^H-Z{tWLK4xt1kBE@)Gq5BfHaIsyCNpu_GpR zpSP6#LiLw=*nIjh91FZHXt(0|(3MvO#0@dtpjgIkhf5yc(^LBNM0ffFMLm_8g# zgXE3IssY64bGYLCCXMw1mt4$h=TXkQ?}P-0Yo!9&q|+KYtC5ACKqoE6SSNW$r0>h9 zUXB)}OjLIz_Ck7F4U~FmJwJC&m8iyjK2?Ir`CM=alM83FXT;(;ni>)-;`|CsUPIctCO8CxZN)}gEP{ZLvKk|f9I$V42ChrrDf{7 zEJt-w3ziFwqrG24dws-r$-e~OB{NPOL6sS;odt2e%jgmskqR`N z-0K|m-MFE$DW0l$MXQEJ&osCgaE=efM<{JS_lHjjMG}Q zS&BK#v4G-ex<`3B`fIoL0FszzBcu1{;|!UJ{IG9=PYBE^fEwO1r7(uf1Unbiu{Yo% za6%AMqSJBoih8IhkeNW1DL#!83&CxHz|7}-iO(b~sd*mhXxaY%Brnl&@fYk3f7Qh# zW>&5l5)=JGALvZn$#b~>9=QH=p(7HR&X_(8=3GZ(I3LKe0EL>9jd7{QXyM^8`JBBsTwl}d66>cHzd1;xuz{ zxM_2B#m2~jdpAWI)*WAF^}5+d{a3A>ncec68+uSR-~l$pB#NDTp5CzKsmmi7={d93 zT{C6!7&w--d;r8bvWHmYkfd+;~WwD3k0eKrF<=d|h40_2BOF1Q3)Hrs5v* z5fl_$5BBj>SiWknbO?8I&v!vGR4eU9^sCv{~O~%46NoVYMd=l() z;>{%hH{(dML_Udv$i=hQs9zRe#lN^PlU{H-&(5OlN#nB)fwe{o z%`lzhnx>xcT<}V44u@?FU~~bqMEV{U;?(<&UNNuQT|Q&$k>fLB;*|Z>m2a|!7xl6h z_2sr%RaR48I(sYD9_XV^v?rS+MOHcxE2xK@Oid=5LJA{sH3SL_rCg@N7?M$P35F2V z5v#)i2Z83-l>0NC4yL0e~?|Qvfg6E@YAXc-o1? zfpN3-DQiaael zvAzi!Va$dkDx9}gw+W5#!ol*^~JD~uU@w1MNp8JXEpb7s!j8AI&oKC;{sgIf2e6jE9mv&xcps*%LKRP6B!cwYY+0USs4=B|dVJ0Ym*&!MP zsyT^m6=St?*_^>GRDKX=^Fl?uT$%vpyR2Io{}`cwm;Mx?tpCkZc)_&)@+qJF0UVTt zKcKR_5P2ZdU1>-HZ%KlwUB#+Q+@U*SYIC}Kq7FS8I~ylSI7K;bN2;gXF+)pJs2w5i z%JYp*_3pN<4-9X-eL+w&2I6XLMv=L2=)|@a5AEuVS)Md!=RU>y-iSHNynvsg>9hZt zpEB-sz>yO8DG=k%0wnB6971i0hCy0yg=9>Nl3Q_D`P~G-mmHQwDmQ zij4^NUBo*S>inHzji-p%MQjH$@(%u^O=*fENam+*6g zqvFePCCL||sK619yxriaAZHins8C)_qS;cI2>F7rWyVl}tqS37uP~-oLutX;EvkNo z`cueT`db|6_+oFs<*%)wn{^gl)Fr_mCjJ>eo?S2fQWv$zlvP9)Khm8AtR@PVAy32+ zehyX{0U)L%a@*EO5 z>a`;5N`yTAfto8&-VTc0*7A>|hX{LtS7wCFLFFZR&*F#s#Zr*t7_;SoUV~Vpno%}K zLN8myqb#)i*wUrPmWP;Fz3kZV@UdkzjD2p!iOcHhE<3Se<#GCcoc(^yV^?%_UGdl& z`>IEGcXjQCQ~Ga|8e`M*2YPxAJim!zy5svu{0G*xSty8jbeLY^M{|}sU&|WyjbaoI zeJfkx39U zuD--3t4}00_iuLgCM>H4NiTELs>BZ2fxU&;tP`je&?Q_MF?LnvQ3!6_Q7a7ZOVAjuNvQoi!_l? zQRSjNl1M@bN$c`@rp&9R#2qyY_fP6Qv^t{ED#G(R{490S>b>n#4iDFb*WS10XY0n& zDjcES5<8{t*!A@G#>%;SC%?yickb4;Gul>62sB^*^($AOJUsB2xaQ22V|{#le^>P7e4qOi{GuDMze7U* zGa+bh@trclnIPn3gk3R)3X%8@pIz`E3Y_EcATCff$Ihj)ljgE!UT0uj<+Gr9dPSTx zl)!-y@4Y}BjrO0vprMAcOa%WCbFRtI`-$d;(B3su>N+Q`=|7g^gCo!ACLQh?HJ=epoy5@GNH_lg58PS zhZu_s$Qy_c=gB7zih@cX)vvyDXu}h`+B)|E3^G%jT0;b=Q=^BbJq))xP_w4I7`jqP=SP*s#HjCZNp)=RTGG zf;sRCE1vPfZ62QkCzhL*fD_{@BjO8JqurqQQ2Fig-sP;6@!p^rLEc2-q7V?1AX|v5 zc|H{)B)t`%3j$Ep-Z4|rH9~d}@3q^bOU5oL}2XMd)Fc?N`Z!iNcbulcu(TfKoNyJnoqb^nR zVOc%r?=qB~8&3tQkxsbB-Df9`kE;(!#$N(hN>Wr7#fbuK-$R#!x_O z2VRCcVieV_AbH@h05&^ST1VYcK`;&yITyKtfdCF-5iFHy-Bt>fShilM5@6#}`3(x3 zqkno2g2c4gr55nZ&!>uz3&5&0MSsTLP)o%^7JaE`S<~>Bc6D~{eq_~>V;u@W*(@SgRbPGBAm#bNJu#-*C9Yv~ z4Z$auxQ5?{Ad^d6gZo_SZJ~!i5v|289NB#Rtru<>>2s(vnOzXPIlD&6Z?xOue>E77aRI$57jqeOrcS7ZWNS{o3|# zUq7jF^|5)jg=;+f+9p+$J{jl;<;fqVGBI2IFqQc{mp}5Wt8V`2xov4Lr~XKkEU%>g z($-h2lXHv9Q%>J6XO^{s^e#Vwtx$Gy~HM1U_@4cg-jZd9B!A0J?v$)E3~C+qGRnTm!2%6bZq9 zW0-FQ5XYEr&_k;nHX2T+OMVb>MM|p6;~F|#G3~0g3(9B&j3vu<+%)^h-yfwg=v%vX zUAD9W!=$fYea{+-qF(U8?+)marJ^HCvzy&g8E&9czVHRr&C<)-i?H{LdqUZxanFvT z=AcflXsF;Z)AyYdo?0SGb*buyNAEErIFt!&WqPz^PtqS5LBTyPTtO z+os{U6ClUh32_cF1IR;?n9L&(A<>9)Z4l57_{9<33ReIM)y@-)MqWpmTLoxKds|aO zc_}2A%UkQUrY31MgeXkJi~j)0W0@P=ZIFN|-dl+ev~Aj!&Gr+VPytJW{nP zv$J|dO?8*F1neHWw8@}5Tj6c1%6a|u*Y(QFRZEU8p0HtBo!w+I*eiRN_su;#znq;F zKYkfuKxeC`w})&ZGbws!YDr{P!&y7M{Pz62H?|fuO)bSbE$9yCH?6sK4h}R$*pB~R z#JEd>5x#F5xK67g%afUsA~Pf8c{xkz&0@x$)MSgK*sMti83YG&$gE3)kTAhXCK^fF zr=(zBjK-zLemh!aueaCN)gtaERE9D}0l%*RT*bW1bf?3XX0n(p$lIT4N5Mqqad~W1 z&dpN}^H6fy9afKm>QKC31Ti&8y&4@Yjztm15OT;rS5xm|Gl4@r@4HLA4ywfpvG9~$ z`7W~ZsP{(Sv!6OezafH(UBROEQ&QGnqGuIoEx)$^M@?N|UcLO^e#a?+B-*TV2bo)=RbMEN~Y z#PO!nEv1N5AN@{m!HYCB&Zo5N1|!)_@Z{yhvnbhsUz?2voq{57`XpZ60+5du`ZoIb@wtz5yU<4y*eb)q)X3y6W+Y74gkGEUpm1RW z8U<+>`ieNu4D)9gh7NWhO*hX{vEI<1WFA^HxxcNotOOICm+rEqnSDtr$(%Bswo~9iPGT7=zOc3R*FRR@WF^1+ zYx|BbEiGUd^RAly&~f{NPtQEOI4sJ@SF}wsid#&{MhVGRc0{M? zoEgrX%C>@{xvI8QH}x<$=ChPeBo7ir z7VtfmgxHRBxHElNTbm;5okr0N{c)g2OzTDZEURpAJ5!-naG{f8)VUDtkeq}{OCm;o zNJvW?o@ila^HOua-*2(_r~9W*o7z9Iv!kuGr75=KctCS$F_L0)>S3DIl4?m!hd(|& zw&C<1o92a=0-h8$@{6a|M@$XW|p*yOw zUbbDQ9(!Cy%`CnA=U(;Ky_xE!bL`w=w&LNv&W%HfjH>e!_}A#!4QR7h@-93doFyd@FRe!1JsVnQk4@ zU_rSD>xcL^(mdG!|MOC*KN;D2lQWYuGu)^yoPy6taXCKL# zzhZp^1aK=1paU4;v8NzSq5utZju>+C7kIrCw#IWJ;e_$T_D~?s*o0gh0oxEfg~Jf@ zEdSM%VlhOQ8dI$HlwIx*K5$>*$hL~to0H8+(ZwltiOfByk=GGFRFIW{==V}q zV&g4deig1tqa)Dy5D@~PMn)ht52UTttrT|Tji#VP1B|x z+r1zo*Vwwcqh-g+X)d>W_J;i(JzF}H@-mkmI6iaMHup6sHns3+_3Rhdy>R!AX+_D_ zm+ljPq&G$LZvCon{$muB@YsCBUt0BN7Oh&@f8Z%({N2%1xAJrI6LaLQm>Yc$`=wpo zAtx!{gGSIx=zni}TT6AJOEExU#ZdAZ%VfhdVIV)ROr*LkKtNnA@SbaZ#^8)0Z6UUZ zCwxZ!P<{;+!ZCASlT9>+rY*0|3TBw|>w0|t?r>h-w4FsYYi5Ui%>zY+1I@n5)}qOc z-t_X0;-s>+!nC~FzF_J8dH;M31(cHhD$gB$;O7022{# z;S(g{BCJSW>aRDcyR)OEvA(XjsK9Ht3MkXgOZ{mU3HoGXR&9S!`h9Nn!FFk6nz1Ko z#-1FIVq1$uE&!}5ip=S|_SGx*vwu~u+j&iYUQ;&gz4QY=zPX>`coZuvy}n(m7nM>l zkGrH}{?7jW*^RjquGqLbtbP~axLbI<&W(S4e1lzCe)f-Qg||NFl%;>CvLySKXZ~>u z5AQjd`hC$JXbd9QCNF>-FW?Ou8)Gm#I6w$tPaq*=Ur0*RHlZ!eLeqroYtt=Fn^WpUL;(Ehu@C?HD)!XxPGA3B zY^AUM^}{iE;jVbg_7+AGT zls1$Du~B`u>c&>g_vv3%ukR`Lulv+^!w?9TmFm4R+tzw> z&GcQ;a|iNv4AgHQ^aX=0TN^4ycQ+1Qp6|0&=GLUHwQf$RTD)#y*JV9937&ip`KskL z7A4&G<%R2eY7<+m9ceY5y|ga&LqGH(Ul;Xkqo!uILkdo< zOgN{E)FxHkPX?;koldb`SV^}aYv-*QMD>B$CmkhS1Iha8|MAt!8!~9#R zlNZw@b@-y1{N&cSVhHJ7{9vL`4mxAa#4xlxxLk$783s)lPdIjQMmNOcN4R=ON+GpH z_suWvxRSlVbsH`xv5Gz4zkLa5I1-6fT>i}gQgW1yUBBW=r?c3UtXg7=&0lDN>7hl{_WVbUG9N$>rd3j@*Wl(#5`HcWqZsSFPLCxUz2PmOPz;QL^24plfL?g81WBspj z$fvw(Z(=YGNDn~kQLUMOE!dwXJD}GQx#12%c2WS}iEQiK?~tGY!#JA{OUq;>A2_|# zX0u5ToL-AUCftFx8{|@)?l{i0<~T|=k5#M_GB2WF9Kmz}Fmpou4T?#)yrW_FS2k|^ z%I*dmEG}!;-g{}CP3#$c@anFvs~;Slen{*Yxp#j@$NqaqrXRupKgM=SZ%RMKl^%Pt zJK&^b2e2C0`0)sW>cFeSS}CbqglKVEVfJEvrE2>5>F4CDZ6EiFy^3@L z`??x9eONkldaZPfy%f}So?=I&ABy*Zgvh=LTCr_-m>~9HIuqSRO7X>$v2lfuQ~KfQ z_ia*!cvSs6g99~VYt?|1f&7kfLha*#LgE(w0`MA~&bXd%0u8Mvdwm?pE}oO~ap>_l zPbSa$$klCRN6=(c5TC8BTz>h2^a`l6qU@PTHJ1#OIi!C+{_fRf`bYynbq%Fg{`*58 z@%(pe=0$Y}JD@y^ehi`?=osva#PiH}{^|~V=2opKu3azDzGo0C=X|gAkkXvZ6QPG@ zyO+OMcLnD6@zr1#^;!?*Kcm5!?~99dCUGU^MwmQQS}I3E)6khd z{JJh6F2xu5rwo{4^H^+62G2k=6g4>Zq2Haj2SN#t|l;irEu<*HF~1I<(P zncfq9zS!Jz46`3VjHc5+wuvika{tHAqZy4}{M{8g;b6t{!9qbF4H+gT6OdE#%)-Yp z-v`+84^IDBir1a^_@qs4;Oz)MQHS&$;O|Q)KDxIs6G8xMN17n*s3eR*nO3GH>I=brU zcyZIgZ|s$>IK6+z)B76(d!N}w*V~@DqPcwR&|(=}lL;#^k=|Dhz}D*vlx9eDa6+6Y zT$GVc2$C?ULZeOx1zhp0X80e$?T)w_ijdA^u_!4 zF7&jlssZqQw7F%h(owbX&aeL(NcMypnc~%Ezwg*!=0`9z#hk zKqK)7mru2vpTA+1A^2aI|c$s9!#D-O~Qc`s*uemu_ELzotFA zq-&zo*IAlOkclErcY^#kQmJ`g2_JiIdv(u&*Kh4A+x61X)Q+Ad z?ghPtmdK7H&u`uOwQD--F8lJPBR{&eQ~A*>AMCkb{qTw5nTROkS%eadpt5=O?2e$T=CR7eL z@cpN{x6EG9wXVi9GO?yqdh??f#KR`L#h5pGY;)J)i3+|4`IaB(n7ny7H^O3%5kHRy zi$cN7Kc#O;zk&U`mvS9-R>djkE%6mXN6Mp|E6A$?gPa1C1w|rz99LWOoMhOMbUOYr zV6;gWe|HhVgCTgPy){thEy>T#_GGzIlOyy3Od3WySCdNeOdu|_MjS)S1g$oq=;#n@ zM*K!g?1wym^XY~C8O7`m3)e0xv(-Pex^ApKJ-uNS`=iAbU$wy1xognZ(^y$ilNsob ziMNcmX4O?zHFSHsE@^dEmD#I%);G6rZgpiet!~=zcw>ws8VN$geJQ04nVr3<#kJ|_ zHAN|`-_zr1eQs*mJ^MNnvkS8m2YUur^NXe(cMorRq|x12l9FEDl<8{nIhS^%)+Wb5 zHB0kjE%q%xd^?+I-)hd7w{L-_WbMS<06D8FJXy(!9@@98g|ilWnDs;Z7Q{2Cu2^uU zoV{(mnPAUaxVpZ6qB*OyXU)d7JtgHU4le4tWKn(uY?L)$+T3@;WJO8O+Kp>^N;3l^ z{_2tXjHnnOLf(?lbFU?ur%2?6Cd2C&TLRx`nb>rB?y2MO0vX68PDBe zppT{?3T!O2!+`4|rxgidF*x|kF=~pMCjIf_Kd_H|ss8fHw2XwvjGC&-)bh&I%F3FI zNJmCmh2Nj*V}D{c@&4%noA`2Tc0+NZNtTjJ8nfHmvl~m2CE1i%+>qTm-G&~29uz7Z`p$Lb{`GgN&zsveUB6_-T~l>+Q+KV{dgn^7UGyUlSl&>1L1lWBqA1Z> z0k3y3cl_8|zoFr>dseTy@AAf~H8=F`f8nYoaZ~5^PEYgRQ|mW8xVx!!$I(yUSoUQW z`P8`HU`?|}n5?NbqkiOJ_4NJPJg);EMD}IuL+y`i+fc_TCx~e0dl2>`&SG69^4u@qKQ))RQEX^owHLt>R?w&pZb`|GjleoSJX0$$+ns6 zb+0PF6%aEeWWa+A{Q#IBLI`c$qn^3m_*2NOI8s3gj77_-b%1u>3o-EfU;u@c(d6! z>g8o;XJ=~o4MFKe)L4hcI|;6R)+LBI3MX<1sf-}z>=xxNH4@(>btySL3GVuIut|dt_HZTTNL4Im##b`WvS1yQE^#)sL@jzI=6ek|U{m z_2tcLAHRB0#U=MmHT3(EaGR1I?@o%@_|=))o>c$*IwC~9vO61b!3ZO(+_8NRJjHpVbM=~>Vt>J$;BQk@7H?IBFeVjYK{n{mme{=70wa4LL4=LmKzk7Y-_H`=? zN#R>QdB>VVzdSLfND-(1IsEybU(tJD{cr)Pejk~2WQ&+aa)IfIJEtF8IqS~0{DFVm z86UyX-a;B*QOE=DeGO~QfK>Ry`a27z&Js1%IFV9Jm_cL*>*mVmcg>4{zCoGp-!v6fO$u3wTW+uOM@1j2d3Rdz-L#9FHScZ z(GC1T?mEa12HvN1k_@R&$bkfvA(k3?1sk3ou%Zx98P7X1i(ECYe}rAd&eK1VULmeR z75w~p`^mDWx8s<3JF}m+zvy%osJv3VOY3(f6fmDhzjg3$hZTx@ZM3JL_wbD%iYnp+ zZVV!_k-in(cUlUZ7Pk{Aj^Gs-Z$~thlZXi?Ma^}JCJ48o)gfCM%4lb^i?0E>(=M`) zzbU_Aj+CCY7d4Kx-tD-%b*!<-{w#?6bw_FIy2ZCmzak%-e&x2s>sm`4l9*_*B#J9P z`mB+?Q`_r}C!)uDdu!EXBl~;pfIm^ZYkFm(f1q}D3|`^yQYusjD)24{+opFh0%D2= z!oXifKQw#8QP?+oG{3jC*8Wwz+4HWot<#YX zhb(;J%h|oXHS}_S9$se)4OH+AnczXrX-k);{*TA zCzIO7x@vsI@`1kIZeX!yyWAyZQ8XumvV0tr4)}V0Xq09*ojv9TT`07DVUGAo z`Vp`Q$sXfgP?B8Yt9GwCvNUVWczR83oooDao2xGZ&2_S@cW+-_V8_XIS@qQwse?_FaRZ~`yRNk6vLAp_O$XS>I|4%8QWMN@Xr(UnGn!L8F?aJ}W^8vrM5b$ecamDNu|K#W34lcj*XcA{#F3fjlF zX2UEYDn_gk9E2487_IgQ_#{R|P^K&}fng}@d8RB#eHU}9O9!zgwx+t$4-qaSKEn~4 z;V|=DhqFE^+Ci5zQ~)P}YzGk*halRr-5#F)14;+3bcwg8im}q#13&&ufB$EGd_c}j zNN`C9esX7j|D8WMAiErnEOBD!_%9DjSyXWNm&b?rCs#s3rc9so`qhtq{JGD4^yn(R zJuS^X=TmyRc>Hd4`ssCgM_QUgzxFAH&rHH+yVGgMXH|s)hRY>-H|$Tv!eR2^O~?8h zDiKZkW)^Ld+65ErVWwy@EyB4Ox*8dLUq^V-aAk$J>4Z57S|tO>Nr}f|Safv6Fhy%P zBRa3xf7zv%Ol@4haz)>gj_AporWt2Z)}EV;AQ>{L&c+U7tp|kqlx&&M zYsuA#fNL_~1dn+^7G;3;!rdF-1h!amDhpoID&*c{a4lC#W7G3{wzZh`k!2&TB}QXO z+j5^?vEFtp!l1w5mb!JFdAP{yTwm9?X;E%WY)rKDX6^CeRnMNhy)L5gs!yL-y!gbO zR~6~6U|rv5crG0YvMl8ukYSY!im^QSi=Rm|=8Lh2S}QBH*mAfS>)~Q-C`r?NL3VDOlP1S% zb{>DZ{AXD-rZ)ACSB-uC(go^IAjalM%{#uha_puBI^cJ?Th_LYeEO0G2~M5Aso!#J zsA90aK25qtj7Tlbv{Ce)q{agCu5iP{`8LpC!F86~+t5ilsP= zJqt|C^U1HXU`T@S3G%DNol{BHVqWptCuLw!>EtKHYhv}%&%b5=`p-q9g*|J7 zq*_jQq?4a4kS$`|tqO7u#I`mEIP^9HoDts&1U*Cv(2K|-r zm?zKl2;H(sKT-=QYg%0jE?L^@Z4 zIg)+;be(~9=U2H*L|~JvDqlTiV50@~9t*vY#ZzA}OYeW;UG#_)o|RKm&m*S-M=W@1 zD1xVBNKTCp%Bk20&ii8L2&&R+R-F_T$#$Losr1D;Z+ClQxwk0x1}VaFOJZC8^pA0b zP$6m_R0nniUog&e?)$}LROiwAjny~eeM6(By(AOd>Jsq}@^^&o!uJEFRV>mp%pxFi z8X_q3m>mLRn-CQZBq7rj+`dhb(WVIm$QX1H2D0#Jkk>|IWV$!sgoQstSVGcBZ8! zI}lwHL+7)gpRM)_n=tgWaXi7ew*O)+a`6-UGpV*|gAOlzLia#%`PIxr3Qin3>hTG8 z+hGqtkie6zYnz>+NObS=Lp{~YvKw2kxwL4TKPWMhG+ME(xOR10PH$Jvvf8daeFcR> zSB8&kH@_5XFg%7ski0vw+-{6gk`nV{rC;j{8@fHN_D~#q&6@~ZaS5$_Jgn!HM0`kepcV)zhVsxS%F}=vQsDBQ+UpFElxy&i2@Ogjv%yR&> zN#ZgmkXy}0fYBwwUITRn?A1_D5kMUbV`S;VMoeldQZ$NES7AGiI>WmMu)edqoMCMUnVuS0K7O=aKP^vJAG{|H~r8!ru z(JcN!2~^xu;zO#GDgs~{x~`NImCpLHMgnd1Pu?_G0SJr82o@QFRjn-G%Eu5EYZTB> zsgKzRk$OZ-!>mrD#5p()vOdzgp7G^_4!j4lY z?6p|tFqbIfIANll0Xk^%JR^v9u*7C&W@eC69bm6!k2uPlYeKp~C`cTg&f;9GHFTw> zi-zeB6d}&()XKEqEE2tdUmyCgQFk-?kO;m6oNFt5tRXrl!jBl-M%=2C;2es64Dbth zUISY}U|q>cOvp%2awoejF)$DYon)I!y`>0M_yc)3@aQ}o9;7w;YW)SKovL;UwK zgTWpAUa7z<@NTlf-~LwPqc0fL`$FH&_WL-eU3w6wf-rLcDhMaabI7MjXKtdQ-UuUW zsFRo<^Jqx!;I#jQCFC^#LO5ZHRK9mEF^?Ebe>8lA`Cw6xz!Aj;YGws8qQJ!Q3EhEL zmw=d`py_u?>;$xenG6h0mp?3m0xSP}-(%rGn8Lv#;JKN2?(%=>x#5u;SlgrDx#-8@ zxliJ`??IYz(ENvCj{D~`fxHj7C6m7@ce14S)Yuw`K5Myr(q_pH6vw+$Y{2su#q`=V zUu%JN`|rw!0xsZtiaLFCbXN0NHLW%6St6bV+QPR0(-en0%u(VNBnVCM{O=CIk())4 z0RAu!tYt5Ud!Tsf*$=#w)+llss@DOh{2jzkwg~Nkg#jiQ>S_zjSf@fF;Nqa*z*#`Y z^b-*bK*l1R*~d|jD-#jz74(6hk~&+Ov)z{1+)QhBhLJ)n3Ng*#;=n0V?zbY^hL}6w zn~6x}6k}1x;PZg{&bR_lP>Kav0KL-InlG#+=%%8fD|+{Qqv@FkO*PB+E?#rI1}=Y! zA-iqUqMN^xq^@8mWVzuR`v;D!C?z1LO<$;xOyG1UrL@r{O}p+H-+tdF-_|wi_S#ho zJ%Mr{g~Q5wc)KmWz@e_#?B9Co^3`A2-`d-E*nHaOD2Rs)vsQi2Am|PY9>pzQB7B6G zUIn~q!^47j>Z4O$SRm%z|8ku|=|H$T+Pk0Uee$GZ;p$wlZ`sn3aCI*D zoFeJYaCI*DoE&LuxH{T+KP-i%b%FH7aCI)&H@AfG$2`bI5M*fGg_#H7M=yW_y{#O_ zE?L}hiX6hDNFsr!IQAe4HK320zcoGrO%C6OgcK`u6mL6};~%X+ed2$gM=TbD?Z}EV zIc$pXRe4cW$Yz-g?i5w$~4fnFNP~*8}c}bQ(HM%51ts zs0#Q4*r2dChrBc-i65IcoN*!CC?h7fqs{NjcBdvI7T1p8o-^+R6Nw2KsZ&LYKMfsZ ziKPe6!6B|aFBsJXEdSwSTk1RweIujUIm<`-8a#Ddj;Vhs7`|p?_{eZU>FD9UzQd!X z?B%AtW0eao{rvbiG;Wn+dz)G|b$EOeH;)Y8GU4-dY?4by4)(Nd?(wBZN2mLGHn;U0 z94VEv13QNO{^1>gmdgi9O9w7j*F}~M9~>OGZbezyit7dj4-S__M%N8)sc+ps>i3WC zZ>`@lSO@aJu(1WWFb6>&tKdPdh(^R*!_R=6dC9F7H<0(B0*n|%heN2Q0^UGs2ksC9 zQjuaH0AEV-GXR(gPkb1n0Vx3VbNpC{T(c2CL3iSi|H0Y!iFX%tPF7Y;cIM}IPF7V; zb{53vEF3NKEnk?Evv9euY;<7`(wK%~fUf_k8$5RH>8q<7fb`Ha%2vl;O{g0PnS`yBBI zBSR3sjOk;w&=DNxx;Tpzv{I0~{32$fXoeFr>&;3^@_3SxveaW@Vg91-k?QJ^?nU|2 zKUAWUvUnNaV>d~MM31f=NlovAYv&;$;$eY3B^}~hFzvx>q&;F5FNZ@;nDXPOpQvj= z{dK#-i2=+I5AJ(YduC&j)5td-VKAk|`MJ(Cgg(W=A`x<>lJy=%`F&!s$L?uc*VwVKtIFrkeBeP(Re9y2wQY4P zn=-SDvt{{^HilW~ke=3-p=;jS+5l`0_@&HWU+}9ova?oLB>W>}*cW9PYi!T1ty60! zM@QzaHDFBrudOvL2q+|Np1WrMx7VWh>;GrVb>I`1Gvabo^%xAj$HDJ(k78da&Xc?r z7x1Q);~#tgHM?-Tv{HOYxfS+_6rltjoMV9zAU0_p)<~%=>81deqV0-=`v8YVc|3~g zga}>47+9rYI2uOI)%s58HB*i7tgWpsZT2?jcv4H!N(hF>8XJ*fOu=c|zzil1`v5E> zH-PE*7A?yW*|D zq3%Fz_x!T!#eK>FAW7?3=Q;HbK>@r+c7yjcKpFm+R`W5mis#*nvb%X%BYc?Wm!Y0G zD7(R1cs*YKH@F8<6FWuqNfJKOj<}oO%iF=djl!SKbMGl}70VXiMqj%k&Uz2FlD#Oo zrEBqyi_dLKYM9-BX@`LbCkSSf5x|G= zs=}=CT3}(Cx4Ha7XVxta@h-83tx%6ozn}!puqZqOJWBipo&n4elJioNqM%j-vw>@NX*I8#du1Fl$6biK$z3k=S2KLWcR$Dl*XOY3& zzI*TtpG9z8a0C2!=NUFTI$HaycWZ`+*LMb4EbVdE%yhCZ>yj}J-G&-%R@8*%+9b-3 z@UkA;*=2v6X=f_HBy_CTe0JFo$~N$_CCb@l6Da#HUbgg{vgIiI6EEx2pIr}LrcxJV zXgxc{a;rIq5MrbiFvjHU))T+7f;vztC{M(-RP13!xhu92d4o zL?t|A7$G&4Qt*;T5&-x+HzP5ZE4hGp<3e)7S!fiJR_%!NAos<2kxO`9Ix z*R=ZnUtE6qFYaI6wC~|fsws-SJMqxLMQa}V?ScKjduYv~gAYwOfU1$3u*zIJ2+@E%?C0kt>kT3&3CFgg-UW0cbcuFb>6-q9mgc zap@Z3ndYWbKx#iw3Md!A&r@^;ILm!Cmk-xvLiKo);7dP!ys0(Z=N zeeHb-qW~reNF>E_F*)hwc(MSGkzs)=k;P^)n>mDs=G@K-rs6H%~~>#x*}N{cffD7r^sP zNHK;r?AA3#lWsz~Q*C13*F~vKQ95Lyie%5JO=k8=l#V^8i(=22)iU;qO{FMqjQ1M# z&(ddrTcKm?zfPa8Q2!=@H@gLuCP5}Q}?ke@k??TrepO{1_MBN{v3?uAY7_8^znZcJ92}#Yx?RC zcH}?K#f}86_T#yiDOY3d*kCx9gq8UGS@eUjgIt6cNRIZNFvx!d3J9RA|2|%zDU8BBD zn1MCF=9qz%s}3(#Z)8^wU%R|m-PL!~T0#x{HygY98{g*hVjIq>6W|+d0T_r9?hI#qqq=&kE7`_3KXX7MLV#Iz5V zTTwhz`d|`pciNrT#?G;-x_Xvyn9}x} z-nhm9w~~sKgkrlP>c*el+L43Th#$gSt)Bl9?BUYMKDWumiHh+kfG`@}8(rS>nf>HiDfC;m-6InMgoD$_5=A$ia8 zzLP=T_wG3HKHW<2zDd?U3EsC-d`^9gje_?*2Hy7t@V>?BBW5-V-q#7?Z)lv*Av6X8jo$b;BhVJHsUzj|Rx;&pgEtYJy1);4>RSUdY2sB{Q0WxIT+laZ5SFri7Qom$2eepB>)Jn5 zRK9FmEn9SHcTUNY4V7{AyT+@%qt`5rutoUSE?-Q+7?Q(N**@ZrtJ$`!yl`NDw;|pz z{8=wd#d=T6WV1mm?p|M0zoatL0$1{!#)0DMZokK@i_NZC*0^A6zgPV2Z&_kqHIlc) zJ3Se8CKg&eHG>V_(e`}y!yn2m6|&)kJ_Y!yrqV2zn`&rrZrkPmPx2Yj;}pdZXH8r|#^ z(V-`rk@^YZ>KsA=-5FbkII-e08>{@QZyID>j;19eMIglJvGrATTTe{la$tWcRL%9wSNzhBiK#P7RII*!$#H<$ zzB_g>RTSgnjXCv8%MtJq+`py&0B^Do{(_(fjxypv#;IujHm+^p`2Leol?O!K^hc~k zea7*}KZ+-0hnitiKd`C)U`Cr{vVl-YW-Gl7I@Sx_fkml^`KiIqKzTDFK}RSrk^XUl zJ55qpE<#U41f~H8bs`F~rDmb!GIYIAR{{4V3n)w2%9dzM7=Z7bA47RAsY&dh{UbFpr>9(+)*eBr$GCQ*sgydx&X93Q0QdXAvn8iwetyktEmJNOIs0hqn>`Tn0p`~|0E z03=Hj;emkp)L}wa=0)x0aG{(71sH?@WdAXEpf8tAKZmn^X7`mV{wNtA6pNN$v+R$K zaSSY!VL>u>gx+GSyH5SitpN3aaPARf;hp{z8rlo`TzH@ z|GE5L_%Exm@~ptUaB4Zw!3~8j|!9 z##P6*Nc0&?U-~P3mhUss=ipjJ93%A8_>5>OIg6K{%%snk!|t?2u0Z{DW5iF^3zO0- z(x0K90BBhjgo`+Q$+peLjE;kmOcLlr3iNI=Asz8TJhcz^NWu_~%aX8&hm+DNfqT*f z&j%DgCcUB#+SFz29viz)OjldjGdA{&+QR4P3HDiV^%qfJFHp=Vobce6hd080-G@6U zmRTV1AkC#CgnD&Cd~e!JKkSr^<#L}NQTPrUl`aua!wyv>3+Swc@(RTQW90lz*P@#cQ%tjhXrQ zo1JcS({J_N+_~Rm z!hKdc!SO%*6eoe3B0nIGZ~VuL&*Eik*mmkdI6q!Afb=tRrI*MUo>pCgYAA*d~mwA z!C^!5TH`jGSQicLoKAg_H$Q^jiNdRBe>ZR6BqRkK05ygi;(40q9WM6+zTEdJwa$Mw zCfMxp(?`*IX_WefcvcmyhxA!Pd*N^J-nXIcD7-i9y~R)&FaPTp*L}P)2SHWKm zi5)^vdUNenmN~Yo4MbSBJtHyE?M_V02>k|$*kEF2CR}(kr}yxSj0~E0%kf`5kO?KB zgzbJbheZYfb#jErh{&zcKobQlF;-@TFpfZkpi+&lm@)+2BU2V3xRLNa^Utjy=w(IU zcjgqS*Yi4hUWcHFvd^tUO(U&CAAf{A1lbqj3_XKRoc~g%=+ybIc8a1jFTPX%LVviP zZYbcu!YGkTC`!Sd1s$EHq%+Ye#HIJbM=cM)_fXQ|Ad=y($1fA?JIDkLEuG)xgTt2} z4y(A)TMGBO$4?a9^JLWeg1yEgUg!zLl6#PzS}}Up7`GK1irQTyMH;;)yv7Krh<*3X z-x>{X8V$de4L|;|LH>1=4j+CR_0Bt{A7kCD5k^Fx7{I&-=fSFGt>Dibt%s32-8ux! zVYx9E(w#%y0bfC{==-jkcS@t8vs@3q>D6DrzwgbGF)LcrII<6!7pH zaUep%=?mRC6o`}2AaVj=CZcKH8$+-+K5&ym?5Mht|CnR%qkb{r@XXc1%R&I&l$LDpR(V7Z0U}V&=#oIic9FO4O z%m=*9NWmH~(^JS_aSQ9r%pf}Z=d9*~aWOG*^pmXp0w+YD?gYV1>~GK@05^sJz+-4b z72D(R_HDQW%ajg@jKDIjE^7t{ui&2k!E^x-11SEeH11T!SanZNd`r83)D>?uup`CQ zD+kpVSylI7l@~cp{s?~{8k<9+Lrlb;>?cnUUs1l>m68aFgtY^59;nu>S(%Vo#D$VSea#&wM?DCcrWy1t-&$FK8AfqLy)Z6tQ5>VV8y$5>|sna}uyB3<@w?E~` zDNjo)&vAr)Gpo&Rw=IfVY_CjDue2|YT5NOB=SB9a^zewbVsC`?8sxVuF;*^)j8pRe|`0O{F=|%<#7i)QU=L zrW46$HO-nGoDWK9IDT@MCk;=L6c8FK3|qX4^b=uAP!T$OOJ@gi_*9n^d)%bip=lWk z^QT^o%uPbSbITpaYAZwy;IDo%ZpFUt4uY!n#(hieTz#FJ!Djx zmbswbQS3Q^B9pVeI5nYoVS!{Y%Eg`OGD7)conC-Aq?I;gdCFXNsI^#PPI+o(smo#1 zMJ52}Hn+o{A#PXn2gJf$gPf3-#Mqb-0JynmEQKvIt`ajc405d9Dq<>N9$h!HM@$np zBigrI_*oz}D?`r}JgG^d+-i#A)TN!o3A+vaXRujLV2WwPg}=03AH3vrrtQOi=0=Q0 z=uTct%>Sa=A&!6Eb}pg`u7iwpCd4`7tu~ArBI`AEv7cBsg^|u`l;)2PG)m-n67P-o zvZ?WnlYQTa9j${d0tgw!iz-sns{8!1!Kf6sCCaiW$EKHL#In39#9m%m*}kqp<(){3q_>bMFQ;#Z<3jVQ;1UAea{KW<6 zpG81kHJ}8-Wk&?26oaq~A|vu0$7KNw1X1q*%+`oL4tWsSUhoOZFZ2+ivw={P2{QRi zAMxoAEK_~^fd?GBcCpRkN%g0;$IK^BnngKy#sRpkxD?}DCG-cD&^W_Y0%u8#a|Q23 z1V$kOy)YnEnn5>j$RqfWBN87`ClKg)mXcNa&ZmW-ZgJJ>@lwd?;gZEkAU8kBP(5K4m2b&!UY4(^%!?pE|CpV zhlLfydoj)hnNB`?AUw5hTEztk|%Ab2WAF8@#<9wD%{p7mxNV{QM5QKR04RgW;wg zH)1A!)>w~bj2>UQ$&~K%7!A7mMz(6(Yb%jF9<8q5P*J&I16q|0D_@6hX#~EHb-D)R z^!~=ojOP0&&i9@CmFQDmK>0TzzMktFc@QyE3G&-0|5n)YL-LiPL&-%s#y?E^hb5!% zvPA8}rWvk%c-3p=FNQ5&3g6CF?%R1!sC-`k7vlZ8=>6D9oG*F*=auh9{WxC!<*>e^ zm!rIdmp>4;{f%h9ikE*SZ2c{$U%>nKV5q({m%iIjKZ%z=6e^$Bze7mq;!y4aeZCvE z{4(*hn4o(Q7AbJ1jmmlgeGENcVb;dO~<*W)$V$hF2snXLHLB&cq8Z z^K#73Fy*JvekO}Wa?$Sy@nOmj&3pmpz6!LD@eT9*o$4K8B7i$+e1p%I=05*g^-eLB zU61nb&CGj>wn2iyg0<`zdoaesXrnW+4{1M8*pS1FMzSsw$ zQBII!Q4anTru>lfl<1IGpd9=uO#6q$fbgBv_8|4^w_8`frkHeSRlw z`BL!_u~j(${sjIN=K04_KT+AE`KE_yey#9Tm`t#m@4cgD*<*+S;so#eB$gj!y zqa5b>yHP)mmxDissed`jOL#f>W0?9I(0(N^|4OKQUjMeBegW?v_@h=IBXY)M(w9g1%TkVaj)irQn}5|6dBtpLy*c5zE0Jvr!KI7^Z$7p1*{ikM$#I z<@5T#8s$EEKjM#J%9o+MftQ0nhAAIFc^_~8`(ew6P>#HnXdnDht3R**KG1JDum3v4 zd%iyA^>1996izEdAMnR86E6pU3{y_4VpKUUxaI8-Y4og$`NWgK2!@lKOG-lb zj9Yn2ISD&X34DJ1 z?&&+YVu9Nd?zs&XGB$Ozy5*Ecd9R|zj+_W5tEQG^Hb$7%7f4!QEYn}{L(y# zyefj1haZ@n^#Vm0{UeaSAOUVt4M}38&wu3!-jpQ}3nLM5K4FLwmFNgjMw-%bsBoCx2qhF0>_Z?fV%?AcKIkO@4GqEf7GAI- z%xrqyY!;it*A&(rx=Zj>Wb>BO3K8S?n-wh zT5Q>wCIp{bp+Y1bj)vD;C^E0zl?8Q}f*)&~-e-kIOu~IzLSQdUHXkaD3U2nyY zbe2NxoxY>r*}C~#xAphk_N~oZzjL%-jJGly+hK0Du#t!z#$R2V8*!QO4oj0+ea&i9 zkCX#xeHU1Lc?=T*-G+N&1z3FS4Ha&l1Z|@DyZ`$;=o0f>*xa2!W`_S$sTfTK$ zAKH~h&NT8mT34?%H=o@KE4A9#W#$&`sndT)L%qD=uidz0$&FtF6)93GI4>fhzzjP# z*vf#psysdxdsty^Mk*Y73CWRkL|FnnqyV6)2l5gWxj0eN$iUkN_?_R1AJ|>J zFcsPncWg(-)Hnbt=_UM#-*P9BohbUH^&R?BQHK8nxxR&74L}D_7Fj)6X41~lCP8sOlsPRGtfkz?-ENVXm%Z_H zvbVJ$$%8yo#@J+A-@wyPJDwIJr`z(|%TpsM)s!J(b&rVLn~$q7=88Z$5a9c~6LukF zAr1J+%A%QjxkmySE#P#`Ex%lM#RRBPZ1BFOoV-z5L`cNh5g~Ij1v8xnPvUy~dB)VY}*gq>$vA0 z$Gz-BRnI=Ou$NVz)^>+_DLbSb7m|e?kHZNO0ihkIim=X;Fc(*MKzS|m4GOw#hzh}Y zMX;0lVl6I=W}iHl+x+W&h=zxxe*);b$KBI5(xc* zi#D1mTT?8%;jRMkMViI5NzUSg)H2Olq^Y6p(w6jv-NR)Bfbs0(o1SgjyTetV4i`mH zU+rDDEgZmy-0L+?{y67s7?6X{ zufFu}GwYu@(gj%@^wfuV>tCLXKv+3#sC?`|+u#k8wGpx@h@=wVv~)%3>f>8#2)HJcaQu9_YSha&Xd6?1D@h1fpOj)CGZp3g{_)XaCan zR?3831Ru;q2PREi5PhA~Vm7FLuH!yYr5b^ed}4(q&@AYTq_qpE1ErL5pEXYhUj+yIG-`#O_f4p zAOQbV#bX7>6Wc*0&F2|h32cSCKjV@%I7kBkl!IQoC@&{FH96L7iV`YWC4m(vLF^b9 zreK{x#Lt{~Jbrxe@$ew*9GW^+T)6DSz7GHLJ|yXxK&VeE zdPjQ|`6w{#fv~6Rbwv=`mIHGCrx7~Ce@Ty?ULd8^;i@0>)s8L5$Ow#dC1#s4 z_q0|nZ^+7NpRA=N;j8@^7B+qM!j;w4D;l$kI#+tjmN(~!`JRTxXsxIv7k*N1be~V8fX`zqn?g^@$y67 z&Ovw9U`J_I!^oGC{Jj+wOZ-WxmAz%&-pW*#l-F66k=?esre;-Zc1Go*-2PE#{ZM7) zvigis!+~whLq40$H`I*JPVqZ=UA38+wOx6IT~$tJRhRk~LuSoDRrP3t%hfPiT{TdX zX|V3@EA9(qWd-nSH|WKLD=_HCL9YVrT*d^*RJjZ!fPg{-i|1?w+Y_xmOl*!=M$_F! z1cKlNw}&%d4+WyoWPy;MSCFB=$s>!R41Hz5a+wV`)$2SiilNXBx_bB?dc{vgO#i#W z%H55nDOq)kbBnrbvXRI<(va6USXR*Al#}LbajS2bvTQb^F~T6Rf!yvTgQYb{XpmOf zRU9MHL`tq1T~NNfuP0A^1Rf{!URPlr?7}?G7nTJga&v45!ayQSOuiWJ6e}MOc}U{{4FBTt`sMX$sS76CI4`K~ z%qi}!L0~Lg*uF*IBvlR76)moI>vh?+T?G~6ZMnq@m$+bhH!7J$zPyyemj0aL-nvYa zm{HSLR^C;XknZouwM1Y7h5jv8u}91+LWm z7FT_1cFW4DnpJH%SuGRwjo0<5d$czg$7}pbdI(+)Rzf_q;Dp!;Q!!lH!1x3sou`1SRcq>O3aI;LTi&?NZVJYUDgEPbDVO|TIpVSd?t?_=F+7D-n=S{3s3`E6D zf61sK7H*Wy!rzsj;#{PA6cE>VZoCeQ0WRQV z?H0@ZZ$PMtb4boC$c*m%=(uF%`*6Q;&`k z4xlyuth?~6!+2IoAkmC@z}n-1+>H{>lf3YB^oV+RlyZp_j8g*&^?+c2;b%Wg%|ZG$ zyCW^x9&Zsdol1m!S5kgiVu>r+VNbHu)WV%ZqUTJ>cd_@N7tjgO0h%Is2MeRzuJDfq z<=IrfJ;JE0lka-V9QifeUx53+GXH)TzaLHn)zEu=W}RY;u=mS%eJ#@b7UudX`9*P; zvKR<2;3ObA7AeFCY$k-w%{d8PZ44`obCNtdoD(O3_$p$9q}Sz~gcz&8B$mixUy&?`Et=z|F?aC$8*7R{#Q{M7V{a$kxgD{{d939A6DtHO`hRH|8F+RpA#1k;eKt+Nt%tAiWv}Gel-I?)r*zGBf6pXrZ-cipY zI=cJ_M?E{Q1#1CmSH<>+nFQ~cBVT%l=I!s$pPpcUfYPb;N1JtLbp`1>JhGm$(}$aT zP8T1bKc3r()v>EEWU*m7@lvE2uPO@PM<0&qmS8TH5srKrLTB6zTMb483Jbmh;0~mt zoIpB|ODB ztnV$#>8NzMDm!wDdh4O*!E=c?DK`Ee z^(9%p41FmQ5(MDXgY$uQ1eZzu(Nc;6GF@btr*Ss33CV$ULIO+BaVv>QcKJ%{D8(pc zvO-{eZ`tUwq2X~~>FCJt@-c5tQ)yCsLVk^+rG2t;{C%Xa^<>uMJMe7Cco&qrHgLHM zaRvWVx$Bc;$q7xC1o6(ZYhJu8DU8khm*Q3SW)z6-ED*F>s2 z)ZbfJoVqHC-Ng>7t0LLmEIwBKPj*d|^vd+B>icmB1>F?IZez(d^*;bXmK>-4njMW& zH>&T`yf+B<&P?imuKWY@F$vtqFEj%kb{u-X*8;DA$LJh7#W9tZk|ZT08WIx>Q!&wz zQiRcLj4)5xK3XMt3Q3C7JUuCj9Lyib(j{!E#3-lzX=nY>`hfUN_6Yy(SXucjwvFLmD8 z%a4m^FXg9aFF*d%?B$$qGe$>y1_pXYN0m22SJUyKtI%(?JaiTMEgcPAg?`i6U#I?D z|1(_<)@_N;Oz@cx0qSWqmIvI<-)#%zh< z!QEg7NKJ_ZJOjw-V;mNYk;X0<1Z`-4$^Tyayk(=)Na0H4qws&%^}w=uy@vH?N+XMY z>VHfZ_%#Glzx}PRef8<5zW9ZkZ@l)JojbNp4GlWtk~1?C9B~P;lo-$kNF9@;FSqjp zIiwY&4)?Qid#OEDvbzxq@29+PIcVi3m~KC(r=bc;?pbeVvtF1Q`i`)D`f&aE+7UN}qXqT?QTV}3 zj}ooCjeVeiq@V-~LiWk9g44^KkXFR;=8D+70VGg_JbX074E8e?XW>xhY50x?oK!(% zg~3=u@8`nT1`q$I%(zoojD2q;HK+uE>O~uFGm7Yfw zxFV*Y6c_BZRI@29^`rY^sTvBV{{xNTLM@518I-=1w3rCH>BBc@TSJf2q$06YUV}3* z>_a4^kes#7p3kFtgUU?I!0KQUL>Egd8*0dkvBtz(k_@`y|Bt#ifs?Ab^2gtOYgJcw zbys)wzR=ZM^~Tl7p|%kuxk){=_&vzaTh2Q*LZ`JodE;@gcDx2 ze9wwq>)J-FdvHl8$2`VhV7C7LrS-4<{+&M!oqfgFdAF|^HsbO&%`NoUE9LMMs)&CmeEyNLN#LrF^9gu4|cP0h;UlL1X7k3$k{VMm|$K4fB>eBdFd zD)IXlpS$uN!tB8mW*q53d6~#>DRg<`uow&&UUU6J z-se#yd%)c6N)f-~K0tcR+|FwBncUu|oa{40L!cBfRNbJ9F(|eaNbwN0aJhi1dQ?Lu zKrlb55P$5@Qx;4vt8&IA=GKz~Zn=5f=+SQma%-WHM(e~i zGT6=n-Y~ai=hfHOS8;dfCJwX_0UW3s(Xm?mB>>)?D)jpJw^v<0_S$FO{A$~_uikv- z+Of{xv&L-M_xeA#-uUV7_H7x1-+%Y%jW>S!I)0a5h15pxx5H{>%IGFgk0NiYQ|WQ7Vz1`Q?AcH)Ksp+4hkiZxNc*=lL5a;pbamlDm_ zLbh?E>6RDEQi6jd9@!3(Bo@Jp1;&Ni>Y8fgI~ZLvnr^cVZYdbM?xb}VwA3^9tw&-z zwe_dH-8SFqqbu@n?CWm(`rEqh{-$;Pt#qEMuX41n9`qHuM~{X}5eg595k`k)bXb;G zr==F=rv}r4`4k?W8M!%KfV3oZd|8lrSyD9Imq7X zyLGX)4a7|~W!VC@x}8HRb@A#4cKOeid7uI5i3cX)haCHLiI;&6wE(o92$Lb9qt}qq<}I;M!@O zmBkICtIT7XJiu*!(np6G5?HWlb?47oFl^+)j-s;A{8lA>$a$>;kZQi8VeX9SwdNkh zg?yIUH~TXdL`=F6`dChshK@)P;p)JVBEUGy|{eF_#w3umkb|x-iT`5sA``!xU;*h zklG+0>vJGuYn$H(N{EMwjHs{>o`ggK@P>9Fi!5y|TsQ@P=@>+eU$&nv2+ITh!P$f9 znvffAdT7YW1s35`X)VAa*xxA5))6d`k>rzXx8nDjqgWby!oMfQ{7oNym+R&E>8ar# z%U6f5H(Ye3Xr!p~`|J?*tJpfJ2k;{Mx;(_{!+wrF>5{$yYCsJOL@-Hg>2Urqz#oRO zdeA^7b+iqfFla(;O;trv0Z&g?&+55@Z$RN8CZKGIs+qwb++Wtd!p{mcG$(EaT7$WB zv~S3)ijj*tOKK-B9bP|XXo;rFTHw-A?H5lUTt0Ti=&I?1N3gjbvyZV*A2+|DdsBl* z7CQct$yK=LSKWp6wbM6F>bz)DO|3<8wR8u)>LFM$JG&L@rGPrW| z;`a8XxG(l%&9b%z;@0A%gpmP7y~yHaML?I={l9lxvCnu8eRa6bkOEXQpW`neCAk z^GAJjN_{*f1q-cbJ#OW1XD;N1e5cQ*tI_jH*e|V+riLaBgUXUKyNbZ4Fx$Y?a^_}W zZaT*71z=#(!R(VK0Zh)Bv|{p#kzIoalCcsd*9T{Aeo8neS7!-cCt4>YQ2TI)NE(gP zPt?Q(pblxda8zZ(5W5vYkvbHHJ`xq@I2k?n)*mT)-^3N@Era_i@)8RN9rmS8zPRgD>M>ih( z43(zRni*uT83n@!wXhgdEEgU(f{(VfOExwzX=GQ!)W)gxwPmH*r&u#MTwvzr989u3 z<#J!IQEYCU*-=)}HK(z8PFH!LYyO@rSb==fG^~2;;+EkH#{|jtdh*p}-ulAZ`WQ0# zvGS4gTiX_msjM71uX)JANdwIp5aYMb+Bv#w*|^G@iOW0MmX52Q&{aOJUNQR|ofz*C zE^L&}lMuC{5$k3kH!Q+2%)@EKFk)VjVfwPuqQ;&d*=UUA_cb=B!;frvfALyuzxBWmqESN3rCgr}+5mtyT+9Kg0kiPY zQC8>Y1uOF!^BW8EHPW*?x*2f%p16T(7u)>_zh?jTAANKz9%r6;9|ppjcoz96wqj3g zL}VVsjl#jfun0g9&{LclP>ooJMthqqO&s4gt9{n+mKgdJhep59r=#zQ)2&|8UnJV| z-}cz_IqUt#q{@T+9XaRTF;2Pw_D|D7lP|z7F=ZU2H4atD)L-X&bOKb>a1d*Jd$I7y z%o$4;&$x8vrRPr<_D)8=W_(I$NN3_vAv0K?ErX-B2(6Y ze8ek)o%kfUx&jBfRhI+X;;1(;>^Khtr37vV4=imDw3ige!&^^Z@b(nLs(cv_b$gyV z?KmX^z4G<_?0szCsh5UJGbzK=a0LEtz&*ExgcXc{AsHJG)Fv4c=Es*pLDOA0-CVBK zZLP2kAJ;mwZDz}`ctA|!!TJe^PsMs#xZmJ7oPOHj>jzHu_H!_S4P(4SxVZySgJy*; z=s;wkVNgyIf>ubdkTG8I2-=2O&V}4Lf=N>*jhNdxx4q2?qtD~jn{ICfB14=91b zcwI^BfYzcyj=qhg==)Txrn(Z5c+W3SI}p7vxz^v_lCIm%cPudaEaWM=Fw~8(NH9B5 zWJ2qFL8?gNkOZw`k?Igvc@_iBh2s_ra?Wf7Gg~(M8*{!fb4EO9=L?dX7R8(f&IGid zlC`qW1;B^Db=pxrXDrWN>*usM*Yr@t)as_w8B&|l0(BX5NLbK(1GM2i*0K%nV+Tc7 zClv6LJG;BOJKCKHKiOhF1;Rh&keBou?T43~c6`qS_{$aj9Ll);F$j$K4f5J+$DJ*k zq4NdhT9YZ*8mH(eVfw;L>7TP;}ng7e3Wf&zI~?MxC2cy7wm zi3NyDdU{=EB6`+;cv^wsp-EjJtC z$AQ@L6w?*%-Uy-#Ygt@q;l3zvsq%VHeWtR%XS($Z)B}f@DYqfsmlAj9Cqk6dcZb+E zbF;D)H%YSNT@lkBm>1VQOSsX}EC>h`;9Pdbv=`O#BK&Nj`4E+ZU+6yLCTW9OtL6f& zIqw>)EBGZ;!VY%R#A}{dvgC`<`ZB$suGUC;9XgcRRM% zU1CfP-0g4|Vq3-W^nhU#YilPCD=ig22l$JIj;gF2HMF=`{4A1Rc0R`IHI*ZW78MPJ zZ^o#G;^Kx;)GkJT{Wuoxq5HBBoVv)DT-=GRkf!AG5am8H>V~Gd@s5AK^>3?;<-d9N z^Bvj^{+fq_yVpj4im|X^R*trM-Q@-Q#zx`&pvHIWs_|I=^_hi?O zsLlv>)F8fl&mHO;XvcjRpVClq7N!jR8m~ei_-^mx^a#b#8f&cYrwN@KXr9Jz4Qk4OppB8{@GiHjMT-#Ak=113+EB=R=Gn+ByIg;7Ku zgF{IpSw6^X>>)GT$>LPMoezwoFvv@_ytx!K;8@%oF-z`On5Xa!}d}UC#56AmM>5@`XMx zf^W#u4!m=P@eam1O&a$sZ-&K&Ui24TT!4;CtI6FdC;1R`hY*Q@oUTxYo2UAQbq_S^ zFb|=u1^W=(^{Z6)wU~cEf+e%bct>-aA0ir5sd+cI*&sV;_@3xpmL2ql-u@@WWReJ$ zf#(8HP487v5qoa047^7xgTHRC3^>Rov6!ZL>x-|HugPM%k3};u(PWzJ;bFs!u^|0h zp;Q$r=hs*icVZa=2x#go3M~PDPF0)g%Y-cgbom9a{UWn2VOXU(ekV3$6}=6(%~H-S zMnd)GM>HXdv>$cVOKz5Sb6%ekQ?p$%_wo{*&<>9YK~Q4OBT7NdYQ z0}K{#;UG!=OgQ~x{Sn{A_6g@0$gexL2J>3GdZXIj2xeL>K-W>nA@xpqt=^2j7f85E zFUU$$;8O(Q4t0}lvy5#RcH!wFl1(eVuVTum6HWehQ=}EElshZ|x+1njovnqM-PqWzby{}+5OQAvt=zmfxc`&^1<)sx29vQ6Y98^#QI`>Vav+y=!9roboP$TWZ zhwzhUJr;W~_UUKUZ8Gv6%T>}-=ff9LdO3njC9tQeiQK3BNjr?wrAqkWd1wS+#?Jtl z3PW!E1A+*4=k7!00Ro+L{9rEI*+F-jSG`R$Tp9CH^-SdM;pIIa=};QfJt)tKSH-6c zCUN|nRk96tTF*mp8}q8)Pd)K~MjylPKz>=yk^g{k2U5o}1kLI9ig)0S>l03|fo3@; zY|4MgA$LslZbjPndC%Zqysk)MU2}PRsIDg?FZ5B@6Z$lqi_SK`(yPt4 zY6aM|I&OLNq%4Qx?JxW9(US55p&1orT?N%ChbA?n9KDq zPz$`|_?baF1y-Tc!5fxVNSKawimOuY(85jLt;c5exc5n22+7TOO8 zh?nhC8YV&kL@MtmdgVy#RKV4In9jOB4&X_C;u*0PEwpuCKtC&D|$qRR0&uKT%|EQ{Fj_}_G8LeF9PtJnB{ z$;!K;I8rS!NeYUt|*~MuAKe& z9H2PchY(fT1>o$;$WJ2 zk}AY|RJ#|G)?;2KS46(UCe!g{agH(Bld21%yrVlr_vfIS>FW`GhrAdBe#H$W#)>3YBia=w?)+P_hG;d|w z)EC&6OsW?PW(bPV$gh!Byq!Ib780n)O9IPYWC}w_0wjIT%*_67MX2*tWZ99NHb-=Nq$m8E`6k8zrC&mS;A~ z`^?`1lMQbEn(AlgZ}h z@#D2rZ7eArFm!)aSI7nWP++8V!f3d>C7maMBWeN}>aLNdq^72(r>19B@Gvb-fZT#8 z3G93u2mY&Hn{ENXW0Z{)<+C<*fP6&T&dZ0k1D;7yZ3haj;F*h@C2BZ}*b{b%EZscn zW#gj7%KV?y?kCiJ@)g?OdAW6=YGi$ZmXS~;kexEi+C>x@92pBLDEtl`pbZnxZns+e zYihA}rCsyCT6@TJ^#%Ar-i?_;_C74;UTk175m*36^kN2^6!3jEPGSVN%mW_>yj_S*q3ir_u#C_ zm4n*w$aTmB71Y|KJEZ%tKR+)Wl=2Zpa{qnUpPymYPZ`n54_Y{&_qXjR;Y_{_px)NA ztk?N%|Lc88t&*=pf2*V;(w*on?=>?-uX%qDNA8U8FdqOq!|2GRXud1 zpFuqo7o#2>ro$jvuX=YSR7+w!BzPFzNl;91+#p7y*ULPTZODiHY@jp{@lLawio;dkLT!2({RL{k<=kj^gwqjl<$f}r2Zx>7TRFi`zzYMe{%Ay)E zD$PglcWJN_-?a&Lku(OPu1+a6)iWP{f{1VJcDv@|K5^M(X5u!C37-Bt68{xLt*k>t5cUp?v*QeBhb8i53_$(VhoHiT*b!B5#pFOb0p?BXy z!!SaIoPt>0G-8S&FG*HPuMY(W=8PXVdSrWBa}xqmmI1#a_AX+17uRXrj@S`+mm?>f z2yxtL=t8#OhWUi`oD8dN?ZuCI;bVDVT7-dWFYe4nWX1fNlBVvFmGZDSK7Ohfk1F@{ zT+EsI)|ppL4rkfUI(}zU>@)XE`xitBh-yl>#)PjMHdiZPzu;KHk^e9$ieSHp7G)z6WZ8HX zv5}ube1a^gOhPu{LX3(+@pa`%WlWiXoo5*j8i_kIYCY-%ze`d+T}olwAj`b0URy&} zyq46q2?_bh5XY$Ar*oV2RMz5MY_s-RA125dU@IjqDAKoKx(vd>>hWMVcyN4~g zdHRCyt!?*})EDY{S#8;{mEWE}?b-_)TrOR%@k1LH{)6&2N9Xz8_#w`~*U)$T84-Rp zbccsqbGe|b^JJ1tYfx~1$g^l5B|dJxQLPB~SC71l|fAUKFXI+ zey#MC$S+xe^8+1%EA0{(jNqyWVTmYnSxUE*lEV3AIl@+obD$R9Fq)>Ua()6;xUMDr zg7T{Nw{+U%&!qJJ6-;|*D5JKfy2|Gd1k3%ttPGytI{+V9 z0;Z-Iugw8f3P*0gL;lNOl#v@ASmaNa%aC%>75>!a%P!8|{OI!C8%HYPyX7_Vf4p{B zS*R^9c<2uQ^lRods_xA26^dKlnBsLS{`y&4&htOM8ojQt>rvtADlEQRm2 zKMk(9kT@XsAV!o3EY4*ps6_|V52A}yhS=J=0kF=0SbnDzr^GA6)6~GdLlm~Y|C%^cS2T`{E_IvTeoZp2Gre`eNy?H#_ zzsBVKjfdI-I4z^Z((J)k>wisRPN0_81;q~aBk z;i1~LmlE^dkaBCXSm6Gf6C;81b$zROi(F&ZOHl{uDmYp%He!lzyy{Mj z(5J%RQf@xJJmu23VAEFkWdF^HQMYLgGKuPS+4c6Lzcq+0n6$s2n%_-f8~WK}+-hK) zC!ImP0VL{3TJNw&j`XuqzUM$@z~wDu2C1Fh6-pv_ z)2?gD5HR3LDnksR5*QB8^)|~0DZ~~gl6^oavPxt!6v*`dbR zcYO&Qy}lA~FI$pYTZUkNhzT93XC`!j;|C-5ImNteY3zpt!suE|*AFQ!E%Wt^ehDP% zovv36<5flb0CH~#d)hqhA;_+@9T?I9`5}Ji5Q4?e<=Smg`cK)PIDLedGLx5|nY8?UN#Fkl+LNVS zNBzX57`1KxcUhSv%%agvpPlh6(*Zb$;{Q%A$DxYq*g2>S*%HJn{D&Ci! z<8vk6A8WmjnZWx`M#8*3PbsA4N*qsme`M14_a%LQQRGYYb@4uXotM8i@+mKWpZr*2 z`M^cDm``f=0>@{;n|x%bb2$7D`Dwt<03?A>RmAZJfSM01Bd;aM$5TP9(x+tmJKB&F zJUF1(KRSDKHDdY$llwDE$orCIHaE$Gux5}s7m=zMV(n(~1B+!M5k0)~$UQBGa6vS! zDM|hPhbs0dNxvrt}}_y z;s+ShY^fvE3VRKtFF}B2WG#{*vA~pya=9#Fh|bXrNe^Jg#YR6VR{xZ&^il2-7^D{GD)jcA2n1D)EP5 zP6!^`Y(A;{7C9t{$B=`Dk{HK$j7OnBdQ7laEWgMq&0;T`xeU%+G0_2>MT`Z$A{G+< zzkM;)osBE*U9tSTD;gVDe0Mp1ZDe!-f~OPMo;)g$-*D+%VNhtsL4>?qH??Ekmn$ z3`pReNS%CFqziXzea7uWhTi~>+xIdpexR^U^J%#%@(eCc2Z>v#RDPR7*Wvtr0qh1z zUfhoJfVp(TN_RY(xL6&`*j(Fo>O5{WCCY6upOXtBbmyKO%7k)$Jc@z&6Rwb7%+c`OShxD}{nsc?~+9sSs zxCBOKBvtz3iJ{olpu;{f)Y4&JWzJP@)^_2Y7VDksdcE_g*(0xyY*h^DVC3@?!%zZp zE1eidCE$-7`CH^uc8IiC_bBXX1w zaG}A3arsk)et>p1DIP~JFXA`FeF&sW`g6Slj$5}qnZwT5&shEjJ^z%w^8!noyS zP+($6ahEn9TOx+kQdq{aGz^C6qYJKG37_@(MR&+MW>i*9MO6i&u~ty-^7vdsBD^g2 zs&W|LkXV8nCE5{k`yArLR73wuL1&8^a$y$YNGX&z)UoXq4av>RA6kfQFCo)V4+Wqt z$~t*zMl7okTkkKi_rpTpUqADgjv7Mi0?X$Z_U|ej3|JS^%WQG@ZgJX&@3z*(-pFyR zi)mOF+c1XUeCgZx2@73B;gGR^E~HqhZQ%6rP$y(T5p_QJ5h-{Oofqd3#r5H5b6Hd; zQ%-ZilQ!n8!#Uom^##cgUC-Lz+U-KC0HJjTxD;=(}s$D5+ETPM)Yl?@6D2rZX-vD%eljmo5lW% zZ~qgKde_7Dph~%ccucvGT_VcRYt_}T^E6nGOeS(v|I?A<^25aYtcl)bP5k_VwF2hj zkJ?R$)CiBC71(LgVGfHtCTazE8+@$`9T+Y@_%xIf8s(D|h;n!_o3dd33`hj}iNJBKIShRPgSq^XIMV#1yqQoWHUOxuxowm*2Ut zvG+ud>h$Dzrd_pib`ZAi8u+Da&W4F=9^25-xa>QNp83&;%NMi`TXx%=(JQA8tH?DB zMLk*GROV}%f7ST0mz>v-;u*Dc^O$M3tQqggn%x#R%^kBnEPwFmIv7>v2kV3RBUbM` zZ{m$hT61frZJ022$nNHGZI4J!i5ImLHk3?z`@ ze4qd+ZX~Pgz~n*1TP!>cm&fotyc%Gl%Wp#%&NzYoWm5CzYI5zObz9FHG`ttHx3#F> z`p3Q{OP=}S?y;LMSw2LST}JE0-(Pdv$4@R^^!WSRW^G%yXfRon9YDC;0ZPsV!{SDw z^@8+eN16N4UCi~vi^zvUSBJC>S@NuD?t0iX4=u_YG`dbxz;~O05wPB|pAHp!u5@S5 zKC$Qa?6daVZoE^6J)uh8e}eDJ5wq7j+at&McvfLg7JK*B@Lks4eV0{^eP3Kf_r zq3HW)X@4lSHWPVev{LTRAXHNWz%P8^;UI^kLG~v==$3l$VxS}|GwZ2dgBB651p&WK zTN)gt$aYRyl%zaZvO?qRuC7PULD&-(I1}5Do;j95FRGm!fvAnn6OF(a7V@I>w&}}T z7k*FdwdY?yB$)z}&Za=u!Z8W^ud+O6U}fHz>tDEnHrv5fZzQTY|E{Z8gtYx$cF5X( zX+1&;k`HOyq>(HlMi!Riy4C_59~zp;RF~vtZkIaA8c#e_l0GD*U7uf)KCX{1`}l}7 zW1=}NXd_+R1HMV_6qh?1A#e?3NaV4g+a5A!z|_NaLs`j1U4(kH8a(jSpDVatiT{W? zat?J;SI@Xk(mOU-21)(ttrg9(Fof`limXFNiT*?GU($DHtxtr;k;J)?(#Xz^a$k0^ zvJ7%JsQ`Kl-F@9FLq3le34E*-7&In}7Z1%%cBRY~m=EU-A*{+pbU;@**I#M_(xObZ z0@A}h3Af4j_|2RBB|>U1%nbKH(gSkTZ^qsL>t1+>Z47adc~d8jA3X{QamsURaD|voNS}M4wE&~i+RfJZa?TZy6xTMmy1~U9 zVSXIo_>FtT2@-tchPB{6C!0qH%gKfF9`J54AZ)X;ZrIvyTp23wDE#(K?U&4K2=8kf z+j-d~tD6EN7k4gtutU4}!o_(-o#kCutY14Uuj%4TH+GhH7Us>E;lFU9?p0cMFTUcY zjMVm-7qyICKdo-&Oj*k;FZ5~J&-NUwpL4^UY)?jhS>{C-Tt9E{H`nYKcTujnlzmUr zeTC(jrjLD@87Rm=q}ONVvHtFnV=u~On=_6qyW-B9$6q|IY{-Hg-7ovQM`6ey-+pX< zS9ulV@0G?#b3?NbM;tJpA=Qm5G`PN4RgD%(oG^*zKy_i9ZN-n<&9BT8Wm-D%p|cx3 zvZfrC4po&^$QvCms_H^g7`>WYkzR@o0k^1 z46qrnba-K&zcx3FaU*^_WzH2!@{IxH~W?F>zoB@pr zlg43S{ug7?Nq8{_xP}!2Ft*iH<*KrV$lj2JAS$ql1RMc+V7E)D(jXX-35*Tq`C&$k zMGjXv!K_Dmo0;fgO`;fYw7mHZMfNNg zH{|8z4snRgg@beDS7Ld1|0CP-N-WMYo7p>A#rE75_%N^YAs_73Mqz$`9?BmAnYOjI zzzr>{51Je}rQ>J}Fl~Y`P6wO?ydqU6v^Z{Pap-Wd5&_b$mhBzPsW^05%dMn@O&hr* z!T+$&&z;|pwg`TC@Jd6Wr0h-n&havki8s_4EcfMLo3G?b3J8g$is;2N<*;#UL4qXc z%t-f}FyfYvGqAI~H@&X0wP^OzJm;Vm4bFYYyWa(tVbjb5`9mGUpPOIb7O3rlb%&}> z^Oxs)7p`TC{jp)rWXn=?mF<9!;wrzn!*5MTQI>hAVQihhprin9J+#JPWTTY9cYP>X zym+8%7*y=X4z5;$lOQESg@%ElZJn--Nrh%~yBJ?z7CKn2pa^_EG^-{EtE!-z5}I@4 zj`-e^g9C2ZTafuRZe79p1r1QlU*-)ht{Wt0q!m^d1X>ErZ_D?DCm;*RHw&6evdi)) zmsU|tL3w)-s|&AHUQYpdHRop**{WyL<45iW4LLodhhKR%`yTg;m>tQJ?qzQRrGHmq zCvO$F`sA%q+aT#)1ujGms7bv3>Wd9^2et0A}PXm^?q({!S&Zxc@(rAlfy64(uzcS)3DyYRJXCeKqhoaR{osJpx`GzIDBHO_M@)R zlxjq{MQht*x_#l>3H^$f^z&ZaPI0?_WN<0x*@NTF$mF&0#$nnfhuIfmPMF`4*G4Ww zSvjGsGz24`fMmqu(HPj@mGa_97g!a9AsjfOrBPn%@c+b3xA`sG@ACtEggiv%Zh2{B zJG7n^p#a%jLH7giE%N513yrf%MP%+yl8Oj*?KhD(HgYxeb;Cl9cJu+LJuIgzREbT@ zna(dRmmgh%L~p;iM#H`vD*A(Mc_3CH z9VJ+QxTM26odbc2PAWw@4~PT{57FefQZ=Ck{9=wBq}{Nhqjh*`YzwUD7(P5eJEc4? zX+AWX)2*1(i(v}||HyO-r%DsLnsbN7xdT$O<=QLQLvty%Pwzb+e4r_>TCTh_pNBD@ z_hUZCPToHNLRALMB&2E+^*#lOC#u2@`7yg&i zt25;tS_RC5eGo;i5$jmH#?pbvl4N$O+asGW{@nkq20cRb4PqH(2{AB*Yr$0)`F%yH z;G$X9Gx%A>{NMPQj$=*TesUB2H81e9HWCEUj?c^@xi0b|q)1bezS=6zoUgV<_md~g zdU;6XDB9`5bFS-Qhrf#HdY&_ijhA8f{Z}p8P1r z?{3_sexK{|VAq1nxp#5BNaK3g+^yWH(On{0cNlt(v=cvttdODYk}466#0T>zwY)Sv z6&EGB9LI<8m2{Z%Vm-l~{Pde7eo9Z_6$2eOI>4~1dU{o+(;j4Aod=>Er4CzUmW)4xe zMe_K2Peo}Jx*XZb-`i``!gs+7Zwh$GkoHAs*WtazMha+8M`^M5_D5;4_nwK;?ofXg znTOo0xao@0w&?!IrTYD#9g5QKQjeitxC%(mMrqgSlOl`t!=ODErL9#zk8FhBz9Bsy zr6CSTWVXH$w8K%_1L|FoQM?~VqO@CdEiz000`DD-(%x1#M^wb*F{Bq_H0?x0H3~p` zF-rRf#_uIQem{!Reui=R$nfC3AKNr@xK?03&fj}EM$@O6kLxeuy;p2n__%prqzKbx zNI!|vJ}?hNGI1&!(yLM0z3R=82el_b`#4IwU%f9fhWf^a#%S8{$Qb=spf%bw^O$+B z`Dfe-8Eky`xZn-5#C$rU!}h??{uX^N(|pc60lNW1dr#1iyX4u(0XA9rk}wNjNYCQ? zOCe|-#Lv~;2dfAsXgoVKK%)6OH5Hyxn~b!SQMi3?OT|mz!@JC_ktsNn3_ahj3$$;6 zb{S~dQQ8CM?#L+M2dwNU?GE#^$UL0$hMpUxt&P-0Hp14z(B8FaNLF;0`8;s2p$&J? z9suoT&|0Ik>FNXKuW8J*wkRzPv~O`*yG;v6`Bm$P(*6ow>f&{bh|+!z+E7mGjMDaj zwh1{g4XrCm`;GcQq=L646h{kk+NdaPAKnw+j*QaQqP&f~eWR1m#zbj%VC~G~^^Ub^ z=I7?N$QI;mG_;B4Dw=!jm%9K#evI-w67tccz^?(p=Ib z%%`!zk*`8SF7qir_M4lLCTFLjvdy%sBMtUUzid9of$Y~){x{95*iK~Mxq_b>N8~5{ zuJ8u=p7{2sQu{rpXn(4dn%I6oGv0ws$U(T%Bg$t>RoS1ydg_&T62=EHK~e}w_G5UO z`S4_m(yuhHj+Sm{3;Zc3-q$L5+1~?zYNolAkflo3=xAn>NDL5%F&}osh!x(+H0UkN zCpY`eP2T8O&(7dO%_Nk?=P`}!d^{ApM3W|<7EGRx!*}`~S9U>$%!|!5ZQBUjnU{On zR(3s&tTqRxLWmcaVeVzqHR27sOpk=P*_5~&eFuX8^(}#qGAzwR`S>rGBik2cjsVpH z7e1=xT2aR>YzyZOq{~7DdjPK-<)2CaQD)D_UZ~FqK|C)%oe^FjKjJ9MLt~kuCml;- zVeS@>u|RS!Kwo=?uJE#*=sV{ywpiXvjeJa2!yANQrW5~+6}{lxhNU8YCZKh*iiPpXUPLsWU@`xdf1;5UWett%X0F7etI6*A-mnO zd1WTM!Qz1l;SDaA{B%lqp}dPOJ*jz(J{tDC;$xp4oJtG^$d9*Y$Q?obOzqj z$j|*;`2+iz%heOaZWf!%blM}*QjMhik?kjCWptO=;qf^6V|Y(J%w3tPyL!@; z<$5LX2qLHHNqNL8dEWjVM@oH`nJ2dO&b(}n@ zdK}{<_7Qh7UUBXttjaM&n^eImoDDTL8(Rn_;pCS9HFIcua2#4^3HT7<36hMC<0xsi zkCMy%>`EFBLtCz&c-K0YP?ojk^FrB3Ed_CD0z@TJ9>g6d;1m>O9Vf&nSNPfW)<#l! z;(er#TB4u$kv0;_d}<#r(@W9MqVoqgm+=WZY1|wVGx90~n}{lIw7BFQ&WlvX5#=Mc z6s>dAlScJmzY=^xtxu@Ou`2nN<*0_Z5nb6Tb}Z<{h{efCvw;61JYlwvYixZ18YRwv z<{IAiTf~0Fi+vc0YWdjUJhylR`a*;}Q+gwWAZsRsvCYf26I&1_$Y8U9254+;Jm8iP zGmD4n6j%s?vyBBBeHr9o7a-5cAR@*E2m@?2ucR|jVRviG%{>{c8|oKld1AvBdC}fXDp*HZm*4)C&bzslw=3Xk_2B5JvpKTpm%xifa4*dCu`83sGgV0zVUWxW5 zbmMe;lhuu43x8f^UdQW*LQv(Txu2?V;81()(+JKm|mTi9PO2l|hKNb_=V@-~}WWIvlpdZk!- zh~H()71))MgU3Wl7^9mRv!w59PY55V3`(pe?YxAsd zUz~Koai1++Sh&xwos4B!wigba{W zyf7Tn1rQ$b!Z~BS#WKkNTvkC@);SA|m+I*ovyrBG9!OVbCIci&84BS$Tgo7Km!yu|v}dVZ#zN2<AF zypZa#A)lij!GovhkCO)zaNpJDb-bb&?)xmfnCfxhK6|aE5r5dY@6^MVfc>_Z*E?%5 zw5j1`ypkyP!`XIbddQ&AL)uaTo$ZhkaH_|!ut7EneaaZ5#XIR$vIJ@jFUXLePLMJ9 z9*rg4H}1k#+UStMg}A}Dkf^-D^_r?j$Q5_!PEdNxnk$TUIZa62UqoDxp_-iJKkPbv>!TZKGu6T3NzD*f`4 zB>(S<$`?W&IE8YB&d7$SG8xA_NgMVdACopXqJ*?TV6u1lr)He~$Q#i0@tX|5zqsJlFI|s{OCoAkOwRv7$>Lop2e=(rI(but? zVi=HP>HW${!hkmZJqHXJCvk8LXiFRx228BuEHGf4%)v3BEpu2H(5~a0Fkqa_0Xd!D zX$TBxmv4}q&_6w#^GZYG635qr`3x=<#AJ;A>hyX`2G?3rB4Iubc$aBY6L3O27E6Np z9Gj63cA?fylm+?X1Q3Dwcs&q6xMDAc`Oa9c7gOaYiXj~H@oI3{!66^`Ja*omwcIN@ zW8HUf(8nvmeMbW3I}`mLx?w@SI01y0JcBFv&I-TcvFkf?% zQ1ERd-SjOU!h9!Bx?nnuyf=>W;xST6Z_MZ94Z=t$*Vggfh&a+H+JX6|_Q<>n8}!BI z>|E-(-rPdJuY644fHgwd`bG_lyB_**e9<*m!25rJKmGV>#;#!tR636 zKKpD>QjKHS`1wx5W-0sxw6tq6wDCPYQHcP3PG0G!{>j38wzPo#o1_Ko+_Cn02=hVv z)LXC2fp3dY8QyF{D7^)@tx*kg_CK3JW&t<28;4fVstac22SZoxzX|aQenD1m_bZ{_V{t@C9c<`$7p?d{`&!V7J&n2 z@qqN1`a7Z2eE_#=R;Zys%Bgl@)1UTWNmjpXJKa;N0a7jw&H{5TJCHfA(@goB@?4qz(=N#hjkay{>H{ z1Wh8O0t-*t>m`l!ey6_Ibz(q)cCWSWcnAY>zS!H2ByN@8{u1nOgvcNa z4sBV)!hM!JLjD|4*-qFg!7nl??n|7+zJ(FsK8G+O?xkax40}h~S=5mrhyeFF1QBsJ zZP$@b=e!qnBs=FFGDuW7u$eJl25~D+5hQj;bWVJNjg{mBZZBiEH;wqDZ`{Y=6e@0- zWF}+;=D>a|Je{NjChx;e6`RZc+k4_F0Xj3XM~Rm}NRJqmKsXk(+uJWJ*f04*J|N_e zczeXJOa1^BjL9Ds7PR{yuwWmuLEl&~QT#9*(g(+aIKR${KkPdLIujumaC;~FEadx$ zJE>fNxcD)_fLkrwaslB+mAU1Chu5Fiq=hJ_#P z@@-#-KFcQ+em^7)4jv(C*tqeG%J0Vw2gi+&G&p30AMr8s@8+NNLGXAa-<|0q4e0h+SbS(e3^*#RmckZY2 zHT#eO_imGiBPXbiT$kj(_kDQ-dr$c;eCeN*BoX6^IbvMF4`KsC(IW zJBi#0--(~v{w?8TJ~>Hzcg!R{K4vmspz-hpO7t1(dQ{K}7qrqiWz+8e58g_FLrftdiDYu^8Gz64L%*y-r8Aqa7>{V}>j-D$Lo& zgD5$Z|A};Hm6VnPf8`yS;s45%+a|p9(y!0?d-#6+zwRFuo7-_VPxbbhLO-t8z8$$t zKOqI-tN4E8WBh!%=YOOt8KS@S{15!x3n(62MbDz0L5dLv@<30F6o>)LWzVhJ{3!=}%>SFlxeM2(X z@9cJmk8A&FzOR1(+UqvW9Bv*lACCk|v zTYl6!5x&&~{6nJjKAqhtr* z$w3i*vaT|lT*%m70axa~>#Cp9wId`7IgVotIxz-yd<>u$N$kEan=%B7{O{;L3ajJU z-#;?PvR`IoxU}OaEY;7U2io`{+W1vmSvV=}Y?IYIaIzBM=>#aSYQQkN%wHi{L@LY2 zP_kbcviT{_t2~#EvYvyP;id4!&8OUjzNk&V6$Uz(Sxxi8Tjr*q4Dh<*eMP}7jfmE9 zDR1Y;=4-k;-K~qxe}eobUe6#;x{f@)h$3!&rt5qtjME@30AH8yn;+mO)^lVU_>tE4_r$t3KM?ElaAX?&BD4M9;|z-L?@-T&U-Ps04t~vi zU6X(FMG5QrBAcJXF8B}s9cv(k^r@Whqy=Q?zlJ;Cry!Sd7Mb@ehHilKC{}6yG1VRZ zQr7NqXZW=3Cv@5Wrk4z?SkF&U)}wY=Vp&KFFk~X4h;vCGj0aEVGB5mPigv63kwxxN z@AJD(xV&#-4hEx~2rtKuOG4vL*?>`!FSC@U9?@Y2lZPXCj3JTpQPU;6yk7Li^?{$c zfiKXW!zkwtUJf#jB2>h9qFSj;gVr*zLyrg6o6=FuvTh)DuR2&^Spy387-U}j}0Mb6+2qSEZXVXQbqPDk?&AJ#nS9?{e9Kj2F9RCsXV zw$1h4doJqq-~I;84?I3l-#XOyIj;}==Qm*9!6w1f15HPka=61H4=ZVpIQA6s8#UmNB<@G<^$JR z+DX^%kJ1mt(GN%I&&AOgw>jE%Pg+fY8!I*K1yPpjUa@G zFAE}{iJMWRtN=yHVvWiN=3|%0wnDRoVTlq=2dhu7iQ_B$jk^ud7<3DBFf8Y+n7&nEJ$dh{&lv|JVN;Z?XhF;JI7T2 zAWDDTNjGkZ(%*=q?}*ahjH5plrN0$Ne?Llp+on@{44b!t66Y;Kwf1w)t8YiY`*R%q zPf_|`;^+sX^mpUvvHIV$=~TaN^IlNmyw|IKyM2cAjQt&N*F>wHphUdY!4iBUl0ExRUX3^ zqB)NJ1EJBQ>+x!PY>=~h5bbjj#7e;$h|x!wu)_uYjRbn9pd(@n-q&YD%jt@QV*90b zbCljH=#jtha$@w5RemCUR3GJ!j4MC7R<*W1=gVI_c+U56{a5z9vc|ZzmgHPBZ*h*JoNm3Jk04k7%FkJi+Ar-@kgytj z$?1Ha1pP44u~Io5=a(ksN{EgN2~LHlqK+?hV+rLQMO-nN5>@d4sri#rkWG+vQ^+=) z7+`rx&((7g{5K0B2GbGI%8k&gnxuJfelUd}a7Msdg@|xQSy8i;qZ>4j+pN&8ki$)# z;hp9usvBupl^s3z&XVsBUo;no-8a0s893=Ga@e2ET9>vdC%irB;#0xu8?o&GDN9U)cJ0x^y_#cb$vcImwJ6leqLG{^32u*O7rUT>(g@6 zax%O)j#F7`3XbDSWEA58q67JIfd5`q-rT@r8r$*80zP@iie2m4Myz{qiMf$2Tz~)4 z`qzH{&YygwK&W#t2 zF!bi`%~QH}EEt0J(|+0izU0UHQgF(?VA%if^aWg{B7YO|DitEm@XXNph%b$dXRF{F zhFmjRwMvKZ@_56NQlnLSZ~%EXzXOlk51vDy0PKkfN4pJFo;=j@9wqO)ecl4Cw4zu3pL zu~j+B39KbPZ~CiPtKff}zb{MAu?`DqchCV$@8FCFpNe<*+5Q?|haX1joOJD7Nzi$& z2)=IVG6UYG9T{+kg=w&I;iS-7;WThg<$MR!q->Q4)qfRX{lea>5e)5NYC*@#Z@=HvH0|v zIM5s{>dPYcX_defY0@ZZc_^)`qqVWRyf6(}2N;q`5u_ME$saDm4h0+mCY+C)6UaYk zDSOt+2*HRH5)_b+zn1I`WQeG&t{7O$Gen3yQIwPf!7VBDFwzSmWPlh9Ef_<2r}-I4hjGv1Yc z8%jo0w_0I7-e*k8@>@T8svl`--1SSZ*f~>o2?gz!7xxjo@=~_^D04k>>NGX3+Huep zVcNxh1p6!6Bk2Ab@&c=l(fM8==&!IUK{t=Ya_!OH#3}?mQs<;=?-HHPDMYlRy*(9Z zp+*`Ms;e$Re!kfLu`J44%O`6%dDp8`YAOQN0kNJaZ)bVH7icJ9nFa-HrQZ>*H5w0C zWwrSxZv**!=!~5o) z*gtPyxM!mkLl~)Wt#L^~kSpX)6aBB(2ioJ}&U4Uj)lQ(FGVU-WZ5=p;~WnmXb z7GnZaESrptM`Wp6u1(2ANbJ%9CB;PrzCdOmc37pvA6CFTKIBcaQkbIq{CN7iovswU zoNGSL-llGgA^7k^KYH^p^(%a-KRjDo&il#xEWhNJAN~JRTdni5h@Wj3VesdZ(wFu; zs80IcI6CpOc>n1>=+8LmI$>n-{&R73l1&8ta2%cFZ$UpAN2jw>&|i^0M|&AR?~A|} z9%*o>9_v9xj;STI|G+4W)lJqJ@*Q>K&3YbIhc5r=k74B3RT^M+Oh5fqi{zePDGfaz z$Pa}V=H%Fz7UNTkT@I#{;8V{!!V@2vk8m9hG9+6%oYS-+Kh}nV_%`VMZ3AH%=Ul|i zQL?cGzQLH-V}(5gXOKPDT&Kgw5V?dMbItX3Vr&mN=wrFAN4)=rML)*dvm;vmn~wL3 z4AS+8_uq=6ldeV3-?r)0PQEu1ope2D58v|~?KMdE!N1dX+22w9T=ya9Kj7bC9uN-U;P%C>2vBNyHKtm#1#G=t22LUeh;I6G(0co zCG*2nHbK1yJ(S9IsS%z-f{Aj!ro!=eK`Hj+pz}t1w^H_U)kAQv*7w^vtrMXP! zAD?p%WSdZEL_r3uP%!BU8v&gS)<&=#;+n3n*D>Gux!zQ;me>;9De=oO@eGXHBIK(R zPQBQkVO|+K=%|loPi!rs4+ojSGv8wWurl9LAHcVWQ|yyQNGn21hm>Y1NCz@0jS@Og zXnm{+S)zQbDIRyq5{P6*H+UFR?eXZ{-c;E2fRQa6wo09nnJGz`BQi&Hw70bmZ$SWW zh;B8(k|LDvtH>-%r%+FRM9ipaZnUzKG$Z|GUx3WX>B=Q*uDWVXPR`Kjt*z6C<~-V8 zzSqClylKy{>t5-b%0fHC9QL=mlNxJoQb#^utWH50)0gIH=KSrf!-uWD_goXCR-^mcPYjK8_wh}R3fQEb00 z;4*3&jxdr@Kjtzjc!Jq7>Mf87oB7@dZ6nU*r`hwoOit%}pP(O&qtp2)=&vwDa0dU~ zVs6%&VVh;sf66w-%5jwcjI$h$2Sho0opi3F67<6sozAA?yqt8aoh$KEoQcQzxs2Gl zq-ekvwgf)YbnSx70!hweD+YZm(0raFn7kb`KJo(9$Imv@hq3#}9G3JvPF{CDue8WZP)1 zgX4T1@b@+6I&jjR>%d93)`3ZS?&Dm~D$41y_?Onlajv%(bm#hT(w*zWNw?NVukuG) z<1oAt^S24l`FJ>p34c$MeMc`S``2<50uV z#@8n46oAzug8!ZXXz)4cdo8+-_dnokQ@sDQMVCSUl;b@?KjeI$<4Hk(&Z1-2WpDGf zFX)FYI!1y0iSI>%e$=AB2zotV4}$(m1nWWU2}nvoc{$)Kz~MQ_0OrU!Z{$#1$wnsS zk?;qee}+Eb>l|h9bzUF8&cP?Ve~Il)QV%XsB?*fj_2>!pBrgMHUx8ZJaIDPxz+Sie zW*%YncDrazQ{U{iIL7)J@qXlbl=B$Ju)G{?SMssbeqhth9`;AOe8LNnMe%q+)FrnX zVelc9349c}P24q783G^Kca4!t_&Cztji`T|iBZGZ_lpGji15!jeP05-)1rSsbiQ|p za=OesdOvb4f1lQbptlOTiL)5<7o&%)auVsI`Y3;-RsMEf4xPE8{5FfeGlAZ2B2)~< z=8SmtOnBu?-bFh;j2u^A1uI+ama^nadHafx55A4_Nfzb`=Q?hfsVkt%v+;gD#b*$) z!XU-+>wjDOn_X9-=!D(8bbZ=1teLc&B{ENN?Q4{0x2^up+zaMGtU*SX%7*e;JC`)) zu~)Bn`tmj;JCYT{mEsz{{_*w7A*(*667>b7fuUN&L&nYmcP*rkhW3cAlz=WRCEi-t zhWUKib(I-B#bCKm+{M>Ff=tG6ayKfKuO(@Q`93Smdrf{h+^aF+9Qg;~MKoUKW_35` zdrGcjNI#YSm5&SI3(%!92{>W^bUgs~0!=K#Ep-e`1Oq-_uv9k+u#Z4ogQl40GC-3^ zNh|~xTzNqmtnN-pPjiK*dor_2@)qXhEzBy+_Iu=8JzgXVo12-N=_~N+E_p{vhFc4V z06Z>~VdW@qa2w%`>FJ7!tewAm-*D>glCC%nn#@VqW!2B?e`L$ zpAFQWprB*^4%_XG)H%OH|ERrOZX-I{oh=Os4fLnTl)MOs!ZN5SWq5?(t>u%+Lj>uj zB`M1XD^lED`g}U9CaKYlzC;O4ITkL-lS`9GW+xtSN@do#AJ-p1{Z*)+_$^DFVD)o{ z=5x?jswsHR@vQCzy;OqDV`)~JTSpECC=clT8sMYzi!fvdBDp|ZhP7^vKO6t1P$ytH zSS%v6vF`P=@V^+apfJKWGr!BN$y<=kP}Wp=mFDK|x^4J*^7knzYQ2`Co%ory$#wEK zdWxpO4{)&S)a}6ehIZh5`~RRFg8y|d=TDpi7{9&jQ!#$Hb@uYJU(jD+pIGC1gvJl+ zg43as`fvMv$PZPZDNsAzK(FB;flWVOkeNl_eI}1l4I<{N%neBG=Sw9+m=M{Ek?{UGN z;^+^?^g=PFxW{zRaaRDkSaViC%cbF=X5Q1XJS;YuOmEpl>NCv!u>|q@a-?>a<@IE) z92k(}$KYh;Yp~-<*7L-bm@pFNM+s{(`Otio9n+jx{W$Krm9IrHUs?Jvig9GNFxr3=zb zem%-EwR`E_;`Wc}{^H}?qt`dv-+N@if=AxlP8S_?WAo*aWy_8**Q1Xx_tE9cj+$RQ z`Y@9ZEn0NQG#`H0j2v9F=pa}Gc<+Z8lsUNt?{=d`@ z=tYib_j0`mp98F&>tejZalfFy9ye!X_bBLZ#L-C?F6eK@(McCB=x@c*Nf$2YZ`*Wg z562Tkhc2AxTxZ~DSM)jEBhqsP{WzfAi(F_51e}R%>9d8*4b|b~{T|%DH)3x?5x{eb zV$6ri5O?oLdpRGfV13UUmqBWALb^%|($6<1thOwkb-Nka zE}fUy*3F{fg?=@MuqYsb@&z2Me)(>ie$(6EpF@|a_G)~%U|Q{{x&G4H>>VFGGT&aX z3-)|;o4>vycWP_tz>-X4h}ReUzq%6v%$6MtKbWvg&36lm#*Ha%8WhY>R~}*7L$L+@ zi22pw6)dfCP|JYfok+*1#`rz97iqg}ex$vW%l4d4wI4X?2HCC(KBc{m+qrUnjJIAgdj{W6g`Mj=T#s+>(HuAM`lMGFBukr~q`p`Bst?JAt+l0Xi)-_`Xgg@% zru&3wJ7nuVAzB~ZNr-;$h%3XU)1Aa2aVHULhq#l#9(fgwU2JcGp2|;sG2cj_j|l&s z(_c)WcM5vsTM6`5vx>j}vjlp`DkqUX$|~ocg!kJ-Igz~y^mfy+*Koaxn2XpscORXv z*!zoUZ^9UC$4_8+Y(yr`;}qEaHG~Fh*mV#dTv-M*FVEMpZ2&;2YP~uo6-H$++{^Uj zrsld0DTSpNFz{no70pdmxO_)aWG-C>0G;KEiypl^^w+x?(l(Gio!S$&f({F z5X0>$fRSEo62ADto(A(fIp)sTOelZNVb@2;p$=;Z{e{;_t8^R3x8x|x@vURN(xrgZ z7HTQXgNX(hryyTOaze;~;2;JL!qm@Qa&^FPf7ww1OC3QXLv4F*6_c-W;Wd;2iia12?L*`k}R}o$vdC{)0F=-7kr9UXkvy%0J>PAM*c?V|1<;p!Z2H06O-J!*+R)Q5@}p zUO;?z>HlHxO~B(Su6*%Zck4xKt6NfQSF0tp_I;Nnwd6&zB=44O+1SR|$OaqRnB5Qp z#H=ykkPwz3!6AeMFp0q!+mHz{16d~%CO8?AFoa}6Uc!=>l}U`%`u|SVz1_E4ElYAT zGym_sm(M}cxpnJSojP^u)LEe)dxX!A>)xfO5Me>{5OA8GfPZBQ_|qmFdXh&t52p6I z^a{}umX7xW`E{Oz{5pUr>mUa}GBuQ4J~rGJtgg(Prfb`U*x35 z6>ln6yfxL>>BuK{Lue|%&I)V$R<*6Vd2Maa*uLBLjrDZwJUG_Bd;Q{Kln&DL%(Awn zTl+TMcTsEkg7p{gymk(yx^!gKy}N>0 zwR0;`&M_-c70BwoX#bMF^XJzGd}WObFPuO3+6`@e0}=di9wYGc5;Th(Z_v+J@W9?C zJcRK{dMe&tyUWBI$N$}7_yH46{e=53<^7<(Eq#Uemj}8T;qqxQ02CMVq=19|MmYTm z_$vg*I`H=3eKrYYxXB>MoinhLct{r1Q>pxxLz@@^mpU^32k-cA)i&*d)1TEY$e@o- z)d$y^!U3N5K{t%E_W|2G#s`VJK3L-`OjQ`z4I6|`1}am-UxZnGL;_NP>SpUy)ZNuM zwcVVLJ6-Nq&tfEZnp2wEAbvpxO;(=xHGD!IHMH8#c6}*HZ*1mL)}S9HbQuK zl)vz|g(_F#aRJ;VWDAu$&k?@1@G3x%ZOl{n+4|x8k(sJfIdB}sI1m_+&tr6G3Ai(@ z+8rv8lUQ0v^^SiNejoCB%pf;FULV>8SZD)0!k`)O1`8a#foMiX`#bqs*&t^io-ZR2D4?RM2JwiAhP@o25O$ff z;fpazOJNdK=%rZwgrKr0g#^a?qlw?DLMID343zsM3-Woy!k>zQ6VDRuzhZ@R{epl$ z8wDr*f`C641t z+Cl3)_!-FOhr5q~5BTzg@r3)s5!M-Pn*)vh2sBE1ZSux#4mOZCF4zghlOx<2oMeJ@;b#S8lu zc>At9!WPAlvAS&kSGOy>&m7qG@;xIX_q@Cdzu&X{AMacix;>(4GwGV&o5Xx?G3U$a zo$gHney0Ji1n>Ahr{6NHEACO!Z}~o`1RaU^F%HLmejm?esT++xg?ocfsw6I3%48+i z1+Akzm;qk95Q3hpz|9GT2El15y;M5SeoIrBT~Y)M>c=s^YN=gn4Axm^ z2+JphysEfxSg5eArJ=5>qO=&3w9SkTg;!k@LQ*m`%kQ&T#See!PtWxEGI99sHh-JJ zY?(dX=MyiApOH1yzslzvL!+>vPMWVV*BS1)bDQ6p2WK;@L}OO8-$EyBp8{W{^;;ZF zh^*eg(BV8>oHHUTM;CoA)^AfF^tfrNsQa8M#OXz{n*^^Z z^b-qzDhf`rn`r+PE1c`b1pGOIW4(AkSg$lAe>(0lkW3@C!`w8NVl!&2TCKvJOkUs} z|G?wW*uO!D)>G{4-!z9uUNQcZyh16lkC!H8CMISk$v?5vcqf+7JotSI--itH-uQPW z`9<-u#Ey~Xit{=AF4-2M=JZf_uFponDF+0fE8+z#IOBJFfrH~waMBS7_)F54_?YRg zx0L$=ak$n#{v5$Wt7726@eAX^`waL#YR`R;L_fWvp9x4O)_EbT4DWxUJOy#Kf?s675?s5V?20eqy z^)uBNvo1Xm#1Hfz3qM3~oZkXY{w?j<N#8ZadEGoa`iAWHS-yp$ram%lZIZ`(+*Z zDKJwN9`l;U#qFJ>Rp2MW4rRE!yu@1_C{5)7iHWFIBs{2yTaq^wyf%uO13b7EN@>_~ zc<6aiGPFPe784dHzlSh~?*)R(E9dXtxU6LS%L5ON4P7!&q$cYXD>v-ut6Doyv-sgZ zK33GXrLSpaUwv_grs{HXjFiqkaNhor&XLxf!j}Gke8ce4y0teh8^1dBU{!xZPEP0g zxqTN6R;t%8+Pktkqp-9vLuZR4(z^v`i$Na(mq!R^VO+L_;YXw3L{Fmqu_*Y}VfcwC zIQdqH_AglB`VYhKeb1|&Q< zIJjbPd3lAv6-6q|5?3rUnvzRw$*h(qH#;{hcASc)Y4*yG6u2xso{;RCHHPJ;Uq#6K z@HaGFQ;sA$fnZfiBc5U4aV|K~aB$)B0okUj%c0vHo6m~Kjq8ge)HrKY#!zDq=ftq0;I8P0 zkE_9e$>;T)P|ISe^P}FT!sgEUIcjQKb7E#urq`E|2nGA>@oc5kgPyeZlH#W1x-NT- zKQSjW*(r*!a9*gd;W%H7e34s&TUIlheIf9>o;hPkS079OOxB$o?>6LXp{Ot2>Cn%P z|FJFWMn_hZ`>O>xC(fRng;OyCz>AV)o1Ysr=v-`RwZ*WCb6Ns9m*?zkYiYLT>}+dp zrktHWh-DtLJr9+%cu7Csw6GBn?-=oH$V4PR%$G)_JA&!aG_MS<9F*4xi%^O-Ti&mxe+;|VW#Jr|{ z?r&v1A3kYZVzvEN-eaDP`j+t7`0sQ!#)1DV3cfwu{^wEfHDUOFm~gSa1|0S&oXNUG z5=^x0I3NuK=l6EPl_`4p)xiO#4}`fK&uA7;e5?}d#$DlOcVaM`KR~G~pug;aH}JV_ zq~uenk?n$PPqW=CI9<(s!S9noR?~}2e5$KWeDbrl*nkJ5V^R=VrF7{ep7RWbEL()& znrmp0<*5yw*BKLYluxLSV;$V^PFpN34=x#;+ll}Kt*)ZTm+eka>@wV=p;#O=^2#ad zWq6Zp>?FMN{RQD2mN>G~LU><1Jg}g%y|%inw8WKer$E-GfC5!VI%z++$0L0GlOfb+ zKu;VI<&heOC$gx)Vbap-=1!6j=xfDElj(*wS$@Cfta!1sCW;-+lN& zU#^_iY6|p~tNkBWbUpcj!m>lpzVF*M5SHpyi2jRr7C&usB+0kkv^4afBSH4aNeQ9z zva?C9XDJ0&uWebHtJJKy$CT}}a{gV@|C~44v*qSOc3pjwknYvtr44l~Cz0f6K(Urs=s!$oZASn0*Cvs44}wBWERUI=aps{D3UGonQBOXgkl$f^;kn2fqiw znRj>)fgIklbXSC@KUIJE8KD~oe_#s>R#Ew5Ks zMbr<1&X1!G#mm}3&~qK9^OMp)aQZ)vbJzlh9_V8NjyNC-9C{$Y!Q+l&9|4ZIy}8m| z!HhYsR0&$?F8F_yGR>w82C)g?+)xjysR3_89x)?(7+9U6=%eK5Mrt_D{@~PXq(MNM zqa1pHgt(c$Fd9ts7Nu8|WClu$=tkHo4ixe)BdOR3w@dfPHgG?R!7DX9fp`cW_+~RD zRS4KThyZdmz8X9@w(Wr}^)Ec$y<`1SU+;>Gv(u38gZp<) zH@j%DZRV4Umei)7+v$j87H2(A^7Uk5J#k)CN~j|!R@0m#*Q4=+-Y-+Cz)~JxF_Q(H z>4Hr=2@D16k`1}M<)pCLaxbHNz5)HPWUvU5u z+h>XkK%RPDuJXmyEF!<1hq_Yd^n?kpXHMvKBxLF9J$5}kFxlPERjSxq`+_sg+654Qb8`6E+v*> z?JDeFx~^&K{TDX8aP*QF=6UsGweN*pFMhja$LF@czVpIZHkIBuP~{og_srHmy|;I} zdgS!^sb9PBia$?W{QT`pz9Mh`%lj54g&D}e&F!k2gB14LoJ9L-Ejxw|xIPN7W*xlS%RpBqn$#SJ| zNtZIVo02a43P2*}d5_y46i`08WDDV!0-9ns)V`LDH!NIp=UA6R{*7zyx*hGv_dAC; z?xNc+?67I$s7BPW{l4>-U%j*fa>3r14JI$x_{l9zZQDLE8mb{#wEvcuuHA9uhW^$a zpBdA%hsEY?v`BG$|rJMCgd_xq^<4M$r-7Lk0X;6rAqM0)8S2PWN8{KgsD%$X*ZfduxN# z73?sPEF+7AiC_b_*l`A_K`cQWwUx|lmJ8Jk$ZU3~oH6bq_=?Okdf&ytBhE+6-^2^f z#|JF?mu!F>U+lFgJd%x8;PD8@qssU1&tcOt_Al9F+L&%P@u{Flkzp0YHbz(9 zfx9_K;J6~Vbf_2hzzFh8OQ2$#26vJ)IMCD8)*6L3=j`w{rA2U-cpLxW)W*OW<4yf# zJR_i>w+CSZ6!f-1+7Mi~e95A@ZLk4G&_>oj_=PE9>!0(igeOUBR`t*S`;y&Rtbnsb z=Oi+m!u~g7)JBoyRCYgpF2n9ecwQ=^Dkec%gwi8sU6Cun@J zbWbqF#J3?837^p#&^fs3*@&BT=Unf(4a&=4W$X*68Rf8Vj4M=)2D2q;(NO>VNwU@K z*m10E<+hmrX1OG>a#pix_nR^PRg1u7by$_9YjD4OfXf5RsKP`xq|h2jq04%kVB}HY z+YD@)K;cK|mlz+}IE($&ct=qZx4xLO$u>-ZUy`$du-5vDf4TEP?$|@Oy~`A*jB7R1B(@269Zs5DmgiT% zU6j>!!MtF1OB1~FeZXM4D@E7Pxyqw`n@R(Ujf?KEj|u&X&F9XCC=ZF=u%DS)mO!kM zg{)-C&B6AUe4!nT&Fy0ER`2NMGCuq4e{}VuFxuhJ&zo*pW(f5vm-`>z`2^`(PRt!3 zTnG2mJwg_;1s6Tk5c+l+B>9j1Q&4gFi%HgJ11(?LqiLa*x`wb8dUNP^P`s4Q{g>Mb z!6l_kO*HRFI>jh*SqjmdmOGLKek+%;a4&#v!jx5`?nrb)0&$-0c4X=#{-^IqSDfn| zDP+m2!}UOCB62ImFiCgw7$(GK8~KP8v6sO=)1^XqtXvYjxQ^MidCXzox_VGa)Ip9i zuBJ#yoD4cd8Y}xIN>xm0gHRuj_Aw~Z;m{Gi&hv~UCMK*ys^V=4!xYPS{)Uki3kSM7 zn{eSQ@?{ie6y|2*OX`Z}=1A;7`7Gm)6SgJUp~xd(%uGRC*`~<5abF(GE!E?30{sj=GtyF~fL`KNRr?RygtmD`q}1 zfP^VQb`6OMvJLlN$jy|JlB@VGOOA+&RoptW#_s(H`ar+;IL?~Tyx91ouMl{=Oov+#mTguQB071InB6c#qx+8kj5Vf_XTrnN81RV0@@o=HF2Xo6jid6@?O_ZS3C_nZeotgM5)&$N-5%)`V-7ze>NAPBHoZ6CU0x0zP@K z06xuL=?U+Z8s>CF?-c>D?vNH*6j804?imEzB6B)nG82K`H z+f0G7NxY56(7rfSWM`YQo2YkbpPcKLgXi>7;*OaW6<1!q{i2F(72C$Pl$8Yn709-l zL~&xqUD~wW;%==X*fIPkDT0tA-MoNsBX2nG74gef;dEpCAn&i%Sle%Q<-O_mMr_;9tk|<)!DY*<-D$Zi0}ajDHa)p~DA>7uMSaD<`7PxO=hUSp zceQ(}Dg!BHw~fxfYj2uVkW)f4je;bPA4=h(d3#i1-Ulj!4!lV)5|1kJ;(0`&*hUutLYUL zJ9k7=YT|zlrMhDb^Zzx38e_lzuccFV%3}48OOuD9Xp-#yf>w_i@avGk@iwkA+5pPKTxR#2&u=A%t=iEWmtS{sp11D& zyEkqvbww$vC~Dep%ktN^T+x2@i5o6HcJuJ6wFgqa7GVpt|6_4y`am1F z1Fi*5PjH;dqCIRRgj4uTOvdOmXcS0{a*mu85|wj7+N_a;NkBi$aqxf5TyIzZ!soh* zJuf6*_ev(&moMw(+od5}*0Em<-Bj!&+Db-TMC>EuEfOMPAMv*)LFt8v_}zk)Fohe& zxMqIKkP}CS=~k%gBD?Btu~{k6DmfMk9a_~iZ<8L)c%8pP_tJC!BF%AjUp&{35q`*T z)V0dB3OlM8o{(il33OwO=1iI?1&MT@hLgXKeBojo|6{pTCv(MaHFjG(4Q=RAR)79o z8>Zu1dh{NAf3p5|`R$uq&%(FP1hJOUJbj3K1?P3knjXuB)WIQ&gf!gaxH5k#wk{YF zkA;lJ-3+<95_2M-3xB#c`oN7w)eLw#do*%{#^LFQhs`{yP|)+4*jgVY{gq8A6< zZsdTH8~qu`jVuo~d7w`+LSqV`VS*A0nv`{Ti!T=rU~3vIw2%~bKc^iONTFeX`ynK zoTrLcu{SJlFL>$8jzQpYS`k;7$7l;SKnK)q>-vK)T>L zj-Ie+zRKV|8DOwJCt zf?9*9e1*{~oGI-LU zd=mz}4iX@@1jEFqX=W@coivyOP8Tvt6c-l})3A;eQM)AaA&QEZq6+&KXJno+=fJia zaix2_Q8A-h(3sU^15q3NL9=Ww0zk14`In8j}aGyqo#niXaCm&!p9i7;iv2G_i*TK)Xlz zxOqJ(7BFnxe$4GD^p_y{g87vA5ixNvt$|-+=v+t7cfCj+44ar)AdNkB!g~V$c&tEa-|EgDPLz>fJ?7c#BPGswtSi|?8SU-wG=6IJC zWBopbF>i^`DVs3XZB1B`-S!m@ZRHE;{Ve4j^E&hvA<8EEbf zlu!cw$VuHIczQGk$!#2{&IzQcsxvLuGqQTFxfhjFAKp+k*pd(PpPktq7cNt8ure2U z;2BS2%cCrV{$brRc7MQHUW&_%dvkJxDkQ29*Tb~N^ay)5Ci8f72 zU4!aat3`XwsIDIu{STn~dtu^r^x8$dIN3qr@;ALiKCHb9G zFqZ;$)4>xjEEW3OD}m3V-Ln(KJ2aI$o;>8%U;{CGm-m$CFdg(KZ2~Vfy-(H zCs_^m6|_IX;bqu!0{+y*E)J(yW=lWp?GD}#mqjda?H2@xEJCr&;~L3ommV!g)>#ro zC~&z9x<96?Y%}&Hq%^YUK_rnz!FNz*&2)YwWiy&0AdK?Pi1t%Ag=m6E_* z`zmFsdWpD5@GGi%iHv^TtP@orspciJxtqe9NOQ+)7bw5^jHWmeLY}nT{4%e%#^Ft2 zKd`4JriD_I5|cd+_WNh!-C7V{^k!<}_-XCnnXA=g_MqJ!TAZk?i z1Nd{4HWcVu(3!ZG6M~o3N~5x2K&-)efFMUpp9% zNVNY7{V}8qk=Xm%LGY3D#Q+Myn4Jz;gFL(mF`M`_2Dk|}ZGNZNLa~O0Jk~INI|Omc z$f=u#&T+1AT+@H}ojRQg%kUGl*(@{4I>-=&|9OunnNN7ezbKD-p76+5jDOsN9Z;1t(b2ne$Zo>}Ws3sthn7_( z>Hc)&aCSi6q-~LoVw_~QFfuh@Xd=Addf7RyCoAobo`2=dsfnE{x3hjsnipjue|5h{)-nB)vdo{l&&(5AE{b>(`xflbItZ~F5mMp^K*L# z#sj-9`vjk3Ec~Pihg}zQ1TW(4k&FKpyvKQq-hjE!r_;13H(jwK!LJjc?wp+v0qN`D zosK9_@Dpj2dm(_g7!C@%9mBmnxTXLRZXhI;mc|!v>Qu5c7DaJ+hn{~t8YPH6c!NmFpeg* z0^eCjC1iIFA#DQZ1)Z(M8R`BOLIcl#Ba+L}1vh5m&^l94Ic#B^L;^gyD}|jqSP`6F z5HJf*YC#M!Gk3TgSHQ{n`aL&$uiYK`qBryz@_=Udv-x_0PDI2$_ZnS$i9)OsXY7T< z@1&hLNEGxBhm*%&53OU@kAGX!<^9OULbOGD19XG?F4>$&flqPVci|`UXmB{y9pLvd zUydwk{5~uXmN9JrRAOGrj7#oLE~~>Ir3AQ`^4d>WiAh{F>7J`6%QZ2Ae4HCTrplg; zs9GX(p*xS5%MqH3aem*!_ke)EV&oT&o%<7J`xu;@G~uLciSz?q3vPSVKj{)8aP1ca zCmh009B{LC14kbUI6$mI&1t$DM57K|hx@sf7jX>o8*Ll~0bwxArg<8wN%|5{kX#q$ z+&oq;HJ;i4I6VDriw#2X1$6<&+#t;h_LdjPHig7OgDpVb&_!rCd?;=5D3x#oQ!s7= zTtLK&4W+~sDoTh&mc)@0=uRHi1Bq=S)I;imc;dlvLkWaQsfJ$2Gif_t7E%3RQeQO` zLI<%7eEsjx)0(TU00%h5RQ-U{KIAjd{u87ni32}GaGbWHJ;}=f$YgVZ?JZRz z?}>!GCyFAWHXSL;km^Y0cadFeINigf=EjP$f;>+kJ&@p#+{|s~h0-Y6#BfcA9o)_9 z#R;!nvYyATuw1(J;3aKsmmJ)>?P2=)@U|`YU)b1q;r&}KypMj~$L7Ya_b(UjdtuL> z6Z`u6_np{7c_z*jFS!1h9TfP`f5VX-JD$0IfqF+|@x$|`{Uh*kBnls-GZ65jQE<{3 z2>7umIO%}|{6rL-c#VL+NO0^Ej#tne;T2LoM0M!;X=a}qI~ZzB#? z(0MOp%mvjCv9%MB& z*}G%1gGOS7r(MZiQwImnWRbPqQ^y5gOnkz?N4?ZbvO=&0W!51qs+zh7Y@1Z!!~iDa zgRs%l)zna3WyOVK2DnhBjQ^b$7dxj8_?;0hR!$x3`vb)K3c6S!Ee$T}pV!w`t*JIt zIAf|!vZ>N;T##)@@J^Rg38jIFKqx}PBoIQ#qMzB)`plJW>zFy!M3t<{GqG{Jj!hN(+1Zt!lRSpF(C$z zE0-_qpWE9#r?I{!io6nMKwdM?&^ztXvuqZjxidkizIghmT=IXSxZEFb{Z&9}g!}H^ zXZzaVLL!231Gv3N@Fa;xg`_j#3e9bl)~(oRiMU2hr83U($aXZCLzGKF=~TtXx|wIh z*ep@DlalOChv0`zE$O4@aK?xJSKJi3vGPod)DxUjTTa2CgDuR=c1E~>e-5@V1=d=( zaCM~>1ypBjI^G^5_D{P*+1!{*zzmLRaB-83!;r`47zO;CN1IfX zd?&17QxzqTTL2xmV@vy~3ZT1Y`z>;Pm{e?iX5XTE=ChbruoN;s%muJkL{~A7Ld6Vf zmq$d`Mr+}6ON1p-9+GD$l4y0q_aRfM8vl!IKjYLk+_kaJBFJ9&C@)%`?yE@O{J_>0 z5_L)RZN2EBEgmHA3l}X{Kk%Fm>6*Im`ll|k%Cw=kc*XMO+CZu@bknh2B>9pgeCe@| zEtFBMysc1FD>vm`y~vb*)YVaPQAAEXX@%>>MtjO(d_N4o6#qzatR;(axNnLn=CYM` zb5tKaVfe?R;F0#XO##2v3fHa^{lH?gK)N4a7i!jq^r@!!41%$~KE*Uc-}Suo zl1ClGRK+?VH!EL`V*tu$%l#mcQyYhG8nH}$%v#f@1!8zCpp+}7nS zyHYP*d5Jk2kNdgA<9TZ@y?Kz55OPW#zT?XE1z$+~Ql&|*oG!7DcX7JB0&5C-B`v+s z7Xp5@lq*$I{q^E}ND@>-54tX-LtqOlEiwfsPt&uAEBi~Zkj0ciRd~c?BE33!Z}2?1 zVvS;?hgZ`(mR&SAugiC5aJThisleq+x>iw*M8flC*cIg;#Xr)w3gUHpzr^Rh{=kUs;?#v)AaIB2$5f+H`V5Sg7ZAqYe;4B_)+*NB=CoRz^m zXqRD98#XT^27h<^uPvv-`^Muo`tQdG2i^dQZx|n>G3dp)OxM*&?9LR>yyn`WAes9m5j`BcG77`&N86wzE zSY`@`#8?wR!<3+#A%(F?d*q{v&0f&Cwy%5ZV0pu`Z9BFtYp7g))o}C51>N~N`K%ZB zZW$QZH5@P=RxRB%cg6Lc)v*_d>-8L8ZfVc*>gN9XB40_{vN>}uUR>kKugVcl>lF(( zwY3j5`3sAi7kAW;&M&WSWXTbwVJtotQGVV9LF7#)q{xGd!n@u$g}4yQ?-4-BygmaV zZAP|OuxIJw1@n3agM$VZd7{l( zVG+i-uuD+p--pIR|7kc7ee-W8HhHe;ZnPvqbrHOWc@^r_0Pm=-Qb_!K2l)BBpuJJj z;dHD_oy-B348<`F+3jcLX8I%sxct@<&}$Hkeuw^B@cwIoLXyAdvoRyb z&6sh&>cn2ZQ0v19dL0UZ!Y{}JQU<D@*N1d29EGUhk0lM zh*>pqbI`9wOh4J$*P#TZ1oRtpy^SX!p_tzQe2-Oa#Pa48&4VRyyik$kgSL#F9G2sD zi?D^n5?4l1y0^R{jeLGelG)VB&RUTz38}BUSgX4UmTVVgmI-^+f}vfMx49*M$^>Wr zioP1}Bgu#D5W?8v&@)+89lnYloH9t)ySTJT**HZ~vz;unez;kF1J(c79jKVT%`;xy zFu&51ou93$#8-O2hc4oDe;sfSim${EfTvy?9gJdBap=OIg_m!9`{L$bie;L_I4D8Xbyp${?OOQC_d)mSCJrN2^ zBd=g@Nemkx{GzoroZ7>E1M3o!DWQlH^qJff*X$IiOh_xO3>0M)xp??s6!yqRL$PF{ zru=^h&*@@tCnr}8A4@T@H~)S(WgLp8WI|!?stZCWeT|FAjjS#7Eq0xp9VXsCCWhW0 zf9D%v0wyeO*zxfAZ{d`&mHpA6XXUG0hjAn5(x$z{{v_xb^|MYz;L;NYymR7rYMFq8 z2a!L}?*u&qem=K(w@8m8>;P`OY_PeqP_daD2uvT@-ia~|K19Eoe8_MeP z5bq#llWCl$jW_W{oE(v|S~C1Y@1#+x|67(}p9&r!6c*tbm2ce{B_R1%FZ7IKL3TR6&bGUTOvK|*}i*Y90$k*ctt%uRiD(*)w+Ml5I#CO8$)QojXttl&1;5~%Zk_Vfa zxmK09Vj>gFY?i82EK=-?u`2-U2R38W8qud>o6)W*Hr9!D4Sc<(Tc;T3{OOk|Mmjp{ zDzSgDia&(k&d?ckV|X6~uy25OoZCm(+tK+5!)@u@#u{1LFf(T%wZXcar+>v*$AEN5 zE)xF#e1BQ}|HT^i;@b(RBLAD9vjL8lepHL4Y`DcPpUo01p?MG-CAVH4H$ zgi+)%B*!vccaFlh4(tz}hT+;+J9vRB;(;xa6HP{@>uA#3!6qresV9s`PJBai>YL*B z5c?Wd+sCAi_O{mg+UlzEKyG%r$4w_svgtjaO!gj&s0{CU5!EmqRk#|JeTF#vB~l!o zed|7>Wt;Nuncs^TiL1`Gc|&xshx~=L>&4!zk&XqOnXt~Y!BXZh_+A~(bDRzu0yIdH zG7=8bul7;MNnE#qC4ihlo=!W$CwZl0N0X7bZ(~8DUx5k6VONm>(2kB3ySgdzT5MY& zJGG{|s**E7=#028B|M~Nicht726!|hOs2tJm`{<8g!3s`vG6-Dm$NvWO+?_jhr?0l zh0ZG#ezKw;y($8io-p9pSNaWnpWZCaE0`J$KBynZc}2GIuLqOMT@Zg6N~rdVDUwOwLjdQ|{ zKNSaP9(yZD(v~m(!AuUnvu!CMbz4qFV{H%cGf}MhNz0nQ6@g2~ENlJ}KNH28AE7lj z`uQ?H6L~+<32HCS#4s(q7))E-4)%8QbiitM;)~**-LH3y*kncJmOh?_7c6| z>{a)Qvp3S85qrnaUi|@n_Kq?sn7C{Zy4X%Xid>qfZ!k4{`nn>gZ=yqnh(3ys-;U7_RpW!+e5Bo@s8xQ*&N9;gd-qzg64-Go@ zQ@||FdhE}5&GZNUwzWE&urQ+)itu)lBRFq|MIa&b6BP)@mTyqXNDZjij|2jGt>Ya}L6&<1DJ*jJ{_0sN!{3Bt3atP*#r z&+bI^JW57a=dfp4ihB0mr8ExqSKf zevyqpe#aWp2p%ZLPW}#Ju1BNhO8(RWek=-3eiH(IA`1Rs82&;Ooa|Pj{fkj>irJ3o zAAWSVBA(8G!$0_L3+~B3n72pmp;+9PN!`It#D>TkUjR#Nh&~ni3-V0l+onc-Y$A_% zxR1FnPJw!BIu4>sj(fexoD+P0EOf@>y=ksEbEJO~XAYmU^}eSXeH_3%N>H0HD6I{y zt`5kW&A>qu?(L9-ZF>^!35o{xf}|*$o$>L}(wvhmNpm`ygDt_za$iAqNluB0pQNer z!+6XxQEU?q+Ne74isg|K2XCR|bU*heWcNj5u+)H4OnE#aW?Ouj!j+J%iQK+JUoxRU zTNu9w!}uK)c}=9JLN7#U4Cnq)>9c?RJ)QgV@xT7w(5F8YIuq6Ah;&D^Y(V>->OvwO z*t+kHn3}jd-VCal@xG5WwZ_BYV-oZU5mx3CJmRDBQtw_Ig~VbHBjlZAtc|y;MT-S13H|VD_QLD z8!{O}RcR`XU?Bx)Tg$Y2Lx-IXCG-tg{PoaFip?21%%@VNLW;JjtWANUSYa*jQpaCa zwuCe9KwJB0a)S09;uTKiKx$G_>Y3e6F|~yB1pHI>JDq1P&q#B+6EI8mtUdWX`{|gu zwgelia$)(1OqQs6J7u|^G|4(KManub^C{ZM=7IR!*-tT)`W-DH`B6uzYvxltZGSHr zHzL_s&#N)wHu8svtY<4KN)OPYB8ZeJd!iN-;Z6vcIfq%6!~_GL!(`{h;b${hR;yeC z8@{09Hq3!e#m-<`Wacz!P%zdP#Jm}F6)e`3axvXfTDgG$a1S7Gm1CnB_r>ooONXaE6v`R8-dkhg@VJ+-PYaAp=0l z{}eVJnk_ay%n4(|+y@T=7jsanZ!Wxak;IfRVsLZ>nm{K(jx5~1cHvOWepoa#x3|63 zPP1E*#aJIKy+L!eCymCmHr*-0P4jOU@aBLkeXnD^IIPrBd`h$iD#? zW>M&s8)r#yVP={Vr8C2BQ$mm9;u(4d@l+XXSLk5^p)-vIQH?Sq^l*a0exm4Fs0mW~ zAKA|nlu*0P&W^*+z(=wy9}AaD?f{X)x1b6?!f?933HVWh)7T+@yos?lONb3_sw&M> zbyY-93o!&oGSZgOTp+JSdDk>c&6pKjYwXVKsa$KOo~(l@Z^o5MrpEv~KaP-c7PN#4 zF#lHgpg+v<@^OxrC$18BiG?2`IQXD|UoCmyT~QybN!FpGV}t%Ik!UFDAlybthKdR^ z)6v*nN%tVy zAB%#MEi6lz{fak+b zlp^KRnVRXs24{o$460#OgB#*%qkC@tTg42CrZUYxEEujIqk=q zfN!+n2lhc^>;)8ulJALl4AZbhAt|(s3_C9;E!7yfEzZDWML%WI$R`nh^w2G2PvgeD zDxcF5A2)j&_X|EBxE`)EMVSh$>pj4#o zi`1v5JXn-7PN)rWg`&jbEv-BdgAUyQyZ*s@+y#MjUrS9OE%bWHlIBGNHm6p;rZ=;u zIP<|T^#)5@iZhT~Muo%KoZRy4q?GI;H|r@a+ps+JRp($uLvnttuWzwBXJ|!6PKE|t zV-6Eu_9^D!bJ!eAjh(~L;aUh-*=UIRH;5fJrUD;1O5nOh;u)9BhvE4`ExH;zgrpFr zEJ0qY$b{hwXetE$eiQc2e7+Yex3ItH8xXVQm+FGmMx2u`4@v`guBtK;5P%a%ST4{V zUoJMBN%2}diXZAKbTnqvwO@Nf%li3&RRfA9|A6Rz0mk+m=*chngN3M^2gz;_ zV7yDYcDYQqSsE@aFD_L{g{KQoe>nLYv5)X71KB`#M}d%#SssVz>nf=6tsmPuQrc9M zrYef&8fo9SC$DW;Q+0o~Hcv@*C4cmiORq^wPgC@)@_kpgZ|Ez@^J2OCF_s^4JQY#g zjn9LaDjE-z;40&r}h$)n>nj{wW~e?L}OWL+!JZ+-&rCbH>5f-ZV(=2_}pw6KUCnW4bGv-OX7^a z(`e{InuwP79uX+M)^%2ZX&RjfGiO3eiTF%jpckHG-RX9@-M*$Y9#_N@cV^l=MK#z(Jp!3?E)YP}1oVSgV4%i8f+8JQY4f4ss%*!YN$(;9f&x zl;N(1*G!Qdd8R3P|U_ov!lX92jE?GR>)>2y&C@C!PW~8Qwe5I7q!QIdz zSQ@BZqg>gzy+AI`beNOqwXUR_80mxo?|*uQAW{P~L)vy}FcO=Z>X z7pw^^XerEfu63uMx45<>GrxK1hNaB~ZOiH#7B%Ix*5&vLbNwaWs_sB9XhNd1_KT z^Q!$F<(UPJN8W|dD!LlyTz$$ z$~`>Ap~!J}tAAtrilrI-3tKn%Gc&c!y7oz^~LJV{AzcT$o^yE^1y?;W8(l99lk z`q$-ul@6nSmy{>f1S<_m6dEO%<4F|4zm4R$g~>=#Zgz$TEnQ`9BZDor46naHGDAzV z%lg>|TN;u*PT~|v&Weg^4}CG2hA{qe?Hpn!(8<@8%X7k`VbaCG>vw?HT#|{Ch;7nQ z%rrP!gXa>nMI;D~O3WJVa$S^nl@4JyVnJIdsSOeZQkqqvpRXZ-#qYW?Q%kh}OtahE z|J$KMocz%3w7p|bNlDMtH-vg*+qYHiN3ei7v=43XIv<{s~o0VZV zg2dei5Q`&@^upt2#Se|hGDp1h`VZ$@xV z^`g8?C(2W1)wa#=DXRCSZd^;Gv}{#+MRx`Lwq#9vedsp!p2LtQPGgLei>M+P!1Cfy zV;Nr_G#GSeiWVuel1Tl4Z-mp3&nYs(|~t8QU^R#yGOI^(ByL-E`V z?d|LPii`W!x3_PYTO9KGx>q$fukJ1?>R#R4ysF!0$_=L>H_-S%2{a_W@E9mI*lHq2 za!HWclK+xnvc#DT6L`E>{xSOt@JP84FwUX^Z~{ZvCOKQ-@_~ZAL?mkp+B|!}G=jFV z)`gH7A!m=SCOLau+r}-Bu^?yDLdTV|SAcRKc7QxVhug82)?;kxQXp8Ig52*w9cslh zY$HX%X$u0R+YQ)<&s~;AvbI5hHrmsW3Pc*t%o{Tn1yk}9p()TZGkO+!A-yv7ck_od zJxQ}KT^xFmz2~IwEy6wV4t%dw@&^my)IedqKoO@aEFa~DfaF|TUK=IXBXy@I-#Bi; zNLoZO3%Y&Os9_QRDx?cb&8sfVulIW@f`h?|jLNP+^L)hWYFb)hy}ziX*v;XYW$pgT zzC5j8O>!lr<->Rz$ad$~mK8LYWftbxG?&NaDXPsbuE_S}R+nYf_|v^`AV6>s#y(fC zLe}<;!PGnkwmRqnYh9QG_67Aj-43B-M=l>#;#a0oQbPiBIl*lFhWoF~Hqk{G4iR)| z@R)X8`tyY*u8v+AbBj@34sLhq|)Fltjgr&d0t5WB)O9I_bo3Ji?O)_$KDL8;lEA zn2l7`Rq$`L0>3Ht=@IV;ewiZI9e#Onu^;1h;@{Y@d|Bp#!IlkvIx!rhbsd}5u+Gpc zU?Po-VslY;4D|IweAgwpgNP8PQ;D->pG$@fiYb0dOPT2w)?YVFrawI8Mh;|+J&!rz zY`%$Slq%mXhNiO< z9?hwR`gJi#dy>tTWM@Zhw$P9bzbD$ofQf$gvm?MowgkOSEAJDb*!^(bL z{*9);sc0YmUYFn0)l>HWE%tfkL?Jr{UYRZB2Xn&TCbE?GUE;IbRdJB0%Zlku3)wwn04LTGv(w!#&NH z{(O3Ax;xv=zNPD-=8_ywS*G%dGq8~)jsHPYPHPv)n!6x-{3*L`vyXqd9`=F^yKa{s zm7lO__6#w;n{c%{fbo@(&qon?N(`1D+7Py843)HcB&(oW4=>T&=tmFw8gG#m7(I>z>Zb_?{Qub!6R^YmWm z#)+4Ouk*yqM(vPKqRr>grc;_547LLSg*k=+$$(J0xX<*xze}2t1KmYQ!ft!wA5=u_=DzbO) z^S{6QvCxxi0*fxY@A+MK|Ni;Cs2P!%SeSMFiFfxs^1)*xBaeOX$i8<^T%T2#n20?0 z-@+Up)^345{8cQPOv?;hZJ}ynPCIa0+;z6>jOj*9xC0*W4#KZ3#St`;kmv;A=v+sH=G15z)^=wnMZhIL{MD@PNkQ791<=csO4i??W?j z84x(8^^58&@|@#3_IVg5pg$UO?DH`0L4VUc=WB45_xW1HKDT_IuSx849&aRY(GmCi zCT;^7U!zIyn`>p@63@*wyBc|dbNJf-2=msZ_txMCC|SUXz5z!Z=7Kdu-H0|7n76bc z-12v|uBdk-@a`x$?PbxveF}JR3V2@>oc3hAF%vFC|D8sA5A5H^_#9ssb6krbkU^>d z|2}ez6i5xh+Du$JsC*m3#3_~^Nq-DyCzu7f^Mi!SIK!nyez$PIMBIa+9p|coO4i&& zC$dO>uYBJu1L$3`HaGXYtwpOgUDEOS&*6h_kc0iTJH|5=ZR>eX=a$PFmvj?qQ_d3CG7SZ?- z3LgJ?DaR9kYW8V)m*Xn--7wBdInJWrHSt3{Al`Q)&pG~L`{q1EjGN;z_POQTgwN=2 zo4700I^zR2Rc9KV+5hbR8XUgZ1Yr+5!%+e8)Nf8rN_zoR_~8StkQ z1b=@5(mM7FZx7pf3f(;b!Ok%BE4xtB(4VT{D&VFoEw0$YRNj2pyKYmblITs}xSKntJb^CsSgdE;DJFi{1lg}dReDzy0; z&qK;_pmh-r08fj7cMJH$X~19RYshh_^$1)V-y+%&@OA^9%lo<2#IY7M`j3V8P0@ev z+13hccntl&s8Rh0G5&c*KR>1K>MO$V`Nnr2679p|>@dbjYlMEn@J{2qydNGPEBc>f z^e?_k@j8Nbjv4UZ(03!_kxmdCH1K-pe)R#+K&6CSh5lq@JcLr;!&pCMHKw9Ql%xhN zkqXor5QX*??vgxV2u5Bf?$N-Fzkz(&Lw*i1p#pSKQXi-)A8z;0|K{a4eJTrzrbJyg zqoTa|ErZpGPN%nVY5Ulf*It^{+S;5Ey33|%bs{9{svYwCXFhBktj!cO^dwmMcR4@# z1pvC%c8wKI>n-5z2ApDe{(j~0dGTl0Y4fACtfPx??=Ijb^)hz`N}BD zxX%>6$(KYbT#gL^#VXSab9qHWQBj@b|HR3C6ZIRRfNbG?Oh9l`ls zi{Ox{2v@)ve;#utinb8=sgSL8XzUF`Gl9C6o*`#$kbF&2)?*!RP@4rm;w zXL-(X8~fbyeU9VU=V4q2G>+@DJnxJYAN=Ci&`UO8&Fm0oaN42f5;mXA zeN?t{Tcf({azNk^tL6CM>P>PG3)N`yy+&&2~Op%C=(yms=H|NQ#v z-+`&|>L2~GPi_}-zh=v04F`aRz} zPf4(QW0y2xLC5re0sKz{XN@vE%ER#ECR}>XfR9Z4LHRMS+5TtV&vV8df%^ZQ{?BOt z0qsH7$d*oo40;L~v6H-wt<-EIJvmhyeNVW}@hRIp7jE;M*+xD-Vg1&le7^r_%on09 z3^lh;{6V`9KD&unlS=aPf=4S>MPZw8>r+u2M^zh#(2`#Yo3vp#VJ7)~-pZ`Xq|Btu zlHy{!4MMLcjV$rqEDajsk{X5QfQH$YrKNjhl1geAOlxV~>~rhC@XOooc>B?H9~P@` zXd51V>(+g5ec^mf-g)4+Pj1}!qxp;H_iSHOnLl^eGPdfi05(?7`YiA^6D}PkI8d+=x*HktM<2y*z;K|!cSFr( zxM7i7jPN8e#OFv3W8A0abTrffJAQ9Q5v6tJ253VFF{Td#L$p;`hJHi1rwVmEY%{wW z?%gu-k!6A0?y-f#yB7MJ&;QusIb+K^Qji`~FCEyqc<8z{^);h6t=P3|;L4RXCBv65 zUAT2_F|ubW*H^b!&L64t5BAnO>^1XO)y~;ERN*bD&QR6js^Zf5=eM`4?Je;X%~@7k zwxp*tuP9HY`EG*mwu^mxw!@`r8S0NJ7#F(^Uk$@Nm z?G72kk?DKo^1*@r`CXm0)!4`x2sEA&1*SJKHy84KEF+hw)mk10FPFx_OVhgHPPeNp zSeH?n=TYFNCmXTK=ZLGc{1W%~TSkL^xR1-gLsH57jh+ANY}h0E;`E{s9c6I3JDP(Z z*i4{D)Q)GF)r7T|8!)<87E@O?ZwpJqb!bMP|FntjSGo<{V2) zOKVDNsw!qU$8c!!bkoYQ#vxBX8#4--=%23>m`I6~8_dFT@b$q@=wZ0s6hoEC=Xjds zm}Z1C!*YafoET5JR31cC9?*@zDW{lC7K$k^3zTAbJVp34!=oUVX@)p{uWTRx%ghGK zTA=k2XUSu*(v%=xy-TVMR)t3k#S>_p{Q4~8rCM)wH5FwTvpxd~XBNLdYe?@j^9WU& zF`FzZes>0BF)4Z%`y0}ZvJJ9KDf5CLaIP47ZqSYTpz>3xh-~e-=}sID1LUIsQ@h6< zCK(E2A@2x^*%Kvy;rA9!BhaWm2(3)03Au?>=x9Qv40DDf$6La8gT1Ee%1_UfD4)=i zbm+E`GeG_gem%2G`Kdmhq}ml^6qNs{V_brc?*SbrNbr%uVBp}xHtF!8L3RkbX<}Sx zmmnoT<>%sFhD6dn{J#4dbr?XV}N3fQX zoSZ-)C#QrwG^-XZJ+HI#yrqk(!)03)7v4SN&#hb1$UHMhhN3Pvd zfdji?&#ntgHK#(~+K%~uQhQwru;9e2S_9LiOE5{t(-Oi=8w}a~W;GSKcpW1NPQ0Tv zSfBFo;yHW6=mXEGo%9p5OAGfx#w5`lr-{&g(m!i&Vy7B@O?$8#kw@H>O1>b_D*KOn zJldOoIYH|gx=$%a+fvs5CdoVty*neU_uLx6PSA4o6So!*WATzdcJ z@;#{p$ZeEckOH2z93k3^Mpf2h$s-jEFJ9pO+Up zgyAxAFqDBF4SQ`QlVrBwND1Rpo69H@j&8KwOcln$xVX4>aq)3Unn!OeB5jdVs=m)k zY|qm-T8U+$=U2c86Fe)^a}1_?&5UAcvPMRPFn)(0kYA(tN3656CC(htXZDB=9Y)RX z*Sn&DHfDS`A4=n3+0m(U5@)C#1KFw;6)Ng4>V0uK&PmM<#m(IRcHYxFHM2 zrKXNsIArjmacQaJ7Y!b8-H7(>M_e~x;I$)?lSf=D+7VyiQHF)a5ayE1>%DD4R*BW) zthx%5h7Bb6l<6WH_BY1(D+{#P8n5+N9`knH;^k$Rdub8My=>lILgq0JV2%`H z5%LkDwMfs%i?n{K!i=|P4B_H1PhTmF`CCss@~$g}VIQ(Ptqqq8<9gW~Y5G|YgN!>Y zF!r()rQOhS` zw0!1j`Q&_T<6KRLGC}~CXy@9I|BIhLCChY}iJSW{nTDp4p!_q?1 zksH6Y+^@8@JO}3s{pD66?&WIuY1R+cF2~;$5o`~Mjr0&GQP9Zx4G9#_^{e%TB7-;(j8RMc8V0om_mPx zmzEAIcC{4PH>1_?l~ai|MChr+8syo&ezvEG{6p8*IP~6(JFRamUbbeZga_*8;$JPD z)y6xO>rIEGKq*4Z+N0svyUpfYG#|N`AX{t)f&e|2LR?|Gb zUD7a%4NZDY^2*#X*{uRX(ud~c3{4LSXq7$2;^`b2?~Lj;xP5%TPLYwF`o*^&+%1a5 zxe=O|bv;k?9j>F*QXcfQn1iwbD%QO{CDb$8A57@eQIQhbq*uM zYGkoFMN$UH()p?qOOUl4Kan1-9*HR+uk1K5EjS<`sUSV0Pf|cYaN0og-=n$>NsePe zJF-(@T=I}^QCfP&N0o`D#iR$d>FJ5o#)#CWDm2XhK}x2@m!|Z8dD-MKrhDWsXt$OU z+{8=_dm&il+*^>8=6^seN|2=iQSF4mD6=nK40eevJor^`k9Aq(@$`BlB0^=K@DN8t zt5%VIZ4z6W?&knTlP#f3VS;}|tB{z)l!%`B-580J%~o#S=HBaO{#c7O2TJckC@>Pnz7ns^(*$QrVF)An1Xbiav z^K!Cuo9k(LuX+r5%$SZh$qQaqu!`N?d4{JFqP10zCbu`%3#ZNGcY}i3b%~A0Y!_~0 z(~{9IA~QZRGul6(I3kq5io1Yp+I*Ktk zF*3-JRhTGZB<5c^V=+oytL^tiPngb?)}h{@ew38F_JO9Ne>D@)ZUphI$w zzr9NZguk27GGJ~9Y^h)4_kK#Y>+{W=862VX5gPy{Wds*& zE?QKP1|-BsMT$B!=_9}FXTwUMxy0lmMuYnV|=M zxeo=tKnRIZe}t!CUZ5;(e8*1-8vXIdunk%E$WFY5NZs@^0sUzdVN(~=Op0)kb+vF8 z5_0}2EFpxPcqc1Gqc(baWhPdq1Op}9^`Jb_&ox&t`CWeU3bHiV^^LMbU4uUX=3_zw zn&Ej|?v1%ZJkkhph3qw1je#5z-t`k<%|t%BRN@pIp% z4`uJ;%AdO_0SNk+*F}baN zBhNaU`e|9#cgwpSj0rBiLU~4Q{8yI2^E=4;k87vYR6@pJa;6~dW%oeTE|<7k3A;zP*Xi*c!a&+^*kdBU^0F~j3QNG@)hEqE-ut%v8#l1uvZxc4BaC2pe#q11cLqw$Tq$*A!7bnPL5VU8- z1v8n+vS!%}2NK`!HrF=SZf|B#{0s&rA?MiU*qXQSX=bakSK6&Dj0Qj1 z*vxL9YujeRS%%Tn%eNONzWFxuy5$zH7R|k^W*+d^Y&3QE$u-%V`L^&{zTB&YZ!^28 z7b_Knk+Oj^#Q&qG0G)2#VTg084)*`rl7ZT z83(`cB}+#~Gzle{@U7E^_0M?7PwNmL%i_tbmbl&YW*xNd@6Sscx<2pkFS3d6zi1B$ zvb;!NN$Hv4?kX$sDc!oIfH&M%xozu|$bf*zl-9}Jyu7+6pZnF_%d4B~11+ow??%0U zWc${w+ei9$h>!2k^j=6-)8|SH%UdkRxzf4}7V7AOK=h+yy2+9L4Bxhpl@?>|ID#2` zYOKv_PzIa7aH&@Fep$8~_iKD78B3KG=D}hukhT|69wkt!1MRdE4Y7)M<8Fl%cbwHJtRzDqft2eax3!jUsyM#=Ao85ELQk~F+#x~ zO{aK-)h#jj(1b}uZ!cDC@@I3NCD~y3<+4m-K7A>Z=xtHyO0(QXU&1D3zQ{QXeHeTF zqa6v~rX7ilhz!dT4E?`fW4_hheFzX8*J9I$@@z{9@yCl@0d{r;1PTvG0XUr(e#3vq zpLS$Ge00=#@8LnBFRKr%ocA3rrns8A4xc!uIxQ}#SJ<(zymnnXTW!XOo=Hi0^KPP! z62g3$i8kMDN=r_POAL28+7#xw8g1E;G0Bgd-cb_TWXAO%^3?6h=4FJBfS(EbtXyIFlC@Qa&B7_X9^H~-JSI33f`OVar_l}EJkYw(z`#edtMs<5e>TGG1PS0;qrD+>IZSkiK{ zVPnP&6DTSae}$Hks`7M4Ziu4(>I;GQu_bV^2^d} zWb@;eap-pZ`{1LKJz|1#aRkWduEKblHdn&~G5o?z4V9)j>WtNV8sbBuy?*F{){)ax zp|AWnTa*l~3X}4>2WNFkC}=IH*qR@cIG|@^W7qtoI2rR(*j%&GXOEkX{;6pT%D!yc z|G{z#nqLgfM@ezH(LwZUn8Vbkju`Et1;l8V5EZgAfWszYHQ$_ie^8jbO`Woy(<~g1 zFi%0sG!Kam?K5alUU<9E7R(NreR?Jpjtx%AYZsjzU`de`ujXDQ!$(~uREIe*;_Bk0 zewksx0knnCAB*9Ge{-Hpn|~`$|8@1G>!gRQfs*j6oSWO_O6PK5ugN&6q&Y7*isg4t z=WuhA-tQ02ke7ty#KvUD`1kJ7u2*QVmsM6m3zGT`3QFwWZcviNJEl$R)ShwUM<&L} z2OD3r_Kry|nUv5k%h8Pu>$+@v$o%MkMP5z!{!U(L>;E0~DofX!cFNB{1O8%l=Vg5C z3u!6VG6^1L<>Ez-_O;Ql7>^h0yIc25%F7MP%5GQCIyl(kADtkiWS5?av94VTmYtB3 z*Bh^rpP?Q9_34=&zHEB`=JL%q?Nq9fhcV)$8`O_MiuN*Te(5b{)DVv8k&(bTH{{$;YNdD0haXwQ4nX9D!{8Pq)K-w~7>n?w%#T%5yTvM<^!vqMJer8y+`8om6l zs!uAtJ8iG|2#1##Ar#6`c$Z*ENVtUOuIb9a2>;S6yMzzC-M34ccZi*R{U$%(4xRjQ z32$!5>})hOH=4WTxEkeU%%TgPq8;V#wBw(buIc*Aru+X`c?V!;Wmt}}rlD(Y=ZpQ< zi%ZXHpS+vjYAH={>(7XC2wLJQuD3P{$07irx~jpE|)iLATltJ15(8y3GUOr z+&=R!&Q!3R(L6Eaa=9}8#W&zGnbPUZ@zpNLoQxLzFZ zpOs(YT|zyCO01U+_4CG;zP99D?&GB|zSS$GwYD8s#x~cy>5H?<&pFfA&VZ4Z1maEq z2HAM6*%)~HErIB|Yh~jswv7iaH|;blFB;6xTHk-eq^vWVpHNI&g}f4VwS>C*Gt)L+ zb%nJ5W94S9&a_Ucu;gmv9j!!v32mUO2)8=|DyPZnfG7^W)3!-v$(Cr($N;*w>E4yE zedLiou6ob1fb(tzEFnIwH9j%!d3V|C{Qep8VeG0@n0EYI@?m=7H}dh{QXiM*g8>6E zcFqA%h7wxk0z|5iT!E9!&2RK_LjZCb?H7tCb}(@ERpC3=I3I3GsLUPT3HEA;%EZZi`D z328f9CuD@SAJQ#4AhyTYjDe#9OkGpEwe@b(d01A*aXq3(jzCU-?JMApa)@4G0V~^#ZZ+-9DPQ4bq zGGpMfs)2zv+>73TK=d9JEix!u4=7bX^EXc_DGL45QgCfmy-E0cQr<9MBD;4GTZO?*%q{MI^ zac&|z(apIs3-?*|uls+)p_JKd5GROehoNgb`Ef19DS~3L<#e1NbDV2nbWD`Cr$3p= zk><>bXd{Q3K_!;yN5))mN@-AV7AF$1`Q+S+{-9t(m818-G3k?6m8HJ&!n9ZN<)_`= zqDt+?yjQBWyq{U|@YHD!cQiIPS2lGjWe7~`lNiu%;q#MEADcV1aii`Qszz?HxopN6 z_3BMG4;VgrrO&Uqi_dwEqF`D(o;Gx#4iY3zx?`7{&_VhrokEF4x0DiB84BYP;xq+x zp$9BcNHJ8ZPl~!7KgZ6%r$|J%@%a<(nv#_@>DH0`D|!jnU&a>M14}!Nzh`Q8cI885 zqn4#!WyHHz{&gFs*KC-V%X(s?F(@fIB>#q2W>&wlu%J_t$loaZv?N?Uf0^g<*WR5! zOGv^W$zRpKE`RDHuG^Jb(@o4=a=JH*`{Y(KW=~)IJK{_bw>HJprWj(DI2grb(x?WP zu)h9rkpTZ=t=%3cf?3awuo45I5JaS}zITgNMJRc(2tatcRcdR(xw zI56juQfO+iX<3!L%bl6+dgQ{QUHB_t@g+xS7oIPvaozd*U)Bj4N`;IwO@EOhrHI^c zzZPf@O{2R{j1&dq%=LDm+U^?v^Q0_X+jc#72o3x6QhoBqRCOKy!1Qk2u6bZWNby5e zU9zvfbM(NuLz19wqZ*hL6Vkcn$%;vj&nax?Y9pWW>Rr3KY|`p!*@C#Ke(GOrvUr2M zBuE*#shpzCt{b_paDFaaQ3-M(kdT{5P@}QbD3%l@ND1ty2u)}whJ&)2oQrcI=UGJG zQQH#bx;SSSICMzsNA{xL`f7P)k46OR%f%oDH15f&n;<+{ zC6nYbUJM6mn+>%UEUc7Z9xEB*5aN)96X$Z7CO1rY;F@mTrav&gYt@+UzM=|~hRhu} z`p&DfyHq_maoxI*H{OsBHY=R-_@s&_YdVL-Bn4_-?y{$?o>aEFwzt=>0pENRfE>ri zlTwFIDLZp*%=T~=oOJ#KK=O+(alJCV>CZ5+=I0gc9c;5mcG<4$BB6I;@SWzbJF3&X zsLA*Ct{Ieg|9#uGJ^FOY$a(#?g~%_&^`4M*@Y1`1d90i4E(4&;Dnla2jz2K|I91IL85mm`GpJT`JQ zJSJQOnv}=nul=mbIM@G-qgyXW1{)X4%Q*tg+RW^#`NeYRkVS!%4AKpx-Azl|Uy73Q zbGx@jdTaKo*h5xg(cENOag#Yfb1Ts1?q{xP$4S^N`(<| z5m81Pr;#IANKptC;p#@a?W!p6q>Pwd(AZcodxY++=I~+Rrp9=5$c>{@l+7ul7YrUS ze^_GUl*D24hz}Vc(sYofm*)S?z*+}`u~?)mmU)S~Va20Z$xqV!d(Quujo}cB?qru8 zg1(AFc1@HYWG7RB>qW!r0A+K4>#YFSCOwS-hK0&n)&(Ys@m^oqq{K1iYvdGCmQ>(4 zO;1lS_lR>P9jPUkBqasn4hWBqBp0YpiFuYtTFkK?V?vj!SsCImLuGCH{85GTN2PQa zeZ#;3mF-OiizzgHV0PcxLvig>+bh0Dc3SA&R^yfvQSriK&)`MlQ{&=oEJqG$6{I=j z!7-1`ucgl?ELd~b&kC)6F80edK=aFXnR;pBmrYp_;))Cjk@uSWHs;BrT~8>RUF+n5 zdc4v-#Ov{mLL+OH%)UMw+b$Uvz9%Gvwh?1CLyAL;*K{7$IlP6D(KGL<)8wx_<*Xo$ zFrf>`ini;KT7d=_p;rbfcqECAi*lH4oHZdya>`bOWAC0JZrU?EGETnZbCbLVjQD|35_QA^fz>6(<=jktlIBNDvEWLItye5T8f zV9I_)c~62y<3MBKW#qjk-!3cfV^RlpYBO!x^5rw}*? zCMEXEY~%Wpw$sxeNcvXEAwAe{olUH+7QO=Y9klL4gwD|uXVd!;&N$VbI{EE8Mc7X~BE}S>gn^WRljUldIl{V&##u3U|yc&r(W*HVJbBUv+ zr28z<_>e{xovM+-X9+r!p;f7++)~q-qK^nWX#CG^B5@n8$g{IXFP_U#Wigeqa7!l8iu{#NB};TY4T?BR54vvCi1{C-=pYOJ(^ z{-@}IRx6t=jZ3V)HX8%Vvn@^UMgG1+THLPD7-Q4O!rp?T%K@I?6>Y7(#UMO(`pY-? zn(w5mVJ37y;};kYJq3^OJ=7*>)K?PTDCqe2M#8Whqg*(bxB1$AMO4B~rJU-HD#CMf zK2CYoC9!)Fk)?&kxpD|=i^f{qKLBY=bxDn^@)qkfzC=?F@Q7klk5 zXUB?_D#3w~azaY~tTvA90V!>=+P7u%j=>Nd-#K>V)N3XN8RuK#x(rUu9M&n^+dtUb zZ14^At0*W$-Dk`o?jU!AqDlvu!s5Q>6Xxwz+Ih%~Tuqe(rLik)4Vc@Wh(qrOV z7dAQHa!!K&+?3mhM}x~e&vQSo)#Bj{N_Y6~jZbKK2x^)K&MC-tKaafVdFRHnBD_04 z_>y<$=OsNq?&m+Ad%j73t~R?UpPfYfv~8VhmFWoMM!v#Q7jsd)S&5EYLb;e;1&6b8 z?5bH}KZVB=tgj@x6&!*pIzQ3AP-_#jBhA-z#LMfaU*j+#c83JHmV3!llvf+`ai=<3 zdE(~>$@g{m#y_gnqnPLx_4t!k9?kc^_I#KATo%ejk*2x6G)`x{!7lZa2IcloVGT7F zwXsV8TCJaKF)$!x6#lTtFtI5XMjuTk&H4NV!zGfGpO={)AM0on5`=>ns)5WmZrl)3o`C}?Nl|EdR)7H^+ph&)b!X2gQ9jDwjseQ!k={3a`tP!7(n6oze>iPZ>no-GpDVXK+3chF(h8EWQ+1z6tPJc;m0Tci-F}fYO_9lvmo{?57CUy+ z1^AA#xu#XsL*A$k-@)0Ct(+R?$s8~&5 zu{{H$o*|be&d4I=3Y#e+O7RT}Zrvs%xUE;q_;9m7qdC?tIlireLt0062u)9HCHR#( zypuY-mh|YEH%*V1qU+jHDilen*#?&my~WDUHQ+ zoAQYK7`xGMMlC<)_HBI+!~LanHDZjSqe>W=ZTEazCrS3%7IC(nSZEU~C7KzYM$SEF z{+X*$nx~$&l$%yFmk`A{I{DJmx&B=;6{9^e$cMvrtV-W}*)A9KTh{>-KhulR26kTA z?F^mq@fdn5Xb-E^Hp*MJ*%+NEdA z!I|Ae2lApxix6}3^OF_3D-Ayz42^@8yBhnjZem?yg_6C?XP2MJYSDS>noyV&EYk>UNks~I%} z9=W-x38-edZzr*+Lr8X1wir@1n=PYk3~o=NvoFS)#84p~=R-r=Cxym`#s~Vg6yr{I zF@mWb-owa`ILSwIvMla##`rr`VJa0z`MA90)8bg4&@qo4Uh0aHzZU2I7 z;reyMc+>3h8(hCW@o3|-qkmpE`q@VLmES5pf}pc{uerVHC8?j>F*h(%mb`lP$V+qt z`dNfO>R8tQKzD)AT`p%8nrkF)Z)nfUi+}Xh?^0zy_D))Cqa;Cl;?_C}Vw}W?1S8|3 zE3I`@E7&Nk@4V@($73bnu-}R8a#08t=p=c2c~|T4plNNxBr6FUt(M}8a&~D1o^KhW zyL<%aN_EM%qIVq7ub^js*Dg7o+XhA^Lu>#UfLa(~zJj#f%=i2ReuV)ZdBPD**>*~VLxT5(qJ zP!>amDDO26@DB|SH5vmVTQ(0E?>!@UXs+_L9iw@v$>y38&=}RJAW(T<*#K*;#(ZWh zLJCt~FbY5ZW+Ztee#%Ek^W-l#uzx`igBY>sVnb;%WHE&;%U;H2UJMl*?N(Mb84V>Z z(3p&8NF_e9Sz_AMR3dpdZ|*&U#%?}FYVO^90F>ZGBza9Eu@H%5F&Zo*q<<_XF+B25 zXUG3vmK{N#|73P@ySgie#h(8s)eE6Qs`Qa1X?o@Ov4wrJJEo3tLZ`6=HU8XX-fn*+nc1N}`lyDQgh_V;hr%-l@@)5Wo0KK5bl=;JHL@puPC77WyPu=Qm_yLxY$m;F zp6b4DE`?f>-S^lO7R|96@iUHNDWtn38?j8}n=C`!_p%gf{mOl>NX@OM-S-A*IF7FL z@J1=rHqw1>lBU?I-S=jmd%m?uSJ^z@TBQ`bCw`k$XI6))<94EbnOCv?NK#-PIdX@DYcHcl6XgIN{0?f{FC9B zILA>tXJA!Dab>BaaK_Z)nz@erx#eZ0bIVH{aZ_q*r)RfsKWo;k6xVEZovZJuPq^z=rS2HS0%c>o>yUc8eC1wT*II>kFD;(t7&@!Cy0offibFI> zUR7;*m7{<8)T)Zwk||{~&nI6~O#N1ui=?NQO)4%ab4)6pR$ej3QCe10KDm;rFR#?= zea5tDGyz3T(V{GyU0X(@T;_e6poS5})iuSlk|q|5)^o>IeJN?^4egj#Mm8L6hiGZE z6-iRu@|r0$S3xaRR9;r&pg~HCtIHA#A z+VaZDj_K9qRn_ISe4OnluXWT+shUwy>ZmCzo94J?MtLn{M&(!5OefaL+P02aQ=qCD zBEO_Rv8oi3rjU+_Gin{Pv@c7`Yo=Ee&(RYl=E>!i#TB9f%WG>c{JNsJdNP$&Q$Dw> zCfP9*vMs47uBj<6A^h~}s_9kLv`1x4qJy++%S&bup1jX2uPL8cQRb=f8PlhiRhLkK ziH^zTGt0DAs3@zgEvueXRXwdnZ>aL(YR8n~>S}mYSVBMbvR=6){y-)jB3sRa8{XB1<&MjA~KAR1^fG*G5g*wDP3tD#6u)I%uI%95~=TUs!A(iZFLpzYHF)zl+@0sh90V` zL|G_oZSlnNit<{$Y6P8E&8Vp?tD#K_Dg`O03F(!d=q|HH_oA$mtILXOX^?X?9;fk@ zNNh@3#dML4-{-M-jbf{2LI-InDJcn#$rW>^PobFNNhQL^F{?~SQbl&yeg?04AdoBg^y0S;3Nov#qC#AISBq8` zlAvH28h6<)qlZMDdvt-+L#kra{u~?_mow}-MXHq?QXGSy@my0`#o2+s zB==ng&n6PqL8v)QBUeckQZXm2mGY!en!y=i#SG5QPS6S_*8MhKCES$ti~mkwz#vDJWTX{HvhL+VAiN-e+rNp~7g9qdsp zN%=i*9Mne*X%>T8YND9dETh#$txV;ai1#0-OP&7y5la3& zIzLab-N~V#ONTTRIu`jXC6^@{HG8-wk0-U1tcp-0F z5;6U;@6-5RmlY$lvWr~Lf<`8C_3+|_`4VaWUhT$Rz~K%p&w6bL-X8*=c*@b1*z{8B ztt+T!iksUCD2+}9rzSP=wOI z5Hwv$9D;*O2qAJYnb@Zjw`ghcuXrj_&gQxJ<84Y@ zX#MH#yb1{@$~sG<7}2UTw6D*%(nQiMbxUo%B}L23&{CbnJ5g24ni%>QEiTV=tsMnRyOCn{R zKSY^@^wrBPo|R}h7xC-$K9gr6j*0vhwRItl&)`eJBh^|OqJBkeqD(@coaY7ct&mxnAw1Oz3;4Ph_L|Y45ouXZ*5vEeBuk+j@;+V`^on}N?yA$L2Gz2f`G$hI)?nGWZ zwOOO(zf6;Am-2cA=~Zd(gzTHjw<32!R+Q6%f=8RCq)PW<&b5okg$Pv)eTuk5Ym0jDP>m?5 zE*}K{3e7J#LeNfuR@ZtPq)`+4UAmStPYa!=P7$Z4T_+P`87b6~o_Kz#9FHTc$cbn_ zPh6q~E6Ba4PX85pOxSWB87t~Umj`Ls4dO3>x0AIzPA4aNYkI;|l0Q)!qEuzv>o%$g zb3W&y1VU~Inc%52L3x4#1LwwRMBC2bD&&_=`x)-s z_MkpRYYDm*ss7%#qMh|Ti@FsOPXFCoYayN2J(N&@W!;?+qAmn|2|7PtvY|W`wQ-(~ z&)ZWXR?*_(IunTe33}5hcal3TPrC{m!y}#lS-V(plAv~>vHo%E@A6*={t#`Zw}g-j z9&7RP;YGMB*_SmPaO{NjF*SO}#3=kmf&%;o-LO$77vEwqtw zyEIl>EgAEB6%Lg`OXgHpNO6p_OqDX}_E*wd)fO!gTC7pREvtx5`^C<`CchNsRnET? zC!tuUmQ`0ush9pM234hwm;Ot{vWT5{SY<>RjHKW#T`#R9f9te01YS~W)(RxDS|Ep< z6=EliMMGC;;U!j2iSMMR@F&hy9wpY&b6t9`etm77etqwL{kmKDZ{+=vjr#Q`v5u0x zp0-2!H7rO=Q)V_o%yB63A71#oyWfSs$3J`F@2jq7X?dZj6*+?aOTU_awfdMRnOE`m zESvg$_;t+E&T`iMS7@oUtknLrC*BR-4TQ_d%_L zo(S3%w5#RUp)tXs!J#elLr#Q^=Wl6nA(+(i>y}@Km4?QI#)Or&%x{?=wlr*Mh+jy0 z@JqovgMSjgJWoOfhfE1saqh{9kP{(mLe_}5LN&}T!R72ky(2+QU=6qIUTd9JI%R)uX2s}Bzk&k3&#zoqTc=$B&dir?Cds6S!1>YBZ-+yS|ioW*_Xxq;?pzYvYgLm~`$9-zQHT~Y{KXgD_@z;Oo z;9cTf|8@QE5^o2L9h5hC*O2~0ej2)U=!&5$hGh=358XOEd6*r{9-b`z9d>~0kzt9$ z4h+i_Pk5Fo-ibHEHfeAB3_mg=WX#;L731v1^CyN2OdL9Kb4gsuXbta8n^aXgee^X0 zuetrYtt$>ac>1xY9((HXflp*VvGU3BPu4!U^vP9EKJny+CmYsCYeLuLuIamG`kEDM z?p*WWnh)3PT=VPN@U@9+hp(-GGW|g*{4q(o1$qCj^o_JsIxHQPo|Nk46zN&^C1guK z$T@N^>6Bc+B3&2zhznu$0rEgrB@E`zAP?owC=ch)B#)D?lFe)bpTsho8hO6#EidLT zNWNKK!N!dv@^^BWgqH(#i(~{Q^##daeN&23-K02PNCL^AJxBo^Kq^QB=^z7SfsUXP$OfH34(I~9f^Hxe zbO(8$2gnCKK`+o7^Z|WAKTrsYKz}d*31;fB_FanGOqrhk|28;#cz<5v$ zCaN!3O28uZHp{*0rUK{Wt0-mT%QPmhaU!EyvV1twHK`Yl8Z|HBoA2O_E}*$?6-{_EMNN1$0n9u%;4b zp!&9T5Eu-Gg5h8U7zsv!>FR6NYe2R7j%k4+Mz8=Z z1dG5;U@=(2H#bYmtxLf&=3{T+*>bP~+^W80Yp;H8%K_chM{EnZ-mUJpJ)pjB`&|9l z_67J-{mk|i*aN->d%-@iAAGCsupI_RfD?QVj)G(0I5+`*Pf0j!1GeL*Lw9suMIqV0c->>s-NSXMS=2z)KhTF0x4T{N@eP|(sItO zSfSo0-KxGQXR7<<0`*>bi28**O#Ml`;?GJi0eD! zZR$tF_aX7^_FAs)@>-$p;%i0yf-mnP-qoC2zLl>NPR_77obKcIQrruz!n}YPpRu>b`dfK7`ZP9_YXiq!Lk_Wgxqz#gZ z;W=V>jlacPf+du# z?h|Dp{gdu;h#U%U-AE^?lzJ+ov~$V7-oCF8>TBZNO{iB`E1{^{G|I_VR}tFjuF1!# zo3G>v>RxxLcTxWbsQ(kx{|Pw)NxctAy-)I2?~vN6XQfCGrLLq!S0b$sA+1kI?KnR! zfwCv6uS-e%P6q8k3KTSs>jbV>fnqQblz>t&2}}l4Ksn*A<~kKra6b)Hf@)C1vl(1j z+b-Qi`isF*N`8y_qnx4cp(M}9+3G!VXOOGDAa@77)V)yI$COS`?bp=%0r@-iELvi{ zGDdw}DFsuwui!cz8oCC|hIZ$0ozL|K^+zAC0x@X(;tW=;LEi zQ>Fm*G;Otyw%TWUllx=pS#zX%${fWy)C44EB1i(spgl+d9Y88b16iOW=mcnCw9G!V z%s#ZtKD5j}w9G!V%s#ZtKD5j}w9G!V%s#ZtKD5j}w9G!V%sw>2KBVp)NZmWEz0|YT z-k=XC0R2EAC<6V#05DKpiPT+*#9fKRU5Uh9iNsxr#9fKRJ%q$Pgv33C#65+?J%z+Q zg~UCD#64x5tFE!m1M}7ONZ$2G-t|b{^+?^+?f0DVC} zPzZ`Ze=q*2lxnl3_bxn!7lI_IH;bq9RjD+A8n_>8E_W-2!2w3wC`3=A?J46 z|E`|3{|tTszk)`1-J?UcBk7JI<&MGe9v!kx(@DAx`5w;v7|z@dXMTwc`y3heIlabc z^$z;4+eT$SzOgq#v(?@CB8iWA{ zNK$i=-nmHcT&aVaBc*~gkPb3HCdg7dOC3QckgZN))iXXwKo|91sVnFPazS^H2Skna zL__ofy+I#P07MP;<620VBG4ZU00Y4wFc=I0LxHI2;ao?6kzh0!1IB`JYMwM+?V`0p zxmtksC_sBKiVLd9*K}|VsOEPqd7i;_CYS|ggE@fKW9PuV(tPz{`Wz3_=XhB93%DNK z0B!^ez(TMH+@uzvg^K8xTt~m;dbH6r`X=+-6tEErSTEY+@)32rT&L!sor*4?j(l~y(hm#*6F`lcqmX~JQ~?^QKp~F`c|=R)X_T~tcPn{* z2iH5XQC6#Kl!w71>f_3zTpt6EtM@8TfG5EkuogT;98UueB~q8h1?r>5o79Jli`7-e zC0uXjDkyY|y2i9sy;q~u?c9IN{U>0ry4`e8%`rLE&S=0QG+==_Mt#`)cQpqsxBxA< z04=xxEw}(JxBxA<04=xxEw}(JxBxA<04=xxEw}(JxBxA<04=xxEw}(JxBxA<04=xx zEw}(JxBxA<04=xxEw}(JxBxA<04=xxEx5okRo!l>0MkGvs0NRL$H5ceNw5a21y9jG zX$Ig0YYX55e1RYE2LT`iv;?65ezC$YR`|sl4%z_t#u@?If=CbrqCpIZ1#uuAv;*nj z9yM3v?uWRp29JP8!EbT<-*~?cJO`c!8^Md+Y| z08LkbrYk_x6`<(~&~yc8x&qrUHODpri~^&<7%%}`1txN@ECX;JOQ2rYrt9npW5J4+h4&m;92lDuns&2o(Jo}2Jiyd2wns) zftSH1@CtYpyaqO_MQHjWG<^}8z6ecUgr+Y-(-)!Xi_r8%X!;^FeG!_z2u)vvrY}O% z7oq8k(DX%U`XV%a5t_aTO<#njFQT7(9sT6%=qF!KKlyt4$=B0QzMg*a_4Jdkr=NU1 z*1$BZfob%Y=h0uDM}K)9{pES|m*>%6o=1Oq9{uHc^q1$+U!I3`P=F?T#Qwdy-F_4t z1INJ$a9Yi=p9MdHpTOVMA}oj^EQlg3h$1YAA}@I0oTmQ(O}`IGy&0(~`g=RkzuVFD z`;cm9*rlN`1{I_>pxc(CQ|?4JyhiAu$nV>c-yfsVKSoY(MvHGoi+@dT>m)H9BBqtZ zbR9A6C#G+q=Q>-2)C_GLh=p}OJ!*xKt!y-2DYnR5V#!i(Al4U%?Fg|QA%@q8VJ%;t z;fpuYrnG_)^kV=BJ3zdmM=8cF-X-2oh|@_g@gzOOlk^NvLeoc} z=_6RUC$Vr(V&R^|!aa$FdlC!xBx#*5!*{keQUcU5Le!gNyWmYYG}DGX01l}KA?_eV zk*x#$_lv&|<82Xd+cQQ{%-)8kv4=}J#1TpeKfcY8EEl|O!&`?WzOUf>e93gtTL*6n zFUgfZF;?uLX=XoqJ+ zJE$K~qu(|S&zrT{=*Dxr{hE6J$X)M82z7=y1pOS>+L5EOpsY*MqjjUSr={!pV?{?SiZCN1i-`9C?Nq zKPP{p7bfzxn^Nwklnu1ZH+=CPoK-+Q45CJdsIL?11Jd0`x?dA|KcV*%`Ule5Lt1RG|-c1kh+6B&;#Uyo}d@#4f=or&=>Rrg`f!Z2Lr%BFbE6=L%>il z3=9V&z(_C(j0R)CSTGOFXVmgqa2@yyxE|a9ZUhU!La+!dVHELZMmCos?Uo@Sh9Dt^ z(SzhWtn+#-@x55$4Orq0SmF&>;tg2h4Orq0SmF&>;tg2h4Orq0SmO0q;`LbB4OrO? zrtM${_y~LqK2aO6s_U`H8nDP3=>Ij)|7)!cp*q#o;}9_yqY>!cp*q#o;}9_yqY>!cp* zq#o;}9_yqY>!cp*q#o;}9_yqY>!cp*q#o;}9_yqY>!cp*q#o;}9_yqY>!cp*q#o;} z9_yqY>!cp*q#o;}9_yqY>!cp*q#o;}9_yqYE8+lF!~v{`qgW9~u_BIQMI6P7IEoc< z6f5E=689_;_bgV#UaW|{SP^@%BKBfM?8S=MixsgKD`GEJ#9pk3y%))<*3w|))Qk4r zVr&%o9|HBU=S=(8hCJC1oj(JezXhGY47KioTK7P$r=aaKwj_3P8hGl_O5Y(bg$x^{ z(ZHL~zz(Qf$g>8%YY?1I%xg6c`k0va67vRP-oh6jLN(%x?S%e{&|eYyB&nR#^5R8a zKI4lMeDNV)e99M|(eqt=aeyxl@WqdWeuvSHY;vKGdJ2xzbRKb?;_aq$sSEpOJ#oE3 zTq3m4Xu_)Tlu@KEzIaQEPiW(h2_dAShi66JHcKkAap}_gj3{s8xhDdu=i?mO5NC(tv>7d$L zI^fsd!`n9W;SELA&mWoF!r0t z*l#91?{@UO2g&(ddvfiiUM=@kN63Zh2*ac5D#K%HKf~j$RfZ>A-x{7&`xu^bEipU| z{>rmw!Sk+F^niCEz_Gs~CGEMGdaeCf>cr8CQy&MaR# zvwZ2y@})D&m(DC-y5$;ml{F9qfdr5Ul0kcr0y=8c+>t zKrNU7X1Z3{L$Rb=gD?;d+5iWL0Bu1ehyu|d2E>9m5D(gc1ds@lKr(3Wy3L*fI)GG= z2GT(W$OKuSBj^OOL1&QTde`2CYgf<>FCoU?3O-1~cY06bu8y!3Z!Ci~^&<7%&!$1LMI2a1|&96F~_m1!Z6om<*Xt&AGjYp03HMnfz{w)@CbMmJO&;IPk<-E8n6~T1)c_f1zKj&4vF?XbN@$?e!3mLU+%)_YB!+Ia(<3n z`U0EcHhCPgp5xVf;qW>*{8Pi@suS*h&hS^R&w}SwC*1rMocxtGuDee?Y5Gxh!o_uP zS{Hd&=mGLUPtXhW27Lgt1$Jf&?93L}nJut0TVQ9lz|L%eo!J6A zvjuQZ9o$m~_te2Xb#PA|+*1el)WJPK$!aXP9o|ACTN&9u+M)e?Ea}cgM2-h5hYYxIS2jQB7aLqxu<{(^i5Ux20*Bpdv z4#G7D;hKYR%|W>4AY5}0t~qGG8;gDwxCh(|?gRIO2f%~iA+Q=e3?2cGg2%w);0f>~ zSOeCAr@+(TuizQ*EO?o6iy8GSbfptL>6AXe&e)DUvXlEy>8pRnti~5yzXV@nBkY4a z_N&L?jN|CU6L7*0aKRK2|j)sCUbPmniYK zl=v{R;4re_FtXr2WWj!9!C`9P5VGKHYGDVm;5hvmAqQ3<2UfV{!1>h<X8HW$bov~Ks|Dx9yw5t9H>VQ)FTJ#kpuO}fqLXXJ#wHPIZ%%rs7DU$ zM-J>q4(vw`>_-mlM-J>q4(vw`>_-mlM-J>q4(vw`>_-mlM-J>q4(vw`>_-mlM-J>q z4(vw`97hfuM-CiE4je}g97hfuM-CiE4je}g97hfuM-CiE4je}g97hfuM-CiE4je}g z97hfuM-CiE4je}g97hfuM-CiE4je}gI5jyC0{?#vr|gGAcEkUFgF`mJA#cDP+u@Ao z;EWfL0h{26@8O8;$bhqO!>e$?X1L%0T<{!}{Wp035S0A_RJtDu-4BKCr&j71Mc7Ht zR7jRxNS4p&J$#{lNz6xy`70#M$He{(vF|1JPl^3oV*j4l_XsKDmMV3`{1rYp-iPCM zkhf1*b+?m|yie7qi1ig>eG`t}L(Dtj=wrnG0@9Hi7E)UeXK#YDw~*>fl<5R1KLuxR!*<_|-M$-p{Q&m*0l0VvIeH2%-a>iLlB-({ zPpNwiPlLbm>{;-sGjRE8Myj zZruvEZiQR7!mV53)~#^sR=9O5+`1KR-3qsEgmImu58S#3ZaoIK9)nwt!L7&O z)?;w%F}U>@+Hw{C}9x5KU5;nwYN>vp(xJKVY*Zru*IZiid9!>!xl*6ncXcDQvr+`1iZ z-40zk?boY&?KglM)lG2iCb)JJT)PRb-2~Tef@?RywVUADO>pfdxONj2xON*{y91l|fY)v4cSl?mdJCKLQtj&x$3{?`JgvJ=Rz0vF@hFx|?3O z7#|ZWmG(g8$D!~apzt5i>^relKQaCfa|-*^Gf?#z%b%;^A4J2yif(&X)ABcRZK~;4 z@cULxNx}ToPm1I zKs{%mo-7IWN{Zn1(i)92?@9$vIN}NWfc?# z44dpSkpUAnK|vu9LXf2BEOb?Mb#*GW^iq}Tgmjawi!4pAbX7Yl^?vUr%%h_-pZ9q_ z&%A%U0nZTY2?3uux3GA7`o(b%kz@B038OEM6 z_LQ-wj6G%SDPvC=d&<~T#-1|vl(DCbJ!R}EV^0}-%GguJo-+27v8Sw8Cqhr_)nBX2 zf~qB}M+d~XEqb+0ulDNI%~O%{MbB>#&-(nnQHFJevdZk#_C6;xGWnH|77kLja>hS@wtV@qS z*zg%R4vvTEFau`72`~$0!-;Sbd>y_4--K_$$?$DB1-=8P!f9}N^+9p3OHXbV_qxQr zE^)6*-0Kqey2QOMaj#3<>k{|6#Jw(YFDve4#l5V!mlgN2;$BwV%ZhthaW5qds%TWEAC}6s~59+F{>A|dNHdP zvwAVB7qfaXs~58dFlzv_1~4no;scm9fLQ~WHGo+Im^FY|1DN$k%o@O~0n8e}tO3mW zcgz~Vtd*Fx60^2p);7%AhFRM%Ya3>5!>nzXwGFejVb(Ux+J;%%Fl!rTZNsc>n6(YF zwqe#b%-SX{WyPhexRe!_vf@%!T*`_|S#c>VE@j1~thkgFm$KqgR$R)8OIdL#D=uZl zrL4G=6_>K&QdV5bic48>DTqla)x=Ao2e7xSq8P&7VeB2k-a#3U-tI}eIY zfx6g&!LP{96T7O5?U=j+lZP;Q2$OeWa-cYZjJy+*gEdiWv2_qz1GTXeV|QTe4vZbb z*ddG^!qg#59SY);+Bi@Nqhd&h7}7x}cZeY!)ItZf&_O46h#?)AH-vewVBQes4Po98 z<_%%q5atbG-Vo*uVcrnt4Po9e<_%-sFy;+o-Z173W8N_44P)Lg<_%-sFy;+o-Z173 zW8N_44P)Lg<_%-sFy;+o-Z173W8N_44P)Lg<_%-s5atbG-Vo*uVcrnt4Po98<_%%q z5atbG-Vo*uVcrnt4Po98<_%%q5atbG-Vo*uVcrnt4Po98<_%%q5atbG-Vo;Pz`Pxp zw-fVrV%|>7+lhHQF>fd4?ZmvDn70%2c4FR6%-e~1J27u3=IzA1otU>1^LAq1PRtv| zykX26#=K$78^*k0%p1nMVayxGykX26#=K$78^*k0%p1nMVayxGykX26#=K$78^*k0 z%p1nM;i;I}gi({?;3Sqz?s8`ODX|u83Fd-=S=Y_(3!ks%RE68{ZeXhB+=Ocb*5uK0 za$eD^6JDLcs}YsmHvB31{L<7rpZ3lmoA!C=%Q#%d;W7@Fakz}bWgIT!a2bco zI9$fzG7gtK z)ufYZ(n&Sxq?&Y6O**M2om7)fs!1o+q?2mWNj2%Dnsic4I;kd|RFh7sNhj5$lWNjQ zHR+_9bW%+^i6vXj+w?g8Jdd$}V?`drOZc_X<2JLX|6m<}IQDAjQ4Cq`oh!Zbx8B)_ zDeIm82u`oi2KR}S+qJ<%KB*I1mSD>gZE>&Y7{{6=KK&`YUnx3v(<`@_Yv`a^ZZX%; zA-~@!zu)MaR$|Q(?QtK*EWwy17_+3lKlCoFS%Ni7ux1I?EWw&3ShECcmSD{itXYCJ zOR#1M)-1uA zvm9%dW6g4`S&lW!v1U2eEXSJVShE~!)?>|jtXYpW>#=4%)~v^x^;okWYu4-65&b%% zUq|%oh<+W>uOs?(M8A&c*Ae|XqF+b!>xh0G(XS)=bwt08=+_bbI-*}k^y`Rz9nr5N z`gKIVj)<(=Mb?(96CT`-7d0jZ?^MB^X2ekKVRWBSB8#g{z>RvBI|aM zb$j#Gp*J=E3vd0J&>13XTttnFsBsZBE~3Uo)VPQm7g6IPYFtE(i>PrCH7=sYMbx;6 z8W&OHB5GVjjf<#p5w%-H?G{nHMbvH)wOd5(7E!xJ)NT>ATSV;^QM*OdZV|OxMC}$) zyG7J)5w%-H?G{nHMbvH)wOd5(7E!xJ)NZ-_Mr%0ouAb-@w+4*9?Nd=TSfLQCh*@fs zb-U(s!&KA^=G!}ry)M`5b@9>*{Iu6&-H2B_EyiuZ+EJ_>#nw@59mdqMIM*%Cy(rGT zD9-hWb3Ni*Fk|_~41VC5kBW0!#JMe4JBqcVSR44{qZm7iv7;C}im{^@JBqQR7(0rw zqZm7iv7;C}im{^@JBqQR7(0rwqZm7iv7;C}im{^@JBqQR7(0rwqZm7iv7;C}im{^@ zJBqQR7(0rwqZm7iv7;C}im{^@JNo}J&TSFrw&=yOUM%ayvR*9f#j;*3>&3EOEbGOx zUM%ayvR*9f#j;*3>&3EOEbGOxUM%ayvR*9f#j;*3>&3EOEQhYs8zpfiuP5)&D}mz~ z__}Mwm6*8ljNW}%gjy}Gtky%D^w1`~{fM{{%y?|lQ)|VQnBLkU=634+teE>tG543^ zOk9kKW5bWdm^Lw{4G+5UAp1A7AHS{U_2MRRCz$!zqz5A_8Uu%rh|da$GiOM0-R2TOXeqz6lSu%rh|da$GiOM0-R z2TOXeqz6lSu%rh|da$GiOM0-R2TOXeqz6lSu%rh|dT>z885DB{#hgJgXHd);6mtf} zoIx>X&{+Pz>Gtoyf*n|}0}FOw!453gfdxCTUNc3{B{EZBhsJFsAfvD{`|P>W4Kbrl`^iBaixqaWn3xaN*PzmxKhTI zGOm}0#_z*Wdc_waAg8lCU9i}S0->} z0#_z*Wdc_waAg8lCU9i}S0->}0#_z*Wdc_!xKhED3a(UerGhIJT&dtn1y?GnnlYn& z%=)t~EtTg`zCOD$tj#xQrAe(csqJ6YQjaPv#&V&inFgc`--!#IQxpT zuQ>aPv#&V&inFgc`--!#IQxpTuQ>aPv#&V&inFiCYHth8c2*h_f7VmLtw`#959w%MoWe;w(p;<%qK!ah4;_ za>QAVILi@dIpQowoaKnK9C4N-&T_8dK=(sUDZj6o_qvOWtxG_3zjE))+}kwlGZF~ z&63tEY0Z+>ENRV>)+}kwlGZF~&63tEY0UwxIiNKMwB~@;9MGBrT5~{a4rt8*tvR4I z2ejsZ)*R5916p%HYYu450j)WpH3zijfYuz)ngd#MKx+k`B@IS2uMZ3~eU9wJG z2^`EoEp^!ur^`%5L6y7~3ybQS4ORla-p)JKCs}PB*VaKb9oNS(~?O z^LB0ipf-Qdr)GTWT5TQ|t+Jw3R@=w5eO%kewS8RM$F+T2+sCziT-(RBeO%kewS8RM z$F+T2+sC#2Ds8_?+pp60tF-+pZNEy}uhRCbwEZe=ze?M$()O#g{VHw0O53l}_N%o0 zDs8_?+pp60tF-+pZNEy}uhRCbwEZe=ze=Fku zvZ7U1KlNjLKgRcCd_TtbV|+ix_hWoN#`j}8Uf3x1zJ4a=|yef2qDz={*+oT!|=B{4Xkx}2dT21qun&vs*9jqU1 z_1(*Scg%M$rzLx6$thh=M{cL{w%eJa3#)pjVtL@ouEwc$Idzy)3o_wzJgpJ@ii(0Q zxYdbUovNxJ#&_aZN{*etu_A7@;Z~b(?!m9k__bM%eG#`h9s4VI)rnV~c-6_%8po|p z-0I|01(C87zdG@&6Tdp~s}sLE@v9TRI`OL$zdG@&3%|PXs|&xn@T&{Iy6~$Dzq;_N z3%|PXs|&xn@T&{Iy6~$Dzq;_N3%|PXs|&xn@T&{Iy6~$Dzq;_N3%|PXYc+nY#;?`* zwHm)x9Q&Z!7s&PKmI5jm+O^x%Z#`#p^)YLdNHO{9R=TnVS zQ{&XsIG<{qPc_b`8drh6N=>~=O}$D@z1n;e{2XqETi{l>4Q_`!;7<4j+y(y%^Wc|o zH{4q-;(8I+i@09I^&+kpalMG^MO-i9dJ)%)xL(BdBCZ#4y@=~YTrc8!5!Z{jUc~hx zt`~8=i0egM-|X%`c{RWWbC%{#F}8qr>(xXXac>*$1@1rx?gcgUa@-55t&JEE_(&C; zt4#4f;}f=G@rX|u#o}NEV#lt^Jns{NmE#>gp=H-6bo+#IXkN%V+>rIPHE&VFzg2a& zJD2Hg9^Ve{fIS??KVjfIRebOA`=0P_E1cc~@AdOu@IH9I_x-cSy{#<&fN}FdzkkT@ zABK~2!qroKz4bW%K;HNX|C?XA96yQR9l zb}I}(30^ktwt3tRs?yq>)y1`g9$$eW7_Ls#j(BcVkO0@|fXyENa!i-@X2;~v|pJNKR#^Sv(=|?uk`gP5;>d&$19&GvoHl0(m$7`qS^-tFv{8~g0e+ILI)v%Xa4f_*S z{<&Ise=YdAx*4zSr_~P7V*6;RgSE(;8+KOT+jty3|A*>(8n?gJ?rgu{Y+r8r#cOMw z)e(;V{f^`!vkO0wGpf})eCr>4>r&tNxNlqH({J=?&uNEOyraWATD`j4?j++zR=v9E ztzzr$)<*9ks_*9-nuD?Z<3_~migg3_ReZ{rUN1S$kvgmS_3~QB+V5D?K7Gi%XQ9qj zM~-=uV;=Ht!SR)R+t#V$y4AO|_?F17<9fy?-r$`rUODEKX|GH;uB>}Zk5_MUCVkp* zqjx>xT@O39w|M6k$Mzk^wow}%t_=sY;YMwEy-!=`*zT=6%04GEUaLB`2OZlg-*8^A ze$a89;keG#mIF;63cbs>UgldD`_^A*zr2;x_)Fh-eCRj+ zdSB>OPQip~ezN*x=#TIh`RX;Jw!Zq?nnqWCOw(p>QUkpi-sbm>dmg*g~tEvyy#-Xj+Ey_Gq z+wSK~^~u_vYO6@|l)iqkw$JZd%pq-s0Vu)Cp5NwiI|S=a2H_PL0#`POF55(uL6Kxo zBza6E85BtdMUg>KWLN|l6F~;+>Y%>54VSiwAY&rPV6xIvff{;Rd_wjaQ%c*-L%ykiQ13 zUF@&Ho;!cDivtD~v1TpCysY%_Md7oDDX(gXl^3L_%IpUpzcEEJ~j8XVljU5vl z^Mgj;twvuEYbr)w#mK7|c@>{LVdV82dHqIS#mK7|aTO!3V#HO9wu-!czR^}O+A8w( zs1a8&;wp}4u2EMp>MBOvfDu=5gu^O}oH}Jg%@?%Q7pseE4)=J3$FI3+>LjD?8zPup z5Y)&^)yPYYzA>ZkR-^A$BX7vayR|kcCwD+6SW~Jkhm5?6kykPDDn?$#$m=)qDn?$# z$g9Zn=No+$qpxE0Rpj{djlN#F{d~E7RBj(N5-Ubx#VD*8g%$aH)JUutffXaLVg&XY zfxSjv#Yn3dWfdc=5=3#liQ-MvXzDjwZZ%qlu)l)&70j<-dnm74fUCc= z-`!uZIy@C;gC4$G4_~c^$N#2>|Lb18=C68n{I7cTm;ceLL67o<^yoUhxlC_9sW+GD z%_sF{ptb_%Ht5ZV^k$phY}1oh>&dJ2;?;Vwq!&wivGjMn_qRQF&422-YxLSRdTm^< zjsJsQ8~>YL`}^M7sJEWiThHsMtDD}bSN>5?1@7RsYMY*F(^GAFs!dO|>7l3|it3@L z9*XLrASPA*i(VO@>Xl#*t@j&iKNWi}(+d;E$92Yo{RdrV=(W<>Njs-U7RI;tT@6;!SpjDk|b%hipI)-Pauk9ORw9XD&o&DwFZ zcHE57ofzGT(Iu?ish-#t`iLW4<4D^a=@v)2){(Atr1v<=CmiL=+N|Oz*Eq_8qx`j_ zY;%vCjWj;zg*wK=jaj_hUEckW*OnIpT>w?8VP->pXYt)2>Ihy&lI;M^}3XH(93R1drw zdb?K-Ip!@|HMrI_nCIxxzdiY{HgJKBL!XBr#?jTekUxAZ~x0L(eJl&Q;!d&8})_g>Mct2Mm<N?vUR~_F zhJ9B>`veuu4&S-er%YW{>^nF4&XHYLR{zyiiT*O;FQw4FzGoDlHsjMyJbKo5uEL|> zN}CSnmle5EBG)RBDAm1;zeRWzTwfhr zsU2JgzSddarms7lPr$2*nmt1e=0qCdE%0903*HBN!-uP9g+2oNh&KDee${W;yY9x& z0o7An!@JBiyt&YA)&;Eg+N?Fnx$1$TyfpypRr3A*K47i#pZx7FURTu)VT!AsDr=I9 z-=wyGGwh8?_GQ$LX>E6yw)?!cJ51YsUOOG7osO!x%;*UAez;nj{v7XbmI17Ysww%L zm#Z;5n$8U$Wp~A+J$|*C4IBIPpO^~KEu!7_qwzFe2&MvtIKO2sD8ipA=fni zMosWL^M9+VXVu319QW8(Jw--2OGY_RMmdlNa0U+(l>S_ePbumH+CT1wex7>o2yG3 z^?Bo4flh6F8@wIf0eiqd!8_qyuqV75-UB$&h$D?S()fP(XTX)l55NcEL-1kv2PwGGPoRm z3|GL_)l(Y(1+IZ>;b$bcETXM0z)tiBQOeM^v3hmr7De_ zN+YMz$f-1PDvblxdDq(^W~m)wmf9g^sU2dL+976X^KdoRJOZOI2IJM(w4 z%$SE6^Dtu`X3Wz=9eSuk4|V9Fj=xz~dA;9nfE(c^_&Ee?EpG{3Vt?C98gH}P;eTFt zc~`Z=nLpvopK#{a*>Cnb`_0x)d$#(_v_E+6IamtIM8kcZ@tw|ii8D?(<7LkHPG@|l zGfp_;gtNWV+1}}F6VCQdXLP4Cy3-lm>5T4lMt3@+JDt&;&gf2Obf+^)IHQC!N;sp0 zGYYOLOW<4r=Mv5+;fxZ_DB+9}&M4t55_p!tvjmR&7B_lx>bQ9ml`U#q2Oi~7;<_r30HKcD0A=heqW{uX@uuE>9q z$R8E?*XxZrB7anm%+VvW^~fBNe@~HrPm%v@k^gLwe@~IWU*wO9{I6$hN=xK_A;{Vy z|5YOYRU-d$BL8zD|5YlD$3_3B=pPmRqr0O2p7m|j$7O)13=ow8qB1~K28hZ4Q5hgA z14Lzjs0wqMKvV{Z$^cOrASweyWq_y*5S0ONf;1(I+78&3c8Q>Nf;1;8Cw$V7-Xq;^{&Ndon@5%tPjmFtV z<7}gGw$V7-Xq^4uWPsU5=4>N#whXXJ23REn{C9h0x5xl3GC+$A&>{o0$N()eK#L5} zA_KI@04*{=iww{r1GLBhEiyoh3=ow8VlqHX28hW3F&SV_8Q>}zASweyWq_y*5S0O< zGC*1eNXr0e86YhKq-B6TcV&R@{udeGyW-$?cV&Qn86fJeiif!-q(e+hO|9|TC|dNG zVQl4b{Tp>rQn5x=teaGy_4--K_$ z$?$DB1-=8P!f9|ie6M;!!_Mm2jdMf$*pKABs^BfbUM8;fv(C>E-R)?ecQi#u^Lh32 zEq47X+V!i;JHPCm=X%%P-c{t>ztf6{tas+BM~H$qIv7PVO9`=rh9oxf>?P14uM(DlXaaCvy4?ZJbgZk>_p?6eo2p!}b4~CDyC#s9>zPdQ{Dfl#e20ja1`Ou;8 zIXKKwecp3l0PBeDg8Fpm9Q}4aTmToskNoW-xEL<+`(@sDxyK)4^A&I<`~+^ImVXW% z)%m!+Ak$2-kwxu4RVeROA*cbem!=J*+x^D{2zq2_p~IUZ`x zti@tJYR;_1VvbvmkDBAQLoQ-di+Usp)A~6a~rL@&3m?U;YRqkqcZNL)x}|L6TZ?e?^lC0!{M8%OTssM?k?H) zmmZ%p=V{f2)dGuaA2WLqWZWmJi>ydlWaYr(+C{Jg?2KBw&f|LM^YfN!j{lmg9e@(p zqlo{ST{3)}PZc_4`^ivtRX&`u(dd^&hRSsz1P8 zG7hXp>JQ=_99+G%zTb+bP1VKqFIS(mn`<}So;3@y*lLKy=EpmC(-*t_vAVe7fa-#V z1K}Vz7(NCchflyK;ZyKw_zZj&4uM1Ab8r}Z9=-r}4sNh>aD$zL?ee<7F0Tvh^17hm zNH_|PhGXDZ_$nL+$5#i$(yCaxKrCG#mQIMJ6JqHCv2=l0xh@}%^>4aFiz|779Gdl|!&V;k7mp6PDz6T3Jr#IYJQ`>NV&HEZ22u*Kz zu;v{N55dEsFE;$a-=6cgrT(_e-y-n5zqP<}Kd%gZs^JB%Y4w_@*Tg&*hcH{n}wGJG3Of$zYna2lKrXTTgd6V8I~!uR0&@B{cE zoDJu|xo{qw4;R3NAU`z84^8qz(KZUCtpZI8Z+?+X^oE>s= zcF4`yQ$A;h+?*Y9b9Tth*#|V&bPL=Hx4C=D?QjR&3BLd_)o!^_yX8jhmK$xl8&*}j z?MU0*)Cy6EK^)91Hzgnm)=@OAh7_!UG-MzPIp~Bg=!QHLth?AN^ycRGg_bnGKa_6% zKq%JyLD<)G`+07E&mHLZgWzM;MOJPtvT|#Ym0OFf+*)Mi)*>sn7FoHq$jYrnR&Fh7 z{u~?zpNB7ixw_`V!Cak{TZ^pRT4d$cqUIyvC^#C9fn(vT@HKlu9S6t5beI7%;RKik zv*A2m`}yE{Tr0P_tla9da;vM^^|)4Uby>O9W#v|vm0Mk|gL#XUTO}*Ex~$ylvT|#K z>tNnwEp2o2&wSrpxXv1s>){5t5pDwhWAn{$3)~8~!R>Gd+zG#cyWn489{dvShI@G` zzk>O&0PchP;Q@FM9)e%P!|(|3C9U9EY6aKQW`3U)TuZIsTH4I-vw~}>6E)W!kbx|8Lyvt0dOf~s)x`vqL5{Ku@M60FciRQH zyZKM>XZTCC+q$mKX^TQfPg`8`i)qiml2FIAXG2#``$OpYY0Lb)q8c|NzId9r6S|gv zaGiSa4!*&^@(lvdXD;911-?N~=r*1}PNkDq39Yx|MgP>U7A?GjjVk3Luiz1N;$wV* z>-YrM@d*}lhTGMPajx(^9N~L7!VhtTA5y8Txb7}s$ zD(?31-PM?iBU8JodL4a#ox1Zu`u;ll{t^2A5&C`!eZPdhf21~8x%K)=tr%S&tJOku zeLG#>uCi!TS+vph?JD?oHR~;E)>~BY?R4sObn10#*X!ui>*&<$=+x`z)a&Tf>*&<$ z=*fSjC;ye6e2$)cj-Gsuo_vm;e2$)cj-H%LPtK($=hBmN>B+fj;JMtLx%A{*dU7s3 zIhUTCOHa;K8_!i6&s7`GN4(U373GDbtjXvi218KWU%G-Ql^+(dUoQD&uH#MqTcPWkke0QtY z{n@*#1J3NTQ;PTR?=rPAP`Urt&U$dySqFOP|BJJ}0*9{nPxth?0-vs+wca@EJN|*j zzhmmGcMqLwW%GIT?G@%_ep)?GAFgqqpJcsxxTeG4^Y8`uA{-7!fE7{h$&z$WmSpYm ze8`?qBfJIP3wy!)U~f2xemodH2A>c&J_(-!vtm?TjH-)Kb!}8#8&%gv)n%x<7*!Vw zxeHLpU4TOF0%RxLemmjz+X=VdPPqMc!tJ*cZoi#y`|X6=ZztS-JK^@*3Af))xczp* z?GMd>nP6R=opAf@gxhZ?+RjPi6{mdut@A0E>037Ib2YGbg zI&pplhNY>{EESrc@`7(OTTek#qcLizr5NS zUg13}tLww7{9V-+wss+G?LxTS^Bu4nQqEzG_oRJhw|lW!uTK(r1srbi@!%+-OKymS1r`;?fDOS4L;O<#QW`+Tl@9u z>RNOAwcqBmpTar#jrAd}3g#XJd3-g;AjUC>aSUQS`<~i7tm7z{f8ZGO)oum58rRy@ zxON+C2Rj?f?dv%PeH?>6jzJ&CASTzZH+$P9*LT&v>gNghy$sq!zF#5Vuizx~aS{5s z2z_#Y8z-TUlaS*i#Okz9o%Z1*#OkJbJl5KkuflOK-S0DD7M$qsCxNRq>cj?)LbiS{ z>lWMxrTzn41)h1md!W?6VAV}4WFQMU=!7nizc~yA4nvH?&{n?#23>Dqbr_c+W-g(p zzT)wZ)gFrqJ9n$8uHLP-n%u2^%6aJ9?IYE7yBTjBh*-mU9M<#U0=N)<1Q)|4U=L99 z3q9r+ddx5Mm|y5IztCfTp~sAIkNJWg^94QT3wq2K^q4Q`F<;PQzM#i^L67-@9`gk~ z<_mhv7xb7f=rLc=W4@rrd_j--f*$h)J?0B~%op^SFX%B}(9`%~_z3I+`@(*(KYSDp zfCJ%R_!xW~J^`PEPr;|*SJs`(hXrsS+z$`HgYXdi8Xks6;5YDFcoZIk-@)(Uad-k2 z!jte6EP|(DF+2lH;Mr=CTJNRSd#UwaYQ2|Q@1@pzsr6oJy_Z^#QR^{kJw~m^sP!1N z9;4P{)Os7W-bSsrQR{7u#y7gSK8nAO z;_svQ`W@+VF{(dC^~b3G7}X!6`eRgojOve3{V}RPM)k+2{utFC zqxxf1e~jvnQT;KhKSuS(sQwt$AEWwXRDX=>k5TW@+V zF{(dC^~b3G7}eiL_4iTzeN=xR)!#?;_fh?QRDU1U-$(WLQT=^Xe;?J~NA<6x`qxqY z>!|*9RR21ve;w7oj_O}W^{=D)*EP9Uo1N(U>_p#ZC;Gmo1#lnS4-bU?*-rF*cB1cV z`ZYWZkHBx>x9})D2ET*f!{hJ-$Z1Va!c!opH9ZZB;Tc#0&%z(zIamtIAOg=r3oHkD zt!X95Yg~y=u0$tSqLVAp$(88jN_281I;{`ez?taeOmuQ4Iyn=aoQY1(L?>sWlQYrD zndsz9baEy-ITM{tJ&=b2tgWW$oODyKt4aQQt&^v9^0ZE#*2&X4d0Hn=>*Q&jJgt+b zb@H@Mp4Q3JI(b?rPwV748*$D?oU;+PA)I2#$xMuxMI;cR3$ z8yU_bw4NiwMU=ExKXTf*j zd+>eu0sIiohI8OtIImjZo)nrdfD5bbT$BPArNBiga8U|elmZu}z(px=Q3_m?g6rQ3 zT$BPArNBiga8U}be=E5Dt-w9WaZhsGlN|RX$34k$PjcLo9QP#0J;`xTa@>;~_axVR zC;S5L0{6A$p5(YEIqpfW`QNOZzt>eWzk>O&0PchP;Q@FM9)e%P!|(|F27U{V!ej6| z_&q!hPryQW5}txZ@I03$rXAwY{vRu&`?x55&1)bH8OTBoI-$#|&TfxA&B53qB2xehKh1c zG&OV%C38Mp02jiK9NR^3F?R)=migGptCZg&j4Q>rRuelJi~*-+<{x{6R&3F<1? zQy|#Wb-Al+QxsO3!s?)~;uKbl!irN^aaY+EsjMU~Bu!~WD6I&kwVKk3Qd$v8Ynge# z7bvY3S2p!iTPbQQRntf{HFG;r@pe(SDgBaQ(tY=SA_bCn-@$|U@IxG zh&jP_bAp|e*fMj1YpJnTn!mT^D#v!U_y62{qJ3m*ZZT(hE0uPe=WjPhD1%XIDM~Fu zsYPq7i8gQ8RionO*!5FxDXv{`cdkPCYo0sa@3Y}VptdQwR9Mua<|5QwBz(Dh#9T?i zT;=DhJ?dAAF6E9=T~u8wRTl~0Le<^s_q+W5OTXV;T@w~L!uNUZ{^|-UFGJ;JsJsl7 zm!a}9R9=S4%TRe4DlbFjWvILqm6xLOVpQJqR9-y%GzGSpdV0oZFR3o0^dgkrDoU@F z(tCl@TTbb$S}W=cEFp0ApcSbB8y2-zKk70fx6wgj=ag zYtqBptI6;VZEBSVb-02$Tt*#E3lCF{uEV4dmr;lj3UL{QxQs$fQHX0O#5EM+n(&|8 z2lh3eS+!;@L><;pM`7z;YpJw4sE6I40UEug$z!wCR@15xN-;($K1(Ssr4(PF6k939 zm6YO2N-;($#%uqHC-hFr?_HGQp8o!BYVSSP>AsiB+{@>QZME;G)c(1erW|9nAMpAQ zdf$iqjMEfktahI%6&a->S5T2FsmK*n*gG^qMMkK|I29S8A|q5}go;dYfxEcC zUA5g*Y2NSFU{aL1T01UKlyQnOPEp2d-JPDQj8m0ysxn@?(`yDjz5+uq?DIxEH|jXX z;Pq>LbChM2vW!xe@xM}*adXr?)McEyj8m6U>M~AUwo;c7>M~AU#_L|c&NoYCM(Ua= z%W0lFwwj_eQIb*`W~S5TepyX|JaTfCt>J1Nf;ED91Yd`5z&GJra58)wPJ!>hsc;(DYr))iPs1EI z6V9sU8omqPgY#UqaXwrC7s8L=Vz>nCp-f$;sOuDUouaN&)OCuwPEpq>>N-VTr>N@` zb)BNFQ`B{ex=vBoDe5{!U8kt)6m^}Vu2a-?in>lw*D2~cMO~+;>lAgJqOMcab&9%9 zQP(NzIz?TlsOuDUouaN&)OCuwPEpq>>N-VTr>N@`b)BNFQ`B|Jz0nJe$AUQB_%%2V zj)&sPG6C9-+b`RCt66k5J(eDm+4kN2u^+RCt66k5J(eDm+4kN2u@! z6&|6&BUE^V3Xf3X5h^@Fg-59H2o)Zo!Xs38gbI&P;Snl4LWM`D@CX$ip~53nc!Ua% zP~j0OJVJ#>sPIf91wx5uDDey>o}t7ulz4^`&rsqSN<2e}XDIOuC7z+gGn9CS63sPG6C9-+b`RCt66 zk5J(eDm+4kN2u@!6&|6&BUE^V3Xf3X5h^@Fg-59H2o)Zu!sAqUoC=Rq;c+TFPKC#* z@HiD7r^4e@c)UpsLy5;J@i-;kN{P2p;;oc;D<$4aiMLYXt(15xCEiMjw^HJ*lz55~ zPf_A2N<2l0rzr6hCH@vlJVlA8DDe~}o}$E4lz55~Pf_A2N<2l0rzr6hC7zHX$DM~y=iKi&>6eXUb#8Z@biV{yz;wefzMTw^<@f0PVqQp~_c#0BFQQ|2|JW7d2 zDe)*J9;L*ilz5a9k5b}MN<2x4M=9|rB_5^3qm+1*5|2{iQA#{YiAO2%C?y`H#G{mW zloF3p;!#RGPKn1U@dPEl+N|ShvyQ9HI<7YBxZ14aYO{{3n}U5GHi4atnzq1J*UDKT zNSUvp%!BLZ)==haDDyRx`5MZ64Q0NDGG9ZPuc6G>Q08kW^EFN5`sr1efHK(cyJ->v zRrMaqb1&d9H@_eL8TN(`0A18f7d3wvJ_7r|zOWzc4_tv0n%K6G#4Pv1xRxN(p-Qv7a+|ANOJ+wT!1te zAk77caRFjnfEX8`g$oel0>rogF)l!i3lQT1#JB)4E@eTDSl$T!0oXKnoY3g$vNa1!&;{v~U4hxBx9& zfEF%53m2e;3(&#^XyF31Z~c1tMI5C|4lL6^L>LqFjL}S0FO&9*)4h)>%AXEpP`?+<_Ok1FhVF2zMYdEu${1 z`zwba%OS{f2=W|)yj8LrxdcTnL7q#H=Mv<(1bHsOS}ws_EatN{Tg5D5c$oy-9 zLy+ST^l%6=9D)RgAkQJla|pUP1UU{taMzbChakft*vKKsaR_=i1PKm7fwpnaD^kmnHOIRr0q2=W|)42K}gA;@wFvK)dehoGB7km3+zIRse_L5@R^ z;}B#y1X&J2mP3%>5M((7YdHi74ndYfkmV3$IRse_L6$?XmP3%`5M((7DGot`Ly+YV zWH|(@IRxz-g4G;?9u7eZhhPJTU=4@hMGip^hhQy-AXux@!yQ=99q8o_Y~&2&IRgpK zKyWARH}2sXtmO%uf&4CK;6=_rFJ~an8OU=6^1GaYJXavW6=>rM^m7HWT!A*OK$a^| z;0hGD0(q{$8m>SaS70MoARoSq3VvhG_g;Uy&vW-v!sI06}tKr2Te$q|Tg1Tq|fZjL~nBhbqcNN@v!x#D(iKpQup zi5pPh24w%!d~uu`P~Zj>xB&%jz*hBnTz~`@Ai)JlZ~^jMfFc*5$OU+j3y|jmtm6W#t5vPkZiN9T!OP~Ow|U$SJ7A|B z0?fB_0kT|xEEgcb1z5`k=;i`+a{;=|FR$eSWVrxYER=eGI}S-t*3wa5i1asi55fFc*5$OR~J0g7CJ zJQpCt1xRoK-k5hza{*FZfW$5rAkPIzZ~^kW=AKhrfHhozE-pY17a+?8=;Z>c`iVn3y|jmBsl^}jzE$l zkmLv?IRZ(JK$0VnBsl^}jzE$lkmLv?IRZ(J zK$0VnBsl^}jzE$lkl+X;I06ZdK!PKX;0Po* z0tt@5Kbn_Ma0G&R`2lf+LXN2qZWH364O5Baq+-Bsc;IjzEGVkl+X;I06ZdK!PKX;0Po*0tt>lf+LXN z2qZWH364O5Baq+-Bsc;IjzE?pkmU$uIRaUZK$atr5$NLx^l=3GI0Ahf zfj*8vA4i~%BhbeY=;H|VaRd?^fdoe&!4XJs1QHy91ViB5oqTKv~vX7IRfn*fp(5SJ4c|MBhbzf zXy*vDa|GHs0__}uc8);%E=M5G5qOa!5bU0olf+LXN2qZWHX^udeBar3@q&Wg< zjzAknU_D15%Mo~yBar6^tljSQT zeSnhPQezJq>NVK2>lv!`8A>%tp(ZKN%@k;o`dmvrCaJ(A6}W=Z>kV6BLhY@f@_MPf z6%<&nYCoykUt4R%N39hfs{W*^KdI_Z)@G^?sPfNL<)2yG=jUP1y|EYXpX{F)vNvD2 znpAZsRo&01tdlD1q{=#}vhGk7CsoBORKr_T!%0F3yrc>* zslrRD@RBOLqzW&o!b_^~k}ABU3NNX`ORDgaD!im?C38(y5jWL97;2#otnE>;b*R`n zRBRn8whk3rQl-|RQtMEub*QY8DyyW*Dygzcs;rVKtE9>*sj^C{tdc6Lq{=F(vP!C~ zk}9jD$||X{N~)}qDyyW*Dygzcs;rVKtE9>*sj^C{tdc6Lq{=F(vP!C~k}9jD$||X{ zN~)}qDyyW*Dygzcs;rVKtE9>*sY2>iA@!<|dR0ihDx_W&Qm+cBSB2E8Lh4l^^~#`a zGH9C&+9rdx$)IgAXqyb$CWE%gplvc}n+)0}gSN?_Z8B(^4B94xw#lGvGH9C&+9rdx z$)IgAXqyb$CWE%gplvc}n+%$lLGv+?n=7hk^4elNwP)!3)uPILQDweJFkd8?FA~fb3FeCg^F@OBBEfu- zV7^E&UnH0>63iC~=8FXLMS}Sv!F-WmzDO`%B$zJ}%ohpfiv;tH`csYgbB*>RLx;K2 z?@?F!J?cuoXI<%+cBS8A+|jk6+qimPbdA>$V9u|`oF7MT1vhU6=Wd0o^B!|`-eX}` zu7vOAE|^QHH<#iXug=C<)khm=!`Hz*@*2MdC&RblqUy7a7sDlXXSozEgUjK^;0lq( ztE-PS{tH|K*TVI11KbEV!OyFYsZ7_ZOxONhr70VmbNaj0pwo_WkK2E8rVE_u0%zFn z=-VBAaLwNWN4mg~E^wp^9O(i_y1uP4xn!YSvQRErD3>ghOBTu{3+0l9a>+uuWT9NLP%c?0mn@V^ z7Rn_H<&uTs{X+5nQt|#$vHl!!{v5HhBzBg>&XU+!5;sdYTME_VVjnJ^j*F{s@hMzP zc=l`7iOuE?zj2?8pSt&It!FoSCfIQ^KlR&6zXf|Erl)>O_^s1#YeR4K%7b3qF4>kMkX}_IgXZLkA zpL2G{*!i7ms5w&`e;2+N+N(L3wW#;XASU&CMR10B$G+aZZNmEe7>szm2R4Li!tI_7 z)tp}UvuW$!vFCf=^TGZ0|K!KN^wjS^e#xQ{|G)W=!w~^vlP5`RiYK@GEU! z$v$=0Q+FNt;Um9tz2*4dA0Iou^Z2#L zZ$19C>3dG!=Y;h1FTu>2dq4dJkEc%m@$|cJ~`{;S=Y?EYt|F9BC}$%w$0vq*1yl*d-h?ozdHM@*;mhgWcG^LsoA|J zmcFs#(H}qI;;14E#GT7uXN!%zqjrCEk79i z;kg&hJFj$J>EhBk=b!r(|IQD7ejQhJpTFN#-50*|!e3o9@1l(tmoC}+k`pgE@$$`= z-2CI-OH!9U;@^jZ|6l&+%YJof+hsE^`_*Ns%TiY~U;bzRHeWV)`MLfr4t{c0A@t53P+tJloD<}&|+|8BS@ zcFp9q$6Oov*;}5v=4bo;?9SWg++Mol{5$RmaOdSGZc3pY`jre|urTf=8!6diw7gpZere zUw`Tve7fhU-#=Aabf|w1E*kOoFNDIOuhqO#GZqSkza0K@Xt(f@;iE$h;jf0LhnmAP z!!tu~4bKYC4(%R3DST4s?ctNd-wC}Vd`9?;(7VEChR+P`8UAkg`=NJ-e;7VLv{(3| z@WrmUyEJ@x=)>VF!ap^0b9MOY&;j9V!q? z(4pab!}o>`3(pVV?<&7vho1=@5q>tjGBi8WaA&v}`hIv_cys82@Ye9w&=ujA!-JtK!z1Cb&^6&#!gLsay6*0}yK6pEcW>RjHJ`1UU$>y< zkorC9_o(??{a*F|Tyt3c2kJjib9nte^&hJ_qW;tMpQ-s;{i^!bn&a!^^@*C9^;Ry{ z%&zaN-&FI>dKt6kJN4V^x7VCjvsQ*3lgHP~5O0n)@Cz_dRCrd(7PTSm?{(4lL%r z$IN|?nfo3KxkpFnSokV@4UU83VLHr!nQ#Kkg4y7{3g*7Y%zclU`yMm*Jr?>FoDAQF zQ{X#rDx4;BobEWzaNKj?OgIa^3*Unuzz^YUI0w#!^Wc2A04{_ddH+RlF}Npb$UR9_ z9$P~0NlMwjMA^SY*}p{DzZCkZ=dSX-SKA@^U*HZ@hJONA zgYPr1J7QjUJEgxtWwa%HtDo<(GWnN&cAup1e6L#o_j&%;)iHCrW9D?n%;}Dq(;YLX zJ7!LI%$)9+Io&aHx?|>aN6hJtQ1n|}!5-WxA=m|dZQZ|_FSFaT`LQwcV`KGkKf5o5 zIkK_(9CSh#Y_fy&%N&5g>P~ZAqq}_=_Nk6=0=BB0##ByY>c#cy#r5jN_3Fj->c#cy z#r5jN^(x!4%C_A2)9TBOSHacp!1FI~4O|P?!wqmF+yr(?pteiYc8S_9QQIYIyF_i5 zsO=K9U81&2ly-^IE>YSgO1ng9mniKLrCp-5OO$qr(k@ZjB}%*W|8RHbVRDsa-p8xc ziM>QeP-aGrqY)GlQ2|lM6>-631VP2f=!j8Vf-4e;>mZ9fGjpk$U*`L zS-KLc=}J1?Rh3kAcXd^&yQ;f#YU%FMnMu8$Q{6#EopI)R*X#Y`cU3P{r_Onv-*bQO z`#I-4N2PsGrF~GPeNd%+P^EoPg?&(keNcscP=$R^g?+Gdi|62MrF-Z;`|@kLpB|u{ zq|%Wkj>{6qWr^dm#BtSiPIaAAUFTHSIn{Meb)8dP=Tz4@Rdr5Pol{lkRMk0Ebxu{C zQ&s0w)j3slPF0;#Rp(UIIaPH|Rh?5&=Ty`==S-^3msFiEsXAX$b-twPd`Z>$lB)A1 zRp(2p&X-i3FR40TQgyzh>U>Gn`I4&hB~|B3s?L{GRptj&<_A>f2UO+f z2UO-cm3dBOo>Q6UROLBUc}`WH>pIGM+DFsl=<&oiU4Kr0Nl&CF(Ua+~=qdD6T24=+ zW66^)x{fE$-RL@rodH!#g=l^zj{%@D( z|8{x)uN4+5R#>Q5VWHyuO~v_}it{%W=WZ&_-Bg^rsW^92aqgz#+)c%~n@ZO?bS}M> z-sV`&qqoxvdIz0P#;4hZT-OEk9$HE7rT3AQIm{^J%qZl{DCEp2s_AX*Hxe*m1v5lsZ58cW(D~=&Co1) z3YqgIljf!?W+-xIC~{^fa%L!UW+-yzp-bkWOXi_V=AldGp-U>i@wSIhHIAxrRIMQD zenib7Y7S9zh#LGSM9m{=9#Qj;AnG)tP9y3xqD~{~G@?!;>NKKGBkDAwP9y3xqD~{~ zG@?!;>NKKGBkDAwP9y3xqD~{~G@?!;>NKKGBkDAwP9y3xqD~{~G@?!;>NKKGBkI@! zQ3FH`5HǼ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 C%NVdYtCtX0;F*7Md2)@th?mXGDI8d{C4 z29}@YYx!FptuU*<6>p8OhFcF?bIe)hOzUYY$9lSje*-K`jXh(1hD z(nsit`fz=yKGI6IQmxU}I4i{(YmKqS>wENl`uqBa`d)p%{(*kLT5oNzUbWt^Ua?-c zUb8k@O|0ftQ>%p)WCdHztd>@|)!FK4b+LL_ovc`Wke;9q)CcH;wH{h8Eldm7VyubQ zC~JZ>(t1#TNnfkKr|;5tYhAT2S~qL1^$2!>4_R5(Z2g>mRzIWvphapCT6Zhgde&NQ zJ!xfIk6O=IPZ>`c%Z(?EWkx40T8q*;TW?zHtWDO-)>}p!qqP-i1z3%>PFhE;j~1sr zp!L@JYW=i$t-m%v8>l5{ZL|=rwKhsiX1%qxtPhK`zSDlzuCj2}g+*wgtSe3cyKC*( z5SGaLYAG^Xt+}*oS}ALgdv2aPS}3-$t>q)g(gaI&(R zui;bqi~JuHK~a=MaWoXaQDmu|Dvl!X|Nqs$|F?Iz^-)dO~D>{AD-R;I>q+WleFBbk3DU=oQFO39`+%h#kS*NM6(#ynK*XN zEe$WVH&ngQ-S1Q%e3uCPXCwfpMi&9S$J+U8)VBKXlcG`2X-_FJ^+r7KiKTpO#z zlE*og4oYl+k{p{Wgi=zSL5QjhIh-LX zJw!?FjZbvIh@~kGrxl-=j2MSXvy`vB^0iN{pPZDGRNu*(CnfniDL!#*Qc?@22zJCc zoH8&425C|8iB8Qw(rNRLg!xHMmfXTAgZ*KbBXzSjI?|z1DhgLWomz6t7^i6FhxjPR zQpZy0-W;L@qFVhEljG~B3`k1!PeN+Mz(gd~SCy(PxrI{;cIr{hw-B#r8XJQCk^X36 z|Hu?4A3e^=#-Mzs)~tn74|XUc?NMV2B#nj$%#27*QXLgw35 zyEBuA>NEb4TkMvIN%X7l@0ZlfuZ6Q(@Mg|qoT(|%Eu5agsDQ)a^oZ)M>IIK~WRkO* z3JpN08bU3c)uG1A-6RgQz!;eA^o&Y&EKPPeJ<(__oL<3w5)wDd)aaxDXSK2ZnJt|6 z1^4Nn*k@oxWPLxx*Ko(*AH12WM-58cT)ldflchvDt2bAj6kRuRvxoXo4L_W$7M_F% zj8ELGdM+9(aw#6KDz=%QKeAQ%>sO?!Ea>|xH3>E83Hy5{<00PlsQ!xwxS6PiKbkno zNnN)v#@sJTjbPeLJSHL0S=~R<5#zL@Q(FG$Z;_5<6#tGF{-}~CMMf@7-h98UxpQXo z`i;;`-l$uR<}I8xgEuqf)xVVwesDQaCBGyu+42)P1Gn9^@qXt%#w_bof6i< z*)F(c?eG@P_Ww#0op21qJK&K}tw2XhM^E+gqA7bVUE0&XCkBf|4C@#c@kY02tfn{0 z55p)^3oi)%cZ)d9sODprw)A&6!k0o<$3K%DEh}_5C3Hf{;Y?QVdqn@lt=u6T^|$iI zqFz#@8UqcCrYH|3`uD)who^b>tAzKSHLn=#c~o+$zf(k|q+%H2Q7QG|Pfo(S``0`v zFbM;*e~*-~`u-@P2kHgKT?+KwqYxOP21|(n0Bx_KLt$wDizU#Qg3N(#Bk&V5jT+_t zEDJrNlWGG8O4k}!wt;^*nx?Zm+G*egcQ|_Z_f&VQ?Pt2&oI-inrZNh)lN#-M>Q{B}>Rs_(zigaCy#10YZH!TkQPrqDRQ>%_%PSKr>v6lvJyGSF6)z`dd%TA=S~^4VF2?>B z@x3tSGVdDBc97{E?Cb!ik7~6Tw5y{BrnRbeiVIfV(b)&h`am#lDn!H67apcO{erhJ zcT7Ay?wI~cCI(3Zl#KEWR5Hqwpk$P1kdo;R&tN5^JVTU>@+2x5DCt1lTPl}R>glDvpQJyhMMtM?|jPi^Pc6Pem%;QwR z*%i^_-M(({O>p-oL`NVnG1%Gpw)BH4;Fg}`_9^K!w@-;q4t9p$7M-F3Zqcc3pAt=X z`;_RkU}u-xqSIBtEjq*PQ=%DepAwxJycHiUsuoX?&7HS`e?+HBvV{z>PX+!b>${GTFLp?wMfUXgnh(-ky zr6drgLUw#MezkTzQCceD*OG~*LjQEcWuUy7h?`jqZV=7NC3+}?D04V~e@+EeIf5NcdAFLEt#i;$1|K!;WR~L^obX7fxcH!)~kDQr7e$WLjuw3(EU2fd}9I8#&Dudu;I;E03B}?5WO7@kk<*_&JcjS zo7dy&8Q2Pa?*svq`EDpcS=&&q`n#$H&`|)Hf=l>wrO>;50XRmqBN)KH1Mxc(0pfNg zfb&G}Wf1K)0OWV41K6?${yivjZ#1|;^uCkmg8+cC_96eie4_oSL?3#AEU*bc*8%AK z$OAy24`&o&Sp0*9faC>ei2HJ0e80U-A|;*KHzu|lFR zeQ>|T0rH5BBkk*KqHkcsx6q~jZtMxfeFvHEVBhyka5p6j_gEYNbvO-vK-!r)APnT- zW=#-){%>enqhol0`YPIIEcS;;{o!C;jhv#9bp51mBm;K%5d!x@|G7sx;>nj zM;Nhcz%!Fr^-yA70pJ+1`(gp|-Ve71zV6Xn#32N@ubSZ!~BJhf47?e$<6xP(7C z8vzml;_8$Tt7`xUNCwM55wUvESuYx(+-$)V*V&UfB^gfNDG9nz~RIiuO${Fi8ak9)*LppfUXwDh=o8$$Qoj;vx&70 zAQpz*N3mpPp;06{V z$yn3`VG&ga6kws0g$0b_60un5i7g}63pVtIeZ5g;Z`jd06hwmrkV>o%^z}(678im) z76F+D))VWS296QymkaWN@|O~e_XeRL0c3z&kPnW5QeyqRK`2N78N>z@5*vu{K(yhY zUBm{*5=)FAmQ+k^XdJQOic(@DATt8CjK~F-h>diBG-9KCzyxB+@x)THz(Hc8QPei|abuu274BHL_O^;($*)`By{o=XHp#PSgLyf?@uwu(R|K>F%ffbv%#BetdvfPW3- zUx2+YloERpaxd=1A6|9mk{^z1Y(#!*t$G$zJm2$#MY-1dj+t|(zEMbQV<@pru;I-taD&)e%ZR;=yv`tS ziP+{;Vp}B0C$=>MKwm!M-l+qS|J__-+u+|80kVk|>?O86nb;2K-MN9-uC>J8L;3GP zZubOSdOuHWFJwM|{tpU>?aL;%KZn?d(0yP5v5(@29faJ+(D8{6u}=v=rZAe=XUKCX zoY>(2uz^?+%0F_R*ypjtj-iY%mJs_AXh5t9m-iRaiM<%hGX~b?pUwJ4o*M8y{zd3`;7Z4Y4WdU(pJWl%IH)Dxg zK41fJk8tAEf{1$}>{&{@`d;E*6Nuj@!7k$WhZ4sjBCnAR4ifj?M7$>c@)#~!@;b;< zH<5U~HN<^R5N`;1#}eX=;1BdB-nfu>(*WYl!iYDA&fpEiTMj4QDuQ@O2JzM?t1a}0 zf_6c~+aq6C8u8B18Jd;X`~TWM)BUCgkT763<#d{E>8kxVcE17fn1H z;p`j4A4R^$(ugmJC%&+V_#&h&g52U*;!BPbe;n~kgFylDCjy8sL;RDMh%ZN;r#t{; zpUx%zEXsX03qWTs+!aCK81a>LKq>L(P+ndp@#jOp8se)G!7kz$OZW@>iN9C?AomZ% z{{!i3QKz-Y|57sXmkn@(__`Cs*G~WkiN69{UPbw@!j4zh5`PWly_OHkh;LX={B@+i zj`%mAXCq`bmJr_ry_<@OzX@C3@*)0q0&yqU5=?xnH}QPPzv}?G#J5EgFUSJNiEj@D z(77WPTq3@6Kk;3#^SxB!yOFjhoA};%0KM;*65r=de19hK58*$6JRgM-$JoF>Mwy>v z5HEx+pB*E9=nV10dx;-G+7akI3ioIk@z0^_bCmu0LE>Kw2b+k0iSoX568~xmwr2sL zi1^o#`5O7YLEN`F#J_{gcgX)e(oUkB;!v=Q_^C92@=inMhXUefoW#$$|4(sX6Y&cMK>9`GyI4Z}67*kM2H?LO0#N>C*nh7tcOsY<39i^nLR&z>hz9sw1#=S#YdAo>y@-Uz84}gjlJJZtQC)%! zB)lA835oj(Nq8fzCgN)%Z!PGpg*>%WNz@^bL830?>a8bHALaVM-ynxXL&!JGBjKA& z!VyZsFOfte=xmfl!rw_E&;XEc97`f7lSEU{4F2ZPgfD#H42hQTx7tqvC-kBXY-<|? zmXHWtK%yPWXdeMeNOV|BA`Jep0umj4NOS_7k+<^(65-we>0RQ$K@weIN7qXvFy4uX zJQCeuOJqKYD3l)!9ntW|Aa4%>r6hVvaGXSJ2#H?FBzkWm(FeNX5cfb4iN4T{F;DbI z+<^5Y2Bv{55(y_r49+Eym_s7z5{aRyB!(ev_%aeBpnsG>BDsV_3c{m90d$RBKw=!q z9Dkm~M94hoATcS9L>lx>LEb5_e`*MT&Z&?|j|Ip#EgYnS_23MN=>Y)p)ALEpC?hcw zwmxJ4=+4|gVm9*5nLy&<5)xUkb8a4qd6^`#eMmf-0FIHEe}e?}&0=99fZQS{iN(1j zmgJCl!V3hESO#}F>i)C@C^r}KxqC^h$Re>4c0U(JV)Z2wYmmMMI$ttKyo@@%JeZ6APgoZcihdy&BUM{ErT!$B5U1E6DT8Hs$9_YQPzbASjE z1?gZJ*Z}r}VgR}AK>#|pBYiv4wjBm z0n$E3nIETu46p#?g7x4AiBFLJX)GuqQHZh%mjU>(789T40hDtHx(_81{`fwLq5uFr zMH@gVi6ijfcCru|79nMpG!zw#WT4^ zB(5XR^&%3#gp>Fc@xLL@@0lcS;CPNHlHiCfThD-NJ6H|I%U%__FHxI}DP3aU>gMlJrMf z0PG3OB8l~|Y;uBRQ`p}OVazA8Wdg}oIV4+WkZg-^Xc)=%@P~Pk?1VaWLiwGbqthjl zm^)-=hw8j}6s_FF(Q9%aU#C)ppm`lEjR;U5qTpcC_z98gShAao8y`2&$} z;0bVvWWp|zgL6m@@d3~~1hys`B$E)A1piRz8kPWVkQ|P<5n%v%N5ICB9v}dO1IUcb z0-FHRMg2Fg7_a!dxv)J*_7$A$y6&)EF{br|OXkZ1f} zk`ui^D2O9D3Hj4dr!?3#8TL*_{A9#WP6nAIu^*7r*Mo!L63H3JI|DK^Qo#a%v>E$J z&P3cSACj3wa!xwQhnJAdT1N7bV3YjP%85>&4Ku81^ql z{>3FEmmq#g9S{s6KmwQmvH;|ltOo@Ex|S4!Qj(7w0QNi{0-^!zcsvbcgIury>;gsL z47fpZsRtMi(!m0d2R4Dd;21a$%1B~;Ah9QsPlSOukPI@w60in1!G3TYTq3y)GRvUn zNe_?)3P>(T{^gKgeum^z(O@mOL^22E=M<8BIt1i^5|Yn^gH0r{*OJdJ1BlCw1F&xe zfeE09B+hu`O4My-G0EqU=Q-%ilK|;?(D{4_K>G8gBv&N>q_6e>ncxJ;HORjP>1&Yx zg?O-++{k)64lJ*TK$p3qTRc^~k>- z`ClQB4v^ZEs5eoo^o}>5K))vl($X7m}L~lEj`*ZpkCL6>(b;w{<_s{2%~5 z`N;DQY0k!w_Mxo($h&_5$OD_eUT_SY2W2Eb^a24O48#G*eF&W&BKxn~vNdd9)4)0kG$2GROpwI|{j@$oshg93Tt~C;0_*eF0rxK;{d` zd;wiwK-U*HNPg)BfdVvrS3zA8m&meiB z02Be}y$HP*q306pxwIdg0Hq`^!=}ry>2f$o0BHcWUETopg5v=BuOR;w*mWfu3FtITv7-DWh2r&yGCXm1a2@YT&yAC)TAS55jvWb(BU3Nn@Buf@2OY)IT7Oe6A zSN+}_%}6u0oNxcxE#!HxyI*&8byam$b@eHxh$Db~fI9$>0qEHoz*(k9Hb4neaEy022T_hksB}(6)lM4NgD=5CseZP{wc+a2)Uw;4P*Y@!W{=MwB<@ zF~yAUz)r20@mDH`;OE0YG11KUduJ9&LEgh6inU(1r(Xc+iFiWAtE*UOe-j0iawK z%4MNk7M^9HTo%e@p$(r5z<7L(fC0c5;2_{Q;3dFYfcKdKTbPoa4X6e50yYEiE*tN1 z@GhqWa0KuW0R7K-6Yw4Y_{jADDgoVq5x_pc9e~G};zwCO%KA~(kFt3vn}@P_D4U0G z(8t@L_Bc|lr0Ih)KOew&-qEmn~fU`^q$bdXRBVYh9#+2X=z!AVhfajSK zLj6z)paZZPfcK??ObO$C1ivHr9YOgB{YLr7n@lMmXG+Ckz%jrHz#D*f0e@jir4tYV zL;+~0ieLh86mT5y65uVs`%I~3fNVf5U^!E2&~_dAQHSr=;k$MCZru}1X~5qGe7^zT zZ$O!b51G=0Z#3Z>O=C=HISe=kI01MAaF!{psMmTL@E%jzQKy~$o?}Xf2hhrtxgRm5 z(*`I3;G3QJX6FvT5dgl`iEnkHUMK2xqFxv3VGpRx!?T6>_rgj*H(&&?4{!(IF~BLN z^t{iMMHt&6^kvbzOzGVZxCekX7vo(Y-t}SJeYJpIz-9o-^r1}O6M)lzw*enAr61qw zj{@+nAMN$O3-}9D2AoV;!kDsDX38>@TW$iN%yQIUj{3_{e>tA7!1I;p=gQT99e^W% zGk~*9S!Dy106G9C0BC>pallJ}w*c=mW$iwutizbrq0Tzg8N~Mn^8k&20l*mGAmBcx z4B`EHykC#^>+ya)-oqZMtjGKHc)$K>z^hCdUJcm6lo6C0LAeo>8$r1dlp8_05tJKw z6Yw5WHaYO z*Z?I=xok62#sFK70MO>v=K*grWgF^jL!E7?vkm3P2LTg+qX6J%9QYXre#U{HD^UK5 z_WW^ME%2?*Yy+g0Oy$Um$w(h$&z302%?S0s8=V03HLJ z0-OPyWy)7&Kpp_)zB&LH0|1wg15b}f08zjoU;=Oya2)Uw;4Q%WOnHIRz<$6zfG3#pB-(rmeR>LgdJ27d3VnJCeR>*wdK!It8hv^i zeR>*wdio&XKETs}R{`$;K4Qw(Y)tt&+QWWX`TA+V+kg+5@{9>k1i*KnSq>Nn90nW% zoB+H5co*;&rkrpBB7i7h5HJBa%9L*ap2f3g@$6YVdzOA52fPG$3-CTuo@0P)KrNsb zuo?GPgiMC%r+b?7T z(Dn;x`$Z=p0*C?z0jT#P>b>{`;4}bjy@WPiLK`okjhEhM%HIJ$fBy#HUBF+Matdvn z!uwNre+uuv#Q?zn%lP|pHlP;J3)sw*S0Vu5|CNUT!1*ihG3B%e5CseZ?f{%-%D2(x zw^9DvDEIBNO!0XWB$H_*l#V}Pdt?=t0k5x@}u-haOYfI8oQ zhbjMOH303sd5kGPFah=f-ebxSmjm8s%0HsqKjQCOhnezE3~-bwKf>Q1(O=Noj|Tzx z?vK&NnO*>%pE<*npJW5@@1MNIl%I|OQ1)m00jHVrb`jt(Q+|$b{2XQf8Myf8hX8Lg zU*P>O#sGN#i{}A&{x16P?n_MhWh3BSru;j~ z{i*|ia=${kU%knc_t3ZZ9%IU{(dMu5ZR~%Q{}=!~&6M{|fN{WInDX0fKr3Jnupe*? z@Dfx0lL5{!Q7a5EPnZbl-<~+bd%wUlLN0`A{1bBiOY~9R|kqvm08SKZI!Lg4SoDsk| zX271skcsk{m4MZNgMd?jGtA)r3p03MVumcV>BD!k(Wji}nIRYL<)W_t1T*9{0#GI& z_440mhJs#ZC`5aOBY-;qA2LJHegMh@@GO9Ki&q0sKiC0yf*DHiy99qj=tBr~LT8zw z^m)MB0Mrkg02oWS6@Y$(#{uYf_!t0vh(rKUz#ub}p>8?8U!Dheni(qauHrZ|RN{9f zepjJ>)w|44eS{fm@ckP6yB6hZ@xB(nYexVFnV}x-HXULza+Wc<9MS(lo};Xb9qK<} zTRs@AW`Zb-f;_>Pge);k97S2hBrBuLY&HyGVn+L!$z&X2M&p=qz#oOrN)$v%m|z0c z+lk2)rHfS?irTw6T`o_gG+3TjY_a55xI2Z0`U27GvC9r27%uIUn;J`l#da}R9CkN$ zirP#3tQLiUE6@V?p#A=Bi}x)n_m|aG29=ysZlgEcP+3q~9;^!FIYaK=tVmN)VN=-W z3pW)OHAS*wUz3GT&i6<=&fOlPv{m zwF3Oj$_h8hM?YTEr}&t7{`XiYcL8s>A)VDkD`kPn$XXy^)Iio{aLkSNOE`5pCJZo^ z<@IDb>{c@hn+z6Dg&SCwz@zSOd7PogV|(AR&W z0@D~Uqeqg+q|0D>80|O6q9~5_n*^g#7-j;Fv18^U%p@8`lW`(tSZnCvvFrpD%$q`?V6yX5s`HPq7_`lS2fLw&P&Yun}97cH_( zA8~Vsr^N3H6u7c7EQ;Hhh=Fs@X63J%*SxKK3K1W#vHAlcZ(fn4NG{;yH;fr2;6!2B zY-zM#5KKm)k6~^=*js3%iiBN+MbKy%)GSHzutAXJF?qmXU|H{Xh2F2uGqQ5re6|836(Rn2T)?FX<7bG=m z6sUV9bPuygy&uMejwu8F+>8u?RaN9x`>Qi@GP0dSW;VfQMn6NqbrZT#A>;t(>c4|c z>gp1W1vuY^WfgFVuk~(d&B~p#q5J%6U6;)d=68&A-TRL>b>z?8JpaDC79IWWjgvq8 zO>jPJ@0_XQt5H1hDic|?#nsCNEC#jE^1 z@*XaX&i8>IU?nJGACqJzOKbxDSHMhmVv&f$Ocb~GV=SD=b|BdTt0)T;=H%mM=Oa75^VpFM zb$RuR%5Tf?6qgszzy5`NSHE~@o+Z09-)!UKiao@~HNYNMmzT3fP^5xGR?D&D2<9<$X%!>-VRjcsL%f;om9dr@vd-h#fW&;I6-HM2mmJ;!xsY!4E{6_!@# z1Y1hIX3LsvYnCI&XT8aO-FF1>{tIJ1lXx7h59GE}*GFL#QFJ1w7`|@VFp7+^fj}fs zB3rU61dj-Efn=zcvoaN|0RHbzQTf{T@5Fxp_~eho>c@r5?`)5~*)j3Rw)3FaZI4WJ zh(G;O>`$k6C{OM9cI>|&-t)qt?sF9jZg>H_B!+K)8{c-a0PBi&7zGhYupr*HfQ8D# zX1*v*35zll#6T=EFV_{w3~>HoW=_FLd{SSO)Fp4gB~TZ=T7QF04KDGYsV{oJsBgTh zTF1Zs^$*acz0|qbRgcHE%BOi}dB??D9v2S*5d!BWjp(nHBojRW6WIcKQ{*8on1DQK z2t+p~K{%n5)kXg^T5>7`-YM!>z$?5iycf$8cb*$VWY}qyV-c@H`?0UeZD>Elu2zY= zjFba|tZYG};t-n0v=|J+kdY){zZp!HPtiD0b}hqiq_3N}U>)cddKD-MCB;78MVFT= z2}mHPi5L}$YJZaijNGP)mB~@*p~-vIk&Gk>l-SQTA%a1vqf3+^iFh=#vS_J}M+MW( zv4=52n2Ll#Gc!~F3`Bb>208vj%jAE@e#Ei2>+IyW2zk^BTLAvJ9Q?6{wL}{|f+Us; zvV!$5OMQ4xym6Eesqscx)_G$vQW*(44VK&rs6K=P&JZ)3OLUGHu9l`4VslFqVM$sq z{BhSOcRUySw;xVye_hD=`uc~C?5tYniI$cuTsqRR^|8I3-3PyRW$*6h$MOT>uO|O? zML%bUj|$FLcjh1(Fej3{mZIXR1`>VZ&wuWWtejZgkW-H@$Me}w;OV-#NJ{cuN}Snrs1J}{S4 zv}9G3VY-FaX$&aBaWWqJs_-#>FZ9rMXa^Sik`YOvhS^J{}(9@875jyr%39L`O zz);j&03H}a!*Iy02;4SuP3|N&nodRSs7dg;A zTmkW?9oM~ZUCZ`%*@Wv63tUa%=H<a{xuGVGOumD%~Wg6^x9;(~dNzHUJu z3mE9j3YH6fNL6P?6?AE|Ul#ZZbh*Oek|K_#hWZwyYibAx1}Hc_ApjL2EL20iCNdCS zZSM;RyK+0L1UXh;RU2&075+K)r`%AU#~i!e-B`0ac1Ea_R#yuj1pSj=o0DU&3QZ21 z>|VQQ@%tuk*XJ0rNct0gD2yZ#bp+@Tk=9Emc_@l5mkjy{5hry?e>(T5Q2EhE%2S^# zrg52|>t&(7i*^YYH! ztUM)}-L7*V2m8X2fuJP0+-4D7*64xwjgRF=b7cv8nNcYAI?{d2hwS+Zv>w4l%1%<} zs)Z((viHGYt#7hQl45^;*zM2q*u=MGnfl<%la2+u^Ur+~2iL8cj&ozBi;AR9^_#H= zIgg95J^d$Yup}&5f+Sn9SVU-h`VUd06+^GH!T(4}$Kn{9S~y&%E7TWGViA4)pacXR zJ{e(=Kz6Y&q>5v%xPgZCb<{jpNHMOmkQ6uB*HhD)T+r5rMNFXWRU6Y|Lo>PXPFpr=cczStv?NP@1FAc=I9D?u?gWODW8 z@!0QQ-M;-*A@gxn`}#r0?nkz5`||FNj@@70w(XJKTm$>?_1(LnjeqG&f&>5hZtM>a z?>TwHf(196+_U%Op#=*LorFYKaQ+_j?{^TpUe+eu5Ovl=c6vc2LO6hRC}H!9TxHQh z?0luY(3Q9LV`bs~Ia$UKAY4eW?hpt3s;MJh?5ecI?6YglnOH1+Ynh3~()Z1iSS)>O zS&7Bcw?^Fjq9a8KMOOBxcuR#c%05B=i<-lcP)%8Y^IX2EZ)&UopH;PwET5n&wOEJP zsZ|JW+PZN~CCk^+DYXmY_O(~ioG-nlW?~)@K|`IiX?!;)lr3K$=q?(ny!y3$hdH_I zczH#GBimn`{eX}e0txK>yHDMan@2RU{mCwA_gL(M$G#K;;e<;zR0IX*R-yPAPChkN zJs!Uc+!i#w@cbW4K~B@P>=*qf3V;qv74jwL3ku^a89z+w53FQ*9Yigzyr)YeqpSlM^NB56PW<`)JAS=R+W%h9jW6xp^U{qy_`7E> z{z~ttit`ieHcxz4aHxxR^WYO)&*ghI`4#YM3v3$o(HgRj!2}?UVl|4uAm1i%dy5VH z6hrV>b8I-J|4FN$U0+cfu(fm%QOq;X^a24MoD3K>$=4v}#T>;a}9 z>I%oF$LhEF)y|mGcP8LX*&WE_|M<+cGdgr$dFqeoPj~D;4O=)Z){ykA$$_PmOg$3r zXG>gl+%m938iY{ zTdtVKhr@k4y2YPr+;y+UZ9n;PUg^L1rg7rU&phzyIu)NvKA+bT(#->0Gvmm_GN9Sz z)~UF9hPfr>+?8QXoLjO-m107nqfKdOQ^qNuxN-57-9@+F@sKnW`@=wS?5wLSvJLv# z8^_+hEn2p8&*J=gk9aOLZ?N(5J+Y=qd5-X{-0aDpDNl7xJh-9v#w%CmII9XV{g~=f zWV5jW-|cKpw51*0Dj+rm%3a^1pPZ8=h$T1Sp;byUe8+*Nsd=v$6B=Saz!!di zzx*q)haR6?DSrKNVeF6in80pgd9Z|E$F*O z{@B#Hz>~!PT)c02xlp<0;eWsDu3tU8MyM=bzVE}j^@o>Bo6j9T@~_9&uRs2;N9f(82ra|hS(xym*kSJ^I5i0HKc1ZiT^3+qKdP_?DCbBTm6hn23`)mrQtZvnkHt*c4;8K=AC)-of9Cy`} zaf8I%j+@^4>=I52eMBD0Q|FFf{lQJeMXe91q z%VdFQ0d2X2K5Y7kMDZH-Ui>$cfdXl#Z59G#Y4F9jp+bXl*W^pF4<}#xBRosOoXnsj zqcBrwwKSB{mQQ&qlz;A2&91p~chyMUIaqQ6vodCC#abvQdqdD;fc6KUo(v9{w9zbQ zWgUTRz8$8os=hq!^KN|?EVK(#y&7m zFYhms>T@H&*EwjWE71RZRus+8_t;@c!~n=P5#J}56_*te11jU&clfbrR^cTKP-pq} zos1{SirATgkTv$YVm8Enni2HJ-WUEQ)*@6E5(!yfXTwbhmi7O|Ra_|o;E{8&r%@V%ctImG$ZU~=-Ki1`Sc~mcf!AK@Ta#ae%i|=&UCmY3|eDb6{L;T@npWLF%_0@RJ znLfDMTjr9^eSr2wR(}3N>2G8|v$7_3b<|>o{UH}>gb4OUYqyl#I|d^ORD4lkqtMzp z^V&(9OKF(oDXf+LX!!*SlIZ}Y`Hppm47-3e7|afbLZwcVB@e<=b)=%#q{PEnPUemp zJSK&NG?13K&%87&-nsRbWq}193%Ax!{&4u6!y}*F+I%QnmXQ@+ymY9gdtyc9oI5}G z#>ypa18wzz{BVZwjFJ;+DCnrKYZR|oxuRqHeS?$xvx4)B8-tl8i>_SQwr9g!xoOL= zztErWA$-KXDt*H7v4nj->TD7eBjKbo$16#2h^abBErK~@I0(q*kN5y!MNzn_pkW1e zg&o{Y5a;vJmUtDjWRg^OLE5U=W9ccJIgQAgL1$PS$(h^Y#lBo?Ivmz%cuq3LCLnh5``q&|UM}b4rbg_bj`?Jl1XfQaY%_VlcLw4P zhJ}p&6J#cEEbSFVYb7+>VqE1z8eja0tUiIhM>4UA;R+bh0-aaET2X`vlU4U%7msZ{dPyXZxJ`+DK_pfj`HdWzQ-rbvlWM#OJIj#CJ#rqptul?O8Bj@&!fOjd(XLobImbWpe`JF>lqPx-D10n|jmM1*@7vzS7LT%JH4M z8k@F`tSBrT+lIzw~B`>AA;n(-?y|1k8$%*w3OhgsC&kavPK}AbJXM0}9rtViO z*UT?Fu=}xFuFomR$==YgAnfqfEUs@@T$>f{zpAJ0nl1C>f-R%@L9lYr!>YxLR&*ae zxw|luZN|FWbN&xtP(OxGvYb7vS|J=R=!wWh!h|5nexibeC)jwC)=yO6*KJ}tXM&c> zITQApm}|0Vq%E?Gm>0}Ms!>gE09$90$$Z0#5@aB9!9o;KcTVaYsGC-Uu_*z`w1eXI zAsFXx2@lsbtm-JrZRo3;x2bCGeIrA6Z*A$?_sD4NK(smAYAo`CRY_>Yr$<)q z?JI6;IW@O$(UHI3cl{6UUG6Tf$?wef0VP}xbe#W#^o;Cdm27*|LMtN|aR|hv2>~VG zLfY0(gfk<)^#eN+MV;;XXHjeyac6U+G=vzXxSNJHHWZaWb}B+jzgX?db-ZD?{#}w-B+yX2})nittfQO8NX-k~Yliv{Z)(cUheMjrk*NrCv`r{dXT!ZtP%^evih{BTSKAQ>kiiwR z=xL>3R<;R(S$$y<6`eWGMN9C3Vg@B#l_Xl3S zyXP0XBdwfK*||~#+u=nR6?|se^!pm%<7;k#P7dpt>RBZZ8^Rd5MK+PFq}g#dcZtj8 zCQ6up`Kq2`V|8wU<2_eJ;9TtOV70H`h^48_E=34nFWzg5bOIx!!w|rtAw@vCuq}e zTTx<{1XCB(B=Qe9RtOeT2~4gQdcs91#mUygV+xH6M>q|*MG-M=kj*BuIBG=@tYE@g zH<@j54zfZ>r~AQ!H}^NL?&dUX#ktTr21q4STL*l(2RHX^Uhd?n8mUU zM3UH4bjgfXY(j=@`Y>j+0(Pd2hhq2QLnBK<*7hs5jcwVyY2(m3E*Gn+Ld8UJ2u0)j z6WXlIMO=WS8?hlMp`~3KKgy?#n@bNT&GH$ZX}f1h&yK#*Em;N6TfI(8X4R7R?kjss z%gXW^vS-Jeyb-s*VcUaOjNiMVLa@aCyFBE{^SI15r>VcHx@-VO^2)rt9mRQ_U7h~W zf`-D%#hV+Ouc~*IWnY9#N#f!qy`Q-v+P?Wf^n0f#e^XI!wwkROaoNr3?lZza^q(L* zQtknP85#;;I^4O`Daqnht3{it}Kx7J6O)H5?o{$}hzZE}We z%b1{^UZ{PYjqd1Y85#QEiN14hy75!jj&B8O_b+KO|9~VJ@Mrs3sYo#Bw=v` z^16~1M?+CvinUSR5%$R!R>DMSYRS+#5m_hpI}+dTl(Ah=M+6!ewmJgKLX0xa^aj=ioHaywEQa7WZg%xRbjra(=T8hY0t{vkZvSif>k97A8eYYIiT zj{!xGj;-ET^NU{yp1Z`KSCs_%u3NWuPj}v&W~ug*2Wp3dz|*`NUp}<=^lbz66>mQN z+G|7?t-wd4@+HKoEMV)S?lKtJ;Lw6SuB)@XzN*q7^{QJw4`BqtZZy%m;g8OIybEUW zs6$}kP`+Pvsq21^7G2K)bEfzP7zs3k8&Lqvz{YTCa~IiztEDcoL$~;{3`ViGas9$_ z$x+!pP}?y)x2U9ZwJ?9;(+h9@&Y>$`xOrgybx)3OxWC;yvf>AgE{DG>cTQ1ezEiLi zUHE=*4}*Upds**}n0P z=0j_9Ywba^+oX7k%KaN%U3ELxWmhAjNM!BU3;!8=VH2xj2jFdiZlZ03!wivU1}M3R z)HT8LCm2R`BAK=qo>fUsBiUv%B4Vq|l_kZw*_lrDh)9Xq;;j%=qYU`lG^32JXL6h( z;`IRXWTx~wyLWkrzmrI<&}H(HShTQ+m|o=^xs`Q`uKGV4EAidczwmvj^M=j zW1qdnAMk5?R1BBN-fFp~sBs zuCQnUC*S#I9HgkJE(-?(`FU|7wxuCrA-$ta+d-wL?C2w_N?K;P&PJcSe$js!kU!}qsryKh6uynsQhD=1%3oh`6GOY`i8 zqJo{>gLjWMo6ScH-I*1On>$XQdxiK>7`BvrbKJNXUHfchznb1i$xelRJkDF z;1NDV%wVeU)(aP=n82yR7ipQ8#Z=*ov`qYAs&Lwtckw=xVScJ`+LqPA#6QYlHi9ZZ zC;@}JNbAHl8j>n#U!Z7kY%GCI8K*pCIT4xaw{mAx)xLG{s(CZ2&ibpQ1}1lS)?Y0{ z)t02OrmaebJgAFAJ}|$~cwzW6fq+dCosUi1+ZpwAu0wyLnY}%o9c?Y4ECl@r!;xZs zh9RY~T-CbN1sF(Loj4iS;7Yc)%R5q<(nBl4?Zcf#SgSDTVGXz6@Wx$r>(-BU`IGJN z(mgY6>;-mLY4?WaF05y5p?7Wg;-09{Y!W`1n`oa0m8k38{5014a<)bKM^#nNa|&kM z<}I4Tf|YGqAv&yWg3+OXH(9afqp4owGG+C(wybHIxqgq>SYl@CkpO3gXtlB-ivgj^ zw8R|_lQRkhE~t}3yL7S+v@jON)@S8W7*7p7I8@pUeFcg6<+WBRoDQpZ4iWd4Oa zGRu~Ttt7Yf*Y=6HOma&zre&6WBBs;xSBwrMEtyQN=fSW*#Vn>MUjg_XN}+0rEg{e6pj7t9Msg6iv`vBTB}}PT+)PZWad^{?g{fKE@<=;&Sm(jfVn>vUX?#r8Na{%=v6zn*ct|5D z<9y3xHcfu(B3$m=E6JWm@;5-YQZ_3;Wz9lG{|RCa4qd@A3X5@myBB6-{E?kdWJK^T zJO%Hff&n}L%OWrPC`?&KBOAglj23{^B4S=m#Hom9lwm44lS?GkbQNgP#VaIIWV#Bp zw&E2o{)MTs7j2viG!M9cGecl31X_qw42iUhQH*97BL!2Zjnu@Dq;*zhtJAK@qiNH; zCP@!n!sQm}qI?bwA3!#>h*zkZsDqq)bYwQQ#&9{i@CfB<7 zw{Vc!Ozah|TtWl&haZJXJ)i_88g;fb)z@;Jj$E@=G83nA%?e~Ese#fn%aeG(Rzs2(wNP~Ytib6*P8XWXsxKVrt4Q1>LIP1salD=^Fp;$ z0}hwY$%y1y)rD%(s+z0Hb*<)%Z)y@=Z$*_SNs~c~EV+?HM$Ri0&o zl#OUK6Qx-BVpi;Om4riC6e~Ydqv3HjVCG!2<=RWvP2an%Vg!-a8CibE*e%Ng;w`bW zu`g(onzQlI>lT{LciQYGF);tKsPmKa(!6Q&b?fs!GKi`36oQ6AE?3GOz;HB?F+L;- z#u!N=LmofOrp?#P!hC!)3)8&KES#ogn!lNa)3i+UIJ0n?mT5j`7EaSL&Fjp)xYJo^NepQomkaM~?qgN#K}Oo^2c*^{Cj4gDuhL&-(VydLsj7WTKtC+I%P!ul7n(C^G zqC##KcDb?jv!)<>uLma)4LU+p1i=|*a8R}YcYrU0ik179yP%fB2G%^D+AIN!{X2Vpj&yC5@A?9_C)3+&6cTe!f?pF zC(^U9n}(cAC*HY9F3Is%AS%;-3rPmKEMGEOq{p+%S_<=ppmlBH5TZFr~Ur;OnTIjPZ_w9|HN_i;uNm5=jZwJ zZ%#cYS%Ex1cR^Nk2p>e9TvpTwMnpp)Y)Ot_!Lg zT8-AQ@-A9|_|YYOfp}89!fd`kd?{W5^ zAuF;0M@}w;SqN%QHoMa5*k7*6zG59w5oGLLnx-p24L$wQ0@L=37 zWV4zjeNRQ}s2p_?cVc`4k+udcq<9UWNTZa|{n2{Btzb$YaHj5ukleTVs7qmActO+!uwas%ks^ zH=W~KpK&+W0yQ#lDc_6T57YC_s;W0*)}uFl@7B@F91lHIRO%Ub_HXOT6EWfBLIXq{ z8*W|eI+mP3#Y&FJUWM9XvGy3z#5}rRNe;4m1 zlKaL7@tky_jT9TtZPf!{L9Ga07NHc`xTBqR_73$i!Yj4M^h80y_!DxgQv>a0oDS0{ zgZ>E*92q`U;)wsSBX(3CvZyo$V}xY2j`1i``dAy}?G$ar>kwVWf23(3+MHBZ%Q&Id zRQ0*k6*2Jz(Bw8oHf|UhUOzOr4&m`DmeKTc1&{Xo!Zd~MVhSEVtHNz}I$0#k6Cxx- zb1Jp31!`Z!=Ziq?Yl&q4Pce_Bn9eL_=z+v2X0HoQBdHWxwJKayJ+jI1m*C9-JVaxZI;xlKM)MeXXfwA5C6d_JM4y zWKe{s#ALDzgPDz6bX!DoDmgf-+9VU>wG(B@tZI{djMq*SF0-mlY%*T^lD|!IGhX|W zzfCeUUi*^2P1#bz4Tgg_g(0q~$7j(^q z`l?Fm*%<5+JWR>C6sPI5mmt9NQmVOYVqdrfsh&pfRhOrx`$EV30c&Qz(RjG70P8Ad z{|TaMxFM%$o=I*(;K-zMaYtc8Jy+7nxjZ|S zYbK{nt#PGfqN%m5bR3fQ!w+!VX}$1;C=$6qB@UO0$lMBsX3#gprMjk!fg_E$wjrk6 zVQ|)KR6h~7q{d5go#jHMX%6D0FWNS7r+Dd$woTk9UizYK6ZeUizG&OTZQ`Xb()Lur z3pcB4>Q0bNJ*x+`kR_J#-^|p}<9k;w)RFd@f)RK&(zILFk`*^?F6jzb#GFv5Hs5xE zt?CCo2SyM~aIeRifqMm{HRMv}a`6Ga7wi=g7eE_4FPDpLt?;C2))Q4QdgFqTzaz;A z%Zer$ag;RGt`HH*u(N2<0ytU5&-@{aJw<^`#LX-XI;{bd@vYm%s}hyPt75h;p(>GF zyy~TWmFO>C_0qmd#2Bx7X^oaI&pxFga zCQpT6XsU!BPL}@Qae_xyl@&NEa|-KbjZ{N%7gnKL5Uq`Z*+9Y|Lti^h@N1Y&21NE* zt%+7YsCn3MJA{l3He@rZA+Ihtt7JWfjHJ(u%9uA|>=&&}t7=ANOyI04(-NCedA47s z^_ECm6Ju8Xib*043JSE<{)-kt^X=XGIu zt6>?li#)wp+Jb~dpI&-u@fl;C{tL5$k5QuBFSu6&;r zva#p2twsn_RDf7KRghv{X|F*EcDMB-@rZV~vluItpYP$4BxNC78UsWZvO<@8o-2@2 ziEbBQzoHWdaP3kk3*TThZvV>ejgPN+F!uY#(W3F4|M^Re0Y+Bbzpp3b;{^)B_4ZyB zp#wi$H!%DO{cjOu)wUe>WJBBKo@^XHjO)I{ID*L0OB{-_D2(Em38}m$HJ~ZOW|0hr zF@6S*7Hc*1-grrsHC?0@rD?A~t;D!ml^3S@P_zcxG!U6wg)hU@HApa#qSwO6i_lPC z$B|3B+F2=j(=k3poYT%(-Q2kSvE3X0cJ<$=({R;=LSSdkjAmHC{2&MD=Ws@>o&A@Z z#SX`c&4vubz>0m8+zxZ3JwZZ2^$GSUG*4A<5*Q6;y4A?YBgeM)+pHizWe6rfitvOp zf{7z^PlK9pos@3!N~o16O%*O2NLLvcoT?jbopm*GJ@dLC2Ygo361c6uwV7rC;mE-t zPm(j0Lt^T*KA}6E;osd%ljD_lO=XABPu$0@Ru9r7g(bt=^W{0#`n!=MVO~7*L;T2m z{P@hYb8t*yUCMQk}mOmM;rJDSyBfRc505SApuOC}O6M#vn;SEd&DX+;7W+j{69lFc?| zBMYr6%e0!zYPOiImJ782{XV$?8qxw}bWjj@Frhb)dSg7TGc%f^;m=Fa6lVii-BaQz zc~sLHLT;X!-MLsBFc#VE{KS}T1i4do*!X$VXc4A3F68=pDNS-)tE<=>=I*H32stuk z>Lw12HWTuqB-3;{Z=~+15*%514(_1*avPDXHTI|SQjg!ubD)6Am-g&fTnZ{rE8lb~ zc6h8ZKkup1aca8f!VUQhVN)~9ImnY$$kwtiL>(cV-XEwIW!8ht1(eZ%=B<)$?2{FS z=xe0wmlSc7Y>7DDC8&w2aadiFI0KrXjDt0JYZQzof!}GER4-+Xp=f?lk-&=97Oh>g zs%vgzLsdmyZl)7A&{>fUQP2KPS+tO>2B+BNFeS#trUI5E`~wkA2os}p0O6$M;FMXE zk|?SFrA%5r;g4%ptXQ*V`3hmExNYg+#;RbIuX%8O_r^InLZ-iPwX19A{p(t4%iA_w zd*Ip)ZQVDX+JEgcds|ocg=-e{EF0;XI5u=-t609ad(ny&ix#Y#eA-{^F)Om-Z7azs zFK}fBs^#*n*?C4+UF(tq>uSuoh55Nw$&%Byv2Wq0w{=$aU)Hp6bAHyMw(4!g<#%pe za&TRBBZv_BHDX_sB{>)Q1f%RL>cVx;MJ5`aT%rQ&FHeA*7^flVsd3s<@CaJzWlTa> zB)FRqhcyg6#9+Y0AnuA^Rv1sKPKlKvIkd858pT9X4Ja{b%0o?oZ#L@cij?7GWCT%o z$aOs}_k^C4dMaOdr#LquD=H;vzy)~Xhou{Mq7Hv!e_eEArQq&8`khZLyn4%$f~Yl+ zn^WGnxHYcg0i568A*n2UT`o-J=cxOqlT ze|P)sf?M#!&Ps>lvC5wluUfmQp>lGryyNlHryob(M1~AM$d-Brh5#Sa(syKmJxg>^ z;#QuTloJdxKtpcnFRn^@!SB-XWLivUL~?b?5NJot?md0=h9!Kbfdm?<9@H7qHk{8Zuy`p8jC6XR#&kpl!9ML z)=$Y(d45baZ#g;6rb=Qfm!>3Ekx?>8M#DtB*`&gl7rj*|Hi%KJtu8Ms=2x<2XQ>HG zc#LX1H3`2>S9IG2#47M>S%HYeKrWvkB#s`~_=a|&*r4FaN%CvSHz(jDNcj19wRVXf zAuYjyMKs0^;6HcEMod9YG>Z&=`n2IKO^c*Y%iTyO$dOJsme}&xgVI@!<1kynz8$r% z5X^FiU^Lg`jsg-1q7346m+_pu1m<{~idw*rw((j)Gj zh_fwBm73(NMd}0@5{U+hL@`N|_fMNO;q!vKYV@I9C4EJiQch{@;@TWvUF*E?x+6nX zf@kege|aF!F>?l|&*-6Z{?+%4w{x$CyK-@JO?EKb);50kTJi45-D@`*GxHD*ES`Th z_5fd_6jL(%f`u+$(v!;gu}rnS6)B5cO6$o${n7Z_tFTU{z2$l6DQygv7ea0gbXCMO z)HJ17#M2x$DOdEblUy~jf9CQQ&Oe7S5xu%uX*8$}iL$3BjQ|wNJ4Z?9Q*`cb>P)CJ z?mYrsPyaMpP-Vg*@ZWq^7p=~~MhF+cfcEJE6)k%eEf?B2saH(qvwUveRIdfQP&P*4 zmJ1pxlpm+JK4`gfNnR}i9`adLw0v6MC`a7?Fa45@u|sLHHKHpVXCV;Yt-zUs6-50G zo5_fa&57&)5LNt20H2qxWrR-VAbzjkmnYsDIvP9sXyDU=M|M3_;b=WKDLyvukrGFX zxOMVl9y_%U$d@SJmW+QvPCm zpC+RsX{MK4R925+s1_O|uhUZ!b~JnI<7p(SwL z^JJsT>2I6Aq-xW_qMXI+w$!b=Ww%AK&x#~$@b$2EGRE#goG?-uJI#} z+KZtV0~bPrGV~U~?k#XJ6#L3bjHH9=lg0VBejO09={7g%lSbDgCgP!Lc+a`iQP_FQw_ zo;|X!@77lj9C+=vzP{UDJ8!a?W2zzfArDgk30&QUV8pHc{eUuGU3+CCU$w$ zS&dj|mkDB{BoB0@OZ5~N&|$tXVExX%=mksg`{<8ypL(QzRq$5-)5jZD2gTBbuUtzQXbNQ&WSV}m@brGdL(@XsLPuH<=FIRV z%$XIpVJu`H^q(jJaawUO#S|$L4g4B9{1WwFn&kzNHx_15*n~}xG7#V^Sw=~hQZpJM zQ@<6wCoxq&H9Gq`JVQSMx~6{uY(W14s7U{3!pGFa{J1d2X2Wf=3%%VPbDA3~%S%fN z@^XAOkIkd+pY8nGpeYK{vcOGG&0mT=wN7xH4JM@GuiZI5zH?%HT>7oIGMidA*)>|Flkq!r#VI?#J`Rja)WznNF~q z*RRt2CoW^RXj36xr2Pa|JI`zC~(a*GxxQ)vWi5W1u+kMkHG zat5U-#j}r5sc13fy@KtY4sdYh#MNZplwJsI$BdkdND9QW%qJ)K32RJ9(;*=*h~prg zKC&&g7x~qEl+MB)N=2#XS-cwgyTNcMr-h!6vaRLm;MLSfmDS+M z8Xh2boh-z*C0r^HAp5PRj?cIf0P>XfYjI@I!cD$3Kr0a+Bkl}v&*sj6(lCa|?+ZvA zV8{Ji_0g@}i_xi91xyX@ROjLzef+fW-OheJ z9jU9J(q9h}Q1u1z_rOy&8&R=jfy;!sfFOQ*CVt5358#Hzok=`OmqtJfzw}1cBh)u& z6{F=ZphtKECB>@I1Iu2`1r3gk8>l!n<8Gp>>khB&smxTona+;f()Q|*6AE2?xfj0k4?UT>^RK;4yYvqiE~-3< z8~##V`bU=-PTl$^{$H!l<0)@kP`RM5eBt1R!G+~5S3Z1s)A+`fx@~DuQ)Etwt775$ z4MPhn>c>8R+0N(ZNDVHB$LDFODl9Mb7nOGnb@ksc(&!FW`!CP*%0Hx4wy^7`%gvW)ZKq;SCdiu zf8p-Gi(iayh1oKZ#$8?;~-U8D_gZ(K1zJuwc! z!UCR^wmEXz;Px+dFigU5EIXOSELdiAY}SoNu{$--yA4OWBBlQ`|)FJ7n8e%9eN@Eh)FX_PVy z4Y{I}L6?%kk)ZDGa@GiD<6-z9rxif5`)HbXa$+WXs7?^gP>r?wOHIsSG&x4?$ZQYK z5aqq1ER_aB#xT;j??`58YX261Q1v#D&(eyuW6iJ{kRd)*TZq3(-4rdMrL$}b%V%dl z@1l7Ks|ZUeU8}T`aK=mRAX6|*+|7V1ifw7TIs3M0XS{-8XJO&@zuGKn+m;kebx z#~fY6ILZ7oWBsO2sV^kDi>8G6|LU@aXj+jvyME=+!wu;K)Bo05pTBpgJ+&;eET~Q+ z$^Kdf0J|pcT0Vw&g-W z!0qcZOOSns7X#6t6wDU_TQI+CZdtgb*q_6CgsG7jni z=>8jnm+WhuqIl=Zo5mJZdrMpAx59S5dU5T%UH7i28eTo1s%{mv?d6T#P0KbcYbu+& zXl_|nZC}HU2V%eLyZsI2wLo+4lBLCMD>|wo75>7S>gFXo2G-p?ST&`?EoiQ6udAIu z($kKF<_+zUKx>)rk^9ayN^78HVXwYoy?5L_HUQZjW6gYZ-JZkNKZv|8)$A<0)( zs$b56zyxRfc9sIcN|7^(5eGQeh_OkB$hON4LPo*1E3D+Qst9BLJ;q$Yu8&#}f`&1h zjry2zXa!?}WU%1IBWBo=Fe-9cn@7O8cbK^+n-AWEm?o1ErU0s7O0EE=te1!Nx1t=; zM?rF=mIj=Z56<1tlstMbG>Q1dyKzlot`Kay9s)j&1i>BqT@oVr6*$+6FW!cWYBW^b z_V{nL`)0JLqfan&b-tBbKyU5rcj}U~fwt$ZLS}WCvgv{| z^~}lkehbC#8;0l%@HT#3oHW9Nz|`9WX}LGXE5U*Si%Gi5Aohg1i1^aKb>V7sWhEE` zRR(q9v(WG8NSPY()e;K1O8Ffv6!8ViL8_RqMEvWgc&E-j?B&8QAetr;xYbghuaFn@NffMVzpTO=JJ zckGVj{zMl~Z-iwSZN?1S)X0*$G`%rIQ0ZeMRX!*%TnpNd^EC6KovqDvHRX{|u&A&g zU-ySQD1v92&o$W}9=}Oyy4J4pqhx=%oHNZ88~2yTT4sg?;zp{+D4a@sC!2ifMTIUL zZB#tUOiygwm!5`l3Iz+8+b8Ff-R$aGmLCHj3n6~WQUG1eiAAPUO+Eu-0w2R;byq|l zO@@$6?k|HHPP9?N3n3VjZgBz+ix);aQ)LmnLT#lghQ>%X$s-WxbY(H_EY=nszq7cE zym1#nviulwC$ywrW8yn$@S<`$ji((29-{2ls1>&mOPyhn#Tj}K&Qx%8B*DTP#7dJK zvsq2Zs=`LhxB{2$pm>sUwG?)d2(tt~PbzK&tF0(2DMqAKPPQ-0 zqY1aD5GBj^OyQPV#Hn|qO+(T&xp%)BNt$>ySv>f3e-h%ROT=`6c!?Y;E*DJ2kPCzC z_ff~7kl~sSnrO^N%$;uOtw;F2i@7pjuV&0O%v>%6{hDM6@smSNT#yI%Fp{O=D3>&% zG9!MeEKyloye34XsECxaC|whDw_-vA(YcpU7eat?1rYP08AIN8&||^c)kyK!zqohN z!mhc*B`V7)3K&w@TTGFbeAAGabT|dMPMaQe&Jsn3I=8w2G3D_KF|^dgYiII?Sn{lK z@f{Z_U*JKQx?oW%rbI=mb&xod(_{^wd`;j0-(1cZuj6uNLf99zt`uZ@cNIldYPNjB zH6#sY7|uam(!lg1%l09sV7E_AunTAQ2-$8SGgD{D8cXSpH-gDl6I8`pyNV1+Q?03U zou(}kI=!=R3r6VV$xrTEblJ?NnA@0XbZ1Ttc3SslHp!+&O9BYT9d})I#W-DhxM3J6 zMb<1^(%VCu(v}p$$otm_qgfJOvYawJGA%;rc`dGMIMz?J=yjSCEJv|xXVRxGy97>) z;`g#<8x1yV3RPtqr_kwwjqgc}mEh;|*~zH230Fgeo$$BmR2sy6r&h}zGex9Whcci8 zBB3-Q(Me*NNF}BCKvlezt3{C;Qx$MYb&vrku|~A|LWQw@D6JhyI*K?`MO_vt9!R6s zT3-u}!nq30;N@4OlX|n9O=BelBA+Ss8p<@hJ_Xkh-Lj-9u9>-gAr^@If|n`{V7)hu!|qjx94=nWe&>;dQ0Jr&qlaZ z!o_)-LeSjel0LybaG8bkDNy95!D_*?jP4hvfWX>bJx+uNpCL|E{5ACvdh!VRSkE4a zI*J4tZgJdc))$1@g0sdXY4TO^4rN3b0eJ{xJQ|a4q{lf`5LXFkh3K_zX4;Wl5E>7n zm_-C*rYwtK5xq^)cuKMn4pSN`rfaUbI8oy*r!EVe8Z%sWQhbN!lSj0bX-t6#!IQM= zVn5d+E>j_AW(+1mB;_!0mB|9p0xP(>&_|LwF%&bCpn&UDt`dI8r6Z z;n?<%W7~gS5HWqtm20v3GoLd?{A#dfURF$O9IdY(Z4_czd6*X)wtDqa~3X zGd$%&pCZ$eR8In7MS>z~SanCB(nS=3FRJ$l!}*V>*9u|U_uG+bHL*K}MX^)AaQTf- zSR4kU!}6rP`b_N9I|XIN8*G^-o8R#Tbna96WyX8$xmJ@q<7Ta|S-E0$QCCsXyrRi7 zwX%^qUN=%zHBu)sZ(g1^#%edzRBx!`!$55GdEl%JIP8Y=dJ$f?O8+b3w@Zf6T70+k*c87B-QC> z^}+1Y$=HbkkFcsZH}+e1q399*uQN0DO;^x08II)uOTZ_CZyM`>d0BC^&|$zPIC1ho z$SCDyp5mZ7dDI1W9D)40<_5WX@=Qi3@`LZhF8gDk#Pq7wWyyxspozrHbc$muKc;zg2T|mCQicrC{rXLo&5G9%1;#bg8x&Di+CAWJt_Jq#Vhol)XNJuTa~dX+^q_Dlr3Y5{WCdYw0RcA%-!Cy4O{So*@0d5w z==pn(lJEVS|NMsBvd2?cC-&Qh>wD@~v=t8J`YmQpNvPbvY;Ep>t49j`Ifc1?uP4tW zUnW}YF0;#F#~Lj!56oFw9edH?b33zLre(eU_J*Kn3+0(@W)Hu!a{0Rp%?o&#_6eFZ1wexz1{~6*QHV)aF^8?i+IRLkqWd zbzI(8ZiY=G)8i0hG$#TJq3;IeIYdn%M{5~8vp$Gttn9c)n5+ytu@tz=wuc)I=%U_5 z@<1dUEP+v;I-cOfK@=aw=#eE9huvT;*6iNGKbesm&g1oa>mt?V*?#Q3t(i(|etSoo zzZSQy1{ZEyFn=_ni69*g)N5~P1l$4Yf8%^*ZS3|7P zeZdrc*y2{T9z2@rxJ$Se2zLPCp@6T@etLhI-A-`wM$#N{-T~%t!u(>$iOM162YTUHAA`l&E&-(vZ`wqai%Cp@wG;B+j zti3E-!;&n^l5ER+Dt6*Mk~lkY?8J$aki8cngb)Y;%HDgAunL3?figFAvE?RPxy%FTfTH|G_v=C4#;0)9K3G`TSI5Vkli zP#Uq5MD|q5dq^1A?EFeB7xR_EI*4MDHV;<7h1~u48S6oi!pXnSf0Ckpy-Hdg6*ib0 z%I=>O=gVKlN4)-ZD_^u(oUQq_b1KbVlPVO*jc5-@YxrwbO0%WM80)UggVhTDocY3^ zgc9Wu&>lC}&pq1p2vJ5O3|{I0cxDH7ObcQdDQJ!^W}J8tcsku)G#=TA=N2MtTCK)H zDV0o}o@@jGZ0Wn|=N)frm7;Aqb=Dl_ys;bhbfnvtPX3d-Et@<3a)&lW0kd5W{MgSn0>gSEYs zZlSLZb`Qva243YCe=;Y6)a|rl#sE|v}s^9 zJdfq#xG5*ZtjRx6yc_*6DQ1n%BHFJ?k!qRdq4YF=^e4vru+3VCgw}b5R$DmVsJuYR z=0Cm18lp=ftF6#&Ft`ixR^j+xg+K8|^o!zjmW;>gQ2)jpQ?bX`iJ8VCa#%mxsh_90 zfz2Imm>jK>F)<*fyi!iHc5?U4@xD59fmx+78ZBDIkBxZ~$C5{5@rT>1JPPHA1|^{F zX8t!P4@_R)Em&VSt*;BhHe^&#Xwd0l3JG`07O|D=J|E^v_+c(dZ=c2!E=s*_=79TVpIyW`S$9T2k zyT?BiujVqp&GAo(S3i=7U@$43GY9>qxC2B7VXkGtwUzB1W|eB=yHAQLV8kZHJW_mc zVpIX&)Ucv69PV7v(72+jsHkg2VE^iG=s~cLUH8f0X zrGQMtV+x-NvmpQFaE08;l#jL-?1LZ+Qt~~ML?x2FK`uqHjo5fI`Ck{1Y5_49oI_NS zG{x?q{WIY-OfD@_TD!p=wqs82pPn z3=YK!5|v@KHxg_eVG@-o=LO*@eU3cmA&jvSW7OdcpDzy!2|ZH+iV+-=`6%Oxl8G$x z74R1te?Imag3I7(L2QxvDyN4p2+hPe{pmZ%fXEI%BL*kj1=0i=C!`O;33-ByLrei8 z0+VqnWO*%3rpO1G--a3Rg|mz{t;1t@@x|O$k}8>mV-MszwF<3IY1Cxa_7=q58iRo! z8EyZWGe0fmWFU=zHa|tn`TH<_8~Gm7pt4jDfO43+h?pRJL5W4u9aCeT;CswQ0U=+G zVIqovC#j@d`Ui?(@&*|3Pn|5#0#J!G^~XYf>Szd>ay8kaUX$s|a(Of_Zg!hh%7Ji6 zR_3M1wdJ%)uL~9vg?xe8ir?bj#QCTMy?-PVebrThXJtViaPjbH=>#H~jjNi_f=(DqJ&Rk=}S6)}{%d4AL z>#C`U>7yA|V~)+1XUjGC6AcN!tFphQeuY~ZK#dYjhC^@6G5M<^;b~>AETdi5k)5s4 zYV;X7@W>7{l@%mQb0d^(SYFo$RCQb)#cPsmYK5~4ntiIimZfI>AM@Xv_!&++Rlv;8Xn@|`=gvbAdXAd1h~tplC^G?}{1 z>)aO|_>0CU5<%d(2IwjY=G{=${^mdVnl{p%z2_msZpwRnQ>*VvB#XJiezLftwGUkyyos}?O8Rd3>3Ol)n(>g ztvqb9-s7!zyBj?Bn#~sTJ^8h{TkbQPNB{2qi8*98hs|$#F)iq?7V|QK{<=BfhHkTN z95+mM(OJXPgneO;f|h~_BGerQddO2G&kv*#VdQDEEu%+ND=O6v&<86w2{UAi)6BMnm9qdd z#NuSK)~ilhpcd<Bq}}RX;v#u`BD;SxQy5x<;96z$)!-sq`djEhxz$`Zyp>Rrlg|_hOQHqGtcFA$ z;(E@7H=_L3sPfs|T-4g)nQ!v(KdE#=ySkmr=IlueUO`dVJikgnVks_L$d=!N@EKHf zKqx1;iY4D+)&BhT9J|@1kzP=@3xIE=kKrVo$$RjmLUD=6vwk7J0d*Ap;`!A)9lJ~} z!_V>?Fl3mr4vYM#Ih23*Mfymw@>%Iii{Z0ef?M&}KU6w#F6);qX~ru!9#O~KD*Qj2 z(*)=(SSSQ5nh@wE&Xu0mm@N+d>#u7p4v$6MF8wi61D^)H-hd!{_P&tfQsE1%MGj|4 z8u2=T+sp~Vu+VLYB_WNEg5Pbi!)PY zYgfu6TA|f}7Nhepd2bPl;d7V`NrUC9(BdLRigVmr7MM&9yQXJbh5wD6*GITi=B z5#8aDm<)el>EZYuq%VVc&;%3DkT5iQt8)1R?3snCT;WyKli&2rLg9?jt5r|lz@C|- zI4HaU+GL@#4j*r#PJ?V6cr>PMJDt?#5}AOgX;CH4`Hr6Sqe>3 zq1*%|LqUw}l#}A|c*35-0L=}hH2J!@fpG#fk67sGXNmtCG1t2;%!x#l4JEzRd3n{n zCGj4bupW8BVlg2LT-W$dmzz+TSC#)GuFROj`W*Ss`yBCv|Fb?TSul z*IV5g4z*W#cY)eOA_awoLRfm$8uYw=lreJEh2g0sE?3FaaA9-Y>5MlQ`lC^Qu(+7N z>n&5}%QANtxbq-$>}N8Eg)2yUiJyR~iwbOU2t>%1&1J#ENT1CF5EUg@8k;?D>XVod z9IqRS@;C0%MI(ayI416#Z)X~9`4*B(Y!Mf0zG!crSi`#v<8f9=fs z&}{m(gN_mi&wGmVg?i;L&?;g{D3i5@E>l+Y<;;nL(m;(}TFWjGq&{{@zKb%`ja`!O zqOhv5OLW)xH{3va=={eE3s@$ZN$9IkKRH{NGUjWDx?Ir)U&8H6HkGIaPPyo5O)`-a5KkC%^mm(v66=2!X$+0FNvO z6jE~8W3kw&FF?CfKO5k&D{f-Y2kE98XuuYBjp!5TBK)7^>+_$0F*8iOP?-lyXeucc zpj@(K!G<2HO7P#0Cqsrn%i@}Fo8O^w=seE6+?LM9>#I)@F8c&t%X2@H?iPmN9pd2T zrSKc3HD@iUg0NFqm0`!wDKCaDA;#rFsmJA2)P=ItR z$xg*X{3p|dO($D%5!K^1spXoJGiQ8j+>Pc@11l_9v$j|}?o7?*me)&X3by0-LT;<- zdc=o)qLq&r7LO9jP+U8$qDSMBv0cC`Bgw3k=ZTpHzfq+2b&*MT+WlCz;o9E!YfxEh9#Tn8=Np7 zQxYL7P%&lZ%MsO(?J2;)t0*76TzX5qQStg$)p!822cxobGd^ZOde2Yh0`7!Mi~KlV zy+D44*~Q)w@XETfnztgTwW1tO9sCsGUFm0fpI-0F5q|0a@&-TuC13Ww@MZ9fhNhK; zqn`c+vu5=zP&`DmwFU9dM$jm-g+z$|Qty=6GjNp)Bz*-8IVv?wz7Q}1 zWDSBUUvaWR3ny{BZTl(nt5)BYpJB>ea9C#(VDJ zjW4g3eptWpwvmzBH`dp0ynSTkwvF{-&j(v?k^b@8#*MG>Ik()x>+$Kk(#JP%Il+%@$B#Yd2-8Z?{Ip{oZ@?D_ft-e`MzVTj zToe_`B{Wa-0cY|NxS_#qiq^MS=q78UCMz>Tp;o{-29Jq`3^gb_)MxrX$z_TgzIss6 z|J8$EF!}88XPl4JBn+Bax{*cncTggGx0CSHTcL zGK{Q{zm%HTg6uSuiRo;>>I(++5G%A9=1$KIGN+T#&cfAxUJ#y=+2=*@~* ziq|tTO56YJ3VU2yeSSf)OZr_P0;A@;>pV$2|B;~1iP+A1m*zQf{4&*fDi@apX*14M zBvD=x)i7tnag&s6Sc)(X1l6lJ**I0er)%j`i=c=ID<1jVfdhYgc!hBEsIcN;`uxZW;W^CvbokT}))wI6 z$>LlGygdj4BjQc&2;^KRrYQi{I=~e;0`O>8t6}G+%z2bQ1N|g}1e~?de|&GmcbMl? zO}*Fs=^E*+tKYq@=Z%tbciYx^d~DwKw!HEZ;5`4@`{QfoXG-_*^D`G*^X6V5tENbr zKYjPyGPSt;*bVBkIcHAi?k6q zL^ZMH@KhaF8}Szv`KhM?s^Z1^HQ}J6rv#Ux<2E+YJkbIt5v5*Imb}URqbP;?lW^GZLR(6Hf3wSu^(B zws6&rBZBY;BT)ok&hBQUAlX7i6 zqj15N+`zq*$`Mn74Fs2DF3$?C#9)0gOz3f0Iq~v|SCG7t0DDsX$;D3rPcVg|5?;%s zF+dv?gg8U#=~Zq($+0eW7iRFJo00`;s@;h=3M!^I@kTm>>30D{&|55)21|WGVX&wW zj#Z$tF`%L2#I!1v4-5I1PVlX%f(s)~DWkcfIy+q6=qsMt6!KKHqbPc1K?eVZt+*-F zb(Y^hWA5DWyldAtweGopc+nN*NR)eDg3q-0Vou>rN7QEt%-laPYfD>xUdtKX(r;HA zyiR@3jA&EP(01-~+s^#aAa!Tb{LhceL-BdyIdBRQeliFHD@Pvb2lgHd% z=*UO-3TDD4{S4C;NWmf4tLkyt2ziJO`1)(74AkcqP3Q- zEBy5{6V(fo{$T5Hy=BWtO>@OSXCjOLb<=Q5!OV+~u08wd9ksJ>_{BLRhx+}4!pN3e zhl}Gg);1-FD%JMy6rbH&GqvQ5d$!kVrmooEx#ih&+m}B2<+U&K#Xmfwe$o2Gy!{vj zmf9mdu2`-xaDHyaldcRUs2}+$QYi;W*YdzA1WBl*QJ0W}>wrZJbQ0n&T_rbCc1rLY z79BVFIbR@TRg%o46B(UUV#!mhj4X_#wkVd{=59K7s`P=@AFpleFAZw)%EKeqt#32= z>*9WGMloEWSAX=6_g6@*{1ek3xbyOL$ze-@D`)u8&##_#)wNeN$Nku-)yF?o6f2KF z7nsU5Bx|R_>Q@2tADNFPtyu(C^wgro38kCT7%O(W>{euqHmSfw1F40X#prXm%F63I z2XFpK_0%@zy>gI z#Cg();H;$Wx+A5PZP z^yK<-AyaX+(hK4&@abv}xK@;?6W{5u3ory?_mW&6!8oeQ;sS|6R#Fd?OrD@qg=2>0 zf{-DvS``VEfW9CRiLIi_RUY=wo;x!ca@EXloVTgjx%lT9CViH!u)TKPf%(zavmRU- z9ZYQVL|j_oC1st?6R9oq&04Z<`@X4_ef3d`yQyPl?EK58>-?dRA;;(Q8*@8`&zZI6 zdoRDVEF;U{@aWG${|)dpZ^kcN`!9sqga9k zB($e<5Tr9GVJ_ChNZlZ30m^sANv!1#Xqey0Y75)o3`*n{N%< z!WxUlV$kE+tb$Aum}SaVg?VPV#Y|;+ywPG7m_d}6$r`^@5u7r=rfObO00D}jrr8x$ zbCV&}SIByaY?sJ-`Qim#T^GD49NP83x|j;Z+T{r8lt+WjL$jYIXKtRb zMk4CLP;u%i{GEcH&K+~L1*KEM<+Z{;isIA6=JURPXw|K&D_zlETXC|mVqjX~{5ds) zQ-eG&{Z@KAKL4!gPyMSzaf!FoYZNNyHuuvO>zI7jjMW!-+7x(1GoD4KcUp9fz9R;m8QeO+%`dvJET82by32&r%7U8mf8gN~SMC5S1@M zz9n4F1Mw92uZogmGR`|T=P3#Tzbm?hSE%^$TNv#JjlrDIZPh5=lhor|As2!JTre0Q z0d{;|7~&JkgI-0*4^*3!Lj(Ju_znrEMSaa>y7K+AtLFMO85h(fDY~p{B#$@OC7xp& z)n3+_m@z-sSv(Max3)_0?&zI!R?O%S_Kuc;0@2>&6lTnUjp(|bupc>oipdhPDr4iU zs0gHnuY-zmg-nQ{l4S_9Yw_+&dk<3-RapICjyOdoNqxY>M~RwRSjTjRngZ6T-X7I(yKm z^VG~JozeNz+_Kh41Z6Suig(ZHxuj!8wm%rq2kTAN=HUwm!vhOvxC=J*MLL=imYVod zI@7h7hZ@X76IYUq`ibs$0v-cfg`X3|;z8^ZwrOD9=DEiD^3viWu8D7w%{kvVE}6Qd z<|0qPS0Py2Ux87rp1yf$JpMLuS{l{5W=q+uWbe$@z29E*3lk<`xM6;6uBU!p^(x__ zuN_omXkey0aQ+!ft{P5kum@Z^cj?qnqCIM%Wa~WFeEi>v*Kszgxcx^;366kNOVv_= z(4`0?EA`9Vykn4J86cGM7(4wvq(&xv01Baw!f6L5mKWAdei3dWBXhtUwAun8Uxpg- zFT_M3mnhO?SB{?YssvfyB7K~81LG@R#p{uxt?F!x%V$Aex_aNC{h2zQQu?(5M#ibL z$_yc|)#9x!&Qraia|Z1Sk9eNHRCDng7tD-gud#Y%%QX_;Tn_rvps)jv3laK(!SDgd^dvSz#l^}qVV|)_D18b=iK5$77%ucF zPgLZX`sN)|-(*l5irbE&H7tQ_K1@Z$JvBb*!=^KjY+wHP!Rbv~?pQYcK&A8{Ur-rO zr;zm~2b<1#U{?#3i=iyCrBP`amJt1{gKqW#NL@Di33Lop0^Z2TZ$KJ8C5Q*D0O&@V zSh?7(L)sNxNEgh@wU|I5VcmzR96L~D$zd2f#6U*iNEJ;p05;viWp`fvx9yuWj>24_ z2xf58o3$;S=fALJ%h3zEX5IMPLt^!<_ewv$>9&%kbEX)6bdJ_#)mPoVcK!1Qd)m%B zx?|6)2PwlNlT+`4oL9oZPp1U)I3}jT;bLrFQGp3gcp}j>CLF;me#*0?lm!f{4QYF9 z$VwG&E^S;`?+(m7d(njB)3|NroJN21zUR-}_Gp{v%`w=3Vymq=Vw(@ZxB60(DS&$ITJ|7bZwv4R}xH-{NbouD2QBa)G7Ce;U_e~9m78FiVnFFG=`^7eH#yxAE` zhC;m!Ax(}!C1hLOXePOR+m5Cye}2J~s*%eUP`q=bC2sdjKe#fnbm?%y?zKRp61W=a zapgx?zien4pom3m1;^G6q3NVP63b1Wi0Uf9nc-lLnm8w^^Q0hQF()2~6iP^h9!vnD zhK&2z#7l2_DBRQ&aD?*=l2pFrg4yejoYS`Ow%?vBN&DZqWnT5j#k1S9#4MAhwLjXw zz4IyYi3i&^^@a5Xb&cLhqrMw=cZ?ycNE+dVii>8NGf@ z_s-cRI3*nEC9=f_T)7q;#&yz^)9K(o`6{;#FNcXT@T(c6Lcp`V%jl`! zE-yUA$7b#7>)kyoDhSb8yL}hY2-$Ih_X>XC=LfPc=sV|6R0w)>o3-(+I32Jm((m#Gj>QFLr2l_mI7m2tm z#0BH6j0A#_00C~$Thc=An20N$AmYL;n?lhMP;G+#CjK+a9?DBB=xfQ{ugK20E~CKn z8sBxj&gF}GLV__8sTu5Rw4bNYW?V@>Nl)FCWz8>gU(du|Lwwd$zSL7^lODkVeUl%_ z3)z^|n`4RfR7v0S)Y^FXf{xZn=hzDD0Eu{R82j??*q3n*dHFo<>?{PCqzq?iioozD z%mm`voi^75VlWQA!|4OEX$pKNO`o`t@=0(!_52&&+97>#&D$3wj~eo9x@#`t&F$;E zLwciu&$hb8=)(8+HNypwpQ4>{-s9^9tvRnCM_O>;3ajF`U*%^;X6&9nW5e8zVwp-% zzo)>a8dzHx0WYSX!2(|PTx zY-J#n?=4Sy3ak8j-puR$RfYLe%Dwra0;Nu6_hQU7XYM__Ve1=L%yLBQ3kvF^j#*c{ zv9;msy=T^FbE6(j@7g^zEBANj7Pc>~egFO1rR{~e-TPP8>{;8Z@kDcJ-S|euHeo>d z5h9IID~2w>@eF_FljVnp!Gc1Ny&{1E96!M7<`(S^SPzNczpy_OQoj^n~r{+b4ZT-8imR+`(U={6ti9{|hl@tsDoW zSeuFif*f&N!(YK4fRCv)Y0|=8--dBBpVb^rFN0iwk7ID#5rQFN!2GJB!Sm)i6k2!8 zoa6BY`2!D0FB~e*iRcSEJNx2$@{j=&{Eckf&)~dif&Qa19R)&>s)M?ZN~Y*IQY;R_ zloP@f+yHW2Ff&@S-8wfam}q%zhH4xq1^xt(2Zm$N7??JZpINxMZE>~DR<*eOSHHUK zNBinK4t?+J(J#dhMw9Q6X(QTMkt=N!wk6kHHgn~DJDQb;|0G>S=ZX5|LBCG0y*r4$ zIc3|sYRvZT8NC~}_k(HcY3fC*Ax}w8zG0I~qefdDqUu1}C3w>xq6O-JCZiS~WLN73W`w7K~mfY%PdN&G9N> zX|mgFY>Erv;*d18I9HfEdS7la|6Hhe^cV3aqq!T4!*lxMpD3m&pXKVg=O}-wLg~bM zq-`_Nv7{EDzo5b}*?|}{}&H=$us4@xF3xW)v2wnNW`PX zMU=bFYW8JdL$DYqIxyo#E|7IHh2R*a^b@r|Bzpsq97)SGZT3f(?0D&5$NYhk88x2H zi+^-(*Hs6%$L4GNmfYl=Z8Oh26lz^o|6~4{J?HM;F>R!)%4*BgDZTA8tCwFqd)eI; z_GIsZvf&5!c9J6ftsF~XN#V-Pv5qn)|Iwm(Jqz*zc^2kgpY~(OCtbjbd?=8Xz=Y`- z5%Iw$!jZ`5@(jfWB^^g>4wyo)D`4PB?QWQkv020fIXS2@tz|YTGb`5{vi^~ev9J8U z*;nP^FK3HODz`V+jRcSV)ZlT!qx{${@^>+o1AH?@6OcpoFz4Zr@5T*VH}P2P1$Y(^ zb9FEe3-k(`+7R-nRL->Th}@g8t()+swyyF#>7#J9UHZG$l^?R-B>jvp-XB6`*np)T zg1&UnF*Tf=7m5_||6|EDs7B$df~^?jU-K7_9t|b*hMsAd0RH&s@sE{l=$DO~*7XRn zB`e5Oih5$7$!2);%LPz#{0B@R?LvVRYd@fYC$0XVAxEilFwc-IfvvR+062M*SJ@`L zC0(sA?-*FWx3#Zzx@THTQzDQdKBjnG`b63$eRz1#m+N}k(sv_o;IH9*h($)fG8)h? zEkvbla?iY(V+0;C0+gT<1RhnPQc4U+yo-werkTLxdx#6j_cQq4uLNG`BBl_Fh5|kh zV+?U!TxJYer)LZ&jn1I*v@fn=eBzhCy!?mf5TDpL`o$>+d`iY~npqhAw#?%)D6UD% z`MEW68h|`?7OWZA#b9+Hkwnw6qs2wEkJu#mvrzJz+=|t7m->`NyTQ4*rMk2qsKXs|5bIw#A}6>7##i?_y77j zn++&l%4Xv|z0C#$X|m0RCxpV*I&6{!IkS;wW7Xl?WObPUAnGK&p*IC z!cO!O6E-cnbXi5kvP&1eGxyM7S=r#BxxzZ;4>rk1Oy>DYilsWiZ))sRGruYD>@mNo z7Whql8-7!V)105q;`=y@lf+F0%3@`L^W zQ8fw$VrVQ0;7z=oatdru&iAA&AAQo(IeVz8uXTnw8Z9!Gk3PdYLoxj^M@a9A{#IKW zR384y-!iAvgu|(}6&0)y{~d5k&e)>(;)VQs_9FE8Z&;a2VXt;^Q;yitW9l+l+EF(U zeI*qft0xFfl5F8e3PP72MEd&tC#XmslW1htK?pr1iAr;B8|bk3v%vNHLnY44%2=aW zS}FZw^r?^GMaS0~3v}5YqvFl28&%mB{Zl2CU)`!a9B?0dF1De*egpaUi(DmypMdhc z6kY%%+Cpts74TKhR*Kj+&5G$hz}?i-}IAh+kbM?pz?tSl!G_@ zWc#+C+_YGEKjR&c<+8CabcEuNpa!}}K2ppT6EuzaOOaQun{hQAM^&H5oosAK=>9(1)exSkLj6s+)iRizTQJs`hC_5Y{z;EZo;Q>SegE@^ zA!5FZ|Nn{FNY9$$bv!E1TgGE}w~>Qi8_UJuNR{zSt&&{RlQ~bz%Vgw?tR;g#Q{|ex zP}FS3V_2-uKTo%M(t@QHO~A5q%D2(>NqP{fcF%`0^#7y>Rd@~JGpEvnq*cPprzG-< z7yl0G4!saEnCfoyE6A%cN3h{4eviKs^)?q*mW;zS4HHOun?m6L)Ihw9n6<33F~025 zxn$0y{u<77YITh-K4mAtg}{M$&JEo5L&)L@4jI7^07=+KI;-4?0{D`X1#rmH{sMzJ z7$|~3oJzMrbtGhtBa6b2Uzv|o6_VY_z62x&$7g+U+Ziw1x_3c*=@ZhiJ06$5nzud6 zqR}}t`N`J)ME3=2IO*!ktgy&JZyha2{7YhJ$d+<{U=5)~cFHe-OLgNNq5v-tAi z@+^DMoe2bo?J3BMK8)7{^yT|9A`E#^4H;XF`t)Q2qD-tFl=8;*VxYGd@}isp^c!yU zvl~e^4vfE%#4h$)Ft>?srJIxC)7^)|=uCA1I~?~C%;_>C*|9lhjzx%grS~idVkKkM?b#&R$h2w$&x1k zA7B2z-(GL{n8dR`weEXr^QNcvwc_ul&G;(}9s0|?i#NU|eSFI;(#PN3FmTtOFBrWA zN8~!1+v6XCUVn$tmk?36TpSX}B(KW`MbdcHB$*+v znQRnF0Jb3Z&f<%hiVo%qxC(i_{wNESi`xXf^s{~O=>>m~#jLPy?i&wDE&K~T zYbullqi0bUK!b}gKXb5`Q!p_k6e$%;pgW|f@wjF&PL2O-eW8N&4JAs%^H0e{ z?&IeoBIPz|aBP+)LTU=bFJF4;mq*ZF@@ZWLf1NCx@2ijGFhZR==1_Hn)Lh|2GGl^^ zA%D!Z)ywiwl2?xR>u>Z^exLlb5HjIjvXik_;SL;E8)|BCMPW~#)vSqWqo9geJR(C0 zNR%_A0lhcrL^Y6uG@R&*r98%}0ye8kEevkkym8xyo4&Jf->f2qqjmnO`jNY~G?L5M z=A(ytYR-G-Hh!&MSrB{ThHJ0ALHhZPw}_uBYnB|C5om}y+RuGvQw|3saE1$iA z*ZuG;t@EO2BLEKIte+}kSW^>_rE8vulG|ungRoJZ1~xTxOmV15bN50hmtC4p`7;!I z{7f@<%Ae`!Q~yGU049p1Catav7MSZTb<8Vu0`pFJrHZF@NA&_%@(cCxnf1P+wt@0c zYlX*IHP>5OTsO3P-|nHhj`NRh+wt_CDOVjV>Zg#^gU`Cdq6fLg^P zu!E2;T1=D~1=LSw~q*u_uUvusuQk;TD4> z1&R5qQrjZ!8V;b@J8g#6TN}Io%I29me@#)w@TH5RhDc{kX@9-1Wy58?Qs2|9^#scw z6K?*htKJ&+njZ03JC=0@Y7Ock71gD)rG&n{wDlksPL0gj2iH$n-bj)V7mxYClfjnBpU&)MbsL5h%6j_(NuH zFzOKNihU1``U?sla`~F;D~i2Y!Vg~(w(of5hOLndsWcD)Nc}H&93e0@>!0C`FCF_1 z%?(5i)q3>xYcOip*J9M-1dN(7K(bc?qoynsl)8Ehqh>Zt+(8(%YW)ix-PQw!hERv} z&yG-o;efTf3j9(R zf5cxP{cmY8e_yOVM^_f+cZWREyB;@DUAKpKdqUEIaG5Tr9(;()J^rycjrm}om(0rk zZ?S3L7&iT%!OY|L6U>}6R#lXh6c>dnRMB2JXZC^>Ted75oYeo63gsx+3v2bNj}_IUQ!EJZXNk=Z#sTl;ln;CMnZq9vh zu~KU7THZ_7mg^H9N~R9Ki#m6iUnuEXT)OEpt<9{3d+Yb?^=@aeA$8FnNz(yEJNn5m z=L|B+cY-FMx~!Z~!^Kisf+P^+jB4S)oSAJTweRH2Ht8)Z1JJ_T=4ruSz2~6)<@oap z1yvD`?p#A-Xb$BzX)lT!#251mr2|E!w40>4TD#9C??Hu{_8R6+0X{wreL5L$2K_iS z-i#l<7H{^;9%n27j2&~uH0guiWtX+iS-P^Kv9i&VY^aR+vV^zA>gS|Sp554BHk z)o*x)&v}8-AoNMK9ev8;qNm52LG!;6YaY9Y1g4X)W|A9z>54sKdzX+bxP;1 zd8MZqymSb|r~M3BumrjInLob^HDH+*%*zomKx0JFl{Qb{ejn%cS}Rj<401}sq6R~t zFGN0Qlmk^JWdz!hfk;{MMTT1XtD`&*Db)X*k@>}Yxz*;M8S-`6`G%jGt8*0@Uwtmv z3l@b(KaR%*LwF!C`d8$9Dv&mNI)cFt4}Wox*>liGXs#3k3;RjRaxtt9|)^)RGKgL}w=jOB|)3 ziKG1Ed-v?w`^Yx@!#~z}!7ICWzj~;%^U$licfWE0d^u^Y*giM`XCK=F5ILA_JdLxb z*Im3KE#c69$A%I=!FscI5U$CDjI{iceur#dN5t+Y(v8vwD4+godWYEfJ$7dBA4RRg z0zI?sh$Dr2lm8RtsDivGY#`_x^O}Ob!8QoyWT6X;>7h0D6GOiXWb~UU3@P+GrLr1!p*R*`@B!v!V{qVT6Q&x{)~v^wQg-r%v1WdHD0BZ(2f z-XeSe?^j--O!><3)?}tdlLezAGAhWvV>X5ll1kuX?7&O?f+GMVe{#*A{Ih@jXL2i> z{PTpT$)#-a&l8>|tM%lcCp_&w#m^I-rj*2|efp$d(hrhT8U9J?pdsqe>HXz?Q6)v zFJn)RVf^4F|92R_;$_IT$L{CND0^%Ao-E8N)U zPe>me`28IVd9$zY?8S_JAMz-hFW=73mENlB^ovIRB{nY5af-i~fbT;d2RiT{;QK1` zmy0o$a#TerrxwyPCN_@End&XP+dPKvyS@S6H*@B%$M+Kzs<$wQUtXVX7i~{kFR}5f zFNodw@*>$5X~*MzBcX@-2G5|6r4LWhJ8<$)POvpl=T7XFY->0rhdy z#a#%!43)Ij44!R}hWMLIyOx)>lm;ypyH?!a-aX@6-`TkLwS#S>FfDXA^PFdGd+LlW zW(WMoXbpIhL&S&K*!L#0;FzU$z)^4!`F~;S) zO#IE#V#B_{n%2^w!)xd&UbcE&<>38icQv0ahbV;gMhtc9s;9Q^!O$HG6D=Wq+riiN zZv4)-W*{no?Lp`l4vb%e=z!DPCVc;?ZDQh$r?E{iS%zVJlW#uJHZk$OQ`;uATHqc* zErLjiU*JUJm=im!Kk-vNO!8 z#N?mC{y@OKOzUBQprBq&SX1b7fe6A*>0aDzw>=Q5U*617Tz9`@i_b_vx$)aI8Zhp^_%u%e5w3I27pGG-gtu z0Bq%ad97r9O13QgUua3_ItD4H7o-Fp_4y4-hYTybR%Vq2mmuJZoc{QTPfa#u;Tt^j+0J72L*xK=qG zZ6ZzpauHI?qGgCFb6E!f&2#Y2nArGOp3_q_eu>SkS6=3@6}B#^ty$6*vfD3H>T?wz zW}w7J#1^P4vRaGk0=5W>ePpD@tQ-~oq;~v&YX8)OSDl;ftD(X7Ryds%y)^h5A1u=} z!8?zC!XL$)XF_UNA+tfKWN^4AbKEfPcqYdn)kw-bajIWYx}6gBpYk!t_{d@AwCCv1 zMy6RwsSV+wqV^*~)gY$4v2!nRO{Q1hlM~8+UT`1Il z`JT6qJm%}XzS@Z09;s#HXg>Z4ibFq(OiDHBsOJK*i9*&z93|iZ1=WXO9$QGTf~~(0 zCwe_JY}x4Y&G)V$ZTy>W!z(f3Ofb5l+yYe=@+^$mo)miCk4Ou}SWUao-rS`Y6h)*mT%^Uk6g zZ(e!O>Mog5P`Y;Ast8B^L2J?OW8#PK52^}r@Vu_&e8^*#`E8zmN_dWyn5mMqUr8&`H5c_TXz1 z{=C8IbF`U!hRPH&7=vbGu6X^-M-JcIRIWCfj4Es2@@@6`@l0w@+{f=%p;S4a19qkEkp}in4_oJSl$L1Q(3Gb+Yp32YB^ZYtIZ={+%3VNQVoqeFm<0_;_ z`L%e*Sib@9!X5=skBkbm@)*S9k{tx2wh!0Xd2AAa$rEzz zZl3C#BK{ITe@WO-?fIkAXoQD4w+8R}JoT;|f!<|78VstWQH63A!Af|+elCqJ^lOag z&|A(iYWxd@m|xmhlvC|_mtOKmPqiV;`ip*v)p%EsZ)W{%<`EZ$ai9&ck6mwJ*IVd1 z+O9f&i?|cA9-McQ%;}$kq>-)N@1rvmNCl-JII+RhAK5BQF?5z}QcJhcILDJ!iJJpLx&X#dp!)yXc)=pt|pgZoD%+7i=FPrxh~Ap8CaI zp6afmNLRH7eyps@M-(v}CUUZ+vrvFW`JKizxQ zXCM4!W4qeu^jRN}wqTynPC457>%?|U<;Y6~0?`Cde8wI^F`=@m()gv^jAnO-+)T%A z%~&)1MGshgXr_JRUq1Nkti7Lp_}-=tG~=~C$X|puZkApZI0kNLe$2RD^(VIl+b zhhYd!$~^?SbsZ0>f$Rd5uMH{)vJ6&`uaW#Um41W&tfd8oOD% zen;8DeZ3_E0}EsI-8XjE4}Ap_&YeU#fQ?MOvskc9Haa*T!z zLu)i=DAU6Z2FHe-VK!>nurXdtSngQ=7nbdy{?BU1z!$~>>467h3o!7Gej51BvPEM9 z$2bSXI^mzne;@}&OVU&lkN7?LE}PY)QL989))H0}O8m^^3EGe>K{)6Gw#00FrQJl7 zbuhENQ zj%MMSg=Uv8eB?1))>*UWuR*_>rJEJ4%0EDVxh-jMSim}*C@F&!W8fr|Jd;X$*}+Vf zlPQAsEn(?MGbX16mxGb$_qC__o#d|5KhJ(T<)dVyf&PYm1(3$cIt?P9Z3`G}NY6_H_eRoMQVddA8WEH#Bc=B?0Jz~5 zsmbv|Ux)sV=^BRD^m5pU;a-X~b1D^PNf0(LGa99tKk>%3r@oP<>%<#R`Nm22oa$w4 z0vqZvc?Jvqlaod1-#`)x-UaL{&ty7F4~XSyrqnAu%wLn5&5i;eO|P$@BQ=}+HK(6x zX%*jz8TOd6FvF7F?+2UE>#|H9%rO7=ubF#+>py;hc#rZK~Ob}|ToU^9NpI1KnjLM*w|4d^ynTsk~ihHNWdzOwY?TL5J zj8;~yzIjE(%EdGDk{X}WQB>Jg(>1fCcX;J+Z^?}QXieF&D~Hz}sS$o2s)-dj%oU!( znt0d&IP!M}oyl%$io0Wlp=f2>!usj^ivmlhcI{nMZt}-mD}XS&9d(tVN|b^~v<$th^R@iizS{Qoa$eKlA)XY*^Vjn=03kH44NRUOs+Eg!FHU zp`hZzwLkm#m;YFK|BfkBcHF;G{FdVNFPABA{BoJt)V%SUS&Ob;j|7XT@*>=+NT8hw zInP1j#w$i4=Xt7PR0wWE<7wy;io_cZZ`MNwXI7?Ne_KX@>*xGsj|q38Uh8UqLw7f*F~A>Gl!`XUF7Vq%CU}$_PzZ|6;G)PIFc)k^6qF*|qrqO%IN5(*o=Es} zMa^%EW^C=O7@F0VH{r8zRZG*1eTzzg;N!zN3(K7OBvPY4i^U81UW_@5L!CAjTnZ;D z{6NVeaOz3?pp=oUe3t>aa3Ckd5yaYS&j`oE#aTd+q(9tLQeIwi6Q57I1Kub60PhR( z19();5AbKHMcbc>%$g}qbQHxnqQz2-Hr!)rU}=S?Pw|Quk%EUq(3OMX8oLw>2+&w zSkkg%WL941#nZYkSW#cKXj`%%tE{}mh0+(fx zm&2{#I+Cp`crLRaif#q6$bxXFI5ATN$s`lAmB|fb>M~HdmRCbGL%xW)DSS?$>>FNE zP=tR9!$BV-oas@ste8!h9ocR~6a~|Pa36|xhfrM!&VFK441SX>YO>i0Gb+c*h+pd5 z`kG~3k+KqdNwHu1GaYXYyF#tydA%3EwtenR=dI}uFMIf-3wsZ&pXYT)vVtq5_m4a! zz5edm)gzZZ`sSv=C-1mmxGK5nrh(=)_PYJu$-$(@T{~~vRSUyY>nmJht{^1lZfa_r zq7O90-E}?1hVp^EU3*_Xr=@ttri*Tycl*EY>^I~Vm~yh6OQz1*{0lzu;u&u|de!Rs zNdM03pI*KC*^8#vPn%X(+_$EwX6xFawy;WTBoPO4^7P}MsGQiR5uii^+!M(xGw3nc z-~@YKI(a1>SsoLvz&=+%6wJtwX*5L`F?-&6*z;s46iIMX885%_p*6A*@ISsEjX<2x z78Mm275W2(!A#mO|W_s@&Tv9RIs4P;!Vp%i-;-{F-28sp|SAzj+~(yjVWVc z)q|Ut-@d7_?aX_ZY`ndqU5#4M?!vl~>e+R9`PDtqlDcsIu>}=F2k(4-WaNdr&Rky9NjE`rW=cH(#(}dSvMCKVa(9 z>!syfTq&~ezbPYRr2tx~jKqd9+YGbEKuMuI6Y7OpUael;rGY%d63wp9NUzj?`QREn znEWrFL1S34K%&f@OCjo0n#y_-J>gJpsk`*VV8HCOS>!~|Niy^qn5`zYP;^4!hBmg4 zbPmOa@FXvxKkB9TQGFCF|}K5^n=(DIzTYHYTJUs?i*Ja>uT3@^)MGrYt3q}5GLC9FB;VBI;gz(ITNPxCJGrdm#-E(X3+<)H`Rw=)(7V*4owX^GH zmy%aiQLw=0VHh~l2xw1O9}8GU`sm0svl6L7snjZ4FfW<5NF1|4+dXlq^2-{$$Y5L< z84^_ei^q=&t^`wexf;Bjvi?C<&9|7f8gOOuvWAft z`I<=v;}&LSs6~#0k%B6;kA0yhzLX1a_O(aP^Rgl!U9v!^pOc{kmQb~;uPgZ(DN#8K3^-Ve5NX>^E0PSt*_Il zL@pOhlGUsrw^;ndpY#*EnmOqKs$D_)V*s>YP^jVFp~!$@sSpM*C6Gx`qefIJ+0Gqd zc0PK2F<7%K-A{gq3HT>HLx~1pW}p0wT2RcT#)M2XBT!nvG5vr}3bl8_V=9!&p{(*J zXcFvBxMZkQ>9-IgnV&RQS69!kp4ZiGt}vtibky(D5=W7_3G;~CfIEUu{epyuv7v<6g#-ju0V(RR?=Y|4Uc4T?lttOldORy4J; zxVOfuwdEOSWoGLQ`dpMJHCT#T>jKj%Jb}CfZJINr-=kzN?_5TkMo?)oKQg0+?}UBR zAgUpWKM$QF#4>Y32Nw82%&u(i6vql>PKHJ&a8VMUgoetYeO+DW3|3VQp3~K}Z>aL9 zy|@mlJDFLbyw?@m6-(Op4pvqU?rm?|L$~c|Eog{3ozaGZg2tE=xr1pRFXvuW_!VcN zKUJhTl*EzLr2w@>t19!{E(^tIbjE^$*q+M^ZEWK+rIE?fKyf4C5Y=4-E;Y{MS?@@T zAqZR@V!9x_nya8p(jr#bnChrf+xY8Tu_k{(Q{3f>H~k;x-UB?Y>RKB|bI#stuf6u#tGp{7>&*K2;oCDS8uCjjKY#EJkI(D6 z^AP*KwDJ!6?s0uyxIb3R`Tewx7Xvk1K(FR z=5Zsqobv%UYK!t1kl}w;G-<*0c_bbR)2HB+G)>+unxRM0L1`zaRcq8*%}xp^U`2}z zJUNZDD)m~-5i`kQ?P)Z+C7e#TLs#B4{=NIR;{M{lcPm~^YidGAdt0F~myO2kF>5Rl zH&ke=$uQO4^7zmqJ`fvVo57G2dSIx+5=dzW&6-)q1zn z8Ou$du;tbe|6yfJTEO$SS4O3`d^c^W>8cGQPN>47yKu_;H=h5>!2#RF+aR{Li%(qm z*1_r9mTolI!m02rH_dfdnL_3aKJLBCisPYGt>3zRci-W!U2>b=t~Uqa@S!=&F1Ofxv?}$6T6C? zZ7mJ;(S$u=jipA<5}gl6L?BHQ&OPOMqCeS0k?(0i_|6Gc+KU>@J&m|MY+1ieM?pd3S zc_f8S;Gd#t*37AsyNbCilA}Uov@3xRr$jj*AEn?J_A8ve*filDD4XhBwk(5{rsCdh zEL*a~g(=~Rl`Gwu*60p`Pj_WnV-M$64$No?cV2vS&>*D4>ufDM)-R6F*C*|+`i`0T zWNyU(+-VaocxIPgs0^*QZoRWG*%)@3D(gF<-!pDl5Y4AU2H{$DsJby2ZOlX}nv9W5 zbMNZTWe;D`uervX`Hm)1+ZMab?C_`3dj8&uNOjwsEmLRRyt`L*fw%IwZ9&som&4-m zlHvva8BQUG@FQ3y3S6PskWEA(mTR$3;UJ9&YGIJvMQ|aJUcxKDZV)b1>}ESR!|RH9 zYn5aZC(Dh~r8J5ogdr84mLMh;EL&S&A*4g=Z3DOO=$y3g)k}?H zD!k4y>++^1N6edUJv z%3D2|pP47+SD4HOi(NCcSLF*hQHC6nEQ~n7_0TKZ2z}Cokf^Abk$qE#+MN!cKXj^O}AOS;X2W-qG$7^=W^HApx0P~#JfGbueGep~rA z7o}OOKrMG3WpIGL2DA|ds#3Pr(Ln%n2;VdQ8|9*?iQ_{24OwHsfsT-?;yE^bh|iuE7~4$^jwO3yT=RYT_8lLt$HuP7=(lAOiJ) zsmTh(TE&cL7?~KQf6T0M42uz^I8j1#p#L!qh{Z0I@Ro%kUM+o%Z<4--R4Mj}?|Xic ztT()6_v6ibIe$FE+ z@h8&5?>Uk|r}}_5qSuDJpHutd)$Uh?{E>NwUw!rPydy%V(G@UCe`%VPO!hbMI#a-H z#JY?luKNMy>#!)+b5prF+@FfN0FPul9&n}DHAo5*+xQuGi{%FJG)V(DpzqE{fJ`czj`;b6zlb6lMf_w zK(CwK*E?-eS4)93>L_$2i%D0nua8A55YxiME)&WG33L{V8WkL)BT%7sZa| znUhzyzDe<)##HQ`Pmdcb{r|;3Wj4&KIkKK8ls(5#i)wyj*Xbt_vo+)Kcu{Ugpe zE-nTs-Ns!YN0KBsrJh%5lq#4sv7R(qtR7MZa3G@DU^aOlyj&cIm^ipdks&Ah0_V=nEYvU9g%oG9NmT4vuoM z?8=ej3k4;XfZ`fndsnR1HB>E%(m(FD`C*?BegNlya&k}4fP3+&dtiFEPzW%;_ z%kueU`=kZJ^FwfUd@|qV7jKVE3YRP~@_KId>GzcyE<%{LLeZi?CB}SxU2S!S0^TDrN5mG1Tg()a5it_WuS$;jO#5t_e%B^{?86gQ`_9^ z<(Zh)`0eRe*di{ivhmAJx~bI{PuoC09?O2qp((U2Y1MR9T|WJl>6cXH)h*&eX_$X| zFq4*s>)RJd+pVFri;qg*Zmi*Ns%wWE6PNhLOr5loKirs>zDe{N0A9<(imTWedQd*V zv0^>Q0$9V9PSRTutR#z)(=P2`mk6Kbv`ci?>A&IzXj?C#h%(N)V5@PfaeV1y#ls74 zJ25!;&aDd;-1^So;ECH7O24n`UsGSddRATCtkw1PYx?Vi)&t+aefI3zzklGGAKcO3 zf5#85S%3Y)RBGY%>(?Ek&qJgOz;z%TRO|+R27G9G=r}Nu(JEoFHi$9BYBL~&NA{sH zqy)7JUNl}fDE(Cw?v73LEax9o?EdsR;hjKR_#&?|bOB!tUs^vL53e9{hdiV~eBbvI`i|I5g&W90D*mbp`kolB5x>Q* zU;W?oeI8<#PbydA`sWPvy=Ays`~dT%;`g7V`O9GbjQ>BLKjW-xUfQ_f#r?Bp?SFB@ z#+R;{CH;Z&JIeV84fEQxI?~f~sb?j!HtdWQJ}_KWyF=Fh~XiwT1o z+9^z&q@%K`1}wQ!o<$R9@&NP&c9etzT7spaAWvl8BEEm}fB1;%!Dx?tE`RqAj~_qI z|8-*b`EIp;51&4Xi6lOOW0lQcj%zD62aqmWgAg?;;RC@6m64g~psfHf8LcVW1{)mnYv)eMVx4*D~l9ascdV+pmBOib)d0EUu7Md)m5!p4;sFRp1gxr2YGt~c*EU8~0aFlK4Ml=wg&1^QiU=DSXKHE1wB7fv zS^4=*&F@`s-h}g?*s|=F^X3IF&lfF$ol|l%ngXFIJ7+h;`?zdoRcB4GG-Tl)G?D_W zY~P!cdg!W|hj&g&&%JUH@V6sV7x)``Y6`RR?qj?w*V{B>pgek-H(~fB)|m_IOo=R2 zX#3D+6b`Izj2Q9!gTyK4p>!uwoDf35{^0nfEbXNqkmj7qtwP=<(BcSqP01-W(oD3k}wLvQF^_XZCHpcWa?{|FIoidp0bL&C>b95p%=VV*8@Dz@Y_M_jbdl9obT0)u{Bb`qb1F%^P;wjalLD{nafr27#LZ zS*3@pB7DR13YVMA`So{hT=Dqj)4TURzxD0^=5J3{OQ@59 z5zdBe{uHCNvltira2|F^OyPWdlot*fBI!C_sUXdi4umYd56n@BQ1qtwsopRoseO^8 z?HhvNsPPUx7OqtcUg>M_eENS(0cVByz2roHB6%MO$@M_?{}Hm^1l?~EcioE(Fx-@V zawxYAcsSUCuuG#SBG2McmmgAaW}r?E9_Xr|)pzDeUZdxBZ5Ar3USn;5+%1&Q9mD0xQ$G z1g;2qbOu5%nREEO?lbNz8ms>Kmszl~RFZ1qK z&rW5YJ0E?uVr*8@gG`!|9t6^k*Mk7<>>r~Cog#AHqOhKPj}HsNtM+8nt6s>z`r+5V z{&msoZSvn^(x@%kJ^aO=hS;2h$u@6y`Pi*DgsFZvwqh>p(Em;@U(A`H2O;;F^q{idqg2YyLW-4T#!cjALHDVy9hbx?s7F$6 z0a;K6RF;(=rUjJ;ms*2PKfZe7!-E|GI7UC2bMWQ0n;*DjAaZeTuGL=C+?{P*&>FCI zU9oM+?uni?@>p%{Eeb1*pl$s%v!-mC)nuLX>5j(-TXHLptg5#IJE2(XO?J#o*3WJU zy%}tpQL|!gY23uGILj&qz!OTGexbFJ?n424!gQwS$icyDVXMOW6NI(G45sloRTvQE zrk_LOp#u=GFJ4zFrKMthz`N^@Lyvo_lmX!}l+VrZN24<{LoeUu3`vjji^AT6;*BQ} zNXTePEfthOmtkk7KpzI1imsK+ub_XzmL#+YQa*`0 zMs4vUXc2M-LR40G$o9%VS~E8_`0NGkbB>(2V9Mp&mM7->s(cL-2Rge}c80FJWZn8F zFBZOUNp)09*NP8nHB&BpU>Pb=&Ir^MW4jaZu2uDJXxnv3GADd(cc3krRBS}6&ALJq8;<{4RcyU ze9YuG=5}>XyK!)8&(+6v4Zd{wWJ=JMzH0ByN#bA5yD&CkLB0igQLJ-;q_)Ma{y@XV zyEm_T`pOyId!O4p<Q9!6d5rNANvJ`GCTghJz#dfK!Hp!W2P` z>yH9^k6q_SUvI?qmF)h+$@B?E2%-^iRLvg!^}~=Rd(I&+z^>+~3cxKRG;n zhWlG^eI2|06wne*@Bef>e>uDU^cnl#f%{jm{ykG3zc_k)ow$DiyZ-F3bcW~m4PPeA zL5Egj}F!fsrD_l*6o#PtNb z{vOUz#PrD@FMcE0b zU6Su2kK<{V``>r8E;_zzjN56)N+t5J93bQD{Qan+uYH^-%a=PhM@set2Xm(;Ug)n)X$tjdm$9=Y_=OZgcM z^*V*ppql;m(9I;rkSQrF!~9hf&bJ2>S6Q}cU~*C1k4*okw(wAZZQ<2?)tD_D9zFSt z5AaZEYUAt}f;Su+`mV|H4QIk{4uyPCgDIKXuFXwf-O{nVGwi8s^6w6|dY+B=2Rp49 z%R7!-U9BTj>GQemYD?RK7GJErzov5Xgx28sTBwo8jRVikN1vPdI>LYz6<)S)%iQM! z`Q-4!@-|-Dyk)Ni#Vnq+iJXqj>XDxNDa4hZ@f23F^xRJ&F8z$BkoEMeO=v`CzgkND zC;zoJX>n$zBy-}O` z3cVv_52rjXzZF>(w9nD`U@Q2Y^b}+$GCc*Byt0vIjJ9%aMTLTEMAyy$6_O@id>z7%rmmeQc_e-@!DrLJ;igM*;IZi@!n@Pm7hvH_?b=RrxGuI zW>fj8#FL-dl=0?gwi?Bwx|ls>OQa)Avm0g0LVCBX=g9^HGAoo!Sx~5gz&lyg5w4oK zb>fT*t6Fs)qtzEo14C(x9hrGfken#i*>ke@))ca{e76KK-T(tw_DwrkAZ#x_ARx>cqEK2~Q%&+BEQ z8~OH_p$8=ecnWYBrI2GG%Ap?oyhKxVO{PA#*wNpLfI>`7!Q?=m(; zpFY@Bi6o@jOcQ^-w>DsPy7F_{8&^)Ns+_j2tz&!Bdo~Z&bVO;uQJ2{>&YvpO7$M>Q7jp|1K=&$^C|wLR&4 zaY=I0lEx<3Y!4b;AxljrQ)3CajQkHP>~2F%I$dLM+bcfsEGp#ZwM8Or^YVp7p4|58 z8HI4TFryl=Oae#x*8t`pvVf~DRw6=(Y=StJLi8iK6HEuQD%g!#RY8tSIu(yn(36ct z3&_iYklV(a0}(VsuHPY8v9dWNawV-vi@n+v@9jt@r>>dMxn^>_DR;TCA@ZD{&1R~y zl{H!Em_2FNsC-R*4b=;$WTM5z%?qxc{6&kGdhP~(Hs5(8zP8^ey(N|ELN4O&!nhv9`w24> z90J}DaqJfVgfAtDm$}?B?)xI~dnYq|_jt^&@!v5r{+)5C zKSPVh{eT_`+||fiRfu0gAJts67%KG^ViU%o(UdELvY?NIUU#*)_vBvsSD1Z5$PpPq z$E&#q5aMt>XX74{k+Cu;Nv2Y-haBdG4M<7QX@RYvQm%#;M~|1!5X_@C6GD-qRVzpC z5YGFI8;WVPRm*O=b2o*iYefeEfl>|+v#{_m!qQa73Qz_KN3@Vv=N-cPv-yjp$oX%d z|2{uywzQT1bldT5ZwP<5=fp35apIm6-~H|hQ0NwZq4+29_nZ&WHT#PO_$LG|7e(W(^b2Njq6$Ma7?qc9; zNbW?aO#q=~4fR!($+*7|C?Id9LZ{&X@uwrlBUJMOBpF4FFqdjd-g9kd`CW8JI_hHT zaC+~g#?9+jR7E=TF?BM1^)&h0*{_K=m>f>c(+ycvEH*h^+J{^6Q1GQ&>DQ<5YdmOj zxV4Yq*F=zb;%4rI_(jDfuv4jCsL&Cn3qeV^ltI*EL?{q>yMzhuLa@D#@Af)Q{sbDj zS9r%@)fnAR8sg43`3JZ054`D!8}O|E#kxjhOb3*JmA-%}=p5PZt zkKmn;asA>6#dq;|Cx@sKJjMi|M&PZETW@9tWkgR0y$}O9nqZHKk&{2+pY(S`W9@#v zHRd6*xnsQNgzz`LS);bR8&o zM(?G6Ju$x3-yVy0_@%dFZoF62Zj-J&=13cF&|B3Sv;L4V~jUJxOIB*cl>{ ztClqgUm2R*vh~i@SN~xCEwvZj{r1JrNWXr2bN$k*A9-`z#V78)u)j+2>AT|n^A4Uw{o`> z^{t60vfKazQ1;297!lM;*)0Md5C~%j$?m1tsWV;O!LE`bcBZRz?-?)PHahZ~c&@HC z=(ky@UNRYLcnZK^W}0#ikxV1tZGiJ2MhX*@W$j%pHs{taon~Kl*NzEUX}2X*6NnTG zSUn(JDJ zIyYX^ABwe1OEt|wI(Xv+uOHG>s9(@n^y}U_dfT>+Z2#8IHP7C@7pE@~(WxIOSBbAd zc&E5NZf>!^7uCEyCTLv+1ZIoVQOE+y1H2ai?-n$G9Z+%$*&oQ&Q=x^juQCnokn5h( z(Uz}E_f__V0``<61rG)y1oS1*$$T1!iRo&2k_;c0tXLZi+%_W@9L{7M5^2N)VnwDKWxv;pm)934)vAA&R zml^a+?_&PT=6FkGx+QLQr3;~OA??CvID}99o<^9DSx`2u-amWxfz?g^Tvq}KSpKHf z2WHRSf9gBWz^~*HN5wH9O0{6ubP{{*WxTt788W!=Q^GG$XJ z7qQMb{H=ZONl*Rhs`g#?t=V(pmU*2mtqb=psIt557VoEjNiROKDKRl0tY38L^lfm2 zLIe#<($nH^RBOResL6uBW#o!7{~oSEfhUr%WeBLNRAox`jMI=P*`DzQia_F%3=sGg z+`>OsF=g|?xrzBnaF8|VZkd^LtM=lzLvzOdrg(Sb9cyxC`!1uysCHy~@}F+lbjO-n zlYP+Ws8BnzJu*HW^ku~lRgZBVvhi9;SDKEL3MyG9A8JXLln=EY&YeIFO$4rK`50r) zj*(*7Sh?g0Q~Yq~{a^ihjUy4T@EcKlV~)wDR9W==4t3h6dhFu?;bH?IEf)Bl((h{) z*T$zO756$&n3qKLROtm}56%#J4jyeJ0mFbwWqH@If*XYINB@+OS)dl;f6%3rJ@-jJ zlg^iZcArvEyz}vIRSx?1!_xBvJkLsWH()>{2Jt45kpFN%f%sbl@dvtlEw&Ph8DJ2x z3DQoag|{E0Qwk@4$NyGxi1tq>8%@HLp;t^s#a9&X4Bgl_bi;?s?I4Q%GtJ2!nrM3KBuM6Mf52xo;WoDsJeqT(B zsM<$K6)oxwivQufL<_5y4nEVti9KGPN1iAC8U?9W*UFRu9+;bSNR;zMV7N#Hd1M#? zYI2FtzbatxJ{u}{r`_AH=>7D?{`-2oh0sx-F0fL#R+zQQ-{O5aSZCMj|E$;A>jK9- zt^SoXc5V~;v1e32h&Jd$4|)JNRkT=0omoOn`{aJ$Y(#LB@(~tWHr54&VGvfOde6|& zQ62g8MMdxEjvN?z{wy8gxx0sh$_c78c-~qxdE6F_f|L_(lb)Vcb zb^hf-9}VVi>3-z|@S=ya7cDj&u(2>+jsr4Iklu(BAj3t0=7orLoH?PVvO&9)6Na7{ zdXC=uY_Q&;(|>HxrrVEt+X8NgoTXUu>BF<`?5=D765h&a9R}v= z9_2*Lc~vnDBz1b@*#g46oY!TGC}{8&;MX)#zze3HPsxO@;#JAUlyc9Z%BVt7v$6T) z-;Rp9mJ3_My;UD4>ICJ)lV9ceT$~p()50x#3MYT}r06KDug1ALnmRyl-GIJ)h4lre zJ~r7{EayQX6Bqy-2|!-xn`EgX-7KNT^fKbxL3m3!< z61#=E#K%>=;noXV?tW6V7xuJ-r)8v}I2p($9Y{ryK~TM(+0w%hCVPM-?jbC3V0eJ- z2wT2~{8>mMLyrj4Y(&Z-{DgwzEXo4qQxV6dAl^!|)6kSx?m2mk-aWqyuV%z(-cTc= zPvT@y0&f=7HS3y1`;#Ys*Mv^>WOzk9C(~gVbfA7jzVeQL_mWX)$_40TAeo zhx0h)ImugGfPEmQASvsjMcGuyH#r@y4dodTbs$X3g>4h((}akVgj`%Yndu3)>@J9o zr%wK^d3`muo*2yr^@HRAt-}oUBkIs%BjTrLoC4othl%O5r5Fi9CICTs%vwZ}DoF#F zElPso9BXrETDq2rhoNUn!oyW<7hXQ=a*fn5nE{`;EKFP}%P2`AucuC|-we)XPQnX5 zwSZ*SCCOEbzOkiDtmCi{Qs4xLFyW)pf})4&?DfIYA{P4C;_gUm4VILP*4P^9{?ZzA zrS0MbENX9Ku(Ya&o?}bCwGM0Vzhdl7hQuo3&{ z6Ty){d?3?s{L3^5x&K2MF`&1~kp zuo2rP&oP8!*=mNf2=i31>$rwM@No@B>_)JFk^z(~rDGl;500r)4C9@}MV&UdM=W)1 z6Jy)Xb0+cu>s9%xc)%LM@Qf(grZ6~6+P(??>WEuYKd3^qzDuK%2PkkU#bLz)RS`aM zKkcSYGW?e`CdiRfIByn<-{P}m!VGa$hHy!-jRdZMNP;mYsdU1}UkW={Dh*15ezhiG zdF@wVi78TcZa6tlYjuSjio>?`$_kB1zh0x~eYgI!MwhO+pu%C)kiL;n85IlE6l)hG z?aj^l0{b6@Y41dDxLr`?#7*K1o6Q!q1uQk@Qg7gngiteL{gQ3gmOs@WQSpws)-zeD zM*5XohNKQjZVt7XB=fEKvc>?ut>x}| zF*1rCaRA~fpvqGki&C+^L>8q|TnN5lhip;VSCSElF>Sf+XK4(}XPH9CuoGZi z7BtBhE~vOhbgN#4tr?d2VgnK{c_m;tvDYz!2dr)aw-Ux8ehojvigUHqXZ5-q6$YI~ zrQ}eujb-qVfhRBf>hj3ALY6zkF>x4wc;od8ldsQNxpL0y$%QxYks*63^zb2bRh8nJ zZ2#uA*3Qn>w$1%O4wpW0SpVvyLp09r9PYQ+%yvjE`_ueaU9KlR8?g@bayCe9~wup#(?jyRtIv>iDtuZ zK{$L2n(4U!@h19!tqL^bK{Gf7Pp4UhLEtxYhz$6@%&E#b6PdWiq#IGPDsi%I&E!NiBgQ>@Hqg4&MVG|OErD@QumRk2D?rFy!r zSpEWu0Ns*wr!dgP!3aR>!ZrufH3^mThL1N4VRB!SSZ2!z#u)QGoFq8}Bh@h!6 z6O^ofWCcDGL3>6ks`)W0EdLx<;D!<2QeUd}n3>{g)OVK^+NfJoXQkCxUYTqSFj+=> z48?c%6sNdRTrJJ)xTAc7Sf-Q$D8PLvaIE+j1RE{VY&8|4x7OL}PAydCB^7bu*a7&a2r-V$M)oXGWE!(+!#xB{Mb6%C zZ>z0I#AGiB6>yM~^GaNRJV^p=K)2NN0nc{HXJ&1R=j#{`i(H$9e0ckMWk(H8m(~&^_a$NteHP-r$Q@ zOqz7Xi-YIAc=;sdY{!If`}QSM?F+wg-o4Tv|6|v#|KQE{-piZt*V>AF*y<0)J%wfv za6iU8gfVAnhfmTPpAOI(0Z3S=+#sTI17ZEcmV7ER1hmR>H5Nz0k-(V|xHYAbS;|z0 z*}9CLhtP&oV^jS>rO9u3aL4?6{`ZC(KD=i>U!CdSJ$>5l{tRC|e@=y|qNi6i0Ue)t zV0}A3^!KZOeBa{5_x<>4aplST`u8rbt6RLcUtIYup`)tYds+jiDXR1+9>(65=QbAg zRcXu_CIoXPC&&87PTh7^>$N;}zT(+0lYg)1U}Z1!hI+&Zc;$kZ^5mY1$14w?$+J`L zECT5y2MtZCFzNik!SgQ~926%a8n|QS#Hvw+&i7pXttpi$quJQiJyHWx{JFg)+_GUo z(Xx5p=(^|228<0sv&SEG=Nd3~8-W$R4r9-9gGEy^2B{y0*%jbJ0P2)+!o!$L5p&4_ zRhc6lR1{H>09MPTbUb9SqwzB~!9{8(EQP25kHgO?Pdng>l992~PAYcEkw-I6p=E_J z^R8T|(qsm%UGYSt$r_s2yD&fRs(~zT@0*3XlDxgM!)P&1oT_*jL!NZuvR36#DAyCL zkK0=}9$p~aIJ9fQihQ;3^Jg_3iSo!vW$u=S71yK2l86&l9d~olg!*x6DIfl@*@m4T}l6`im= zU}r!9ml|6-9PpnYk7c(f+<0>J&3Ovnr#}}SN-eI> z&utHHUNLcbHGk{A#~aPA&Rf?E9NEy^x#yvEa|dgG_dDLU_)+n@HHrAFi{^d)Kx>ou zKaYO;`P||u^SbxFykpN>*Z0*|zx(LhZ_6@mkXxttvf^px@1=Mo&<=cpO%5ijQCI_I zERfGa=^O+E$gW*76bSqLOK#4N&d!~4bGf-YJ3DvG$qCnvzD&)#cFn7+o42d0I5@wq zZa$cigOy+lw^VUl@dDN@q3YCfZLrDC?vU&PQHP0BQsF5w?zhy1VCoH1w+0 zSHJS5m!3cR)Dw?9bl*L9-f_!KH(Ynk{(XBdz4-jyJGXD%xOVmOr2`A*^v{?+b#ie+ zYjeExPc%$mIFLgOSsB{9>tFnP^u6j)_nz%<<)}7^QGfrdzmM*xfU|12x;h-HdAVBt zqx!D$AM5aQHGRpH{}@_Z9j4ad>buIft*3kGOT7Gtct^SU$?HabGnF4Yw6J`qP*MI( zy0QG&FPASWHU+DzgLu7)x`4lXLRD2E{CipH`(35){Et4P!R@Re9#Zrpvpj8+!tWI1rB80;e^6TT1|Q%~L5w`K4#RE~hil>-}WAp^b%UaigChx1r92 z$F+fnd~NAvP{61i&UWP#*0GOcP0OkZMN{CPqAub{MO~G$rKl82QPx%DoCgSJ=}=rq=aOUN&XYm0!ImQmD&$lA5sHoU6{GmhJhMHm{mLD z_*>`9D&wsE&#xVlcE51Z1f|ZbKM=MX+)V?Wg5$yi{>GVgCk@Ict0VGUNq5R~#l1OZ zu9TP-bBdkgcqUy8z*s z!Il0jd6nekMT*`3CvT8}xoE}xlQ+;C$T~678>UJi;;vK}cuZdy1E(U6L?SiD)LBZ_ zLC9UxIK~Z?!-bS}0}ub^rp>S1du8n!yTjkK%3P)Io*VhE%7m6;;w{yYjb$b$d2@L9uL`XKCo@8eCk`{A zc83DxYy`@CmjzB$`DfLrpXG+7Ur5@JY#}?wDcP}olx&gZ0!`qVugkKByoYDLF5gd1 z#4}%)@23Hr`MP{Rjf7+uQ=XaZ8sA4IwnkqbyAn&nh^-x4Dv~PA=7=~_kw$o$G-Acs znJ~J!x_9cN#I#Em=fD24r!oO}Y>n4q40wYzVRKjSl(jkOZ*MtLf_QsXok!iedhb-} z$>&~DXbjp5d{(6aM_zty_l$`hL){8>62TKRe;PJ_S#Cwq6pO+o{CVm;jIB?WFaOjHGCz?G^Iv)cG4MZmgZu_rg8frnl9vGC zKmSW_kVW3V@CIV4f8hw0(i(eH=d=RI?T$=&mHl%4 zU7MSL+n+q&X|(wxew#Npxr(nOew4l<+@!MtAeQmrEa?&c0|jdIax;35k~nc;$63!J z|JK4LQ5qpDNgE_PBp4LN?U5F2i^qe|0BOc?m&M|UGBh$eOCoIxIQJASXhgYHrp=%t zBL6{jUCV|o-Q5Gc-D8jYERmqaS)o(f)Y1=}fw^5x>oW@VryuKmk%Yq^Min5SweVa< zyg_(Mbq$y1rW7aIut_mnBB1vG;RfhEa6ct|6Y4oLqAZl_k3lgTAPl}lEZ}oHEfj*E z=F@5|B~ttoc(6kIKZWzU{hT1KGMyKQw+ThnUgT*ZT7W1I+x04`I*+jnW z5GE0sVLZ!B108U(Cgb1$y<#54rg#yiARq+nv=+ctdpRACB9BcwHjj+|(I~!>XJQu;dc47>T zgnict`!I6(31S@b9_}D0MF^vS-xwE`K+It{r3oGoW}v!BbsU6(sgHFn76slIRpw!4 z?vf@lzP5>=u=tJsXxcNqwtH@OZDQ*BiLvQDovsOLx6v9&WDBfl>{z9o$ zey76D@8vgZD}Ji8>0b6o_tN|ge+0h%AN0Y_p-!;@?oJvp#yc|L>ZnE3QsraRykc)f zFrOR{hC<_Cdsq6)F>gfMXK-jVHbcKU>U~A=nDl$z&VSG2csfw;a@YHx#$f4PTng{H z1n;V#IAw5idFkL9#rF0iQrT{?vEka)ayT(c1~x{7OKiaWZXY^k}4ShdrE+IW_=vKw|KFz3Jdk631vx+ir@bilMC?Ci0%1{g)p4NeE=oT%Q&}JyQiup975#|H&9cH`Po!~XLX_*cPKjiE9p&&B^5eVp z;E0QnT>k3k$8}3;812F$8Um+Eal7y}<(I)N@nQrMh0sT=91f+D!7xm6)CD1J<$@Sr~qi_;SS7Oqn+Tb)Z_FO^CoK@ShJiCLNAs zQ#je2u&!K|LUkFnDQ8yJJ5!Bee=csPLPqny&=We?16cTK#f5!V=?ER2Mh}0SV zexgMmYVNWs*C0H(hgg<5Ot$o5s(cj`1eYV(80O8j0J79*Qp;9a6U|BLjPiK6G387& zoAElmQ4{U?!h9;IWJho@&MZS83rB|k8%|AFg;^OgY+B?DSO!uv(S#%l?7R3CHg2TE z;U0lsMFD~YF)gA1chP_ms5vzR0L2L^DZv8&6OJ60-r|8vmbm>Xlvo<`t_kwHtn@em z{sZ}8q>1@(W`uqu%*UgNDOZ)cfh4>|FO@|MBpT|rIU>Rl>CLy^;wMOlZ|8qhdWT|% za72YFaoj(Z%f~v2*qa@E?Nh9e2SATI89jhQh>^-b%;?Je5gA*@JaRws2)`HZ z9Qx?ddyn5E@ZXo-WgR*- zKYDJ8Ofx$oa-hmCBfk@SicB@{+4Iw(+~PGOSug;WA@4}uk!LTv=lH!KAEu~8Kj|>| zp&fmLf0+1z;&V^&ff--MBwa81qMWc!o|(e}KQw$?rsFc{B4Nky?>INt`J#cAZpnLu z2MCBLA~PqR#EfK)(obkL%6qct#p(o0x>TZI$LVSj|G+mRQ#SRargb&hKUabCxXI*n z1S{?9@~eBZmdeTbI;CK?nlm+^`}63_an_gV=nGh`)E5Ur$0%HfL%0t5KxvIsRvb#^ zsNW%QMuDd;ddZQ@vjAvi`A|S*mr7|(dH#xY$l)}Z3`%Ro=j=^g(^5T~rbNDZQB4MY z5tMcL$(5FD@9I2|4?u=Tr3&Gq;pZTSL)NQ{CNtI2`?)>{|3Y7`c1BYW7>l)uTrN?W&7upKfvi-`{~5Gl^Gyfb zk@?;A0stt=@BcBUWjTwJyL;?JQH2@<4tpVaH zam=#D0>HwK2q#~W?s-M{zI5lILp&Wga9dpZPxkyUcixLg#b9{BWc_xkRg^6#3hUW| zSPJfBZ<9+TIOMAWMP`ZI$i<>>)bCi43r8-a2rmx3GuY_nOS0}KtOJLGbSBkEYAHhnLs!TTt+$?l|ygY{S9U@9NIh1~d zUtN?=@P)hXqPAsOSH@K+OI+&4eDH>VOgCN_C8Hd97ZT|BUq1893qv0Xwr}6^ApaxG zO{H{P_{Z>9;B^F+s>6(#`k{}NyEdc_rj zTW#Wer4@)Rhk{6_-wIsLpWE9ADvBaPwm_^Hhq`oDva%9(G>PO=?M8yNl0$@@a_L42R}h6rOMf=p8CtY=w%(!j z1^N3Tt$o?pl*qEZ^E5`aFU%_+Y+E@gVb42z6W!hFwPFM|hPP$GIk{Rl&UD7J{ z4Zj5W*izKl%*Zp+qQFH-PhoLO&_KA&r{b1~X-O;Lp_P2mq4&ka@LS+5 z(kBF3Hp^(`@eq$_py%`e>|p5;w66j*ht9;pv)>$iL>CMNboWb3_wMD3cAMQMy-pqb zwPL3*TeTAUiRuOT`M|4;QH9x`Y`^KI?aGb+Am&87Unq|7KUK}g`GIx@=v>f=z?USf zNPUn)ob493oPt_bM`6GsV-^3?=4BJ(@rlct$?vH+B3Gtp3tgM3&4RKt2#2Cs)Tx?5 z+sZL#04V$vjf|5Dt%OmDl@5C%9uDFRQ0b^V%NgJ_{aZ-7E1N^X#!8o~5^-V8mG0X% z9bTL|>Z+UB)HI{s^=x|45yjWaabpN3qqs4?Kfm;{>Da6S0c=*&FI$=?x_xWtM?&-P z*BRZwpYj^V>VD*=9iM!%L;B8jTmSJ7qT64Gekd#-{@Q8uUH-|An{L`6y(iNbbrptw zAkG>-fp&UM^CC_WyilGCo@9rMU&rncc0+i4@`>~=yHT2R`rW=Vsv~c)NnwRn%DS>ZTo4GdBHn*X1UTc`s%3UR+Y)#&5f9LrL5b8qXesJcGUW^) zTdSdfg9F)^3b2e7aFTFQX*4>=Abr%uKV$U43(}lx_SRS|!a3-A<-+

N!Fb1`B*@?h%AFK=45!CuK`5YJHsDU+Y^kb@gaGSb zYpJck0ZVH_7_XXF%P0zs4P?5<*=+9H_?PdjnpErY)K03Z z?{+$-)>lo=c|0&k*H3jgyQQIQ>7Nf!a5f$X-a$MRiUa!~9!C+{crX~pTt2UuB0Q=( z0^3il7{=OTCn(IaxQLEXNaw}h6X4&MzvoKiFx2>+CyUV&Y=M@}9$koLt?ZKlovk%mO%!t$>i z56~W!gb`JBEwknDOV2bL*pY{#d8c{rzvR|0ko%TE$k)4giAtxmj{#k{3E2 z4o)IgsRCvWN@w7ffDQ_-kKo|oXGJ0uY__A?U<*_#*D1+6U`<5vf94&qt0K`Xf=yMh zH8ddyjroi7njL?Yq^++!dH+LCue$NdpZpCG9Irh20Q>U)C_jAZjZkeM7Qa8~`7Qr-c=xFaz3oe|R)NM>hB+u6w z8q$K}e4ES71=m%7J7AQ}^ z8aYE#c-Y3bQetKh$cs%=eQvi_8!u*i``i<@&I@>G20D3AI~ZDHda*9=d=<3t`rg&1LH zd-CfD3ZfE51;D*3Z6+S|qQn%^fHj;Zt|cr1X2Dab9YNUK$+T5IUzZJC*r;Os^(vFs zfrMCXUDAcZi6)0O?`>`=xbw@VR7Q(STJm$-A|{veu-@%3#$s!$lX|1x)ES6bRgsCS zyK)OBq3-*HXh5-&52-OsoM4dIj!%TR5PUSPKOn&2Q&uX0&}oIJ#MTa#k5CU{ zmO{xkQSKaXdGeUqpTH*LGnsrby92n0oPDv8AQh)rvmx+;Z?srK%g$K<1zmq`(43Z3!jL zbRZ40%*k3P9jI|)#!W8HWpyMiDk^<I_9^g#`}q`3!VX{bxXP3i>ivh1ZaoNDryQfz?_ z4qoi5Sd(C7;x>E;C3XWJlRS;k#9|=eW9m08-*J3NF+^mOV9q<@f$d; zo6x>Ep**hB>GZm;*7i2Ei12cnNahj&E zEVAFjJP1oZg=K9=UNF243$VutiUH<*B;w#aYq6v)>2%Ug#VBx?%kpwWwOmTnHf92u zbr})W{ME*w$>_5iv?hlE=`&AlFk-m)K3W&X4b@NZOX6cwfaC^GFt7`o6SOS zXtJro=Z{6ZmbMnagI3e;*xYUe)sxw#}tBS84pl&t!z4Q@uJEbT2 zUz%9GbRKyjEBVK;pSieIy+>=ov3fPp!i=dUrf1(o`5U;N8rZ?BL_i)~PyGgi2s6oq zj(NrsEnOo+1}=#LOz08Y0xL6R$iq>yScftxX$YdLDQ5BN^dgWO!y0c$|I`MrO`#Iw z8Lj3@gI4r7rT^uBX>nm)v?vDndsW{+(DpjA@iLnn^(sv7LXmAqPGJA90vBT6U5F1Q zw-kSI{RG{`n&3C=(9Ba#JH;y6VU!CgCP;3G_>(AV5T|T%(G=EM6rZMwW6b?aK?Y=r zqd06Ae{XPVx_4H@Xq^>O2N&^QJ`!0CTuhTLkC;Goq z=!TqQbx;T!S@w6!=HN}B9=zQa8Pr8Y-Ba=cjyQnxLie$|j@@YWid8z3T4mPPiXJlw zG)$-Q@#@)?mHjo38>m*n4IF4knH06Dy`k#(mptBTVbw!cr)rv@Ry2VDKY!onAGVs+y`n~0t@qshdBsYr{wl3mv)W)8`i)k< zS7+DHbA5Kk4g!>AwB$gdm1MGvv2iZuQ9=coBIjQS?NMcAc#DxN{ z9?8=zd7Q>O0k1j4-*!m)gq)3mMoJ8843L*k@E}DDsbXXWK&lv0#*_~okhUJ!6l_R2 zov8*GrP(FEcH9qV>@%6>$VX4;`jF<}BOJT&m2o?K3OLe~`waXYmssj+*@rM5yp|WJ z(}&0RdFYqu>!?0gx)kOE{4EEh@0Q0=>MOrx+z*H=SSfMbvElc*Nt~rA|je!vd8T*E?qfst(?T!2s9#-CuEAWWZZAmuRJu+wtQmz4du1L zq+RW-Y)?(Oba^3A+yq-O`tU8-%bHayAsAFIoNo6~Zj|jlN=fFN z!WNi`Zn{aFgO5Xp3NRL3cU|k>|GxEx8)&Q|?690FuY8g-a30Lt6-8YeC>v$_l5A{= zU~phM=*1c=8pRU8;G*!98l7ZE3RY%0h3sIYF>Ne2)!=xbSbBO()c*E)QTYu?uvL}b zNxq2{o(i|w2)zz~my`rs&UCEeJy3v&53(pm%FGobwJ#8wCZ|Dxl_)r-MgLI(`SO*68NpB2^}UbOb1TZ)bOPOp~ z(Ki3uRgFYHY~i58d7z(}WBKqHn}Ez9EK*AAq(nKWP{?^y(Sd0x_y>7%R-p3xy_SGA zV4|U$d0=Ny*hNXDjaU*?`=UJhh((-q<97~D?!NZKzMKn=pJW}X%+FYou3j)HBbhL9cGT|rxsvL=O({BUV5ISB8+uEuGBUYwRHQZ^l00BPBXQ`VuY&b#e38lHgOfZ>EyQ;!z zE$5?>k?lpJM;|Iqots~9`>w9`ZMQF(ySXRlar<;@=l}iw`*`hZn^wOhoqX_%(kBBK z=p6hygEo+K>$)y~dC%^bE}Iz5MC}y^=WpJAT>9gK_ap6e$L^h1;0!`*qZ@gqU8;`( z1O_Z?7B8-YAnb7o3QZHQR#G6Y3E}#qe}UdW4QsGDgH@614~ShALJz^%yoTdR>tYq^ zF@B|zrSol7V~ry-Qh;YgLp$}@`$$2-u5qT@;E2j3lId77=ElK}(xv1;1wd2^NkmLQ z>j+RSaf)O57-mqw;7c zs}!$qeM9=&J@-m~eSPcMR=B{mU==T6;|_4m#YRX>lKC|8N|*}>a1;0)GBhxN=qjMm zRsiP050ntI5kgfTA%KuXNo3)i0ffGi)1nQ3Hj1@B=z-XB6_)o1%ArrMJaKSZ`@V19 z^n;<|FZdh%jniw=J%zC1?N8=UyzudjbB=5;@>_n!)<748_m9yp)H;AtDJwCnSg*jq zYiJeI*_}Z8C#{EEvMpJ%CEN0C*^X~JwiD-Y?3~VhItK|MKoX7=LI_7VOH0eK zZ8=(6AheXD&{Al(2Nb&99=q*!yWQ><*eyMFwq$hM`u$^TG^P@}@(JT_UR!e2+J3*qpUd|SUca_BvHFG){sgAbyzw>RS1+Ft z&VOs~%E$il>2RGV?`Q9nR+bhblTR{Z5WS9XQ@;d@sq#zj=u^D%!39PPr+4&p_wjKbme7Tei` z1{mZ5O<)-jvKV|J?%NDuQq%}w4%3k2*2-eVqPnf|#2ud;YQFjax^(;7#*;0h)t3I# zKfM04zZ>l^h4hxh!0sh2%agWiuKlC%=dQ_CXP|diPwRMlWsxXVe%&)sYqrLFH(uS} zw0*4GR@6GMtbFkHJ?*Oo4tNWIS1*pWlq_HKcCfM6A6we&x0I9?=HycMFU+x|I5OASt@HzK7pELbGk=3_tENiQSoK+jG_IxI1 zm7h|*BJ6o@`VV7w?`~G>nEZqd0r9E6@?GpJ;(0g)UDT;~P*gF-deA6FAu$oB;dmDw zRt0^8PqlMDm2^^2k)?&!%F+W2k&}h|KirHoE-^oTlmY*uE*8|i22<`J&owcS>;dA^>)bnqA6#GE{d{gVStx%@JuHI)*^SdiiLcnVZs?w4c_wO#jRM;KOO|C(|!+ ze!a<%ujTIKj^;Yeoae)WTy3H5r_OpCr=32<-=GYsvI}(6XZe1U3G066g}?Cks-J}Y zcdJ-(##$G`T%e7KC*paL3!cQwystzOdCF4E`%1iuLiF>#V)XIzJ|%7m{O@eQ$53NN zqD_DVki)Zga?z@mt-+R&@}Av&LG_d8KEJ4WoxjqVn^<)fVJ(4vQ$L{o8YKNbasQ$@ zACLYI5?c~}(1<@syA^f-tJ*-|g(9>RG2a0d$ZEA5?EF$q2YPF0h>BVa;?9gfmH<(W za$ix%!(vMmAr(m{$v7$zjU!Nav$hHxY041ndpf#+-@MistTTPjzkKtd&fZm?Vs)X# znwu9YOblDTP*m>;G}^hJ2!F8$icQ(VX=6=nx$t8yq8vr=Vj0?`78&#IAAQ0iI+%7$y6JJi6%{Hawn2TyWQYt8bOm8UDzPkcDG z=vZPn>AGfn%Std!-}=4lmG_?CHge@i>BFC;zx5p&t+@7P<=c2i$l@!Q&k|8wFUn#Q zBo)bG{0W(il_rFl6)7avW0>BEEhYIcl#LXNj?DNB`<+{tF^;AJ=_e9oN|sYp&iNW@ zEg!QHQAB(`YZ#5=5QU|%Ylx^%78K3|@wJeXXHf5dz*lLRu23q2qc^P=4dNL={h-lN zWXk1#3d8J)50_brmG}7;InTc_Uu=I`sVmf<-x%!nC|mF-cvh0(h3Xd|Tc{H|EFKL9 zYDq-HVd{`y1kw+3j3lWH$H-Eo(pj_4dEB~h!%uwTX27Lc*r z)wx}J?pn3#uH9X^N`3dP+gGldveBjO>^_``zCJRSW~m{_K9DtIJq_+Uwd)| zzkBZ+!Ur&1XL0dh);opAHD~Z1Mn$7yTPmjtrng8rBw9I6+K@12+1ro*YOkO{MVmzjYn|+WviCJKlvq z_wC1@%C3@zh|N3sR+yMKDBqwDlP-tn^V&H^3` z|FfG8){eE72!;IHUDrIhX~)yYx`n)pI50f89BR}~wzq@CL**muin?~Am@Et8E{mIF zJAqzbbR5`wBcY79F`JBrJYDANkXshSJ3utg2xc=KQF=KLQd#&lz1tUgZa(!X<(Tln zK#B04p{#T>N#al4_tTT9vc>!QoCy+ipJFRNqUb0(-ht)6qqIK^Bt9y>^ z7_k*pcyQP_MGayX4m^9S0_==#h$cKajCO!4k+!C6E|m^S>s^QxDxUsS&uU#_mVR(4l5u3VHbTU`0-lAe*y{r8M)xM@vOG*sPJ4}5?L z{)f5Xbhs;C+;+tylVe9$wN!n`sG!32`hykpKcnA7}6mwGljU68&uDq>sCEq;7$0g;W;5JPT>-+ zP(6U(Z&&P^g%P(9G*~r;37%wiX*@Z6+ZoF)8S2m!bgKBZGs7q*>LBYKVNo)I=6*}5 zLzJ2ZysZ6?T2yx8N-*yQdJkwtFaIaK7wp-gf&#zRomk(v>;83NVWsLCVWqLOEouY5 z@xdZv^Uiz5R8Ri#kN7p1!$HVz8{VOj>Jj7U7r>XA2selr93AL1>zG(@4QCAPh@;^$ zYK)wpt7zmJDdwOq@r#i}Q2B?cswLqy5QstCF|!Wa1f)g{ zfuHMY^^3re-OOUrXJeG`gwDpF(B074RJ4Fqli)odRgs<78Cn7WIa!Qm=F~|3Ee%PP z;BcX94ivW}0Og}KGl!>Qz`||VcR--zkK4UWf@wYb$zkcbafuzP@d3tE+nbEnoV<{_s#s0M-|mQ)IfI=H$Y=I6H4aJ_Hq8MD~(giUa!W77U`q zA%5gl@{gDysxk)>3}eJnDw-kINEJmYlw84^GlK`2A#(NE4C4E-ua=k)%A-b+5+6oJ zBu_)ODZGnxMX2(I;K;oNSW!uJkW{5bWtH@=>NcnFADm7Y7yh09$+^e$xm=APa1U^b z={{9b-CR{B?EASe_3jnsG6VP3pL07f&78u9_zA_qDivqWQjnXFH00X=JpvC`nNGc9 z2Bk(cc&IrMlaC(D0wo_k3_%zsP0XdiKp6ufumg!b2kai(lo>H2?Q+aDn=Z;fD*Svbe zqWxDNH>h<*`e2Eryk|`!I*@c7H3K9Pes{N}mYgEYQ4i+mB<84Eah!N&m3$RuMvgH# z5pqWbJgdZKbw$j^m@`9{7{sRL65q2q`6~KVy4X$?14S&%mc%JUa~`u7Ha3Ybv3Zsl z8lvp3MRhW9#j%^a_Pq0V8>_ZHx=;9mQ?L9LJmOl5@khgZI^88*+k29usS16*NuLiW zi~iRws~Vh(Zg};Yp;J3LbGRNyt!4MS!ao#Mnvc4Y1JT5qo^ne`P_N4ai!7yrF*iZ< zzFLgANhzL4>8tTMNSl?caGdz{XeS}EgE%8i5RfNIPCZE`m%PEH$d2eZlcc+x(d0{~ zBEYvHcD;4(-SJeKRpRN9Zq7XEl+HX_8Vr?}AlwG<1G&*&CDQE7!eMf5{thEi7cyp* zu<}UEv?^E_LjB+8mnLGL_|6S&6+_#vJl?YM%+cM6E%{a*{$JeCxuj-rN4u-Mce0`R zNaBfyb8UHHcf^sad`q2l#(YNMuUVZ(KEGkfEqj-t*rQ=p%RvKTX_hjtG2F8zUbm#i zW-N?x=QxASqrZjb7e0*oN05aLimp_L340G+RB%eM0sDY3L$pYPK9@jygS;2fYbl}z z2?w+Z1vsGq8tRQ+1dAf2zJeUeTKG_poJlPTH|$~|q=XzvN~nKygB%XpgK&`jORGM0 z!|sX|rnaDeQAX%!=~ckIjxo*E)acaG_2m4@qLMvMVB#H)SBcVT*hGH zNda2&qE7(PEItONT4WhX!i6W6#dbb* z^toy1k?H&Rt>+7_zM^K&lZS>^sN$GV_zA*SKwJ3&@YsGuDCN(GA?nOySweuTfTV`; zO;K=G%;dF)(5>4V4zws`O|PW*KAjQp(Q5G2Bv!cB?)=?D%L4%7?fyn*R{idsJL?XA z{p!@M|0g{8hVWzJI{UBIyPy8ik*0MW{=I8BQ%z@C!HQE~8T*p(lXE{97T(clBPH~^ z@oY~sjKqe3%%K?^4r}riM^Jfo6tc z=XEiwg@_NCl@#${P7~RZP+ek91nmu3a32$h(?;Xa$`C7$&=@udf4XtYK%{cX&gSI0 zp0dcmX5Q_wRSaxyXx+aeF?i-DCr|$5%s|c9!M3Jt!_h3g)%dd#JMf?3-pRVk(Pp1s zr{VM-`%i84-z#jVvgYfam5!rf>wxGV(Xg4Koi{=JwRzv74(Qxf||IjCq+ zv`@)x@XnYA6yX<*mVVJB!)+K9b18fXvfjxUlT3+>v9eWxp<;~RukeG_!y91riolR+b)~rpqvO%sIa`+Nn{rS7m-|B~C{^;|ktKa?M$gSI& zj70}MCY`mcx;T$4A?0}}`k3jw7H35ZS^F;DH5Zl{kbD4L5JZ%K(d!9E%-lBF84dW^ z83%!YC{?{_k0Ric*S#6FDd?Qd{z<5+rte5|8Grrs=!3su1jnaOa}jN6pI@6;*SPz>b>Xpp zJ$~#TKeckpbN_dHV$ImHa-J`B{UX)n2pI}|*{Z6NWWdyM-OE>B@zj9^OMI|qS`Ei| z*WF`RuUxnOtDN?8XF2EVTlM~?NSiP8;pX9WI+F)ef&F2I-&BhIn*%H@sv!d`CIono z3=SCFn9%e;@@4PvPqj`VDs+7N5=4cl13GLu^?i7Dt-_2*&c%rd67apjv&^`hrpW!#XbQJCl1mffxfcH5_m~wc$EpWvhPo| z=92up5)(He{6%;N|NiXkom_S>reDK7w>q~n$m#Apt9*N3bR<+dQn62P2uALG?zeAo z*#YMpZ&=HP|9y+q1f390s0Y#vm~|^>2;G@Q!7&tRz8F#76oqcXh*A>I$`tCrNNFROmtI3Q9NS+W zjd&#idrD9}K+qmJz<06rl(#B?-E2?8&Cguhg~EN{rtN�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

QUe2UEok@8GlX8#4OiKR@$cfH?^i4|t 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 z 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 diff --git a/src/Avalonia.Themes.Fluent/Assets/Lato-Italic.ttf b/src/Avalonia.Themes.Fluent/Assets/Lato-Italic.ttf deleted file mode 100644 index b23256ff5326c7145e9b9d28f9282ee35377e57b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 723544 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

o`|K;bPmfzQS7}dqz(A*x*<|chEc3Z=ID$ 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∾vYdfTCvoCnwA8^eqUF$x--q|N$Z2TMX2Ws{> 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]qwNi)mF*41Rq6pP}98dO85s!vqe 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±Nc=T+8(HA%3sU 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

R)ev>YKQ$*JE|Y!V?FCyyQSQr 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 G^nU>BKycgu diff --git a/src/Avalonia.Themes.Fluent/Assets/Lato-Light.ttf b/src/Avalonia.Themes.Fluent/Assets/Lato-Light.ttf deleted file mode 100644 index 0809b8e6b55e26aa00d9a1818b0796a4b8eeb57a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644556 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À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 diff --git a/src/Avalonia.Themes.Fluent/Assets/Lato-Medium.ttf b/src/Avalonia.Themes.Fluent/Assets/Lato-Medium.ttf deleted file mode 100644 index 2c612da2ae589dc264deb683f90baf75c8e18e03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637068 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 z 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

5w3xwVP}q)~ARSEO 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
  1. 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%0DAf*evpgHE{_HX=cTW0zWo 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%0AswPr3k*bMQ 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 IS?-Ab529nHX#fBK diff --git a/src/Avalonia.Themes.Fluent/Assets/Lato-Regular.ttf b/src/Avalonia.Themes.Fluent/Assets/Lato-Regular.ttf deleted file mode 100644 index adbfc467d2d0dd5cdf2b942e5d0cf3aab2b73c3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 657212 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 z

public class ToggleSwitch : ToggleButton { + Panel _knobsPanel; + Panel _switchKnob; + bool _knobsPanelPressed = false; + Point _switchStartPoint = new Point(); + double _initLeft = -1; + static ToggleSwitch() { OffContentProperty.Changed.AddClassHandler((x, e) => x.OffContentChanged(e)); @@ -17,13 +23,17 @@ static ToggleSwitch() IsCheckedProperty.Changed.AddClassHandler((x, e) => { if ((e.NewValue != null) && (e.NewValue is bool val)) + { x.UpdateKnobPos(val); + } }); BoundsProperty.Changed.AddClassHandler((x, e) => { if (x.IsChecked != null) + { x.UpdateKnobPos(x.IsChecked.Value); + } }); } @@ -144,9 +154,6 @@ protected override bool RegisterContentPresenter(IContentPresenter presenter) } - Panel _knobsPanel; - Panel _switchKnob; - bool _knobsPanelPressed = false; protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); @@ -159,11 +166,11 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e) _knobsPanel.PointerMoved += KnobsPanel_PointerMoved; if (IsChecked.HasValue) + { UpdateKnobPos(IsChecked.Value); + } } - - Point _switchStartPoint = new Point(); - double _initLeft = -1; + private void KnobsPanel_PointerPressed(object sender, Input.PointerPressedEventArgs e) { _switchStartPoint = e.GetPosition(_switchKnob); @@ -178,16 +185,22 @@ private void KnobsPanel_PointerReleased(object sender, Input.PointerReleasedEven { bool shouldBecomeChecked = Canvas.GetLeft(_knobsPanel) >= (_switchKnob.Bounds.Width / 2); _knobsPanel.ClearValue(Canvas.LeftProperty); - + PseudoClasses.Set(":dragging", false); if (shouldBecomeChecked == IsChecked) + { UpdateKnobPos(shouldBecomeChecked); + } else + { IsChecked = shouldBecomeChecked; + } } else + { base.Toggle(); + } _isDragging = false; @@ -208,14 +221,18 @@ private void KnobsPanel_PointerMoved(object sender, Input.PointerEventArgs e) } if (_isDragging) + { Canvas.SetLeft(_knobsPanel, System.Math.Min(_switchKnob.Bounds.Width, System.Math.Max(0, (_initLeft + difference.X)))); + } } } protected override void Toggle() { if ((_switchKnob != null) && (!_switchKnob.IsPointerOver)) + { base.Toggle(); + } } protected void UpdateKnobPos(bool value) @@ -223,9 +240,13 @@ protected void UpdateKnobPos(bool value) if ((_switchKnob != null) && (_knobsPanel != null)) { if (value) + { Canvas.SetLeft(_knobsPanel, _switchKnob.Bounds.Width); + } else + { Canvas.SetLeft(_knobsPanel, 0); + } } } } From 85c63914ed588da026a9b686fcbb45406de8c303 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 7 Jul 2020 15:25:10 -0300 Subject: [PATCH 255/354] fix relative panel measure / arrange. --- src/Avalonia.Controls/RelativePanel.cs | 32 ++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index 8ba36887ba4..cf7fa212fd1 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -81,7 +81,7 @@ protected override Size ArrangeOverride(Size finalSize) { foreach (var item in CalculateLocations(finalSize)) item.Item1.Arrange(item.Item2); - return base.ArrangeOverride(finalSize); + return finalSize; } private IEnumerable> CalculateLocations(Size finalSize) @@ -207,6 +207,10 @@ private IEnumerable> CalculateLocations(Size finalSize) rect[0] = finalSize.Width - rect[2] - child.DesiredSize.Width; valueChanged = true; } + else + { + rect[0] = 0; + } } } //Calculate top side @@ -239,6 +243,10 @@ private IEnumerable> CalculateLocations(Size finalSize) rect[1] = finalSize.Height - rect[3] - child.DesiredSize.Height; valueChanged = true; } + else + { + rect[1] = 0; + } } } //Calculate right side @@ -278,6 +286,10 @@ private IEnumerable> CalculateLocations(Size finalSize) rect[2] = finalSize.Width - rect[0] - child.DesiredSize.Width; valueChanged = true; } + else + { + rect[2] = child.DesiredSize.Width; + } } } //Calculate bottom side @@ -317,6 +329,10 @@ private IEnumerable> CalculateLocations(Size finalSize) rect[3] = finalSize.Height - rect[1] - child.DesiredSize.Height; valueChanged = true; } + else + { + rect[3] = child.DesiredSize.Height; + } } } //Calculate horizontal alignment @@ -410,18 +426,16 @@ private IEnumerable> CalculateLocations(Size finalSize) private Layoutable GetDependencyElement(AvaloniaProperty property, AvaloniaObject child) { var dependency = child.GetValue(property); - - if (dependency == null) - return null; - if (dependency is Layoutable) + + if (dependency is Layoutable layoutable) { - if (Children.Contains((ILayoutable)dependency)) - return (Layoutable)dependency; + if (Children.Contains((ILayoutable)layoutable)) + return layoutable; + throw new ArgumentException(string.Format("RelativePanel error: Element does not exist in the current context", property.Name)); } - //return null; - throw new ArgumentException("RelativePanel error: Value must be of type ILayoutable"); + return null; } } } From c354bc50dbe3ab13e9a40047d7e15f8b12451fc1 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 7 Jul 2020 15:25:36 -0300 Subject: [PATCH 256/354] relative panel should clip to bounds by default. --- src/Avalonia.Controls/RelativePanel.AttachedProperties.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs index 50d2ccbc73c..ffe6d007aaf 100644 --- a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs +++ b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs @@ -17,6 +17,8 @@ private static void OnAlignPropertiesChanged(AvaloniaObject d, AvaloniaPropertyC static RelativePanel() { + ClipToBoundsProperty.OverrideDefaultValue(true); + AboveProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); AlignBottomWithPanelProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); AlignBottomWithProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); From edcced230ccef6ebdecc44050d5fe27289e80259 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Tue, 7 Jul 2020 21:29:53 +0300 Subject: [PATCH 257/354] Use custom WaitForMultipleObjectsEx to prevent STA/COM fuckery --- .../AvaloniaSynchronizationContext.cs | 23 ++++++++++++++++++- src/Avalonia.FreeDesktop/DBusHelper.cs | 2 +- .../Interop/UnmanagedMethods.cs | 17 ++++++++++++++ .../Avalonia.Win32/NonPumpingWaitProvider.cs | 15 ++++++++++++ src/Windows/Avalonia.Win32/Win32Platform.cs | 1 + 5 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 src/Windows/Avalonia.Win32/NonPumpingWaitProvider.cs diff --git a/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs b/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs index 38a23f918f7..166832398f4 100644 --- a/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs +++ b/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs @@ -1,3 +1,4 @@ +using System; using System.Threading; namespace Avalonia.Threading @@ -7,6 +8,18 @@ namespace Avalonia.Threading /// public class AvaloniaSynchronizationContext : SynchronizationContext { + public interface INonPumpingPlatformWaitProvider + { + int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout); + } + + private readonly INonPumpingPlatformWaitProvider _waitProvider; + + public AvaloniaSynchronizationContext(INonPumpingPlatformWaitProvider waitProvider) + { + _waitProvider = waitProvider; + } + /// /// Controls if SynchronizationContext should be installed in InstallIfNeeded. Used by Designer. /// @@ -22,7 +35,8 @@ public static void InstallIfNeeded() return; } - SetSynchronizationContext(new AvaloniaSynchronizationContext()); + SetSynchronizationContext(new AvaloniaSynchronizationContext(AvaloniaLocator.Current + .GetService())); } /// @@ -39,5 +53,12 @@ public override void Send(SendOrPostCallback d, object state) else Dispatcher.UIThread.InvokeAsync(() => d(state), DispatcherPriority.Send).Wait(); } + + public override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout) + { + if (_waitProvider != null) + return _waitProvider.Wait(waitHandles, waitAll, millisecondsTimeout); + return base.Wait(waitHandles, waitAll, millisecondsTimeout); + } } } diff --git a/src/Avalonia.FreeDesktop/DBusHelper.cs b/src/Avalonia.FreeDesktop/DBusHelper.cs index b445f866139..91c4c28995e 100644 --- a/src/Avalonia.FreeDesktop/DBusHelper.cs +++ b/src/Avalonia.FreeDesktop/DBusHelper.cs @@ -43,7 +43,7 @@ public override void Send(SendOrPostCallback d, object state) public void Initialized() { lock (_lock) - _ctx = new AvaloniaSynchronizationContext(); + _ctx = new AvaloniaSynchronizationContext(null); } } public static Connection Connection { get; private set; } diff --git a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs index 1aec4f00164..392ca31282f 100644 --- a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs +++ b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs @@ -1,4 +1,5 @@ using System; +using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -1382,6 +1383,22 @@ internal static Version RtlGetVersion() throw new Exception("RtlGetVersion failed!"); } } + + [DllImport("kernel32", EntryPoint="WaitForMultipleObjectsEx", SetLastError = true, CharSet = CharSet.Auto)] + private static extern int IntWaitForMultipleObjectsEx(int nCount, IntPtr[] pHandles, bool bWaitAll, int dwMilliseconds, bool bAlertable); + + public const int WAIT_FAILED = unchecked((int)0xFFFFFFFF); + + internal static int WaitForMultipleObjectsEx(int nCount, IntPtr[] pHandles, bool bWaitAll, int dwMilliseconds, bool bAlertable) + { + int result = IntWaitForMultipleObjectsEx(nCount, pHandles, bWaitAll, dwMilliseconds, bAlertable); + if(result == WAIT_FAILED) + { + throw new Win32Exception(); + } + + return result; + } [DllImport("user32.dll")] internal static extern int SetWindowCompositionAttribute(IntPtr hwnd, ref WindowCompositionAttributeData data); diff --git a/src/Windows/Avalonia.Win32/NonPumpingWaitProvider.cs b/src/Windows/Avalonia.Win32/NonPumpingWaitProvider.cs new file mode 100644 index 00000000000..a0160fcfbd6 --- /dev/null +++ b/src/Windows/Avalonia.Win32/NonPumpingWaitProvider.cs @@ -0,0 +1,15 @@ +using System; +using Avalonia.Threading; +using Avalonia.Win32.Interop; + +namespace Avalonia.Win32 +{ + internal class NonPumpingWaitProvider : AvaloniaSynchronizationContext.INonPumpingPlatformWaitProvider + { + public int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout) + { + return UnmanagedMethods.WaitForMultipleObjectsEx(waitHandles.Length, waitHandles, waitAll, + millisecondsTimeout, false); + } + } +} diff --git a/src/Windows/Avalonia.Win32/Win32Platform.cs b/src/Windows/Avalonia.Win32/Win32Platform.cs index b7bb0e19bab..af6058d197d 100644 --- a/src/Windows/Avalonia.Win32/Win32Platform.cs +++ b/src/Windows/Avalonia.Win32/Win32Platform.cs @@ -93,6 +93,7 @@ public static void Initialize(Win32PlatformOptions options) .Bind().ToConstant(s_instance) .Bind().ToSingleton() .Bind().ToConstant(s_instance) + .Bind().ToConstant(new NonPumpingWaitProvider()) .Bind().ToConstant(new WindowsMountedVolumeInfoProvider()); if (options.AllowEglInitialization) From 45d543775e3a4068079fbd5b5d49f06ae7569730 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 7 Jul 2020 15:31:01 -0300 Subject: [PATCH 258/354] cleanup --- src/Avalonia.Controls/RelativePanel.AttachedProperties.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs index ffe6d007aaf..15246261334 100644 --- a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs +++ b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Text; -using Avalonia.Layout; +using Avalonia.Layout; namespace Avalonia.Controls { From 77edfccd7139f2d7c94c11bad15d318879919e0a Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Tue, 7 Jul 2020 11:40:03 -0700 Subject: [PATCH 259/354] Fixes spelling in README.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 6a04c7e31ec..19a9a8420dc 100644 --- a/readme.md +++ b/readme.md @@ -16,7 +16,7 @@ To see the status of some of our features, please see our [Roadmap](https://gith ## 🚀 Getting Started -The Avalonia [Visual Studio Extension](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio) contains project and control templates that will help you get started, or you can use the .NET Core CLI. For a starer guide see our [documentation](http://avaloniaui.net/docs/quickstart/create-new-project). +The Avalonia [Visual Studio Extension](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio) contains project and control templates that will help you get started, or you can use the .NET Core CLI. For a starter guide see our [documentation](http://avaloniaui.net/docs/quickstart/create-new-project). Avalonia is delivered via NuGet package manager. You can find the packages here: https://www.nuget.org/packages/Avalonia/ From be553738112175b1d291650a87fb32ac8fc7e2b5 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 7 Jul 2020 15:52:30 -0300 Subject: [PATCH 260/354] add some unit tests and tidy relative panel --- src/Avalonia.Controls/RelativePanel.cs | 33 +++++++++++++++++-- .../RelativePanelTests.cs | 32 ++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index cf7fa212fd1..73f668bbe9d 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -60,12 +60,26 @@ protected override Size MeasureOverride(Size availableSize) { child.Measure(availableSize); } + + Rect bounds = new Rect(); + foreach (var item in CalculateLocations(availableSize)) { if (item.Item2.Size.Width < item.Item1.DesiredSize.Width || item.Item2.Size.Height < item.Item1.DesiredSize.Height) item.Item1.Measure(item.Item2.Size); + + if(item.Item2.Right > bounds.Width) + { + bounds = bounds.WithWidth(item.Item2.Right); + } + + if(item.Item2.Bottom > bounds.Height) + { + bounds = bounds.WithHeight(item.Item2.Bottom); + } } - return base.MeasureOverride(availableSize); + + return bounds.Size; } /// @@ -79,9 +93,24 @@ protected override Size MeasureOverride(Size availableSize) /// The actual size used. protected override Size ArrangeOverride(Size finalSize) { + Rect bounds = new Rect(); + foreach (var item in CalculateLocations(finalSize)) + { item.Item1.Arrange(item.Item2); - return finalSize; + + if (item.Item2.Right > bounds.Width) + { + bounds = bounds.WithWidth(item.Item2.Right); + } + + if (item.Item2.Bottom > bounds.Height) + { + bounds = bounds.WithHeight(item.Item2.Bottom); + } + } + + return bounds.Size; } private IEnumerable> CalculateLocations(Size finalSize) diff --git a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs new file mode 100644 index 00000000000..7a2036687e4 --- /dev/null +++ b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs @@ -0,0 +1,32 @@ +using Avalonia.Controls.Shapes; +using Xunit; + +namespace Avalonia.Controls.UnitTests +{ + public class RelativePanelTests + { + [Fact] + public void Lays_Out_1_Child_Below_the_other() + { + var rect1 = new Rectangle { Height = 20, Width = 20 }; + var rect2 = new Rectangle { Height = 20, Width = 20 }; + + var target = new RelativePanel + { + Children = + { + rect1, rect2 + } + }; + + RelativePanel.SetAlignLeftWithPanel(rect1 , true); + RelativePanel.SetBelow(rect2, rect1); + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Size(20, 40), target.Bounds.Size); + Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds); + Assert.Equal(new Rect(0, 20, 20, 20), target.Children[1].Bounds); + } + } +} From 6e998b290657641a8f8605cdecbb66fb009eb3b8 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Tue, 7 Jul 2020 22:06:07 +0300 Subject: [PATCH 261/354] Fixed ResolveByNameExtension --- .../ResolveByNameExtension.cs | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResolveByNameExtension.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResolveByNameExtension.cs index 33263b6a27b..2b5d1ced3a0 100644 --- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResolveByNameExtension.cs +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResolveByNameExtension.cs @@ -1,5 +1,6 @@ using System; using Avalonia.Controls; +using Avalonia.Data.Core; namespace Avalonia.Markup.Xaml.MarkupExtensions { @@ -15,26 +16,20 @@ public ResolveByNameExtension(string name) public object ProvideValue(IServiceProvider serviceProvider) { var namescope = serviceProvider.GetService(); - var provideValueTarget = serviceProvider.GetService(); - + var value = namescope.FindAsync(Name); if(value.IsCompleted) - { return value.GetResult(); - } - else - { - value.OnCompleted(() => - { - if(provideValueTarget is AvaloniaObject ao) - { - ao.SetValue(provideValueTarget.TargetProperty as AvaloniaProperty, value); - } - }); - return null; - } + var provideValueTarget = serviceProvider.GetService(); + var target = provideValueTarget.TargetObject; + var property = provideValueTarget.TargetProperty as IPropertyInfo; + + if (property != null) + value.OnCompleted(() => property.Set(target, value.GetResult())); + + return null; } } } From 835e87e8cdb46629666be214505d0cc0a61e588d Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 7 Jul 2020 16:27:50 -0300 Subject: [PATCH 262/354] add a failing relative panel test. --- .../RelativePanelTests.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs index 7a2036687e4..1ab8fe20830 100644 --- a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs @@ -28,5 +28,31 @@ public void Lays_Out_1_Child_Below_the_other() Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds); Assert.Equal(new Rect(0, 20, 20, 20), target.Children[1].Bounds); } + + [Fact] + public void Lays_Out_2nd_Child_Aligned_With_Panel_sits_inside_1st() + { + var rect1 = new Rectangle { Height = 50, Width = 200 }; + var rect2 = new Rectangle { Height = 20, Width = 20 }; + + var target = new RelativePanel + { + Children = + { + rect1, rect2 + }, + HorizontalAlignment = Layout.HorizontalAlignment.Left, + VerticalAlignment = Layout.VerticalAlignment.Top + }; + + RelativePanel.SetAlignLeftWithPanel(rect1, true); + RelativePanel.SetAlignBottomWithPanel(rect2, true); + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Size(50, 200), target.Bounds.Size); + Assert.Equal(new Rect(0, 0, 50, 200), target.Children[0].Bounds); + Assert.Equal(new Rect(0, 30, 20, 20), target.Children[1].Bounds); + } } } From df1bfd60b5f5c15cc34db6c1cf1f3aa2fbf7ecfc Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 7 Jul 2020 16:42:17 -0300 Subject: [PATCH 263/354] skip test. --- tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs index 1ab8fe20830..feb30200af6 100644 --- a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs @@ -29,7 +29,7 @@ public void Lays_Out_1_Child_Below_the_other() Assert.Equal(new Rect(0, 20, 20, 20), target.Children[1].Bounds); } - [Fact] + [Fact (Skip = "TODO Implement auto sizing")] public void Lays_Out_2nd_Child_Aligned_With_Panel_sits_inside_1st() { var rect1 = new Rectangle { Height = 50, Width = 200 }; From 4b9cf819badf187bd4cde550e0783a5562528be3 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 7 Jul 2020 17:45:06 -0300 Subject: [PATCH 264/354] acceptable relativepanel implementation. --- .../RelativePanel.AttachedProperties.cs | 24 +- src/Avalonia.Controls/RelativePanel.cs | 658 ++++++++---------- .../RelativePanelTests.cs | 26 - 3 files changed, 283 insertions(+), 425 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs index 15246261334..91a4f150395 100644 --- a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs +++ b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs @@ -14,7 +14,7 @@ private static void OnAlignPropertiesChanged(AvaloniaObject d, AvaloniaPropertyC static RelativePanel() { ClipToBoundsProperty.OverrideDefaultValue(true); - + AboveProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); AlignBottomWithPanelProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); AlignBottomWithProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); @@ -61,7 +61,7 @@ public static void SetAbove(AvaloniaObject obj, object value) /// /// Identifies the XAML attached property. /// - + public static readonly AttachedProperty AboveProperty = AvaloniaProperty.RegisterAttached("Above", typeof(RelativePanel)); @@ -126,7 +126,7 @@ public static void SetAlignBottomWith(AvaloniaObject obj, object value) /// /// Identifies the XAML attached property. /// - + public static readonly AttachedProperty AlignBottomWithProperty = AvaloniaProperty.RegisterAttached("AlignBottomWith", typeof(RelativePanel)); @@ -190,7 +190,7 @@ public static void SetAlignHorizontalCenterWith(AvaloniaObject obj, object value /// /// Identifies the XAML attached property. /// - + public static readonly AttachedProperty AlignHorizontalCenterWithProperty = AvaloniaProperty.RegisterAttached("AlignHorizontalCenterWith", typeof(object), typeof(RelativePanel)); @@ -255,7 +255,7 @@ public static void SetAlignLeftWith(AvaloniaObject obj, object value) /// /// Identifies the XAML attached property. /// - + public static readonly AttachedProperty AlignLeftWithProperty = AvaloniaProperty.RegisterAttached("AlignLeftWith"); @@ -320,7 +320,7 @@ public static void SetAlignRightWith(AvaloniaObject obj, object value) /// /// Identifies the XAML attached property. /// - + public static readonly AttachedProperty AlignRightWithProperty = AvaloniaProperty.RegisterAttached("AlignRightWith"); @@ -381,7 +381,7 @@ public static void SetAlignTopWith(AvaloniaObject obj, object value) /// /// Identifies the XAML attached property. /// - + public static readonly AttachedProperty AlignTopWithProperty = AvaloniaProperty.RegisterAttached("AlignTopWith"); @@ -434,7 +434,7 @@ public static object GetAlignVerticalCenterWith(AvaloniaObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to align this element's horizontal center with.) - + public static void SetAlignVerticalCenterWith(AvaloniaObject obj, object value) { obj.SetValue(AlignVerticalCenterWithProperty, value); @@ -465,7 +465,7 @@ public static object GetBelow(AvaloniaObject obj) /// /// The object to which the property value is written. /// The value to set. (The element to position this element below.) - + public static void SetBelow(AvaloniaObject obj, object value) { obj.SetValue(BelowProperty, value); @@ -474,7 +474,7 @@ public static void SetBelow(AvaloniaObject obj, object value) /// /// Identifies the XAML attached property. /// - + public static readonly AttachedProperty BelowProperty = AvaloniaProperty.RegisterAttached("Below"); @@ -505,7 +505,7 @@ public static void SetLeftOf(AvaloniaObject obj, object value) /// /// Identifies the XAML attached property. /// - + public static readonly AttachedProperty LeftOfProperty = AvaloniaProperty.RegisterAttached("LeftOf"); @@ -536,7 +536,7 @@ public static void SetRightOf(AvaloniaObject obj, object value) /// /// Identifies the XAML attached property. /// - + public static readonly AttachedProperty RightOfProperty = AvaloniaProperty.RegisterAttached("RightOf"); } diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index 73f668bbe9d..d44d39ed904 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -1,470 +1,354 @@ -using System; +/* Ported from https://github.com/ghost1372/HandyControls/blob/develop/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs */ +using System; using System.Collections.Generic; using System.Linq; using Avalonia.Layout; namespace Avalonia.Controls { - /// - /// Defines an area within which you can position and align child objects in relation - /// to each other or the parent panel. - /// - /// - /// Default position - /// By default, any unconstrained element declared as a child of the RelativePanel is given the entire - /// available space and positioned at the(0, 0) coordinates(upper left corner) of the panel.So, if you - /// are positioning a second element relative to an unconstrained element, keep in mind that the second - /// element might get pushed out of the panel. - /// - ///Conflicting relationships - /// - /// If you set multiple relationships that target the same edge of an element, you might have conflicting - /// relationships in your layout as a result.When this happens, the relationships are applied in the - /// following order of priority: - /// • Panel alignment relationships (AlignTopWithPanel, AlignLeftWithPanel, …) are applied first. - /// • Sibling alignment relationships(AlignTopWith, AlignLeftWith, …) are applied second. - /// • Sibling positional relationships(Above, Below, RightOf, LeftOf) are applied last. - /// - /// - /// The panel-center alignment properties(AlignVerticalCenterWith, AlignHorizontalCenterWithPanel, ...) are - /// typically used independently of other constraints and are applied if there is no conflict. - /// - /// - /// The HorizontalAlignment and VerticalAlignment properties on UI elements are applied after relationship - /// properties are evaluated and applied. These properties control the placement of the element within the - /// available size for the element, if the desired size is smaller than the available size. - /// - /// public partial class RelativePanel : Panel { - // Dependency property for storing intermediate arrange state on the children - private static readonly StyledProperty ArrangeStateProperty = - AvaloniaProperty.Register("ArrangeState"); - - /// - /// When overridden in a derived class, measures the size in layout required for - /// child elements and determines a size for the System.Windows.FrameworkElement-derived - /// class. - /// - /// The available size that this element can give to child elements. Infinity can - /// be specified as a value to indicate that the element will size to whatever content - /// is available. - /// - /// - /// The size that this element determines it needs during layout, based on its calculations - /// of child element sizes. - /// + private readonly Graph _childGraph; + + public RelativePanel() => _childGraph = new Graph(); + protected override Size MeasureOverride(Size availableSize) { - foreach (var child in Children.OfType()) + foreach (var child in Children) { - child.Measure(availableSize); + child?.Measure(availableSize); } - Rect bounds = new Rect(); + return availableSize; + } + + protected override Size ArrangeOverride(Size arrangeSize) + { + _childGraph.Reset(arrangeSize); + + foreach (var child in Children.OfType()) + { + if (child == null) + continue; + + var node = _childGraph.AddNode(child); + + node.AlignLeftWithNode = _childGraph.AddLink(node, GetDependencyElement(AlignLeftWithProperty, child)); + node.AlignTopWithNode = _childGraph.AddLink(node, GetDependencyElement(AlignTopWithProperty, child)); + node.AlignRightWithNode = _childGraph.AddLink(node, GetDependencyElement(AlignRightWithProperty, child)); + node.AlignBottomWithNode = _childGraph.AddLink(node, GetDependencyElement(AlignBottomWithProperty, child)); + + node.LeftOfNode = _childGraph.AddLink(node, GetDependencyElement(LeftOfProperty, child)); + node.AboveNode = _childGraph.AddLink(node, GetDependencyElement(AboveProperty, child)); + node.RightOfNode = _childGraph.AddLink(node, GetDependencyElement(RightOfProperty, child)); + node.BelowNode = _childGraph.AddLink(node, GetDependencyElement(BelowProperty, child)); + + node.AlignHorizontalCenterWith = _childGraph.AddLink(node, GetDependencyElement(AlignHorizontalCenterWithProperty, child)); + node.AlignVerticalCenterWith = _childGraph.AddLink(node, GetDependencyElement(AlignVerticalCenterWithProperty, child)); + } - foreach (var item in CalculateLocations(availableSize)) + if (_childGraph.CheckCyclic()) { - if (item.Item2.Size.Width < item.Item1.DesiredSize.Width || item.Item2.Size.Height < item.Item1.DesiredSize.Height) - item.Item1.Measure(item.Item2.Size); + throw new Exception("RelativePanel error: Circular dependency detected. Layout could not complete."); + } + + var size = new Size(); - if(item.Item2.Right > bounds.Width) + foreach (var child in Children) + { + if (child.Bounds.Bottom > size.Height) { - bounds = bounds.WithWidth(item.Item2.Right); + size = size.WithHeight(child.Bounds.Bottom); } - if(item.Item2.Bottom > bounds.Height) + if (child.Bounds.Right > size.Width) { - bounds = bounds.WithHeight(item.Item2.Bottom); + size = size.WithWidth(child.Bounds.Right); } } - return bounds.Size; + if (VerticalAlignment == VerticalAlignment.Stretch) + { + size = size.WithHeight(arrangeSize.Height); + } + + if (HorizontalAlignment == HorizontalAlignment.Stretch) + { + size = size.WithWidth(arrangeSize.Width); + } + + return size; } - /// - /// When overridden in a derived class, positions child elements and determines a - /// size for a System.Windows.FrameworkElement derived class. - /// - /// - /// The final area within the parent that this element should use to arrange itself - /// and its children. - /// - /// The actual size used. - protected override Size ArrangeOverride(Size finalSize) + private Layoutable GetDependencyElement(AvaloniaProperty property, AvaloniaObject child) { - Rect bounds = new Rect(); + var dependency = child.GetValue(property); - foreach (var item in CalculateLocations(finalSize)) + if (dependency is Layoutable layoutable) { - item.Item1.Arrange(item.Item2); + if (Children.Contains((ILayoutable)layoutable)) + return layoutable; - if (item.Item2.Right > bounds.Width) - { - bounds = bounds.WithWidth(item.Item2.Right); - } + throw new ArgumentException(string.Format("RelativePanel error: Element does not exist in the current context", property.Name)); + } - if (item.Item2.Bottom > bounds.Height) - { - bounds = bounds.WithHeight(item.Item2.Bottom); - } - } - - return bounds.Size; + return null; } - private IEnumerable> CalculateLocations(Size finalSize) + private class GraphNode { - //List of margins for each element between the element and panel (left, top, right, bottom) - List arranges = new List(Children.Count); - //First pass aligns all sides that aren't constrained by other elements - int arrangedCount = 0; - foreach (var child in Children.OfType()) + public Point Position { get; set; } + + public bool Arranged { get; set; } + + public Layoutable Element { get; } + + public HashSet OutgoingNodes { get; } + + public GraphNode AlignLeftWithNode { get; set; } + + public GraphNode AlignTopWithNode { get; set; } + + public GraphNode AlignRightWithNode { get; set; } + + public GraphNode AlignBottomWithNode { get; set; } + + public GraphNode LeftOfNode { get; set; } + + public GraphNode AboveNode { get; set; } + + public GraphNode RightOfNode { get; set; } + + public GraphNode BelowNode { get; set; } + + public GraphNode AlignHorizontalCenterWith { get; set; } + + public GraphNode AlignVerticalCenterWith { get; set; } + + public GraphNode(Layoutable element) + { + OutgoingNodes = new HashSet(); + Element = element; + } + } + + private class Graph + { + private readonly Dictionary _nodeDic; + + private Size _arrangeSize; + + public Graph() { - //NaN means the arrange value is not constrained yet for that side - double[] rect = new[] { double.NaN, double.NaN, double.NaN, double.NaN }; - arranges.Add(rect); - child.SetValue(ArrangeStateProperty, rect); + _nodeDic = new Dictionary(); + } - //Align with panels always wins, so do these first, or if no constraints are set at all set margin to 0 + public GraphNode AddLink(GraphNode from, Layoutable to) + { + if (to == null) + return null; - //Left side - if (GetAlignLeftWithPanel(child)) + GraphNode nodeTo; + if (_nodeDic.ContainsKey(to)) { - rect[0] = 0; + nodeTo = _nodeDic[to]; } - else if ( - child.GetValue(AlignLeftWithProperty) == null && - child.GetValue(RightOfProperty) == null && - child.GetValue(AlignHorizontalCenterWithProperty) == null && - !GetAlignHorizontalCenterWithPanel(child)) + else { - if (GetAlignRightWithPanel(child)) - rect[0] = finalSize.Width - child.DesiredSize.Width; - else if (child.GetValue(AlignRightWithProperty) == null && child.GetValue(AlignHorizontalCenterWithProperty) == null && child.GetValue(LeftOfProperty) == null) - rect[0] = 0; //default fallback to 0 + nodeTo = new GraphNode(to); + _nodeDic[to] = nodeTo; } - //Top side - if (GetAlignTopWithPanel(child)) + from.OutgoingNodes.Add(nodeTo); + return nodeTo; + } + + public GraphNode AddNode(Layoutable value) + { + if (!_nodeDic.ContainsKey(value)) { - rect[1] = 0; + var node = new GraphNode(value); + _nodeDic.Add(value, node); + return node; } - else if ( - child.GetValue(AlignTopWithProperty) == null && - child.GetValue(BelowProperty) == null && - child.GetValue(AlignVerticalCenterWithProperty) == null && - !GetAlignVerticalCenterWithPanel(child)) + + return _nodeDic[value]; + } + + public void Reset(Size arrangeSize) + { + _arrangeSize = arrangeSize; + _nodeDic.Clear(); + } + + public bool CheckCyclic() => CheckCyclic(_nodeDic.Values, null); + + private bool CheckCyclic(IEnumerable nodes, HashSet set) + { + if (set == null) { - if (GetAlignBottomWithPanel(child)) - rect[1] = finalSize.Height - child.DesiredSize.Height; - else if (child.GetValue(AlignBottomWithProperty) == null && child.GetValue(AlignVerticalCenterWithProperty) == null && child.GetValue(AboveProperty) == null) - rect[1] = 0; //default fallback to 0 + set = new HashSet(); } - //Right side - if (GetAlignRightWithPanel(child)) + foreach (var node in nodes) { - rect[2] = 0; + if (!node.Arranged && node.OutgoingNodes.Count == 0) + { + ArrangeChild(node, true); + continue; + } + + if (node.OutgoingNodes.All(item => item.Arranged)) + { + ArrangeChild(node); + continue; + } + + if (!set.Add(node.Element)) + return true; + + return CheckCyclic(node.OutgoingNodes, set); } - else if (!double.IsNaN(rect[0]) && - child.GetValue(AlignRightWithProperty) == null && - child.GetValue(LeftOfProperty) == null && - child.GetValue(AlignHorizontalCenterWithProperty) == null && - !GetAlignHorizontalCenterWithPanel(child)) + + return false; + } + + private void ArrangeChild(GraphNode node, bool ignoneSibling = false) + { + var child = node.Element; + var childSize = child.DesiredSize; + var childPos = new Point(); + + if (GetAlignHorizontalCenterWithPanel(child)) { - rect[2] = finalSize.Width - rect[0] - child.DesiredSize.Width; + childPos = childPos.WithX((_arrangeSize.Width - childSize.Width) / 2); } - //Bottom side - if (GetAlignBottomWithPanel(child)) - rect[3] = 0; - else if (!double.IsNaN(rect[1]) && - (child.GetValue(AlignBottomWithProperty) == null && - child.GetValue(AboveProperty) == null) && - child.GetValue(AlignVerticalCenterWithProperty) == null && - !GetAlignVerticalCenterWithPanel(child)) + if (GetAlignVerticalCenterWithPanel(child)) { - rect[3] = finalSize.Height - rect[1] - child.DesiredSize.Height; + childPos = childPos.WithY((_arrangeSize.Height - childSize.Height) / 2); } - if (!double.IsNaN(rect[0]) && !double.IsNaN(rect[1]) && - !double.IsNaN(rect[2]) && !double.IsNaN(rect[3])) - arrangedCount++; - } - int i = 0; - //Run iterative layout passes - while (arrangedCount < Children.Count) - { - bool valueChanged = false; - i = 0; - foreach (var child in Children.OfType()) + var alignLeftWithPanel = GetAlignLeftWithPanel(child); + var alignTopWithPanel = GetAlignTopWithPanel(child); + var alignRightWithPanel = GetAlignRightWithPanel(child); + var alignBottomWithPanel = GetAlignBottomWithPanel(child); + + if (!ignoneSibling) { - double[] rect = arranges[i++]; + if (node.LeftOfNode != null) + { + childPos = childPos.WithX(node.LeftOfNode.Position.X - childSize.Width); + } - if (!double.IsNaN(rect[0]) && !double.IsNaN(rect[1]) && - !double.IsNaN(rect[2]) && !double.IsNaN(rect[3])) - continue; //Control is fully arranged + if (node.AboveNode != null) + { + childPos = childPos.WithY(node.AboveNode.Position.Y - childSize.Height); + } - //Calculate left side - if (double.IsNaN(rect[0])) + if (node.RightOfNode != null) { - var alignLeftWith = GetDependencyElement(RelativePanel.AlignLeftWithProperty, child); - if (alignLeftWith != null) - { - double[] r = (double[])alignLeftWith.GetValue(ArrangeStateProperty); - if (!double.IsNaN(r[0])) - { - rect[0] = r[0]; - valueChanged = true; - } - } - else - { - var rightOf = GetDependencyElement(RelativePanel.RightOfProperty, child); - if (rightOf != null) - { - double[] r = (double[])rightOf.GetValue(ArrangeStateProperty); - if (!double.IsNaN(r[2])) - { - rect[0] = finalSize.Width - r[2]; - valueChanged = true; - } - } - else if (!double.IsNaN(rect[2])) - { - rect[0] = finalSize.Width - rect[2] - child.DesiredSize.Width; - valueChanged = true; - } - else - { - rect[0] = 0; - } - } + childPos = childPos.WithX(node.RightOfNode.Position.X + node.RightOfNode.Element.DesiredSize.Width); } - //Calculate top side - if (double.IsNaN(rect[1])) + + if (node.BelowNode != null) { - var alignTopWith = GetDependencyElement(RelativePanel.AlignTopWithProperty, child); - if (alignTopWith != null) - { - double[] r = (double[])alignTopWith.GetValue(ArrangeStateProperty); - if (!double.IsNaN(r[1])) - { - rect[1] = r[1]; - valueChanged = true; - } - } - else - { - var below = GetDependencyElement(RelativePanel.BelowProperty, child); - if (below != null) - { - double[] r = (double[])below.GetValue(ArrangeStateProperty); - if (!double.IsNaN(r[3])) - { - rect[1] = finalSize.Height - r[3]; - valueChanged = true; - } - } - else if (!double.IsNaN(rect[3])) - { - rect[1] = finalSize.Height - rect[3] - child.DesiredSize.Height; - valueChanged = true; - } - else - { - rect[1] = 0; - } - } + childPos = childPos.WithY(node.BelowNode.Position.Y + node.BelowNode.Element.DesiredSize.Height); } - //Calculate right side - if (double.IsNaN(rect[2])) + + if (node.AlignHorizontalCenterWith != null) { - var alignRightWith = GetDependencyElement(RelativePanel.AlignRightWithProperty, child); - if (alignRightWith != null) - { - double[] r = (double[])alignRightWith.GetValue(ArrangeStateProperty); - if (!double.IsNaN(r[2])) - { - rect[2] = r[2]; - if (double.IsNaN(rect[0])) - { - if (child.GetValue(RelativePanel.AlignLeftWithProperty) == null) - { - rect[0] = rect[2] + child.DesiredSize.Width; - valueChanged = true; - } - } - } - } - else - { - var leftOf = GetDependencyElement(RelativePanel.LeftOfProperty, child); - if (leftOf != null) - { - double[] r = (double[])leftOf.GetValue(ArrangeStateProperty); - if (!double.IsNaN(r[0])) - { - rect[2] = finalSize.Width - r[0]; - valueChanged = true; - } - } - else if (!double.IsNaN(rect[0])) - { - rect[2] = finalSize.Width - rect[0] - child.DesiredSize.Width; - valueChanged = true; - } - else - { - rect[2] = child.DesiredSize.Width; - } - } + childPos = childPos.WithX(node.AlignHorizontalCenterWith.Position.X + + (node.AlignHorizontalCenterWith.Element.DesiredSize.Width - childSize.Width) / 2); } - //Calculate bottom side - if (double.IsNaN(rect[3])) + + if (node.AlignVerticalCenterWith != null) { - var alignBottomWith = GetDependencyElement(RelativePanel.AlignBottomWithProperty, child); - if (alignBottomWith != null) - { - double[] r = (double[])alignBottomWith.GetValue(ArrangeStateProperty); - if (!double.IsNaN(r[3])) - { - rect[3] = r[3]; - valueChanged = true; - if (double.IsNaN(rect[1])) - { - if (child.GetValue(RelativePanel.AlignTopWithProperty) == null) - { - rect[1] = finalSize.Height - rect[3] - child.DesiredSize.Height; - } - } - } - } - else - { - var above = GetDependencyElement(RelativePanel.AboveProperty, child); - if (above != null) - { - double[] r = (double[])above.GetValue(ArrangeStateProperty); - if (!double.IsNaN(r[1])) - { - rect[3] = finalSize.Height - r[1]; - valueChanged = true; - } - } - else if (!double.IsNaN(rect[1])) - { - rect[3] = finalSize.Height - rect[1] - child.DesiredSize.Height; - valueChanged = true; - } - else - { - rect[3] = child.DesiredSize.Height; - } - } + childPos = childPos.WithY(node.AlignVerticalCenterWith.Position.Y + + (node.AlignVerticalCenterWith.Element.DesiredSize.Height - childSize.Height) / 2); } - //Calculate horizontal alignment - if (double.IsNaN(rect[0]) && double.IsNaN(rect[2])) + + if (node.AlignLeftWithNode != null) { - var alignHorizontalCenterWith = GetDependencyElement(RelativePanel.AlignHorizontalCenterWithProperty, child); - if (alignHorizontalCenterWith != null) - { - double[] r = (double[])alignHorizontalCenterWith.GetValue(ArrangeStateProperty); - if (!double.IsNaN(r[0]) && !double.IsNaN(r[2])) - { - rect[0] = r[0] + (finalSize.Width - r[2] - r[0]) * .5 - child.DesiredSize.Width * .5; - rect[2] = finalSize.Width - rect[0] - child.DesiredSize.Width; - valueChanged = true; - } - } - else - { - if (GetAlignHorizontalCenterWithPanel(child)) - { - var roomToSpare = finalSize.Width - child.DesiredSize.Width; - rect[0] = roomToSpare * .5; - rect[2] = roomToSpare * .5; - valueChanged = true; - } - } + childPos = childPos.WithX(node.AlignLeftWithNode.Position.X); } - //Calculate vertical alignment - if (double.IsNaN(rect[1]) && double.IsNaN(rect[3])) + if (node.AlignTopWithNode != null) { - var alignVerticalCenterWith = GetDependencyElement(RelativePanel.AlignVerticalCenterWithProperty, child); - if (alignVerticalCenterWith != null) - { - double[] r = (double[])alignVerticalCenterWith.GetValue(ArrangeStateProperty); - if (!double.IsNaN(r[1]) && !double.IsNaN(r[3])) - { - rect[1] = r[1] + (finalSize.Height - r[3] - r[1]) * .5 - child.DesiredSize.Height * .5; - rect[3] = finalSize.Height - rect[1] - child.DesiredSize.Height; - valueChanged = true; - } - } - else - { - if (GetAlignVerticalCenterWithPanel(child)) - { - var roomToSpare = finalSize.Height - child.DesiredSize.Height; - rect[1] = roomToSpare * .5; - rect[3] = roomToSpare * .5; - valueChanged = true; - } - } + childPos = childPos.WithY(node.AlignTopWithNode.Position.Y); } + if (node.AlignRightWithNode != null) + { + childPos = childPos.WithX(node.AlignRightWithNode.Element.DesiredSize.Width + node.AlignRightWithNode.Position.X - childSize.Width); + } - //if panel is now fully arranged, increase the counter - if (!double.IsNaN(rect[0]) && !double.IsNaN(rect[1]) && - !double.IsNaN(rect[2]) && !double.IsNaN(rect[3])) - arrangedCount++; + if (node.AlignBottomWithNode != null) + { + childPos = childPos.WithY(node.AlignBottomWithNode.Element.DesiredSize.Height + node.AlignBottomWithNode.Position.Y - childSize.Height); + } } - if (!valueChanged) + + if (alignLeftWithPanel) { - //If a layout pass didn't increase number of arranged elements, - //there must be a circular dependency - throw new ArgumentException("RelativePanel error: Circular dependency detected. Layout could not complete"); + if (node.AlignRightWithNode != null) + { + childPos = childPos.WithX((node.AlignRightWithNode.Element.DesiredSize.Width + node.AlignRightWithNode.Position.X - childSize.Width) / 2); + } + else + { + childPos = childPos.WithX(0); + } } - } - i = 0; - //Arrange iterations complete - Apply the results to the child elements - foreach (var child in Children.OfType()) - { - double[] rect = arranges[i++]; - //Measure child again with the new calculated available size - //this helps for instance textblocks to reflow the text wrapping - //We should probably have done this during the measure step but it would cause a more expensive - //measure+arrange layout cycle - //if(child is TextBlock) - // child.Measure(new Size(Math.Max(0, finalSize.Width - rect[2] - rect[0]), Math.Max(0, finalSize.Height - rect[3] - rect[1]))); - - //if(child is TextBlock tb) - //{ - // tb.ArrangeOverride(new Rect(rect[0], rect[1], Math.Max(0, finalSize.Width - rect[2] - rect[0]), Math.Max(0, finalSize.Height - rect[3] - rect[1]))); - //} - //else - yield return new Tuple(child, new Rect(rect[0], rect[1], Math.Max(0, finalSize.Width - rect[2] - rect[0]), Math.Max(0, finalSize.Height - rect[3] - rect[1]))); - } - } + if (alignTopWithPanel) + { + if (node.AlignBottomWithNode != null) + { + childPos = childPos.WithY((node.AlignBottomWithNode.Element.DesiredSize.Height + node.AlignBottomWithNode.Position.Y - childSize.Height) / 2); + } + else + { + childPos = childPos.WithY(0); + } + } - //Gets the element that's referred to in the alignment attached properties - private Layoutable GetDependencyElement(AvaloniaProperty property, AvaloniaObject child) - { - var dependency = child.GetValue(property); + if (alignRightWithPanel) + { + if (alignLeftWithPanel) + { + childPos = childPos.WithX((_arrangeSize.Width - childSize.Width) / 2); + } + else if (node.AlignLeftWithNode == null) + { + childPos = childPos.WithX(_arrangeSize.Width - childSize.Width); + } + else + { + childPos = childPos.WithX((_arrangeSize.Width + node.AlignLeftWithNode.Position.X - childSize.Width) / 2); + } + } - if (dependency is Layoutable layoutable) - { - if (Children.Contains((ILayoutable)layoutable)) - return layoutable; + if (alignBottomWithPanel) + { + if (alignTopWithPanel) + { + childPos = childPos.WithY((_arrangeSize.Height - childSize.Height) / 2); + } + else if (node.AlignTopWithNode == null) + { + childPos = childPos.WithY(_arrangeSize.Height - childSize.Height); + } + else + { + childPos = childPos.WithY((_arrangeSize.Height + node.AlignLeftWithNode.Position.Y - childSize.Height) / 2); + } + } - throw new ArgumentException(string.Format("RelativePanel error: Element does not exist in the current context", property.Name)); + child.Arrange(new Rect(childPos.X, childPos.Y, childSize.Width, childSize.Height)); + node.Position = childPos; + node.Arranged = true; } - - return null; } } } diff --git a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs index feb30200af6..7a2036687e4 100644 --- a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs @@ -28,31 +28,5 @@ public void Lays_Out_1_Child_Below_the_other() Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds); Assert.Equal(new Rect(0, 20, 20, 20), target.Children[1].Bounds); } - - [Fact (Skip = "TODO Implement auto sizing")] - public void Lays_Out_2nd_Child_Aligned_With_Panel_sits_inside_1st() - { - var rect1 = new Rectangle { Height = 50, Width = 200 }; - var rect2 = new Rectangle { Height = 20, Width = 20 }; - - var target = new RelativePanel - { - Children = - { - rect1, rect2 - }, - HorizontalAlignment = Layout.HorizontalAlignment.Left, - VerticalAlignment = Layout.VerticalAlignment.Top - }; - - RelativePanel.SetAlignLeftWithPanel(rect1, true); - RelativePanel.SetAlignBottomWithPanel(rect2, true); - target.Measure(new Size(400, 400)); - target.Arrange(new Rect(target.DesiredSize)); - - Assert.Equal(new Size(50, 200), target.Bounds.Size); - Assert.Equal(new Rect(0, 0, 50, 200), target.Children[0].Bounds); - Assert.Equal(new Rect(0, 30, 20, 20), target.Children[1].Bounds); - } } } From 23beddf0fdcf6496515da0ba6c0533becfaa3523 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 7 Jul 2020 17:47:44 -0300 Subject: [PATCH 265/354] restore mainwindow. --- samples/ControlCatalog/MainWindow.xaml | 90 +++++++++++++++++++---- samples/ControlCatalog/MainWindow.xaml.cs | 6 +- 2 files changed, 77 insertions(+), 19 deletions(-) diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml index 03d2c48823b..97bd88f5e43 100644 --- a/samples/ControlCatalog/MainWindow.xaml +++ b/samples/ControlCatalog/MainWindow.xaml @@ -13,20 +13,78 @@ TransparencyLevelHint="{Binding TransparencyLevel}" x:Name="MainWindow" x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}"> - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/ControlCatalog/MainWindow.xaml.cs b/samples/ControlCatalog/MainWindow.xaml.cs index 45e59cc267a..d97325ef8d7 100644 --- a/samples/ControlCatalog/MainWindow.xaml.cs +++ b/samples/ControlCatalog/MainWindow.xaml.cs @@ -28,10 +28,10 @@ public MainWindow() }; DataContext = new MainWindowViewModel(_notificationArea); - //_recentMenu = ((NativeMenu.GetMenu(this).Items[0] as NativeMenuItem).Menu.Items[2] as NativeMenuItem).Menu; + _recentMenu = ((NativeMenu.GetMenu(this).Items[0] as NativeMenuItem).Menu.Items[2] as NativeMenuItem).Menu; - //var mainMenu = this.FindControl("MainMenu"); - //mainMenu.AttachedToVisualTree += MenuAttached; + var mainMenu = this.FindControl("MainMenu"); + mainMenu.AttachedToVisualTree += MenuAttached; } public static string MenuQuitHeader => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? "Quit Avalonia" : "E_xit"; From 4e53adb9d463a5991d88b3a11111715ed14ecd56 Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Wed, 8 Jul 2020 07:34:27 +0200 Subject: [PATCH 266/354] Fix MeasureText for empty glyph clusters --- .../Media/TextFormatting/TextFormatterImpl.cs | 7 ++++++- src/Skia/Avalonia.Skia/TextShaperImpl.cs | 4 ++-- .../Rendering/SceneGraph/SceneBuilderTests.cs | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs index fa4da1f50ef..3ad23f35046 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs @@ -377,7 +377,7 @@ private static int MeasureText(ShapedTextCharacters textCharacters, double avail { var glyph = glyphRun.GlyphIndices[i]; - var advance = glyphTypeface.GetGlyphAdvance(glyph); + var advance = glyphTypeface.GetGlyphAdvance(glyph) * glyphRun.Scale; if (currentWidth + advance > availableWidth) { @@ -411,6 +411,11 @@ private static int MeasureText(ShapedTextCharacters textCharacters, double avail return glyphRun.Characters.Length; } + if (glyphRun.GlyphClusters.IsEmpty) + { + return glyphCount; + } + var firstCluster = glyphRun.GlyphClusters[0]; var lastCluster = glyphRun.GlyphClusters[glyphCount]; diff --git a/src/Skia/Avalonia.Skia/TextShaperImpl.cs b/src/Skia/Avalonia.Skia/TextShaperImpl.cs index f89e8fc80f9..ffe11755679 100644 --- a/src/Skia/Avalonia.Skia/TextShaperImpl.cs +++ b/src/Skia/Avalonia.Skia/TextShaperImpl.cs @@ -90,9 +90,9 @@ private static void FillBuffer(Buffer buffer, ReadOnlySlice text) { count++; - buffer.Add('\u200D', cluster); - buffer.Add('\u200C', cluster); + + buffer.Add('\u200D', cluster); } else { diff --git a/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests.cs b/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests.cs index e219682fa60..42e573c8a53 100644 --- a/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests.cs +++ b/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests.cs @@ -34,6 +34,7 @@ public void Should_Build_Initial_Scene() Background = Brushes.Red, Child = textBlock = new TextBlock { + TextWrapping = TextWrapping.NoWrap, Text = "Hello World", } } From 40711f85970abe31edc66cb4bc5a8a01081d9c4a Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Wed, 8 Jul 2020 08:19:55 +0200 Subject: [PATCH 267/354] Fix wrapping test --- .../Media/TextFormatting/TextFormatterTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextFormatterTests.cs b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextFormatterTests.cs index 8f47cb856e0..4a88b259bc4 100644 --- a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextFormatterTests.cs +++ b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextFormatterTests.cs @@ -273,7 +273,7 @@ public void Should_Not_Produce_TextLine_Wider_Than_ParagraphWidth() var defaultProperties = new GenericTextRunProperties(Typeface.Default); - var paragraphProperties = new GenericTextParagraphProperties(defaultProperties); + var paragraphProperties = new GenericTextParagraphProperties(defaultProperties, textWrapping: TextWrapping.Wrap); var textSource = new SingleBufferTextSource(text, defaultProperties); From ee709082fb6d4305f742de1475bf3725ccc56c97 Mon Sep 17 00:00:00 2001 From: Splitwirez Date: Wed, 8 Jul 2020 09:23:55 -0400 Subject: [PATCH 268/354] Just more code style things --- src/Avalonia.Controls/ToggleSwitch.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Controls/ToggleSwitch.cs b/src/Avalonia.Controls/ToggleSwitch.cs index 74c2408449c..c32f2d81027 100644 --- a/src/Avalonia.Controls/ToggleSwitch.cs +++ b/src/Avalonia.Controls/ToggleSwitch.cs @@ -10,11 +10,12 @@ namespace Avalonia.Controls /// public class ToggleSwitch : ToggleButton { - Panel _knobsPanel; - Panel _switchKnob; - bool _knobsPanelPressed = false; - Point _switchStartPoint = new Point(); - double _initLeft = -1; + private Panel _knobsPanel; + private Panel _switchKnob; + private bool _knobsPanelPressed = false; + private Point _switchStartPoint = new Point(); + private double _initLeft = -1; + private bool _isDragging = false; static ToggleSwitch() { @@ -207,7 +208,6 @@ private void KnobsPanel_PointerReleased(object sender, Input.PointerReleasedEven _knobsPanelPressed = false; } - bool _isDragging = false; private void KnobsPanel_PointerMoved(object sender, Input.PointerEventArgs e) { if (_knobsPanelPressed) From e7b3994ce983f506701022232ecd756cfe84bce2 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 8 Jul 2020 10:53:04 -0300 Subject: [PATCH 269/354] remove old code. --- .../Avalonia.Markup.Xaml.csproj | 1 - .../Converters/NameReferenceConverter.cs | 82 ------------------- 2 files changed, 83 deletions(-) delete mode 100644 src/Markup/Avalonia.Markup.Xaml/Converters/NameReferenceConverter.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index fc0da902f66..3979312ce09 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -13,7 +13,6 @@ - diff --git a/src/Markup/Avalonia.Markup.Xaml/Converters/NameReferenceConverter.cs b/src/Markup/Avalonia.Markup.Xaml/Converters/NameReferenceConverter.cs deleted file mode 100644 index 885648ffdea..00000000000 --- a/src/Markup/Avalonia.Markup.Xaml/Converters/NameReferenceConverter.cs +++ /dev/null @@ -1,82 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Media.Imaging; -using Avalonia.Platform; -using System; -using System.ComponentModel; -using System.Globalization; - -namespace Avalonia.Markup.Xaml.Converters -{ - public class NameReferenceConverter : TypeConverter - { - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) - { - if (sourceType == typeof(string)) - { - return true; - } - - return base.CanConvertFrom(context, sourceType); - } - - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) - { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - - //var nameResolver = (IXamlNameResolver)context.GetService(typeof(IXamlNameResolver)); - //if (nameResolver == null) - //{ - // throw new InvalidOperationException(SR.Get(SRID.MissingNameResolver)); - //} - - //string name = value as string; - //if (String.IsNullOrEmpty(name)) - //{ - // throw new InvalidOperationException(SR.Get(SRID.MustHaveName)); - //} - //object obj = nameResolver.Resolve(name); - //if (obj == null) - //{ - // string[] names = new string[] { name }; - // obj = nameResolver.GetFixupToken(names, true); - //} - return null; //obj; - } - - public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) - { - //if (context == null || (context.GetService(typeof(IXamlNameProvider)) as IXamlNameProvider) == null) - //{ - // return false; - //} - - //if (destinationType == typeof(string)) - //{ - // return true; - //} - - return base.CanConvertTo(context, destinationType); - - } - - public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) - { - //if (context == null) - //{ - // throw new ArgumentNullException(nameof(context)); - //} - - //var nameProvider = (IXamlNameProvider)context.GetService(typeof(IXamlNameProvider)); - //if (nameProvider == null) - //{ - // throw new InvalidOperationException(SR.Get(SRID.MissingNameProvider)); - //} - - //return nameProvider.GetName(value); - return null; - } - } -} From ecdc9d01860a84cfd52d84b40606f1eb07ca5bdb Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 8 Jul 2020 11:22:01 -0300 Subject: [PATCH 270/354] add nullable and refactor. --- .../RelativePanel.AttachedProperties.cs | 9 ++- src/Avalonia.Controls/RelativePanel.cs | 37 ++++++------- .../ResolveByNameExtension.cs | 11 ++-- ...lIlResolveByNameMarkupExtensionReplacer.cs | 55 ++++++++----------- 4 files changed, 54 insertions(+), 58 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs index 91a4f150395..f93de5ca154 100644 --- a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs +++ b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs @@ -1,14 +1,17 @@ using Avalonia.Layout; +#nullable enable + namespace Avalonia.Controls { public partial class RelativePanel { private static void OnAlignPropertiesChanged(AvaloniaObject d, AvaloniaPropertyChangedEventArgs e) { - var elm = d as Layoutable; - if (elm.Parent is Layoutable) - ((Layoutable)elm.Parent).InvalidateArrange(); + if (d is Layoutable layoutable && layoutable.Parent is Layoutable layoutableParent) + { + layoutableParent.InvalidateArrange(); + } } static RelativePanel() diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index d44d39ed904..d7bc658dd15 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -4,6 +4,8 @@ using System.Linq; using Avalonia.Layout; +#nullable enable + namespace Avalonia.Controls { public partial class RelativePanel : Panel @@ -80,7 +82,7 @@ protected override Size ArrangeOverride(Size arrangeSize) return size; } - private Layoutable GetDependencyElement(AvaloniaProperty property, AvaloniaObject child) + private Layoutable? GetDependencyElement(AvaloniaProperty property, AvaloniaObject child) { var dependency = child.GetValue(property); @@ -89,7 +91,7 @@ private Layoutable GetDependencyElement(AvaloniaProperty property, AvaloniaObjec if (Children.Contains((ILayoutable)layoutable)) return layoutable; - throw new ArgumentException(string.Format("RelativePanel error: Element does not exist in the current context", property.Name)); + throw new ArgumentException($"RelativePanel error: Element does not exist in the current context: {property.Name}"); } return null; @@ -105,25 +107,25 @@ private class GraphNode public HashSet OutgoingNodes { get; } - public GraphNode AlignLeftWithNode { get; set; } + public GraphNode? AlignLeftWithNode { get; set; } - public GraphNode AlignTopWithNode { get; set; } + public GraphNode? AlignTopWithNode { get; set; } - public GraphNode AlignRightWithNode { get; set; } + public GraphNode? AlignRightWithNode { get; set; } - public GraphNode AlignBottomWithNode { get; set; } + public GraphNode? AlignBottomWithNode { get; set; } - public GraphNode LeftOfNode { get; set; } + public GraphNode? LeftOfNode { get; set; } - public GraphNode AboveNode { get; set; } + public GraphNode? AboveNode { get; set; } - public GraphNode RightOfNode { get; set; } + public GraphNode? RightOfNode { get; set; } - public GraphNode BelowNode { get; set; } + public GraphNode? BelowNode { get; set; } - public GraphNode AlignHorizontalCenterWith { get; set; } + public GraphNode? AlignHorizontalCenterWith { get; set; } - public GraphNode AlignVerticalCenterWith { get; set; } + public GraphNode? AlignVerticalCenterWith { get; set; } public GraphNode(Layoutable element) { @@ -143,7 +145,7 @@ public Graph() _nodeDic = new Dictionary(); } - public GraphNode AddLink(GraphNode from, Layoutable to) + public GraphNode? AddLink(GraphNode from, Layoutable? to) { if (to == null) return null; @@ -183,12 +185,9 @@ public void Reset(Size arrangeSize) public bool CheckCyclic() => CheckCyclic(_nodeDic.Values, null); - private bool CheckCyclic(IEnumerable nodes, HashSet set) + private bool CheckCyclic(IEnumerable nodes, HashSet? set) { - if (set == null) - { - set = new HashSet(); - } + set ??= new HashSet(); foreach (var node in nodes) { @@ -341,7 +340,7 @@ private void ArrangeChild(GraphNode node, bool ignoneSibling = false) } else { - childPos = childPos.WithY((_arrangeSize.Height + node.AlignLeftWithNode.Position.Y - childSize.Height) / 2); + childPos = childPos.WithY((_arrangeSize.Height + node.AlignTopWithNode.Position.Y - childSize.Height) / 2); } } diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResolveByNameExtension.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResolveByNameExtension.cs index 2b5d1ced3a0..8561aa898b8 100644 --- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResolveByNameExtension.cs +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResolveByNameExtension.cs @@ -2,6 +2,8 @@ using Avalonia.Controls; using Avalonia.Data.Core; +#nullable enable + namespace Avalonia.Markup.Xaml.MarkupExtensions { public class ResolveByNameExtension @@ -13,20 +15,19 @@ public ResolveByNameExtension(string name) public string Name { get; } - public object ProvideValue(IServiceProvider serviceProvider) + public object? ProvideValue(IServiceProvider serviceProvider) { - var namescope = serviceProvider.GetService(); + var nameScope = serviceProvider.GetService(); - var value = namescope.FindAsync(Name); + var value = nameScope.FindAsync(Name); if(value.IsCompleted) return value.GetResult(); var provideValueTarget = serviceProvider.GetService(); var target = provideValueTarget.TargetObject; - var property = provideValueTarget.TargetProperty as IPropertyInfo; - if (property != null) + if (provideValueTarget.TargetProperty is IPropertyInfo property) value.OnCompleted(() => property.Set(target, value.GetResult())); return null; diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs index f550f82972c..1c5e4fd4ce1 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs @@ -5,47 +5,40 @@ using XamlX.Transform; using XamlX.TypeSystem; +#nullable enable namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers { class AvaloniaXamlIlResolveByNameMarkupExtensionReplacer : IXamlAstTransformer { public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { - if (node is XamlAstXamlPropertyValueNode propertyValueNode) + if (!(node is XamlAstXamlPropertyValueNode propertyValueNode)) return node; + + IEnumerable attributes = propertyValueNode.Property.GetClrProperty().CustomAttributes; + + if (propertyValueNode.Property is XamlAstClrProperty referenceNode && + referenceNode.Getter != null) { + attributes = attributes.Concat(referenceNode.Getter.CustomAttributes); + } - IEnumerable attributes = propertyValueNode.Property.GetClrProperty().CustomAttributes; + if (attributes.All(attribute => attribute.Type.FullName != "Avalonia.Controls.ResolveByNameAttribute")) + return node; - if (propertyValueNode.Property is XamlAstClrProperty referenceNode && - referenceNode.Getter != null) - { - attributes = attributes.Concat(referenceNode.Getter.CustomAttributes); - } + if (propertyValueNode.Values.Count != 1 || !(propertyValueNode.Values.First() is XamlAstTextNode)) + return node; - foreach (var attribute in attributes) - { - if (attribute.Type.FullName == "Avalonia.Controls.ResolveByNameAttribute") - { - if (propertyValueNode.Values.Count == 1 && - propertyValueNode.Values.First() is XamlAstTextNode) - { - if (XamlTransformHelpers.TryConvertMarkupExtension(context, new XamlAstObjectNode( - propertyValueNode.Values[0], - new XamlAstClrTypeReference(propertyValueNode.Values[0], - context.GetAvaloniaTypes().ResolveByNameExtension, true)) - { - Arguments = new System.Collections.Generic.List - { - propertyValueNode.Values[0] - } - }, out var extensionNode)) - { - propertyValueNode.Values[0] = extensionNode; - } - } - break; - } - } + var newNode = new XamlAstObjectNode( + propertyValueNode.Values[0], + new XamlAstClrTypeReference(propertyValueNode.Values[0], + context.GetAvaloniaTypes().ResolveByNameExtension, true)) + { + Arguments = new List { propertyValueNode.Values[0] } + }; + + if (XamlTransformHelpers.TryConvertMarkupExtension(context, newNode, out var extensionNode)) + { + propertyValueNode.Values[0] = extensionNode; } return node; From b64ca7d5b7ed0af80828fd5fc1d6ba463fbfe6d1 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 8 Jul 2020 11:39:28 -0300 Subject: [PATCH 271/354] add more unit tests for relative panel --- .../RelativePanelTests.cs | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs index 7a2036687e4..4248e643eb9 100644 --- a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs @@ -6,13 +6,15 @@ namespace Avalonia.Controls.UnitTests public class RelativePanelTests { [Fact] - public void Lays_Out_1_Child_Below_the_other() + public void Lays_Out_1_Child_Next_the_other() { var rect1 = new Rectangle { Height = 20, Width = 20 }; var rect2 = new Rectangle { Height = 20, Width = 20 }; var target = new RelativePanel { + VerticalAlignment = Layout.VerticalAlignment.Top, + HorizontalAlignment = Layout.HorizontalAlignment.Left, Children = { rect1, rect2 @@ -20,6 +22,31 @@ public void Lays_Out_1_Child_Below_the_other() }; RelativePanel.SetAlignLeftWithPanel(rect1 , true); + RelativePanel.SetRightOf(rect2, rect1); + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Size(40, 20), target.Bounds.Size); + Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds); + Assert.Equal(new Rect(20, 0, 20, 20), target.Children[1].Bounds); + } + + public void Lays_Out_1_Child_Below_the_other() + { + var rect1 = new Rectangle { Height = 20, Width = 20 }; + var rect2 = new Rectangle { Height = 20, Width = 20 }; + + var target = new RelativePanel + { + VerticalAlignment = Layout.VerticalAlignment.Top, + HorizontalAlignment = Layout.HorizontalAlignment.Left, + Children = + { + rect1, rect2 + } + }; + + RelativePanel.SetAlignLeftWithPanel(rect1, true); RelativePanel.SetBelow(rect2, rect1); target.Measure(new Size(400, 400)); target.Arrange(new Rect(target.DesiredSize)); From f842c3290c5c39c1624571eaa107db0d7620faf8 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 8 Jul 2020 12:47:18 -0300 Subject: [PATCH 272/354] fix xaml transformer. --- .../AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs index 1c5e4fd4ce1..c0ac841b7f4 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs @@ -13,7 +13,9 @@ class AvaloniaXamlIlResolveByNameMarkupExtensionReplacer : IXamlAstTransformer public IXamlAstNode Transform(AstTransformationContext context, IXamlAstNode node) { if (!(node is XamlAstXamlPropertyValueNode propertyValueNode)) return node; - + + if (!(propertyValueNode.Property is XamlAstClrProperty clrProperty)) return node; + IEnumerable attributes = propertyValueNode.Property.GetClrProperty().CustomAttributes; if (propertyValueNode.Property is XamlAstClrProperty referenceNode && From eb3c4cd008067710c2e25d63b1777bb8d1539985 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 8 Jul 2020 13:28:59 -0300 Subject: [PATCH 273/354] add relative panel page to control catalog. --- samples/ControlCatalog/MainView.xaml | 1 + .../Pages/RelativePanelPage.axaml | 60 +++++++++++++++++++ .../Pages/RelativePanelPage.axaml.cs | 19 ++++++ 3 files changed, 80 insertions(+) create mode 100644 samples/ControlCatalog/Pages/RelativePanelPage.axaml create mode 100644 samples/ControlCatalog/Pages/RelativePanelPage.axaml.cs diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml index d812818ed84..fa4fd7dd07d 100644 --- a/samples/ControlCatalog/MainView.xaml +++ b/samples/ControlCatalog/MainView.xaml @@ -56,6 +56,7 @@ + diff --git a/samples/ControlCatalog/Pages/RelativePanelPage.axaml b/samples/ControlCatalog/Pages/RelativePanelPage.axaml new file mode 100644 index 00000000000..3657d52bd9d --- /dev/null +++ b/samples/ControlCatalog/Pages/RelativePanelPage.axaml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/ControlCatalog/Pages/RelativePanelPage.axaml.cs b/samples/ControlCatalog/Pages/RelativePanelPage.axaml.cs new file mode 100644 index 00000000000..11d0a5152e0 --- /dev/null +++ b/samples/ControlCatalog/Pages/RelativePanelPage.axaml.cs @@ -0,0 +1,19 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace ControlCatalog.Pages +{ + public class RelativePanelPage : UserControl + { + public RelativePanelPage() + { + this.InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} From 195da7581ece92467a8a3b739e8575f94368f9ce Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 8 Jul 2020 13:34:38 -0300 Subject: [PATCH 274/354] fix nits. --- src/Avalonia.Controls/RelativePanel.cs | 2 +- .../XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index d7bc658dd15..033a5559f50 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -1,4 +1,4 @@ -/* Ported from https://github.com/ghost1372/HandyControls/blob/develop/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs */ +/// Ported from https://github.com/HandyOrg/HandyControl/blob/master/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs using System; using System.Collections.Generic; using System.Linq; diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs index d9138753ab1..b9206984944 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs @@ -44,10 +44,10 @@ void InsertBefore(params IXamlAstTransformer[] t) new AvaloniaXamlIlTransformInstanceAttachedProperties(), new AvaloniaXamlIlTransformSyntheticCompiledBindingMembers()); InsertAfter( - new AvaloniaXamlIlAvaloniaPropertyResolver(), - new AvaloniaXamlIlResolveByNameMarkupExtensionReplacer()); + new AvaloniaXamlIlAvaloniaPropertyResolver()); InsertBefore( + new AvaloniaXamlIlResolveByNameMarkupExtensionReplacer(), new AvaloniaXamlIlBindingPathParser(), new AvaloniaXamlIlSelectorTransformer(), new AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer(), From e7e28553986804fd8c32412cc16c733a7d22f3ba Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 8 Jul 2020 13:36:31 -0300 Subject: [PATCH 275/354] nit --- .../XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs index b9206984944..abff763bb14 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs @@ -46,15 +46,15 @@ void InsertBefore(params IXamlAstTransformer[] t) InsertAfter( new AvaloniaXamlIlAvaloniaPropertyResolver()); - InsertBefore( - new AvaloniaXamlIlResolveByNameMarkupExtensionReplacer(), + InsertBefore( new AvaloniaXamlIlBindingPathParser(), new AvaloniaXamlIlSelectorTransformer(), new AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer(), new AvaloniaXamlIlPropertyPathTransformer(), new AvaloniaXamlIlSetterTransformer(), new AvaloniaXamlIlConstructorServiceProviderTransformer(), - new AvaloniaXamlIlTransitionsTypeMetadataTransformer() + new AvaloniaXamlIlTransitionsTypeMetadataTransformer(), + new AvaloniaXamlIlResolveByNameMarkupExtensionReplacer() ); // After everything else From d3304139bd091a33b57e4db75abdf60ce87af98e Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Thu, 9 Jul 2020 07:13:09 +0200 Subject: [PATCH 276/354] Use SkiaSharp V2 --- build/HarfBuzzSharp.props | 4 ++-- build/SkiaSharp.props | 4 ++-- src/Skia/Avalonia.Skia/FormattedTextImpl.cs | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/build/HarfBuzzSharp.props b/build/HarfBuzzSharp.props index 873048ef21d..88c4d362827 100644 --- a/build/HarfBuzzSharp.props +++ b/build/HarfBuzzSharp.props @@ -1,6 +1,6 @@  - - + + diff --git a/build/SkiaSharp.props b/build/SkiaSharp.props index 4def44cbd00..a8d9332c57b 100644 --- a/build/SkiaSharp.props +++ b/build/SkiaSharp.props @@ -1,6 +1,6 @@  - - + + diff --git a/src/Skia/Avalonia.Skia/FormattedTextImpl.cs b/src/Skia/Avalonia.Skia/FormattedTextImpl.cs index ade659f5eb2..d1f8d6a7793 100644 --- a/src/Skia/Avalonia.Skia/FormattedTextImpl.cs +++ b/src/Skia/Avalonia.Skia/FormattedTextImpl.cs @@ -35,6 +35,7 @@ public FormattedTextImpl( IsAntialias = true, LcdRenderText = true, SubpixelText = true, + IsLinearText = true, Typeface = glyphTypeface.Typeface, TextSize = (float)fontSize, TextAlign = textAlignment.ToSKTextAlign() From 09a58d0c146a45a14ebf7acfa4e0bf7e4699b91a Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 9 Jul 2020 12:58:39 -0300 Subject: [PATCH 277/354] realtive panel no longer cares about the declaration order. and measures to the largest child when not stretched. --- src/Avalonia.Controls/RelativePanel.cs | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index 033a5559f50..07137e3d1aa 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -16,12 +16,16 @@ public partial class RelativePanel : Panel protected override Size MeasureOverride(Size availableSize) { - foreach (var child in Children) + var maxSize = new Size(); + + foreach (var child in Children.OfType()) { - child?.Measure(availableSize); + child.Measure(availableSize); + maxSize = maxSize.WithWidth(Math.Max(maxSize.Width, child.DesiredSize.Width)); + maxSize = maxSize.WithHeight(Math.Max(maxSize.Height, child.DesiredSize.Height)); } - return availableSize; + return maxSize; } protected override Size ArrangeOverride(Size arrangeSize) @@ -183,11 +187,14 @@ public void Reset(Size arrangeSize) _nodeDic.Clear(); } - public bool CheckCyclic() => CheckCyclic(_nodeDic.Values, null); + public bool CheckCyclic() => CheckCyclic(_nodeDic.Values, null, null); - private bool CheckCyclic(IEnumerable nodes, HashSet? set) + private bool CheckCyclic(IEnumerable nodes, GraphNode? waitNode, HashSet? set) { - set ??= new HashSet(); + if (set == null) + { + set = new HashSet(); + } foreach (var node in nodes) { @@ -206,9 +213,13 @@ private bool CheckCyclic(IEnumerable nodes, HashSet? set) if (!set.Add(node.Element)) return true; - return CheckCyclic(node.OutgoingNodes, set); + return CheckCyclic(node.OutgoingNodes, node.Arranged ? null : node, set); } + if (waitNode != null) + { + ArrangeChild(waitNode); + } return false; } From 0555f218d320deb35f4b1baec24a701cf37c5d61 Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Thu, 9 Jul 2020 19:26:04 +0200 Subject: [PATCH 278/354] Remove obsolete SkiaSharp members --- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 6 +++--- .../Gpu/OpenGl/GlRenderTarget.cs | 4 ++-- .../Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs | 11 +++++----- .../Avalonia.Skia/PlatformRenderInterface.cs | 20 +++++++++---------- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index a510763f646..d818e683c39 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -629,8 +629,8 @@ private void ConfigureTileBrush(ref PaintWrapper paintWrapper, Size targetSize, var tileTransform = tileBrush.TileMode != TileMode.None - ? SKMatrix.MakeTranslation(-(float)calc.DestinationRect.X, -(float)calc.DestinationRect.Y) - : SKMatrix.MakeIdentity(); + ? SKMatrix.CreateTranslation(-(float)calc.DestinationRect.X, -(float)calc.DestinationRect.Y) + : SKMatrix.CreateIdentity(); SKShaderTileMode tileX = tileBrush.TileMode == TileMode.None @@ -655,7 +655,7 @@ private void ConfigureTileBrush(ref PaintWrapper paintWrapper, Size targetSize, SKMatrix.Concat( ref paintTransform, tileTransform, - SKMatrix.MakeScale((float)(96.0 / _dpi.X), (float)(96.0 / _dpi.Y))); + SKMatrix.CreateScale((float)(96.0 / _dpi.X), (float)(96.0 / _dpi.Y))); using (var shader = image.ToShader(tileX, tileY, paintTransform)) { diff --git a/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlRenderTarget.cs b/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlRenderTarget.cs index 9b731740069..e0b7019672f 100644 --- a/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlRenderTarget.cs +++ b/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlRenderTarget.cs @@ -82,10 +82,10 @@ public ISkiaGpuRenderSession BeginRenderingSession() var renderTarget = new GRBackendRenderTarget(size.Width, size.Height, disp.SampleCount, disp.StencilSize, - new GRGlFramebufferInfo((uint)fb, GRPixelConfig.Rgba8888.ToGlSizedFormat())); + new GRGlFramebufferInfo((uint)fb, SKColorType.Rgba8888.ToGlSizedFormat())); var surface = SKSurface.Create(_grContext, renderTarget, glSession.IsYFlipped ? GRSurfaceOrigin.TopLeft : GRSurfaceOrigin.BottomLeft, - GRPixelConfig.Rgba8888.ToColorType()); + SKColorType.Rgba8888); success = true; return new GlGpuSession(_grContext, renderTarget, surface, glSession); diff --git a/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs b/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs index de188f42bd8..9278de21374 100644 --- a/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs +++ b/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs @@ -15,19 +15,18 @@ public GlSkiaGpu(IWindowingPlatformGlFeature gl, long? maxResourceBytes) using (context.MakeCurrent()) { using (var iface = context.Version.Type == GlProfileType.OpenGL ? - GRGlInterface.AssembleGlInterface((_, proc) => context.GlInterface.GetProcAddress(proc)) : - GRGlInterface.AssembleGlesInterface((_, proc) => context.GlInterface.GetProcAddress(proc))) + GRGlInterface.CreateOpenGl(proc => context.GlInterface.GetProcAddress(proc)) : + GRGlInterface.CreateGles(proc => context.GlInterface.GetProcAddress(proc))) { - _grContext = GRContext.Create(GRBackend.OpenGL, iface); + _grContext = GRContext.CreateGl(iface); if (maxResourceBytes.HasValue) { - _grContext.GetResourceCacheLimits(out var maxResources, out _); - _grContext.SetResourceCacheLimits(maxResources, maxResourceBytes.Value); + _grContext.SetResourceCacheLimit(maxResourceBytes.Value); } } } } - + public ISkiaGpuRenderTarget TryCreateRenderTarget(IEnumerable surfaces) { foreach (var surface in surfaces) diff --git a/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs b/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs index 0bc5dd56aca..66b7fdea138 100644 --- a/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs +++ b/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs @@ -157,12 +157,12 @@ public IWriteableBitmapImpl CreateWriteableBitmap(PixelSize size, Vector dpi, Pi return new WriteableBitmapImpl(size, dpi, format); } - private static readonly SKPaint s_paint = new SKPaint + private static readonly SKFont s_font = new SKFont { - TextEncoding = SKTextEncoding.GlyphId, - IsAntialias = true, - IsStroke = false, - SubpixelText = true + Subpixel = true, + Edging = SKFontEdging.Antialias, + Hinting = SKFontHinting.Full, + LinearMetrics = true }; private static readonly SKTextBlobBuilder s_textBlobBuilder = new SKTextBlobBuilder(); @@ -176,8 +176,8 @@ public IGlyphRunImpl CreateGlyphRun(GlyphRun glyphRun, out double width) var typeface = glyphTypeface.Typeface; - s_paint.TextSize = (float)glyphRun.FontRenderingEmSize; - s_paint.Typeface = typeface; + s_font.Size = (float)glyphRun.FontRenderingEmSize; + s_font.Typeface = typeface; SKTextBlob textBlob; @@ -190,7 +190,7 @@ public IGlyphRunImpl CreateGlyphRun(GlyphRun glyphRun, out double width) { if (glyphTypeface.IsFixedPitch) { - s_textBlobBuilder.AddRun(s_paint, 0, 0, glyphRun.GlyphIndices.Buffer.Span); + s_textBlobBuilder.AddRun(glyphRun.GlyphIndices.Buffer.Span, s_font); textBlob = s_textBlobBuilder.Build(); @@ -198,7 +198,7 @@ public IGlyphRunImpl CreateGlyphRun(GlyphRun glyphRun, out double width) } else { - var buffer = s_textBlobBuilder.AllocateHorizontalRun(s_paint, count, 0); + var buffer = s_textBlobBuilder.AllocateHorizontalRun(s_font, count, 0); var positions = buffer.GetPositionSpan(); @@ -223,7 +223,7 @@ public IGlyphRunImpl CreateGlyphRun(GlyphRun glyphRun, out double width) } else { - var buffer = s_textBlobBuilder.AllocatePositionedRun(s_paint, count); + var buffer = s_textBlobBuilder.AllocatePositionedRun(s_font, count); var glyphPositions = buffer.GetPositionSpan(); From af8acfce0dbab0864affb5bc8ee4e45bc8c9f4a9 Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Thu, 9 Jul 2020 21:49:34 +0200 Subject: [PATCH 279/354] Prevent crashes caused by null locked framebuffer. --- src/Windows/Avalonia.Win32/FramebufferManager.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Windows/Avalonia.Win32/FramebufferManager.cs b/src/Windows/Avalonia.Win32/FramebufferManager.cs index 87c5a1bb02d..f4c3a807990 100644 --- a/src/Windows/Avalonia.Win32/FramebufferManager.cs +++ b/src/Windows/Avalonia.Win32/FramebufferManager.cs @@ -17,16 +17,18 @@ public FramebufferManager(IntPtr hwnd) public ILockedFramebuffer Lock() { - UnmanagedMethods.RECT rc; - UnmanagedMethods.GetClientRect(_hwnd, out rc); - var width = rc.right - rc.left; - var height = rc.bottom - rc.top; - if ((_fb == null || _fb.Size.Width != width || _fb.Size.Height != height) && width > 0 && height > 0) + UnmanagedMethods.GetClientRect(_hwnd, out var rc); + + var width = Math.Max(1, rc.right - rc.left); + var height = Math.Max(1, rc.bottom - rc.top); + + if ((_fb == null || _fb.Size.Width != width || _fb.Size.Height != height)) { _fb?.Deallocate(); _fb = null; _fb = new WindowFramebuffer(_hwnd, new PixelSize(width, height)); } + return _fb; } } From 1d94f80f7f4392479e1311992db610d89d79100d Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Thu, 9 Jul 2020 23:00:46 +0200 Subject: [PATCH 280/354] Dispose window framebuffers. --- src/Shared/PlatformSupport/StandardRuntimePlatform.cs | 10 +++++++--- src/Windows/Avalonia.Win32/FramebufferManager.cs | 8 +++++++- src/Windows/Avalonia.Win32/WindowImpl.cs | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Shared/PlatformSupport/StandardRuntimePlatform.cs b/src/Shared/PlatformSupport/StandardRuntimePlatform.cs index 03832d3063b..d574732e3db 100644 --- a/src/Shared/PlatformSupport/StandardRuntimePlatform.cs +++ b/src/Shared/PlatformSupport/StandardRuntimePlatform.cs @@ -86,11 +86,15 @@ public void Dispose() #if DEBUG if (Thread.CurrentThread.ManagedThreadId == GCThread?.ManagedThreadId) { - lock(_lock) + lock (_lock) + { if (!IsDisposed) + { Console.Error.WriteLine("Native blob disposal from finalizer thread\nBacktrace: " - + Environment.StackTrace - + "\n\nBlob created by " + _backtrace); + + Environment.StackTrace + + "\n\nBlob created by " + _backtrace); + } + } } #endif DoDispose(); diff --git a/src/Windows/Avalonia.Win32/FramebufferManager.cs b/src/Windows/Avalonia.Win32/FramebufferManager.cs index f4c3a807990..6969a49dadf 100644 --- a/src/Windows/Avalonia.Win32/FramebufferManager.cs +++ b/src/Windows/Avalonia.Win32/FramebufferManager.cs @@ -5,7 +5,7 @@ namespace Avalonia.Win32 { - class FramebufferManager : IFramebufferPlatformSurface + class FramebufferManager : IFramebufferPlatformSurface, IDisposable { private readonly IntPtr _hwnd; private WindowFramebuffer _fb; @@ -31,5 +31,11 @@ public ILockedFramebuffer Lock() return _fb; } + + public void Dispose() + { + _fb?.Deallocate(); + _fb = null; + } } } diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 6e9cb81b11c..0ee1342d27f 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -389,6 +389,8 @@ public void Dispose() UnregisterClass(_className, GetModuleHandle(null)); _className = null; } + + _framebuffer.Dispose(); } public void Invalidate(Rect rect) From 5d8f54ac42419ea23161a1a53a8948360acdaf6a Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Thu, 9 Jul 2020 23:12:05 +0200 Subject: [PATCH 281/354] Fix hardcoded thumb min length. --- src/Avalonia.Controls/Primitives/Track.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Avalonia.Controls/Primitives/Track.cs b/src/Avalonia.Controls/Primitives/Track.cs index c91adaa26e0..29e7f28b441 100644 --- a/src/Avalonia.Controls/Primitives/Track.cs +++ b/src/Avalonia.Controls/Primitives/Track.cs @@ -353,6 +353,15 @@ private bool ComputeScrollBarLengths(Size arrangeSize, double viewportSize, bool var trackLength = isVertical ? arrangeSize.Height : arrangeSize.Width; double thumbMinLength = 10; + StyledProperty minLengthProperty = isVertical ? MinHeightProperty : MinWidthProperty; + + var thumb = Thumb; + + if (thumb != null && thumb.IsSet(minLengthProperty)) + { + thumbMinLength = thumb.GetValue(minLengthProperty); + } + thumbLength = trackLength * viewportSize / extent; CoerceLength(ref thumbLength, trackLength); thumbLength = Math.Max(thumbMinLength, thumbLength); From 1ae75006911c94718653246c20a6f72760bc5945 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 10 Jul 2020 14:17:01 +0300 Subject: [PATCH 282/354] Fix X11 screens implementation for some old/weird setups --- src/Avalonia.X11/X11Screens.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.X11/X11Screens.cs b/src/Avalonia.X11/X11Screens.cs index e247a4241a0..af6d2674b64 100644 --- a/src/Avalonia.X11/X11Screens.cs +++ b/src/Avalonia.X11/X11Screens.cs @@ -48,9 +48,13 @@ static unsafe X11Screen[] UpdateWorkArea(X11Info info, X11Screen[] screens) var pwa = (IntPtr*)prop; var wa = new PixelRect(pwa[0].ToInt32(), pwa[1].ToInt32(), pwa[2].ToInt32(), pwa[3].ToInt32()); - - foreach (var s in screens) + + foreach (var s in screens) + { s.WorkingArea = s.Bounds.Intersect(wa); + if (s.WorkingArea.Width <= 0 || s.WorkingArea.Height <= 0) + s.WorkingArea = s.Bounds; + } XFree(prop); return screens; @@ -134,8 +138,14 @@ public FallbackScreensImpl(X11Info info, X11ScreensUserSettings settings) settings.GlobalScaleFactor) }); } - - Screens = new[] {new X11Screen(new PixelRect(0, 0, 1920, 1280), true, "Default", null, settings.GlobalScaleFactor)}; + else + { + Screens = new[] + { + new X11Screen(new PixelRect(0, 0, 1920, 1280), true, "Default", null, + settings.GlobalScaleFactor) + }; + } } public X11Screen[] Screens { get; } From 9309d779c74b2ea8747c4b719be395e91e0f201f Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 10 Jul 2020 16:00:17 +0300 Subject: [PATCH 283/354] Call SetWaitNotificationRequired --- src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs b/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs index 166832398f4..f920fec82ee 100644 --- a/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs +++ b/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs @@ -18,6 +18,8 @@ public interface INonPumpingPlatformWaitProvider public AvaloniaSynchronizationContext(INonPumpingPlatformWaitProvider waitProvider) { _waitProvider = waitProvider; + if (_waitProvider != null) + SetWaitNotificationRequired(); } /// From efd5bbeaa9a7104c15cab284288b4730c3b3ea56 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 10 Jul 2020 16:21:53 +0300 Subject: [PATCH 284/354] Added an incantation nobody probably even remembers about anymore --- src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs b/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs index f920fec82ee..40cf81358fe 100644 --- a/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs +++ b/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs @@ -1,4 +1,5 @@ using System; +using System.Runtime.ConstrainedExecution; using System.Threading; namespace Avalonia.Threading @@ -56,6 +57,7 @@ public override void Send(SendOrPostCallback d, object state) Dispatcher.UIThread.InvokeAsync(() => d(state), DispatcherPriority.Send).Wait(); } + [PrePrepareMethod] public override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout) { if (_waitProvider != null) From a8b7e879387a1d83cd724877195c27ac3e320be3 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sun, 12 Jul 2020 15:22:00 +0200 Subject: [PATCH 285/354] Added IRecyclingDataTemplate. In #4218 we imported `IElementFactory` from WinUI which is broadly analogous to a recycling datatemplate for lists. In Avalonia this implement `IDataTemplate` in order to have a common base class for all types of data templates. The problem with this is that `IDataTemplate` already had a `SupportsRecycling` property which is incompatible with the way recycling is implemented in `IElementFactory`. Instead, introduce an `IRecyclingDataTemplate` to signal data templates that support recycling. --- .../Generators/TreeItemContainerGenerator.cs | 1 - .../Presenters/ContentPresenter.cs | 21 +++++++------- .../Repeater/ElementFactory.cs | 2 -- .../Repeater/ItemTemplateWrapper.cs | 1 - .../Templates/FuncDataTemplate.cs | 29 ++++++++++++++----- .../Templates/FuncTemplate`2.cs | 6 ++-- .../Templates/IDataTemplate.cs | 12 ++++---- .../Templates/IRecyclingDataTemplate.cs | 25 ++++++++++++++++ .../Diagnostics/ViewLocator.cs | 2 -- .../Templates/DataTemplate.cs | 11 ++++--- .../Templates/TreeDataTemplate.cs | 2 -- .../TreeViewTests.cs | 2 -- 12 files changed, 71 insertions(+), 43 deletions(-) create mode 100644 src/Avalonia.Controls/Templates/IRecyclingDataTemplate.cs diff --git a/src/Avalonia.Controls/Generators/TreeItemContainerGenerator.cs b/src/Avalonia.Controls/Generators/TreeItemContainerGenerator.cs index cd1ce3deae8..9e65ef5f810 100644 --- a/src/Avalonia.Controls/Generators/TreeItemContainerGenerator.cs +++ b/src/Avalonia.Controls/Generators/TreeItemContainerGenerator.cs @@ -142,7 +142,6 @@ class WrapperTreeDataTemplate : ITreeDataTemplate private readonly IDataTemplate _inner; public WrapperTreeDataTemplate(IDataTemplate inner) => _inner = inner; public IControl Build(object param) => _inner.Build(param); - public bool SupportsRecycling => _inner.SupportsRecycling; public bool Match(object data) => _inner.Match(data); public InstancedBinding ItemsSelector(object item) => null; } diff --git a/src/Avalonia.Controls/Presenters/ContentPresenter.cs b/src/Avalonia.Controls/Presenters/ContentPresenter.cs index c4571505bae..88379018165 100644 --- a/src/Avalonia.Controls/Presenters/ContentPresenter.cs +++ b/src/Avalonia.Controls/Presenters/ContentPresenter.cs @@ -86,7 +86,7 @@ public class ContentPresenter : Control, IContentPresenter private IControl _child; private bool _createdChild; - private IDataTemplate _dataTemplate; + private IRecyclingDataTemplate _recyclingDataTemplate; private readonly BorderRenderHelper _borderRenderer = new BorderRenderHelper(); /// @@ -281,7 +281,7 @@ public void UpdateChild() protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e) { base.OnAttachedToLogicalTree(e); - _dataTemplate = null; + _recyclingDataTemplate = null; _createdChild = false; InvalidateMeasure(); } @@ -307,22 +307,21 @@ protected virtual IControl CreateChild() { var dataTemplate = this.FindDataTemplate(content, ContentTemplate) ?? FuncDataTemplate.Default; - // We have content and it isn't a control, so if the new data template is the same - // as the old data template, try to recycle the existing child control to display - // the new data. - if (dataTemplate == _dataTemplate && dataTemplate.SupportsRecycling) + if (dataTemplate is IRecyclingDataTemplate rdt) { - newChild = oldChild; + var toRecycle = rdt == _recyclingDataTemplate ? oldChild : null; + newChild = rdt.Build(content, toRecycle); + _recyclingDataTemplate = rdt; } else { - _dataTemplate = dataTemplate; - newChild = _dataTemplate.Build(content); + newChild = dataTemplate.Build(content); + _recyclingDataTemplate = null; } } else { - _dataTemplate = null; + _recyclingDataTemplate = null; } return newChild; @@ -422,7 +421,7 @@ private void ContentChanged(AvaloniaPropertyChangedEventArgs e) LogicalChildren.Remove(Child); ((ISetInheritanceParent)Child).SetParent(Child.Parent); Child = null; - _dataTemplate = null; + _recyclingDataTemplate = null; } InvalidateMeasure(); diff --git a/src/Avalonia.Controls/Repeater/ElementFactory.cs b/src/Avalonia.Controls/Repeater/ElementFactory.cs index 1c1b71af880..644e0772217 100644 --- a/src/Avalonia.Controls/Repeater/ElementFactory.cs +++ b/src/Avalonia.Controls/Repeater/ElementFactory.cs @@ -4,8 +4,6 @@ namespace Avalonia.Controls { public abstract class ElementFactory : IElementFactory { - bool IDataTemplate.SupportsRecycling => false; - public IControl Build(object data) { return GetElementCore(new ElementFactoryGetArgs { Data = data }); diff --git a/src/Avalonia.Controls/Repeater/ItemTemplateWrapper.cs b/src/Avalonia.Controls/Repeater/ItemTemplateWrapper.cs index 4b784375a98..dd97cde2183 100644 --- a/src/Avalonia.Controls/Repeater/ItemTemplateWrapper.cs +++ b/src/Avalonia.Controls/Repeater/ItemTemplateWrapper.cs @@ -13,7 +13,6 @@ internal class ItemTemplateWrapper : IElementFactory public ItemTemplateWrapper(IDataTemplate dataTemplate) => _dataTemplate = dataTemplate; - public bool SupportsRecycling => false; public IControl Build(object param) => GetElement(null, param); public bool Match(object data) => _dataTemplate.Match(data); diff --git a/src/Avalonia.Controls/Templates/FuncDataTemplate.cs b/src/Avalonia.Controls/Templates/FuncDataTemplate.cs index d454a290210..1afd86a11ec 100644 --- a/src/Avalonia.Controls/Templates/FuncDataTemplate.cs +++ b/src/Avalonia.Controls/Templates/FuncDataTemplate.cs @@ -6,7 +6,7 @@ namespace Avalonia.Controls.Templates /// /// Builds a control for a piece of data. /// - public class FuncDataTemplate : FuncTemplate, IDataTemplate + public class FuncDataTemplate : FuncTemplate, IRecyclingDataTemplate { /// /// The default data template used in the case where no matching data template is found. @@ -30,10 +30,8 @@ public class FuncDataTemplate : FuncTemplate, IDataTemplate }, true); - /// - /// The implementation of the method. - /// private readonly Func _match; + private readonly bool _supportsRecycling; /// /// Initializes a new instance of the class. @@ -70,12 +68,9 @@ public FuncDataTemplate( Contract.Requires(match != null); _match = match; - SupportsRecycling = supportsRecycling; + _supportsRecycling = supportsRecycling; } - /// - public bool SupportsRecycling { get; } - /// /// Checks to see if this data template matches the specified data. /// @@ -88,6 +83,24 @@ public bool Match(object data) return _match(data); } + /// + /// Creates or recycles a control to display the specified data. + /// + /// The data to display. + /// An optional control to recycle. + /// + /// The control if supplied and applicable to + /// , otherwise a new control. + /// + /// + /// The caller should ensure that any control passed to + /// originated from the same data template. + /// + public IControl Build(object data, IControl existing) + { + return _supportsRecycling && existing is object ? existing : Build(data); + } + /// /// Determines of an object is of the specified type. /// diff --git a/src/Avalonia.Controls/Templates/FuncTemplate`2.cs b/src/Avalonia.Controls/Templates/FuncTemplate`2.cs index d08616b9689..cd0e3ad6031 100644 --- a/src/Avalonia.Controls/Templates/FuncTemplate`2.cs +++ b/src/Avalonia.Controls/Templates/FuncTemplate`2.cs @@ -1,5 +1,7 @@ using System; +#nullable enable + namespace Avalonia.Controls.Templates { /// @@ -18,9 +20,7 @@ public class FuncTemplate : ITemplate /// The function used to create the control. public FuncTemplate(Func func) { - Contract.Requires(func != null); - - _func = func; + _func = func ?? throw new ArgumentNullException(nameof(func)); } /// diff --git a/src/Avalonia.Controls/Templates/IDataTemplate.cs b/src/Avalonia.Controls/Templates/IDataTemplate.cs index cfde029eb86..0368748a0bd 100644 --- a/src/Avalonia.Controls/Templates/IDataTemplate.cs +++ b/src/Avalonia.Controls/Templates/IDataTemplate.cs @@ -1,3 +1,7 @@ +using System; + +#nullable enable + namespace Avalonia.Controls.Templates { /// @@ -5,12 +9,6 @@ namespace Avalonia.Controls.Templates /// public interface IDataTemplate : ITemplate { - /// - /// Gets a value indicating whether the data template supports recycling of the generated - /// control. - /// - bool SupportsRecycling { get; } - /// /// Checks to see if this data template matches the specified data. /// @@ -20,4 +18,4 @@ public interface IDataTemplate : ITemplate /// bool Match(object data); } -} \ No newline at end of file +} diff --git a/src/Avalonia.Controls/Templates/IRecyclingDataTemplate.cs b/src/Avalonia.Controls/Templates/IRecyclingDataTemplate.cs new file mode 100644 index 00000000000..25956a9c9a2 --- /dev/null +++ b/src/Avalonia.Controls/Templates/IRecyclingDataTemplate.cs @@ -0,0 +1,25 @@ +#nullable enable + +namespace Avalonia.Controls.Templates +{ + /// + /// An that supports recycling existing elements. + /// + public interface IRecyclingDataTemplate : IDataTemplate + { + /// + /// Creates or recycles a control to display the specified data. + /// + /// The data to display. + /// An optional control to recycle. + /// + /// The control if supplied and applicable to + /// , otherwise a new control. + /// + /// + /// The caller should ensure that any control passed to + /// originated from the same data template. + /// + IControl Build(object data, IControl? existing); + } +} diff --git a/src/Avalonia.Diagnostics/Diagnostics/ViewLocator.cs b/src/Avalonia.Diagnostics/Diagnostics/ViewLocator.cs index c06fbec8011..be3564e7816 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/ViewLocator.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/ViewLocator.cs @@ -7,8 +7,6 @@ namespace Avalonia.Diagnostics { internal class ViewLocator : IDataTemplate { - public bool SupportsRecycling => false; - public IControl Build(object data) { var name = data.GetType().FullName.Replace("ViewModel", "View"); diff --git a/src/Markup/Avalonia.Markup.Xaml/Templates/DataTemplate.cs b/src/Markup/Avalonia.Markup.Xaml/Templates/DataTemplate.cs index 5663d084124..07c5451135f 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Templates/DataTemplate.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Templates/DataTemplate.cs @@ -5,7 +5,7 @@ namespace Avalonia.Markup.Xaml.Templates { - public class DataTemplate : IDataTemplate + public class DataTemplate : IRecyclingDataTemplate { public Type DataType { get; set; } @@ -14,8 +14,6 @@ public class DataTemplate : IDataTemplate [TemplateContent] public object Content { get; set; } - public bool SupportsRecycling { get; set; } = true; - public bool Match(object data) { if (DataType == null) @@ -28,6 +26,11 @@ public bool Match(object data) } } - public IControl Build(object data) => TemplateContent.Load(Content).Control; + public IControl Build(object data) => Build(data, null); + + public IControl Build(object data, IControl existing) + { + return existing ?? TemplateContent.Load(Content).Control; + } } } diff --git a/src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs b/src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs index b96486235ae..b8e1c2df80b 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs @@ -18,8 +18,6 @@ public class TreeDataTemplate : ITreeDataTemplate [AssignBinding] public Binding ItemsSource { get; set; } - public bool SupportsRecycling { get; set; } = true; - public bool Match(object data) { if (DataType == null) diff --git a/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs b/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs index c1bd45bcad7..c25ad19027b 100644 --- a/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs @@ -1273,8 +1273,6 @@ public IControl Build(object param) return new TextBlock { Text = node.Value }; } - public bool SupportsRecycling => false; - public InstancedBinding ItemsSelector(object item) { var obs = ExpressionObserver.Create(item, o => (o as Node).Children); From 8176ef66481256e11dead37e0163e590e0971121 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 13 Jul 2020 19:11:19 +0200 Subject: [PATCH 286/354] Added failing test. Items are being materialized twice when not using virtualization. --- .../Presenters/ItemsPresenterTests.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests.cs b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests.cs index fddc02f19c5..fab57cec494 100644 --- a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests.cs @@ -60,6 +60,25 @@ public void Should_Add_Containers_Of_Correct_Type() Assert.IsType(target.Panel.Children[1]); } + [Fact] + public void Should_Create_Containers_Only_Once() + { + var parent = new TestItemsControl(); + var target = new ItemsPresenter + { + Items = new[] { "foo", "bar" }, + [StyledElement.TemplatedParentProperty] = parent, + }; + var raised = 0; + + parent.ItemContainerGenerator.Materialized += (s, e) => ++raised; + + target.ApplyTemplate(); + + Assert.Equal(2, target.Panel.Children.Count); + Assert.Equal(2, raised); + } + [Fact] public void ItemContainerGenerator_Should_Be_Picked_Up_From_TemplatedControl() { From 68792668ada4ad6cc2ecb10ada5fc6451d0779ac Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 13 Jul 2020 19:23:00 +0200 Subject: [PATCH 287/354] Make items be materialized only once. When virtualization was turned off in an `ItemsControl`, items were virtualized twice. on control creation. Fix that. --- src/Avalonia.Controls/Presenters/CarouselPresenter.cs | 5 +++++ src/Avalonia.Controls/Presenters/ItemsPresenterBase.cs | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/Presenters/CarouselPresenter.cs b/src/Avalonia.Controls/Presenters/CarouselPresenter.cs index 70a7583daf6..7888249bdd7 100644 --- a/src/Avalonia.Controls/Presenters/CarouselPresenter.cs +++ b/src/Avalonia.Controls/Presenters/CarouselPresenter.cs @@ -155,6 +155,11 @@ protected override void ItemsChanged(NotifyCollectionChangedEventArgs e) } } + protected override void PanelCreated(IPanel panel) + { + ItemsChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); + } + /// /// Moves to the selected page, animating if a is set. /// diff --git a/src/Avalonia.Controls/Presenters/ItemsPresenterBase.cs b/src/Avalonia.Controls/Presenters/ItemsPresenterBase.cs index 23846bcd2e2..52f173fc711 100644 --- a/src/Avalonia.Controls/Presenters/ItemsPresenterBase.cs +++ b/src/Avalonia.Controls/Presenters/ItemsPresenterBase.cs @@ -229,8 +229,6 @@ private void CreatePanel() } PanelCreated(Panel); - - ItemsChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } /// From fa72f9f209ea9cf2474e30a7c8f7943e63f403bd Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 13 Jul 2020 19:25:38 +0200 Subject: [PATCH 288/354] Make ncrunch work again. --- Avalonia.v3.ncrunchsolution | 1 + 1 file changed, 1 insertion(+) diff --git a/Avalonia.v3.ncrunchsolution b/Avalonia.v3.ncrunchsolution index a2208a9a91d..bef7e45524d 100644 --- a/Avalonia.v3.ncrunchsolution +++ b/Avalonia.v3.ncrunchsolution @@ -3,6 +3,7 @@ tests\TestFiles\**.* src\Avalonia.Build.Tasks\bin\Debug\netstandard2.0\Avalonia.Build.Tasks.dll + src\Avalonia.Build.Tasks\bin\Debug\netstandard2.0\Mono.Cecil.dll True .ncrunch From fca777bf91794d253165c07d554698a5e6629854 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 13 Jul 2020 18:21:45 -0300 Subject: [PATCH 289/354] fixes for relativepanel --- src/Avalonia.Controls/RelativePanel.cs | 541 +++++++++++++++++-------- 1 file changed, 374 insertions(+), 167 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index 07137e3d1aa..a5743f41533 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -8,35 +8,61 @@ namespace Avalonia.Controls { + public static partial class Extensions + { + /// + /// Returns a value that indicates whether the specified value is not a number (). + /// + /// A double-precision floating-point number. + /// true if evaluates to ; otherwise, false. + public static bool IsNaN(this double d) + { + return double.IsNaN(d); + } + + public static IEnumerable Do(this IEnumerable source, Action predicate) + { + var enumerable = source as IList ?? source.ToList(); + foreach (var item in enumerable) + { + predicate.Invoke(item); + } + + return enumerable; + } + } + public partial class RelativePanel : Panel { private readonly Graph _childGraph; public RelativePanel() => _childGraph = new Graph(); + - protected override Size MeasureOverride(Size availableSize) + private Layoutable? GetDependencyElement(AvaloniaProperty property, AvaloniaObject child) { - var maxSize = new Size(); + var dependency = child.GetValue(property); - foreach (var child in Children.OfType()) + if (dependency is Layoutable layoutable) { - child.Measure(availableSize); - maxSize = maxSize.WithWidth(Math.Max(maxSize.Width, child.DesiredSize.Width)); - maxSize = maxSize.WithHeight(Math.Max(maxSize.Height, child.DesiredSize.Height)); + if (Children.Contains((ILayoutable)layoutable)) + return layoutable; + + throw new ArgumentException($"RelativePanel error: Element does not exist in the current context: {property.Name}"); } - return maxSize; + return null; } - protected override Size ArrangeOverride(Size arrangeSize) + protected override Size MeasureOverride(Size availableSize) { - _childGraph.Reset(arrangeSize); + #region Calc DesiredSize - foreach (var child in Children.OfType()) + _childGraph.Clear(); + foreach (Layoutable child in Children) { if (child == null) continue; - var node = _childGraph.AddNode(child); node.AlignLeftWithNode = _childGraph.AddLink(node, GetDependencyElement(AlignLeftWithProperty, child)); @@ -50,106 +76,175 @@ protected override Size ArrangeOverride(Size arrangeSize) node.BelowNode = _childGraph.AddLink(node, GetDependencyElement(BelowProperty, child)); node.AlignHorizontalCenterWith = _childGraph.AddLink(node, GetDependencyElement(AlignHorizontalCenterWithProperty, child)); - node.AlignVerticalCenterWith = _childGraph.AddLink(node, GetDependencyElement(AlignVerticalCenterWithProperty, child)); - } + node.AlignVerticalCenterWith = _childGraph.AddLink(node, GetDependencyElement(AlignVerticalCenterWithProperty, child)); - if (_childGraph.CheckCyclic()) - { - throw new Exception("RelativePanel error: Circular dependency detected. Layout could not complete."); } + _childGraph.Measure(availableSize); - var size = new Size(); + #endregion - foreach (var child in Children) - { - if (child.Bounds.Bottom > size.Height) - { - size = size.WithHeight(child.Bounds.Bottom); - } + #region Calc AvailableSize - if (child.Bounds.Right > size.Width) - { - size = size.WithWidth(child.Bounds.Right); - } - } + _childGraph.Reset(); + var boundingSize = _childGraph.GetBoundingSize(Width.IsNaN(), Height.IsNaN()); + _childGraph.Reset(); + _childGraph.Measure(boundingSize); + return boundingSize; - if (VerticalAlignment == VerticalAlignment.Stretch) - { - size = size.WithHeight(arrangeSize.Height); - } - - if (HorizontalAlignment == HorizontalAlignment.Stretch) - { - size = size.WithWidth(arrangeSize.Width); - } + #endregion + } - return size; + protected override Size ArrangeOverride(Size arrangeSize) + { + _childGraph.GetNodes().Do(node => node.Arrange(arrangeSize)); + return arrangeSize; } - private Layoutable? GetDependencyElement(AvaloniaProperty property, AvaloniaObject child) + private class GraphNode { - var dependency = child.GetValue(property); + public bool Measured { get; set; } - if (dependency is Layoutable layoutable) - { - if (Children.Contains((ILayoutable)layoutable)) - return layoutable; + public Layoutable Element { get; } - throw new ArgumentException($"RelativePanel error: Element does not exist in the current context: {property.Name}"); - } + private bool HorizontalOffsetFlag { get; set; } - return null; - } + private bool VerticalOffsetFlag { get; set; } - private class GraphNode - { - public Point Position { get; set; } + private Size BoundingSize { get; set; } - public bool Arranged { get; set; } + public Size OriginDesiredSize { get; set; } - public Layoutable Element { get; } + public double Left { get; set; } = double.NaN; + + public double Top { get; set; } = double.NaN; + + public double Right { get; set; } = double.NaN; + + public double Bottom { get; set; } = double.NaN; public HashSet OutgoingNodes { get; } - public GraphNode? AlignLeftWithNode { get; set; } + public GraphNode AlignLeftWithNode { get; set; } - public GraphNode? AlignTopWithNode { get; set; } + public GraphNode AlignTopWithNode { get; set; } - public GraphNode? AlignRightWithNode { get; set; } + public GraphNode AlignRightWithNode { get; set; } - public GraphNode? AlignBottomWithNode { get; set; } + public GraphNode AlignBottomWithNode { get; set; } - public GraphNode? LeftOfNode { get; set; } + public GraphNode LeftOfNode { get; set; } - public GraphNode? AboveNode { get; set; } + public GraphNode AboveNode { get; set; } - public GraphNode? RightOfNode { get; set; } + public GraphNode RightOfNode { get; set; } - public GraphNode? BelowNode { get; set; } + public GraphNode BelowNode { get; set; } - public GraphNode? AlignHorizontalCenterWith { get; set; } + public GraphNode AlignHorizontalCenterWith { get; set; } - public GraphNode? AlignVerticalCenterWith { get; set; } + public GraphNode AlignVerticalCenterWith { get; set; } public GraphNode(Layoutable element) { OutgoingNodes = new HashSet(); Element = element; } + + public void Arrange(Size arrangeSize) => Element.Arrange(new Rect(Left, Top, Math.Max(arrangeSize.Width - Left - Right, 0), Math.Max(arrangeSize.Height - Top - Bottom, 0))); + + public void Reset() + { + Left = double.NaN; + Top = double.NaN; + Right = double.NaN; + Bottom = double.NaN; + Measured = false; + } + + public Size GetBoundingSize() + { + if (Measured) + return BoundingSize; + + if (!OutgoingNodes.Any()) + { + BoundingSize = Element.DesiredSize; + Measured = true; + } + else + { + BoundingSize = GetBoundingSize(this, Element.DesiredSize, OutgoingNodes); + Measured = true; + } + + return BoundingSize; + } + + private static Size GetBoundingSize(GraphNode prevNode, Size prevSize, IEnumerable nodes) + { + foreach (var node in nodes) + { + if (node.Measured || !node.OutgoingNodes.Any()) + { + if (prevNode.LeftOfNode != null && prevNode.LeftOfNode == node || + prevNode.RightOfNode != null && prevNode.RightOfNode == node) + { + prevSize = prevSize.WithWidth(prevSize.Width + node.BoundingSize.Width); + if (GetAlignHorizontalCenterWithPanel(node.Element) || node.HorizontalOffsetFlag) + { + prevSize = prevSize.WithWidth(prevSize.Width + prevNode.OriginDesiredSize.Width); + prevNode.HorizontalOffsetFlag = true; + } + if (node.VerticalOffsetFlag) + { + prevNode.VerticalOffsetFlag = true; + } + } + + if (prevNode.AboveNode != null && prevNode.AboveNode == node || + prevNode.BelowNode != null && prevNode.BelowNode == node) + { + prevSize = prevSize.WithHeight(prevSize.Height + node.BoundingSize.Height); + if (GetAlignVerticalCenterWithPanel(node.Element) || node.VerticalOffsetFlag) + { + prevSize = prevSize.WithHeight(prevSize.Height + node.OriginDesiredSize.Height); + prevNode.VerticalOffsetFlag = true; + } + if (node.HorizontalOffsetFlag) + { + prevNode.HorizontalOffsetFlag = true; + } + } + } + else + { + return GetBoundingSize(node, prevSize, node.OutgoingNodes); + } + } + + return prevSize; + } } private class Graph { private readonly Dictionary _nodeDic; - private Size _arrangeSize; + private Size AvailableSize { get; set; } - public Graph() + public Graph() => _nodeDic = new Dictionary(); + + public IEnumerable GetNodes() => _nodeDic.Values; + + public void Clear() { - _nodeDic = new Dictionary(); + AvailableSize = new Size(); + _nodeDic.Clear(); } - public GraphNode? AddLink(GraphNode from, Layoutable? to) + public void Reset() => _nodeDic.Values.Do(node => node.Reset()); + + public GraphNode AddLink(GraphNode from, Layoutable to) { if (to == null) return null; @@ -181,183 +276,295 @@ public GraphNode AddNode(Layoutable value) return _nodeDic[value]; } - public void Reset(Size arrangeSize) + public void Measure(Size availableSize) { - _arrangeSize = arrangeSize; - _nodeDic.Clear(); + AvailableSize = availableSize; + Measure(_nodeDic.Values, null); } - public bool CheckCyclic() => CheckCyclic(_nodeDic.Values, null, null); - - private bool CheckCyclic(IEnumerable nodes, GraphNode? waitNode, HashSet? set) + private void Measure(IEnumerable nodes, HashSet set) { - if (set == null) - { - set = new HashSet(); - } + set ??= new HashSet(); foreach (var node in nodes) { - if (!node.Arranged && node.OutgoingNodes.Count == 0) + /* + * 该节点无任何依赖,所以从这里开始计算元素位置。 + * 因为无任何依赖,所以忽略同级元素 + */ + if (!node.Measured && !node.OutgoingNodes.Any()) { - ArrangeChild(node, true); + MeasureChild(node); continue; } - if (node.OutgoingNodes.All(item => item.Arranged)) + // 判断依赖元素是否全部排列完毕 + if (node.OutgoingNodes.All(item => item.Measured)) { - ArrangeChild(node); + MeasureChild(node); continue; } + // 判断是否有循环 if (!set.Add(node.Element)) - return true; + throw new Exception("RelativePanel error: Circular dependency detected. Layout could not complete."); - return CheckCyclic(node.OutgoingNodes, node.Arranged ? null : node, set); - } + // 没有循环,且有依赖,则继续往下 + Measure(node.OutgoingNodes, set); - if (waitNode != null) - { - ArrangeChild(waitNode); + if (!node.Measured) + { + MeasureChild(node); + } } - return false; } - private void ArrangeChild(GraphNode node, bool ignoneSibling = false) + private void MeasureChild(GraphNode node) { var child = node.Element; - var childSize = child.DesiredSize; - var childPos = new Point(); + child.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); + node.OriginDesiredSize = child.DesiredSize; - if (GetAlignHorizontalCenterWithPanel(child)) + var alignLeftWithPanel = GetAlignLeftWithPanel(child); + var alignTopWithPanel = GetAlignTopWithPanel(child); + var alignRightWithPanel = GetAlignRightWithPanel(child); + var alignBottomWithPanel = GetAlignBottomWithPanel(child); + + #region Panel alignment + + if (alignLeftWithPanel) + node.Left = 0; + if (alignTopWithPanel) + node.Top = 0; + if (alignRightWithPanel) + node.Right = 0; + if (alignBottomWithPanel) + node.Bottom = 0; + + #endregion + + #region Sibling alignment + + if (node.AlignLeftWithNode != null) { - childPos = childPos.WithX((_arrangeSize.Width - childSize.Width) / 2); + node.Left = node.Left.IsNaN() ? node.AlignLeftWithNode.Left : node.AlignLeftWithNode.Left * 0.5; } - if (GetAlignVerticalCenterWithPanel(child)) + if (node.AlignTopWithNode != null) { - childPos = childPos.WithY((_arrangeSize.Height - childSize.Height) / 2); + node.Top = node.Top.IsNaN() ? node.AlignTopWithNode.Top : node.AlignTopWithNode.Top * 0.5; } - var alignLeftWithPanel = GetAlignLeftWithPanel(child); - var alignTopWithPanel = GetAlignTopWithPanel(child); - var alignRightWithPanel = GetAlignRightWithPanel(child); - var alignBottomWithPanel = GetAlignBottomWithPanel(child); + if (node.AlignRightWithNode != null) + { + node.Right = node.Right.IsNaN() + ? node.AlignRightWithNode.Right + : node.AlignRightWithNode.Right * 0.5; + } - if (!ignoneSibling) + if (node.AlignBottomWithNode != null) { - if (node.LeftOfNode != null) - { - childPos = childPos.WithX(node.LeftOfNode.Position.X - childSize.Width); - } + node.Bottom = node.Bottom.IsNaN() + ? node.AlignBottomWithNode.Bottom + : node.AlignBottomWithNode.Bottom * 0.5; + } - if (node.AboveNode != null) - { - childPos = childPos.WithY(node.AboveNode.Position.Y - childSize.Height); - } + #endregion + + #region Measure + + var availableHeight = AvailableSize.Height - node.Top - node.Bottom; + if (availableHeight.IsNaN()) + { + availableHeight = AvailableSize.Height; - if (node.RightOfNode != null) + if (!node.Top.IsNaN() && node.Bottom.IsNaN()) { - childPos = childPos.WithX(node.RightOfNode.Position.X + node.RightOfNode.Element.DesiredSize.Width); + availableHeight -= node.Top; } - - if (node.BelowNode != null) + else if (node.Top.IsNaN() && !node.Bottom.IsNaN()) { - childPos = childPos.WithY(node.BelowNode.Position.Y + node.BelowNode.Element.DesiredSize.Height); + availableHeight -= node.Bottom; } + } - if (node.AlignHorizontalCenterWith != null) + var availableWidth = AvailableSize.Width - node.Left - node.Right; + if (availableWidth.IsNaN()) + { + availableWidth = AvailableSize.Width; + + if (!node.Left.IsNaN() && node.Right.IsNaN()) { - childPos = childPos.WithX(node.AlignHorizontalCenterWith.Position.X + - (node.AlignHorizontalCenterWith.Element.DesiredSize.Width - childSize.Width) / 2); + availableWidth -= node.Left; } - - if (node.AlignVerticalCenterWith != null) + else if (node.Left.IsNaN() && !node.Right.IsNaN()) { - childPos = childPos.WithY(node.AlignVerticalCenterWith.Position.Y + - (node.AlignVerticalCenterWith.Element.DesiredSize.Height - childSize.Height) / 2); + availableWidth -= node.Right; } + } + + child.Measure(new Size(Math.Max(availableWidth, 0), Math.Max(availableHeight, 0))); + var childSize = child.DesiredSize; + + #endregion - if (node.AlignLeftWithNode != null) + #region Sibling positional + + if (node.LeftOfNode != null && node.Left.IsNaN()) + { + node.Left = node.LeftOfNode.Left - childSize.Width; + } + + if (node.AboveNode != null && node.Top.IsNaN()) + { + node.Top = node.AboveNode.Top - childSize.Height; + } + + if (node.RightOfNode != null) + { + if (node.Right.IsNaN()) { - childPos = childPos.WithX(node.AlignLeftWithNode.Position.X); + node.Right = node.RightOfNode.Right - childSize.Width; } - if (node.AlignTopWithNode != null) + if (node.Left.IsNaN()) { - childPos = childPos.WithY(node.AlignTopWithNode.Position.Y); + node.Left = AvailableSize.Width - node.RightOfNode.Right; } + } - if (node.AlignRightWithNode != null) + if (node.BelowNode != null) + { + if (node.Bottom.IsNaN()) { - childPos = childPos.WithX(node.AlignRightWithNode.Element.DesiredSize.Width + node.AlignRightWithNode.Position.X - childSize.Width); + node.Bottom = node.BelowNode.Bottom - childSize.Height; } - if (node.AlignBottomWithNode != null) + if (node.Top.IsNaN()) { - childPos = childPos.WithY(node.AlignBottomWithNode.Element.DesiredSize.Height + node.AlignBottomWithNode.Position.Y - childSize.Height); + node.Top = AvailableSize.Height - node.BelowNode.Bottom; } } - if (alignLeftWithPanel) + #endregion + + #region Sibling-center alignment + + if (node.AlignHorizontalCenterWith != null) { - if (node.AlignRightWithNode != null) - { - childPos = childPos.WithX((node.AlignRightWithNode.Element.DesiredSize.Width + node.AlignRightWithNode.Position.X - childSize.Width) / 2); - } + var halfWidthLeft = (AvailableSize.Width + node.AlignHorizontalCenterWith.Left - node.AlignHorizontalCenterWith.Right - childSize.Width) * 0.5; + var halfWidthRight = (AvailableSize.Width - node.AlignHorizontalCenterWith.Left + node.AlignHorizontalCenterWith.Right - childSize.Width) * 0.5; + + if (node.Left.IsNaN()) + node.Left = halfWidthLeft; else - { - childPos = childPos.WithX(0); - } + node.Left = (node.Left + halfWidthLeft) * 0.5; + + if (node.Right.IsNaN()) + node.Right = halfWidthRight; + else + node.Right = (node.Right + halfWidthRight) * 0.5; } - if (alignTopWithPanel) + if (node.AlignVerticalCenterWith != null) { - if (node.AlignBottomWithNode != null) - { - childPos = childPos.WithY((node.AlignBottomWithNode.Element.DesiredSize.Height + node.AlignBottomWithNode.Position.Y - childSize.Height) / 2); - } + var halfHeightTop = (AvailableSize.Height + node.AlignVerticalCenterWith.Top - node.AlignVerticalCenterWith.Bottom - childSize.Height) * 0.5; + var halfHeightBottom = (AvailableSize.Height - node.AlignVerticalCenterWith.Top + node.AlignVerticalCenterWith.Bottom - childSize.Height) * 0.5; + + if (node.Top.IsNaN()) + node.Top = halfHeightTop; else - { - childPos = childPos.WithY(0); - } + node.Top = (node.Top + halfHeightTop) * 0.5; + + if (node.Bottom.IsNaN()) + node.Bottom = halfHeightBottom; + else + node.Bottom = (node.Bottom + halfHeightBottom) * 0.5; } - if (alignRightWithPanel) + #endregion + + #region Panel-center alignment + + if (GetAlignHorizontalCenterWithPanel(child)) { - if (alignLeftWithPanel) - { - childPos = childPos.WithX((_arrangeSize.Width - childSize.Width) / 2); - } - else if (node.AlignLeftWithNode == null) - { - childPos = childPos.WithX(_arrangeSize.Width - childSize.Width); - } + var halfSubWidth = (AvailableSize.Width - childSize.Width) * 0.5; + + if (node.Left.IsNaN()) + node.Left = halfSubWidth; else - { - childPos = childPos.WithX((_arrangeSize.Width + node.AlignLeftWithNode.Position.X - childSize.Width) / 2); - } + node.Left = (node.Left + halfSubWidth) * 0.5; + + if (node.Right.IsNaN()) + node.Right = halfSubWidth; + else + node.Right = (node.Right + halfSubWidth) * 0.5; } - if (alignBottomWithPanel) + if (GetAlignVerticalCenterWithPanel(child)) { - if (alignTopWithPanel) - { - childPos = childPos.WithY((_arrangeSize.Height - childSize.Height) / 2); - } - else if (node.AlignTopWithNode == null) + var halfSubHeight = (AvailableSize.Height - childSize.Height) * 0.5; + + if (node.Top.IsNaN()) + node.Top = halfSubHeight; + else + node.Top = (node.Top + halfSubHeight) * 0.5; + + if (node.Bottom.IsNaN()) + node.Bottom = halfSubHeight; + else + node.Bottom = (node.Bottom + halfSubHeight) * 0.5; + } + + #endregion + + if (node.Left.IsNaN()) + { + if (!node.Right.IsNaN()) + node.Left = AvailableSize.Width - node.Right - childSize.Width; + else { - childPos = childPos.WithY(_arrangeSize.Height - childSize.Height); + node.Left = 0; + node.Right = AvailableSize.Width - childSize.Width; } + } + else if (!node.Left.IsNaN() && node.Right.IsNaN()) + { + node.Right = AvailableSize.Width - node.Left - childSize.Width; + } + + if (node.Top.IsNaN()) + { + if (!node.Bottom.IsNaN()) + node.Top = AvailableSize.Height - node.Bottom - childSize.Height; else { - childPos = childPos.WithY((_arrangeSize.Height + node.AlignTopWithNode.Position.Y - childSize.Height) / 2); + node.Top = 0; + node.Bottom = AvailableSize.Height - childSize.Height; } } + else if (!node.Top.IsNaN() && node.Bottom.IsNaN()) + { + node.Bottom = AvailableSize.Height - node.Top - childSize.Height; + } + + node.Measured = true; + } + + public Size GetBoundingSize(bool calcWidth, bool calcHeight) + { + var boundingSize = new Size(); + + foreach (var node in _nodeDic.Values) + { + var size = node.GetBoundingSize(); + boundingSize = boundingSize.WithWidth(Math.Max(boundingSize.Width, size.Width)); + boundingSize = boundingSize.WithHeight(Math.Max(boundingSize.Height, size.Height)); + } - child.Arrange(new Rect(childPos.X, childPos.Y, childSize.Width, childSize.Height)); - node.Position = childPos; - node.Arranged = true; + boundingSize = boundingSize.WithWidth(calcWidth ? boundingSize.Width : AvailableSize.Width); + boundingSize = boundingSize.WithHeight(calcHeight ? boundingSize.Height : AvailableSize.Height); + return boundingSize; } } } From c96f328d0633cdb27d126ac965fa746d1b3c999e Mon Sep 17 00:00:00 2001 From: Rustam Sayfutdinov Date: Tue, 14 Jul 2020 07:49:39 +0300 Subject: [PATCH 290/354] Fix typo in PointerReleasedEventMessage --- src/Avalonia.Controls/Remote/Server/RemoteServerTopLevelImpl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/Remote/Server/RemoteServerTopLevelImpl.cs b/src/Avalonia.Controls/Remote/Server/RemoteServerTopLevelImpl.cs index f5c673d5f97..931c27c5752 100644 --- a/src/Avalonia.Controls/Remote/Server/RemoteServerTopLevelImpl.cs +++ b/src/Avalonia.Controls/Remote/Server/RemoteServerTopLevelImpl.cs @@ -192,7 +192,7 @@ protected virtual void OnMessage(IAvaloniaRemoteTransportConnection transport, o GetAvaloniaInputModifiers(pressed.Modifiers))); }, DispatcherPriority.Input); } - if (obj is PointerPressedEventMessage released) + if (obj is PointerReleasedEventMessage released) { Dispatcher.UIThread.Post(() => { From 1c8541c06011f7827bf61aa5227ea894854b6f34 Mon Sep 17 00:00:00 2001 From: FoggyFinder Date: Tue, 14 Jul 2020 11:52:04 +0300 Subject: [PATCH 291/354] fix typo & add missing attribute --- src/Avalonia.Controls/RelativePanel.AttachedProperties.cs | 2 +- tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs index f93de5ca154..f64c26682bb 100644 --- a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs +++ b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs @@ -33,7 +33,7 @@ static RelativePanel() AlignVerticalCenterWithProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); BelowProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); LeftOfProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); - LeftOfProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + RightOfProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); } /// diff --git a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs index 4248e643eb9..99991cca026 100644 --- a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs @@ -31,6 +31,7 @@ public void Lays_Out_1_Child_Next_the_other() Assert.Equal(new Rect(20, 0, 20, 20), target.Children[1].Bounds); } + [Fact] public void Lays_Out_1_Child_Below_the_other() { var rect1 = new Rectangle { Height = 20, Width = 20 }; From 9f6c52711ef6e2cbd6c23634c869acfb914b8348 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 14 Jul 2020 10:59:46 -0300 Subject: [PATCH 292/354] add more relativepanel tests. --- .../RelativePanelTests.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs index 4248e643eb9..7b1f6d07b77 100644 --- a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs @@ -31,6 +31,7 @@ public void Lays_Out_1_Child_Next_the_other() Assert.Equal(new Rect(20, 0, 20, 20), target.Children[1].Bounds); } + [Fact] public void Lays_Out_1_Child_Below_the_other() { var rect1 = new Rectangle { Height = 20, Width = 20 }; @@ -55,5 +56,31 @@ public void Lays_Out_1_Child_Below_the_other() Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds); Assert.Equal(new Rect(0, 20, 20, 20), target.Children[1].Bounds); } + + [Fact] + public void RelativePanel_Can_Center() + { + var rect1 = new Rectangle { Height = 20, Width = 20 }; + var rect2 = new Rectangle { Height = 20, Width = 20 }; + + var target = new RelativePanel + { + VerticalAlignment = Layout.VerticalAlignment.Center, + HorizontalAlignment = Layout.HorizontalAlignment.Center, + Children = + { + rect1, rect2 + } + }; + + RelativePanel.SetAlignLeftWithPanel(rect1, true); + RelativePanel.SetBelow(rect2, rect1); + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Size(20, 40), target.Bounds.Size); + Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds); + Assert.Equal(new Rect(0, 20, 20, 20), target.Children[1].Bounds); + } } } From 0c365b837d030896a8503298db78e19e275ba738 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 14 Jul 2020 11:02:04 -0300 Subject: [PATCH 293/354] fix relativepanel --- src/Avalonia.Controls/RelativePanel.AttachedProperties.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs index f93de5ca154..f64c26682bb 100644 --- a/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs +++ b/src/Avalonia.Controls/RelativePanel.AttachedProperties.cs @@ -33,7 +33,7 @@ static RelativePanel() AlignVerticalCenterWithProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); BelowProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); LeftOfProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); - LeftOfProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); + RightOfProperty.Changed.AddClassHandler(OnAlignPropertiesChanged); } /// From cdd8df383eb6c850b93e470fcf8292a7143e87bf Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 14 Jul 2020 11:02:18 -0300 Subject: [PATCH 294/354] make utility methods internal. --- src/Avalonia.Controls/RelativePanel.cs | 54 +++++++++++++------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index a5743f41533..c50817f4607 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -8,36 +8,12 @@ namespace Avalonia.Controls { - public static partial class Extensions - { - /// - /// Returns a value that indicates whether the specified value is not a number (). - /// - /// A double-precision floating-point number. - /// true if evaluates to ; otherwise, false. - public static bool IsNaN(this double d) - { - return double.IsNaN(d); - } - - public static IEnumerable Do(this IEnumerable source, Action predicate) - { - var enumerable = source as IList ?? source.ToList(); - foreach (var item in enumerable) - { - predicate.Invoke(item); - } - - return enumerable; - } - } - public partial class RelativePanel : Panel { private readonly Graph _childGraph; public RelativePanel() => _childGraph = new Graph(); - + private Layoutable? GetDependencyElement(AvaloniaProperty property, AvaloniaObject child) { @@ -76,7 +52,7 @@ protected override Size MeasureOverride(Size availableSize) node.BelowNode = _childGraph.AddLink(node, GetDependencyElement(BelowProperty, child)); node.AlignHorizontalCenterWith = _childGraph.AddLink(node, GetDependencyElement(AlignHorizontalCenterWithProperty, child)); - node.AlignVerticalCenterWith = _childGraph.AddLink(node, GetDependencyElement(AlignVerticalCenterWithProperty, child)); + node.AlignVerticalCenterWith = _childGraph.AddLink(node, GetDependencyElement(AlignVerticalCenterWithProperty, child)); } _childGraph.Measure(availableSize); @@ -207,7 +183,7 @@ private static Size GetBoundingSize(GraphNode prevNode, Size prevSize, IEnumerab prevSize = prevSize.WithHeight(prevSize.Height + node.BoundingSize.Height); if (GetAlignVerticalCenterWithPanel(node.Element) || node.VerticalOffsetFlag) { - prevSize = prevSize.WithHeight(prevSize.Height + node.OriginDesiredSize.Height); + prevSize = prevSize.WithHeight(prevSize.Height + node.OriginDesiredSize.Height); prevNode.VerticalOffsetFlag = true; } if (node.HorizontalOffsetFlag) @@ -568,4 +544,28 @@ public Size GetBoundingSize(bool calcWidth, bool calcHeight) } } } + + internal static partial class Extensions + { + /// + /// Returns a value that indicates whether the specified value is not a number (). + /// + /// A double-precision floating-point number. + /// true if evaluates to ; otherwise, false. + public static bool IsNaN(this double d) + { + return double.IsNaN(d); + } + + public static IEnumerable Do(this IEnumerable source, Action predicate) + { + var enumerable = source as IList ?? source.ToList(); + foreach (var item in enumerable) + { + predicate.Invoke(item); + } + + return enumerable; + } + } } From 70c71263ae8841d81121a13902723ec62e2bd014 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 14 Jul 2020 11:04:34 -0300 Subject: [PATCH 295/354] fix nullable implementation. --- src/Avalonia.Controls/RelativePanel.cs | 27 +++++++++++++------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index c50817f4607..e0a47b056b8 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -1,4 +1,4 @@ -/// Ported from https://github.com/HandyOrg/HandyControl/blob/master/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs +// Ported from https://github.com/HandyOrg/HandyControl/blob/master/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs using System; using System.Collections.Generic; using System.Linq; @@ -14,7 +14,6 @@ public partial class RelativePanel : Panel public RelativePanel() => _childGraph = new Graph(); - private Layoutable? GetDependencyElement(AvaloniaProperty property, AvaloniaObject child) { var dependency = child.GetValue(property); @@ -100,25 +99,25 @@ private class GraphNode public HashSet OutgoingNodes { get; } - public GraphNode AlignLeftWithNode { get; set; } + public GraphNode? AlignLeftWithNode { get; set; } - public GraphNode AlignTopWithNode { get; set; } + public GraphNode? AlignTopWithNode { get; set; } - public GraphNode AlignRightWithNode { get; set; } + public GraphNode? AlignRightWithNode { get; set; } - public GraphNode AlignBottomWithNode { get; set; } + public GraphNode? AlignBottomWithNode { get; set; } - public GraphNode LeftOfNode { get; set; } + public GraphNode? LeftOfNode { get; set; } - public GraphNode AboveNode { get; set; } + public GraphNode? AboveNode { get; set; } - public GraphNode RightOfNode { get; set; } + public GraphNode? RightOfNode { get; set; } - public GraphNode BelowNode { get; set; } + public GraphNode? BelowNode { get; set; } - public GraphNode AlignHorizontalCenterWith { get; set; } + public GraphNode? AlignHorizontalCenterWith { get; set; } - public GraphNode AlignVerticalCenterWith { get; set; } + public GraphNode? AlignVerticalCenterWith { get; set; } public GraphNode(Layoutable element) { @@ -220,7 +219,7 @@ public void Clear() public void Reset() => _nodeDic.Values.Do(node => node.Reset()); - public GraphNode AddLink(GraphNode from, Layoutable to) + public GraphNode? AddLink(GraphNode from, Layoutable? to) { if (to == null) return null; @@ -258,7 +257,7 @@ public void Measure(Size availableSize) Measure(_nodeDic.Values, null); } - private void Measure(IEnumerable nodes, HashSet set) + private void Measure(IEnumerable nodes, HashSet? set) { set ??= new HashSet(); From 0001578f0cc4d5c0fb2c16249b0900f150aace34 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 14 Jul 2020 11:09:46 -0300 Subject: [PATCH 296/354] remove regions. --- src/Avalonia.Controls/RelativePanel.cs | 32 -------------------------- 1 file changed, 32 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index e0a47b056b8..a3ad30db761 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -31,8 +31,6 @@ public partial class RelativePanel : Panel protected override Size MeasureOverride(Size availableSize) { - #region Calc DesiredSize - _childGraph.Clear(); foreach (Layoutable child in Children) { @@ -56,17 +54,11 @@ protected override Size MeasureOverride(Size availableSize) } _childGraph.Measure(availableSize); - #endregion - - #region Calc AvailableSize - _childGraph.Reset(); var boundingSize = _childGraph.GetBoundingSize(Width.IsNaN(), Height.IsNaN()); _childGraph.Reset(); _childGraph.Measure(boundingSize); return boundingSize; - - #endregion } protected override Size ArrangeOverride(Size arrangeSize) @@ -305,8 +297,6 @@ private void MeasureChild(GraphNode node) var alignRightWithPanel = GetAlignRightWithPanel(child); var alignBottomWithPanel = GetAlignBottomWithPanel(child); - #region Panel alignment - if (alignLeftWithPanel) node.Left = 0; if (alignTopWithPanel) @@ -316,10 +306,6 @@ private void MeasureChild(GraphNode node) if (alignBottomWithPanel) node.Bottom = 0; - #endregion - - #region Sibling alignment - if (node.AlignLeftWithNode != null) { node.Left = node.Left.IsNaN() ? node.AlignLeftWithNode.Left : node.AlignLeftWithNode.Left * 0.5; @@ -344,10 +330,6 @@ private void MeasureChild(GraphNode node) : node.AlignBottomWithNode.Bottom * 0.5; } - #endregion - - #region Measure - var availableHeight = AvailableSize.Height - node.Top - node.Bottom; if (availableHeight.IsNaN()) { @@ -381,10 +363,6 @@ private void MeasureChild(GraphNode node) child.Measure(new Size(Math.Max(availableWidth, 0), Math.Max(availableHeight, 0))); var childSize = child.DesiredSize; - #endregion - - #region Sibling positional - if (node.LeftOfNode != null && node.Left.IsNaN()) { node.Left = node.LeftOfNode.Left - childSize.Width; @@ -421,10 +399,6 @@ private void MeasureChild(GraphNode node) } } - #endregion - - #region Sibling-center alignment - if (node.AlignHorizontalCenterWith != null) { var halfWidthLeft = (AvailableSize.Width + node.AlignHorizontalCenterWith.Left - node.AlignHorizontalCenterWith.Right - childSize.Width) * 0.5; @@ -457,10 +431,6 @@ private void MeasureChild(GraphNode node) node.Bottom = (node.Bottom + halfHeightBottom) * 0.5; } - #endregion - - #region Panel-center alignment - if (GetAlignHorizontalCenterWithPanel(child)) { var halfSubWidth = (AvailableSize.Width - childSize.Width) * 0.5; @@ -491,8 +461,6 @@ private void MeasureChild(GraphNode node) node.Bottom = (node.Bottom + halfSubHeight) * 0.5; } - #endregion - if (node.Left.IsNaN()) { if (!node.Right.IsNaN()) From 3fb97afa6d88431812e0398d29eb03127b667d8d Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 14 Jul 2020 13:33:35 -0300 Subject: [PATCH 297/354] make toggle switch use verticalcontentalignment center by default. --- src/Avalonia.Themes.Default/ToggleSwitch.xaml | 3 ++- src/Avalonia.Themes.Fluent/ToggleSwitch.xaml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Themes.Default/ToggleSwitch.xaml b/src/Avalonia.Themes.Default/ToggleSwitch.xaml index 893d64f5054..ded121f5f6b 100644 --- a/src/Avalonia.Themes.Default/ToggleSwitch.xaml +++ b/src/Avalonia.Themes.Default/ToggleSwitch.xaml @@ -43,7 +43,8 @@ - + + diff --git a/src/Avalonia.Themes.Fluent/ToggleSwitch.xaml b/src/Avalonia.Themes.Fluent/ToggleSwitch.xaml index e7f8fb1641e..4309edefe3f 100644 --- a/src/Avalonia.Themes.Fluent/ToggleSwitch.xaml +++ b/src/Avalonia.Themes.Fluent/ToggleSwitch.xaml @@ -43,7 +43,8 @@ - + + From 5cf6662f741cb0b9c1bc5cefc4ebe5f058aa8135 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 13 Jul 2020 17:25:15 +0200 Subject: [PATCH 298/354] Bind ListBox.SelectedItems again. Was removed accidentally. --- samples/ControlCatalog/Pages/ListBoxPage.xaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/samples/ControlCatalog/Pages/ListBoxPage.xaml b/samples/ControlCatalog/Pages/ListBoxPage.xaml index 47b4ce7151c..f4d81418ac8 100644 --- a/samples/ControlCatalog/Pages/ListBoxPage.xaml +++ b/samples/ControlCatalog/Pages/ListBoxPage.xaml @@ -10,7 +10,13 @@ HorizontalAlignment="Center" Spacing="16"> - + From 162583b2decfd264c6e4be9661d31209045eb36e Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 14 Jul 2020 14:30:31 -0300 Subject: [PATCH 299/354] add a failing unit test. --- .../ApplicationTests.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs b/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs index e533001242f..d485d424fba 100644 --- a/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Reactive.Subjects; +using Avalonia.Data; using Avalonia.Threading; using Avalonia.UnitTests; using Xunit; @@ -32,5 +34,20 @@ public void Raises_ResourcesChanged_When_Event_Handler_Added_After_Resources_Has Assert.True(raised); } } + + [Fact] + public void Can_Bind_To_DataContext() + { + using (UnitTestApplication.Start()) + { + var application = Application.Current; + + application.DataContext = "Test"; + + application.Bind(Application.NameProperty, new Binding(".")); + + Assert.Equal("Test", Application.Current.Name); + } + } } } From f1eae6ce1289140063f36f8c86800f3d2cf2a314 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 14 Jul 2020 14:31:00 -0300 Subject: [PATCH 300/354] correctly cast to IDataContextProvider. --- src/Markup/Avalonia.Markup/Data/BindingBase.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Markup/Avalonia.Markup/Data/BindingBase.cs b/src/Markup/Avalonia.Markup/Data/BindingBase.cs index 7c4e7b5efe4..3dbc83a7dfe 100644 --- a/src/Markup/Avalonia.Markup/Data/BindingBase.cs +++ b/src/Markup/Avalonia.Markup/Data/BindingBase.cs @@ -137,9 +137,9 @@ protected ExpressionObserver CreateDataContextObserver( { Contract.Requires(target != null); - if (!(target is IStyledElement)) + if (!(target is IDataContextProvider)) { - target = anchor as IStyledElement; + target = anchor as IDataContextProvider; if (target == null) { From a5499a908d8a7d740fc2873ce16298c08c34deae Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 14 Jul 2020 14:33:45 -0300 Subject: [PATCH 301/354] remove usings. --- tests/Avalonia.Controls.UnitTests/ApplicationTests.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs b/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs index d485d424fba..58ddc8ca606 100644 --- a/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs @@ -1,8 +1,5 @@ using System; -using System.Collections.Generic; -using System.Reactive.Subjects; using Avalonia.Data; -using Avalonia.Threading; using Avalonia.UnitTests; using Xunit; From 73a2637eed83f082be19a7d136aa5a0da164e1aa Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 14 Jul 2020 22:04:47 +0200 Subject: [PATCH 302/354] Added failing test for removing selected item with BeginInit. --- .../Primitives/SelectingItemsControlTests.cs | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs index fe9c7b1261c..9ef2750ff34 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs @@ -531,6 +531,7 @@ public void Removing_Selected_Item_Should_Clear_Selection() }; target.ApplyTemplate(); + target.Presenter.ApplyTemplate(); target.SelectedIndex = 1; Assert.Equal(items[1], target.SelectedItem); @@ -549,6 +550,45 @@ public void Removing_Selected_Item_Should_Clear_Selection() Assert.NotNull(receivedArgs); Assert.Empty(receivedArgs.AddedItems); Assert.Equal(new[] { removed }, receivedArgs.RemovedItems); + Assert.False(items.Single().IsSelected); + } + + [Fact] + public void Removing_Selected_Item_Should_Clear_Selection_With_BeginInit() + { + var items = new AvaloniaList + { + new Item(), + new Item(), + }; + + var target = new SelectingItemsControl(); + target.BeginInit(); + target.Items = items; + target.Template = Template(); + target.EndInit(); + + target.ApplyTemplate(); + target.Presenter.ApplyTemplate(); + target.SelectedIndex = 0; + + Assert.Equal(items[0], target.SelectedItem); + Assert.Equal(0, target.SelectedIndex); + + SelectionChangedEventArgs receivedArgs = null; + + target.SelectionChanged += (_, args) => receivedArgs = args; + + var removed = items[0]; + + items.RemoveAt(0); + + Assert.Null(target.SelectedItem); + Assert.Equal(-1, target.SelectedIndex); + Assert.NotNull(receivedArgs); + Assert.Empty(receivedArgs.AddedItems); + Assert.Equal(new[] { removed }, receivedArgs.RemovedItems); + Assert.False(items.Single().IsSelected); } [Fact] From 6555a51f5ae6986c17ad2da3f767e467712d612a Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 14 Jul 2020 22:37:23 +0200 Subject: [PATCH 303/354] Fix selection after deleting an item. `SelectionModel` needs to subscribe to `CollectionChanged` on the items before `ItemsControl` in order for the selection to be correct when we come to setting the selected state. Because `SelectionModel.Source` isn't subscribed during initialization in `ItemsChanged`, we also need to make sure we don't subscribe `ItemsControl` to the collection changes during initialization. Instead subscribe in `OnInitialized` (this requires a few tests to be rooted in order to be called). Fixes #4293 --- src/Avalonia.Controls/ItemsControl.cs | 11 +++++++++-- tests/Avalonia.Controls.UnitTests/CarouselTests.cs | 3 +++ .../Avalonia.Controls.UnitTests/ItemsControlTests.cs | 4 ++++ .../Primitives/SelectingItemsControlTests.cs | 4 ++++ .../Primitives/SelectingItemsControlTests_Multiple.cs | 4 ++++ 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/ItemsControl.cs b/src/Avalonia.Controls/ItemsControl.cs index 6e0ad66699d..da9f619932c 100644 --- a/src/Avalonia.Controls/ItemsControl.cs +++ b/src/Avalonia.Controls/ItemsControl.cs @@ -70,7 +70,6 @@ static ItemsControl() public ItemsControl() { PseudoClasses.Add(":empty"); - SubscribeToItems(_items); } /// @@ -265,6 +264,11 @@ protected virtual void OnContainersRecycled(ItemContainerEventArgs e) { } + protected override void OnInitialized() + { + SubscribeToItems(_items); + } + /// /// Handles directional navigation within the . /// @@ -330,7 +334,10 @@ protected virtual void ItemsChanged(AvaloniaPropertyChangedEventArgs e) Presenter.Items = newValue; } - SubscribeToItems(newValue); + if (IsInitialized) + { + SubscribeToItems(newValue); + } } /// diff --git a/tests/Avalonia.Controls.UnitTests/CarouselTests.cs b/tests/Avalonia.Controls.UnitTests/CarouselTests.cs index a292910faef..c6ca0fb2bf8 100644 --- a/tests/Avalonia.Controls.UnitTests/CarouselTests.cs +++ b/tests/Avalonia.Controls.UnitTests/CarouselTests.cs @@ -4,6 +4,7 @@ using Avalonia.Controls.Primitives; using Avalonia.Controls.Templates; using Avalonia.LogicalTree; +using Avalonia.UnitTests; using Avalonia.VisualTree; using Xunit; @@ -155,6 +156,7 @@ public void Selected_Item_Changes_To_First_Item_When_Item_Added() IsVirtualized = false }; + var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -247,6 +249,7 @@ public void Selected_Item_Changes_To_Next_First_Item_When_Item_Removed_From_Begg IsVirtualized = false }; + var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); diff --git a/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs index 684486cbae6..faaa3ed063b 100644 --- a/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs @@ -131,6 +131,7 @@ public void Control_Item_Should_Be_Removed_From_Logical_Children_Before_ApplyTem var child = new Control(); var items = new AvaloniaList(child); + var root = new TestRoot(target); target.Template = GetTemplate(); target.Items = items; items.RemoveAt(0); @@ -283,6 +284,7 @@ public void Adding_Items_Should_Fire_LogicalChildren_CollectionChanged() var items = new AvaloniaList { "Foo" }; var called = false; + var root = new TestRoot(target); target.Template = GetTemplate(); target.Items = items; target.ApplyTemplate(); @@ -303,6 +305,7 @@ public void Removing_Items_Should_Fire_LogicalChildren_CollectionChanged() var items = new AvaloniaList { "Foo", "Bar" }; var called = false; + var root = new TestRoot(target); target.Template = GetTemplate(); target.Items = items; target.ApplyTemplate(); @@ -376,6 +379,7 @@ public void Empty_Class_Should_Be_Cleared_When_Items_Added() Items = new[] { 1, 2, 3 }, }; + var root = new TestRoot(target); Assert.DoesNotContain(":empty", target.Classes); } diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs index 9ef2750ff34..e43e855ae0d 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs @@ -170,6 +170,8 @@ public void Setting_SelectedIndex_During_Initialize_Should_Select_Item_When_Alwa SelectionMode = SelectionMode.Single | SelectionMode.AlwaysSelected }; + var root = new TestRoot(listBox); + listBox.BeginInit(); listBox.SelectedIndex = 1; @@ -480,6 +482,7 @@ public void Adding_Selected_Item_Should_Update_Selection() Template = Template(), }; + var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); items.Add(new Item { IsSelected = true }); @@ -919,6 +922,7 @@ public void Removing_SelectedItem_Should_Clear_TabOnceActiveElement() Items = items, }; + var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs index dcf25beb500..e9ec8d114f4 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs @@ -1014,6 +1014,7 @@ public void Adding_Item_Before_SelectedItems_Should_Update_Selection() SelectionMode = SelectionMode.Multiple, }; + var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -1043,6 +1044,7 @@ public void Removing_Item_Before_SelectedItem_Should_Update_Selection() SelectionMode = SelectionMode.Multiple, }; + var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -1076,6 +1078,7 @@ public void Removing_SelectedItem_With_Multiple_Selection_Active_Should_Update_S SelectionMode = SelectionMode.Multiple, }; + var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -1199,6 +1202,7 @@ public void Adding_Selected_ItemContainers_Should_Update_Selection() Template = Template(), }; + var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); items.Add(new ItemContainer { IsSelected = true }); From e87697f901798c7f1fffe7bcca3a36c59f8c2a3c Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Wed, 15 Jul 2020 06:19:14 +0200 Subject: [PATCH 304/354] Allow combining TextTrimming and TextWrapping --- .../GenericTextParagraphProperties.cs | 15 +- .../TextFormatting/ShapedTextCharacters.cs | 3 +- .../TextCollapsingProperties.cs | 23 ++ .../TextFormatting/TextCollapsingStyle.cs | 18 ++ .../Media/TextFormatting/TextFormatterImpl.cs | 221 +++++------------- .../Media/TextFormatting/TextLayout.cs | 62 +++-- .../Media/TextFormatting/TextLine.cs | 11 + .../Media/TextFormatting/TextLineImpl.cs | 136 ++++++++++- .../Media/TextFormatting/TextLineMetrics.cs | 11 +- .../TextFormatting/TextParagraphProperties.cs | 5 - .../TextTrailingCharacterEllipsis.cs | 33 +++ .../TextTrailingWordEllipsis.cs | 37 +++ .../Unicode/LineBreakEnumerator.cs | 1 - src/Avalonia.Visuals/Media/TextWrapping.cs | 16 +- .../Media/TextFormatting/TextLayoutTests.cs | 12 +- .../Media/TextFormatting/TextLineTests.cs | 58 +++++ 16 files changed, 441 insertions(+), 221 deletions(-) create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextCollapsingProperties.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextCollapsingStyle.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextTrailingCharacterEllipsis.cs create mode 100644 src/Avalonia.Visuals/Media/TextFormatting/TextTrailingWordEllipsis.cs diff --git a/src/Avalonia.Visuals/Media/TextFormatting/GenericTextParagraphProperties.cs b/src/Avalonia.Visuals/Media/TextFormatting/GenericTextParagraphProperties.cs index c4302aecec9..8e7d934bca4 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/GenericTextParagraphProperties.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/GenericTextParagraphProperties.cs @@ -4,14 +4,12 @@ public class GenericTextParagraphProperties : TextParagraphProperties { private TextAlignment _textAlignment; private TextWrapping _textWrapping; - private TextTrimming _textTrimming; private double _lineHeight; public GenericTextParagraphProperties( TextRunProperties defaultTextRunProperties, TextAlignment textAlignment = TextAlignment.Left, - TextWrapping textWrapping = TextWrapping.WrapWithOverflow, - TextTrimming textTrimming = TextTrimming.None, + TextWrapping textWrapping = TextWrapping.NoWrap, double lineHeight = 0) { DefaultTextRunProperties = defaultTextRunProperties; @@ -20,8 +18,6 @@ public GenericTextParagraphProperties( _textWrapping = textWrapping; - _textTrimming = textTrimming; - _lineHeight = lineHeight; } @@ -31,8 +27,6 @@ public GenericTextParagraphProperties( public override TextWrapping TextWrapping => _textWrapping; - public override TextTrimming TextTrimming => _textTrimming; - public override double LineHeight => _lineHeight; /// @@ -50,13 +44,6 @@ internal void SetTextWrapping(TextWrapping textWrapping) { _textWrapping = textWrapping; } - /// - /// Set text trimming - /// - internal void SetTextTrimming(TextTrimming textTrimming) - { - _textTrimming = textTrimming; - } /// /// Set line height diff --git a/src/Avalonia.Visuals/Media/TextFormatting/ShapedTextCharacters.cs b/src/Avalonia.Visuals/Media/TextFormatting/ShapedTextCharacters.cs index b71fe5bc3c8..9e67a03f452 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/ShapedTextCharacters.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/ShapedTextCharacters.cs @@ -1,5 +1,4 @@ -using Avalonia.Media.TextFormatting.Unicode; -using Avalonia.Utilities; +using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting { diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextCollapsingProperties.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextCollapsingProperties.cs new file mode 100644 index 00000000000..ffd65423a30 --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextCollapsingProperties.cs @@ -0,0 +1,23 @@ +namespace Avalonia.Media.TextFormatting +{ + /// + /// Properties of text collapsing + /// + public abstract class TextCollapsingProperties + { + /// + /// Gets the width in which the collapsible range is constrained to + /// + public abstract double Width { get; } + + /// + /// Gets the text run that is used as collapsing symbol + /// + public abstract TextRun Symbol { get; } + + /// + /// Gets the style of collapsing + /// + public abstract TextCollapsingStyle Style { get; } + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextCollapsingStyle.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextCollapsingStyle.cs new file mode 100644 index 00000000000..1523cc4d9aa --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextCollapsingStyle.cs @@ -0,0 +1,18 @@ +namespace Avalonia.Media.TextFormatting +{ + /// + /// Text collapsing style + /// + public enum TextCollapsingStyle + { + /// + /// Collapse trailing characters + /// + TrailingCharacter, + + /// + /// Collapse trailing words + /// + TrailingWord, + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs index 3ad23f35046..061949a5c9b 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs @@ -1,49 +1,41 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using Avalonia.Media.TextFormatting.Unicode; -using Avalonia.Platform; -using Avalonia.Utilities; namespace Avalonia.Media.TextFormatting { internal class TextFormatterImpl : TextFormatter { - private static readonly ReadOnlySlice s_ellipsis = new ReadOnlySlice(new[] { '\u2026' }); - /// public override TextLine FormatLine(ITextSource textSource, int firstTextSourceIndex, double paragraphWidth, TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak = null) { - var textTrimming = paragraphProperties.TextTrimming; var textWrapping = paragraphProperties.TextWrapping; - TextLine textLine = null; var textRuns = FetchTextRuns(textSource, firstTextSourceIndex, previousLineBreak, out var nextLineBreak); var textRange = GetTextRange(textRuns); - if (textTrimming != TextTrimming.None) - { - textLine = PerformTextTrimming(textRuns, textRange, paragraphWidth, paragraphProperties); - } - else + TextLine textLine; + + switch (textWrapping) { - switch (textWrapping) - { - case TextWrapping.NoWrap: - { - var textLineMetrics = - TextLineMetrics.Create(textRuns, textRange, paragraphWidth, paragraphProperties); + case TextWrapping.NoWrap: + { + var textLineMetrics = + TextLineMetrics.Create(textRuns, textRange, paragraphWidth, paragraphProperties); - textLine = new TextLineImpl(textRuns, textLineMetrics, nextLineBreak); - break; - } - case TextWrapping.WrapWithOverflow: - case TextWrapping.Wrap: - { - textLine = PerformTextWrapping(textRuns, textRange, paragraphWidth, paragraphProperties); - break; - } - } + textLine = new TextLineImpl(textRuns, textLineMetrics, nextLineBreak); + break; + } + case TextWrapping.WrapWithOverflow: + case TextWrapping.Wrap: + { + textLine = PerformTextWrapping(textRuns, textRange, paragraphWidth, paragraphProperties); + break; + } + default: + throw new ArgumentOutOfRangeException(); } return textLine; @@ -174,87 +166,6 @@ private static bool TryGetLineBreak(TextRun textRun, out LineBreak lineBreak) return false; } - /// - /// Performs text trimming and returns a trimmed line. - /// - /// The text runs to perform the trimming on. - /// The text range that is covered by the text runs. - /// A value that specifies the width of the paragraph that the line fills. - /// A value that represents paragraph properties, - /// such as TextWrapping, TextAlignment, or TextStyle. - /// - private static TextLine PerformTextTrimming(IReadOnlyList textRuns, TextRange textRange, - double paragraphWidth, TextParagraphProperties paragraphProperties) - { - var textTrimming = paragraphProperties.TextTrimming; - var availableWidth = paragraphWidth; - var currentWidth = 0.0; - var runIndex = 0; - - while (runIndex < textRuns.Count) - { - var currentRun = textRuns[runIndex]; - - currentWidth += currentRun.GlyphRun.Bounds.Width; - - if (currentWidth > availableWidth) - { - var ellipsisRun = CreateEllipsisRun(currentRun.Properties); - - var measuredLength = MeasureText(currentRun, availableWidth - ellipsisRun.GlyphRun.Bounds.Width); - - if (textTrimming == TextTrimming.WordEllipsis) - { - if (measuredLength < textRange.End) - { - var currentBreakPosition = 0; - - var lineBreaker = new LineBreakEnumerator(currentRun.Text); - - while (currentBreakPosition < measuredLength && lineBreaker.MoveNext()) - { - var nextBreakPosition = lineBreaker.Current.PositionWrap; - - if (nextBreakPosition == 0) - { - break; - } - - if (nextBreakPosition > measuredLength) - { - break; - } - - currentBreakPosition = nextBreakPosition; - } - - measuredLength = currentBreakPosition; - } - } - - var splitResult = SplitTextRuns(textRuns, measuredLength); - - var trimmedRuns = new List(splitResult.First.Count + 1); - - trimmedRuns.AddRange(splitResult.First); - - trimmedRuns.Add(ellipsisRun); - - var textLineMetrics = - TextLineMetrics.Create(trimmedRuns, textRange, paragraphWidth, paragraphProperties); - - return new TextLineImpl(trimmedRuns, textLineMetrics); - } - - availableWidth -= currentRun.GlyphRun.Bounds.Width; - - runIndex++; - } - - return new TextLineImpl(textRuns, - TextLineMetrics.Create(textRuns, textRange, paragraphWidth, paragraphProperties)); - } - /// /// Performs text wrapping returns a list of text lines. /// @@ -269,7 +180,7 @@ private static TextLine PerformTextWrapping(IReadOnlyList var availableWidth = paragraphWidth; var currentWidth = 0.0; var runIndex = 0; - var length = 0; + var currentLength = 0; while (runIndex < textRuns.Count) { @@ -279,58 +190,53 @@ private static TextLine PerformTextWrapping(IReadOnlyList { var measuredLength = MeasureText(currentRun, paragraphWidth - currentWidth); + var breakFound = false; + + var currentBreakPosition = 0; + if (measuredLength < currentRun.Text.Length) { - if (paragraphProperties.TextWrapping == TextWrapping.WrapWithOverflow) - { - var lineBreaker = new LineBreakEnumerator(currentRun.Text.Skip(measuredLength)); + var lineBreaker = new LineBreakEnumerator(currentRun.Text); - if (lineBreaker.MoveNext()) - { - measuredLength += lineBreaker.Current.PositionWrap; - } - else - { - measuredLength = currentRun.Text.Length; - } - } - else + while (currentBreakPosition < measuredLength && lineBreaker.MoveNext()) { - var currentBreakPosition = -1; + var nextBreakPosition = lineBreaker.Current.PositionWrap; - var lineBreaker = new LineBreakEnumerator(currentRun.Text); - - while (currentBreakPosition < measuredLength && lineBreaker.MoveNext()) + if (nextBreakPosition == 0 || nextBreakPosition > measuredLength) { - var nextBreakPosition = lineBreaker.Current.PositionWrap; + break; + } - if (nextBreakPosition == 0) - { - break; - } + breakFound = lineBreaker.Current.Required || + lineBreaker.Current.PositionWrap != currentRun.Text.Length; - if (nextBreakPosition > measuredLength) - { - break; - } + currentBreakPosition = nextBreakPosition; + } + } - currentBreakPosition = nextBreakPosition; - } + if (breakFound) + { + measuredLength = currentBreakPosition; + } + else + { + if (paragraphProperties.TextWrapping == TextWrapping.WrapWithOverflow) + { + var lineBreaker = new LineBreakEnumerator(currentRun.Text.Skip(currentBreakPosition)); - if (currentBreakPosition != -1) + if (lineBreaker.MoveNext()) { - measuredLength = currentBreakPosition; + measuredLength = currentBreakPosition + lineBreaker.Current.PositionWrap; } - } } - length += measuredLength; + currentLength += measuredLength; - var splitResult = SplitTextRuns(textRuns, length); + var splitResult = SplitTextRuns(textRuns, currentLength); var textLineMetrics = TextLineMetrics.Create(splitResult.First, - new TextRange(textRange.Start, length), paragraphWidth, paragraphProperties); + new TextRange(textRange.Start, currentLength), paragraphWidth, paragraphProperties); var lineBreak = splitResult.Second != null && splitResult.Second.Count > 0 ? new TextLineBreak(splitResult.Second) : @@ -341,7 +247,7 @@ private static TextLine PerformTextWrapping(IReadOnlyList currentWidth += currentRun.GlyphRun.Bounds.Width; - length += currentRun.GlyphRun.Characters.Length; + currentLength += currentRun.GlyphRun.Characters.Length; runIndex++; } @@ -356,7 +262,7 @@ private static TextLine PerformTextWrapping(IReadOnlyList /// The text run. /// The available width. /// - private static int MeasureText(ShapedTextCharacters textCharacters, double availableWidth) + internal static int MeasureText(ShapedTextCharacters textCharacters, double availableWidth) { var glyphRun = textCharacters.GlyphRun; @@ -391,10 +297,8 @@ private static int MeasureText(ShapedTextCharacters textCharacters, double avail } else { - for (var i = 0; i < glyphRun.GlyphAdvances.Length; i++) + foreach (var advance in glyphRun.GlyphAdvances) { - var advance = glyphRun.GlyphAdvances[i]; - if (currentWidth + advance > availableWidth) { break; @@ -423,21 +327,6 @@ private static int MeasureText(ShapedTextCharacters textCharacters, double avail return lastCluster - firstCluster; } - /// - /// Creates an ellipsis. - /// - /// The text run properties. - /// - private static ShapedTextCharacters CreateEllipsisRun(TextRunProperties properties) - { - var formatterImpl = AvaloniaLocator.Current.GetService(); - - var glyphRun = formatterImpl.ShapeText(s_ellipsis, properties.Typeface, properties.FontRenderingEmSize, - properties.CultureInfo); - - return new ShapedTextCharacters(glyphRun, properties); - } - /// /// Gets the text range that is covered by the text runs. /// @@ -470,7 +359,7 @@ private static TextRange GetTextRange(IReadOnlyList textRuns) /// The text run's. /// The length to split at. /// The split text runs. - private static SplitTextRunsResult SplitTextRuns(IReadOnlyList textRuns, int length) + internal static SplitTextRunsResult SplitTextRuns(IReadOnlyList textRuns, int length) { var currentLength = 0; @@ -543,7 +432,7 @@ private static SplitTextRunsResult SplitTextRuns(IReadOnlyList first, IReadOnlyList second) { diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs index 54745144c8b..92db6b69c4b 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Avalonia.Media.TextFormatting.Unicode; using Avalonia.Utilities; -using Avalonia.Platform; namespace Avalonia.Media.TextFormatting { @@ -17,6 +15,7 @@ public class TextLayout private readonly ReadOnlySlice _text; private readonly TextParagraphProperties _paragraphProperties; private readonly IReadOnlyList> _textStyleOverrides; + private readonly TextTrimming _textTrimming; /// /// Initializes a new instance of the class. @@ -54,9 +53,11 @@ public TextLayout( new ReadOnlySlice(text.AsMemory()); _paragraphProperties = - CreateTextParagraphProperties(typeface, fontSize, foreground, textAlignment, textWrapping, textTrimming, + CreateTextParagraphProperties(typeface, fontSize, foreground, textAlignment, textWrapping, textDecorations, lineHeight); + _textTrimming = textTrimming; + _textStyleOverrides = textStyleOverrides; LineHeight = lineHeight; @@ -143,18 +144,16 @@ public void Draw(DrawingContext context, Point origin) /// The foreground. /// The text alignment. /// The text wrapping. - /// The text trimming. /// The text decorations. /// The height of each line of text. /// private static TextParagraphProperties CreateTextParagraphProperties(Typeface typeface, double fontSize, - IBrush foreground, TextAlignment textAlignment, TextWrapping textWrapping, TextTrimming textTrimming, + IBrush foreground, TextAlignment textAlignment, TextWrapping textWrapping, TextDecorationCollection textDecorations, double lineHeight) { var textRunStyle = new GenericTextRunProperties(typeface, fontSize, textDecorations, foreground); - return new GenericTextParagraphProperties(textRunStyle, textAlignment, textWrapping, textTrimming, - lineHeight); + return new GenericTextParagraphProperties(textRunStyle, textAlignment, textWrapping, lineHeight); } /// @@ -214,25 +213,44 @@ private void UpdateLayout() var textSource = new FormattedTextSource(_text, _paragraphProperties.DefaultTextRunProperties, _textStyleOverrides); - TextLineBreak previousLineBreak = null; + TextLine previousLine = null; - while (currentPosition < _text.Length && (MaxLines == 0 || textLines.Count < MaxLines)) + while (currentPosition < _text.Length) { var textLine = TextFormatter.Current.FormatLine(textSource, currentPosition, MaxWidth, - _paragraphProperties, previousLineBreak); + _paragraphProperties, previousLine?.LineBreak); - previousLineBreak = textLine.LineBreak; + currentPosition += textLine.TextRange.Length; - textLines.Add(textLine); + if (textLines.Count > 0) + { + if (textLines.Count == MaxLines || !double.IsPositiveInfinity(MaxHeight) && + height + textLine.LineMetrics.Size.Height > MaxHeight) + { + if (previousLine?.LineBreak != null && _textTrimming != TextTrimming.None) + { + var collapsedLine = + previousLine.Collapse(GetCollapsingProperties(MaxWidth)); - UpdateBounds(textLine, ref width, ref height); + textLines[textLines.Count - 1] = collapsedLine; + } + + break; + } + } - if (!double.IsPositiveInfinity(MaxHeight) && height > MaxHeight) + var hasOverflowed = textLine.LineMetrics.HasOverflowed; + + if (hasOverflowed && _textTrimming != TextTrimming.None) { - break; + textLine = textLine.Collapse(GetCollapsingProperties(MaxWidth)); } - currentPosition += textLine.TextRange.Length; + textLines.Add(textLine); + + UpdateBounds(textLine, ref width, ref height); + + previousLine = textLine; if (currentPosition != _text.Length || textLine.LineBreak == null) { @@ -250,6 +268,18 @@ private void UpdateLayout() } } + private TextCollapsingProperties GetCollapsingProperties(double width) + { + return _textTrimming switch + { + TextTrimming.CharacterEllipsis => new TextTrailingCharacterEllipsis(width, + _paragraphProperties.DefaultTextRunProperties), + TextTrimming.WordEllipsis => new TextTrailingWordEllipsis(width, + _paragraphProperties.DefaultTextRunProperties), + _ => throw new ArgumentOutOfRangeException(), + }; + } + private readonly struct FormattedTextSource : ITextSource { private readonly ReadOnlySlice _text; diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs index c3b7dfc77a3..3e3258f38ae 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs @@ -39,6 +39,11 @@ public abstract class TextLine /// public abstract TextLineBreak LineBreak { get; } + /// + /// Client to get a boolean value indicates whether a line has been collapsed + /// + public abstract bool HasCollapsed { get; } + /// /// Draws the at the given origin. /// @@ -46,6 +51,12 @@ public abstract class TextLine /// The origin. public abstract void Draw(DrawingContext drawingContext, Point origin); + /// + /// Client to collapse the line and get a collapsed line that fits for display + /// + /// a list of collapsing properties + public abstract TextLine Collapse(params TextCollapsingProperties[] collapsingPropertiesList); + /// /// Client to get the character hit corresponding to the specified /// distance from the beginning of the line. diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs index a1a9b507932..820c943aea4 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs @@ -1,4 +1,6 @@ using System.Collections.Generic; +using Avalonia.Media.TextFormatting.Unicode; +using Avalonia.Platform; namespace Avalonia.Media.TextFormatting { @@ -7,11 +9,12 @@ internal class TextLineImpl : TextLine private readonly IReadOnlyList _textRuns; public TextLineImpl(IReadOnlyList textRuns, TextLineMetrics lineMetrics, - TextLineBreak lineBreak = null) + TextLineBreak lineBreak = null, bool hasCollapsed = false) { _textRuns = textRuns; LineMetrics = lineMetrics; LineBreak = lineBreak; + HasCollapsed = hasCollapsed; } /// @@ -26,6 +29,9 @@ public TextLineImpl(IReadOnlyList textRuns, TextLineMetric /// public override TextLineBreak LineBreak { get; } + /// + public override bool HasCollapsed { get; } + /// public override void Draw(DrawingContext drawingContext, Point origin) { @@ -41,6 +47,98 @@ public override void Draw(DrawingContext drawingContext, Point origin) } } + public override TextLine Collapse(params TextCollapsingProperties[] collapsingPropertiesList) + { + if (collapsingPropertiesList == null || collapsingPropertiesList.Length == 0) + { + return this; + } + + var collapsingProperties = collapsingPropertiesList[0]; + var runIndex = 0; + var currentWidth = 0.0; + var textRange = TextRange; + var collapsedLength = 0; + TextLineMetrics textLineMetrics; + + var shapedSymbol = CreateShapedSymbol(collapsingProperties.Symbol); + + var availableWidth = collapsingProperties.Width - shapedSymbol.Bounds.Width; + + while (runIndex < _textRuns.Count) + { + var currentRun = _textRuns[runIndex]; + + currentWidth += currentRun.GlyphRun.Bounds.Width; + + if (currentWidth > availableWidth) + { + var measuredLength = TextFormatterImpl.MeasureText(currentRun, availableWidth); + + var currentBreakPosition = 0; + + if (measuredLength < textRange.End) + { + var lineBreaker = new LineBreakEnumerator(currentRun.Text); + + while (currentBreakPosition < measuredLength && lineBreaker.MoveNext()) + { + var nextBreakPosition = lineBreaker.Current.PositionWrap; + + if (nextBreakPosition == 0) + { + break; + } + + if (nextBreakPosition > measuredLength) + { + break; + } + + currentBreakPosition = nextBreakPosition; + } + } + + if (collapsingProperties.Style == TextCollapsingStyle.TrailingWord) + { + measuredLength = currentBreakPosition; + } + + collapsedLength += measuredLength; + + var splitResult = TextFormatterImpl.SplitTextRuns(_textRuns, collapsedLength); + + var shapedTextCharacters = new List(splitResult.First.Count + 1); + + shapedTextCharacters.AddRange(splitResult.First); + + shapedTextCharacters.Add(shapedSymbol); + + textRange = new TextRange(textRange.Start, collapsedLength); + + var shapedWidth = GetShapedWidth(shapedTextCharacters); + + textLineMetrics = new TextLineMetrics(new Size(shapedWidth, LineMetrics.Size.Height), + LineMetrics.TextBaseline, textRange, false); + + return new TextLineImpl(shapedTextCharacters, textLineMetrics, LineBreak, true); + } + + availableWidth -= currentRun.GlyphRun.Bounds.Width; + + collapsedLength += currentRun.GlyphRun.Characters.Length; + + runIndex++; + } + + textLineMetrics = + new TextLineMetrics(LineMetrics.Size.WithWidth(LineMetrics.Size.Width + shapedSymbol.Bounds.Width), + LineMetrics.TextBaseline, TextRange, LineMetrics.HasOverflowed); + + return new TextLineImpl(new List(_textRuns) { shapedSymbol }, textLineMetrics, null, + true); + } + /// public override CharacterHit GetCharacterHitFromDistance(double distance) { @@ -230,5 +328,41 @@ private int GetRunIndexAtCodepointIndex(int codepointIndex) return runIndex; } + + /// + /// Creates a shaped symbol. + /// + /// The symbol run to shape. + /// + /// The shaped symbol. + /// + internal static ShapedTextCharacters CreateShapedSymbol(TextRun textRun) + { + var formatterImpl = AvaloniaLocator.Current.GetService(); + + var glyphRun = formatterImpl.ShapeText(textRun.Text, textRun.Properties.Typeface, textRun.Properties.FontRenderingEmSize, + textRun.Properties.CultureInfo); + + return new ShapedTextCharacters(glyphRun, textRun.Properties); + } + + /// + /// Gets the shaped width of specified shaped text characters. + /// + /// The shaped text characters. + /// + /// The shaped width. + /// + private static double GetShapedWidth(IReadOnlyList shapedTextCharacters) + { + var shapedWidth = 0.0; + + for (var i = 0; i < shapedTextCharacters.Count; i++) + { + shapedWidth += shapedTextCharacters[i].Bounds.Width; + } + + return shapedWidth; + } } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLineMetrics.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLineMetrics.cs index 2f7809ff351..6875cc1c04a 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLineMetrics.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLineMetrics.cs @@ -9,11 +9,12 @@ namespace Avalonia.Media.TextFormatting /// public readonly struct TextLineMetrics { - public TextLineMetrics(Size size, double textBaseline, TextRange textRange) + public TextLineMetrics(Size size, double textBaseline, TextRange textRange, bool hasOverflowed) { Size = size; TextBaseline = textBaseline; TextRange = textRange; + HasOverflowed = hasOverflowed; } /// @@ -37,6 +38,12 @@ public TextLineMetrics(Size size, double textBaseline, TextRange textRange) /// public double TextBaseline { get; } + /// + /// Gets a boolean value that indicates whether content of the line overflows + /// the specified paragraph width. + /// + public bool HasOverflowed { get; } + /// /// Creates the text line metrics. /// @@ -83,7 +90,7 @@ public static TextLineMetrics Create(IEnumerable textRuns, TextRange te descent - ascent + lineGap : paragraphProperties.LineHeight); - return new TextLineMetrics(size, -ascent, textRange); + return new TextLineMetrics(size, -ascent, textRange, size.Width > paragraphWidth); } } } diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextParagraphProperties.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextParagraphProperties.cs index 39eb695404f..3ecd1aafd93 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextParagraphProperties.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextParagraphProperties.cs @@ -26,11 +26,6 @@ public abstract class TextParagraphProperties /// public abstract TextWrapping TextWrapping { get; } - /// - /// Gets the text trimming. - /// - public abstract TextTrimming TextTrimming { get; } - /// /// Paragraph's line height /// diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextTrailingCharacterEllipsis.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextTrailingCharacterEllipsis.cs new file mode 100644 index 00000000000..4bd46e8c751 --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextTrailingCharacterEllipsis.cs @@ -0,0 +1,33 @@ +using Avalonia.Utilities; + +namespace Avalonia.Media.TextFormatting +{ + /// + /// a collapsing properties to collapse whole line toward the end + /// at character granularity and with ellipsis being the collapsing symbol + /// + public class TextTrailingCharacterEllipsis : TextCollapsingProperties + { + private static readonly ReadOnlySlice s_ellipsis = new ReadOnlySlice(new[] { '\u2026' }); + + /// + /// Construct a text trailing character ellipsis collapsing properties + /// + /// width in which collapsing is constrained to + /// text run properties of ellispis symbol + public TextTrailingCharacterEllipsis(double width, TextRunProperties textRunProperties) + { + Width = width; + Symbol = new TextCharacters(s_ellipsis, textRunProperties); + } + + /// + public sealed override double Width { get; } + + /// + public sealed override TextRun Symbol { get; } + + /// + public sealed override TextCollapsingStyle Style { get; } = TextCollapsingStyle.TrailingCharacter; + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextTrailingWordEllipsis.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextTrailingWordEllipsis.cs new file mode 100644 index 00000000000..9dffddd207d --- /dev/null +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextTrailingWordEllipsis.cs @@ -0,0 +1,37 @@ +using Avalonia.Utilities; + +namespace Avalonia.Media.TextFormatting +{ + /// + /// a collapsing properties to collapse whole line toward the end + /// at word granularity and with ellipsis being the collapsing symbol + /// + public class TextTrailingWordEllipsis : TextCollapsingProperties + { + private static readonly ReadOnlySlice s_ellipsis = new ReadOnlySlice(new[] { '\u2026' }); + + /// + /// Construct a text trailing word ellipsis collapsing properties + /// + /// width in which collapsing is constrained to + /// text run properties of ellispis symbol + public TextTrailingWordEllipsis( + double width, + TextRunProperties textRunProperties + ) + { + Width = width; + Symbol = new TextCharacters(s_ellipsis, textRunProperties); + } + + + /// + public sealed override double Width { get; } + + /// + public sealed override TextRun Symbol { get; } + + /// + public sealed override TextCollapsingStyle Style { get; } = TextCollapsingStyle.TrailingWord; + } +} diff --git a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/LineBreakEnumerator.cs b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/LineBreakEnumerator.cs index 26f77211286..76bb9ac44f4 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/Unicode/LineBreakEnumerator.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/Unicode/LineBreakEnumerator.cs @@ -109,7 +109,6 @@ public bool MoveNext() { case PairBreakType.DI: // Direct break shouldBreak = true; - _lastPos = _pos; break; case PairBreakType.IN: // possible indirect break diff --git a/src/Avalonia.Visuals/Media/TextWrapping.cs b/src/Avalonia.Visuals/Media/TextWrapping.cs index d649bda23fd..b7915e5612d 100644 --- a/src/Avalonia.Visuals/Media/TextWrapping.cs +++ b/src/Avalonia.Visuals/Media/TextWrapping.cs @@ -5,13 +5,6 @@ namespace Avalonia.Media /// public enum TextWrapping { - /// - /// Line-breaking occurs if the line overflows the available block width. - /// However, a line may overflow the block width if the line breaking algorithm - /// cannot determine a break opportunity, as in the case of a very long word. - /// - WrapWithOverflow, - /// /// Text should not wrap. /// @@ -20,6 +13,13 @@ public enum TextWrapping /// /// Text can wrap. /// - Wrap + Wrap, + + /// + /// Line-breaking occurs if the line overflows the available block width. + /// However, a line may overflow the block width if the line breaking algorithm + /// cannot determine a break opportunity, as in the case of a very long word. + /// + WrapWithOverflow } } diff --git a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLayoutTests.cs b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLayoutTests.cs index 43a791b2cbe..bf41381b52c 100644 --- a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLayoutTests.cs +++ b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLayoutTests.cs @@ -490,10 +490,10 @@ public void Should_Layout_Corrupted_Text() } } - [InlineData("0123456789\r0123456789", 2)] - [InlineData("0123456789", 1)] + [InlineData("0123456789\r0123456789")] + [InlineData("0123456789")] [Theory] - public void Should_Include_Last_Line_When_Constraint_Is_Surpassed(string text, int numberOfLines) + public void Should_Include_First_Line_When_Constraint_Is_Surpassed(string text) { using (Start()) { @@ -508,11 +508,11 @@ public void Should_Include_Last_Line_When_Constraint_Is_Surpassed(string text, i Typeface.Default, 12, Brushes.Black.ToImmutable(), - maxHeight: lineHeight * numberOfLines - lineHeight * 0.5); + maxHeight: lineHeight - lineHeight * 0.5); - Assert.Equal(numberOfLines, layout.TextLines.Count); + Assert.Equal(1, layout.TextLines.Count); - Assert.Equal(numberOfLines * lineHeight, layout.Size.Height); + Assert.Equal(lineHeight, layout.Size.Height); } } diff --git a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs index ed00d6aaed7..f0951c61d3e 100644 --- a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs +++ b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs @@ -162,6 +162,64 @@ public void Should_Get_CharacterHit_From_Distance() } } + [InlineData("01234 01234", 8, TextCollapsingStyle.TrailingCharacter, "01234 0\u2026")] + [InlineData("01234 01234", 8, TextCollapsingStyle.TrailingWord, "01234 \u2026")] + [Theory] + public void Should_Collapse_Line(string text, int numberOfCharacters, TextCollapsingStyle style, string expected) + { + using (Start()) + { + var defaultProperties = new GenericTextRunProperties(Typeface.Default); + + var textSource = new SingleBufferTextSource(text, defaultProperties); + + var formatter = new TextFormatterImpl(); + + var textLine = + formatter.FormatLine(textSource, 0, double.PositiveInfinity, + new GenericTextParagraphProperties(defaultProperties)); + + Assert.False(textLine.HasCollapsed); + + var glyphTypeface = Typeface.Default.GlyphTypeface; + + var scale = defaultProperties.FontRenderingEmSize / glyphTypeface.DesignEmHeight; + + var width = 1.0; + + for (var i = 0; i < numberOfCharacters; i++) + { + var glyph = glyphTypeface.GetGlyph(text[i]); + + width += glyphTypeface.GetGlyphAdvance(glyph) * scale; + } + + TextCollapsingProperties collapsingProperties; + + if (style == TextCollapsingStyle.TrailingCharacter) + { + collapsingProperties = new TextTrailingCharacterEllipsis(width, defaultProperties); + } + else + { + collapsingProperties = new TextTrailingWordEllipsis(width, defaultProperties); + } + + var collapsedLine = textLine.Collapse(collapsingProperties); + + Assert.True(collapsedLine.HasCollapsed); + + var trimmedText = collapsedLine.TextRuns.SelectMany(x => x.Text).ToArray(); + + Assert.Equal(expected.Length, trimmedText.Length); + + for (var i = 0; i < expected.Length; i++) + { + Assert.Equal(expected[i], trimmedText[i]); + } + } + } + private static IDisposable Start() { var disposable = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface From 62fd036d55e010fe6b59a35ae0178aab5247162f Mon Sep 17 00:00:00 2001 From: FoggyFinder Date: Wed, 15 Jul 2020 13:17:06 +0300 Subject: [PATCH 305/354] small adjustment to avoid IndexOutOfRangeException --- .../DateTimePickers/DatePicker.cs | 16 ++++++++++------ .../DateTimePickers/DatePickerPresenter.cs | 16 ++++++++-------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/Avalonia.Controls/DateTimePickers/DatePicker.cs b/src/Avalonia.Controls/DateTimePickers/DatePicker.cs index 5d3311e8c6c..a41c159980d 100644 --- a/src/Avalonia.Controls/DateTimePickers/DatePicker.cs +++ b/src/Avalonia.Controls/DateTimePickers/DatePicker.cs @@ -88,7 +88,7 @@ public class DatePicker : TemplatedControl AvaloniaProperty.RegisterDirect(nameof(SelectedDate), x => x.SelectedDate, (x, v) => x.SelectedDate = v); - //Template Items + // Template Items private Button _flyoutButton; private TextBlock _dayText; private TextBlock _monthText; @@ -359,10 +359,14 @@ private void SetGrid() } } - Grid.SetColumn(_spacer1, 1); - Grid.SetColumn(_spacer2, 3); - _spacer1.IsVisible = columnIndex > 1; - _spacer2.IsVisible = columnIndex > 2; + var isSpacer1Visible = columnIndex > 1; + var isSpacer2Visible = columnIndex > 2; + // ternary conditional operator is used to make sure grid cells will be validated + Grid.SetColumn(_spacer1, isSpacer1Visible ? 1 : 0); + Grid.SetColumn(_spacer2, isSpacer2Visible ? 3 : 0); + + _spacer1.IsVisible = isSpacer1Visible; + _spacer2.IsVisible = isSpacer2Visible; } private void SetSelectedDateText() @@ -398,7 +402,7 @@ private void OnFlyoutButtonClicked(object sender, RoutedEventArgs e) var deltaY = _presenter.GetOffsetForPopup(); - //The extra 5 px I think is related to default popup placement behavior + // The extra 5 px I think is related to default popup placement behavior _popup.Host.ConfigurePosition(_popup.PlacementTarget, PlacementMode.AnchorAndGravity, new Point(0, deltaY + 5), Primitives.PopupPositioning.PopupAnchor.Bottom, Primitives.PopupPositioning.PopupGravity.Bottom, Primitives.PopupPositioning.PopupPositionerConstraintAdjustment.SlideY); diff --git a/src/Avalonia.Controls/DateTimePickers/DatePickerPresenter.cs b/src/Avalonia.Controls/DateTimePickers/DatePickerPresenter.cs index 8b86e46e887..0da46bb74a9 100644 --- a/src/Avalonia.Controls/DateTimePickers/DatePickerPresenter.cs +++ b/src/Avalonia.Controls/DateTimePickers/DatePickerPresenter.cs @@ -77,7 +77,7 @@ public class DatePickerPresenter : PickerPresenterBase DatePicker.YearVisibleProperty.AddOwner(x => x.YearVisible, (x, v) => x.YearVisible = v); - //Template Items + // Template Items private Grid _pickerContainer; private Button _acceptButton; private Button _dismissButton; @@ -107,7 +107,7 @@ public class DatePickerPresenter : PickerPresenterBase private bool _yearVisible = true; private DateTimeOffset _syncDate; - private GregorianCalendar _calendar; + private readonly GregorianCalendar _calendar; private bool _suppressUpdateSelection; public DatePickerPresenter() @@ -234,7 +234,7 @@ public bool YearVisible protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); - //These are requirements, so throw if not found + // These are requirements, so throw if not found _pickerContainer = e.NameScope.Get("PickerContainer"); _monthHost = e.NameScope.Get("MonthHost"); _dayHost = e.NameScope.Get("DayHost"); @@ -326,7 +326,7 @@ protected override void OnKeyDown(KeyEventArgs e) /// private void InitPicker() { - //OnApplyTemplate must've been called before we can init here... + // OnApplyTemplate must've been called before we can init here... if (_pickerContainer == null) return; @@ -344,7 +344,7 @@ private void InitPicker() SetGrid(); - //Date should've been set when we reach this point + // Date should've been set when we reach this point var dt = Date; if (DayVisible) { @@ -433,12 +433,12 @@ private void SetInitialFocus() } } - private void OnDismissButtonClicked(object sender, Avalonia.Interactivity.RoutedEventArgs e) + private void OnDismissButtonClicked(object sender, RoutedEventArgs e) { OnDismiss(); } - private void OnAcceptButtonClicked(object sender, Avalonia.Interactivity.RoutedEventArgs e) + private void OnAcceptButtonClicked(object sender, RoutedEventArgs e) { Date = _syncDate; OnConfirmed(); @@ -471,7 +471,7 @@ private void OnYearChanged(object sender, EventArgs e) _syncDate = newDate; - //We don't need to update the days if not displaying day, not february + // We don't need to update the days if not displaying day, not february if (!DayVisible || _syncDate.Month != 2) return; From de87609de1859e1c28fad65af4e233ff5a489bca Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 15 Jul 2020 13:32:06 -0300 Subject: [PATCH 306/354] add failing unit test. --- .../ToolTipTests.cs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/ToolTipTests.cs b/tests/Avalonia.Controls.UnitTests/ToolTipTests.cs index 34b37e76352..9d7bc6af74f 100644 --- a/tests/Avalonia.Controls.UnitTests/ToolTipTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ToolTipTests.cs @@ -30,6 +30,40 @@ public void Should_Not_Open_On_Detached_Control() Assert.False(ToolTip.GetIsOpen(control)); } + + [Fact] + public void Should_Close_When_Control_Detaches() + { + using (UnitTestApplication.Start(TestServices.StyledWindow)) + { + var window = new Window(); + + var panel = new Panel(); + + var target = new Decorator() + { + [ToolTip.TipProperty] = "Tip", + [ToolTip.ShowDelayProperty] = 0 + }; + + panel.Children.Add(target); + + window.Content = panel; + + window.ApplyTemplate(); + window.Presenter.ApplyTemplate(); + + Assert.True((target as IVisual).IsAttachedToVisualTree); + + _mouseHelper.Enter(target); + + Assert.True(ToolTip.GetIsOpen(target)); + + panel.Children.Remove(target); + + Assert.False(ToolTip.GetIsOpen(target)); + } + } [Fact] public void Should_Open_On_Pointer_Enter() From a542d8753de026bd786c914b571c2a680a2ce77c Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 15 Jul 2020 13:33:20 -0300 Subject: [PATCH 307/354] ensure tooltips are closed when its parent detaches from visual tree. --- src/Avalonia.Controls/ToolTipService.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Avalonia.Controls/ToolTipService.cs b/src/Avalonia.Controls/ToolTipService.cs index d90729e8a56..569697304f4 100644 --- a/src/Avalonia.Controls/ToolTipService.cs +++ b/src/Avalonia.Controls/ToolTipService.cs @@ -28,14 +28,22 @@ internal void TipChanged(AvaloniaPropertyChangedEventArgs e) { control.PointerEnter -= ControlPointerEnter; control.PointerLeave -= ControlPointerLeave; + control.DetachedFromVisualTree -= ControlDetaching; } if (e.NewValue != null) { control.PointerEnter += ControlPointerEnter; control.PointerLeave += ControlPointerLeave; + control.DetachedFromVisualTree += ControlDetaching; } } + + private void ControlDetaching(object sender, VisualTreeAttachmentEventArgs e) + { + var control = (Control)sender; + Close(control); + } /// /// Called when the pointer enters a control with an attached tooltip. From 8916fda98db209ed511f3395547b9179c5764ce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Onak?= Date: Wed, 15 Jul 2020 21:24:23 +0200 Subject: [PATCH 308/354] Force recalculation of column width after edit is completed --- src/Avalonia.Controls.DataGrid/DataGrid.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Avalonia.Controls.DataGrid/DataGrid.cs b/src/Avalonia.Controls.DataGrid/DataGrid.cs index fe9656a00bd..7e921944eae 100644 --- a/src/Avalonia.Controls.DataGrid/DataGrid.cs +++ b/src/Avalonia.Controls.DataGrid/DataGrid.cs @@ -3922,6 +3922,12 @@ void SetValidationStatus(ICellEditBinding binding) dataGridCell: editingCell); EditingRow.InvalidateDesiredHeight(); + var column = editingCell.OwningColumn; + if (column.Width.IsSizeToCells || column.Width.IsAuto) + {// Invalidate desired width and force recalculation + column.SetWidthDesiredValue(0); + EditingRow.OwningGrid.AutoSizeColumn(column, editingCell.DesiredSize.Width); + } } // We're done, so raise the CellEditEnded event From 6e106fb9e7cdd810f7924e0bac04308cd6a803bc Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Wed, 15 Jul 2020 22:09:40 +0200 Subject: [PATCH 309/354] [Win32] only steal input focus if it's currently held by Popup's parent's child --- .../Interop/UnmanagedMethods.cs | 12 ++++++++ src/Windows/Avalonia.Win32/PopupImpl.cs | 29 ++++++++++++------- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs index 392ca31282f..b7c68c4b951 100644 --- a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs +++ b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs @@ -1060,9 +1060,21 @@ public static IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr handle) [DllImport("user32.dll")] public static extern bool SetFocus(IntPtr hWnd); [DllImport("user32.dll")] + public static extern IntPtr GetFocus(); + [DllImport("user32.dll")] public static extern bool SetParent(IntPtr hWnd, IntPtr hWndNewParent); [DllImport("user32.dll")] public static extern IntPtr GetParent(IntPtr hWnd); + + public enum GetAncestorFlags + { + GA_PARENT = 1, + GA_ROOT = 2, + GA_ROOTOWNER = 3 + } + + [DllImport("user32.dll")] + public static extern IntPtr GetAncestor(IntPtr hwnd, GetAncestorFlags gaFlags); [DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, ShowWindowCommand nCmdShow); diff --git a/src/Windows/Avalonia.Win32/PopupImpl.cs b/src/Windows/Avalonia.Win32/PopupImpl.cs index cd25b32ed9b..525e5e0d520 100644 --- a/src/Windows/Avalonia.Win32/PopupImpl.cs +++ b/src/Windows/Avalonia.Win32/PopupImpl.cs @@ -7,6 +7,7 @@ namespace Avalonia.Win32 { class PopupImpl : WindowImpl, IPopupImpl { + private readonly IWindowBaseImpl _parent; private bool _dropShadowHint = true; private Size? _maxAutoSize; @@ -19,18 +20,25 @@ class PopupImpl : WindowImpl, IPopupImpl public override void Show() { UnmanagedMethods.ShowWindow(Handle.Handle, UnmanagedMethods.ShowWindowCommand.ShowNoActivate); - var parent = UnmanagedMethods.GetParent(Handle.Handle); - if (parent != IntPtr.Zero) - { - IntPtr nextParent = parent; - while (nextParent != IntPtr.Zero) - { - parent = nextParent; - nextParent = UnmanagedMethods.GetParent(parent); - } - UnmanagedMethods.SetFocus(parent); + // We need to steal focus if it's held by a child window of our toplevel window + var parent = _parent; + while(parent != null) + { + if(parent is PopupImpl pi) + parent = pi._parent; + else + break; } + + if(parent == null) + return; + + var focusOwner = UnmanagedMethods.GetFocus(); + if (focusOwner != IntPtr.Zero && + UnmanagedMethods.GetAncestor(focusOwner, UnmanagedMethods.GetAncestorFlags.GA_ROOT) + == parent.Handle.Handle) + UnmanagedMethods.SetFocus(parent.Handle.Handle); } protected override bool ShouldTakeFocusOnClick => false; @@ -118,6 +126,7 @@ public PopupImpl(IWindowBaseImpl parent) : this(SaveParentHandle(parent), false) private PopupImpl(IWindowBaseImpl parent, bool dummy) : base() { + _parent = parent; PopupPositioner = new ManagedPopupPositioner(new ManagedPopupPositionerPopupImplHelper(parent, MoveResize)); } From 1c099b6e8ca96b60ab8d7a2de4f81c3f79e547c2 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 15 Jul 2020 19:15:59 -0300 Subject: [PATCH 310/354] add failing unit tests for cases. --- .../RelativePanelTests.cs | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs index 7b1f6d07b77..6e171a58e7c 100644 --- a/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/RelativePanelTests.cs @@ -82,5 +82,55 @@ public void RelativePanel_Can_Center() Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds); Assert.Equal(new Rect(0, 20, 20, 20), target.Children[1].Bounds); } + + [Fact] + public void LeftOf_Measures_Correctly() + { + var rect1 = new Rectangle { Height = 20, Width = 20 }; + var rect2 = new Rectangle { Height = 20, Width = 20 }; + + var target = new RelativePanel + { + VerticalAlignment = Layout.VerticalAlignment.Center, + HorizontalAlignment = Layout.HorizontalAlignment.Center, + Children = + { + rect1, rect2 + } + }; + + RelativePanel.SetLeftOf(rect2, rect1); + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Size(20, 20), target.Bounds.Size); + Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds); + Assert.Equal(new Rect(-20, 0, 20, 20), target.Children[1].Bounds); + } + + [Fact] + public void Above_Measures_Correctly() + { + var rect1 = new Rectangle { Height = 20, Width = 20 }; + var rect2 = new Rectangle { Height = 20, Width = 20 }; + + var target = new RelativePanel + { + VerticalAlignment = Layout.VerticalAlignment.Center, + HorizontalAlignment = Layout.HorizontalAlignment.Center, + Children = + { + rect1, rect2 + } + }; + + RelativePanel.SetAbove(rect2, rect1); + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Size(20, 20), target.Bounds.Size); + Assert.Equal(new Rect(0, 0, 20, 20), target.Children[0].Bounds); + Assert.Equal(new Rect(0, -20, 20, 20), target.Children[1].Bounds); + } } } From 3449784b09d529b950dd3ccd1560a08c5e9703de Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 15 Jul 2020 19:16:53 -0300 Subject: [PATCH 311/354] add fixes for relative panel --- src/Avalonia.Controls/RelativePanel.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index a3ad30db761..38b5d9807c8 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -54,7 +54,7 @@ protected override Size MeasureOverride(Size availableSize) } _childGraph.Measure(availableSize); - _childGraph.Reset(); + _childGraph.Reset(false); var boundingSize = _childGraph.GetBoundingSize(Width.IsNaN(), Height.IsNaN()); _childGraph.Reset(); _childGraph.Measure(boundingSize); @@ -119,17 +119,22 @@ public GraphNode(Layoutable element) public void Arrange(Size arrangeSize) => Element.Arrange(new Rect(Left, Top, Math.Max(arrangeSize.Width - Left - Right, 0), Math.Max(arrangeSize.Height - Top - Bottom, 0))); - public void Reset() + public void Reset(bool clearPos) { - Left = double.NaN; - Top = double.NaN; - Right = double.NaN; - Bottom = double.NaN; + if (clearPos) + { + Left = double.NaN; + Top = double.NaN; + Right = double.NaN; + Bottom = double.NaN; + } + Measured = false; } public Size GetBoundingSize() { + if (Left < 0 || Top < 0) return default; if (Measured) return BoundingSize; @@ -209,7 +214,7 @@ public void Clear() _nodeDic.Clear(); } - public void Reset() => _nodeDic.Values.Do(node => node.Reset()); + public void Reset(bool clearPos = true) => _nodeDic.Values.Do(node => node.Reset(clearPos)); public GraphNode? AddLink(GraphNode from, Layoutable? to) { From d7d63e26c4bc46278815ec56aad5795ed2fdb0d7 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 15 Jul 2020 19:17:42 -0300 Subject: [PATCH 312/354] remove chinese comments. --- src/Avalonia.Controls/RelativePanel.cs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/Avalonia.Controls/RelativePanel.cs b/src/Avalonia.Controls/RelativePanel.cs index 38b5d9807c8..27f13a3f577 100644 --- a/src/Avalonia.Controls/RelativePanel.cs +++ b/src/Avalonia.Controls/RelativePanel.cs @@ -260,28 +260,21 @@ private void Measure(IEnumerable nodes, HashSet? set) foreach (var node in nodes) { - /* - * 该节点无任何依赖,所以从这里开始计算元素位置。 - * 因为无任何依赖,所以忽略同级元素 - */ if (!node.Measured && !node.OutgoingNodes.Any()) { MeasureChild(node); continue; } - - // 判断依赖元素是否全部排列完毕 + if (node.OutgoingNodes.All(item => item.Measured)) { MeasureChild(node); continue; } - - // 判断是否有循环 + if (!set.Add(node.Element)) throw new Exception("RelativePanel error: Circular dependency detected. Layout could not complete."); - - // 没有循环,且有依赖,则继续往下 + Measure(node.OutgoingNodes, set); if (!node.Measured) From 281e31a65ce7b65e7d6215b87eb302b5a69ed30b Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Wed, 15 Jul 2020 18:40:08 -0400 Subject: [PATCH 313/354] Add missing fluent resources for default styles on ControlCatalog --- samples/ControlCatalog/App.xaml.cs | 24 ++++++++++++++++++++---- samples/ControlCatalog/MainView.xaml | 1 - 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/samples/ControlCatalog/App.xaml.cs b/samples/ControlCatalog/App.xaml.cs index 0baa6589c64..3f1ec289d14 100644 --- a/samples/ControlCatalog/App.xaml.cs +++ b/samples/ControlCatalog/App.xaml.cs @@ -29,11 +29,19 @@ public class App : Application { new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) { - Source = new Uri("resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default") + Source = new Uri("avares://Avalonia.Themes.Fluent/Accents/Base.xaml") }, new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) { - Source = new Uri("resm:Avalonia.Themes.Default.DefaultTheme.xaml?assembly=Avalonia.Themes.Default") + Source = new Uri("avares://Avalonia.Themes.Fluent/Accents/BaseLight.xaml") + }, + new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) + { + Source = new Uri("avares://Avalonia.Themes.Default/Accents/BaseLight.xaml") + }, + new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) + { + Source = new Uri("avares://Avalonia.Themes.Default/DefaultTheme.xaml") }, }; @@ -41,11 +49,19 @@ public class App : Application { new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) { - Source = new Uri("resm:Avalonia.Themes.Default.Accents.BaseDark.xaml?assembly=Avalonia.Themes.Default") + Source = new Uri("avares://Avalonia.Themes.Fluent/Accents/Base.xaml") + }, + new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) + { + Source = new Uri("avares://Avalonia.Themes.Fluent/Accents/BaseDark.xaml") + }, + new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) + { + Source = new Uri("avares://Avalonia.Themes.Default/Accents/BaseDark.xaml") }, new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog")) { - Source = new Uri("resm:Avalonia.Themes.Default.DefaultTheme.xaml?assembly=Avalonia.Themes.Default") + Source = new Uri("avares://Avalonia.Themes.Default/DefaultTheme.xaml") }, }; diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml index fa4fd7dd07d..af95e3c3569 100644 --- a/samples/ControlCatalog/MainView.xaml +++ b/samples/ControlCatalog/MainView.xaml @@ -2,7 +2,6 @@ xmlns:pages="clr-namespace:ControlCatalog.Pages" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ControlCatalog.MainView" - Background="Black" Foreground="{DynamicResource ThemeForegroundBrush}" FontSize="{DynamicResource FontSizeNormal}"> From 7ad6171d13fadf1d9052135cd91eafe474047b8b Mon Sep 17 00:00:00 2001 From: Maksym Katsydan Date: Wed, 15 Jul 2020 19:09:47 -0400 Subject: [PATCH 314/354] RenderDemo: use FluentLight intead of DefaultLight --- samples/RenderDemo/App.xaml | 5 +- samples/RenderDemo/SideBar.xaml | 125 ++++++++++++++++---------------- 2 files changed, 66 insertions(+), 64 deletions(-) diff --git a/samples/RenderDemo/App.xaml b/samples/RenderDemo/App.xaml index ccc3f54cc0b..61e4d2385b1 100644 --- a/samples/RenderDemo/App.xaml +++ b/samples/RenderDemo/App.xaml @@ -3,8 +3,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="RenderDemo.App"> - - + - \ No newline at end of file + diff --git a/samples/RenderDemo/SideBar.xaml b/samples/RenderDemo/SideBar.xaml index 07fdb91a162..fd23067f611 100644 --- a/samples/RenderDemo/SideBar.xaml +++ b/samples/RenderDemo/SideBar.xaml @@ -1,65 +1,68 @@ - + - - - - - + + + + + + From 5bce867f5258fba927267c84a1c252053199d6e1 Mon Sep 17 00:00:00 2001 From: FoggyFinder Date: Thu, 16 Jul 2020 09:47:30 +0300 Subject: [PATCH 315/354] additional check for presenter --- .../DateTimePickers/DatePickerPresenter.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Controls/DateTimePickers/DatePickerPresenter.cs b/src/Avalonia.Controls/DateTimePickers/DatePickerPresenter.cs index 0da46bb74a9..31527ccb161 100644 --- a/src/Avalonia.Controls/DateTimePickers/DatePickerPresenter.cs +++ b/src/Avalonia.Controls/DateTimePickers/DatePickerPresenter.cs @@ -348,8 +348,7 @@ private void InitPicker() var dt = Date; if (DayVisible) { - GregorianCalendar gc = new GregorianCalendar(); - var maxDays = gc.GetDaysInMonth(dt.Year, dt.Month); + var maxDays = _calendar.GetDaysInMonth(dt.Year, dt.Month); _daySelector.MaximumValue = maxDays; _daySelector.MinimumValue = 1; _daySelector.SelectedValue = dt.Day; @@ -407,10 +406,14 @@ private void SetGrid() } } - Grid.SetColumn(_spacer1, 1); - Grid.SetColumn(_spacer2, 3); - _spacer1.IsVisible = columnIndex > 1; - _spacer2.IsVisible = columnIndex > 2; + var isSpacer1Visible = columnIndex > 1; + var isSpacer2Visible = columnIndex > 2; + // ternary conditional operator is used to make sure grid cells will be validated + Grid.SetColumn(_spacer1, isSpacer1Visible ? 1 : 0); + Grid.SetColumn(_spacer2, isSpacer2Visible ? 3 : 0); + + _spacer1.IsVisible = isSpacer1Visible; + _spacer2.IsVisible = isSpacer2Visible; } private void SetInitialFocus() From 41831066c202a24331bde2acbe7740caa953e868 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Thu, 16 Jul 2020 10:30:41 +0200 Subject: [PATCH 316/354] Revert "Fix selection after deleting an item." --- samples/ControlCatalog/Pages/ListBoxPage.xaml | 8 +--- src/Avalonia.Controls/ItemsControl.cs | 11 +---- .../CarouselTests.cs | 3 -- .../ItemsControlTests.cs | 4 -- .../Primitives/SelectingItemsControlTests.cs | 44 ------------------- .../SelectingItemsControlTests_Multiple.cs | 4 -- 6 files changed, 3 insertions(+), 71 deletions(-) diff --git a/samples/ControlCatalog/Pages/ListBoxPage.xaml b/samples/ControlCatalog/Pages/ListBoxPage.xaml index f4d81418ac8..47b4ce7151c 100644 --- a/samples/ControlCatalog/Pages/ListBoxPage.xaml +++ b/samples/ControlCatalog/Pages/ListBoxPage.xaml @@ -10,13 +10,7 @@ HorizontalAlignment="Center" Spacing="16"> - + diff --git a/src/Avalonia.Controls/ItemsControl.cs b/src/Avalonia.Controls/ItemsControl.cs index da9f619932c..6e0ad66699d 100644 --- a/src/Avalonia.Controls/ItemsControl.cs +++ b/src/Avalonia.Controls/ItemsControl.cs @@ -70,6 +70,7 @@ static ItemsControl() public ItemsControl() { PseudoClasses.Add(":empty"); + SubscribeToItems(_items); } /// @@ -264,11 +265,6 @@ protected virtual void OnContainersRecycled(ItemContainerEventArgs e) { } - protected override void OnInitialized() - { - SubscribeToItems(_items); - } - /// /// Handles directional navigation within the . /// @@ -334,10 +330,7 @@ protected virtual void ItemsChanged(AvaloniaPropertyChangedEventArgs e) Presenter.Items = newValue; } - if (IsInitialized) - { - SubscribeToItems(newValue); - } + SubscribeToItems(newValue); } /// diff --git a/tests/Avalonia.Controls.UnitTests/CarouselTests.cs b/tests/Avalonia.Controls.UnitTests/CarouselTests.cs index c6ca0fb2bf8..a292910faef 100644 --- a/tests/Avalonia.Controls.UnitTests/CarouselTests.cs +++ b/tests/Avalonia.Controls.UnitTests/CarouselTests.cs @@ -4,7 +4,6 @@ using Avalonia.Controls.Primitives; using Avalonia.Controls.Templates; using Avalonia.LogicalTree; -using Avalonia.UnitTests; using Avalonia.VisualTree; using Xunit; @@ -156,7 +155,6 @@ public void Selected_Item_Changes_To_First_Item_When_Item_Added() IsVirtualized = false }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -249,7 +247,6 @@ public void Selected_Item_Changes_To_Next_First_Item_When_Item_Removed_From_Begg IsVirtualized = false }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); diff --git a/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs index faaa3ed063b..684486cbae6 100644 --- a/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs @@ -131,7 +131,6 @@ public void Control_Item_Should_Be_Removed_From_Logical_Children_Before_ApplyTem var child = new Control(); var items = new AvaloniaList(child); - var root = new TestRoot(target); target.Template = GetTemplate(); target.Items = items; items.RemoveAt(0); @@ -284,7 +283,6 @@ public void Adding_Items_Should_Fire_LogicalChildren_CollectionChanged() var items = new AvaloniaList { "Foo" }; var called = false; - var root = new TestRoot(target); target.Template = GetTemplate(); target.Items = items; target.ApplyTemplate(); @@ -305,7 +303,6 @@ public void Removing_Items_Should_Fire_LogicalChildren_CollectionChanged() var items = new AvaloniaList { "Foo", "Bar" }; var called = false; - var root = new TestRoot(target); target.Template = GetTemplate(); target.Items = items; target.ApplyTemplate(); @@ -379,7 +376,6 @@ public void Empty_Class_Should_Be_Cleared_When_Items_Added() Items = new[] { 1, 2, 3 }, }; - var root = new TestRoot(target); Assert.DoesNotContain(":empty", target.Classes); } diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs index e43e855ae0d..fe9c7b1261c 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs @@ -170,8 +170,6 @@ public void Setting_SelectedIndex_During_Initialize_Should_Select_Item_When_Alwa SelectionMode = SelectionMode.Single | SelectionMode.AlwaysSelected }; - var root = new TestRoot(listBox); - listBox.BeginInit(); listBox.SelectedIndex = 1; @@ -482,7 +480,6 @@ public void Adding_Selected_Item_Should_Update_Selection() Template = Template(), }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); items.Add(new Item { IsSelected = true }); @@ -534,7 +531,6 @@ public void Removing_Selected_Item_Should_Clear_Selection() }; target.ApplyTemplate(); - target.Presenter.ApplyTemplate(); target.SelectedIndex = 1; Assert.Equal(items[1], target.SelectedItem); @@ -553,45 +549,6 @@ public void Removing_Selected_Item_Should_Clear_Selection() Assert.NotNull(receivedArgs); Assert.Empty(receivedArgs.AddedItems); Assert.Equal(new[] { removed }, receivedArgs.RemovedItems); - Assert.False(items.Single().IsSelected); - } - - [Fact] - public void Removing_Selected_Item_Should_Clear_Selection_With_BeginInit() - { - var items = new AvaloniaList - { - new Item(), - new Item(), - }; - - var target = new SelectingItemsControl(); - target.BeginInit(); - target.Items = items; - target.Template = Template(); - target.EndInit(); - - target.ApplyTemplate(); - target.Presenter.ApplyTemplate(); - target.SelectedIndex = 0; - - Assert.Equal(items[0], target.SelectedItem); - Assert.Equal(0, target.SelectedIndex); - - SelectionChangedEventArgs receivedArgs = null; - - target.SelectionChanged += (_, args) => receivedArgs = args; - - var removed = items[0]; - - items.RemoveAt(0); - - Assert.Null(target.SelectedItem); - Assert.Equal(-1, target.SelectedIndex); - Assert.NotNull(receivedArgs); - Assert.Empty(receivedArgs.AddedItems); - Assert.Equal(new[] { removed }, receivedArgs.RemovedItems); - Assert.False(items.Single().IsSelected); } [Fact] @@ -922,7 +879,6 @@ public void Removing_SelectedItem_Should_Clear_TabOnceActiveElement() Items = items, }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs index e9ec8d114f4..dcf25beb500 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs @@ -1014,7 +1014,6 @@ public void Adding_Item_Before_SelectedItems_Should_Update_Selection() SelectionMode = SelectionMode.Multiple, }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -1044,7 +1043,6 @@ public void Removing_Item_Before_SelectedItem_Should_Update_Selection() SelectionMode = SelectionMode.Multiple, }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -1078,7 +1076,6 @@ public void Removing_SelectedItem_With_Multiple_Selection_Active_Should_Update_S SelectionMode = SelectionMode.Multiple, }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -1202,7 +1199,6 @@ public void Adding_Selected_ItemContainers_Should_Update_Selection() Template = Template(), }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); items.Add(new ItemContainer { IsSelected = true }); From bebe9ee3739364ed11ae4819acef07a9bb3890ac Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 13 Jul 2020 17:25:15 +0200 Subject: [PATCH 317/354] Bind ListBox.SelectedItems again. Was removed accidentally. --- samples/ControlCatalog/Pages/ListBoxPage.xaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/samples/ControlCatalog/Pages/ListBoxPage.xaml b/samples/ControlCatalog/Pages/ListBoxPage.xaml index 47b4ce7151c..f4d81418ac8 100644 --- a/samples/ControlCatalog/Pages/ListBoxPage.xaml +++ b/samples/ControlCatalog/Pages/ListBoxPage.xaml @@ -10,7 +10,13 @@ HorizontalAlignment="Center" Spacing="16"> - + From 0301d80c302cde4a60aeec2b6816e91cc66fa8d0 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 14 Jul 2020 22:04:47 +0200 Subject: [PATCH 318/354] Added failing test for removing selected item with BeginInit. --- .../Primitives/SelectingItemsControlTests.cs | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs index fe9c7b1261c..9ef2750ff34 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs @@ -531,6 +531,7 @@ public void Removing_Selected_Item_Should_Clear_Selection() }; target.ApplyTemplate(); + target.Presenter.ApplyTemplate(); target.SelectedIndex = 1; Assert.Equal(items[1], target.SelectedItem); @@ -549,6 +550,45 @@ public void Removing_Selected_Item_Should_Clear_Selection() Assert.NotNull(receivedArgs); Assert.Empty(receivedArgs.AddedItems); Assert.Equal(new[] { removed }, receivedArgs.RemovedItems); + Assert.False(items.Single().IsSelected); + } + + [Fact] + public void Removing_Selected_Item_Should_Clear_Selection_With_BeginInit() + { + var items = new AvaloniaList + { + new Item(), + new Item(), + }; + + var target = new SelectingItemsControl(); + target.BeginInit(); + target.Items = items; + target.Template = Template(); + target.EndInit(); + + target.ApplyTemplate(); + target.Presenter.ApplyTemplate(); + target.SelectedIndex = 0; + + Assert.Equal(items[0], target.SelectedItem); + Assert.Equal(0, target.SelectedIndex); + + SelectionChangedEventArgs receivedArgs = null; + + target.SelectionChanged += (_, args) => receivedArgs = args; + + var removed = items[0]; + + items.RemoveAt(0); + + Assert.Null(target.SelectedItem); + Assert.Equal(-1, target.SelectedIndex); + Assert.NotNull(receivedArgs); + Assert.Empty(receivedArgs.AddedItems); + Assert.Equal(new[] { removed }, receivedArgs.RemovedItems); + Assert.False(items.Single().IsSelected); } [Fact] From 125ae96859df3bf6e602bc9f85171234fdd16f55 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Thu, 16 Jul 2020 12:29:33 +0200 Subject: [PATCH 319/354] Handle selected items being removed. Fixes #4293. --- .../Primitives/SelectingItemsControl.cs | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs b/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs index c915dc70b69..59b7777b1b0 100644 --- a/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs +++ b/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs @@ -692,14 +692,24 @@ void Mark(int index, bool selected) } } - foreach (var i in e.SelectedIndices) + if (e.SelectedIndices.Count > 0 || e.DeselectedIndices.Count > 0) { - Mark(i.GetAt(0), true); - } + foreach (var i in e.SelectedIndices) + { + Mark(i.GetAt(0), true); + } - foreach (var i in e.DeselectedIndices) + foreach (var i in e.DeselectedIndices) + { + Mark(i.GetAt(0), false); + } + } + else if (e.DeselectedItems.Count > 0) { - Mark(i.GetAt(0), false); + // (De)selected indices being empty means that a selected item was removed from + // the Items (it can't tell us the index of the item because the index is no longer + // valid). In this case, we just update the selection state of all containers. + UpdateContainerSelection(); } var newSelectedIndex = SelectedIndex; From e042266678779029d8660335bdb475e3b2207278 Mon Sep 17 00:00:00 2001 From: FoggyFinder Date: Thu, 16 Jul 2020 14:07:55 +0300 Subject: [PATCH 320/354] add some properties to `AffectsRender` list --- src/Avalonia.Controls/TickBar.cs | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/Avalonia.Controls/TickBar.cs b/src/Avalonia.Controls/TickBar.cs index 22145d87424..6ea5277a557 100644 --- a/src/Avalonia.Controls/TickBar.cs +++ b/src/Avalonia.Controls/TickBar.cs @@ -39,11 +39,15 @@ public class TickBar : Control { static TickBar() { - AffectsRender(ReservedSpaceProperty, + AffectsRender(FillProperty, + IsDirectionReversedProperty, + ReservedSpaceProperty, MaximumProperty, MinimumProperty, OrientationProperty, - TickFrequencyProperty); + PlacementProperty, + TickFrequencyProperty, + TicksProperty); } public TickBar() : base() @@ -137,7 +141,7 @@ public Orientation Orientation /// /// The Ticks property contains collection of value of type Double which /// are the logical positions use to draw the ticks. - /// The property value is a . + /// The property value is a . /// public AvaloniaList Ticks { @@ -169,7 +173,6 @@ public bool IsDirectionReversed public static readonly StyledProperty PlacementProperty = AvaloniaProperty.Register(nameof(Placement), 0d); - /// /// Placement property specified how the Tick will be placed. /// This property affects the way ticks are drawn. @@ -189,7 +192,7 @@ public TickBarPlacement Placement /// /// TickBar will use ReservedSpaceProperty for left and right spacing (for horizontal orientation) or - /// tob and bottom spacing (for vertical orienation). + /// top and bottom spacing (for vertical orienation). /// The space on both sides of TickBar is half of specified ReservedSpace. /// This property has type of . /// @@ -201,7 +204,7 @@ public Rect ReservedSpace /// /// Draw ticks. - /// Ticks can be draw in 8 diffrent ways depends on Placment property and IsDirectionReversed property. + /// Ticks can be draw in 8 different ways depends on Placement property and IsDirectionReversed property. /// /// This function also draw selection-tick(s) if IsSelectionRangeEnabled is 'true' and /// SelectionStart and SelectionEnd are valid. @@ -211,9 +214,7 @@ public Rect ReservedSpace /// /// The secondary ticks (all other ticks, including selection-tics) height will be 75% of TickBar's render size. /// - /// Brush that use to fill ticks is specified by Shape.Fill property. - /// - /// Pen that use to draw ticks is specified by Shape.Pen property. + /// Brush that use to fill ticks is specified by Fill property. /// public override void Render(DrawingContext dc) { @@ -222,7 +223,6 @@ public override void Render(DrawingContext dc) var tickLen = 0.0d; // Height for Primary Tick (for Mininum and Maximum value) var tickLen2 = 0.0d; // Height for Secondary Tick var logicalToPhysical = 1.0; - var progression = 1.0d; var startPoint = new Point(); var endPoint = new Point(); var rSpace = Orientation == Orientation.Horizontal ? ReservedSpace.Width : ReservedSpace.Height; @@ -242,7 +242,6 @@ public override void Render(DrawingContext dc) startPoint = new Point(halfReservedSpace, size.Height); endPoint = new Point(halfReservedSpace + size.Width, size.Height); logicalToPhysical = size.Width / range; - progression = 1; break; case TickBarPlacement.Bottom: @@ -255,7 +254,6 @@ public override void Render(DrawingContext dc) startPoint = new Point(halfReservedSpace, 0d); endPoint = new Point(halfReservedSpace + size.Width, 0d); logicalToPhysical = size.Width / range; - progression = 1; break; case TickBarPlacement.Left: @@ -269,7 +267,6 @@ public override void Render(DrawingContext dc) startPoint = new Point(size.Width, size.Height + halfReservedSpace); endPoint = new Point(size.Width, halfReservedSpace); logicalToPhysical = size.Height / range * -1; - progression = -1; break; case TickBarPlacement.Right: @@ -282,7 +279,6 @@ public override void Render(DrawingContext dc) startPoint = new Point(0d, size.Height + halfReservedSpace); endPoint = new Point(0d, halfReservedSpace); logicalToPhysical = size.Height / range * -1; - progression = -1; break; }; @@ -291,7 +287,6 @@ public override void Render(DrawingContext dc) // Invert direciton of the ticks if (IsDirectionReversed) { - progression *= -progression; logicalToPhysical *= -1; // swap startPoint & endPoint From 453222d8de6d8ac74361e554dea20b97529369f2 Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Thu, 16 Jul 2020 19:18:40 +0200 Subject: [PATCH 321/354] Fix some comments --- .../Media/TextFormatting/TextFormatterImpl.cs | 302 +++++++++--------- .../Media/TextFormatting/TextLayout.cs | 5 + .../Media/TextFormatting/TextLine.cs | 40 ++- .../Media/TextFormatting/TextLineImpl.cs | 3 +- .../Media/TextFormatting/TextRunProperties.cs | 7 +- 5 files changed, 184 insertions(+), 173 deletions(-) diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs index 061949a5c9b..9318fcc68e5 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs @@ -41,6 +41,156 @@ public override TextLine FormatLine(ITextSource textSource, int firstTextSourceI return textLine; } + /// + /// Measures the number of characters that fits into available width. + /// + /// The text run. + /// The available width. + /// + internal static int MeasureCharacters(ShapedTextCharacters textCharacters, double availableWidth) + { + var glyphRun = textCharacters.GlyphRun; + + if (glyphRun.Bounds.Width < availableWidth) + { + return glyphRun.Characters.Length; + } + + var glyphCount = 0; + + var currentWidth = 0.0; + + if (glyphRun.GlyphAdvances.IsEmpty) + { + var glyphTypeface = glyphRun.GlyphTypeface; + + for (var i = 0; i < glyphRun.GlyphClusters.Length; i++) + { + var glyph = glyphRun.GlyphIndices[i]; + + var advance = glyphTypeface.GetGlyphAdvance(glyph) * glyphRun.Scale; + + if (currentWidth + advance > availableWidth) + { + break; + } + + currentWidth += advance; + + glyphCount++; + } + } + else + { + foreach (var advance in glyphRun.GlyphAdvances) + { + if (currentWidth + advance > availableWidth) + { + break; + } + + currentWidth += advance; + + glyphCount++; + } + } + + if (glyphCount == glyphRun.GlyphIndices.Length) + { + return glyphRun.Characters.Length; + } + + if (glyphRun.GlyphClusters.IsEmpty) + { + return glyphCount; + } + + var firstCluster = glyphRun.GlyphClusters[0]; + + var lastCluster = glyphRun.GlyphClusters[glyphCount]; + + return lastCluster - firstCluster; + } + + /// + /// Split a sequence of runs into two segments at specified length. + /// + /// The text run's. + /// The length to split at. + /// The split text runs. + internal static SplitTextRunsResult SplitTextRuns(IReadOnlyList textRuns, int length) + { + var currentLength = 0; + + for (var i = 0; i < textRuns.Count; i++) + { + var currentRun = textRuns[i]; + + if (currentLength + currentRun.GlyphRun.Characters.Length < length) + { + currentLength += currentRun.GlyphRun.Characters.Length; + continue; + } + + var firstCount = currentRun.GlyphRun.Characters.Length >= 1 ? i + 1 : i; + + var first = new ShapedTextCharacters[firstCount]; + + if (firstCount > 1) + { + for (var j = 0; j < i; j++) + { + first[j] = textRuns[j]; + } + } + + var secondCount = textRuns.Count - firstCount; + + if (currentLength + currentRun.GlyphRun.Characters.Length == length) + { + var second = new ShapedTextCharacters[secondCount]; + + var offset = currentRun.GlyphRun.Characters.Length > 1 ? 1 : 0; + + if (secondCount > 0) + { + for (var j = 0; j < secondCount; j++) + { + second[j] = textRuns[i + j + offset]; + } + } + + first[i] = currentRun; + + return new SplitTextRunsResult(first, second); + } + else + { + secondCount++; + + var second = new ShapedTextCharacters[secondCount]; + + if (secondCount > 0) + { + for (var j = 1; j < secondCount; j++) + { + second[j] = textRuns[i + j]; + } + } + + var split = currentRun.Split(length - currentLength); + + first[i] = split.First; + + second[0] = split.Second; + + return new SplitTextRunsResult(first, second); + } + } + + return new SplitTextRunsResult(textRuns, null); + } + /// /// Fetches text runs. /// @@ -188,7 +338,7 @@ private static TextLine PerformTextWrapping(IReadOnlyList if (currentWidth + currentRun.GlyphRun.Bounds.Width > availableWidth) { - var measuredLength = MeasureText(currentRun, paragraphWidth - currentWidth); + var measuredLength = MeasureCharacters(currentRun, paragraphWidth - currentWidth); var breakFound = false; @@ -256,77 +406,6 @@ private static TextLine PerformTextWrapping(IReadOnlyList TextLineMetrics.Create(textRuns, textRange, paragraphWidth, paragraphProperties)); } - /// - /// Measures the number of characters that fits into available width. - /// - /// The text run. - /// The available width. - /// - internal static int MeasureText(ShapedTextCharacters textCharacters, double availableWidth) - { - var glyphRun = textCharacters.GlyphRun; - - if (glyphRun.Bounds.Width < availableWidth) - { - return glyphRun.Characters.Length; - } - - var glyphCount = 0; - - var currentWidth = 0.0; - - if (glyphRun.GlyphAdvances.IsEmpty) - { - var glyphTypeface = glyphRun.GlyphTypeface; - - for (var i = 0; i < glyphRun.GlyphClusters.Length; i++) - { - var glyph = glyphRun.GlyphIndices[i]; - - var advance = glyphTypeface.GetGlyphAdvance(glyph) * glyphRun.Scale; - - if (currentWidth + advance > availableWidth) - { - break; - } - - currentWidth += advance; - - glyphCount++; - } - } - else - { - foreach (var advance in glyphRun.GlyphAdvances) - { - if (currentWidth + advance > availableWidth) - { - break; - } - - currentWidth += advance; - - glyphCount++; - } - } - - if (glyphCount == glyphRun.GlyphIndices.Length) - { - return glyphRun.Characters.Length; - } - - if (glyphRun.GlyphClusters.IsEmpty) - { - return glyphCount; - } - - var firstCluster = glyphRun.GlyphClusters[0]; - - var lastCluster = glyphRun.GlyphClusters[glyphCount]; - - return lastCluster - firstCluster; - } - /// /// Gets the text range that is covered by the text runs. /// @@ -353,85 +432,6 @@ private static TextRange GetTextRange(IReadOnlyList textRuns) return new TextRange(start, end - start); } - /// - /// Split a sequence of runs into two segments at specified length. - /// - /// The text run's. - /// The length to split at. - /// The split text runs. - internal static SplitTextRunsResult SplitTextRuns(IReadOnlyList textRuns, int length) - { - var currentLength = 0; - - for (var i = 0; i < textRuns.Count; i++) - { - var currentRun = textRuns[i]; - - if (currentLength + currentRun.GlyphRun.Characters.Length < length) - { - currentLength += currentRun.GlyphRun.Characters.Length; - continue; - } - - var firstCount = currentRun.GlyphRun.Characters.Length >= 1 ? i + 1 : i; - - var first = new ShapedTextCharacters[firstCount]; - - if (firstCount > 1) - { - for (var j = 0; j < i; j++) - { - first[j] = textRuns[j]; - } - } - - var secondCount = textRuns.Count - firstCount; - - if (currentLength + currentRun.GlyphRun.Characters.Length == length) - { - var second = new ShapedTextCharacters[secondCount]; - - var offset = currentRun.GlyphRun.Characters.Length > 1 ? 1 : 0; - - if (secondCount > 0) - { - for (var j = 0; j < secondCount; j++) - { - second[j] = textRuns[i + j + offset]; - } - } - - first[i] = currentRun; - - return new SplitTextRunsResult(first, second); - } - else - { - secondCount++; - - var second = new ShapedTextCharacters[secondCount]; - - if (secondCount > 0) - { - for (var j = 1; j < secondCount; j++) - { - second[j] = textRuns[i + j]; - } - } - - var split = currentRun.Split(length - currentLength); - - first[i] = split.First; - - second[0] = split.Second; - - return new SplitTextRunsResult(first, second); - } - } - - return new SplitTextRunsResult(textRuns, null); - } - internal readonly struct SplitTextRunsResult { public SplitTextRunsResult(IReadOnlyList first, IReadOnlyList second) diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs index 92db6b69c4b..14602a25605 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs @@ -268,6 +268,11 @@ private void UpdateLayout() } } + /// + /// Gets the for current text trimming mode. + /// + /// The collapsing width. + /// The . private TextCollapsingProperties GetCollapsingProperties(double width) { return _textTrimming switch diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs index 3e3258f38ae..423ca9fb7f3 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLine.cs @@ -40,8 +40,11 @@ public abstract class TextLine public abstract TextLineBreak LineBreak { get; } /// - /// Client to get a boolean value indicates whether a line has been collapsed + /// Gets a value that indicates whether the line is collapsed. /// + /// + /// true, if the line is collapsed; otherwise, false. + /// public abstract bool HasCollapsed { get; } /// @@ -52,46 +55,49 @@ public abstract class TextLine public abstract void Draw(DrawingContext drawingContext, Point origin); /// - /// Client to collapse the line and get a collapsed line that fits for display + /// Create a collapsed line based on collapsed text properties. /// - /// a list of collapsing properties + /// A list of + /// objects that represent the collapsed text properties. + /// + /// A value that represents a collapsed line that can be displayed. + /// public abstract TextLine Collapse(params TextCollapsingProperties[] collapsingPropertiesList); /// - /// Client to get the character hit corresponding to the specified - /// distance from the beginning of the line. + /// Gets the character hit corresponding to the specified distance from the beginning of the line. /// - /// distance in text flow direction from the beginning of the line - /// The + /// A value that represents the distance from the beginning of the line. + /// The object at the specified distance from the beginning of the line. public abstract CharacterHit GetCharacterHitFromDistance(double distance); /// - /// Client to get the distance from the beginning of the line from the specified + /// Gets the distance from the beginning of the line to the specified character hit. /// . /// - /// of the character to query the distance. - /// Distance in text flow direction from the beginning of the line. + /// The object whose distance you want to query. + /// A that represents the distance from the beginning of the line. public abstract double GetDistanceFromCharacterHit(CharacterHit characterHit); /// - /// Client to get the next for caret navigation. + /// Gets the next character hit for caret navigation. /// /// The current . /// The next . public abstract CharacterHit GetNextCaretCharacterHit(CharacterHit characterHit); /// - /// Client to get the previous character hit for caret navigation + /// Gets the previous character hit for caret navigation. /// - /// the current character hit - /// The previous + /// The current . + /// The previous . public abstract CharacterHit GetPreviousCaretCharacterHit(CharacterHit characterHit); /// - /// Client to get the previous character hit after backspacing + /// Gets the previous character hit after backspacing. /// - /// the current character hit - /// The after backspacing + /// The current . + /// The after backspacing. public abstract CharacterHit GetBackspaceCaretCharacterHit(CharacterHit characterHit); /// diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs index 820c943aea4..980b1a2d40c 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs @@ -47,6 +47,7 @@ public override void Draw(DrawingContext drawingContext, Point origin) } } + /// public override TextLine Collapse(params TextCollapsingProperties[] collapsingPropertiesList) { if (collapsingPropertiesList == null || collapsingPropertiesList.Length == 0) @@ -73,7 +74,7 @@ public override TextLine Collapse(params TextCollapsingProperties[] collapsingPr if (currentWidth > availableWidth) { - var measuredLength = TextFormatterImpl.MeasureText(currentRun, availableWidth); + var measuredLength = TextFormatterImpl.MeasureCharacters(currentRun, availableWidth); var currentBreakPosition = 0; diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextRunProperties.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextRunProperties.cs index bbcdfe2d8ec..c4f9443c3d5 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextRunProperties.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextRunProperties.cs @@ -4,12 +4,11 @@ namespace Avalonia.Media.TextFormatting { /// - /// Properties that can change from one run to the next, such as typeface or foreground brush. + /// Provides a set of properties, such as typeface or foreground brush, that can be applied to a TextRun object. This is an abstract class. /// /// - /// The client provides a concrete implementation of this abstract run properties class. This - /// allows client to implement their run properties the way that fits with their run formatting - /// store. + /// The text layout client provides a concrete implementation of this abstract class. + /// This enables the client to implement text run properties in a way that corresponds with the associated formatting store. /// public abstract class TextRunProperties : IEquatable { From 856118f21c6ca84a93bd293f0dba14208084a0a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Pedro?= Date: Fri, 17 Jul 2020 06:57:54 +0100 Subject: [PATCH 322/354] Use TextBox text alignment and wrapping in watermark. --- src/Avalonia.Themes.Default/TextBox.xaml | 2 ++ src/Avalonia.Themes.Fluent/TextBox.xaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/Avalonia.Themes.Default/TextBox.xaml b/src/Avalonia.Themes.Default/TextBox.xaml index 4fb3653e895..6a746dda304 100644 --- a/src/Avalonia.Themes.Default/TextBox.xaml +++ b/src/Avalonia.Themes.Default/TextBox.xaml @@ -40,6 +40,8 @@ Date: Fri, 17 Jul 2020 16:33:31 +0300 Subject: [PATCH 323/354] Extracted runtime XAML loader to a separate package --- .gitmodules | 2 +- Avalonia.sln | 27 ++++++ Directory.Build.props | 1 + .../Avalonia.Build.Tasks.csproj | 10 +-- .../DesignWindowLoader.cs | 7 +- .../Remote/FileWatcherTransport.cs | 10 ++- .../HtmlTransport/webapp/package-lock.json | 28 +++++-- .../Remote/RemoteDesignerEntryPoint.cs | 8 +- .../Avalonia.Markup.Xaml.Loader.csproj | 14 ++++ .../AvaloniaRuntimeXamlLoader.cs | 42 ++++++++++ .../AvaloniaXamlIlRuntimeCompiler.cs | 0 .../AvaloniaXamlIlCompiler.cs | 0 .../AvaloniaXamlIlCompilerConfiguration.cs | 0 .../AvaloniaXamlIlLanguage.cs | 0 .../Transformers/AddNameScopeRegistration.cs | 0 .../AvaloniaBindingExtensionTransformer.cs | 0 .../AvaloniaXamlIlAvaloniaPropertyResolver.cs | 0 .../AvaloniaXamlIlBindingPathParser.cs | 0 .../AvaloniaXamlIlBindingPathTransformer.cs | 0 ...iaXamlIlCompiledBindingsMetadataRemover.cs | 0 ...IlConstructorServiceProviderTransformer.cs | 0 ...olTemplateTargetTypeMetadataTransformer.cs | 0 ...valoniaXamlIlDataContextTypeTransformer.cs | 0 ...aloniaXamlIlDesignPropertiesTransformer.cs | 0 .../AvaloniaXamlIlMetadataRemover.cs | 0 .../AvaloniaXamlIlPropertyPathTransformer.cs | 0 ...lIlResolveByNameMarkupExtensionReplacer.cs | 0 ...valoniaXamlIlRootObjectScopeTransformer.cs | 0 .../AvaloniaXamlIlSelectorTransformer.cs | 0 .../AvaloniaXamlIlSetterTransformer.cs | 0 ...mlIlTransformInstanceAttachedProperties.cs | 0 ...ransformSyntheticCompiledBindingMembers.cs | 0 ...amlIlTransitionsTypeMetadataTransformer.cs | 0 .../AvaloniaXamlIlWellKnownTypes.cs | 0 .../IgnoredDirectivesTransformer.cs | 0 .../Transformers/XNameTransformer.cs | 0 .../XamlIlAvaloniaPropertyHelper.cs | 0 .../XamlIlBindingPathHelper.cs | 0 .../XamlIlClrPropertyInfoHelper.cs | 0 ...amlIlPropertyInfoAccessorFactoryEmitter.cs | 0 .../IncludeXamlIlSre.props | 12 +++ .../xamlil.github | 0 .../Avalonia.Markup.Xaml.csproj | 36 -------- .../AvaloniaXamlLoader.cs | 52 +----------- .../MarkupExtensions/ResourceInclude.cs | 3 +- .../Styling/StyleInclude.cs | 3 +- .../Avalonia.Designer.HostApp.csproj | 6 +- .../DesignXamlLoader.cs | 16 ++++ .../Avalonia.Designer.HostApp/Program.cs | 4 +- .../Avalonia.Controls.UnitTests.csproj | 1 + .../ContextMenuTests.cs | 6 +- .../TabControlTests.cs | 4 +- .../Avalonia.Markup.Xaml.UnitTests.csproj | 1 + .../Converters/ConverterTests.cs | 2 +- .../Converters/MultiValueConverterTests.cs | 3 +- .../Converters/NullableConverterTests.cs | 3 +- .../PointsListTypeConverterTests.cs | 3 +- .../Converters/ValueConverterTests.cs | 3 +- .../Data/BindingTests.cs | 9 +- .../Data/BindingTests_Method.cs | 9 +- .../Data/BindingTests_TemplatedParent.cs | 3 +- .../MarkupExtensions/BindingExtensionTests.cs | 9 +- .../CompiledBindingExtensionTests.cs | 69 +++++---------- .../DynamicResourceExtensionTests.cs | 78 ++++++----------- .../MarkupExtensions/ResourceIncludeTests.cs | 6 +- .../StaticResourceExtensionTests.cs | 57 +++++-------- .../StyleIncludeTests.cs | 3 +- .../StyleTests.cs | 3 +- .../Xaml/BasicTests.cs | 83 +++++++++---------- .../Xaml/BindingTests.cs | 47 ++++------- .../Xaml/BindingTests_RelativeSource.cs | 42 ++++------ .../Xaml/ControlBindingTests.cs | 9 +- .../Xaml/DataTemplateTests.cs | 9 +- .../Xaml/EventTests.cs | 9 +- .../Xaml/ResourceDictionaryTests.cs | 6 +- .../Xaml/StyleTests.cs | 44 ++++------ .../Xaml/TreeDataTemplateTests.cs | 3 +- .../Xaml/XamlIlTests.cs | 32 +++---- .../Avalonia.ReactiveUI.UnitTests.csproj | 3 +- .../AvaloniaActivationForViewFetcherTest.cs | 6 +- .../Avalonia.Skia.UnitTests.csproj | 1 + tests/Avalonia.UnitTests/TestServices.cs | 3 +- 82 files changed, 386 insertions(+), 464 deletions(-) create mode 100644 src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj create mode 100644 src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaRuntimeXamlLoader.cs rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/AvaloniaXamlIlRuntimeCompiler.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/AvaloniaXamlIlCompiler.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/AvaloniaXamlIlCompilerConfiguration.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/AvaloniaXamlIlLanguage.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AddNameScopeRegistration.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaBindingExtensionTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlAvaloniaPropertyResolver.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathParser.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlCompiledBindingsMetadataRemover.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlConstructorServiceProviderTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlDesignPropertiesTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlMetadataRemover.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlRootObjectScopeTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlSelectorTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlTransformSyntheticCompiledBindingMembers.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlTransitionsTypeMetadataTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/IgnoredDirectivesTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/Transformers/XNameTransformer.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/XamlIlBindingPathHelper.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs (100%) rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/CompilerExtensions/XamlIlPropertyInfoAccessorFactoryEmitter.cs (100%) create mode 100644 src/Markup/Avalonia.Markup.Xaml.Loader/IncludeXamlIlSre.props rename src/Markup/{Avalonia.Markup.Xaml/XamlIl => Avalonia.Markup.Xaml.Loader}/xamlil.github (100%) create mode 100644 src/tools/Avalonia.Designer.HostApp/DesignXamlLoader.cs diff --git a/.gitmodules b/.gitmodules index 9dbc50ef612..2d11fdfa9e1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,5 +2,5 @@ path = nukebuild/Numerge url = https://github.com/kekekeks/Numerge.git [submodule "src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github"] - path = src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github + path = src/Markup/Avalonia.Markup.Xaml.Loader/xamlil.github url = https://github.com/kekekeks/XamlX.git diff --git a/Avalonia.sln b/Avalonia.sln index 4ab647a25e3..4954260e12d 100644 --- a/Avalonia.sln +++ b/Avalonia.sln @@ -211,6 +211,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Headless", "src\Av EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Headless.Vnc", "src\Avalonia.Headless.Vnc\Avalonia.Headless.Vnc.csproj", "{B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Markup.Xaml.Loader", "src\Markup\Avalonia.Markup.Xaml.Loader\Avalonia.Markup.Xaml.Loader.csproj", "{909A8CBD-7D0E-42FD-B841-022AD8925820}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution src\Shared\RenderHelpers\RenderHelpers.projitems*{3c4c0cb4-0c0f-4450-a37b-148c84ff905f}*SharedItemsImports = 13 @@ -1998,6 +2000,30 @@ Global {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Release|iPhone.Build.0 = Release|Any CPU {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.AppStore|iPhone.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|Any CPU.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|iPhone.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|Any CPU.ActiveCfg = Release|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|Any CPU.Build.0 = Release|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|iPhone.ActiveCfg = Release|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|iPhone.Build.0 = Release|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|iPhoneSimulator.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -2056,6 +2082,7 @@ Global {AF915D5C-AB00-4EA0-B5E6-001F4AE84E68} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B} {351337F5-D66F-461B-A957-4EF60BDB4BA6} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B} {3C84E04B-36CF-4D0D-B965-C26DD649D1F3} = {A0CC0258-D18C-4AB3-854F-7101680FC3F9} + {909A8CBD-7D0E-42FD-B841-022AD8925820} = {8B6A8209-894F-4BA1-B880-965FD453982C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {87366D66-1391-4D90-8999-95A620AD786A} diff --git a/Directory.Build.props b/Directory.Build.props index 1f26df9bbc1..b41f8c488e3 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,5 +1,6 @@ $(MSBuildThisFileDirectory)build-intermediate/nuget + $(MSBuildThisFileDirectory)\src\tools\Avalonia.Designer.HostApp\bin\$(Configuration)\netcoreapp2.0\Avalonia.Designer.HostApp.dll diff --git a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj index 7117fd51a25..490364c0d87 100644 --- a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj +++ b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj @@ -17,14 +17,14 @@ Shared/AvaloniaResourceXamlInfo.cs - + XamlIlExtensions/%(RecursiveDir)%(FileName)%(Extension) - + XamlIl/%(RecursiveDir)%(FileName)%(Extension) - + XamlIl.Cecil/%(RecursiveDir)%(FileName)%(Extension) @@ -57,8 +57,8 @@ Markup/%(RecursiveDir)%(FileName)%(Extension) - - + + diff --git a/src/Avalonia.DesignerSupport/DesignWindowLoader.cs b/src/Avalonia.DesignerSupport/DesignWindowLoader.cs index f3bb0edce50..d7c6cc3693e 100644 --- a/src/Avalonia.DesignerSupport/DesignWindowLoader.cs +++ b/src/Avalonia.DesignerSupport/DesignWindowLoader.cs @@ -12,13 +12,18 @@ namespace Avalonia.DesignerSupport { public class DesignWindowLoader { + public interface IDesignXamlLoader + { + object Load(MemoryStream stream, Assembly localAsm, object o, Uri baseUri); + } + public static Window LoadDesignerWindow(string xaml, string assemblyPath, string xamlFileProjectPath) { Window window; Control control; using (PlatformManager.DesignerMode()) { - var loader = new AvaloniaXamlLoader() {IsDesignMode = true}; + var loader = AvaloniaLocator.Current.GetService(); var stream = new MemoryStream(Encoding.UTF8.GetBytes(xaml)); diff --git a/src/Avalonia.DesignerSupport/Remote/FileWatcherTransport.cs b/src/Avalonia.DesignerSupport/Remote/FileWatcherTransport.cs index 0cb71dd2177..0448a5c05d7 100644 --- a/src/Avalonia.DesignerSupport/Remote/FileWatcherTransport.cs +++ b/src/Avalonia.DesignerSupport/Remote/FileWatcherTransport.cs @@ -9,12 +9,14 @@ namespace Avalonia.DesignerSupport.Remote { class FileWatcherTransport : IAvaloniaRemoteTransportConnection, ITransportWithEnforcedMethod { + private readonly string _appPath; private string _path; private string _lastContents; private bool _disposed; - public FileWatcherTransport(Uri file) + public FileWatcherTransport(Uri file, string appPath) { + _appPath = appPath; _path = file.LocalPath; } @@ -73,7 +75,11 @@ async void UpdaterThread() { Console.WriteLine("Triggering XAML update"); _lastContents = data; - _onMessage?.Invoke(this, new UpdateXamlMessage { Xaml = data }); + _onMessage?.Invoke(this, new UpdateXamlMessage + { + Xaml = data, + AssemblyPath = _appPath + }); } await Task.Delay(100); diff --git a/src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/package-lock.json b/src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/package-lock.json index 87536c670f5..028027a9744 100644 --- a/src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/package-lock.json +++ b/src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/package-lock.json @@ -3564,12 +3564,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3584,17 +3586,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3711,7 +3716,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3723,6 +3729,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3737,6 +3744,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3744,12 +3752,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3768,6 +3778,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3848,7 +3859,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3860,6 +3872,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3981,6 +3994,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs b/src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs index e61fe82c413..3e26ded22db 100644 --- a/src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs +++ b/src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs @@ -112,8 +112,9 @@ static CommandLineArgs ParseCommandLineArgs(string[] args) return rv; } - static IAvaloniaRemoteTransportConnection CreateTransport(Uri transport) + static IAvaloniaRemoteTransportConnection CreateTransport(CommandLineArgs args) { + var transport = args.Transport; if (transport.Scheme == "tcp-bson") { return new BsonTcpTransport().Connect(IPAddress.Parse(transport.Host), transport.Port).Result; @@ -121,7 +122,7 @@ static IAvaloniaRemoteTransportConnection CreateTransport(Uri transport) if (transport.Scheme == "file") { - return new FileWatcherTransport(transport); + return new FileWatcherTransport(transport, args.AppPath); } PrintUsage(); return null; @@ -160,7 +161,7 @@ public IAvaloniaRemoteTransportConnection ConfigureApp(IAvaloniaRemoteTransportC public static void Main(string[] cmdline) { var args = ParseCommandLineArgs(cmdline); - var transport = CreateTransport(args.Transport); + var transport = CreateTransport(args); if (transport is ITransportWithEnforcedMethod enforcedMethod) args.Method = enforcedMethod.PreviewerMethod; var asm = Assembly.LoadFile(System.IO.Path.GetFullPath(args.AppPath)); @@ -234,6 +235,7 @@ private static void OnTransportMessage(IAvaloniaRemoteTransportConnection transp } catch (Exception e) { + Console.Error.WriteLine(e.ToString()); s_transport.Send(new UpdateXamlResultMessage { Error = e.ToString(), diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj b/src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj new file mode 100644 index 00000000000..768545eb7e7 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj @@ -0,0 +1,14 @@ + + + + netstandard2.0 + true + + + + + + + + + diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaRuntimeXamlLoader.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaRuntimeXamlLoader.cs new file mode 100644 index 00000000000..4569970d010 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaRuntimeXamlLoader.cs @@ -0,0 +1,42 @@ +using System; +using System.IO; +using System.Reflection; +using System.Text; +using Avalonia.Markup.Xaml.XamlIl; +// ReSharper disable CheckNamespace + +namespace Avalonia.Markup.Xaml +{ + public static class AvaloniaRuntimeXamlLoader + { + /// + /// Loads XAML from a string. + /// + /// The string containing the XAML. + /// Default assembly for clr-namespace: + /// + /// The optional instance into which the XAML should be loaded. + /// + /// The loaded object. + public static object Load(string xaml, Assembly localAssembly = null, object rootInstance = null, Uri uri = null, bool designMode = false) + { + Contract.Requires(xaml != null); + + using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(xaml))) + { + return Load(stream, localAssembly, rootInstance, uri, designMode); + } + } + + public static object Load(Stream stream, Assembly localAssembly, object rootInstance = null, Uri uri = null, + bool designMode = false) + => AvaloniaXamlIlRuntimeCompiler.Load(stream, localAssembly, rootInstance, uri, designMode); + + public static object Parse(string xaml, Assembly localAssembly = null) + => Load(xaml, localAssembly); + + public static T Parse(string xaml, Assembly localAssembly = null) + => (T)Parse(xaml, localAssembly); + + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaXamlIlRuntimeCompiler.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaXamlIlRuntimeCompiler.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlCompiler.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlCompiler.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompilerConfiguration.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlCompilerConfiguration.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompilerConfiguration.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlCompilerConfiguration.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlLanguage.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlLanguage.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlLanguage.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlLanguage.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AddNameScopeRegistration.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AddNameScopeRegistration.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AddNameScopeRegistration.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AddNameScopeRegistration.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaBindingExtensionTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaBindingExtensionTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaBindingExtensionTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaBindingExtensionTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlAvaloniaPropertyResolver.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlAvaloniaPropertyResolver.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlAvaloniaPropertyResolver.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlAvaloniaPropertyResolver.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathParser.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathParser.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathParser.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathParser.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlCompiledBindingsMetadataRemover.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlCompiledBindingsMetadataRemover.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlCompiledBindingsMetadataRemover.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlCompiledBindingsMetadataRemover.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlConstructorServiceProviderTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlConstructorServiceProviderTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlConstructorServiceProviderTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlConstructorServiceProviderTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlControlTemplateTargetTypeMetadataTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDesignPropertiesTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDesignPropertiesTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlDesignPropertiesTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDesignPropertiesTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlMetadataRemover.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlMetadataRemover.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlMetadataRemover.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlMetadataRemover.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlPropertyPathTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlResolveByNameMarkupExtensionReplacer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlRootObjectScopeTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlRootObjectScopeTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlRootObjectScopeTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlRootObjectScopeTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSelectorTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlSelectorTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSelectorTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlSelectorTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlSetterTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformSyntheticCompiledBindingMembers.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlTransformSyntheticCompiledBindingMembers.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformSyntheticCompiledBindingMembers.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlTransformSyntheticCompiledBindingMembers.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransitionsTypeMetadataTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlTransitionsTypeMetadataTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransitionsTypeMetadataTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlTransitionsTypeMetadataTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/IgnoredDirectivesTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/IgnoredDirectivesTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/IgnoredDirectivesTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/IgnoredDirectivesTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/XNameTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/XNameTransformer.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/XNameTransformer.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/XNameTransformer.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlBindingPathHelper.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlBindingPathHelper.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlBindingPathHelper.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlPropertyInfoAccessorFactoryEmitter.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlPropertyInfoAccessorFactoryEmitter.cs similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/XamlIlPropertyInfoAccessorFactoryEmitter.cs rename to src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlPropertyInfoAccessorFactoryEmitter.cs diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/IncludeXamlIlSre.props b/src/Markup/Avalonia.Markup.Xaml.Loader/IncludeXamlIlSre.props new file mode 100644 index 00000000000..c902fa956a7 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/IncludeXamlIlSre.props @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github b/src/Markup/Avalonia.Markup.Xaml.Loader/xamlil.github similarity index 100% rename from src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github rename to src/Markup/Avalonia.Markup.Xaml.Loader/xamlil.github diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index 3979312ce09..24428253aa0 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -45,44 +45,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -96,8 +62,6 @@ - - diff --git a/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs b/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs index 5c21037924c..0e81ca2be8a 100644 --- a/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs +++ b/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs @@ -10,10 +10,8 @@ namespace Avalonia.Markup.Xaml /// /// Loads XAML for a avalonia application. /// - public class AvaloniaXamlLoader + public static class AvaloniaXamlLoader { - public bool IsDesignMode { get; set; } - /// /// Loads the XAML into a Avalonia component. /// @@ -32,7 +30,7 @@ public static void Load(object obj) /// A base URI to use if is relative. /// /// The loaded object. - public object Load(Uri uri, Uri baseUri = null) + public static object Load(Uri uri, Uri baseUri = null) { Contract.Requires(uri != null); @@ -56,51 +54,9 @@ public object Load(Uri uri, Uri baseUri = null) return compiledResult; } - - var asset = assetLocator.OpenAndGetAssembly(uri, baseUri); - using (var stream = asset.stream) - { - var absoluteUri = uri.IsAbsoluteUri ? uri : new Uri(baseUri, uri); - return Load(stream, asset.assembly, null, absoluteUri); - } + throw new XamlLoadException( + $"No precompiled XAML found for {uri} (baseUri: {baseUri}), make sure to specify x:Class and include your XAML file as AvaloniaResource"); } - /// - /// Loads XAML from a string. - /// - /// The string containing the XAML. - /// Default assembly for clr-namespace: - /// - /// The optional instance into which the XAML should be loaded. - /// - /// The loaded object. - public object Load(string xaml, Assembly localAssembly = null, object rootInstance = null) - { - Contract.Requires(xaml != null); - - using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(xaml))) - { - return Load(stream, localAssembly, rootInstance); - } - } - - /// - /// Loads XAML from a stream. - /// - /// The stream containing the XAML. - /// Default assembly for clr-namespace - /// - /// The optional instance into which the XAML should be loaded. - /// - /// The URI of the XAML - /// The loaded object. - public object Load(Stream stream, Assembly localAssembly, object rootInstance = null, Uri uri = null) - => AvaloniaXamlIlRuntimeCompiler.Load(stream, localAssembly, rootInstance, uri, IsDesignMode); - - public static object Parse(string xaml, Assembly localAssembly = null) - => new AvaloniaXamlLoader().Load(xaml, localAssembly); - - public static T Parse(string xaml, Assembly localAssembly = null) - => (T)Parse(xaml, localAssembly); } } diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResourceInclude.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResourceInclude.cs index 0cedf4f3645..b6137aa89f7 100644 --- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResourceInclude.cs +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResourceInclude.cs @@ -25,8 +25,7 @@ public IResourceDictionary Loaded if (_loaded == null) { _isLoading = true; - var loader = new AvaloniaXamlLoader(); - _loaded = (IResourceDictionary)loader.Load(Source, _baseUri); + _loaded = (IResourceDictionary)AvaloniaXamlLoader.Load(Source, _baseUri); _isLoading = false; } diff --git a/src/Markup/Avalonia.Markup.Xaml/Styling/StyleInclude.cs b/src/Markup/Avalonia.Markup.Xaml/Styling/StyleInclude.cs index ea9042f7790..607b552c281 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Styling/StyleInclude.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Styling/StyleInclude.cs @@ -51,8 +51,7 @@ public IStyle Loaded if (_loaded == null) { _isLoading = true; - var loader = new AvaloniaXamlLoader(); - var loaded = (IStyle)loader.Load(Source, _baseUri); + var loaded = (IStyle)AvaloniaXamlLoader.Load(Source, _baseUri); _loaded = new[] { loaded }; _isLoading = false; } diff --git a/src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj b/src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj index 1c7077870a8..aa40f1d75a6 100644 --- a/src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj +++ b/src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj @@ -18,6 +18,10 @@ - + + + + + diff --git a/src/tools/Avalonia.Designer.HostApp/DesignXamlLoader.cs b/src/tools/Avalonia.Designer.HostApp/DesignXamlLoader.cs new file mode 100644 index 00000000000..b873027765b --- /dev/null +++ b/src/tools/Avalonia.Designer.HostApp/DesignXamlLoader.cs @@ -0,0 +1,16 @@ +using System; +using System.IO; +using System.Reflection; +using Avalonia.DesignerSupport; +using Avalonia.Markup.Xaml.XamlIl; + +namespace Avalonia.Designer.HostApp +{ + class DesignXamlLoader : DesignWindowLoader.IDesignXamlLoader + { + public object Load(MemoryStream stream, Assembly localAsm, object o, Uri baseUri) + { + return AvaloniaXamlIlRuntimeCompiler.Load(stream, localAsm, o, baseUri, true); + } + } +} diff --git a/src/tools/Avalonia.Designer.HostApp/Program.cs b/src/tools/Avalonia.Designer.HostApp/Program.cs index 3163e1fbc38..7469f946a48 100644 --- a/src/tools/Avalonia.Designer.HostApp/Program.cs +++ b/src/tools/Avalonia.Designer.HostApp/Program.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Reflection; +using Avalonia.DesignerSupport; namespace Avalonia.Designer.HostApp { @@ -40,8 +41,9 @@ static void Exec(string[] args) public static void Main(string[] args) #endif { + AvaloniaLocator.CurrentMutable.Bind() + .ToConstant(new DesignXamlLoader()); Avalonia.DesignerSupport.Remote.RemoteDesignerEntryPoint.Main(args); } - } } diff --git a/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj b/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj index 2ca93dcf56b..19c4454d3d1 100644 --- a/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj +++ b/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj @@ -13,6 +13,7 @@ + diff --git a/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs b/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs index 9a81d19bb93..cf8f7c266ab 100644 --- a/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs @@ -191,8 +191,7 @@ public void Context_Menu_In_Resources_Can_Be_Shared() "; - var loader = new AvaloniaXamlLoader(); - var window = (Window)loader.Load(xaml); + var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); var target1 = window.Find("target1"); var target2 = window.Find("target2"); var mouse = new MouseTestHelper(); @@ -235,8 +234,7 @@ public void Context_Menu_Can_Be_Set_In_Style() "; - var loader = new AvaloniaXamlLoader(); - var window = (Window)loader.Load(xaml); + var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); var target1 = window.Find("target1"); var target2 = window.Find("target2"); var mouse = new MouseTestHelper(); diff --git a/tests/Avalonia.Controls.UnitTests/TabControlTests.cs b/tests/Avalonia.Controls.UnitTests/TabControlTests.cs index db9211ac3c0..fd52aeb9af2 100644 --- a/tests/Avalonia.Controls.UnitTests/TabControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TabControlTests.cs @@ -8,6 +8,7 @@ using Avalonia.Controls.Templates; using Avalonia.Controls.Utils; using Avalonia.LogicalTree; +using Avalonia.Markup.Xaml; using Avalonia.Styling; using Avalonia.UnitTests; using Xunit; @@ -338,8 +339,7 @@ public void Can_Have_Empty_Tab_Control() xmlns:local='clr-namespace:Avalonia.Markup.Xaml.UnitTests.Xaml;assembly=Avalonia.Markup.Xaml.UnitTests'> "; - var loader = new Markup.Xaml.AvaloniaXamlLoader(); - var window = (Window)loader.Load(xaml); + var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); var tabControl = window.FindControl("tabs"); tabControl.DataContext = new { Tabs = new List() }; diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj b/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj index e8c4daa7bc0..ad3592294dd 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj @@ -11,6 +11,7 @@ + diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Converters/ConverterTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Converters/ConverterTests.cs index b424003ed60..c9420f1696d 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Converters/ConverterTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Converters/ConverterTests.cs @@ -9,7 +9,7 @@ public class ConverterTests : XamlTestBase public void Bug_2228_Relative_Uris_Should_Be_Correctly_Parsed() { var testClass = typeof(TestClassWithUri); - var parsed = AvaloniaXamlLoader.Parse( + var parsed = AvaloniaRuntimeXamlLoader.Parse( $"<{testClass.Name} xmlns='clr-namespace:{testClass.Namespace}' Uri='/test'/>", testClass.Assembly); Assert.False(parsed.Uri.IsAbsoluteUri); diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Converters/MultiValueConverterTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Converters/MultiValueConverterTests.cs index a77723afe1b..466ae1bf7cd 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Converters/MultiValueConverterTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Converters/MultiValueConverterTests.cs @@ -29,8 +29,7 @@ public void MultiValueConverter_Special_Values_Work() "; - var loader = new AvaloniaXamlLoader(); - var window = (Window)loader.Load(xaml); + var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); var textBlock = window.FindControl("textBlock"); window.ApplyTemplate(); diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Converters/NullableConverterTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Converters/NullableConverterTests.cs index cdd40ed80f2..eb8851c80b7 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Converters/NullableConverterTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Converters/NullableConverterTests.cs @@ -22,8 +22,7 @@ public void Nullable_Types_Should_Still_Be_Converted_Properly() xmlns='clr-namespace:Avalonia.Markup.Xaml.UnitTests.Converters' Thickness = '5' Orientation='Vertical' >"; - var loader = new AvaloniaXamlLoader(); - var data = (ClassWithNullableProperties)loader.Load(xaml, typeof(ClassWithNullableProperties).Assembly); + var data = (ClassWithNullableProperties)AvaloniaRuntimeXamlLoader.Load(xaml, typeof(ClassWithNullableProperties).Assembly); Assert.Equal(new Thickness(5), data.Thickness); Assert.Equal(Orientation.Vertical, data.Orientation); } diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Converters/PointsListTypeConverterTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Converters/PointsListTypeConverterTests.cs index b060905f38d..3b729e9cd80 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Converters/PointsListTypeConverterTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Converters/PointsListTypeConverterTests.cs @@ -31,8 +31,7 @@ public void TypeConverter_Should_Parse(string input) public void Should_Parse_Points_in_Xaml(string input) { var xaml = $""; - var loader = new AvaloniaXamlLoader(); - var polygon = (Polygon)loader.Load(xaml); + var polygon = (Polygon)AvaloniaRuntimeXamlLoader.Load(xaml); var points = polygon.Points; diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Converters/ValueConverterTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Converters/ValueConverterTests.cs index 5e698117c36..4d5983e2763 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Converters/ValueConverterTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Converters/ValueConverterTests.cs @@ -21,8 +21,7 @@ public void ValueConverter_Special_Values_Work() xmlns:c='clr-namespace:Avalonia.Markup.Xaml.UnitTests.Converters;assembly=Avalonia.Markup.Xaml.UnitTests'> "; - var loader = new AvaloniaXamlLoader(); - var window = (Window)loader.Load(xaml); + var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); var textBlock = window.FindControl("textBlock"); window.ApplyTemplate(); diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests.cs index 6730e3134d5..afc4a36feae 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests.cs @@ -24,8 +24,7 @@ public void Binding_With_Null_Path_Works() xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'> "; - var loader = new AvaloniaXamlLoader(); - var window = (Window)loader.Load(xaml); + var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); var textBlock = window.FindControl("textBlock"); window.DataContext = "foo"; @@ -45,8 +44,7 @@ public void Binding_To_DoNothing_Works() xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'> "; - var loader = new AvaloniaXamlLoader(); - var window = (Window)loader.Load(xaml); + var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); var textBlock = window.FindControl("textBlock"); window.ApplyTemplate(); @@ -86,8 +84,7 @@ public void MultiBinding_TemplatedParent_Works() "; - var loader = new AvaloniaXamlLoader(); - var window = (Window)loader.Load(xaml); + var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); var textBox = window.FindControl("textBox"); window.ApplyTemplate(); diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests_Method.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests_Method.cs index b2b4c4da1ab..a7a004bd49b 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests_Method.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests_Method.cs @@ -20,8 +20,7 @@ public void Binding_Method_To_Command_Works() xmlns:local='clr-namespace:Avalonia.Markup.Xaml.UnitTests.Xaml;assembly=Avalonia.Markup.Xaml.UnitTests'> "; - var loader = new AvaloniaXamlLoader(); - var window = (Window)loader.Load(xaml); + var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); var button = window.FindControl "; - var control = AvaloniaXamlLoader.Parse(xaml); + var control = AvaloniaRuntimeXamlLoader.Parse(xaml); var button = control.FindControl "; - var control = AvaloniaXamlLoader.Parse(xaml); + var control = AvaloniaRuntimeXamlLoader.Parse(xaml); var button = control.FindControl public static class AvaloniaXamlLoader { + public interface IRuntimeXamlLoader + { + object Load(Stream stream, Assembly localAsm, object o, Uri baseUri, bool designMode); + } + /// /// Loads the XAML into a Avalonia component. /// @@ -53,7 +58,19 @@ public static object Load(Uri uri, Uri baseUri = null) if (compiledResult != null) return compiledResult; } - + + // This is intended for unit-tests only + var runtimeLoader = AvaloniaLocator.Current.GetService(); + if (runtimeLoader != null) + { + var asset = assetLocator.OpenAndGetAssembly(uri, baseUri); + using (var stream = asset.stream) + { + var absoluteUri = uri.IsAbsoluteUri ? uri : new Uri(baseUri, uri); + return runtimeLoader.Load(stream, asset.assembly, null, absoluteUri, false); + } + } + throw new XamlLoadException( $"No precompiled XAML found for {uri} (baseUri: {baseUri}), make sure to specify x:Class and include your XAML file as AvaloniaResource"); } diff --git a/src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj b/src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj index aa40f1d75a6..51d18e55d1a 100644 --- a/src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj +++ b/src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj @@ -20,8 +20,8 @@ - - + + diff --git a/src/tools/Avalonia.Designer.HostApp/DesignXamlLoader.cs b/src/tools/Avalonia.Designer.HostApp/DesignXamlLoader.cs index b873027765b..7af29a56a14 100644 --- a/src/tools/Avalonia.Designer.HostApp/DesignXamlLoader.cs +++ b/src/tools/Avalonia.Designer.HostApp/DesignXamlLoader.cs @@ -1,16 +1,16 @@ using System; using System.IO; using System.Reflection; -using Avalonia.DesignerSupport; +using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml.XamlIl; namespace Avalonia.Designer.HostApp { - class DesignXamlLoader : DesignWindowLoader.IDesignXamlLoader + class DesignXamlLoader : AvaloniaXamlLoader.IRuntimeXamlLoader { - public object Load(MemoryStream stream, Assembly localAsm, object o, Uri baseUri) + public object Load(Stream stream, Assembly localAsm, object o, Uri baseUri, bool designMode) { - return AvaloniaXamlIlRuntimeCompiler.Load(stream, localAsm, o, baseUri, true); + return AvaloniaXamlIlRuntimeCompiler.Load(stream, localAsm, o, baseUri, designMode); } } } diff --git a/src/tools/Avalonia.Designer.HostApp/Program.cs b/src/tools/Avalonia.Designer.HostApp/Program.cs index 7469f946a48..4472dac4e35 100644 --- a/src/tools/Avalonia.Designer.HostApp/Program.cs +++ b/src/tools/Avalonia.Designer.HostApp/Program.cs @@ -2,6 +2,7 @@ using System.IO; using System.Reflection; using Avalonia.DesignerSupport; +using Avalonia.Markup.Xaml; namespace Avalonia.Designer.HostApp { @@ -41,7 +42,7 @@ static void Exec(string[] args) public static void Main(string[] args) #endif { - AvaloniaLocator.CurrentMutable.Bind() + AvaloniaLocator.CurrentMutable.Bind() .ToConstant(new DesignXamlLoader()); Avalonia.DesignerSupport.Remote.RemoteDesignerEntryPoint.Main(args); } diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/ResourceIncludeTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/ResourceIncludeTests.cs index d9505ba3ed5..54e89ae37e6 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/ResourceIncludeTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/ResourceIncludeTests.cs @@ -7,7 +7,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MakrupExtensions { - public class ResourceIncludeTests + public class ResourceIncludeTests : XamlTestBase { public class StaticResourceExtensionTests : XamlTestBase { diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs b/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs index 5172b2e830c..2bc82d13535 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.IO; +using System.Reflection; using System.Text; using Avalonia.Data; @@ -11,6 +13,15 @@ public XamlTestBase() { // Ensure necessary assemblies are loaded. var _ = typeof(TemplateBinding); + if (AvaloniaLocator.Current.GetService() == null) + AvaloniaLocator.CurrentMutable.Bind() + .ToConstant(new TestXamlLoaderShim()); + } + + class TestXamlLoaderShim : AvaloniaXamlLoader.IRuntimeXamlLoader + { + public object Load(Stream stream, Assembly localAsm, object o, Uri baseUri, bool designMode) + => AvaloniaRuntimeXamlLoader.Load(stream, localAsm, o, baseUri, designMode); } } } From 835aed07a5155d111d9bf9d9fd1e005784016f11 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 17 Jul 2020 17:13:24 +0300 Subject: [PATCH 327/354] Whoopsie --- src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs b/src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs index 3e26ded22db..764fc7b3323 100644 --- a/src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs +++ b/src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs @@ -235,7 +235,6 @@ private static void OnTransportMessage(IAvaloniaRemoteTransportConnection transp } catch (Exception e) { - Console.Error.WriteLine(e.ToString()); s_transport.Send(new UpdateXamlResultMessage { Error = e.ToString(), From a6c0968218f21302011d4959fda0c4a05d124cdc Mon Sep 17 00:00:00 2001 From: Benedikt Stebner Date: Fri, 17 Jul 2020 17:34:05 +0200 Subject: [PATCH 328/354] Correctly check for text.Length --- src/Skia/Avalonia.Skia/TextShaperImpl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Skia/Avalonia.Skia/TextShaperImpl.cs b/src/Skia/Avalonia.Skia/TextShaperImpl.cs index ffe11755679..558e96b0976 100644 --- a/src/Skia/Avalonia.Skia/TextShaperImpl.cs +++ b/src/Skia/Avalonia.Skia/TextShaperImpl.cs @@ -82,7 +82,7 @@ private static void FillBuffer(Buffer buffer, ReadOnlySlice text) if (codepoint.IsBreakChar) { - if (i < text.End) + if (i < text.Length) { var nextCodepoint = Codepoint.ReadAt(text, i + 1, out _); From 718a50ccd8ff8d1eb12e0629c4da5209a7538a88 Mon Sep 17 00:00:00 2001 From: Benedikt Stebner Date: Fri, 17 Jul 2020 18:28:25 +0200 Subject: [PATCH 329/354] Fix FillBuffer --- src/Skia/Avalonia.Skia/TextShaperImpl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Skia/Avalonia.Skia/TextShaperImpl.cs b/src/Skia/Avalonia.Skia/TextShaperImpl.cs index 558e96b0976..b0384a1fdf3 100644 --- a/src/Skia/Avalonia.Skia/TextShaperImpl.cs +++ b/src/Skia/Avalonia.Skia/TextShaperImpl.cs @@ -82,7 +82,7 @@ private static void FillBuffer(Buffer buffer, ReadOnlySlice text) if (codepoint.IsBreakChar) { - if (i < text.Length) + if (i + 1 < text.Length) { var nextCodepoint = Codepoint.ReadAt(text, i + 1, out _); From 05154391fb39d430ae0c0df1344feea111ef54e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Pedro?= Date: Tue, 14 Jul 2020 19:29:40 +0100 Subject: [PATCH 330/354] Fixed item type inference in compiled bindings. --- ...valoniaXamlIlDataContextTypeTransformer.cs | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs index 5a0d6bac8d4..241976241f2 100644 --- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlDataContextTypeTransformer.cs @@ -1,11 +1,6 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Text; -using Avalonia.Markup.Parsers; -using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers; -using Avalonia.Utilities; using XamlX; using XamlX.Ast; using XamlX.Transform; @@ -129,12 +124,13 @@ private static AvaloniaXamlIlDataContextTypeMetadataNode InferDataContextOfPrese if (itemsCollectionType != null) { - var elementType = itemsCollectionType - .GetAllInterfaces() - .FirstOrDefault(i => - i.GenericTypeDefinition?.Equals(context.Configuration.WellKnownTypes.IEnumerableT) == true) - .GenericArguments[0]; - return new AvaloniaXamlIlDataContextTypeMetadataNode(on, elementType); + foreach (var i in GetAllInterfacesIncludingSelf(itemsCollectionType)) + { + if (i.GenericTypeDefinition?.Equals(context.Configuration.WellKnownTypes.IEnumerableT) == true) + { + return new AvaloniaXamlIlDataContextTypeMetadataNode(on, i.GenericArguments[0]); + } + } } // We can't infer the collection type and the currently calculated type is definitely wrong. // Notify the user that we were unable to infer the data context type if they use a compiled binding. @@ -165,6 +161,15 @@ private static AvaloniaXamlIlDataContextTypeMetadataNode ParseDataContext(AstTra return new AvaloniaXamlIlUninferrableDataContextMetadataNode(on); } + + private static IEnumerable GetAllInterfacesIncludingSelf(IXamlType type) + { + if (type.IsInterface) + yield return type; + + foreach (var i in type.GetAllInterfaces()) + yield return i; + } } [DebuggerDisplay("DataType = {DataContextType}")] From c414e26cf67a60c625a8f925cd87f303b162fb9d Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Sun, 19 Jul 2020 00:15:08 +0200 Subject: [PATCH 331/354] Ensure that TryParse won't throw. --- src/Avalonia.Visuals/Media/Color.cs | 13 ++++++++---- .../Media/ColorTests.cs | 20 +++++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Visuals/Media/Color.cs b/src/Avalonia.Visuals/Media/Color.cs index 052ee5e1b7e..40515423dd7 100644 --- a/src/Avalonia.Visuals/Media/Color.cs +++ b/src/Avalonia.Visuals/Media/Color.cs @@ -89,6 +89,11 @@ public static Color FromUInt32(uint value) /// The . public static Color Parse(string s) { + if (s is null) + { + throw new ArgumentNullException(nameof(s)); + } + if (TryParse(s, out Color color)) { return color; @@ -120,14 +125,16 @@ public static Color Parse(ReadOnlySpan s) /// The status of the operation. public static bool TryParse(string s, out Color color) { + color = default; + if (s == null) { - throw new ArgumentNullException(nameof(s)); + return false; } if (s.Length == 0) { - throw new FormatException(); + return false; } if (s[0] == '#' && TryParseInternal(s.AsSpan(), out color)) @@ -144,8 +151,6 @@ public static bool TryParse(string s, out Color color) return true; } - color = default; - return false; } diff --git a/tests/Avalonia.Visuals.UnitTests/Media/ColorTests.cs b/tests/Avalonia.Visuals.UnitTests/Media/ColorTests.cs index f3f3c9a4ca6..d68c2fd5fd5 100644 --- a/tests/Avalonia.Visuals.UnitTests/Media/ColorTests.cs +++ b/tests/Avalonia.Visuals.UnitTests/Media/ColorTests.cs @@ -179,5 +179,25 @@ public void TryParse_Hex_Value_Doesnt_Accept_Invalid_Number() { Assert.False(Color.TryParse("#ff808g80", out _)); } + + [Fact] + public void Parse_Throws_ArgumentNullException_For_Null_Input() + { + Assert.Throws(() => Color.Parse((string)null)); + } + + [Fact] + public void Parse_Throws_FormatException_For_Invalid_Input() + { + Assert.Throws(() => Color.Parse(string.Empty)); + } + + [Theory] + [InlineData("")] + [InlineData(null)] + public void TryParse_Returns_False_For_Invalid_Input(string input) + { + Assert.False(Color.TryParse(input, out _)); + } } } From 50925b988e04b1cb06e906bd81d9b3760c004d49 Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Sun, 19 Jul 2020 00:19:23 +0200 Subject: [PATCH 332/354] Use is check. --- src/Avalonia.Visuals/Media/Color.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Visuals/Media/Color.cs b/src/Avalonia.Visuals/Media/Color.cs index 40515423dd7..16b4f90d579 100644 --- a/src/Avalonia.Visuals/Media/Color.cs +++ b/src/Avalonia.Visuals/Media/Color.cs @@ -127,7 +127,7 @@ public static bool TryParse(string s, out Color color) { color = default; - if (s == null) + if (s is null) { return false; } From 09099c1234bb5fdf0285d3855bf8c515ae056184 Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Sun, 19 Jul 2020 14:50:29 +0200 Subject: [PATCH 333/354] Fix text wrapping for fluent TextBox --- src/Avalonia.Controls/TextBox.cs | 2 +- src/Avalonia.Themes.Fluent/TextBox.xaml | 105 +++++++++----------- src/Skia/Avalonia.Skia/FormattedTextImpl.cs | 2 +- 3 files changed, 51 insertions(+), 58 deletions(-) diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index 394699ce645..87a674fabd0 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -134,7 +134,7 @@ public TextBox() { if (acceptsReturn) { - return wrapping == TextWrapping.NoWrap ? + return wrapping != TextWrapping.Wrap ? ScrollBarVisibility.Auto : ScrollBarVisibility.Disabled; } diff --git a/src/Avalonia.Themes.Fluent/TextBox.xaml b/src/Avalonia.Themes.Fluent/TextBox.xaml index 278cde934cb..0327e776e37 100644 --- a/src/Avalonia.Themes.Fluent/TextBox.xaml +++ b/src/Avalonia.Themes.Fluent/TextBox.xaml @@ -10,73 +10,65 @@ - - - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + - - - - - - + + + + + + + diff --git a/src/Skia/Avalonia.Skia/FormattedTextImpl.cs b/src/Skia/Avalonia.Skia/FormattedTextImpl.cs index d1f8d6a7793..5e630e54a60 100644 --- a/src/Skia/Avalonia.Skia/FormattedTextImpl.cs +++ b/src/Skia/Avalonia.Skia/FormattedTextImpl.cs @@ -570,7 +570,7 @@ private void Rebuild() float constraint = -1; - if (_wrapping != TextWrapping.NoWrap) + if (_wrapping == TextWrapping.Wrap) { constraint = widthConstraint <= 0 ? MAX_LINE_WIDTH : widthConstraint; if (constraint > MAX_LINE_WIDTH) From 2ede354bbc7268f39c733342212a7730e976a7e0 Mon Sep 17 00:00:00 2001 From: Lorenzo Delana Date: Mon, 20 Jul 2020 14:53:19 +0200 Subject: [PATCH 334/354] fix X11 XDestroyWindow crash --- src/Avalonia.X11/X11Window.cs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index 2a13999e8db..1f1f31db0ac 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -760,11 +760,7 @@ public void SetInputRoot(IInputRoot inputRoot) public void Dispose() { - if (_handle != IntPtr.Zero) - { - XDestroyWindow(_x11.Display, _handle); - Cleanup(); - } + Cleanup(); } void Cleanup() @@ -787,8 +783,7 @@ void Cleanup() } if (_useRenderWindow && _renderHandle != IntPtr.Zero) - { - XDestroyWindow(_x11.Display, _renderHandle); + { _renderHandle = IntPtr.Zero; } } From c5edf9bc5da4e1dabad5d5a9f3cd8b078bd254d2 Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Mon, 20 Jul 2020 18:37:11 +0200 Subject: [PATCH 335/354] Initial --- .../Media/TextFormatting/TextLineImpl.cs | 20 ++++-- .../Media/TextFormatting/TextLineTests.cs | 62 +++++++++++++++++-- 2 files changed, 71 insertions(+), 11 deletions(-) diff --git a/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs b/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs index 980b1a2d40c..f73a7be759a 100644 --- a/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs +++ b/src/Avalonia.Visuals/Media/TextFormatting/TextLineImpl.cs @@ -181,7 +181,7 @@ public override CharacterHit GetNextCaretCharacterHit(CharacterHit characterHit) return nextCharacterHit; } - return new CharacterHit(TextRange.End); // Can't move, we're after the last character + return characterHit; // Can't move, we're after the last character } /// @@ -192,7 +192,7 @@ public override CharacterHit GetPreviousCaretCharacterHit(CharacterHit character return previousCharacterHit; } - return new CharacterHit(TextRange.Start); // Can't move, we're before the first character + return characterHit; // Can't move, we're before the first character } /// @@ -247,9 +247,13 @@ private bool TryFindNextCharacterHit(CharacterHit characterHit, out CharacterHit { var run = _textRuns[runIndex]; - nextCharacterHit = run.GlyphRun.FindNearestCharacterHit(characterHit.FirstCharacterIndex + characterHit.TrailingLength, out _); + var foundCharacterHit = run.GlyphRun.FindNearestCharacterHit(characterHit.FirstCharacterIndex + characterHit.TrailingLength, out _); - if (codepointIndex <= nextCharacterHit.FirstCharacterIndex + nextCharacterHit.TrailingLength) + nextCharacterHit = characterHit.TrailingLength != 0 ? + foundCharacterHit : + new CharacterHit(foundCharacterHit.FirstCharacterIndex + foundCharacterHit.TrailingLength); + + if (nextCharacterHit.FirstCharacterIndex > characterHit.FirstCharacterIndex) { return true; } @@ -283,9 +287,13 @@ private bool TryFindPreviousCharacterHit(CharacterHit characterHit, out Characte { var run = _textRuns[runIndex]; - previousCharacterHit = run.GlyphRun.FindNearestCharacterHit(characterHit.FirstCharacterIndex - 1, out _); + var foundCharacterHit = run.GlyphRun.FindNearestCharacterHit(characterHit.FirstCharacterIndex - 1, out _); + + previousCharacterHit = characterHit.TrailingLength != 0 ? + foundCharacterHit : + new CharacterHit(foundCharacterHit.FirstCharacterIndex); - if (previousCharacterHit.FirstCharacterIndex < codepointIndex) + if (previousCharacterHit.FirstCharacterIndex < characterHit.FirstCharacterIndex) { return true; } diff --git a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs index f0951c61d3e..09cbf3bf08d 100644 --- a/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs +++ b/tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLineTests.cs @@ -31,12 +31,37 @@ public void Should_Get_Next_Caret_CharacterHit(string text) var nextCharacterHit = new CharacterHit(0); - for (var i = 1; i < clusters.Length; i++) + for (var i = 0; i < clusters.Length; i++) { + Assert.Equal(clusters[i], nextCharacterHit.FirstCharacterIndex); + nextCharacterHit = textLine.GetNextCaretCharacterHit(nextCharacterHit); + } + + var lastCharacterHit = nextCharacterHit; + + nextCharacterHit = textLine.GetNextCaretCharacterHit(lastCharacterHit); + + Assert.Equal(lastCharacterHit.FirstCharacterIndex, nextCharacterHit.FirstCharacterIndex); + + Assert.Equal(lastCharacterHit.TrailingLength, nextCharacterHit.TrailingLength); + + nextCharacterHit = new CharacterHit(0, clusters[1] - clusters[0]); - Assert.Equal(clusters[i], nextCharacterHit.FirstCharacterIndex + nextCharacterHit.TrailingLength); + for (var i = 0; i < clusters.Length; i++) + { + Assert.Equal(clusters[i], nextCharacterHit.FirstCharacterIndex); + + nextCharacterHit = textLine.GetNextCaretCharacterHit(nextCharacterHit); } + + lastCharacterHit = nextCharacterHit; + + nextCharacterHit = textLine.GetNextCaretCharacterHit(lastCharacterHit); + + Assert.Equal(lastCharacterHit.FirstCharacterIndex, nextCharacterHit.FirstCharacterIndex); + + Assert.Equal(lastCharacterHit.TrailingLength, nextCharacterHit.TrailingLength); } } @@ -60,14 +85,41 @@ public void Should_Get_Previous_Caret_CharacterHit(string text) var clusters = textLine.TextRuns.Cast().SelectMany(x => x.GlyphRun.GlyphClusters) .ToArray(); - var previousCharacterHit = new CharacterHit(clusters[^1]); + var previousCharacterHit = new CharacterHit(text.Length); - for (var i = clusters.Length - 2; i > 0; i--) + for (var i = clusters.Length - 1; i >= 0; i--) { previousCharacterHit = textLine.GetPreviousCaretCharacterHit(previousCharacterHit); - Assert.Equal(clusters[i], previousCharacterHit.FirstCharacterIndex); + Assert.Equal(clusters[i], + previousCharacterHit.FirstCharacterIndex + previousCharacterHit.TrailingLength); } + + var firstCharacterHit = previousCharacterHit; + + previousCharacterHit = textLine.GetPreviousCaretCharacterHit(firstCharacterHit); + + Assert.Equal(firstCharacterHit.FirstCharacterIndex, previousCharacterHit.FirstCharacterIndex); + + Assert.Equal(firstCharacterHit.TrailingLength, previousCharacterHit.TrailingLength); + + previousCharacterHit = new CharacterHit(clusters[^1], text.Length - clusters[^1]); + + for (var i = clusters.Length - 1; i > 0; i--) + { + previousCharacterHit = textLine.GetPreviousCaretCharacterHit(previousCharacterHit); + + Assert.Equal(clusters[i], + previousCharacterHit.FirstCharacterIndex + previousCharacterHit.TrailingLength); + } + + firstCharacterHit = previousCharacterHit; + + previousCharacterHit = textLine.GetPreviousCaretCharacterHit(firstCharacterHit); + + Assert.Equal(firstCharacterHit.FirstCharacterIndex, previousCharacterHit.FirstCharacterIndex); + + Assert.Equal(firstCharacterHit.TrailingLength, previousCharacterHit.TrailingLength); } } From 8c331534a9071a4b95e927cf9805ad5b455963c1 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 20 Jul 2020 15:44:19 -0300 Subject: [PATCH 336/354] fix nre on osx when tooltip closes. --- src/Avalonia.Native/WindowImplBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Native/WindowImplBase.cs b/src/Avalonia.Native/WindowImplBase.cs index f916e95d7c3..88956e41e19 100644 --- a/src/Avalonia.Native/WindowImplBase.cs +++ b/src/Avalonia.Native/WindowImplBase.cs @@ -432,7 +432,7 @@ public void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel) TransparencyLevel = transparencyLevel; - _native.SetBlurEnabled(TransparencyLevel >= WindowTransparencyLevel.Blur); + _native?.SetBlurEnabled(TransparencyLevel >= WindowTransparencyLevel.Blur); TransparencyLevelChanged?.Invoke(TransparencyLevel); } } From 0148106f545a3afa3b4b87b3f7a731f04a54d9ea Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 20 Jul 2020 16:27:26 -0300 Subject: [PATCH 337/354] Seperate RenderScaling from DesktopScaling. --- .../Platform/SkiaPlatform/TopLevelImpl.cs | 2 +- .../Offscreen/OffscreenTopLevelImpl.cs | 2 +- .../Platform/ITopLevelImpl.cs | 6 +-- .../Platform/IWindowBaseImpl.cs | 5 +++ .../ManagedPopupPositionerPopupImplHelper.cs | 4 +- src/Avalonia.Controls/TopLevel.cs | 4 +- src/Avalonia.Controls/Window.cs | 2 +- .../Remote/PreviewerWindowImpl.cs | 1 + src/Avalonia.DesignerSupport/Remote/Stubs.cs | 3 +- src/Avalonia.Headless/HeadlessWindowImpl.cs | 9 +++-- ...sxManagedPopupPositionerPopupImplHelper.cs | 15 -------- src/Avalonia.Native/PopupImpl.cs | 2 +- src/Avalonia.Native/WindowImplBase.cs | 8 ++-- src/Avalonia.X11/X11NativeControlHost.cs | 4 +- src/Avalonia.X11/X11Window.cs | 38 ++++++++++--------- .../FramebufferToplevelImpl.cs | 4 +- .../Wpf/WpfTopLevelImpl.cs | 6 +-- src/Windows/Avalonia.Win32/PopupImpl.cs | 2 +- .../Avalonia.Win32/Win32NativeControlHost.cs | 4 +- .../Avalonia.Win32/WindowImpl.AppWndProc.cs | 14 +++---- .../WindowImpl.CustomCaptionProc.cs | 2 +- src/Windows/Avalonia.Win32/WindowImpl.cs | 28 ++++++++------ src/iOS/Avalonia.iOS/TopLevelImpl.cs | 2 +- .../ContextMenuTests.cs | 2 +- .../DesktopStyleApplicationLifetimeTests.cs | 2 +- .../TopLevelTests.cs | 4 +- .../WindowBaseTests.cs | 10 ++--- .../WindowTests.cs | 14 +++---- .../WindowingPlatformMock.cs | 4 +- tests/Avalonia.LeakTests/ControlTests.cs | 2 +- .../MockWindowingPlatform.cs | 4 +- 31 files changed, 105 insertions(+), 104 deletions(-) delete mode 100644 src/Avalonia.Native/OsxManagedPopupPositionerPopupImplHelper.cs diff --git a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs index 69fd2a9f135..71dce93ce7a 100644 --- a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs +++ b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs @@ -126,7 +126,7 @@ public virtual void Show() _view.Visibility = ViewStates.Visible; } - public double Scaling => 1; + public double RenderScaling => 1; void Draw() { diff --git a/src/Avalonia.Controls/Embedding/Offscreen/OffscreenTopLevelImpl.cs b/src/Avalonia.Controls/Embedding/Offscreen/OffscreenTopLevelImpl.cs index f8bd2878d9b..522103c7bdd 100644 --- a/src/Avalonia.Controls/Embedding/Offscreen/OffscreenTopLevelImpl.cs +++ b/src/Avalonia.Controls/Embedding/Offscreen/OffscreenTopLevelImpl.cs @@ -35,7 +35,7 @@ public Size ClientSize } } - public double Scaling + public double RenderScaling { get { return _scaling; } set diff --git a/src/Avalonia.Controls/Platform/ITopLevelImpl.cs b/src/Avalonia.Controls/Platform/ITopLevelImpl.cs index 0d77cbf8023..7514f214aa7 100644 --- a/src/Avalonia.Controls/Platform/ITopLevelImpl.cs +++ b/src/Avalonia.Controls/Platform/ITopLevelImpl.cs @@ -23,10 +23,10 @@ public interface ITopLevelImpl : IDisposable Size ClientSize { get; } /// - /// Gets the scaling factor for the toplevel. + /// Gets the scaling factor for the toplevel. This is used for rendering. /// - double Scaling { get; } - + double RenderScaling { get; } + /// /// The list of native platform's surfaces that can be consumed by rendering subsystems. /// diff --git a/src/Avalonia.Controls/Platform/IWindowBaseImpl.cs b/src/Avalonia.Controls/Platform/IWindowBaseImpl.cs index b190c4f2e7b..ecaf87d1ed7 100644 --- a/src/Avalonia.Controls/Platform/IWindowBaseImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowBaseImpl.cs @@ -13,6 +13,11 @@ public interface IWindowBaseImpl : ITopLevelImpl /// Hides the window. /// void Hide(); + + /// + /// Gets the scaling factor for Window positioning and sizing. + /// + double DesktopScaling { get; } /// /// Gets the position of the window in device pixels. diff --git a/src/Avalonia.Controls/Primitives/PopupPositioning/ManagedPopupPositionerPopupImplHelper.cs b/src/Avalonia.Controls/Primitives/PopupPositioning/ManagedPopupPositionerPopupImplHelper.cs index b0e3d1ab085..91ed5d975dc 100644 --- a/src/Avalonia.Controls/Primitives/PopupPositioning/ManagedPopupPositionerPopupImplHelper.cs +++ b/src/Avalonia.Controls/Primitives/PopupPositioning/ManagedPopupPositionerPopupImplHelper.cs @@ -40,9 +40,9 @@ public Rect ParentClientAreaScreenGeometry public void MoveAndResize(Point devicePoint, Size virtualSize) { - _moveResize(new PixelPoint((int)devicePoint.X, (int)devicePoint.Y), virtualSize, _parent.Scaling); + _moveResize(new PixelPoint((int)devicePoint.X, (int)devicePoint.Y), virtualSize, _parent.RenderScaling); } - public virtual double Scaling => _parent.Scaling; + public virtual double Scaling => _parent.DesktopScaling; } } diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index 611f0c92901..3d24f604637 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -280,10 +280,10 @@ bool IInputRoot.ShowAccessKeys } /// - double ILayoutRoot.LayoutScaling => PlatformImpl?.Scaling ?? 1; + double ILayoutRoot.LayoutScaling => PlatformImpl?.RenderScaling ?? 1; /// - double IRenderRoot.RenderScaling => PlatformImpl?.Scaling ?? 1; + double IRenderRoot.RenderScaling => PlatformImpl?.RenderScaling ?? 1; IStyleHost IStyleHost.StylingParent => _globalStyles; diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 18d8c89f49e..90e5c22c45b 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -818,7 +818,7 @@ private void OnGotInputWhenDisabled() private void SetWindowStartupLocation(IWindowBaseImpl owner = null) { - var scaling = owner?.Scaling ?? PlatformImpl?.Scaling ?? 1; + var scaling = owner?.DesktopScaling ?? PlatformImpl?.DesktopScaling ?? 1; // TODO: We really need non-client size here. var rect = new PixelRect( diff --git a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs index dce24df9d91..25c26be91e2 100644 --- a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs +++ b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs @@ -36,6 +36,7 @@ public void BeginResizeDrag(WindowEdge edge, PointerPressedEventArgs e) { } + public double DesktopScaling => 1.0; public PixelPoint Position { get; set; } public Action PositionChanged { get; set; } public Action Deactivated { get; set; } diff --git a/src/Avalonia.DesignerSupport/Remote/Stubs.cs b/src/Avalonia.DesignerSupport/Remote/Stubs.cs index 168cdbc03fe..f377b1bcd1e 100644 --- a/src/Avalonia.DesignerSupport/Remote/Stubs.cs +++ b/src/Avalonia.DesignerSupport/Remote/Stubs.cs @@ -21,7 +21,8 @@ class WindowStub : IWindowImpl, IPopupImpl public IPlatformHandle Handle { get; } public Size MaxAutoSizeHint { get; } public Size ClientSize { get; } - public double Scaling { get; } = 1.0; + public double RenderScaling { get; } = 1.0; + public double DesktopScaling => 1.0; public IEnumerable Surfaces { get; } public Action Input { get; set; } public Action Paint { get; set; } diff --git a/src/Avalonia.Headless/HeadlessWindowImpl.cs b/src/Avalonia.Headless/HeadlessWindowImpl.cs index 5bd46b67149..8f4fa5e3041 100644 --- a/src/Avalonia.Headless/HeadlessWindowImpl.cs +++ b/src/Avalonia.Headless/HeadlessWindowImpl.cs @@ -41,7 +41,8 @@ public void Dispose() } public Size ClientSize { get; set; } - public double Scaling { get; } = 1; + public double RenderScaling { get; } = 1; + public double DesktopScaling => RenderScaling; public IEnumerable Surfaces { get; } public Action Input { get; set; } public Action Paint { get; set; } @@ -62,9 +63,9 @@ public void SetInputRoot(IInputRoot inputRoot) public IInputRoot InputRoot { get; set; } - public Point PointToClient(PixelPoint point) => point.ToPoint(Scaling); + public Point PointToClient(PixelPoint point) => point.ToPoint(RenderScaling); - public PixelPoint PointToScreen(Point point) => PixelPoint.FromPoint(point, Scaling); + public PixelPoint PointToScreen(Point point) => PixelPoint.FromPoint(point, RenderScaling); public void SetCursor(IPlatformHandle cursor) { @@ -201,7 +202,7 @@ public void Dispose() public ILockedFramebuffer Lock() { - var bmp = new WriteableBitmap(PixelSize.FromSize(ClientSize, Scaling), new Vector(96, 96) * Scaling); + var bmp = new WriteableBitmap(PixelSize.FromSize(ClientSize, RenderScaling), new Vector(96, 96) * RenderScaling); var fb = bmp.Lock(); return new FramebufferProxy(fb, () => { diff --git a/src/Avalonia.Native/OsxManagedPopupPositionerPopupImplHelper.cs b/src/Avalonia.Native/OsxManagedPopupPositionerPopupImplHelper.cs deleted file mode 100644 index 8aa9b1a122a..00000000000 --- a/src/Avalonia.Native/OsxManagedPopupPositionerPopupImplHelper.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Avalonia.Controls.Primitives.PopupPositioning; -using Avalonia.Platform; - -namespace Avalonia.Native -{ - class OsxManagedPopupPositionerPopupImplHelper : ManagedPopupPositionerPopupImplHelper - { - public OsxManagedPopupPositionerPopupImplHelper(IWindowBaseImpl parent, MoveResizeDelegate moveResize) : base(parent, moveResize) - { - - } - - public override double Scaling => 1; - } -} diff --git a/src/Avalonia.Native/PopupImpl.cs b/src/Avalonia.Native/PopupImpl.cs index b0da5fdc43a..2d246e08d20 100644 --- a/src/Avalonia.Native/PopupImpl.cs +++ b/src/Avalonia.Native/PopupImpl.cs @@ -26,7 +26,7 @@ public PopupImpl(IAvaloniaNativeFactory factory, var context = _opts.UseGpu ? glFeature?.DeferredContext : null; Init(factory.CreatePopup(e, context?.Context), factory.CreateScreens(), context); } - PopupPositioner = new ManagedPopupPositioner(new OsxManagedPopupPositionerPopupImplHelper(parent, MoveResize)); + PopupPositioner = new ManagedPopupPositioner(new ManagedPopupPositionerPopupImplHelper(parent, MoveResize)); } private void MoveResize(PixelPoint position, Size size, double scaling) diff --git a/src/Avalonia.Native/WindowImplBase.cs b/src/Avalonia.Native/WindowImplBase.cs index f916e95d7c3..42eecc36ea6 100644 --- a/src/Avalonia.Native/WindowImplBase.cs +++ b/src/Avalonia.Native/WindowImplBase.cs @@ -81,7 +81,7 @@ protected void Init(IAvnWindowBase window, IAvnScreens screens, IGlContext glCon _glSurface = new GlPlatformSurface(window, _glContext); Screen = new ScreenImpl(screens); _savedLogicalSize = ClientSize; - _savedScaling = Scaling; + _savedScaling = RenderScaling; _nativeControlHost = new NativeControlHostImpl(_native.CreateNativeControlHost()); var monitor = Screen.AllScreens.OrderBy(x => x.PixelDensity) @@ -369,7 +369,9 @@ public void SetTopmost(bool value) _native.SetTopMost(value); } - public double Scaling => _native?.GetScaling() ?? 1; + public double RenderScaling => _native?.GetScaling() ?? 1; + + public double DesktopScaling => 1; public Action Deactivated { get; set; } public Action Activated { get; set; } @@ -432,7 +434,7 @@ public void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel) TransparencyLevel = transparencyLevel; - _native.SetBlurEnabled(TransparencyLevel >= WindowTransparencyLevel.Blur); + _native?.SetBlurEnabled(TransparencyLevel >= WindowTransparencyLevel.Blur); TransparencyLevelChanged?.Invoke(TransparencyLevel); } } diff --git a/src/Avalonia.X11/X11NativeControlHost.cs b/src/Avalonia.X11/X11NativeControlHost.cs index 23fb27f72b1..6c4eb81c84e 100644 --- a/src/Avalonia.X11/X11NativeControlHost.cs +++ b/src/Avalonia.X11/X11NativeControlHost.cs @@ -167,7 +167,7 @@ public void HideWithSize(Size size) XUnmapWindow(_display, _holder.Handle); } - size *= _attachedTo.Window.Scaling; + size *= _attachedTo.Window.RenderScaling; XResizeWindow(_display, _child.Handle, Math.Max(1, (int)size.Width), Math.Max(1, (int)size.Height)); } @@ -179,7 +179,7 @@ public void ShowInBounds(Rect bounds) CheckDisposed(); if (_attachedTo == null) throw new InvalidOperationException("The control isn't currently attached to a toplevel"); - bounds *= _attachedTo.Window.Scaling; + bounds *= _attachedTo.Window.RenderScaling; var pixelRect = new PixelRect((int)bounds.X, (int)bounds.Y, Math.Max(1, (int)bounds.Width), Math.Max(1, (int)bounds.Height)); diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index 1f1f31db0ac..c24abcd2302 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -163,7 +163,7 @@ public X11Window(AvaloniaX11Platform platform, IWindowImpl popupParent) var surfaces = new List { new X11FramebufferSurface(_x11.DeferredDisplay, _renderHandle, - depth, () => Scaling) + depth, () => RenderScaling) }; if (egl != null) @@ -217,7 +217,7 @@ public PixelSize Size } } - public double Scaling => _window.Scaling; + public double Scaling => _window.RenderScaling; } void UpdateMotifHints() @@ -284,9 +284,9 @@ void UpdateSizeHints(PixelSize? preResize) XSetWMNormalHints(_x11.Display, _handle, ref hints); } - public Size ClientSize => new Size(_realSize.Width / Scaling, _realSize.Height / Scaling); + public Size ClientSize => new Size(_realSize.Width / RenderScaling, _realSize.Height / RenderScaling); - public double Scaling + public double RenderScaling { get { @@ -296,6 +296,8 @@ public double Scaling } private set => _scaling = value; } + + public double DesktopScaling => RenderScaling; public IEnumerable Surfaces { get; } public Action Input { get; set; } @@ -538,14 +540,14 @@ private bool UpdateScaling(bool skipResize = false) { var monitor = _platform.X11Screens.Screens.OrderBy(x => x.PixelDensity) .FirstOrDefault(m => m.Bounds.Contains(Position)); - newScaling = monitor?.PixelDensity ?? Scaling; + newScaling = monitor?.PixelDensity ?? RenderScaling; } - if (Scaling != newScaling) + if (RenderScaling != newScaling) { var oldScaledSize = ClientSize; - Scaling = newScaling; - ScalingChanged?.Invoke(Scaling); + RenderScaling = newScaling; + ScalingChanged?.Invoke(RenderScaling); SetMinMaxSize(_scaledMinMaxSize.minSize, _scaledMinMaxSize.maxSize); if(!skipResize) Resize(oldScaledSize, true); @@ -707,9 +709,9 @@ public void ScheduleXI2Input(RawInputEventArgs args) private void ScheduleInput(RawInputEventArgs args) { if (args is RawPointerEventArgs mouse) - mouse.Position = mouse.Position / Scaling; + mouse.Position = mouse.Position / RenderScaling; if (args is RawDragEvent drag) - drag.Location = drag.Location / Scaling; + drag.Location = drag.Location / RenderScaling; _lastEvent = new InputEventContainer() {Event = args}; _inputQueue.Enqueue(_lastEvent); @@ -816,11 +818,11 @@ public void Show() public void Hide() => XUnmapWindow(_x11.Display, _handle); - public Point PointToClient(PixelPoint point) => new Point((point.X - Position.X) / Scaling, (point.Y - Position.Y) / Scaling); + public Point PointToClient(PixelPoint point) => new Point((point.X - Position.X) / RenderScaling, (point.Y - Position.Y) / RenderScaling); public PixelPoint PointToScreen(Point point) => new PixelPoint( - (int)(point.X * Scaling + Position.X), - (int)(point.Y * Scaling + Position.Y)); + (int)(point.X * RenderScaling + Position.X), + (int)(point.Y * RenderScaling + Position.Y)); public void SetSystemDecorations(SystemDecorations enabled) { @@ -840,7 +842,7 @@ private void MoveResize(PixelPoint position, Size size, double scaling) Resize(size, true); } - PixelSize ToPixelSize(Size size) => new PixelSize((int)(size.Width * Scaling), (int)(size.Height * Scaling)); + PixelSize ToPixelSize(Size size) => new PixelSize((int)(size.Width * RenderScaling), (int)(size.Height * RenderScaling)); void Resize(Size clientSize, bool force) { @@ -1020,13 +1022,13 @@ public void SetMinMaxSize(Size minSize, Size maxSize) { _scaledMinMaxSize = (minSize, maxSize); var min = new PixelSize( - (int)(minSize.Width < 1 ? 1 : minSize.Width * Scaling), - (int)(minSize.Height < 1 ? 1 : minSize.Height * Scaling)); + (int)(minSize.Width < 1 ? 1 : minSize.Width * RenderScaling), + (int)(minSize.Height < 1 ? 1 : minSize.Height * RenderScaling)); const int maxDim = MaxWindowDimension; var max = new PixelSize( - (int)(maxSize.Width > maxDim ? maxDim : Math.Max(min.Width, maxSize.Width * Scaling)), - (int)(maxSize.Height > maxDim ? maxDim : Math.Max(min.Height, maxSize.Height * Scaling))); + (int)(maxSize.Width > maxDim ? maxDim : Math.Max(min.Width, maxSize.Width * RenderScaling)), + (int)(maxSize.Height > maxDim ? maxDim : Math.Max(min.Height, maxSize.Height * RenderScaling))); _minMaxSize = (min, max); UpdateSizeHints(null); diff --git a/src/Linux/Avalonia.LinuxFramebuffer/FramebufferToplevelImpl.cs b/src/Linux/Avalonia.LinuxFramebuffer/FramebufferToplevelImpl.cs index b8ae2eb4d84..0a101eec7a9 100644 --- a/src/Linux/Avalonia.LinuxFramebuffer/FramebufferToplevelImpl.cs +++ b/src/Linux/Avalonia.LinuxFramebuffer/FramebufferToplevelImpl.cs @@ -65,7 +65,7 @@ public void SetCursor(IPlatformHandle cursor) public IMouseDevice MouseDevice => new MouseDevice(); public IPopupImpl CreatePopup() => null; - public double Scaling => _outputBackend.Scaling; + public double RenderScaling => _outputBackend.Scaling; public IEnumerable Surfaces { get; } public Action Input { get; set; } public Action Paint { get; set; } @@ -77,7 +77,7 @@ public void SetCursor(IPlatformHandle cursor) public Action Closed { get; set; } public Action LostFocus { get; set; } - public Size ScaledSize => _outputBackend.PixelSize.ToSize(Scaling); + public Size ScaledSize => _outputBackend.PixelSize.ToSize(RenderScaling); public void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel) { } diff --git a/src/Windows/Avalonia.Win32.Interop/Wpf/WpfTopLevelImpl.cs b/src/Windows/Avalonia.Win32.Interop/Wpf/WpfTopLevelImpl.cs index f5d83611bb1..3467a33d161 100644 --- a/src/Windows/Avalonia.Win32.Interop/Wpf/WpfTopLevelImpl.cs +++ b/src/Windows/Avalonia.Win32.Interop/Wpf/WpfTopLevelImpl.cs @@ -75,7 +75,7 @@ public WpfTopLevelImpl() private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam, ref bool handled) { if (msg == (int)UnmanagedMethods.WindowsMessage.WM_DPICHANGED) - _ttl.ScalingChanged?.Invoke(_ttl.Scaling); + _ttl.ScalingChanged?.Invoke(_ttl.RenderScaling); return IntPtr.Zero; } @@ -84,7 +84,7 @@ private void OnSourceChanged(object sender, SourceChangedEventArgs e) _currentHwndSource?.RemoveHook(_hook); _currentHwndSource = e.NewSource as HwndSource; _currentHwndSource?.AddHook(_hook); - _ttl.ScalingChanged?.Invoke(_ttl.Scaling); + _ttl.ScalingChanged?.Invoke(_ttl.RenderScaling); } public IRenderer CreateRenderer(IRenderRoot root) @@ -102,7 +102,7 @@ public void Dispose() Size ITopLevelImpl.ClientSize => _finalSize; IMouseDevice ITopLevelImpl.MouseDevice => _mouse; - double ITopLevelImpl.Scaling => PresentationSource.FromVisual(this)?.CompositionTarget?.TransformToDevice.M11 ?? 1; + double ITopLevelImpl.RenderScaling => PresentationSource.FromVisual(this)?.CompositionTarget?.TransformToDevice.M11 ?? 1; IEnumerable ITopLevelImpl.Surfaces => _surfaces; diff --git a/src/Windows/Avalonia.Win32/PopupImpl.cs b/src/Windows/Avalonia.Win32/PopupImpl.cs index 525e5e0d520..57da1c4d660 100644 --- a/src/Windows/Avalonia.Win32/PopupImpl.cs +++ b/src/Windows/Avalonia.Win32/PopupImpl.cs @@ -57,7 +57,7 @@ public override Size MaxAutoSizeHint { var info = UnmanagedMethods.MONITORINFO.Create(); UnmanagedMethods.GetMonitorInfo(monitor, ref info); - _maxAutoSize = info.rcWork.ToPixelRect().ToRect(Scaling).Size; + _maxAutoSize = info.rcWork.ToPixelRect().ToRect(RenderScaling).Size; } } diff --git a/src/Windows/Avalonia.Win32/Win32NativeControlHost.cs b/src/Windows/Avalonia.Win32/Win32NativeControlHost.cs index d7bb2c037e4..8f62163d81c 100644 --- a/src/Windows/Avalonia.Win32/Win32NativeControlHost.cs +++ b/src/Windows/Avalonia.Win32/Win32NativeControlHost.cs @@ -176,7 +176,7 @@ public void HideWithSize(Size size) UnmanagedMethods.SetWindowPosFlags.SWP_NOACTIVATE); if (_attachedTo == null || _child == null) return; - size *= _attachedTo.Window.Scaling; + size *= _attachedTo.Window.RenderScaling; UnmanagedMethods.MoveWindow(_child.Handle, 0, 0, Math.Max(1, (int)size.Width), Math.Max(1, (int)size.Height), false); } @@ -186,7 +186,7 @@ public unsafe void ShowInBounds(Rect bounds) CheckDisposed(); if (_attachedTo == null) throw new InvalidOperationException("The control isn't currently attached to a toplevel"); - bounds *= _attachedTo.Window.Scaling; + bounds *= _attachedTo.Window.RenderScaling; var pixelRect = new PixelRect((int)bounds.X, (int)bounds.Y, Math.Max(1, (int)bounds.Width), Math.Max(1, (int)bounds.Height)); diff --git a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs index 0ba1d311bc5..ee6845e2ebc 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs @@ -343,7 +343,7 @@ protected virtual unsafe IntPtr AppWndProc(IntPtr hWnd, uint msg, IntPtr wParam, { if (BeginPaint(_hwnd, out PAINTSTRUCT ps) != IntPtr.Zero) { - var f = Scaling; + var f = RenderScaling; var r = ps.rcPaint; Paint?.Invoke(new Rect(r.left / f, r.top / f, (r.right - r.left) / f, (r.bottom - r.top) / f)); @@ -368,7 +368,7 @@ protected virtual unsafe IntPtr AppWndProc(IntPtr hWnd, uint msg, IntPtr wParam, size == SizeCommand.Maximized)) { var clientSize = new Size(ToInt32(lParam) & 0xffff, ToInt32(lParam) >> 16); - Resized(clientSize / Scaling); + Resized(clientSize / RenderScaling); } var windowState = size == SizeCommand.Maximized ? @@ -406,25 +406,25 @@ protected virtual unsafe IntPtr AppWndProc(IntPtr hWnd, uint msg, IntPtr wParam, if (_minSize.Width > 0) { mmi.ptMinTrackSize.X = - (int)((_minSize.Width * Scaling) + BorderThickness.Left + BorderThickness.Right); + (int)((_minSize.Width * RenderScaling) + BorderThickness.Left + BorderThickness.Right); } if (_minSize.Height > 0) { mmi.ptMinTrackSize.Y = - (int)((_minSize.Height * Scaling) + BorderThickness.Top + BorderThickness.Bottom); + (int)((_minSize.Height * RenderScaling) + BorderThickness.Top + BorderThickness.Bottom); } if (!double.IsInfinity(_maxSize.Width) && _maxSize.Width > 0) { mmi.ptMaxTrackSize.X = - (int)((_maxSize.Width * Scaling) + BorderThickness.Left + BorderThickness.Right); + (int)((_maxSize.Width * RenderScaling) + BorderThickness.Left + BorderThickness.Right); } if (!double.IsInfinity(_maxSize.Height) && _maxSize.Height > 0) { mmi.ptMaxTrackSize.Y = - (int)((_maxSize.Height * Scaling) + BorderThickness.Top + BorderThickness.Bottom); + (int)((_maxSize.Height * RenderScaling) + BorderThickness.Top + BorderThickness.Bottom); } Marshal.StructureToPtr(mmi, lParam, true); @@ -480,7 +480,7 @@ private static int ToInt32(IntPtr ptr) private Point DipFromLParam(IntPtr lParam) { - return new Point((short)(ToInt32(lParam) & 0xffff), (short)(ToInt32(lParam) >> 16)) / Scaling; + return new Point((short)(ToInt32(lParam) & 0xffff), (short)(ToInt32(lParam) >> 16)) / RenderScaling; } private PixelPoint PointFromLParam(IntPtr lParam) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs index 2badf99f7f7..a3b75743691 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs @@ -37,7 +37,7 @@ HitTestValues HitTestNCA(IntPtr hWnd, IntPtr wParam, IntPtr lParam) if (_extendTitleBarHint >= 0) { - border_thickness.top = (int)(_extendedMargins.Top * Scaling); + border_thickness.top = (int)(_extendedMargins.Top * RenderScaling); } // Determine if the hit test is for resizing. Default middle (1,1). diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 0ee1342d27f..6f22f940564 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -164,7 +164,9 @@ public Thickness BorderThickness } } - public double Scaling => _scaling; + public double RenderScaling => _scaling; + + public double DesktopScaling => RenderScaling; public Size ClientSize { @@ -172,7 +174,7 @@ public Size ClientSize { GetClientRect(_hwnd, out var rect); - return new Size(rect.right, rect.bottom) / Scaling; + return new Size(rect.right, rect.bottom) / RenderScaling; } } @@ -180,7 +182,7 @@ public Size ClientSize public IPlatformHandle Handle { get; private set; } - public virtual Size MaxAutoSizeHint => new Size(_maxTrackSize.X / Scaling, _maxTrackSize.Y / Scaling); + public virtual Size MaxAutoSizeHint => new Size(_maxTrackSize.X / RenderScaling, _maxTrackSize.Y / RenderScaling); public IMouseDevice MouseDevice => _mouseDevice; @@ -342,8 +344,8 @@ public IRenderer CreateRenderer(IRenderRoot root) public void Resize(Size value) { - int requestedClientWidth = (int)(value.Width * Scaling); - int requestedClientHeight = (int)(value.Height * Scaling); + int requestedClientWidth = (int)(value.Width * RenderScaling); + int requestedClientHeight = (int)(value.Height * RenderScaling); GetClientRect(_hwnd, out var clientRect); @@ -395,7 +397,7 @@ public void Dispose() public void Invalidate(Rect rect) { - var scaling = Scaling; + var scaling = RenderScaling; var r = new RECT { left = (int)Math.Floor(rect.X * scaling), @@ -411,12 +413,12 @@ public Point PointToClient(PixelPoint point) { var p = new POINT { X = point.X, Y = point.Y }; UnmanagedMethods.ScreenToClient(_hwnd, ref p); - return new Point(p.X, p.Y) / Scaling; + return new Point(p.X, p.Y) / RenderScaling; } public PixelPoint PointToScreen(Point point) { - point *= Scaling; + point *= RenderScaling; var p = new POINT { X = (int)point.X, Y = (int)point.Y }; ClientToScreen(_hwnd, ref p); return new PixelPoint(p.X, p.Y); @@ -710,19 +712,19 @@ private MARGINS UpdateExtendMargins() if (_extendTitleBarHint != -1) { - borderCaptionThickness.top = (int)(_extendTitleBarHint * Scaling); + borderCaptionThickness.top = (int)(_extendTitleBarHint * RenderScaling); } margins.cyTopHeight = _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.SystemChrome) && !_extendChromeHints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChrome) ? borderCaptionThickness.top : 1; if (WindowState == WindowState.Maximized) { - _extendedMargins = new Thickness(0, (borderCaptionThickness.top - borderThickness.top) / Scaling, 0, 0); - _offScreenMargin = new Thickness(borderThickness.left / Scaling, borderThickness.top / Scaling, borderThickness.right / Scaling, borderThickness.bottom / Scaling); + _extendedMargins = new Thickness(0, (borderCaptionThickness.top - borderThickness.top) / RenderScaling, 0, 0); + _offScreenMargin = new Thickness(borderThickness.left / RenderScaling, borderThickness.top / RenderScaling, borderThickness.right / RenderScaling, borderThickness.bottom / RenderScaling); } else { - _extendedMargins = new Thickness(0, (borderCaptionThickness.top) / Scaling, 0, 0); + _extendedMargins = new Thickness(0, (borderCaptionThickness.top) / RenderScaling, 0, 0); _offScreenMargin = new Thickness(); } @@ -1034,6 +1036,8 @@ PixelSize EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Size } } + double EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Scaling => RenderScaling; + IntPtr EglGlPlatformSurface.IEglWindowGlPlatformSurfaceInfo.Handle => Handle.Handle; public void SetExtendClientAreaToDecorationsHint(bool hint) diff --git a/src/iOS/Avalonia.iOS/TopLevelImpl.cs b/src/iOS/Avalonia.iOS/TopLevelImpl.cs index 83a68990d7e..5a85a5ea885 100644 --- a/src/iOS/Avalonia.iOS/TopLevelImpl.cs +++ b/src/iOS/Avalonia.iOS/TopLevelImpl.cs @@ -48,7 +48,7 @@ public TopLevelImpl() public new IPlatformHandle Handle => null; - public double Scaling => UIScreen.MainScreen.Scale; + public double RenderScaling => UIScreen.MainScreen.Scale; public override void LayoutSubviews() => Resized?.Invoke(ClientSize); diff --git a/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs b/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs index cf8f7c266ab..7a2109e5a77 100644 --- a/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs @@ -296,7 +296,7 @@ private IDisposable Application() var windowImpl = MockWindowingPlatform.CreateWindowMock(); popupImpl = MockWindowingPlatform.CreatePopupMock(windowImpl.Object); - popupImpl.SetupGet(x => x.Scaling).Returns(1); + popupImpl.SetupGet(x => x.RenderScaling).Returns(1); windowImpl.Setup(x => x.CreatePopup()).Returns(popupImpl.Object); windowImpl.Setup(x => x.Screen).Returns(screenImpl.Object); diff --git a/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs b/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs index dee7a848129..e6deabfe254 100644 --- a/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs +++ b/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs @@ -191,7 +191,7 @@ public void Impl_Closing_Should_Remove_Window_From_OpenWindows() { var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); var services = TestServices.StyledWindow.With( windowingPlatform: new MockWindowingPlatform(() => windowImpl.Object)); diff --git a/tests/Avalonia.Controls.UnitTests/TopLevelTests.cs b/tests/Avalonia.Controls.UnitTests/TopLevelTests.cs index e49e273becc..6b30aed257b 100644 --- a/tests/Avalonia.Controls.UnitTests/TopLevelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TopLevelTests.cs @@ -93,7 +93,7 @@ public void Bounds_Should_Be_Set_After_Layout_Pass() { var impl = new Mock(); impl.SetupProperty(x => x.Resized); - impl.SetupGet(x => x.Scaling).Returns(1); + impl.SetupGet(x => x.RenderScaling).Returns(1); var target = new TestTopLevel(impl.Object) { @@ -290,7 +290,7 @@ public void Reacts_To_Changes_In_Global_Styles() using (UnitTestApplication.Start(TestServices.StyledWindow)) { var impl = new Mock(); - impl.SetupGet(x => x.Scaling).Returns(1); + impl.SetupGet(x => x.RenderScaling).Returns(1); var child = new Border { Classes = { "foo" } }; var target = new TestTopLevel(impl.Object) diff --git a/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs b/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs index 697ea9cff8f..7e3130377f9 100644 --- a/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs +++ b/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs @@ -110,7 +110,7 @@ public void IsVisible_Should_Be_False_Atfer_Hide() public void IsVisible_Should_Be_False_Atfer_Impl_Signals_Close() { var windowImpl = new Mock(); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); windowImpl.SetupProperty(x => x.Closed); using (UnitTestApplication.Start(TestServices.StyledWindow)) @@ -128,7 +128,7 @@ public void IsVisible_Should_Be_False_Atfer_Impl_Signals_Close() public void Setting_IsVisible_True_Shows_Window() { var windowImpl = new Mock(); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); using (UnitTestApplication.Start(TestServices.StyledWindow)) { @@ -143,7 +143,7 @@ public void Setting_IsVisible_True_Shows_Window() public void Setting_IsVisible_False_Hides_Window() { var windowImpl = new Mock(); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); using (UnitTestApplication.Start(TestServices.StyledWindow)) { @@ -208,7 +208,7 @@ public void Renderer_Should_Be_Disposed_When_Impl_Signals_Close() { var renderer = new Mock(); var windowImpl = new Mock(); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); windowImpl.SetupProperty(x => x.Closed); windowImpl.Setup(x => x.CreateRenderer(It.IsAny())).Returns(renderer.Object); @@ -237,7 +237,7 @@ private class TestWindowBase : WindowBase public TestWindowBase(IRenderer renderer = null) : base(Mock.Of(x => - x.Scaling == 1 && + x.RenderScaling == 1 && x.CreateRenderer(It.IsAny()) == renderer)) { } diff --git a/tests/Avalonia.Controls.UnitTests/WindowTests.cs b/tests/Avalonia.Controls.UnitTests/WindowTests.cs index e2b0def00b1..2b736ae38b7 100644 --- a/tests/Avalonia.Controls.UnitTests/WindowTests.cs +++ b/tests/Avalonia.Controls.UnitTests/WindowTests.cs @@ -100,7 +100,7 @@ public void IsVisible_Should_Be_False_After_Impl_Signals_Close() { var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); var services = TestServices.StyledWindow.With( windowingPlatform: new MockWindowingPlatform(() => windowImpl.Object)); @@ -206,7 +206,7 @@ public async Task ShowDialog_With_ValueType_Returns_Default_When_Closed() var parent = new Mock(); var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); var target = new Window(windowImpl.Object); var task = target.ShowDialog(parent.Object); @@ -245,7 +245,7 @@ public async Task Calling_ShowDialog_On_Closed_Window_Should_Throw() var parent = new Mock(); var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); var target = new Window(windowImpl.Object); var task = target.ShowDialog(parent.Object); @@ -273,7 +273,7 @@ public void Window_Should_Be_Centered_When_WindowStartupLocation_Is_CenterScreen var windowImpl = MockWindowingPlatform.CreateWindowMock(); windowImpl.Setup(x => x.ClientSize).Returns(new Size(800, 480)); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); windowImpl.Setup(x => x.Screen).Returns(screens.Object); using (UnitTestApplication.Start(TestServices.StyledWindow)) @@ -298,12 +298,12 @@ public void Window_Should_Be_Centered_Relative_To_Owner_When_WindowStartupLocati var parentWindowImpl = MockWindowingPlatform.CreateWindowMock(); parentWindowImpl.Setup(x => x.ClientSize).Returns(new Size(800, 480)); parentWindowImpl.Setup(x => x.MaxAutoSizeHint).Returns(new Size(1920, 1080)); - parentWindowImpl.Setup(x => x.Scaling).Returns(1); + parentWindowImpl.Setup(x => x.RenderScaling).Returns(1); var windowImpl = MockWindowingPlatform.CreateWindowMock(); windowImpl.Setup(x => x.ClientSize).Returns(new Size(320, 200)); windowImpl.Setup(x => x.MaxAutoSizeHint).Returns(new Size(1920, 1080)); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); var parentWindowServices = TestServices.StyledWindow.With( windowingPlatform: new MockWindowingPlatform(() => parentWindowImpl.Object)); @@ -565,7 +565,7 @@ protected override void Show(Window window) private IWindowImpl CreateImpl(Mock renderer) { return Mock.Of(x => - x.Scaling == 1 && + x.RenderScaling == 1 && x.CreateRenderer(It.IsAny()) == renderer.Object); } diff --git a/tests/Avalonia.Controls.UnitTests/WindowingPlatformMock.cs b/tests/Avalonia.Controls.UnitTests/WindowingPlatformMock.cs index 25e8c82b1a2..bf1322afbc3 100644 --- a/tests/Avalonia.Controls.UnitTests/WindowingPlatformMock.cs +++ b/tests/Avalonia.Controls.UnitTests/WindowingPlatformMock.cs @@ -17,7 +17,7 @@ public WindowingPlatformMock(Func windowImpl = null, Func(x => x.Scaling == 1); + return _windowImpl?.Invoke() ?? Mock.Of(x => x.RenderScaling == 1); } public IWindowImpl CreateEmbeddableWindow() @@ -25,6 +25,6 @@ public IWindowImpl CreateEmbeddableWindow() throw new NotImplementedException(); } - public IPopupImpl CreatePopup() => _popupImpl?.Invoke() ?? Mock.Of(x => x.Scaling == 1); + public IPopupImpl CreatePopup() => _popupImpl?.Invoke() ?? Mock.Of(x => x.RenderScaling == 1); } } diff --git a/tests/Avalonia.LeakTests/ControlTests.cs b/tests/Avalonia.LeakTests/ControlTests.cs index 00ef503b8de..530b8fa20c5 100644 --- a/tests/Avalonia.LeakTests/ControlTests.cs +++ b/tests/Avalonia.LeakTests/ControlTests.cs @@ -355,7 +355,7 @@ public void RendererIsDisposed() var renderer = new Mock(); renderer.Setup(x => x.Dispose()); var impl = new Mock(); - impl.SetupGet(x => x.Scaling).Returns(1); + impl.SetupGet(x => x.RenderScaling).Returns(1); impl.SetupProperty(x => x.Closed); impl.Setup(x => x.CreateRenderer(It.IsAny())).Returns(renderer.Object); impl.Setup(x => x.Dispose()).Callback(() => impl.Object.Closed()); diff --git a/tests/Avalonia.UnitTests/MockWindowingPlatform.cs b/tests/Avalonia.UnitTests/MockWindowingPlatform.cs index 48a333dc543..e5fcce13c0f 100644 --- a/tests/Avalonia.UnitTests/MockWindowingPlatform.cs +++ b/tests/Avalonia.UnitTests/MockWindowingPlatform.cs @@ -29,7 +29,7 @@ public static Mock CreateWindowMock() windowImpl.SetupAllProperties(); windowImpl.Setup(x => x.ClientSize).Returns(() => clientSize); windowImpl.Setup(x => x.MaxAutoSizeHint).Returns(s_screenSize); - windowImpl.Setup(x => x.Scaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); windowImpl.Setup(x => x.Screen).Returns(CreateScreenMock().Object); windowImpl.Setup(x => x.Position).Returns(() => position); SetupToplevel(windowImpl); @@ -81,7 +81,7 @@ public static Mock CreatePopupMock(IWindowBaseImpl parent) popupImpl.SetupAllProperties(); popupImpl.Setup(x => x.ClientSize).Returns(() => clientSize); popupImpl.Setup(x => x.MaxAutoSizeHint).Returns(s_screenSize); - popupImpl.Setup(x => x.Scaling).Returns(1); + popupImpl.Setup(x => x.RenderScaling).Returns(1); popupImpl.Setup(x => x.PopupPositioner).Returns(positioner); SetupToplevel(popupImpl); From 2ad40026865fd2189fbabfaa20df1bdbd56f06ce Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 20 Jul 2020 16:56:00 -0300 Subject: [PATCH 338/354] fix unit tests. --- .../DesktopStyleApplicationLifetimeTests.cs | 2 +- tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs | 8 ++++---- tests/Avalonia.Controls.UnitTests/WindowTests.cs | 12 ++++++------ tests/Avalonia.UnitTests/MockWindowingPlatform.cs | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs b/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs index e6deabfe254..837a62f40e3 100644 --- a/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs +++ b/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs @@ -191,7 +191,7 @@ public void Impl_Closing_Should_Remove_Window_From_OpenWindows() { var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); var services = TestServices.StyledWindow.With( windowingPlatform: new MockWindowingPlatform(() => windowImpl.Object)); diff --git a/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs b/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs index 7e3130377f9..1c72eb50693 100644 --- a/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs +++ b/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs @@ -110,7 +110,7 @@ public void IsVisible_Should_Be_False_Atfer_Hide() public void IsVisible_Should_Be_False_Atfer_Impl_Signals_Close() { var windowImpl = new Mock(); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); windowImpl.SetupProperty(x => x.Closed); using (UnitTestApplication.Start(TestServices.StyledWindow)) @@ -128,7 +128,7 @@ public void IsVisible_Should_Be_False_Atfer_Impl_Signals_Close() public void Setting_IsVisible_True_Shows_Window() { var windowImpl = new Mock(); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); using (UnitTestApplication.Start(TestServices.StyledWindow)) { @@ -143,7 +143,7 @@ public void Setting_IsVisible_True_Shows_Window() public void Setting_IsVisible_False_Hides_Window() { var windowImpl = new Mock(); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); using (UnitTestApplication.Start(TestServices.StyledWindow)) { @@ -208,7 +208,7 @@ public void Renderer_Should_Be_Disposed_When_Impl_Signals_Close() { var renderer = new Mock(); var windowImpl = new Mock(); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); windowImpl.SetupProperty(x => x.Closed); windowImpl.Setup(x => x.CreateRenderer(It.IsAny())).Returns(renderer.Object); diff --git a/tests/Avalonia.Controls.UnitTests/WindowTests.cs b/tests/Avalonia.Controls.UnitTests/WindowTests.cs index 2b736ae38b7..5cf65115bbd 100644 --- a/tests/Avalonia.Controls.UnitTests/WindowTests.cs +++ b/tests/Avalonia.Controls.UnitTests/WindowTests.cs @@ -100,7 +100,7 @@ public void IsVisible_Should_Be_False_After_Impl_Signals_Close() { var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); var services = TestServices.StyledWindow.With( windowingPlatform: new MockWindowingPlatform(() => windowImpl.Object)); @@ -206,7 +206,7 @@ public async Task ShowDialog_With_ValueType_Returns_Default_When_Closed() var parent = new Mock(); var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); var target = new Window(windowImpl.Object); var task = target.ShowDialog(parent.Object); @@ -245,7 +245,7 @@ public async Task Calling_ShowDialog_On_Closed_Window_Should_Throw() var parent = new Mock(); var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); var target = new Window(windowImpl.Object); var task = target.ShowDialog(parent.Object); @@ -273,7 +273,7 @@ public void Window_Should_Be_Centered_When_WindowStartupLocation_Is_CenterScreen var windowImpl = MockWindowingPlatform.CreateWindowMock(); windowImpl.Setup(x => x.ClientSize).Returns(new Size(800, 480)); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); windowImpl.Setup(x => x.Screen).Returns(screens.Object); using (UnitTestApplication.Start(TestServices.StyledWindow)) @@ -298,12 +298,12 @@ public void Window_Should_Be_Centered_Relative_To_Owner_When_WindowStartupLocati var parentWindowImpl = MockWindowingPlatform.CreateWindowMock(); parentWindowImpl.Setup(x => x.ClientSize).Returns(new Size(800, 480)); parentWindowImpl.Setup(x => x.MaxAutoSizeHint).Returns(new Size(1920, 1080)); - parentWindowImpl.Setup(x => x.RenderScaling).Returns(1); + parentWindowImpl.Setup(x => x.DesktopScaling).Returns(1); var windowImpl = MockWindowingPlatform.CreateWindowMock(); windowImpl.Setup(x => x.ClientSize).Returns(new Size(320, 200)); windowImpl.Setup(x => x.MaxAutoSizeHint).Returns(new Size(1920, 1080)); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); var parentWindowServices = TestServices.StyledWindow.With( windowingPlatform: new MockWindowingPlatform(() => parentWindowImpl.Object)); diff --git a/tests/Avalonia.UnitTests/MockWindowingPlatform.cs b/tests/Avalonia.UnitTests/MockWindowingPlatform.cs index e5fcce13c0f..e265b49af3d 100644 --- a/tests/Avalonia.UnitTests/MockWindowingPlatform.cs +++ b/tests/Avalonia.UnitTests/MockWindowingPlatform.cs @@ -29,7 +29,7 @@ public static Mock CreateWindowMock() windowImpl.SetupAllProperties(); windowImpl.Setup(x => x.ClientSize).Returns(() => clientSize); windowImpl.Setup(x => x.MaxAutoSizeHint).Returns(s_screenSize); - windowImpl.Setup(x => x.RenderScaling).Returns(1); + windowImpl.Setup(x => x.DesktopScaling).Returns(1); windowImpl.Setup(x => x.Screen).Returns(CreateScreenMock().Object); windowImpl.Setup(x => x.Position).Returns(() => position); SetupToplevel(windowImpl); From 87c326a8fd0c7e54c60750179b00231e8cef9168 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 20 Jul 2020 17:13:27 -0300 Subject: [PATCH 339/354] fix mocks. --- .../DesktopStyleApplicationLifetimeTests.cs | 1 + tests/Avalonia.UnitTests/MockWindowingPlatform.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs b/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs index 837a62f40e3..84f02aeda5f 100644 --- a/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs +++ b/tests/Avalonia.Controls.UnitTests/DesktopStyleApplicationLifetimeTests.cs @@ -192,6 +192,7 @@ public void Impl_Closing_Should_Remove_Window_From_OpenWindows() var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); var services = TestServices.StyledWindow.With( windowingPlatform: new MockWindowingPlatform(() => windowImpl.Object)); diff --git a/tests/Avalonia.UnitTests/MockWindowingPlatform.cs b/tests/Avalonia.UnitTests/MockWindowingPlatform.cs index e265b49af3d..67503ef0d01 100644 --- a/tests/Avalonia.UnitTests/MockWindowingPlatform.cs +++ b/tests/Avalonia.UnitTests/MockWindowingPlatform.cs @@ -30,6 +30,7 @@ public static Mock CreateWindowMock() windowImpl.Setup(x => x.ClientSize).Returns(() => clientSize); windowImpl.Setup(x => x.MaxAutoSizeHint).Returns(s_screenSize); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); windowImpl.Setup(x => x.Screen).Returns(CreateScreenMock().Object); windowImpl.Setup(x => x.Position).Returns(() => position); SetupToplevel(windowImpl); From 4aa51e80da8fda5314b0913d42dc3495dced8b1d Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 20 Jul 2020 17:26:03 -0300 Subject: [PATCH 340/354] fix more tests. --- tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs | 4 ++++ tests/Avalonia.Controls.UnitTests/WindowTests.cs | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs b/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs index 1c72eb50693..84f212d1b36 100644 --- a/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs +++ b/tests/Avalonia.Controls.UnitTests/WindowBaseTests.cs @@ -111,6 +111,7 @@ public void IsVisible_Should_Be_False_Atfer_Impl_Signals_Close() { var windowImpl = new Mock(); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); windowImpl.SetupProperty(x => x.Closed); using (UnitTestApplication.Start(TestServices.StyledWindow)) @@ -129,6 +130,7 @@ public void Setting_IsVisible_True_Shows_Window() { var windowImpl = new Mock(); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); using (UnitTestApplication.Start(TestServices.StyledWindow)) { @@ -144,6 +146,7 @@ public void Setting_IsVisible_False_Hides_Window() { var windowImpl = new Mock(); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); using (UnitTestApplication.Start(TestServices.StyledWindow)) { @@ -209,6 +212,7 @@ public void Renderer_Should_Be_Disposed_When_Impl_Signals_Close() var renderer = new Mock(); var windowImpl = new Mock(); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); windowImpl.SetupProperty(x => x.Closed); windowImpl.Setup(x => x.CreateRenderer(It.IsAny())).Returns(renderer.Object); diff --git a/tests/Avalonia.Controls.UnitTests/WindowTests.cs b/tests/Avalonia.Controls.UnitTests/WindowTests.cs index 5cf65115bbd..ba29001cf38 100644 --- a/tests/Avalonia.Controls.UnitTests/WindowTests.cs +++ b/tests/Avalonia.Controls.UnitTests/WindowTests.cs @@ -101,6 +101,7 @@ public void IsVisible_Should_Be_False_After_Impl_Signals_Close() var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); var services = TestServices.StyledWindow.With( windowingPlatform: new MockWindowingPlatform(() => windowImpl.Object)); @@ -207,6 +208,7 @@ public async Task ShowDialog_With_ValueType_Returns_Default_When_Closed() var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); var target = new Window(windowImpl.Object); var task = target.ShowDialog(parent.Object); @@ -246,6 +248,7 @@ public async Task Calling_ShowDialog_On_Closed_Window_Should_Throw() var windowImpl = new Mock(); windowImpl.SetupProperty(x => x.Closed); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); var target = new Window(windowImpl.Object); var task = target.ShowDialog(parent.Object); @@ -274,6 +277,7 @@ public void Window_Should_Be_Centered_When_WindowStartupLocation_Is_CenterScreen var windowImpl = MockWindowingPlatform.CreateWindowMock(); windowImpl.Setup(x => x.ClientSize).Returns(new Size(800, 480)); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); windowImpl.Setup(x => x.Screen).Returns(screens.Object); using (UnitTestApplication.Start(TestServices.StyledWindow)) @@ -299,11 +303,13 @@ public void Window_Should_Be_Centered_Relative_To_Owner_When_WindowStartupLocati parentWindowImpl.Setup(x => x.ClientSize).Returns(new Size(800, 480)); parentWindowImpl.Setup(x => x.MaxAutoSizeHint).Returns(new Size(1920, 1080)); parentWindowImpl.Setup(x => x.DesktopScaling).Returns(1); + parentWindowImpl.Setup(x => x.RenderScaling).Returns(1); var windowImpl = MockWindowingPlatform.CreateWindowMock(); windowImpl.Setup(x => x.ClientSize).Returns(new Size(320, 200)); windowImpl.Setup(x => x.MaxAutoSizeHint).Returns(new Size(1920, 1080)); windowImpl.Setup(x => x.DesktopScaling).Returns(1); + windowImpl.Setup(x => x.RenderScaling).Returns(1); var parentWindowServices = TestServices.StyledWindow.With( windowingPlatform: new MockWindowingPlatform(() => parentWindowImpl.Object)); From 88db585d42ff663fb42ab1d3ef6bda5485298d68 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 20 Jul 2020 17:52:56 -0300 Subject: [PATCH 341/354] fix calculation of working area. --- native/Avalonia.Native/src/OSX/Screens.mm | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/Screens.mm b/native/Avalonia.Native/src/OSX/Screens.mm index 278daf9a189..455cfa2e415 100644 --- a/native/Avalonia.Native/src/OSX/Screens.mm +++ b/native/Avalonia.Native/src/OSX/Screens.mm @@ -4,6 +4,14 @@ { public: FORWARD_IUNKNOWN() + + private: + CGFloat PrimaryDisplayHeight() + { + return NSMaxY([[[NSScreen screens] firstObject] frame]); + } + +public: virtual HRESULT GetScreenCount (int* ret) override { @autoreleasepool @@ -25,15 +33,15 @@ virtual HRESULT GetScreen (int index, AvnScreen* ret) override auto screen = [[NSScreen screens] objectAtIndex:index]; - ret->Bounds.X = [screen frame].origin.x; - ret->Bounds.Y = [screen frame].origin.y; ret->Bounds.Height = [screen frame].size.height; ret->Bounds.Width = [screen frame].size.width; + ret->Bounds.X = [screen frame].origin.x; + ret->Bounds.Y = PrimaryDisplayHeight() - [screen frame].origin.y - ret->Bounds.Height; - ret->WorkingArea.X = [screen visibleFrame].origin.x; - ret->WorkingArea.Y = [screen visibleFrame].origin.y; ret->WorkingArea.Height = [screen visibleFrame].size.height; ret->WorkingArea.Width = [screen visibleFrame].size.width; + ret->WorkingArea.X = [screen visibleFrame].origin.x; + ret->WorkingArea.Y = ret->Bounds.Height - [screen visibleFrame].origin.y - ret->WorkingArea.Height; ret->PixelDensity = [screen backingScaleFactor]; From 297ed15bb5ae08ab06cbc22b2de004dd8f786bc4 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 20 Jul 2020 20:54:33 -0300 Subject: [PATCH 342/354] fix sizetocontent on win32. --- src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs index ee6845e2ebc..25a34561fc4 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs @@ -402,6 +402,8 @@ protected virtual unsafe IntPtr AppWndProc(IntPtr hWnd, uint msg, IntPtr wParam, case WindowsMessage.WM_GETMINMAXINFO: { MINMAXINFO mmi = Marshal.PtrToStructure(lParam); + + _maxTrackSize = mmi.ptMaxTrackSize; if (_minSize.Width > 0) { From b0bcd2e5e62ce4ea94a094677cdb191adf53c214 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 20 Jul 2020 21:16:35 -0300 Subject: [PATCH 343/354] dont emit excessive Resized events on OSX. --- native/Avalonia.Native/src/OSX/window.mm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index 872269bb26b..2d0ffbe4f0c 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -1291,10 +1291,15 @@ -(void)setFrameSize:(NSSize)newSize _parent->UpdateCursor(); auto fsize = [self convertSizeToBacking: [self frame].size]; - _lastPixelSize.Width = (int)fsize.width; - _lastPixelSize.Height = (int)fsize.height; - [self updateRenderTarget]; - _parent->BaseEvents->Resized(AvnSize{newSize.width, newSize.height}); + + if(_lastPixelSize.Width != (int)fsize.width || _lastPixelSize.Height != (int)fsize.height) + { + _lastPixelSize.Width = (int)fsize.width; + _lastPixelSize.Height = (int)fsize.height; + [self updateRenderTarget]; + + _parent->BaseEvents->Resized(AvnSize{newSize.width, newSize.height}); + } } - (void)updateLayer From e5324684a179e4ede5cfb5982f948ac18b3cbf93 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 20 Jul 2020 22:15:12 -0300 Subject: [PATCH 344/354] ensure managed titlebar is attached in window when template is applied. --- src/Avalonia.Controls/Chrome/TitleBar.cs | 8 ++++---- src/Avalonia.Controls/Window.cs | 13 ++++++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index 78b49d2a035..91cbc8b4972 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -29,12 +29,12 @@ public void Attach() { if (_disposables == null) { - var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - - layer?.Children.Add(this); - if (_hostWindow != null) { + var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); + + layer?.Children.Add(this); + _disposables = new CompositeDisposable { _hostWindow.GetObservable(Window.WindowDecorationMarginProperty) diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 90e5c22c45b..874c94a9741 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Avalonia.Controls.Chrome; using Avalonia.Controls.Platform; +using Avalonia.Controls.Primitives; using Avalonia.Data; using Avalonia.Input; using Avalonia.Interactivity; @@ -75,6 +76,7 @@ public class Window : WindowBase, IStyleable, IFocusScope, ILayoutRoot private bool _isExtendedIntoWindowDecorations; private Thickness _windowDecorationMargin; private Thickness _offScreenMargin; + private bool _templateApplied; /// /// Defines the property. @@ -553,7 +555,7 @@ protected virtual void ExtendClientAreaToDecorationsChanged(bool isExtended) WindowDecorationMargin = PlatformImpl.ExtendedMargins; OffScreenMargin = PlatformImpl.OffScreenMargin; - if (PlatformImpl.NeedsManagedDecorations) + if (PlatformImpl.NeedsManagedDecorations && _templateApplied) { if (_managedTitleBar == null) { @@ -568,6 +570,15 @@ protected virtual void ExtendClientAreaToDecorationsChanged(bool isExtended) } } + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) + { + base.OnApplyTemplate(e); + + _templateApplied = true; + + ExtendClientAreaToDecorationsChanged(PlatformImpl.IsClientAreaExtendedToDecorations); + } + /// /// Hides the window but does not close it. /// From d8604567eec0445e2898a78437b5016b021a2cd4 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 20 Jul 2020 22:38:31 -0300 Subject: [PATCH 345/354] fix window background interfering with titlebar and window dragging. --- src/Avalonia.Themes.Default/Window.xaml | 31 ++++++++++++------------- src/Avalonia.Themes.Fluent/Window.xaml | 19 +++++++-------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/Avalonia.Themes.Default/Window.xaml b/src/Avalonia.Themes.Default/Window.xaml index 739887fb354..2aa62df01f4 100644 --- a/src/Avalonia.Themes.Default/Window.xaml +++ b/src/Avalonia.Themes.Default/Window.xaml @@ -1,23 +1,22 @@