|
@@ -10,7 +10,6 @@ using PixiEditor.ChangeableDocument.Enums;
|
|
|
using PixiEditor.Models.DocumentPassthroughActions;
|
|
|
using PixiEditor.Models.Enums;
|
|
|
using PixiEditor.ViewModels.SubViewModels.Document;
|
|
|
-using SkiaSharp;
|
|
|
|
|
|
namespace PixiEditor.Models.DocumentModels;
|
|
|
#nullable enable
|
|
@@ -103,7 +102,7 @@ internal class DocumentUpdater
|
|
|
|
|
|
private void ProcessClearSoftSelectedMembers(ClearSoftSelectedMembers_PassthroughAction info)
|
|
|
{
|
|
|
- foreach (var oldMember in doc.SoftSelectedStructureMembers)
|
|
|
+ foreach (StructureMemberViewModel? oldMember in doc.SoftSelectedStructureMembers)
|
|
|
{
|
|
|
if (oldMember.Selection == StructureMemberSelectionType.Hard)
|
|
|
continue;
|
|
@@ -115,7 +114,7 @@ internal class DocumentUpdater
|
|
|
|
|
|
private void ProcessAddSoftSelectedMember(AddSoftSelectedMember_PassthroughAction info)
|
|
|
{
|
|
|
- var member = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
+ StructureMemberViewModel? member = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
if (member.Selection == StructureMemberSelectionType.Hard)
|
|
|
return;
|
|
|
member.Selection = StructureMemberSelectionType.Soft;
|
|
@@ -130,7 +129,7 @@ internal class DocumentUpdater
|
|
|
oldMember.Selection = StructureMemberSelectionType.None;
|
|
|
oldMember.RaisePropertyChanged(nameof(oldMember.Selection));
|
|
|
}
|
|
|
- var member = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
+ StructureMemberViewModel? member = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
member.Selection = StructureMemberSelectionType.Hard;
|
|
|
member.RaisePropertyChanged(nameof(member.Selection));
|
|
|
doc.InternalSetSelectedMember(member);
|
|
@@ -147,13 +146,13 @@ internal class DocumentUpdater
|
|
|
|
|
|
private void ProcessMaskIsVisible(StructureMemberMaskIsVisible_ChangeInfo info)
|
|
|
{
|
|
|
- var member = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
+ StructureMemberViewModel? member = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
member.SetMaskIsVisible(info.IsVisible);
|
|
|
}
|
|
|
|
|
|
private void ProcessClipToMemberBelow(StructureMemberClipToMemberBelow_ChangeInfo info)
|
|
|
{
|
|
|
- var member = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
+ StructureMemberViewModel? member = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
member.SetClipToMemberBelowEnabled(info.ClipToMemberBelow);
|
|
|
}
|
|
|
|
|
@@ -180,26 +179,26 @@ internal class DocumentUpdater
|
|
|
|
|
|
private void ProcessLayerLockTransparency(LayerLockTransparency_ChangeInfo info)
|
|
|
{
|
|
|
- var layer = (LayerViewModel)helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
+ LayerViewModel? layer = (LayerViewModel)helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
layer.SetLockTransparency(info.LockTransparency);
|
|
|
}
|
|
|
|
|
|
private void ProcessStructureMemberBlendMode(StructureMemberBlendMode_ChangeInfo info)
|
|
|
{
|
|
|
- var memberVm = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
+ StructureMemberViewModel? memberVm = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
memberVm.SetBlendMode(info.BlendMode);
|
|
|
}
|
|
|
|
|
|
private void ProcessStructureMemberMask(StructureMemberMask_ChangeInfo info)
|
|
|
{
|
|
|
- var memberVm = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
+ StructureMemberViewModel? memberVm = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
memberVm.MaskPreviewSurface?.Dispose();
|
|
|
memberVm.MaskPreviewSurface = null;
|
|
|
memberVm.MaskPreviewBitmap = null;
|
|
|
|
|
|
if (info.HasMask)
|
|
|
{
|
|
|
- var size = StructureMemberViewModel.CalculatePreviewSize(doc.SizeBindable);
|
|
|
+ VecI size = StructureMemberViewModel.CalculatePreviewSize(doc.SizeBindable);
|
|
|
memberVm.MaskPreviewBitmap = CreateBitmap(size);
|
|
|
memberVm.MaskPreviewSurface = CreateSKSurface(memberVm.MaskPreviewBitmap);
|
|
|
}
|
|
@@ -219,7 +218,7 @@ internal class DocumentUpdater
|
|
|
|
|
|
private void UpdateMemberBitmapsRecursively(FolderViewModel folder, VecI newSize)
|
|
|
{
|
|
|
- foreach (var member in folder.Children)
|
|
|
+ foreach (StructureMemberViewModel? member in folder.Children)
|
|
|
{
|
|
|
member.PreviewSurface.Dispose();
|
|
|
member.PreviewBitmap = CreateBitmap(newSize);
|
|
@@ -246,7 +245,7 @@ internal class DocumentUpdater
|
|
|
private void ProcessSize(Size_ChangeInfo info)
|
|
|
{
|
|
|
Dictionary<ChunkResolution, WriteableBitmap> newBitmaps = new();
|
|
|
- foreach (var (res, surf) in doc.Surfaces)
|
|
|
+ foreach ((ChunkResolution res, SKSurface surf) in doc.Surfaces)
|
|
|
{
|
|
|
surf.Dispose();
|
|
|
newBitmaps[res] = CreateBitmap((VecI)(info.Size * res.Multiplier()));
|
|
@@ -259,7 +258,7 @@ internal class DocumentUpdater
|
|
|
doc.InternalSetVerticalSymmetryAxisX(info.VerticalSymmetryAxisX);
|
|
|
doc.InternalSetHorizontalSymmetryAxisY(info.HorizontalSymmetryAxisY);
|
|
|
|
|
|
- var previewSize = StructureMemberViewModel.CalculatePreviewSize(info.Size);
|
|
|
+ VecI previewSize = StructureMemberViewModel.CalculatePreviewSize(info.Size);
|
|
|
doc.PreviewSurface.Dispose();
|
|
|
doc.PreviewBitmap = CreateBitmap(previewSize);
|
|
|
doc.PreviewSurface = CreateSKSurface(doc.PreviewBitmap);
|
|
@@ -268,6 +267,8 @@ internal class DocumentUpdater
|
|
|
doc.RaisePropertyChanged(nameof(doc.PreviewBitmap));
|
|
|
|
|
|
UpdateMemberBitmapsRecursively(doc.StructureRoot, previewSize);
|
|
|
+
|
|
|
+ doc.CenterViewportTrigger.Execute(doc, doc.SizeBindable);
|
|
|
}
|
|
|
|
|
|
private WriteableBitmap CreateBitmap(VecI size)
|
|
@@ -285,7 +286,7 @@ internal class DocumentUpdater
|
|
|
|
|
|
private void ProcessCreateStructureMember(CreateStructureMember_ChangeInfo info)
|
|
|
{
|
|
|
- var parentFolderVM = (FolderViewModel)helper.StructureHelper.FindOrThrow(info.ParentGuid);
|
|
|
+ FolderViewModel? parentFolderVM = (FolderViewModel)helper.StructureHelper.FindOrThrow(info.ParentGuid);
|
|
|
|
|
|
StructureMemberViewModel memberVM;
|
|
|
if (info is CreateLayer_ChangeInfo layerInfo)
|
|
@@ -311,7 +312,7 @@ internal class DocumentUpdater
|
|
|
|
|
|
if (info.HasMask)
|
|
|
{
|
|
|
- var size = StructureMemberViewModel.CalculatePreviewSize(doc.SizeBindable);
|
|
|
+ VecI size = StructureMemberViewModel.CalculatePreviewSize(doc.SizeBindable);
|
|
|
memberVM.MaskPreviewBitmap = CreateBitmap(size);
|
|
|
memberVM.MaskPreviewSurface = CreateSKSurface(memberVM.MaskPreviewBitmap);
|
|
|
}
|
|
@@ -325,11 +326,19 @@ internal class DocumentUpdater
|
|
|
ProcessCreateStructureMember(childInfo);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (doc.SelectedStructureMember is null)
|
|
|
+ {
|
|
|
+ doc.InternalSetSelectedMember(memberVM);
|
|
|
+ memberVM.Selection = StructureMemberSelectionType.Hard;
|
|
|
+ doc.RaisePropertyChanged(nameof(doc.SelectedStructureMember));
|
|
|
+ doc.RaisePropertyChanged(nameof(memberVM.Selection));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private void ProcessDeleteStructureMember(DeleteStructureMember_ChangeInfo info)
|
|
|
{
|
|
|
- var (memberVM, folderVM) = helper.StructureHelper.FindChildAndParentOrThrow(info.GuidValue);
|
|
|
+ (StructureMemberViewModel memberVM, FolderViewModel folderVM) = helper.StructureHelper.FindChildAndParentOrThrow(info.GuidValue);
|
|
|
folderVM.Children.Remove(memberVM);
|
|
|
if (doc.SelectedStructureMember == memberVM)
|
|
|
doc.InternalSetSelectedMember(null);
|
|
@@ -338,27 +347,27 @@ internal class DocumentUpdater
|
|
|
|
|
|
private void ProcessUpdateStructureMemberIsVisible(StructureMemberIsVisible_ChangeInfo info)
|
|
|
{
|
|
|
- var memberVM = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
+ StructureMemberViewModel? memberVM = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
memberVM.SetIsVisible(info.IsVisible);
|
|
|
}
|
|
|
|
|
|
private void ProcessUpdateStructureMemberName(StructureMemberName_ChangeInfo info)
|
|
|
{
|
|
|
- var memberVM = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
+ StructureMemberViewModel? memberVM = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
memberVM.SetName(info.Name);
|
|
|
}
|
|
|
|
|
|
private void ProcessUpdateStructureMemberOpacity(StructureMemberOpacity_ChangeInfo info)
|
|
|
{
|
|
|
- var memberVM = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
+ StructureMemberViewModel? memberVM = helper.StructureHelper.FindOrThrow(info.GuidValue);
|
|
|
memberVM.SetOpacity(info.Opacity);
|
|
|
}
|
|
|
|
|
|
private void ProcessMoveStructureMember(MoveStructureMember_ChangeInfo info)
|
|
|
{
|
|
|
- var (memberVM, curFolderVM) = helper.StructureHelper.FindChildAndParentOrThrow(info.GuidValue);
|
|
|
+ (StructureMemberViewModel memberVM, FolderViewModel curFolderVM) = helper.StructureHelper.FindChildAndParentOrThrow(info.GuidValue);
|
|
|
|
|
|
- var targetFolderVM = (FolderViewModel)helper.StructureHelper.FindOrThrow(info.ParentToGuid);
|
|
|
+ FolderViewModel? targetFolderVM = (FolderViewModel)helper.StructureHelper.FindOrThrow(info.ParentToGuid);
|
|
|
|
|
|
curFolderVM.Children.Remove(memberVM);
|
|
|
targetFolderVM.Children.Insert(info.NewIndex, memberVM);
|