fpopov thanks

This commit is contained in:
bird_egop
2026-05-09 20:36:43 +03:00
parent d73a6dde70
commit eb458ad9a8
43 changed files with 1562 additions and 1233 deletions
+10 -28
View File
@@ -70,7 +70,7 @@ public class NResExplorerPanel : IImGuiPanel
ImGui.SameLine();
ImGui.Text(_viewModel.Archive.Header.TotalFileLengthBytes.ToString());
if (ImGui.BeginTable("content", 12,
if (ImGui.BeginTable("content", 9,
ImGuiTableFlags.Borders | ImGuiTableFlags.SizingFixedFit | ImGuiTableFlags.NoHostExtendX))
{
ImGui.TableSetupColumn("Тип файла");
@@ -79,12 +79,9 @@ public class NResExplorerPanel : IImGuiPanel
ImGui.TableSetupColumn("Длина файла в байтах");
ImGui.TableSetupColumn("Размер элемента");
ImGui.TableSetupColumn("Имя файла");
ImGui.TableSetupColumn("Magic3");
ImGui.TableSetupColumn("Magic4");
ImGui.TableSetupColumn("Magic5");
ImGui.TableSetupColumn("Magic6");
ImGui.TableSetupColumn("Смещение в байтах");
ImGui.TableSetupColumn("Индекс в файле");
ImGui.TableSetupColumn("SortIndex");
ImGui.TableSetupColumn("DirectoryIndex");
ImGui.TableHeadersRow();
@@ -124,26 +121,6 @@ public class NResExplorerPanel : IImGuiPanel
ImGui.TableNextColumn();
ImGui.Text(_viewModel.Archive.Files[i].FileName);
ImGui.TableNextColumn();
ImGui.Text(
_viewModel.Archive.Files[i]
.Magic3.ToString()
);
ImGui.TableNextColumn();
ImGui.Text(
_viewModel.Archive.Files[i]
.Magic4.ToString()
);
ImGui.TableNextColumn();
ImGui.Text(
_viewModel.Archive.Files[i]
.Magic5.ToString()
);
ImGui.TableNextColumn();
ImGui.Text(
_viewModel.Archive.Files[i]
.Magic6.ToString()
);
ImGui.TableNextColumn();
ImGui.Text(
_viewModel.Archive.Files[i]
.OffsetInFile.ToString()
@@ -151,7 +128,12 @@ public class NResExplorerPanel : IImGuiPanel
ImGui.TableNextColumn();
ImGui.Text(
_viewModel.Archive.Files[i]
.Index.ToString()
.SortIndex.ToString()
);
ImGui.TableNextColumn();
ImGui.Text(
_viewModel.Archive.Files[i]
.DirectoryIndex.ToString()
);
}
@@ -309,4 +291,4 @@ public class NResExplorerPanel : IImGuiPanel
ImGui.End();
}
}
}
}
+37 -12
View File
@@ -166,6 +166,43 @@ public class TexmExplorer : IImGuiPanel
}
ImGui.Image((IntPtr) glTexture.GlTexture, imageSize);
var imageHovered = ImGui.IsItemHovered();
if (imageHovered && index < _viewModel.RgbaBytesByMipmap.Count)
{
var mousePos = ImGui.GetMousePos();
var scale = _viewModel.DoubleSize ? 2.0f : 1.0f;
var relativePos = (mousePos - screenPos) / scale;
var pixelX = (int)MathF.Floor(relativePos.X);
var pixelY = (int)MathF.Floor(relativePos.Y);
pixelX = (int)Math.Clamp(pixelX, 0, glTexture.Width - 1);
pixelY = (int)Math.Clamp(pixelY, 0, glTexture.Height - 1);
var rgbaBytes = _viewModel.RgbaBytesByMipmap[index];
var byteIndex = (pixelY * glTexture.Width + pixelX) * 4;
if (byteIndex + 3 < rgbaBytes.Length)
{
var r = rgbaBytes[byteIndex + 0];
var g = rgbaBytes[byteIndex + 1];
var b = rgbaBytes[byteIndex + 2];
var a = rgbaBytes[byteIndex + 3];
ImGui.BeginTooltip();
ImGui.Text($"Mipmap: {index}");
ImGui.Text($"Pixel: X={pixelX}, Y={pixelY}");
ImGui.Text($"RGBA: {r}, {g}, {b}, {a}");
ImGui.Text($"HEX: #{r:X2}{g:X2}{b:X2}{a:X2}");
ImGui.EndTooltip();
}
}
ImGui.SameLine();
if (_viewModel.ViewPages && _viewModel.TexmFile.Pages is not null)
@@ -180,18 +217,6 @@ public class TexmExplorer : IImGuiPanel
);
}
}
if (ImGui.IsItemHovered())
{
var mousePos = ImGui.GetMousePos();
var relativePos = (mousePos - screenPos) / (_viewModel.DoubleSize
? 2
: 1);
ImGui.Text("Hovering over: ");
ImGui.SameLine();
ImGui.Text(relativePos.ToString());
}
}
}
}