diff options
-rw-r--r-- | src/imgui/README | 6 | ||||
-rw-r--r-- | src/imgui/imgui_memory_editor.h | 62 |
2 files changed, 38 insertions, 30 deletions
diff --git a/src/imgui/README b/src/imgui/README index 01419237553..ea05a2cfdde 100644 --- a/src/imgui/README +++ b/src/imgui/README @@ -14,11 +14,11 @@ Date: Fri Feb 15 13:10:22 2019 +0100 There is also a copy of the memory editor (https://github.com/ocornut/imgui_club) at the following commit : -commit 378e32ac92aa120512ee1aeb90522c9214e9b694 +commit e680ad8d6b9278367d0f71a698beb96b70762ed4 Author: omar <[email protected]> -Date: Wed Oct 10 15:20:32 2018 +0200 +Date: Thu May 9 14:11:22 2019 +0200 - Comments (#9) + imgui_memory_editor: Silence compiler warning. (#13) Embedding the library into one's project is main way people seems to work with ImGui. Since this is just for a debugging tool, we're not diff --git a/src/imgui/imgui_memory_editor.h b/src/imgui/imgui_memory_editor.h index 5ee6145288c..531bc27326b 100644 --- a/src/imgui/imgui_memory_editor.h +++ b/src/imgui/imgui_memory_editor.h @@ -38,6 +38,7 @@ // - v0.31: added OptUpperCaseHex option to select lower/upper casing display [@samhocevar] // - v0.32: changed signatures to use void* instead of unsigned char* // - v0.33: added OptShowOptions option to hide all the interactive option setting. +// - v0.34: binary preview now applies endianess setting [@nicolasnoble] // // Todo/Bugs: // - Arrows are being sent to the InputText() about to disappear which for LeftArrow makes the text cursor appear at position 1 for one frame. @@ -49,9 +50,10 @@ #ifdef _MSC_VER #define _PRISizeT "I" -#define snprintf _snprintf +#define ImSnprintf _snprintf #else #define _PRISizeT "z" +#define ImSnprintf snprintf #endif struct MemoryEditor @@ -180,7 +182,7 @@ struct MemoryEditor { s.PosAsciiStart = s.PosHexEnd + s.GlyphWidth * 1; if (OptMidColsCount > 0) - s.PosAsciiStart += ((Cols + OptMidColsCount - 1) / OptMidColsCount) * s.SpacingBetweenMidCols; + s.PosAsciiStart += (float)((Cols + OptMidColsCount - 1) / OptMidColsCount) * s.SpacingBetweenMidCols; s.PosAsciiEnd = s.PosAsciiStart + Cols * s.GlyphWidth; } s.WindowWidth = s.PosAsciiEnd + style.ScrollbarSize + style.WindowPadding.x * 2 + s.GlyphWidth; @@ -287,7 +289,7 @@ struct MemoryEditor { float byte_pos_x = s.PosHexStart + s.HexCellWidth * n; if (OptMidColsCount > 0) - byte_pos_x += (n / OptMidColsCount) * s.SpacingBetweenMidCols; + byte_pos_x += (float)(n / OptMidColsCount) * s.SpacingBetweenMidCols; ImGui::SameLine(byte_pos_x); // Draw highlight @@ -356,7 +358,7 @@ struct MemoryEditor data_write = data_next = true; if (data_editing_addr_next != (size_t)-1) data_write = data_next = false; - int data_input_value; + unsigned int data_input_value = 0; if (data_write && sscanf(DataInputBuf, "%X", &data_input_value) == 1) { if (WriteFn) @@ -605,14 +607,15 @@ struct MemoryEditor IM_ASSERT(width <= 64); size_t out_n = 0; static char out_buf[64 + 8 + 1]; - for (int j = 0, n = width / 8; j < n; ++j) + int n = width / 8; + for (int j = n - 1; j >= 0; --j) { for (int i = 0; i < 8; ++i) out_buf[out_n++] = (buf[j] & (1 << (7 - i))) ? '1' : '0'; out_buf[out_n++] = ' '; } - out_buf[out_n] = 0; IM_ASSERT(out_n < IM_ARRAYSIZE(out_buf)); + out_buf[out_n] = 0; return out_buf; } @@ -629,7 +632,9 @@ struct MemoryEditor if (data_format == DataFormat_Bin) { - snprintf(out_buf, out_buf_size, "%s", FormatBinary(buf, (int)size * 8)); + uint8_t binbuf[8]; + EndianessCopy(binbuf, buf, size); + ImSnprintf(out_buf, out_buf_size, "%s", FormatBinary(binbuf, (int)size * 8)); return; } @@ -640,85 +645,88 @@ struct MemoryEditor { int8_t int8 = 0; EndianessCopy(&int8, buf, size); - if (data_format == DataFormat_Dec) { snprintf(out_buf, out_buf_size, "%hhd", int8); return; } - if (data_format == DataFormat_Hex) { snprintf(out_buf, out_buf_size, "0x%02x", int8 & 0xFF); return; } + if (data_format == DataFormat_Dec) { ImSnprintf(out_buf, out_buf_size, "%hhd", int8); return; } + if (data_format == DataFormat_Hex) { ImSnprintf(out_buf, out_buf_size, "0x%02x", int8 & 0xFF); return; } break; } case DataType_U8: { uint8_t uint8 = 0; EndianessCopy(&uint8, buf, size); - if (data_format == DataFormat_Dec) { snprintf(out_buf, out_buf_size, "%hhu", uint8); return; } - if (data_format == DataFormat_Hex) { snprintf(out_buf, out_buf_size, "0x%02x", uint8 & 0XFF); return; } + if (data_format == DataFormat_Dec) { ImSnprintf(out_buf, out_buf_size, "%hhu", uint8); return; } + if (data_format == DataFormat_Hex) { ImSnprintf(out_buf, out_buf_size, "0x%02x", uint8 & 0XFF); return; } break; } case DataType_S16: { int16_t int16 = 0; EndianessCopy(&int16, buf, size); - if (data_format == DataFormat_Dec) { snprintf(out_buf, out_buf_size, "%hd", int16); return; } - if (data_format == DataFormat_Hex) { snprintf(out_buf, out_buf_size, "0x%04x", int16 & 0xFFFF); return; } + if (data_format == DataFormat_Dec) { ImSnprintf(out_buf, out_buf_size, "%hd", int16); return; } + if (data_format == DataFormat_Hex) { ImSnprintf(out_buf, out_buf_size, "0x%04x", int16 & 0xFFFF); return; } break; } case DataType_U16: { uint16_t uint16 = 0; EndianessCopy(&uint16, buf, size); - if (data_format == DataFormat_Dec) { snprintf(out_buf, out_buf_size, "%hu", uint16); return; } - if (data_format == DataFormat_Hex) { snprintf(out_buf, out_buf_size, "0x%04x", uint16 & 0xFFFF); return; } + if (data_format == DataFormat_Dec) { ImSnprintf(out_buf, out_buf_size, "%hu", uint16); return; } + if (data_format == DataFormat_Hex) { ImSnprintf(out_buf, out_buf_size, "0x%04x", uint16 & 0xFFFF); return; } break; } case DataType_S32: { int32_t int32 = 0; EndianessCopy(&int32, buf, size); - if (data_format == DataFormat_Dec) { snprintf(out_buf, out_buf_size, "%d", int32); return; } - if (data_format == DataFormat_Hex) { snprintf(out_buf, out_buf_size, "0x%08x", int32); return; } + if (data_format == DataFormat_Dec) { ImSnprintf(out_buf, out_buf_size, "%d", int32); return; } + if (data_format == DataFormat_Hex) { ImSnprintf(out_buf, out_buf_size, "0x%08x", int32); return; } break; } case DataType_U32: { uint32_t uint32 = 0; EndianessCopy(&uint32, buf, size); - if (data_format == DataFormat_Dec) { snprintf(out_buf, out_buf_size, "%u", uint32); return; } - if (data_format == DataFormat_Hex) { snprintf(out_buf, out_buf_size, "0x%08x", uint32); return; } + if (data_format == DataFormat_Dec) { ImSnprintf(out_buf, out_buf_size, "%u", uint32); return; } + if (data_format == DataFormat_Hex) { ImSnprintf(out_buf, out_buf_size, "0x%08x", uint32); return; } break; } case DataType_S64: { int64_t int64 = 0; EndianessCopy(&int64, buf, size); - if (data_format == DataFormat_Dec) { snprintf(out_buf, out_buf_size, "%lld", (long long)int64); return; } - if (data_format == DataFormat_Hex) { snprintf(out_buf, out_buf_size, "0x%016llx", (long long)int64); return; } + if (data_format == DataFormat_Dec) { ImSnprintf(out_buf, out_buf_size, "%lld", (long long)int64); return; } + if (data_format == DataFormat_Hex) { ImSnprintf(out_buf, out_buf_size, "0x%016llx", (long long)int64); return; } break; } case DataType_U64: { uint64_t uint64 = 0; EndianessCopy(&uint64, buf, size); - if (data_format == DataFormat_Dec) { snprintf(out_buf, out_buf_size, "%llu", (long long)uint64); return; } - if (data_format == DataFormat_Hex) { snprintf(out_buf, out_buf_size, "0x%016llx", (long long)uint64); return; } + if (data_format == DataFormat_Dec) { ImSnprintf(out_buf, out_buf_size, "%llu", (long long)uint64); return; } + if (data_format == DataFormat_Hex) { ImSnprintf(out_buf, out_buf_size, "0x%016llx", (long long)uint64); return; } break; } case DataType_Float: { float float32 = 0.0f; EndianessCopy(&float32, buf, size); - if (data_format == DataFormat_Dec) { snprintf(out_buf, out_buf_size, "%f", float32); return; } - if (data_format == DataFormat_Hex) { snprintf(out_buf, out_buf_size, "%a", float32); return; } + if (data_format == DataFormat_Dec) { ImSnprintf(out_buf, out_buf_size, "%f", float32); return; } + if (data_format == DataFormat_Hex) { ImSnprintf(out_buf, out_buf_size, "%a", float32); return; } break; } case DataType_Double: { double float64 = 0.0; EndianessCopy(&float64, buf, size); - if (data_format == DataFormat_Dec) { snprintf(out_buf, out_buf_size, "%f", float64); return; } - if (data_format == DataFormat_Hex) { snprintf(out_buf, out_buf_size, "%a", float64); return; } + if (data_format == DataFormat_Dec) { ImSnprintf(out_buf, out_buf_size, "%f", float64); return; } + if (data_format == DataFormat_Hex) { ImSnprintf(out_buf, out_buf_size, "%a", float64); return; } break; } + case DataType_COUNT: + break; } // Switch IM_ASSERT(0); // Shouldn't reach } }; #undef _PRISizeT +#undef ImSnprintf |