Add ComparisonData to imgui_memory_editor

This commit is contained in:
scawful
2024-03-11 06:51:17 -04:00
parent 02f7c695d2
commit 66a6e41ec0

View File

@@ -104,6 +104,13 @@ struct MemoryEditor
int PreviewEndianess;
ImGuiDataType PreviewDataType;
// Expanded
ImU8* ComparisonData;
void SetComparisonData(void* data) {
ComparisonData = (ImU8*)data;
}
MemoryEditor()
{
// Settings
@@ -300,6 +307,24 @@ struct MemoryEditor
draw_list->AddRectFilled(pos, ImVec2(pos.x + highlight_width, pos.y + s.LineHeight), HighlightColor);
}
bool comparison_rom_diff = false;
if (ComparisonData != NULL) {
int a = mem_data[addr];
int b = ComparisonData[addr];
if (a != b) {
ImVec2 pos = ImGui::GetCursorScreenPos();
float highlight_width = s.GlyphWidth * 2;
bool is_next_byte_highlighted = (addr + 1 < mem_size) && ((HighlightMax != (size_t)-1 && addr + 1 < HighlightMax) || (HighlightFn && HighlightFn(mem_data, addr + 1)));
if (is_next_byte_highlighted || (n + 1 == Cols))
{
highlight_width = s.HexCellWidth;
if (OptMidColsCount > 0 && n > 0 && (n + 1) < Cols && ((n + 1) % OptMidColsCount) == 0)
highlight_width += s.SpacingBetweenMidCols;
}
draw_list->AddRectFilled(pos, ImVec2(pos.x + highlight_width, pos.y + s.LineHeight), IM_COL32(255, 0, 0, 50));
}
}
if (DataEditingAddr == addr)
{
// Display text input on current byte