Skip to content

Commit

Permalink
Merge pull request #237 from Thecentury/transform-comparison
Browse files Browse the repository at this point in the history
Transform comparison
  • Loading branch information
JordanMarr committed Jan 26, 2023
2 parents c3a8407 + 19bcb61 commit e77b874
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 6 deletions.
3 changes: 2 additions & 1 deletion src/Avalonia.FuncUI/DSL/Base/Visual.fs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ namespace Avalonia.FuncUI.DSL
module Visual =
open Avalonia
open Avalonia.Media
open Avalonia.FuncUI
open Avalonia.FuncUI.Types
open Avalonia.FuncUI.Builder

Expand All @@ -25,7 +26,7 @@ module Visual =
AttrBuilder<'t>.CreateProperty<IBrush>(Visual.OpacityMaskProperty, value, ValueNone)

static member renderTransform<'t when 't :> Visual>(transform: ITransform) : IAttr<'t> =
AttrBuilder<'t>.CreateProperty<ITransform>(Visual.RenderTransformProperty, transform, ValueNone)
AttrBuilder<'t>.CreateProperty<ITransform>(Visual.RenderTransformProperty, transform, ValueSome EqualityComparers.compareTransforms)

static member renderTransformOrigin<'t when 't :> Visual>(origin: RelativePoint) : IAttr<'t> =
AttrBuilder<'t>.CreateProperty<RelativePoint>(Visual.RenderTransformOriginProperty, origin, ValueNone)
Expand Down
3 changes: 2 additions & 1 deletion src/Avalonia.FuncUI/DSL/LayoutTransformControl.fs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
module LayoutTransformControl =
open Avalonia.Media
open Avalonia.Controls
open Avalonia.FuncUI
open Avalonia.FuncUI.Types
open Avalonia.FuncUI.Builder

Expand All @@ -12,7 +13,7 @@ module LayoutTransformControl =

type LayoutTransformControl with
static member layoutTransform<'t when 't :> LayoutTransformControl>(value: ITransform) : IAttr<'t> =
AttrBuilder<'t>.CreateProperty<ITransform>(LayoutTransformControl.LayoutTransformProperty, value, ValueNone)
AttrBuilder<'t>.CreateProperty<ITransform>(LayoutTransformControl.LayoutTransformProperty, value, ValueSome EqualityComparers.compareTransforms)

static member useRenderTransform<'t when 't :> LayoutTransformControl>(value: bool) : IAttr<'t> =
AttrBuilder<'t>.CreateProperty<bool>(LayoutTransformControl.UseRenderTransformProperty, value, ValueNone)
11 changes: 10 additions & 1 deletion src/Avalonia.FuncUI/Helpers.fs
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,13 @@ module AvaloniaExtensions =
member this.Load (source: string) =
let style = StyleInclude(baseUri = null)
style.Source <- Uri(source)
this.Add(style)
this.Add(style)

module internal EqualityComparers =
open Avalonia.Media

let compareTransforms (t1: obj, t2: obj) =
match t1, t2 with
| :? ITransform as t1, (:? ITransform as t2) when t1.GetType() = t2.GetType() ->
t1.Value.Equals(t2.Value)
| _ -> false
3 changes: 0 additions & 3 deletions src/Examples/Component Examples/Examples.Presso/Program.fs
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
namespace Examples.Presso

open Elmish
open Avalonia
open Avalonia.Controls.ApplicationLifetimes
open Avalonia.Themes.Fluent
open Avalonia.FuncUI
open Avalonia.FuncUI.Elmish
open Avalonia.FuncUI.Hosts
open Avalonia.Media

type MainWindow() as this =
inherit HostWindow()
Expand Down

0 comments on commit e77b874

Please sign in to comment.