diff --git a/external/ImGui/CMakeLists.txt b/external/ImGui/CMakeLists.txt index d3af1abdc..f9168f11d 100644 --- a/external/ImGui/CMakeLists.txt +++ b/external/ImGui/CMakeLists.txt @@ -26,8 +26,6 @@ add_library(imgui OBJECT source/TextEditor.cpp - source/imgui_imhex_extensions.cpp - source/imnodes.cpp source/implot.cpp diff --git a/plugins/builtin/source/content/data_processor_nodes.cpp b/plugins/builtin/source/content/data_processor_nodes.cpp index 31442e5fb..2a77d317e 100644 --- a/plugins/builtin/source/content/data_processor_nodes.cpp +++ b/plugins/builtin/source/content/data_processor_nodes.cpp @@ -244,7 +244,7 @@ namespace hex::plugin::builtin { void drawNode() override { ImGui::PushItemWidth(150); if (this->m_value.has_value()) - ImGui::Text("0x%llx", this->m_value.value()); + ImGui::TextFormatted("0x{0:X}", this->m_value.value()); else ImGui::TextUnformatted("???"); ImGui::PopItemWidth(); @@ -270,7 +270,7 @@ namespace hex::plugin::builtin { void drawNode() override { ImGui::PushItemWidth(150); if (this->m_value.has_value()) - ImGui::Text("%f", this->m_value.value()); + ImGui::TextFormatted("{0}", this->m_value.value()); else ImGui::TextUnformatted("???"); ImGui::PopItemWidth(); diff --git a/plugins/builtin/source/content/tools_entries.cpp b/plugins/builtin/source/content/tools_entries.cpp index 648caa9bd..855948a06 100644 --- a/plugins/builtin/source/content/tools_entries.cpp +++ b/plugins/builtin/source/content/tools_entries.cpp @@ -68,18 +68,18 @@ namespace hex::plugin::builtin { ImGui::TableNextRow(ImGuiTableRowFlags_Headers); ImGui::TableNextColumn(); - ImGui::Text("%02d", i + 32 * tablePart); + ImGui::TextFormatted("{0:03d}", i + 32 * tablePart); if (asciiTableShowOctal) { ImGui::TableNextColumn(); - ImGui::Text("0o%02o", i + 32 * tablePart); + ImGui::TextFormatted("0o{0:03o}", i + 32 * tablePart); } ImGui::TableNextColumn(); - ImGui::Text("0x%02x", i + 32 * tablePart); + ImGui::TextFormatted("0x{0:02X}", i + 32 * tablePart); ImGui::TableNextColumn(); - ImGui::Text("%s", hex::makePrintable(i + 32 * tablePart).c_str()); + ImGui::TextFormatted("{0}", hex::makePrintable(i + 32 * tablePart)); ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, ((rowCount % 2) == 0) ? 0xFF101010 : 0xFF303030); @@ -295,16 +295,16 @@ namespace hex::plugin::builtin { switch (mathDisplayType) { case MathDisplayType::Standard: - ImGui::Text("%.3Lf", mathHistory[(mathHistory.size() - 1) - i]); + ImGui::TextFormatted("{0:.3Lf}", mathHistory[(mathHistory.size() - 1) - i]); break; case MathDisplayType::Scientific: - ImGui::Text("%.6Le", mathHistory[(mathHistory.size() - 1) - i]); + ImGui::TextFormatted("{0:.6Le}", mathHistory[(mathHistory.size() - 1) - i]); break; case MathDisplayType::Engineering: - ImGui::Text("%s", hex::toEngineeringString(mathHistory[(mathHistory.size() - 1) - i]).c_str()); + ImGui::TextFormatted("{0}", hex::toEngineeringString(mathHistory[(mathHistory.size() - 1) - i]).c_str()); break; case MathDisplayType::Programmer: - ImGui::Text("0x%llX (%llu)", + ImGui::TextFormatted("0x{0:X} ({1})", u64(mathHistory[(mathHistory.size() - 1) - i]), u64(mathHistory[(mathHistory.size() - 1) - i])); break; @@ -335,16 +335,16 @@ namespace hex::plugin::builtin { ImGui::TableNextColumn(); switch (mathDisplayType) { case MathDisplayType::Standard: - ImGui::Text("%.3Lf", value); + ImGui::TextFormatted("{0:.3Lf}", value); break; case MathDisplayType::Scientific: - ImGui::Text("%.6Le", value); + ImGui::TextFormatted("{0:.6Le}", value); break; case MathDisplayType::Engineering: - ImGui::Text("%s", hex::toEngineeringString(value).c_str()); + ImGui::TextFormatted("{}", hex::toEngineeringString(value)); break; case MathDisplayType::Programmer: - ImGui::Text("0x%llX (%llu)", u64(value), u64(value)); + ImGui::TextFormatted("0x{0:X} ({1})", u64(value), u64(value)); break; } } diff --git a/plugins/builtin/source/content/ui_items.cpp b/plugins/builtin/source/content/ui_items.cpp index b06def0e3..a9f0225f7 100644 --- a/plugins/builtin/source/content/ui_items.cpp +++ b/plugins/builtin/source/content/ui_items.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include @@ -28,7 +28,7 @@ namespace hex::plugin::builtin { framerate = 1.0F / ImGui::GetIO().DeltaTime; } - ImGui::TextUnformatted(hex::format("FPS {0:2}.{1:02}", u32(framerate), u32(framerate * 100) % 100).c_str()); + ImGui::TextFormatted("FPS {0:2}.{1:02}", u32(framerate), u32(framerate * 100) % 100); }); diff --git a/plugins/builtin/source/content/views/view_bookmarks.cpp b/plugins/builtin/source/content/views/view_bookmarks.cpp index 1a397156b..c18ecf6dd 100644 --- a/plugins/builtin/source/content/views/view_bookmarks.cpp +++ b/plugins/builtin/source/content/views/view_bookmarks.cpp @@ -81,7 +81,7 @@ namespace hex::plugin::builtin { if (ImGui::CollapsingHeader((std::string(name.data()) + "###bookmark").c_str())) { ImGui::TextUnformatted("hex.builtin.view.bookmarks.title.info"_lang); ImGui::Separator(); - ImGui::TextUnformatted(hex::format("hex.builtin.view.bookmarks.address"_lang, region.address, region.address + region.size - 1, region.size).c_str()); + ImGui::TextFormatted("hex.builtin.view.bookmarks.address"_lang, region.address, region.address + region.size - 1, region.size); if (ImGui::BeginChild("hexData", ImVec2(0, ImGui::GetTextLineHeight() * 8), true)) { size_t offset = region.address % 0x10; @@ -105,7 +105,7 @@ namespace hex::plugin::builtin { if (byte < offset) ImGui::TextUnformatted(" "); else - ImGui::Text("%02X", bytes[byte]); + ImGui::TextFormatted("{0:02X}", bytes[byte]); ImGui::SameLine(); } ImGui::NewLine(); @@ -119,7 +119,7 @@ namespace hex::plugin::builtin { ImHexApi::Provider::get()->read(region.address + i, bytes.data(), byteCount); for (size_t byte = 0; byte < byteCount; byte++) { - ImGui::Text("%02X", bytes[byte]); + ImGui::TextFormatted("{0:02X}", bytes[byte]); ImGui::SameLine(); } ImGui::NewLine(); diff --git a/plugins/builtin/source/content/views/view_constants.cpp b/plugins/builtin/source/content/views/view_constants.cpp index 16872493d..34150feca 100644 --- a/plugins/builtin/source/content/views/view_constants.cpp +++ b/plugins/builtin/source/content/views/view_constants.cpp @@ -136,13 +136,13 @@ namespace hex::plugin::builtin { auto &constant = this->m_constants[this->m_filterIndices[i]]; ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::Text("%s", constant.category.c_str()); + ImGui::TextUnformatted(constant.category.c_str()); ImGui::TableNextColumn(); - ImGui::Text("%s", constant.name.c_str()); + ImGui::TextUnformatted(constant.name.c_str()); ImGui::TableNextColumn(); - ImGui::Text("%s", constant.description.c_str()); + ImGui::TextUnformatted(constant.description.c_str()); ImGui::TableNextColumn(); - ImGui::Text("%s", constant.value.c_str()); + ImGui::TextUnformatted(constant.value.c_str()); } } clipper.End(); diff --git a/plugins/builtin/source/content/views/view_diff.cpp b/plugins/builtin/source/content/views/view_diff.cpp index 14f696032..e4cfb1b40 100644 --- a/plugins/builtin/source/content/views/view_diff.cpp +++ b/plugins/builtin/source/content/views/view_diff.cpp @@ -114,7 +114,7 @@ namespace hex::plugin::builtin { auto startY = ImGui::GetCursorPosY(); - ImGui::TextUnformatted(hex::format(this->m_upperCaseHex ? "{:0{}X}:" : "{:0{}x}:", row * this->m_columnCount, addressDigitCount).c_str()); + ImGui::TextFormatted(this->m_upperCaseHex ? "{:0{}X}:" : "{:0{}x}:", row * this->m_columnCount, addressDigitCount); ImGui::SetCursorPosY(startY); ImGui::TableNextColumn(); @@ -200,7 +200,7 @@ namespace hex::plugin::builtin { auto glyphWidth = ImGui::CalcTextSize("0").x + 1; for (u8 i = 0; i < 2; i++) { for (u8 col = 0; col < this->m_columnCount; col++) { - ImGui::TextUnformatted(hex::format(this->m_upperCaseHex ? "{:02X}" : "{:02x}", col).c_str()); + ImGui::TextFormatted(this->m_upperCaseHex ? "{:02X}" : "{:02x}", col); ImGui::SameLine(0.0F, col % 8 == 7 ? glyphWidth * 1.5F : glyphWidth * 0.75F); } ImGui::TableNextColumn(); diff --git a/plugins/builtin/source/content/views/view_disassembler.cpp b/plugins/builtin/source/content/views/view_disassembler.cpp index 4b466d4a6..8123f7a09 100644 --- a/plugins/builtin/source/content/views/view_disassembler.cpp +++ b/plugins/builtin/source/content/views/view_disassembler.cpp @@ -6,8 +6,6 @@ #include #include -#include - using namespace std::literals::string_literals; namespace hex::plugin::builtin { @@ -295,13 +293,13 @@ namespace hex::plugin::builtin { EventManager::post(Region { this->m_disassembly[i].offset, this->m_disassembly[i].size }); } ImGui::SameLine(); - ImGui::Text("0x%llx", this->m_disassembly[i].address); + ImGui::TextFormatted("0x{0:X}", this->m_disassembly[i].address); ImGui::TableNextColumn(); - ImGui::Text("0x%llx", this->m_disassembly[i].offset); + ImGui::TextFormatted("0x{0:X}", this->m_disassembly[i].offset); ImGui::TableNextColumn(); ImGui::TextUnformatted(this->m_disassembly[i].bytes.c_str()); ImGui::TableNextColumn(); - ImGui::TextColored(ImColor(0xFFD69C56), "%s", this->m_disassembly[i].mnemonic.c_str()); + ImGui::TextFormattedColored(ImColor(0xFFD69C56), "{}", this->m_disassembly[i].mnemonic); ImGui::SameLine(); ImGui::TextUnformatted(this->m_disassembly[i].operators.c_str()); } diff --git a/plugins/builtin/source/content/views/view_help.cpp b/plugins/builtin/source/content/views/view_help.cpp index 7459f166c..1ba3a81d2 100644 --- a/plugins/builtin/source/content/views/view_help.cpp +++ b/plugins/builtin/source/content/views/view_help.cpp @@ -1,8 +1,6 @@ #include "content/views/view_help.hpp" #include -#include - #include #include @@ -21,7 +19,7 @@ namespace hex::plugin::builtin { } void ViewHelp::drawAboutMainPage() { - ImGui::Text("ImHex Hex Editor v%s by WerWolv - " ICON_FA_CODE_BRANCH, IMHEX_VERSION); + ImGui::TextFormatted("ImHex Hex Editor v{} by WerWolv - " ICON_FA_CODE_BRANCH, IMHEX_VERSION); #if defined(GIT_BRANCH) && defined(GIT_COMMIT_HASH) ImGui::SameLine(); diff --git a/plugins/builtin/source/content/views/view_hexeditor.cpp b/plugins/builtin/source/content/views/view_hexeditor.cpp index c77e3b6f1..fadce2477 100644 --- a/plugins/builtin/source/content/views/view_hexeditor.cpp +++ b/plugins/builtin/source/content/views/view_hexeditor.cpp @@ -176,7 +176,7 @@ namespace hex::plugin::builtin { if (provider->getPageCount() > 1) { ImGui::SameLine(); - ImGui::TextUnformatted(hex::format("hex.builtin.view.hexeditor.page"_lang, provider->getCurrentPage() + 1, provider->getPageCount()).c_str()); + ImGui::TextFormatted("hex.builtin.view.hexeditor.page"_lang, provider->getCurrentPage() + 1, provider->getPageCount()); ImGui::SameLine(); diff --git a/plugins/builtin/source/content/views/view_information.cpp b/plugins/builtin/source/content/views/view_information.cpp index 4cb26b0e1..22e04c4b8 100644 --- a/plugins/builtin/source/content/views/view_information.cpp +++ b/plugins/builtin/source/content/views/view_information.cpp @@ -15,7 +15,6 @@ #include -#include #include namespace hex::plugin::builtin { diff --git a/plugins/builtin/source/content/views/view_patches.cpp b/plugins/builtin/source/content/views/view_patches.cpp index 302259607..eb4742cbf 100644 --- a/plugins/builtin/source/content/views/view_patches.cpp +++ b/plugins/builtin/source/content/views/view_patches.cpp @@ -58,15 +58,15 @@ namespace hex::plugin::builtin { this->m_selectedPatch = address; } ImGui::SameLine(); - ImGui::Text("0x%08lX", address); + ImGui::TextFormatted("0x{0:08X}", address); ImGui::TableNextColumn(); u8 previousValue = 0x00; provider->readRaw(address, &previousValue, sizeof(u8)); - ImGui::Text("0x%02X", previousValue); + ImGui::TextFormatted("0x{0:02X}", previousValue); ImGui::TableNextColumn(); - ImGui::Text("0x%02X", patch); + ImGui::TextFormatted("0x{0:02X}", patch); index += 1; } diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index 018a1bdd3..3fa7bb36c 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -11,8 +11,6 @@ #include #include -#include - #include namespace hex::plugin::builtin { @@ -291,11 +289,10 @@ namespace hex::plugin::builtin { ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); ImGui::SameLine(); - ImGui::TextUnformatted(hex::format("{} / {}", - this->m_evaluatorRuntime->getCreatedPatternCount(), - this->m_evaluatorRuntime->getMaximumPatternCount() - ).c_str() - ); + ImGui::TextFormatted("{} / {}", + this->m_evaluatorRuntime->getCreatedPatternCount(), + this->m_evaluatorRuntime->getMaximumPatternCount() + ); } @@ -540,7 +537,7 @@ namespace hex::plugin::builtin { } ImGui::NewLine(); - ImGui::Text("%s", static_cast("hex.builtin.view.pattern_editor.accept_pattern.question"_lang)); + ImGui::TextUnformatted("hex.builtin.view.pattern_editor.accept_pattern.question"_lang); confirmButtons("hex.common.yes"_lang, "hex.common.no"_lang, [this]{ this->loadPatternFile(this->m_possiblePatternFiles[this->m_selectedPatternFile].string()); diff --git a/plugins/builtin/source/content/views/view_strings.cpp b/plugins/builtin/source/content/views/view_strings.cpp index 6e8ec748f..f290067b6 100644 --- a/plugins/builtin/source/content/views/view_strings.cpp +++ b/plugins/builtin/source/content/views/view_strings.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include using namespace std::literals::string_literals; @@ -149,7 +149,7 @@ namespace hex::plugin::builtin { } else if (this->m_foundStrings.size() > 0) { ImGui::SameLine(); - ImGui::TextUnformatted(hex::format("hex.builtin.view.strings.results"_lang, this->m_filterIndices.size()).c_str()); + ImGui::TextFormatted("hex.builtin.view.strings.results"_lang, this->m_filterIndices.size()); } @@ -211,12 +211,12 @@ namespace hex::plugin::builtin { createStringContextMenu(foundString); ImGui::PopID(); ImGui::SameLine(); - ImGui::Text("0x%08lx : 0x%08lx", foundString.offset, foundString.offset + foundString.size); + ImGui::TextFormatted("0x{0:08X} : 0x{1:08X}", foundString.offset, foundString.offset + foundString.size); ImGui::TableNextColumn(); - ImGui::Text("0x%04lx", foundString.size); + ImGui::TextFormatted("0x{0:04X}", foundString.size); ImGui::TableNextColumn(); - ImGui::Text("%s", string.c_str()); + ImGui::TextUnformatted(string.c_str()); } } clipper.End(); diff --git a/plugins/builtin/source/content/views/view_yara.cpp b/plugins/builtin/source/content/views/view_yara.cpp index ac5d36d03..f7bcaab2d 100644 --- a/plugins/builtin/source/content/views/view_yara.cpp +++ b/plugins/builtin/source/content/views/view_yara.cpp @@ -9,7 +9,6 @@ #include #include -#include #include namespace hex::plugin::builtin { @@ -98,9 +97,9 @@ namespace hex::plugin::builtin { if (!wholeDataMatch) { ImGui::TableNextColumn(); - ImGui::Text("0x%llX : 0x%llX", address, address + size - 1); + ImGui::TextFormatted("0x{0:X} : 0x{1:X}", address, address + size - 1); ImGui::TableNextColumn(); - ImGui::Text("0x%lX", size); + ImGui::TextFormatted("0x{0:X}", size); } else { ImGui::TableNextColumn(); ImGui::TextColored(ImVec4(0.92F, 0.25F, 0.2F, 1.0F), "%s", static_cast("hex.builtin.view.yara.whole_data"_lang)); diff --git a/plugins/example_cpp/source/plugin_example.cpp b/plugins/example_cpp/source/plugin_example.cpp index ef0428d0a..c16ef916a 100644 --- a/plugins/example_cpp/source/plugin_example.cpp +++ b/plugins/example_cpp/source/plugin_example.cpp @@ -9,7 +9,7 @@ public: void drawContent() override { if (ImGui::Begin("Example")) { - ImGui::Text("Custom plugin window"); + ImGui::TextUnformatted("Custom plugin window"); } ImGui::End(); } diff --git a/plugins/libimhex/CMakeLists.txt b/plugins/libimhex/CMakeLists.txt index dee134bb5..5195b077f 100644 --- a/plugins/libimhex/CMakeLists.txt +++ b/plugins/libimhex/CMakeLists.txt @@ -134,6 +134,8 @@ set(LIBIMHEX_SOURCES source/providers/provider.cpp + source/ui/imgui_imhex_extensions.cpp + source/views/view.cpp ) diff --git a/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp b/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp index 84c90a5ac..3539b3553 100644 --- a/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp +++ b/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp @@ -268,27 +268,27 @@ namespace hex::pl { } this->drawCommentTooltip(); ImGui::SameLine(); - ImGui::Text("%s", this->getDisplayName().c_str()); + ImGui::TextUnformatted(this->getDisplayName().c_str()); ImGui::TableNextColumn(); ImGui::ColorButton("color", ImColor(this->getColor()), ImGuiColorEditFlags_NoTooltip, ImVec2(ImGui::GetColumnWidth(), ImGui::GetTextLineHeight())); ImGui::TableNextColumn(); - ImGui::Text("0x%08llX : 0x%08llX", this->getOffset(), this->getOffset() + this->getSize() - 1); + ImGui::TextFormatted("0x{0:08X} : 0x{1:08X}", this->getOffset(), this->getOffset() + this->getSize() - 1); ImGui::TableNextColumn(); - ImGui::Text("0x%04llX", this->getSize()); + ImGui::TextFormatted("0x{0:04X}", this->getSize()); ImGui::TableNextColumn(); - ImGui::TextColored(ImColor(0xFF9BC64D), "%s", this->getFormattedName().c_str()); + ImGui::TextFormattedColored(ImColor(0xFF9BC64D), "{}", this->getFormattedName()); ImGui::TableNextColumn(); if (!this->m_formatterFunction.has_value()) - ImGui::Text("%s", value.c_str()); + ImGui::TextUnformatted(value.c_str()); else { auto result = this->m_formatterFunction->func(this->getEvaluator(), { literal }); if (result.has_value()) { if (auto displayValue = std::get_if(&result.value()); displayValue != nullptr) - ImGui::Text("%s", displayValue->c_str()); + ImGui::TextUnformatted(displayValue->c_str()); } else { - ImGui::Text("???"); + ImGui::TextUnformatted("???"); } } } @@ -372,13 +372,13 @@ namespace hex::pl { ImGui::TableNextColumn(); ImGui::ColorButton("color", ImColor(this->getColor()), ImGuiColorEditFlags_NoTooltip, ImVec2(ImGui::GetColumnWidth(), ImGui::GetTextLineHeight())); ImGui::TableNextColumn(); - ImGui::Text("0x%08llX : 0x%08llX", this->getOffset(), this->getOffset() + this->getSize() - 1); + ImGui::TextFormatted("0x{0:08X} : 0x{1:08X}", this->getOffset(), this->getOffset() + this->getSize() - 1); ImGui::TableNextColumn(); - ImGui::Text("0x%04llX", this->getSize()); + ImGui::TextFormatted("0x{0:04X}", this->getSize()); ImGui::TableNextColumn(); - ImGui::TextColored(ImColor(0xFF9BC64D), "%s", this->getFormattedName().c_str()); + ImGui::TextFormattedColored(ImColor(0xFF9BC64D), "{}", this->getFormattedName()); ImGui::TableNextColumn(); - ImGui::Text("*(0x%llX)", data); + ImGui::TextFormatted("*(0x{0})", data); if (open) { this->m_pointedAt->createEntry(provider); @@ -769,21 +769,21 @@ namespace hex::pl { ImGui::TableNextColumn(); ImGui::ColorButton("color", ImColor(this->getColor()), ImGuiColorEditFlags_NoTooltip, ImVec2(ImGui::GetColumnWidth(), ImGui::GetTextLineHeight())); ImGui::TableNextColumn(); - ImGui::Text("0x%08llX : 0x%08llX", this->getOffset(), this->getOffset() + this->getSize() - 1); + ImGui::TextFormatted("0x{0:08X} : 0x{1:08X}", this->getOffset(), this->getOffset() + this->getSize() - 1); ImGui::TableNextColumn(); - ImGui::Text("0x%04llX", this->getSize()); + ImGui::TextFormatted("0x{0:04X}", this->getSize()); ImGui::TableNextColumn(); - ImGui::TextColored(ImColor(0xFF9BC64D), "%s", this->m_entries[0]->getTypeName().c_str()); + ImGui::TextFormattedColored(ImColor(0xFF9BC64D), "{0}", this->m_entries[0]->getTypeName()); ImGui::SameLine(0, 0); ImGui::TextUnformatted("["); ImGui::SameLine(0, 0); - ImGui::TextColored(ImColor(0xFF00FF00), "%llu", this->m_entries.size()); + ImGui::TextFormattedColored(ImColor(0xFF00FF00), "{0}", this->m_entries.size()); ImGui::SameLine(0, 0); ImGui::TextUnformatted("]"); ImGui::TableNextColumn(); - ImGui::Text("%s", "{ ... }"); + ImGui::TextUnformatted("{ ... }"); } if (open) { @@ -889,21 +889,21 @@ namespace hex::pl { ImGui::TableNextColumn(); ImGui::ColorButton("color", ImColor(this->getColor()), ImGuiColorEditFlags_NoTooltip, ImVec2(ImGui::GetColumnWidth(), ImGui::GetTextLineHeight())); ImGui::TableNextColumn(); - ImGui::Text("0x%08llX : 0x%08llX", this->getOffset(), this->getOffset() + this->getSize() - 1); + ImGui::TextFormatted("0x{0:08X} : 0x{1:08X}", this->getOffset(), this->getOffset() + this->getSize() - 1); ImGui::TableNextColumn(); - ImGui::Text("0x%04llX", this->getSize()); + ImGui::TextFormatted("0x{0:04X}", this->getSize()); ImGui::TableNextColumn(); - ImGui::TextColored(ImColor(0xFF9BC64D), "%s", this->m_template->getTypeName().c_str()); + ImGui::TextFormattedColored(ImColor(0xFF9BC64D), "{0}", this->m_template->getTypeName().c_str()); ImGui::SameLine(0, 0); ImGui::TextUnformatted("["); ImGui::SameLine(0, 0); - ImGui::TextColored(ImColor(0xFF00FF00), "%llu", this->m_entryCount); + ImGui::TextFormattedColored(ImColor(0xFF00FF00), "{0}", this->m_entryCount); ImGui::SameLine(0, 0); ImGui::TextUnformatted("]"); ImGui::TableNextColumn(); - ImGui::Text("%s", "{ ... }"); + ImGui::TextUnformatted("{ ... }"); } if (open) { @@ -1035,13 +1035,13 @@ namespace hex::pl { this->drawCommentTooltip(); ImGui::TableNextColumn(); ImGui::TableNextColumn(); - ImGui::Text("0x%08llX : 0x%08llX", this->getOffset(), this->getOffset() + this->getSize() - (this->getSize() == 0 ? 0 : 1)); + ImGui::TextFormatted("0x{0:08X} : 0x{1:08X}", this->getOffset(), this->getOffset() + this->getSize() - (this->getSize() == 0 ? 0 : 1)); ImGui::TableNextColumn(); - ImGui::Text("0x%04llX", this->getSize()); + ImGui::TextFormatted("0x{0:04X}", this->getSize()); ImGui::TableNextColumn(); - ImGui::TextColored(ImColor(0xFFD69C56), "struct"); ImGui::SameLine(); ImGui::Text("%s", this->getTypeName().c_str()); + ImGui::TextColored(ImColor(0xFFD69C56), "struct"); ImGui::SameLine(); ImGui::TextUnformatted(this->getTypeName().c_str()); ImGui::TableNextColumn(); - ImGui::Text("%s", "{ ... }"); + ImGui::TextUnformatted("{ ... }"); } if (open) { @@ -1174,14 +1174,14 @@ namespace hex::pl { this->drawCommentTooltip(); ImGui::TableNextColumn(); ImGui::TableNextColumn(); - ImGui::Text("0x%08llX : 0x%08llX", this->getOffset(), std::max(this->getOffset() + this->getSize() - (this->getSize() == 0 ? 0 : 1), u64(0))); + ImGui::TextFormatted("0x{0:08X} : 0x{1:08X}", this->getOffset(), std::max(this->getOffset() + this->getSize() - (this->getSize() == 0 ? 0 : 1), u64(0))); ImGui::TableNextColumn(); - ImGui::Text("0x%04llX", this->getSize()); + ImGui::TextFormatted("0x{0:04X}", this->getSize()); ImGui::TableNextColumn(); - ImGui::TextColored(ImColor(0xFFD69C56), "union"); ImGui::SameLine(); ImGui::Text("%s", PatternData::getTypeName().c_str()); + ImGui::TextColored(ImColor(0xFFD69C56), "union"); ImGui::SameLine(); ImGui::TextUnformatted(PatternData::getTypeName().c_str()); ImGui::TableNextColumn(); - ImGui::Text("%s", "{ ... }"); + ImGui::TextUnformatted("{ ... }"); } if (open) { @@ -1319,17 +1319,17 @@ namespace hex::pl { EventManager::post(Region { this->getOffset(), this->getSize() }); } ImGui::SameLine(); - ImGui::Text("%s", this->getDisplayName().c_str()); + ImGui::TextUnformatted(this->getDisplayName().c_str()); ImGui::TableNextColumn(); ImGui::ColorButton("color", ImColor(this->getColor()), ImGuiColorEditFlags_NoTooltip, ImVec2(ImGui::GetColumnWidth(), ImGui::GetTextLineHeight())); ImGui::TableNextColumn(); - ImGui::Text("0x%08llX : 0x%08llX", this->getOffset(), this->getOffset() + this->getSize() - 1); + ImGui::TextFormatted("0x{0:08X} : 0x{1:08X}", this->getOffset(), this->getOffset() + this->getSize() - 1); ImGui::TableNextColumn(); - ImGui::Text("0x%04llX", this->getSize()); + ImGui::TextFormatted("0x{0:04X}", this->getSize()); ImGui::TableNextColumn(); - ImGui::TextColored(ImColor(0xFFD69C56), "enum"); ImGui::SameLine(); ImGui::Text("%s", PatternData::getTypeName().c_str()); + ImGui::TextColored(ImColor(0xFFD69C56), "enum"); ImGui::SameLine(); ImGui::TextUnformatted(PatternData::getTypeName().c_str()); ImGui::TableNextColumn(); - ImGui::Text("%s", hex::format("{} (0x{:0{}X})", valueString.c_str(), value, this->getSize() * 2).c_str()); + ImGui::TextFormatted("{} (0x{:0{}X})", valueString.c_str(), value, this->getSize() * 2); } [[nodiscard]] std::string getFormattedName() const override { @@ -1385,19 +1385,19 @@ namespace hex::pl { ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::Text("%s", this->getDisplayName().c_str()); + ImGui::TextUnformatted(this->getDisplayName().c_str()); ImGui::TableNextColumn(); ImGui::ColorButton("color", ImColor(this->getColor()), ImGuiColorEditFlags_NoTooltip, ImVec2(ImGui::GetColumnWidth(), ImGui::GetTextLineHeight())); ImGui::TableNextColumn(); if (this->m_bitSize == 1) - ImGui::Text("0x%08llX bit %u", this->getOffset() + this->m_bitOffset / 8, (this->m_bitOffset + (this->m_bitSize - 1)) % 8); + ImGui::TextFormatted("0x{0:08X} bit {1}", this->getOffset() + this->m_bitOffset / 8, (this->m_bitOffset + (this->m_bitSize - 1)) % 8); else - ImGui::Text("0x%08llX bits %u - %u", this->getOffset() + this->m_bitOffset / 8, this->m_bitOffset % 8, this->m_bitOffset % 8 + (this->m_bitSize - 1) % 8); + ImGui::TextFormatted("0x{0:08X} bits {1} - {2}", this->getOffset() + this->m_bitOffset / 8, this->m_bitOffset % 8, this->m_bitOffset % 8 + (this->m_bitSize - 1) % 8); ImGui::TableNextColumn(); if (this->m_bitSize == 1) - ImGui::Text("%u bit", this->m_bitSize); + ImGui::TextFormatted("{0} bit", this->m_bitSize); else - ImGui::Text("%u bits", this->m_bitSize); + ImGui::TextFormatted("{0} bits", this->m_bitSize); ImGui::TableNextColumn(); ImGui::TextColored(ImColor(0xFF9BC64D), "bits"); ImGui::TableNextColumn(); @@ -1405,7 +1405,7 @@ namespace hex::pl { u8 numBytes = (this->m_bitSize / 8) + 1; u64 extractedValue = hex::extract(this->m_bitOffset + (this->m_bitSize - 1), this->m_bitOffset, value); - ImGui::Text("%llu (0x%llX)", extractedValue, extractedValue); + ImGui::TextFormatted("{0} (0x{1:X})", extractedValue, extractedValue); } } @@ -1470,11 +1470,11 @@ namespace hex::pl { this->drawCommentTooltip(); ImGui::TableNextColumn(); ImGui::TableNextColumn(); - ImGui::Text("0x%08llX : 0x%08llX", this->getOffset(), this->getOffset() + this->getSize() - 1); + ImGui::TextFormatted("0x{0:08X} : 0x{1:08X}", this->getOffset(), this->getOffset() + this->getSize() - 1); ImGui::TableNextColumn(); - ImGui::Text("0x%04llX", this->getSize()); + ImGui::TextFormatted("0x{0:04X}", this->getSize()); ImGui::TableNextColumn(); - ImGui::TextColored(ImColor(0xFFD69C56), "bitfield"); ImGui::SameLine(); ImGui::Text("%s", PatternData::getTypeName().c_str()); + ImGui::TextColored(ImColor(0xFFD69C56), "bitfield"); ImGui::SameLine(); ImGui::TextUnformatted(PatternData::getTypeName().c_str()); ImGui::TableNextColumn(); std::string valueString = "{ "; diff --git a/external/ImGui/include/imgui_imhex_extensions.h b/plugins/libimhex/include/hex/ui/imgui_imhex_extensions.h similarity index 88% rename from external/ImGui/include/imgui_imhex_extensions.h rename to plugins/libimhex/include/hex/ui/imgui_imhex_extensions.h index 5e006f6c2..7dab86f9d 100644 --- a/external/ImGui/include/imgui_imhex_extensions.h +++ b/plugins/libimhex/include/hex/ui/imgui_imhex_extensions.h @@ -4,6 +4,7 @@ #include +#include enum ImGuiCustomCol { ImGuiCustomCol_DescButton, @@ -88,4 +89,12 @@ namespace ImGui { void StyleCustomColorsClassic(); void SmallProgressBar(float fraction, float yOffset = 0.0F); + + void TextFormatted(const std::string &fmt, auto ... args) { + ImGui::TextUnformatted(hex::format(fmt, std::forward(args)...).c_str()); + } + + void TextFormattedColored(ImColor color, const std::string &fmt, auto ... args) { + ImGui::TextColored(color, "%s", hex::format(fmt, std::forward(args)...).c_str()); + } } \ No newline at end of file diff --git a/plugins/libimhex/include/hex/views/view.hpp b/plugins/libimhex/include/hex/views/view.hpp index 2c9a52e4d..d24cd70a3 100644 --- a/plugins/libimhex/include/hex/views/view.hpp +++ b/plugins/libimhex/include/hex/views/view.hpp @@ -5,7 +5,7 @@ #include #define IMGUI_DEFINE_MATH_OPERATORS #include -#include +#include #include #include diff --git a/external/ImGui/source/imgui_imhex_extensions.cpp b/plugins/libimhex/source/ui/imgui_imhex_extensions.cpp similarity index 99% rename from external/ImGui/source/imgui_imhex_extensions.cpp rename to plugins/libimhex/source/ui/imgui_imhex_extensions.cpp index 6c728abea..375c68cb3 100644 --- a/external/ImGui/source/imgui_imhex_extensions.cpp +++ b/plugins/libimhex/source/ui/imgui_imhex_extensions.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include diff --git a/plugins/windows/source/content/ui_items.cpp b/plugins/windows/source/content/ui_items.cpp index 297b1e76e..aff8df28b 100644 --- a/plugins/windows/source/content/ui_items.cpp +++ b/plugins/windows/source/content/ui_items.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include namespace hex::plugin::windows { @@ -71,7 +71,7 @@ namespace hex::plugin::windows { cpuUsage *= 100; } - ImGui::TextUnformatted(hex::format(ICON_FA_TACHOMETER_ALT " {0:2}.{1:02}", u32(cpuUsage), u32(cpuUsage * 100) % 100).c_str()); + ImGui::TextFormatted(ICON_FA_TACHOMETER_ALT " {0:2}.{1:02}", u32(cpuUsage), u32(cpuUsage * 100) % 100); }); ContentRegistry::Interface::addFooterItem([] { @@ -87,7 +87,7 @@ namespace hex::plugin::windows { auto totalMem = memInfo.ullTotalPhys; auto usedMem = pmc.PrivateUsage; - ImGui::TextUnformatted(hex::format(ICON_FA_MICROCHIP " {0} / {1}", hex::toByteString(usedMem), hex::toByteString(totalMem)).c_str()); + ImGui::TextFormatted(ICON_FA_MICROCHIP " {0} / {1}", hex::toByteString(usedMem), hex::toByteString(totalMem)); }); } diff --git a/plugins/windows/source/views/view_tty_console.cpp b/plugins/windows/source/views/view_tty_console.cpp index 4e0a94ffa..23ca3aef9 100644 --- a/plugins/windows/source/views/view_tty_console.cpp +++ b/plugins/windows/source/views/view_tty_console.cpp @@ -1,6 +1,5 @@ #include "views/view_tty_console.hpp" -#include #include #include diff --git a/source/init/splash_window.cpp b/source/init/splash_window.cpp index 10338584a..203b64435 100644 --- a/source/init/splash_window.cpp +++ b/source/init/splash_window.cpp @@ -10,7 +10,7 @@ #include #define IMGUI_DEFINE_MATH_OPERATORS #include -#include +#include #include #include #include diff --git a/source/window/window.cpp b/source/window/window.cpp index 031591840..9c8393c07 100644 --- a/source/window/window.cpp +++ b/source/window/window.cpp @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include #include @@ -516,7 +516,7 @@ namespace hex { view->drawContent(); } - { + if (view->getWindowOpenState()) { bool hasWindow = ImGui::FindWindowByName(View::toWindowName(view->getUnlocalizedName()).c_str()) != nullptr; bool focused = false;