Bläddra i källkod

Reset viewport button

flabbet 2 år sedan
förälder
incheckning
f8fd22b3ba

+ 5 - 0
src/PixiEditor/Helpers/Extensions/ParserHelpers.cs

@@ -17,6 +17,11 @@ internal static class ParserHelpers
 {
     public static Image ToImage(this SerializableLayer serializableLayer)
     {
+        if(serializableLayer.PngBytes == null)
+        {
+            return null;
+        }
+
         return Image.FromEncodedData(serializableLayer.PngBytes);
     }
     

BIN
src/PixiEditor/Images/Layout.png


+ 2 - 0
src/PixiEditor/PixiEditor.csproj

@@ -325,6 +325,8 @@
 		<Resource Include="Images\Star-filled.png" />
 		<None Remove="Images\Shuffle.png" />
 		<Resource Include="Images\Shuffle.png" />
+		<None Remove="Images\Layout.png" />
+		<Resource Include="Images\Layout.png" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\LICENSE">

+ 34 - 0
src/PixiEditor/Styles/ThemeStyle.xaml

@@ -127,6 +127,40 @@
             </Setter.Value>
         </Setter>
     </Style>
+    
+    <Style TargetType="Button" x:Key="OverlayButton" BasedOn="{StaticResource BaseDarkButton}">
+        <Setter Property="OverridesDefaultStyle" Value="True" />
+        <Setter Property="Background" Value="Transparent" />
+        <Setter Property="Focusable" Value="False" />
+        <Setter Property="Height" Value="28"/>
+        <Setter Property="Width" Value="70"/>
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="Button">
+                    <Border CornerRadius="4" Background="{TemplateBinding Background}">
+                        <ContentPresenter Content="{TemplateBinding Content}" HorizontalAlignment="Center"
+                                          VerticalAlignment="Center" Margin="{TemplateBinding Padding}"/>
+                    </Border>
+                    <ControlTemplate.Triggers>
+                        <Trigger Property="IsEnabled" Value="False">
+                            <Setter Property="Background" Value="Transparent" />
+                            <Setter Property="Foreground" Value="Gray" />
+                            <Setter Property="Cursor" Value="Arrow" />
+                        </Trigger>
+                        <Trigger Property="IsMouseOver" Value="True">
+                            <Setter Property="Background" Value="#FF515151" />
+                            <Setter Property="Foreground" Value="White" />
+                            <Setter Property="Cursor" Value="Hand" />
+                        </Trigger>
+                        <Trigger Property="IsPressed" Value="True">
+                            <Setter Property="Background" Value="#505050" />
+                            <Setter Property="Foreground" Value="White" />
+                        </Trigger>
+                    </ControlTemplate.Triggers>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
 
     <Style TargetType="Button" x:Key="AccentDarkRoundButton" BasedOn="{StaticResource BaseDarkButton}">
         <Setter Property="OverridesDefaultStyle" Value="True" />

+ 9 - 0
src/PixiEditor/Views/UserControls/Viewport.xaml

@@ -45,6 +45,15 @@
                                         PassEventArgsToCommand="True"/>
             </i:EventTrigger>
         </i:Interaction.Triggers>
+        <Button Width="32" Height="32" ToolTip="Reset viewport"
+                HorizontalAlignment="Right" Margin="5" Style="{StaticResource OverlayButton}"
+                VerticalAlignment="Top" Panel.ZIndex="2" 
+                Click="ResetViewportClicked"
+                Cursor="Hand">
+            <Button.Content>
+                <Image Width="30" Height="30" Source="/Images/Layout.png"/>
+            </Button.Content>
+            </Button>
         <zoombox:Zoombox
             Tag="{Binding ElementName=vpUc}"
             x:Name="zoombox"

+ 6 - 0
src/PixiEditor/Views/UserControls/Viewport.xaml.cs

@@ -394,6 +394,12 @@ internal partial class Viewport : UserControl, INotifyPropertyChanged
     {
         zoombox.CenterContent();
     }
+    
+    private void ResetViewportClicked(object sender, RoutedEventArgs e)
+    {
+        zoombox.Angle = 0;
+        zoombox.CenterContent();
+    }
 
     private static void CenterViewportTriggerChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
     {