summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imgui/README6
-rw-r--r--src/imgui/imgui_memory_editor.h62
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