binded BitmapScalingMode

This commit is contained in:
iAmAsval 2021-06-09 00:06:05 +02:00
parent 93866684f0
commit 2bde70ff2d
5 changed files with 24 additions and 5 deletions

@ -1 +1 @@
Subproject commit 6399d6a7c7b5cb07e2ebfee1687d56880d494aef
Subproject commit 9b8b311b7b253b4f54260e819596910c80008240

View File

@ -6,6 +6,7 @@ using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using AdonisUI.Controls;
using CUE4Parse.Encryption.Aes;
@ -19,6 +20,7 @@ using CUE4Parse.UE4.Assets.Exports.Sound;
using CUE4Parse.UE4.Assets.Exports.Texture;
using CUE4Parse.UE4.Assets.Exports.Wwise;
using CUE4Parse.UE4.Localization;
using CUE4Parse.UE4.Objects.UObject;
using CUE4Parse.UE4.Oodle.Objects;
using CUE4Parse.UE4.Wwise;
using CUE4Parse_Conversion.Materials;
@ -540,7 +542,13 @@ namespace FModel.ViewModels
{
case UTexture2D texture:
{
SetImage(texture.Decode());
var bNearest = false;
if (texture.TryGetValue(out FName trigger, "LODGroup", "Filter") && !trigger.IsNone)
bNearest = trigger.Text.EndsWith("TEXTUREGROUP_Pixels2D", StringComparison.OrdinalIgnoreCase) ||
trigger.Text.EndsWith("TF_Nearest", StringComparison.OrdinalIgnoreCase);
TabControl.SelectedTab.ImageRender = bNearest ? BitmapScalingMode.NearestNeighbor : BitmapScalingMode.Linear;
SetImage(texture.Decode(bNearest));
return true;
}
case UAkMediaAssetData:

View File

@ -1,4 +1,5 @@
using System.Windows;
using System.Windows.Media;
using AdonisUI.Controls;
using FModel.Framework;
using FModel.Views.Resources.Controls;
@ -21,14 +22,16 @@ namespace FModel.ViewModels.Commands
{
Helper.OpenWindow<AdonisWindow>(contextViewModel.Header + " (Image)", () =>
{
new ImagePopout
var popout = new ImagePopout
{
Title = contextViewModel.Header + " (Image)",
Width = contextViewModel.Image.Width,
Height = contextViewModel.Image.Height,
WindowState = contextViewModel.Image.Height > 1000 ? WindowState.Maximized : WindowState.Normal,
ImageCtrl = {Source = contextViewModel.Image}
}.Show();
};
RenderOptions.SetBitmapScalingMode(popout.ImageCtrl, contextViewModel.ImageRender);
popout.Show();
});
break;
}

View File

@ -5,6 +5,7 @@ using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using FModel.Extensions;
using FModel.Settings;
@ -125,6 +126,13 @@ namespace FModel.ViewModels
}
}
private BitmapScalingMode _imageRender = BitmapScalingMode.Linear;
public BitmapScalingMode ImageRender
{
get => _imageRender;
set => SetProperty(ref _imageRender, value);
}
public bool HasImage => Image != null;
public bool ShouldScroll => !string.IsNullOrEmpty(ScrollTrigger);

View File

@ -647,7 +647,7 @@
<controls:AvalonEditor x:Name="DynamicArea" Grid.Column="0" Grid.ColumnSpan="3" DataContext="{Binding SelectedItem, ElementName=TabControlName}" />
<Image Grid.Column="3" Grid.ColumnSpan="2" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="Uniform"
Visibility="{Binding SelectedItem.HasImage, ElementName=TabControlName, Converter={StaticResource BoolToVisibilityConverter}}"
Source="{Binding SelectedItem.Image, ElementName=TabControlName}">
Source="{Binding SelectedItem.Image, ElementName=TabControlName}" RenderOptions.BitmapScalingMode="{Binding SelectedItem.ImageRender, ElementName=TabControlName}">
<Image.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding SelectedItem.ImageCommand, ElementName=TabControlName}" CommandParameter="Open"/>
</Image.InputBindings>