Browse Source

Added toggle high resolution preview button

flabbet 9 months ago
parent
commit
22c01c484f

+ 4 - 1
src/PixiEditor/Data/Localization/Languages/en.json

@@ -760,5 +760,8 @@
   "SPACING_SETTING": "Spacing",
   "ANTI_ALIASING_SETTING": "Anti-aliasing",
   "TOLERANCE_LABEL": "Tolerance",
-  "TOGGLE_SNAPPING": "Toggle snapping"
+  "TOGGLE_SNAPPING": "Toggle snapping",
+  "HIGH_RES_PREVIEW": "High Resolution Preview",
+  "LOW_RES_PREVIEW": "Document Resolution Preview",
+  "TOGGLE_HIGH_RES_PREVIEW": "Toggle high resolution preview"
 }

+ 2 - 1
src/PixiEditor/Helpers/ServiceCollectionHelpers.cs

@@ -186,7 +186,8 @@ internal static class ServiceCollectionHelpers
             .AddSingleton<MenuItemBuilder, SymmetryMenuBuilder>()
             .AddSingleton<MenuItemBuilder, OpenDockablesMenuBuilder>()
             .AddSingleton<MenuItemBuilder, ToggleGridLinesMenuBuilder>()
-            .AddSingleton<MenuItemBuilder, ToggleSnappingMenuBuilder>();
+            .AddSingleton<MenuItemBuilder, ToggleSnappingMenuBuilder>()
+            .AddSingleton<MenuItemBuilder, ToggleHighResPreviewMenuBuilder>();
     }
 
     public static IServiceCollection AddExtensionServices(this IServiceCollection collection, ExtensionLoader loader) =>

+ 43 - 0
src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleHighResPreviewMenuBuilder.cs

@@ -0,0 +1,43 @@
+using Avalonia.Controls;
+using Avalonia.Data;
+using Avalonia.Input;
+using PixiEditor.Extensions.UI;
+using PixiEditor.UI.Common.Controls;
+using PixiEditor.UI.Common.Fonts;
+
+namespace PixiEditor.ViewModels.Menu.MenuBuilders;
+
+internal class ToggleHighResPreviewMenuBuilder : MenuItemBuilder
+{
+    public override void ModifyMenuTree(ICollection<MenuItem> tree)
+    {
+        if (TryFindMenuItem(tree, "VIEW", out MenuItem? viewItem))
+        {
+            ToggleableMenuItem snappingItem = new ToggleableMenuItem();
+            Translator.SetKey(snappingItem, "TOGGLE_HIGH_RES_PREVIEW");
+            snappingItem.Icon = new Image()
+            {
+                Source = PixiPerfectIcons.ToIcon(PixiPerfectIcons.Circle),
+                Width = Models.Commands.XAML.Menu.IconDimensions,
+                Height = Models.Commands.XAML.Menu.IconDimensions
+            };
+
+            BindItem(snappingItem);
+            viewItem.Items.Add(snappingItem);
+        }
+    }
+
+    private void BindItem(ToggleableMenuItem gridLinesItem)
+    {
+        gridLinesItem.Bind(ToggleableMenuItem.IsCheckedProperty, new Binding("ViewportSubViewModel.HighResRender")
+        {
+            Source = ViewModelMain.Current,
+            Mode = BindingMode.TwoWay
+        });
+
+        gridLinesItem.Bind(InputElement.IsEnabledProperty, new Binding("!!DocumentManagerSubViewModel.ActiveDocument")
+        {
+            Source = ViewModelMain.Current
+        });
+    }
+}

+ 11 - 0
src/PixiEditor/ViewModels/SubViewModels/ViewOptionsViewModel.cs

@@ -24,6 +24,17 @@ internal class ViewOptionsViewModel : SubViewModel<ViewModelMain>
             Owner.DocumentManagerSubViewModel.ActiveDocument.SnappingViewModel.SnappingController.SnappingEnabled = value;
         }
     }
+    
+    private bool highResRender = true;
+    public bool HighResRender
+    {
+        get => highResRender;
+        set
+        {
+            SetProperty(ref highResRender, value);
+            Owner.DocumentManagerSubViewModel.ActiveDocument.SceneRenderer.HighResRendering = value;
+        }
+    }
 
     public ViewOptionsViewModel(ViewModelMain owner)
         : base(owner)

+ 1 - 0
src/PixiEditor/Views/Dock/DocumentTemplate.axaml

@@ -28,6 +28,7 @@
         MiddleMouseClickedCommand="{Binding IoSubViewModel.PreviewMouseMiddleButtonCommand, Source={viewModels1:MainVM}}"
         Cursor="{Binding ToolsSubViewModel.ToolCursor, Source={viewModels1:MainVM}}"
         GridLinesVisible="{Binding ViewportSubViewModel.GridLinesEnabled, Source={viewModels1:MainVM}}"
+        HighResPreview="{Binding ViewportSubViewModel.HighResRender, Source={viewModels1:MainVM}, Mode=TwoWay}"
         ZoomMode="{Binding ToolsSubViewModel.ActiveTool, Source={viewModels1:MainVM}, Converter={converters:ActiveToolToZoomModeConverter}}"
         ZoomOutOnClick="{Binding ToolsSubViewModel.ZoomTool.ZoomOutOnClick, Source={viewModels1:MainVM}}"
         UseTouchGestures="{Binding StylusSubViewModel.UseTouchGestures, Source={viewModels1:MainVM}}"

+ 0 - 1
src/PixiEditor/Views/Main/ViewportControls/Viewport.axaml.cs

@@ -498,7 +498,6 @@ internal partial class Viewport : UserControl, INotifyPropertyChanged
     private static void OnHighResPreviewChanged(AvaloniaPropertyChangedEventArgs<bool> e)
     {
         Viewport? viewport = (Viewport)e.Sender;
-        viewport.Document.SceneRenderer.HighResRendering = e.NewValue.Value; 
         viewport.ForceRefreshFinalImage();
     }
 }