<UserControl 
  xmlns="https://github.com/avaloniaui" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="RenderDemo.Pages.TransitionsPage"
  MaxWidth="600">
  <UserControl.Styles>
    <Styles>
      <Styles.Resources>
        <Template x:Key="Acorn">
          <Path Fill="White" Stretch="Uniform"
                Data="F1 M 16.6309,18.6563C 17.1309,
                8.15625 29.8809,14.1563 29.8809,
                14.1563C 30.8809,11.1563 34.1308,
                11.4063 34.1308,11.4063C 33.5,12 
                34.6309,13.1563 34.6309,13.1563C 
                32.1309,13.1562 31.1309,14.9062 
                31.1309,14.9062C 41.1309,23.9062
                32.6309,27.9063 32.6309,27.9062C 
                24.6309,24.9063 21.1309,22.1562 
                16.6309,18.6563 Z M 16.6309,19.9063C
                21.6309,24.1563 25.1309,26.1562 
                31.6309,28.6562C 31.6309,28.6562
                26.3809,39.1562 18.3809,36.1563C
                18.3809,36.1563 18,38 16.3809,36.9063C 
                15,36 16.3809,34.9063 16.3809,34.9063C
                16.3809,34.9063 10.1309,30.9062 16.6309,19.9063 Z"/>
        </Template>
        <Template x:Key="Heart">
          <Path Fill="Red" Stretch="Uniform" Data="
          M 272.70141,238.71731 
          C 206.46141,238.71731 152.70146,292.4773 152.70146,358.71731 
          C 152.70146,493.47282 288.63461,528.80461 381.26391,662.02535 
          C 468.83815,529.62199 609.82641,489.17075 609.82641,358.71731 
          C 609.82641,292.47731 556.06651,238.7173 489.82641,238.71731 
          C 441.77851,238.71731 400.42481,267.08774 381.26391,307.90481 
          C 362.10311,267.08773 320.74941,238.7173 272.70141,238.71731 z "/>
        </Template>
      </Styles.Resources>

      <Style Selector="Border.Test">
        <Setter Property="Margin" Value="15"/>
        <Setter Property="Width" Value="100"/>
        <Setter Property="Height" Value="100"/>
        <Setter Property="Child" Value="{StaticResource Acorn}"/>
        <Setter Property="Transitions">
          <Transitions>
            <TransformOperationsTransition Property="RenderTransform"  Duration="0:0:1" />
          </Transitions>
        </Setter>
        <Setter Property="RenderTransform" Value="none" />
      </Style>

      <Style Selector="Border.Rect1:pointerover">
        <Setter Property="RenderTransform" Value="rotate(120deg) scale(1.5)" />
      </Style>

      <Style Selector="Border.Rect2:pointerover">
        <Setter Property="RenderTransform" Value="scale(0.8)" />
      </Style>

      <Style Selector="Border.Rect3">
        <Setter Property="Child" Value="{StaticResource Heart}"/>
      </Style>

      <Style Selector="Border.Rect3:pointerover">
        <Setter Property="RenderTransform" Value="rotate(1turn)" />
      </Style>

      <Style Selector="Border.Rect4:pointerover">
        <Setter Property="RenderTransform" Value="translateY(-100px)" />
      </Style>

      <Style Selector="Border.Rect5:pointerover">
        <Setter Property="RenderTransform" Value="skewX(-20deg)" />
      </Style>

      <Style Selector="Border.Rect5:pointerover">
        <Setter Property="RenderTransform" Value="skewX(-20deg)" />
      </Style>

      <Style Selector="Border.Rect6">
        <Setter Property="Transitions">
          <Transitions>
            <TransformOperationsTransition Property="RenderTransform"  Duration="0:0:0.5" Delay="0:0:1"/>
          </Transitions>
        </Setter>
        <Setter Property="RenderTransform" Value="scale(0.8)" />
      </Style>

      <Style Selector="Border.Rect6:pointerover">
        <Setter Property="RenderTransform" Value="none" />
      </Style>

      <Style Selector="Border.Rect7">
        <Setter Property="Transitions">
          <Transitions>
            <DoubleTransition Property="Height" Duration="0:0:0.5" />
          </Transitions>
        </Setter>
      </Style>

      <Style Selector="Border.Rect7:pointerover">
        <Setter Property="Height" Value="50" />
      </Style>

      <Style Selector="Border.Rect8">
        <Setter Property="Transitions">
          <Transitions>
            <CornerRadiusTransition Property="CornerRadius" Duration="0:0:0.5" />
          </Transitions>
        </Setter>
      </Style>

      <Style Selector="Border.Rect8:pointerover">
        <Setter Property="CornerRadius" Value="50" />
      </Style>

      <Style Selector="Border.Rect9">
        <Setter Property="Transitions">
          <Transitions>
            <ThicknessTransition Property="Padding" Duration="0:0:0.5" />
          </Transitions>
        </Setter>
      </Style>

      <Style Selector="Border.Rect9:pointerover">
        <Setter Property="Padding" Value="10" />
      </Style>

      <Style Selector="Border.Shadow">
        <Setter Property="Background" Value="Transparent"/>        
        <Setter Property="BorderBrush" Value="Black"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BoxShadow" Value="inset 0 0 0 2 Red, -15 -15 Green"/>
        <Setter Property="Transitions">
          <Transitions>
            <BoxShadowsTransition Property="BoxShadow" Duration="0:0:0.5" />
          </Transitions>
        </Setter>
      </Style>
      <Style Selector="Border.Shadow:pointerover">
        <Setter Property="BoxShadow" Value="inset 30 30 20 30 Green, 20 40 20 10 Red"/>
      </Style>

      <Style Selector="Border.Rect10">
        <Setter Property="Transitions">
          <Transitions>
            <BrushTransition Property="Background" Duration="0:0:0.5" />
          </Transitions>
        </Setter>
        <Setter Property="Background" Value="Red" />
      </Style>

      <Style Selector="Border.Rect10:pointerover">
        <Setter Property="Background" Value="Orange" />
      </Style>

      <Style Selector="Border.Rect11">
        <Setter Property="Transitions">
          <Transitions>
            <BrushTransition Property="Background" Duration="0:0:0.5" />
          </Transitions>
        </Setter>
        <Setter Property="Background" Value="Red" />
      </Style>

      <Style Selector="Border.Rect11:pointerover">
        <Setter Property="Background" >
          <LinearGradientBrush StartPoint="0%,0%" EndPoint="100%,100%">
            <GradientStop Offset="0" Color="Red"/>
            <GradientStop Offset="1" Color="Blue"/>
          </LinearGradientBrush>
        </Setter>
      </Style>

      <Style Selector="Border.Rect12">
        <Setter Property="Transitions">
          <Transitions>
            <BrushTransition Property="Background" Duration="0:0:0.5" />
          </Transitions>
        </Setter>
        <Setter Property="Background" >
          <LinearGradientBrush StartPoint="0%,0%" EndPoint="100%,100%">
            <GradientStop Offset="0" Color="Red"/>
            <GradientStop Offset="1" Color="Blue"/>
          </LinearGradientBrush>
        </Setter>
      </Style>

      <Style Selector="Border.Rect12:pointerover">
        <Setter Property="Background" >
          <LinearGradientBrush StartPoint="100%,0%" EndPoint="0%,100%">
            <GradientStop Offset="0" Color="Green"/>
            <GradientStop Offset="1" Color="Yellow"/>
          </LinearGradientBrush>
        </Setter>
      </Style>

      <Style Selector="Border.Rect13">
        <Setter Property="Transitions">
          <Transitions>
            <BrushTransition Property="Background" Duration="0:0:0.5" />
          </Transitions>
        </Setter>
        <Setter Property="Background" >
          <ConicGradientBrush Center="50%,50%" Angle="0">
            <GradientStop Offset="0" Color="Red"/>
            <GradientStop Offset="1" Color="Blue"/>
          </ConicGradientBrush>
        </Setter>
      </Style>

      <Style Selector="Border.Rect13:pointerover">
        <Setter Property="Background" >
          <ConicGradientBrush Center="70%,70%" Angle="90">
            <GradientStop Offset="0" Color="Green"/>
            <GradientStop Offset="1" Color="Yellow"/>
          </ConicGradientBrush>
        </Setter>
      </Style>

      <Style Selector="Border.Rect14">
        <Setter Property="Transitions">
          <Transitions>
            <BrushTransition Property="Background" Duration="0:0:0.5" />
          </Transitions>
        </Setter>
        <Setter Property="Background" >
          <RadialGradientBrush Center="50%,50%" Radius="0.5">
            <GradientStop Offset="0" Color="Red"/>
            <GradientStop Offset="1" Color="Blue"/>
          </RadialGradientBrush>
        </Setter>
      </Style>

      <Style Selector="Border.Rect14:pointerover">
        <Setter Property="Background" >
          <RadialGradientBrush Center="30%,30%" Radius="0.2">
            <GradientStop Offset="0" Color="Green"/>
            <GradientStop Offset="1" Color="Yellow"/>
          </RadialGradientBrush>
        </Setter>
      </Style>
    </Styles>
  </UserControl.Styles>

  <Grid>
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" ClipToBounds="False">
      <StackPanel.Clock>
        <Clock />
      </StackPanel.Clock>
      <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Spacing="20">
        <TextBlock VerticalAlignment="Center">Hover to activate Transitions.</TextBlock>
        <Button Content="{Binding PlayStateText}" Command="{Binding TogglePlayState}" Click="ToggleClock" />
      </StackPanel>
      <WrapPanel ClipToBounds="False">
        <Border Classes="Test Rect1" Background="DarkRed"/>
        <Border Classes="Test Rect2" Background="Magenta"/>
        <Border Classes="Test Rect3"/>
        <Border Classes="Test Rect4" Background="Navy"/>
        <Border Classes="Test Rect5" Background="SeaGreen"/>
        <Border Classes="Test Rect6" Background="Orange"/>
        <Border Classes="Test Rect7" Background="Gold"/>
        <Border Classes="Test Rect8" Background="Gray" />
        <Border Classes="Test Rect9" Background="Red" />

        <Border Classes="Test Shadow" CornerRadius="10" Child="{x:Null}" />
        <Border Classes="Test Shadow" CornerRadius="0 30 60 0" Child="{x:Null}" />

        <Border Classes="Test Rect10" />
        <Border Classes="Test Rect11" />

        <Border Classes="Test Rect12" Child="{x:Null}"/>
        <Border Classes="Test Rect13" Child="{x:Null}"/>
        <Border Classes="Test Rect14" Child="{x:Null}"/>
        
        <Border Classes="Test Rect14" />
        <Border Classes="Test Rect14" />
        <Border Classes="Test Rect14" />
        <Border Classes="Test Rect14" />
      </WrapPanel>
    </StackPanel>
  </Grid>
</UserControl>
