diff --git a/CUE4Parse b/CUE4Parse index 906641f9..82c1f94f 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit 906641f95baaa7e269d96851c6b17e5fb8059abe +Subproject commit 82c1f94f607446d02f8b6f559e6fd0124642259c diff --git a/FModel/Creator/Bases/BB/BaseBreakersIcon.cs b/FModel/Creator/Bases/BB/BaseBreakersIcon.cs index d4e66128..fc0d5312 100644 --- a/FModel/Creator/Bases/BB/BaseBreakersIcon.cs +++ b/FModel/Creator/Bases/BB/BaseBreakersIcon.cs @@ -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; } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/FN/BaseBundle.cs b/FModel/Creator/Bases/FN/BaseBundle.cs index 7437640b..8fa6effc 100644 --- a/FModel/Creator/Bases/FN/BaseBundle.cs +++ b/FModel/Creator/Bases/FN/BaseBundle.cs @@ -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 } } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/FN/BaseCommunity.cs b/FModel/Creator/Bases/FN/BaseCommunity.cs index 0ae9ceb3..3533d81e 100644 --- a/FModel/Creator/Bases/FN/BaseCommunity.cs +++ b/FModel/Creator/Bases/FN/BaseCommunity.cs @@ -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) diff --git a/FModel/Creator/Bases/FN/BaseIcon.cs b/FModel/Creator/Bases/FN/BaseIcon.cs index 61114b2b..a24cd99e 100644 --- a/FModel/Creator/Bases/FN/BaseIcon.cs +++ b/FModel/Creator/Bases/FN/BaseIcon.cs @@ -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; } diff --git a/FModel/Creator/Bases/FN/BaseIconStats.cs b/FModel/Creator/Bases/FN/BaseIconStats.cs index 9a2e1d1e..96dac356 100644 --- a/FModel/Creator/Bases/FN/BaseIconStats.cs +++ b/FModel/Creator/Bases/FN/BaseIconStats.cs @@ -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) diff --git a/FModel/Creator/Bases/FN/BaseItemAccessToken.cs b/FModel/Creator/Bases/FN/BaseItemAccessToken.cs index deb47ba0..ea45fb69 100644 --- a/FModel/Creator/Bases/FN/BaseItemAccessToken.cs +++ b/FModel/Creator/Bases/FN/BaseItemAccessToken.cs @@ -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); } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/FN/BaseMaterialInstance.cs b/FModel/Creator/Bases/FN/BaseMaterialInstance.cs index 8de7f501..93e48b64 100644 --- a/FModel/Creator/Bases/FN/BaseMaterialInstance.cs +++ b/FModel/Creator/Bases/FN/BaseMaterialInstance.cs @@ -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; } } } diff --git a/FModel/Creator/Bases/FN/BaseMtxOffer.cs b/FModel/Creator/Bases/FN/BaseMtxOffer.cs index 248d48c5..14432b4b 100644 --- a/FModel/Creator/Bases/FN/BaseMtxOffer.cs +++ b/FModel/Creator/Bases/FN/BaseMtxOffer.cs @@ -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; } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/FN/BaseOfferDisplayData.cs b/FModel/Creator/Bases/FN/BaseOfferDisplayData.cs index d750ba67..e82cb0f0 100644 --- a/FModel/Creator/Bases/FN/BaseOfferDisplayData.cs +++ b/FModel/Creator/Bases/FN/BaseOfferDisplayData.cs @@ -7,7 +7,7 @@ namespace FModel.Creator.Bases.FN { public class BaseOfferDisplayData : UCreator { - private List _offerImages; + private List _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(); + _offerImages = new List(); 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; } } } diff --git a/FModel/Creator/Bases/FN/BasePlaylist.cs b/FModel/Creator/Bases/FN/BasePlaylist.cs index 715316d6..482b6707 100644 --- a/FModel/Creator/Bases/FN/BasePlaylist.cs +++ b/FModel/Creator/Bases/FN/BasePlaylist.cs @@ -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); } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/FN/BaseQuest.cs b/FModel/Creator/Bases/FN/BaseQuest.cs index b194dc37..442a4522 100644 --- a/FModel/Creator/Bases/FN/BaseQuest.cs +++ b/FModel/Creator/Bases/FN/BaseQuest.cs @@ -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) diff --git a/FModel/Creator/Bases/FN/BaseSeason.cs b/FModel/Creator/Bases/FN/BaseSeason.cs index a4f9a3cd..1ede8372 100644 --- a/FModel/Creator/Bases/FN/BaseSeason.cs +++ b/FModel/Creator/Bases/FN/BaseSeason.cs @@ -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 } } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/FN/BaseSeries.cs b/FModel/Creator/Bases/FN/BaseSeries.cs index 6f1fd619..d8bc1da4 100644 --- a/FModel/Creator/Bases/FN/BaseSeries.cs +++ b/FModel/Creator/Bases/FN/BaseSeries.cs @@ -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; } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/FN/BaseTandem.cs b/FModel/Creator/Bases/FN/BaseTandem.cs index 14d6291c..5175be43 100644 --- a/FModel/Creator/Bases/FN/BaseTandem.cs +++ b/FModel/Creator/Bases/FN/BaseTandem.cs @@ -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") }; diff --git a/FModel/Creator/Bases/FN/BaseUserControl.cs b/FModel/Creator/Bases/FN/BaseUserControl.cs index c4f12217..5ab76c19 100644 --- a/FModel/Creator/Bases/FN/BaseUserControl.cs +++ b/FModel/Creator/Bases/FN/BaseUserControl.cs @@ -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; } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/SB/BaseDivision.cs b/FModel/Creator/Bases/SB/BaseDivision.cs index 105e0204..d480bb4a 100644 --- a/FModel/Creator/Bases/SB/BaseDivision.cs +++ b/FModel/Creator/Bases/SB/BaseDivision.cs @@ -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; } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/SB/BaseGameModeInfo.cs b/FModel/Creator/Bases/SB/BaseGameModeInfo.cs index 9737497e..e7d6f2e6 100644 --- a/FModel/Creator/Bases/SB/BaseGameModeInfo.cs +++ b/FModel/Creator/Bases/SB/BaseGameModeInfo.cs @@ -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); } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/SB/BaseLeague.cs b/FModel/Creator/Bases/SB/BaseLeague.cs index b10811e8..1e8da837 100644 --- a/FModel/Creator/Bases/SB/BaseLeague.cs +++ b/FModel/Creator/Bases/SB/BaseLeague.cs @@ -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; } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/SB/BaseSpellIcon.cs b/FModel/Creator/Bases/SB/BaseSpellIcon.cs index cc37fcad..7cbc7797 100644 --- a/FModel/Creator/Bases/SB/BaseSpellIcon.cs +++ b/FModel/Creator/Bases/SB/BaseSpellIcon.cs @@ -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 } } } -} \ No newline at end of file +} diff --git a/FModel/Creator/Bases/UCreator.cs b/FModel/Creator/Bases/UCreator.cs index fb4e56ef..c2ae464f 100644 --- a/FModel/Creator/Bases/UCreator.cs +++ b/FModel/Creator/Bases/UCreator.cs @@ -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) { diff --git a/FModel/Creator/Utils.cs b/FModel/Creator/Utils.cs index a4975b28..966d50c4 100644 --- a/FModel/Creator/Utils.cs +++ b/FModel/Creator/Utils.cs @@ -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) diff --git a/FModel/ViewModels/CUE4ParseViewModel.cs b/FModel/ViewModels/CUE4ParseViewModel.cs index 2fb70140..05129e35 100644 --- a/FModel/ViewModels/CUE4ParseViewModel.cs +++ b/FModel/ViewModels/CUE4ParseViewModel.cs @@ -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; } diff --git a/FModel/ViewModels/MapViewerViewModel.cs b/FModel/ViewModels/MapViewerViewModel.cs index e36b0baa..07f5f36a 100644 --- a/FModel/ViewModels/MapViewerViewModel.cs +++ b/FModel/ViewModels/MapViewerViewModel.cs @@ -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; diff --git a/FModel/ViewModels/ModelViewerViewModel.cs b/FModel/ViewModels/ModelViewerViewModel.cs index b98d4827..bb02c1ad 100644 --- a/FModel/ViewModels/ModelViewerViewModel.cs +++ b/FModel/ViewModels/ModelViewerViewModel.cs @@ -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 diff --git a/FModel/ViewModels/TabControlViewModel.cs b/FModel/ViewModels/TabControlViewModel.cs index 26570a3a..1f939d6d 100644 --- a/FModel/ViewModels/TabControlViewModel.cs +++ b/FModel/ViewModels/TabControlViewModel.cs @@ -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(() => {