skbitmap migration

This commit is contained in:
Not Officer 2022-01-14 17:08:47 +01:00
parent 10de896db9
commit 082917d3cb
26 changed files with 110 additions and 101 deletions

@ -1 +1 @@
Subproject commit 906641f95baaa7e269d96851c6b17e5fb8059abe
Subproject commit 82c1f94f607446d02f8b6f559e6fd0124642259c

View File

@ -1,4 +1,4 @@
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Objects.Core.i18N;
using CUE4Parse.UE4.Objects.UObject;
using FModel.Creator.Bases.FN;
@ -26,9 +26,9 @@ namespace FModel.Creator.Bases.BB
Description = description.Text;
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
DrawBackground(c);
@ -37,7 +37,7 @@ namespace FModel.Creator.Bases.BB
DrawDisplayName(c);
DrawDescription(c);
return SKImage.FromBitmap(ret);
return ret;
}
}
}
}

View File

@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Objects;
using CUE4Parse.UE4.Objects.Core.i18N;
@ -79,16 +79,16 @@ namespace FModel.Creator.Bases.FN
Height += 256 * _quests.Count;
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
using var c = new SKCanvas(ret);
DrawHeader(c);
DrawDisplayName(c);
DrawQuests(c);
return SKImage.FromBitmap(ret);
return ret;
}
private readonly SKPaint _headerPaint = new()
@ -138,4 +138,4 @@ namespace FModel.Creator.Bases.FN
}
}
}
}
}

View File

@ -1,4 +1,4 @@
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Objects.GameplayTags;
using CUE4Parse.UE4.Objects.UObject;
using CUE4Parse.UE4.Versions;
@ -46,9 +46,9 @@ namespace FModel.Creator.Bases.FN
Description = Description.ToUpper();
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
if (_design == null)
@ -69,7 +69,7 @@ namespace FModel.Creator.Bases.FN
DrawUserFacingFlags(c, _design.GameplayTags.DrawCustomOnly);
}
return SKImage.FromBitmap(ret);
return ret;
}
private void CheckGameplayTags(FGameplayTagContainer gameplayTags)

View File

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
@ -112,14 +112,14 @@ namespace FModel.Creator.Bases.FN
}
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
Draw(c);
return SKImage.FromBitmap(ret);
return ret;
}
private void GetSeries(FPackageIndex s)
@ -133,7 +133,7 @@ namespace FModel.Creator.Bases.FN
{
if (uObject is UTexture2D texture2D)
{
SeriesBackground = SKBitmap.Decode(texture2D.Decode()?.Encode());
SeriesBackground = texture2D.Decode();
return;
}

View File

@ -125,16 +125,16 @@ namespace FModel.Creator.Bases.FN
Height += 50 * _statistics.Count;
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
using var c = new SKCanvas(ret);
DrawHeader(c);
DrawDisplayName(c);
DrawStatistics(c);
return SKImage.FromBitmap(ret);
return ret;
}
private bool TryGetCurveTableStat(FStructFallback property, out float statValue)

View File

@ -38,9 +38,9 @@ namespace FModel.Creator.Bases.FN
if (Object.TryGetValue(out FText unlockDescription, "UnlockDescription")) _unlockedDescription = unlockDescription.Text;
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
switch (Style)
@ -61,7 +61,7 @@ namespace FModel.Creator.Bases.FN
break;
}
return SKImage.FromBitmap(ret);
return ret;
}
private void DrawInformation(SKCanvas c)
@ -97,4 +97,4 @@ namespace FModel.Creator.Bases.FN
c.DrawBitmap(_icon.Preview ?? _icon.DefaultPreview, new SKRect(left - h / 2, topBase, left + h / 2, Width - _icon.Margin), ImagePaint);
}
}
}
}

View File

@ -65,9 +65,9 @@ namespace FModel.Creator.Bases.FN
}
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
switch (Style)
@ -81,7 +81,7 @@ namespace FModel.Creator.Bases.FN
break;
}
return SKImage.FromBitmap(ret);
return ret;
}
}
}

View File

@ -1,4 +1,4 @@
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Objects;
using CUE4Parse.UE4.Objects.Core.i18N;
using CUE4Parse.UE4.Objects.Core.Math;
@ -56,7 +56,7 @@ namespace FModel.Creator.Bases.FN
Description = Utils.RemoveHtmlTags(Description);
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
@ -79,7 +79,7 @@ namespace FModel.Creator.Bases.FN
break;
}
return SKImage.FromBitmap(ret);
return ret;
}
}
}
}

View File

@ -7,7 +7,7 @@ namespace FModel.Creator.Bases.FN
{
public class BaseOfferDisplayData : UCreator
{
private List<SKImage> _offerImages;
private List<SKBitmap> _offerImages;
public BaseOfferDisplayData(UObject uObject, EIconStyle style) : base(uObject, style)
{
@ -21,7 +21,7 @@ namespace FModel.Creator.Bases.FN
if (!Object.TryGetValue(out UMaterialInterface[] presentations, "Presentations"))
return;
_offerImages = new List<SKImage>();
_offerImages = new List<SKBitmap>();
foreach (var p in presentations)
{
var offerImage = new BaseMaterialInstance(p, Style);
@ -30,7 +30,7 @@ namespace FModel.Creator.Bases.FN
}
}
public override SKImage Draw()
public override SKBitmap Draw()
{
int imageOrder;
@ -50,8 +50,8 @@ namespace FModel.Creator.Bases.FN
Height *= 512;
using var bitmap = new SKBitmap(Width, Height);
using var canvas = new SKCanvas(bitmap);
var ret = new SKBitmap(Width, Height);
using var canvas = new SKCanvas(ret);
var point = new SKPoint(0, 0);
for (int i = 0, placement = 0; i < _offerImages.Count; i++)
@ -63,11 +63,11 @@ namespace FModel.Creator.Bases.FN
}
point.X = 512 * placement;
canvas.DrawImage(_offerImages[i], point);
canvas.DrawBitmap(_offerImages[i], point);
placement++;
}
return SKImage.FromBitmap(bitmap);
return ret;
}
}
}

View File

@ -1,4 +1,4 @@
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports.Texture;
using CUE4Parse.UE4.Objects.Core.i18N;
using CUE4Parse.UE4.Objects.UObject;
@ -43,9 +43,9 @@ namespace FModel.Creator.Bases.FN
Height = Preview.Height;
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
switch (Style)
@ -66,7 +66,7 @@ namespace FModel.Creator.Bases.FN
break;
}
return SKImage.FromBitmap(ret);
return ret;
}
private void DrawMissionIcon(SKCanvas c)
@ -75,4 +75,4 @@ namespace FModel.Creator.Bases.FN
c.DrawBitmap(_missionIcon, new SKPoint(5, 5), ImagePaint);
}
}
}
}

View File

@ -1,4 +1,4 @@
using System;
using System;
using System.Linq;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports.Engine;
@ -161,14 +161,14 @@ namespace FModel.Creator.Bases.FN
DrawTexts(c, y);
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
using var c = new SKCanvas(ret);
DrawQuest(c, 0);
return SKImage.FromBitmap(ret);
return ret;
}
private string ReformatString(string s, string completionCount, bool isAll)

View File

@ -1,4 +1,4 @@
using System;
using System;
using System.Linq;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Objects;
@ -96,16 +96,16 @@ namespace FModel.Creator.Bases.FN
Height += 100 * _bookXpSchedule.Sum(x => x.RewardEntryList.Length) / _bookXpSchedule.Length;
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
using var c = new SKCanvas(ret);
DrawHeader(c);
_firstWinReward?.DrawSeasonWin(c, _headerHeight);
DrawBookSchedule(c);
return SKImage.FromBitmap(ret);
return ret;
}
private const int _DEFAULT_AREA_SIZE = 80;
@ -162,4 +162,4 @@ namespace FModel.Creator.Bases.FN
}
}
}
}
}

View File

@ -1,4 +1,4 @@
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports;
using SkiaSharp;
namespace FModel.Creator.Bases.FN
@ -14,14 +14,14 @@ namespace FModel.Creator.Bases.FN
GetSeries(Object);
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
DrawBackground(c);
return SKImage.FromBitmap(ret);
return ret;
}
}
}
}

View File

@ -50,9 +50,9 @@ namespace FModel.Creator.Bases.FN
_additionalDescription = addDesc.Text;
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
using var c = new SKCanvas(ret);
DrawBackground(c);
@ -64,7 +64,7 @@ namespace FModel.Creator.Bases.FN
DrawGeneralDescription(c);
DrawAdditionalDescription(c);
return SKImage.FromBitmap(ret);
return ret;
}
private readonly SKPaint _panelPaint = new() { IsAntialias = true, FilterQuality = SKFilterQuality.High, Color = SKColor.Parse("#0045C7") };

View File

@ -111,15 +111,15 @@ namespace FModel.Creator.Bases.FN
Height += 35 * _optionValues.Count;
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
using var c = new SKCanvas(ret);
DrawBackground(c);
DrawInformation(c);
return SKImage.FromBitmap(ret);
return ret;
}
private new void DrawBackground(SKCanvas c)
@ -190,4 +190,4 @@ namespace FModel.Creator.Bases.FN
top += _HEIGHT + _SPACE;
}
}
}
}

View File

@ -1,4 +1,4 @@
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Objects.Core.i18N;
using CUE4Parse.UE4.Objects.Core.Math;
using CUE4Parse.UE4.Objects.UObject;
@ -32,9 +32,9 @@ namespace FModel.Creator.Bases.SB
DisplayName = displayName.Text;
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
DrawBackground(c);
@ -42,7 +42,7 @@ namespace FModel.Creator.Bases.SB
DrawTextBackground(c);
DrawDisplayName(c);
return SKImage.FromBitmap(ret);
return ret;
}
}
}
}

View File

@ -28,9 +28,9 @@ namespace FModel.Creator.Bases.SB
_icon = Utils.GetBitmap(icon).Resize(25);
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
DrawPreview(c);
@ -38,7 +38,7 @@ namespace FModel.Creator.Bases.SB
DrawDisplayName(c);
DrawIcon(c);
return SKImage.FromBitmap(ret);
return ret;
}
private void DrawIcon(SKCanvas c)
@ -47,4 +47,4 @@ namespace FModel.Creator.Bases.SB
c.DrawBitmap(_icon, new SKPoint(5, 5), ImagePaint);
}
}
}
}

View File

@ -36,9 +36,9 @@ namespace FModel.Creator.Bases.SB
DisplayName = displayName.Text;
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
DrawBackground(c);
@ -49,7 +49,7 @@ namespace FModel.Creator.Bases.SB
DrawToBottom(c, SKTextAlign.Left, $"PromotionXP: {_promotionXp}");
DrawToBottom(c, SKTextAlign.Right, $"XPLostPerMatch: {_xpLostPerMatch}");
return SKImage.FromBitmap(ret);
return ret;
}
}
}
}

View File

@ -47,9 +47,9 @@ namespace FModel.Creator.Bases.SB
_seriesBackground2 = Utils.GetBitmap("g3/Content/UI/Textures/assets/store/ItemBGStatic_UIT.ItemBGStatic_UIT");
}
public override SKImage Draw()
public override SKBitmap Draw()
{
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var c = new SKCanvas(ret);
DrawBackgrounds(c);
@ -59,7 +59,7 @@ namespace FModel.Creator.Bases.SB
DrawDisplayName(c);
DrawDescription(c);
return SKImage.FromBitmap(ret);
return ret;
}
private void DrawBackgrounds(SKCanvas c)
@ -95,4 +95,4 @@ namespace FModel.Creator.Bases.SB
}
}
}
}
}

View File

@ -1,4 +1,4 @@
using System;
using System;
using System.Windows;
using CUE4Parse.UE4.Assets.Exports;
using FModel.Creator.Bases.FN;
@ -23,7 +23,7 @@ namespace FModel.Creator.Bases
public int Height { get; protected set; }
public abstract void ParseForInfo();
public abstract SKImage Draw();
public abstract SKBitmap Draw();
protected UCreator(UObject uObject, EIconStyle style)
{

View File

@ -105,7 +105,7 @@ namespace FModel.Creator
public static SKBitmap GetB64Bitmap(string b64) => SKBitmap.Decode(new MemoryStream(Convert.FromBase64String(b64)) {Position = 0});
public static SKBitmap GetBitmap(FSoftObjectPath softObjectPath) => GetBitmap(softObjectPath.AssetPathName.Text);
public static SKBitmap GetBitmap(string fullPath) => TryLoadObject(fullPath, out UTexture2D texture) ? GetBitmap(texture) : null;
public static SKBitmap GetBitmap(UTexture2D texture) => texture.IsVirtual ? null : SKBitmap.Decode(texture.Decode()?.Encode());
public static SKBitmap GetBitmap(UTexture2D texture) => texture.IsVirtual ? null : texture.Decode();
public static SKBitmap GetBitmap(byte[] data) => SKBitmap.Decode(data);
public static SKBitmap ResizeWithRatio(this SKBitmap me, double width, double height)

View File

@ -607,7 +607,7 @@ namespace FModel.ViewModels
if (Provider.TrySaveAsset(fullPath, out var data))
{
using var stream = new MemoryStream(data) {Position = 0};
TabControl.SelectedTab.AddImage(fileName.SubstringBeforeLast("."), false, SKImage.FromBitmap(SKBitmap.Decode(stream)));
TabControl.SelectedTab.AddImage(fileName.SubstringBeforeLast("."), false, SKBitmap.Decode(stream));
}
break;
}
@ -617,7 +617,15 @@ namespace FModel.ViewModels
{
using var stream = new MemoryStream(data) { Position = 0 };
var svg = new SkiaSharp.Extended.Svg.SKSvg(new SKSize(512, 512));
TabControl.SelectedTab.AddImage(fileName.SubstringBeforeLast("."), false, SKImage.FromPicture(svg.Load(stream), new SKSizeI(512, 512)));
svg.Load(stream);
var bitmap = new SKBitmap(512, 512);
using (var canvas = new SKCanvas(bitmap))
using (var paint = new SKPaint { IsAntialias = true, FilterQuality = SKFilterQuality.Medium })
{
canvas.DrawPicture(svg.Picture, paint);
}
TabControl.SelectedTab.AddImage(fileName.SubstringBeforeLast("."), false, bitmap);
}
break;
}

View File

@ -310,7 +310,8 @@ namespace FModel.ViewModels
private BitmapImage GetImageSource(SKBitmap bitmap)
{
if (bitmap == null) return null;
using var stream = SKImage.FromBitmap(bitmap).Encode().AsStream();
using var data = bitmap.Encode(SKEncodedImageFormat.Png, 100);
using var stream = data.AsStream();
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;

View File

@ -419,12 +419,12 @@ namespace FModel.ViewModels
}
else if (parameters.Diffuse is UTexture2D diffuse)
{
m.AlbedoMap = new TextureModel(diffuse.Decode()?.Encode().AsStream());
m.AlbedoMap = new TextureModel(diffuse.Decode()?.Encode(SKEncodedImageFormat.Png, 100).AsStream());
}
if (parameters.Normal is UTexture2D normal)
{
m.NormalMap = new TextureModel(normal.Decode()?.Encode().AsStream());
m.NormalMap = new TextureModel(normal.Decode()?.Encode(SKEncodedImageFormat.Png, 100).AsStream());
}
if (parameters.Specular is UTexture2D specular)
@ -540,7 +540,7 @@ namespace FModel.ViewModels
if (parameters.HasTopEmissiveTexture && parameters.Emissive is UTexture2D emissive && parameters.EmissiveColor is { A: > 0 } emissiveColor)
{
m.EmissiveColor = new Color4(emissiveColor.R, emissiveColor.G, emissiveColor.B, emissiveColor.A);
m.EmissiveMap = new TextureModel(emissive.Decode()?.Encode().AsStream());
m.EmissiveMap = new TextureModel(emissive.Decode()?.Encode(SKEncodedImageFormat.Png, 100).AsStream());
}
}
else

View File

@ -1,4 +1,4 @@
using System;
using System;
using FModel.Extensions;
using FModel.Framework;
using FModel.Settings;
@ -25,7 +25,7 @@ namespace FModel.ViewModels
public string ExportName { get; }
public byte[] ImageBuffer { get; set; }
public TabImage(string name, bool rnn, SKImage img)
public TabImage(string name, bool rnn, SKBitmap img)
{
ExportName = name;
RenderNearestNeighbor = rnn;
@ -61,11 +61,11 @@ namespace FModel.ViewModels
}
}
private void SetImage(SKImage img)
private void SetImage(SKBitmap bitmap)
{
_img = img;
_bmp = bitmap;
using var data = _img.Encode(NoAlpha ? SKEncodedImageFormat.Jpeg : SKEncodedImageFormat.Png, 100);
using var data = _bmp.Encode(NoAlpha ? SKEncodedImageFormat.Jpeg : SKEncodedImageFormat.Png, 100);
using var stream = new MemoryStream(ImageBuffer = data.ToArray(), false);
var image = new BitmapImage();
image.BeginInit();
@ -76,8 +76,8 @@ namespace FModel.ViewModels
Image = image;
}
private SKImage _img;
private void ResetImage() => SetImage(_img);
private SKBitmap _bmp;
private void ResetImage() => SetImage(_bmp);
}
public class TabItem : ViewModel
@ -223,7 +223,7 @@ namespace FModel.ViewModels
}
public void AddImage(UTexture2D texture) => AddImage(texture.Name, texture.bRenderNearestNeighbor, texture.Decode());
public void AddImage(string name, bool rnn, SKImage img)
public void AddImage(string name, bool rnn, SKBitmap img)
{
Application.Current.Dispatcher.Invoke(() =>
{