Merge branch 'main' of https://github.com/Penumbra-Sync/client
This commit is contained in:
		| @@ -5,6 +5,8 @@ using MareSynchronos.Services.Mediator; | ||||
| using MareSynchronos.UI; | ||||
| using MareSynchronos.Utils; | ||||
| using Microsoft.Extensions.Logging; | ||||
| using Lumina.Data; | ||||
| using Lumina.Data.Files; | ||||
|  | ||||
| namespace MareSynchronos.Services; | ||||
|  | ||||
| @@ -176,5 +178,30 @@ public sealed class CharacterAnalyzer : MediatorSubscriberBase, IDisposable | ||||
|         } | ||||
|         public long OriginalSize { get; private set; } = OriginalSize; | ||||
|         public long CompressedSize { get; private set; } = CompressedSize; | ||||
|  | ||||
|         public Lazy<string> Format = new(() => | ||||
|         { | ||||
|             switch (FileType) | ||||
|             { | ||||
|                 case "tex": | ||||
|                     { | ||||
|                         try | ||||
|                         { | ||||
|                             using var stream = new FileStream(FilePaths[0], FileMode.Open, FileAccess.Read, FileShare.Read); | ||||
|                             using var reader = new BinaryReader(stream); | ||||
|                             reader.BaseStream.Position = 4; | ||||
|                             var format = (TexFile.TextureFormat)reader.ReadInt32(); | ||||
|                             return format.ToString(); | ||||
|                         } | ||||
|                         catch | ||||
|                         { | ||||
|                             return "Unknown"; | ||||
|                         } | ||||
|                         | ||||
|                     } | ||||
|                 default: | ||||
|                     return string.Empty; | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -240,7 +240,7 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase | ||||
|  | ||||
|     private void DrawTable(IGrouping<string, CharacterAnalyzer.FileDataEntry> fileGroup) | ||||
|     { | ||||
|         using var table = ImRaii.Table("Analysis", 5, ImGuiTableFlags.Sortable | ImGuiTableFlags.RowBg | ImGuiTableFlags.ScrollY | ImGuiTableFlags.SizingFixedFit, | ||||
|         using var table = ImRaii.Table("Analysis", fileGroup.Key == "tex" ? 6 : 5, ImGuiTableFlags.Sortable | ImGuiTableFlags.RowBg | ImGuiTableFlags.ScrollY | ImGuiTableFlags.SizingFixedFit, | ||||
| new Vector2(0, 300)); | ||||
|         if (!table.Success) return; | ||||
|         ImGui.TableSetupColumn("Hash"); | ||||
| @@ -248,6 +248,7 @@ new Vector2(0, 300)); | ||||
|         ImGui.TableSetupColumn("Gamepaths"); | ||||
|         ImGui.TableSetupColumn("Original Size"); | ||||
|         ImGui.TableSetupColumn("Compressed Size"); | ||||
|         if (fileGroup.Key == "tex") ImGui.TableSetupColumn("Format"); | ||||
|         ImGui.TableSetupScrollFreeze(0, 1); | ||||
|         ImGui.TableHeadersRow(); | ||||
|  | ||||
| @@ -276,6 +277,10 @@ new Vector2(0, 300)); | ||||
|                 _cachedAnalysis![_selectedObjectTab] = _cachedAnalysis[_selectedObjectTab].OrderBy(k => k.Value.CompressedSize).ToDictionary(d => d.Key, d => d.Value, StringComparer.Ordinal); | ||||
|             if (idx == 4 && sortSpecs.Specs.SortDirection == ImGuiSortDirection.Descending) | ||||
|                 _cachedAnalysis![_selectedObjectTab] = _cachedAnalysis[_selectedObjectTab].OrderByDescending(k => k.Value.CompressedSize).ToDictionary(d => d.Key, d => d.Value, StringComparer.Ordinal); | ||||
|             if (fileGroup.Key == "tex" && idx == 5 && sortSpecs.Specs.SortDirection == ImGuiSortDirection.Ascending) | ||||
|                 _cachedAnalysis![_selectedObjectTab] = _cachedAnalysis[_selectedObjectTab].OrderBy(k => k.Value.Format).ToDictionary(d => d.Key, d => d.Value, StringComparer.Ordinal); | ||||
|             if (fileGroup.Key == "tex" && idx == 5 && sortSpecs.Specs.SortDirection == ImGuiSortDirection.Descending) | ||||
|                 _cachedAnalysis![_selectedObjectTab] = _cachedAnalysis[_selectedObjectTab].OrderByDescending(k => k.Value.Format).ToDictionary(d => d.Key, d => d.Value, StringComparer.Ordinal); | ||||
|  | ||||
|             sortSpecs.SpecsDirty = false; | ||||
|         } | ||||
| @@ -309,6 +314,12 @@ new Vector2(0, 300)); | ||||
|             ImGui.TableNextColumn(); | ||||
|             ImGui.TextUnformatted(UiSharedService.ByteToString(item.CompressedSize)); | ||||
|             if (ImGui.IsItemClicked()) _selectedHash = item.Hash; | ||||
|             if (fileGroup.Key == "tex") | ||||
|             { | ||||
|                 ImGui.TableNextColumn(); | ||||
|                 ImGui.TextUnformatted(item.Format.Value); | ||||
|                 if (ImGui.IsItemClicked()) _selectedHash = item.Hash; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 rootdarkarchon
					rootdarkarchon