|
@@ -21,6 +21,7 @@ internal class DocumentManagerViewModel : SubViewModel<ViewModelMain>, IDocument
|
|
public event EventHandler<DocumentChangedEventArgs>? ActiveDocumentChanged;
|
|
public event EventHandler<DocumentChangedEventArgs>? ActiveDocumentChanged;
|
|
|
|
|
|
private DocumentViewModel? activeDocument;
|
|
private DocumentViewModel? activeDocument;
|
|
|
|
+
|
|
public DocumentViewModel? ActiveDocument
|
|
public DocumentViewModel? ActiveDocument
|
|
{
|
|
{
|
|
get => activeDocument;
|
|
get => activeDocument;
|
|
@@ -33,11 +34,12 @@ internal class DocumentManagerViewModel : SubViewModel<ViewModelMain>, IDocument
|
|
activeDocument = value;
|
|
activeDocument = value;
|
|
OnPropertyChanged(nameof(ActiveDocument));
|
|
OnPropertyChanged(nameof(ActiveDocument));
|
|
ActiveDocumentChanged?.Invoke(this, new(value, prevDoc));
|
|
ActiveDocumentChanged?.Invoke(this, new(value, prevDoc));
|
|
-
|
|
|
|
|
|
+
|
|
if (ViewModelMain.Current.ToolsSubViewModel.ActiveTool == null)
|
|
if (ViewModelMain.Current.ToolsSubViewModel.ActiveTool == null)
|
|
{
|
|
{
|
|
var firstTool =
|
|
var firstTool =
|
|
- ViewModelMain.Current.ToolsSubViewModel.ActiveToolSet.Tools.FirstOrDefault(x => x.CanBeUsedOnActiveLayer);
|
|
|
|
|
|
+ ViewModelMain.Current.ToolsSubViewModel.ActiveToolSet.Tools.FirstOrDefault(x =>
|
|
|
|
+ x.CanBeUsedOnActiveLayer);
|
|
if (firstTool != null)
|
|
if (firstTool != null)
|
|
{
|
|
{
|
|
ViewModelMain.Current.ToolsSubViewModel.SetActiveTool(firstTool.GetType(), false);
|
|
ViewModelMain.Current.ToolsSubViewModel.SetActiveTool(firstTool.GetType(), false);
|
|
@@ -67,57 +69,76 @@ internal class DocumentManagerViewModel : SubViewModel<ViewModelMain>, IDocument
|
|
[Evaluator.CanExecute("PixiEditor.HasDocument", nameof(ActiveDocument))]
|
|
[Evaluator.CanExecute("PixiEditor.HasDocument", nameof(ActiveDocument))]
|
|
public bool DocumentNotNull() => ActiveDocument != null;
|
|
public bool DocumentNotNull() => ActiveDocument != null;
|
|
|
|
|
|
- [Command.Basic("PixiEditor.Document.ClipCanvas", "CLIP_CANVAS", "CLIP_CANVAS", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
|
|
+ [Command.Basic("PixiEditor.Document.ClipCanvas", "CLIP_CANVAS", "CLIP_CANVAS",
|
|
|
|
+ CanExecute = "PixiEditor.HasDocument",
|
|
Icon = PixiPerfectIcons.Crop, MenuItemPath = "IMAGE/CLIP_CANVAS", MenuItemOrder = 2, AnalyticsTrack = true)]
|
|
Icon = PixiPerfectIcons.Crop, MenuItemPath = "IMAGE/CLIP_CANVAS", MenuItemOrder = 2, AnalyticsTrack = true)]
|
|
public void ClipCanvas() => ActiveDocument?.Operations.ClipCanvas();
|
|
public void ClipCanvas() => ActiveDocument?.Operations.ClipCanvas();
|
|
|
|
|
|
- [Command.Basic("PixiEditor.Document.FlipImageHorizontal", FlipType.Horizontal, "FLIP_IMG_HORIZONTALLY", "FLIP_IMG_HORIZONTALLY", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
- MenuItemPath = "IMAGE/FLIP/FLIP_IMG_HORIZONTALLY", MenuItemOrder = 14, Icon = PixiPerfectIcons.XFlip, AnalyticsTrack = true)]
|
|
|
|
- [Command.Basic("PixiEditor.Document.FlipImageVertical", FlipType.Vertical, "FLIP_IMG_VERTICALLY", "FLIP_IMG_VERTICALLY", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
- MenuItemPath = "IMAGE/FLIP/FLIP_IMG_VERTICALLY", MenuItemOrder = 15, Icon = PixiPerfectIcons.YFlip, AnalyticsTrack = true)]
|
|
|
|
- public void FlipImage(FlipType type) => ActiveDocument?.Operations.FlipImage(type, activeDocument.AnimationDataViewModel.ActiveFrameBindable);
|
|
|
|
|
|
+ [Command.Basic("PixiEditor.Document.FlipImageHorizontal", FlipType.Horizontal, "FLIP_IMG_HORIZONTALLY",
|
|
|
|
+ "FLIP_IMG_HORIZONTALLY", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
+ MenuItemPath = "IMAGE/FLIP/FLIP_IMG_HORIZONTALLY", MenuItemOrder = 14, Icon = PixiPerfectIcons.XFlip,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
|
|
+ [Command.Basic("PixiEditor.Document.FlipImageVertical", FlipType.Vertical, "FLIP_IMG_VERTICALLY",
|
|
|
|
+ "FLIP_IMG_VERTICALLY", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
+ MenuItemPath = "IMAGE/FLIP/FLIP_IMG_VERTICALLY", MenuItemOrder = 15, Icon = PixiPerfectIcons.YFlip,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
|
|
+ public void FlipImage(FlipType type) =>
|
|
|
|
+ ActiveDocument?.Operations.FlipImage(type, activeDocument.AnimationDataViewModel.ActiveFrameBindable);
|
|
|
|
|
|
- [Command.Basic("PixiEditor.Document.FlipLayersHorizontal", FlipType.Horizontal, "FLIP_LAYERS_HORIZONTALLY", "FLIP_LAYERS_HORIZONTALLY", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
- MenuItemPath = "IMAGE/FLIP/FLIP_LAYERS_HORIZONTALLY", MenuItemOrder = 16, Icon = PixiPerfectIcons.XSelectedFlip, AnalyticsTrack = true)]
|
|
|
|
- [Command.Basic("PixiEditor.Document.FlipLayersVertical", FlipType.Vertical, "FLIP_LAYERS_VERTICALLY", "FLIP_LAYERS_VERTICALLY", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
- MenuItemPath = "IMAGE/FLIP/FLIP_LAYERS_VERTICALLY", MenuItemOrder = 17, Icon = PixiPerfectIcons.YSelectedFlip, AnalyticsTrack = true)]
|
|
|
|
|
|
+ [Command.Basic("PixiEditor.Document.FlipLayersHorizontal", FlipType.Horizontal, "FLIP_LAYERS_HORIZONTALLY",
|
|
|
|
+ "FLIP_LAYERS_HORIZONTALLY", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
+ MenuItemPath = "IMAGE/FLIP/FLIP_LAYERS_HORIZONTALLY", MenuItemOrder = 16, Icon = PixiPerfectIcons.XSelectedFlip,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
|
|
+ [Command.Basic("PixiEditor.Document.FlipLayersVertical", FlipType.Vertical, "FLIP_LAYERS_VERTICALLY",
|
|
|
|
+ "FLIP_LAYERS_VERTICALLY", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
+ MenuItemPath = "IMAGE/FLIP/FLIP_LAYERS_VERTICALLY", MenuItemOrder = 17, Icon = PixiPerfectIcons.YSelectedFlip,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
public void FlipLayers(FlipType type)
|
|
public void FlipLayers(FlipType type)
|
|
{
|
|
{
|
|
if (ActiveDocument?.SelectedStructureMember == null)
|
|
if (ActiveDocument?.SelectedStructureMember == null)
|
|
return;
|
|
return;
|
|
|
|
|
|
- ActiveDocument?.Operations.FlipImage(type, ActiveDocument.GetSelectedMembers(), activeDocument.AnimationDataViewModel.ActiveFrameBindable);
|
|
|
|
|
|
+ ActiveDocument?.Operations.FlipImage(type, ActiveDocument.GetSelectedMembers(),
|
|
|
|
+ activeDocument.AnimationDataViewModel.ActiveFrameBindable);
|
|
}
|
|
}
|
|
|
|
|
|
[Command.Basic("PixiEditor.Document.Rotate90Deg", "ROT_IMG_90",
|
|
[Command.Basic("PixiEditor.Document.Rotate90Deg", "ROT_IMG_90",
|
|
"ROT_IMG_90", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D90,
|
|
"ROT_IMG_90", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D90,
|
|
- MenuItemPath = "IMAGE/ROTATION/ROT_IMG_90_D", MenuItemOrder = 8, Icon = PixiPerfectIcons.RotateImage90, AnalyticsTrack = true)]
|
|
|
|
|
|
+ MenuItemPath = "IMAGE/ROTATION/ROT_IMG_90_D", MenuItemOrder = 8, Icon = PixiPerfectIcons.RotateImage90,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
[Command.Basic("PixiEditor.Document.Rotate180Deg", "ROT_IMG_180",
|
|
[Command.Basic("PixiEditor.Document.Rotate180Deg", "ROT_IMG_180",
|
|
"ROT_IMG_180", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D180,
|
|
"ROT_IMG_180", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D180,
|
|
- MenuItemPath = "IMAGE/ROTATION/ROT_IMG_180_D", MenuItemOrder = 9, Icon = PixiPerfectIcons.RotateImage180, AnalyticsTrack = true)]
|
|
|
|
|
|
+ MenuItemPath = "IMAGE/ROTATION/ROT_IMG_180_D", MenuItemOrder = 9, Icon = PixiPerfectIcons.RotateImage180,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
[Command.Basic("PixiEditor.Document.Rotate270Deg", "ROT_IMG_-90",
|
|
[Command.Basic("PixiEditor.Document.Rotate270Deg", "ROT_IMG_-90",
|
|
"ROT_IMG_-90", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D270,
|
|
"ROT_IMG_-90", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D270,
|
|
- MenuItemPath = "IMAGE/ROTATION/ROT_IMG_-90_D", MenuItemOrder = 10, Icon = PixiPerfectIcons.RotateImageMinus90, AnalyticsTrack = true)]
|
|
|
|
|
|
+ MenuItemPath = "IMAGE/ROTATION/ROT_IMG_-90_D", MenuItemOrder = 10, Icon = PixiPerfectIcons.RotateImageMinus90,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
public void RotateImage(RotationAngle angle) => ActiveDocument?.Operations.RotateImage(angle);
|
|
public void RotateImage(RotationAngle angle) => ActiveDocument?.Operations.RotateImage(angle);
|
|
|
|
|
|
[Command.Basic("PixiEditor.Document.Rotate90DegLayers", "ROT_LAYERS_90",
|
|
[Command.Basic("PixiEditor.Document.Rotate90DegLayers", "ROT_LAYERS_90",
|
|
"ROT_LAYERS_90", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D90,
|
|
"ROT_LAYERS_90", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D90,
|
|
- MenuItemPath = "IMAGE/ROTATION/ROT_LAYERS_90_D", MenuItemOrder = 11, Icon = PixiPerfectIcons.RotateFile90, AnalyticsTrack = true)]
|
|
|
|
|
|
+ MenuItemPath = "IMAGE/ROTATION/ROT_LAYERS_90_D", MenuItemOrder = 11, Icon = PixiPerfectIcons.RotateFile90,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
[Command.Basic("PixiEditor.Document.Rotate180DegLayers", "ROT_LAYERS_180",
|
|
[Command.Basic("PixiEditor.Document.Rotate180DegLayers", "ROT_LAYERS_180",
|
|
"ROT_LAYERS_180", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D180,
|
|
"ROT_LAYERS_180", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D180,
|
|
- MenuItemPath = "IMAGE/ROTATION/ROT_LAYERS_180_D", MenuItemOrder = 12, Icon = PixiPerfectIcons.RotateFile180, AnalyticsTrack = true)]
|
|
|
|
|
|
+ MenuItemPath = "IMAGE/ROTATION/ROT_LAYERS_180_D", MenuItemOrder = 12, Icon = PixiPerfectIcons.RotateFile180,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
[Command.Basic("PixiEditor.Document.Rotate270DegLayers", "ROT_LAYERS_-90",
|
|
[Command.Basic("PixiEditor.Document.Rotate270DegLayers", "ROT_LAYERS_-90",
|
|
"ROT_LAYERS_-90", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D270,
|
|
"ROT_LAYERS_-90", CanExecute = "PixiEditor.HasDocument", Parameter = RotationAngle.D270,
|
|
- MenuItemPath = "IMAGE/ROTATION/ROT_LAYERS_-90_D", MenuItemOrder = 13, Icon = PixiPerfectIcons.RotateFileMinus90, AnalyticsTrack = true)]
|
|
|
|
|
|
+ MenuItemPath = "IMAGE/ROTATION/ROT_LAYERS_-90_D", MenuItemOrder = 13, Icon = PixiPerfectIcons.RotateFileMinus90,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
public void RotateLayers(RotationAngle angle)
|
|
public void RotateLayers(RotationAngle angle)
|
|
{
|
|
{
|
|
if (ActiveDocument?.SelectedStructureMember == null)
|
|
if (ActiveDocument?.SelectedStructureMember == null)
|
|
return;
|
|
return;
|
|
-
|
|
|
|
- ActiveDocument?.Operations.RotateImage(angle, ActiveDocument.GetSelectedMembers(), activeDocument.AnimationDataViewModel.ActiveFrameBindable);
|
|
|
|
|
|
+
|
|
|
|
+ ActiveDocument?.Operations.RotateImage(angle, ActiveDocument.GetSelectedMembers(),
|
|
|
|
+ activeDocument.AnimationDataViewModel.ActiveFrameBindable);
|
|
}
|
|
}
|
|
|
|
|
|
- [Command.Basic("PixiEditor.Document.ToggleVerticalSymmetryAxis", "TOGGLE_VERT_SYMMETRY_AXIS", "TOGGLE_VERT_SYMMETRY_AXIS", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
|
|
+ [Command.Basic("PixiEditor.Document.ToggleVerticalSymmetryAxis", "TOGGLE_VERT_SYMMETRY_AXIS",
|
|
|
|
+ "TOGGLE_VERT_SYMMETRY_AXIS", CanExecute = "PixiEditor.HasDocument",
|
|
Icon = PixiPerfectIcons.YSymmetry, AnalyticsTrack = true)]
|
|
Icon = PixiPerfectIcons.YSymmetry, AnalyticsTrack = true)]
|
|
public void ToggleVerticalSymmetryAxis()
|
|
public void ToggleVerticalSymmetryAxis()
|
|
{
|
|
{
|
|
@@ -126,7 +147,8 @@ internal class DocumentManagerViewModel : SubViewModel<ViewModelMain>, IDocument
|
|
ActiveDocument.VerticalSymmetryAxisEnabledBindable ^= true;
|
|
ActiveDocument.VerticalSymmetryAxisEnabledBindable ^= true;
|
|
}
|
|
}
|
|
|
|
|
|
- [Command.Basic("PixiEditor.Document.ToggleHorizontalSymmetryAxis", "TOGGLE_HOR_SYMMETRY_AXIS", "TOGGLE_HOR_SYMMETRY_AXIS", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
|
|
+ [Command.Basic("PixiEditor.Document.ToggleHorizontalSymmetryAxis", "TOGGLE_HOR_SYMMETRY_AXIS",
|
|
|
|
+ "TOGGLE_HOR_SYMMETRY_AXIS", CanExecute = "PixiEditor.HasDocument",
|
|
Icon = PixiPerfectIcons.XSymmetry, AnalyticsTrack = true)]
|
|
Icon = PixiPerfectIcons.XSymmetry, AnalyticsTrack = true)]
|
|
public void ToggleHorizontalSymmetryAxis()
|
|
public void ToggleHorizontalSymmetryAxis()
|
|
{
|
|
{
|
|
@@ -143,7 +165,8 @@ internal class DocumentManagerViewModel : SubViewModel<ViewModelMain>, IDocument
|
|
ActiveDocument.EventInlet.OnSymmetryDragged(info);
|
|
ActiveDocument.EventInlet.OnSymmetryDragged(info);
|
|
}
|
|
}
|
|
|
|
|
|
- [Command.Internal("PixiEditor.Document.StartDragSymmetry", CanExecute = "PixiEditor.HasDocument", AnalyticsTrack = true)]
|
|
|
|
|
|
+ [Command.Internal("PixiEditor.Document.StartDragSymmetry", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
+ AnalyticsTrack = true)]
|
|
public void StartDragSymmetry(SymmetryAxisDirection dir)
|
|
public void StartDragSymmetry(SymmetryAxisDirection dir)
|
|
{
|
|
{
|
|
if (ActiveDocument is null)
|
|
if (ActiveDocument is null)
|
|
@@ -160,21 +183,25 @@ internal class DocumentManagerViewModel : SubViewModel<ViewModelMain>, IDocument
|
|
ActiveDocument.EventInlet.OnSymmetryDragEnded(dir);
|
|
ActiveDocument.EventInlet.OnSymmetryDragEnded(dir);
|
|
}
|
|
}
|
|
|
|
|
|
- [Command.Basic("PixiEditor.Document.DeletePixels", "DELETE_PIXELS", "DELETE_PIXELS_DESCRIPTIVE",
|
|
|
|
|
|
+ [Command.Basic("PixiEditor.Document.DeletePixels", "DELETE_PIXELS", "DELETE_PIXELS_DESCRIPTIVE",
|
|
CanExecute = "PixiEditor.Selection.IsNotEmpty", Key = Key.Delete,
|
|
CanExecute = "PixiEditor.Selection.IsNotEmpty", Key = Key.Delete,
|
|
ShortcutContexts = [typeof(ViewportWindowViewModel)],
|
|
ShortcutContexts = [typeof(ViewportWindowViewModel)],
|
|
Icon = PixiPerfectIcons.Eraser,
|
|
Icon = PixiPerfectIcons.Eraser,
|
|
MenuItemPath = "EDIT/DELETE_SELECTED_PIXELS", MenuItemOrder = 6, AnalyticsTrack = true)]
|
|
MenuItemPath = "EDIT/DELETE_SELECTED_PIXELS", MenuItemOrder = 6, AnalyticsTrack = true)]
|
|
public void DeletePixels()
|
|
public void DeletePixels()
|
|
{
|
|
{
|
|
- Owner.DocumentManagerSubViewModel.ActiveDocument?.Operations.DeleteSelectedPixels(activeDocument.AnimationDataViewModel.ActiveFrameBindable);
|
|
|
|
|
|
+ Owner.DocumentManagerSubViewModel.ActiveDocument?.Operations.DeleteSelectedPixels(activeDocument
|
|
|
|
+ .AnimationDataViewModel.ActiveFrameBindable);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- [Command.Basic("PixiEditor.Document.ResizeDocument", false, "RESIZE_DOCUMENT", "RESIZE_DOCUMENT", CanExecute = "PixiEditor.HasDocument", Key = Key.I, Modifiers = KeyModifiers.Control | KeyModifiers.Shift,
|
|
|
|
|
|
+ [Command.Basic("PixiEditor.Document.ResizeDocument", false, "RESIZE_DOCUMENT", "RESIZE_DOCUMENT",
|
|
|
|
+ CanExecute = "PixiEditor.HasDocument", Key = Key.I, Modifiers = KeyModifiers.Control | KeyModifiers.Shift,
|
|
Icon = PixiPerfectIcons.Resize, MenuItemPath = "IMAGE/RESIZE_IMAGE", MenuItemOrder = 0, AnalyticsTrack = true)]
|
|
Icon = PixiPerfectIcons.Resize, MenuItemPath = "IMAGE/RESIZE_IMAGE", MenuItemOrder = 0, AnalyticsTrack = true)]
|
|
- [Command.Basic("PixiEditor.Document.ResizeCanvas", true, "RESIZE_CANVAS", "RESIZE_CANVAS", CanExecute = "PixiEditor.HasDocument", Key = Key.C, Modifiers = KeyModifiers.Control | KeyModifiers.Shift,
|
|
|
|
- Icon = PixiPerfectIcons.CanvasResize, MenuItemPath = "IMAGE/RESIZE_CANVAS", MenuItemOrder = 1, AnalyticsTrack = true)]
|
|
|
|
|
|
+ [Command.Basic("PixiEditor.Document.ResizeCanvas", true, "RESIZE_CANVAS", "RESIZE_CANVAS",
|
|
|
|
+ CanExecute = "PixiEditor.HasDocument", Key = Key.C, Modifiers = KeyModifiers.Control | KeyModifiers.Shift,
|
|
|
|
+ Icon = PixiPerfectIcons.CanvasResize, MenuItemPath = "IMAGE/RESIZE_CANVAS", MenuItemOrder = 1,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
public async Task OpenResizePopup(bool canvas)
|
|
public async Task OpenResizePopup(bool canvas)
|
|
{
|
|
{
|
|
DocumentViewModel? doc = Owner.DocumentManagerSubViewModel.ActiveDocument;
|
|
DocumentViewModel? doc = Owner.DocumentManagerSubViewModel.ActiveDocument;
|
|
@@ -199,26 +226,44 @@ internal class DocumentManagerViewModel : SubViewModel<ViewModelMain>, IDocument
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- [Command.Basic("PixiEditor.Document.CenterContent", "CENTER_CONTENT", "CENTER_CONTENT", CanExecute = "PixiEditor.HasDocument",
|
|
|
|
- Icon = PixiPerfectIcons.Center, MenuItemPath = "IMAGE/CENTER_CONTENT", MenuItemOrder = 3, AnalyticsTrack = true)]
|
|
|
|
|
|
+ [Command.Basic("PixiEditor.Document.CenterContent", "CENTER_CONTENT", "CENTER_CONTENT",
|
|
|
|
+ CanExecute = "PixiEditor.HasDocument",
|
|
|
|
+ Icon = PixiPerfectIcons.Center, MenuItemPath = "IMAGE/CENTER_CONTENT", MenuItemOrder = 3,
|
|
|
|
+ AnalyticsTrack = true)]
|
|
public void CenterContent()
|
|
public void CenterContent()
|
|
{
|
|
{
|
|
- if(ActiveDocument?.SelectedStructureMember == null)
|
|
|
|
|
|
+ if (ActiveDocument?.SelectedStructureMember == null)
|
|
return;
|
|
return;
|
|
-
|
|
|
|
- ActiveDocument.Operations.CenterContent(ActiveDocument.GetSelectedMembers(), activeDocument.AnimationDataViewModel.ActiveFrameBindable);
|
|
|
|
|
|
+
|
|
|
|
+ ActiveDocument.Operations.CenterContent(ActiveDocument.GetSelectedMembers(),
|
|
|
|
+ activeDocument.AnimationDataViewModel.ActiveFrameBindable);
|
|
}
|
|
}
|
|
-
|
|
|
|
- [Command.Basic("PixiEditor.Document.UseLinearSrgbProcessing", "USE_LINEAR_SRGB_PROCESSING", "USE_LINEAR_SRGB_PROCESSING_DESC", CanExecute = "PixiEditor.DocumentUsesLegacyBlending",
|
|
|
|
|
|
+
|
|
|
|
+ [Command.Basic("PixiEditor.Document.UseLinearSrgbProcessing", "USE_LINEAR_SRGB_PROCESSING",
|
|
|
|
+ "USE_LINEAR_SRGB_PROCESSING_DESC", CanExecute = "PixiEditor.DocumentUsesSrgbBlending",
|
|
AnalyticsTrack = true)]
|
|
AnalyticsTrack = true)]
|
|
public void UseLinearSrgbProcessing()
|
|
public void UseLinearSrgbProcessing()
|
|
{
|
|
{
|
|
if (ActiveDocument is null)
|
|
if (ActiveDocument is null)
|
|
return;
|
|
return;
|
|
-
|
|
|
|
|
|
+
|
|
ActiveDocument.Operations.UseLinearSrgbProcessing();
|
|
ActiveDocument.Operations.UseLinearSrgbProcessing();
|
|
}
|
|
}
|
|
-
|
|
|
|
- [Evaluator.CanExecute("PixiEditor.DocumentUsesLegacyBlending", nameof(ActiveDocument))]
|
|
|
|
- public bool DocumentUsesLegacyBlending() => ActiveDocument?.UsesLegacyBlending ?? false;
|
|
|
|
|
|
+
|
|
|
|
+ [Command.Basic("PixiEditor.Document.UseSrgbProcessing", "USE_SRGB_PROCESSING",
|
|
|
|
+ "USE_SRGB_PROCESSING_DESC", CanExecute = "PixiEditor.DocumentUsesLinearBlending",
|
|
|
|
+ AnalyticsTrack = true)]
|
|
|
|
+ public void UseSrgbProcessing()
|
|
|
|
+ {
|
|
|
|
+ if (ActiveDocument is null)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ ActiveDocument.Operations.UseSrgbProcessing();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Evaluator.CanExecute("PixiEditor.DocumentUsesSrgbBlending", nameof(ActiveDocument))]
|
|
|
|
+ public bool DocumentUsesSrgbBlending() => ActiveDocument?.UsesSrgbBlending ?? false;
|
|
|
|
+
|
|
|
|
+ [Evaluator.CanExecute("PixiEditor.DocumentUsesLinearBlending", nameof(ActiveDocument))]
|
|
|
|
+ public bool DocumentUsesLinearBlending() => !ActiveDocument?.UsesSrgbBlending ?? true;
|
|
}
|
|
}
|