diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index 4f30b1a5d..8fd0db2ac 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -173,6 +173,7 @@ "hex.builtin.menu.view.fps": "Display FPS", "hex.builtin.minimap_visualizer.entropy": "Local Entropy", "hex.builtin.minimap_visualizer.zeros": "Zeros Count", + "hex.builtin.minimap_visualizer.ascii": "ASCII Count", "hex.builtin.nodes.arithmetic": "Arithmetic", "hex.builtin.nodes.arithmetic.add": "Addition", "hex.builtin.nodes.arithmetic.add.header": "Add", diff --git a/plugins/builtin/source/content/minimap_visualizers.cpp b/plugins/builtin/source/content/minimap_visualizers.cpp index 050f68f14..ffb758bb4 100644 --- a/plugins/builtin/source/content/minimap_visualizers.cpp +++ b/plugins/builtin/source/content/minimap_visualizers.cpp @@ -13,9 +13,9 @@ namespace hex::plugin::builtin { namespace { ImColor entropyMiniMapVisualizer(const std::vector &data) { - std::array frequencies = { 0 }; + std::array frequencies = { 0 }; for (u8 byte : data) - frequencies[byte]++; + frequencies[byte] += 1; double entropy = 0.0; for (u32 frequency : frequencies) { @@ -41,17 +41,28 @@ namespace hex::plugin::builtin { u32 zerosCount = 0; for (u8 byte : data) { if (byte == 0x00) - zerosCount++; + zerosCount += 1; } return ImColor::HSV(0.0F, 0.0F, 1.0F - (double(zerosCount) / data.size())); } + ImColor byteTypeMiniMapVisualizer(const std::vector &data) { + u8 asciiCount = 0; + for (u8 byte : data) { + if (std::isprint(byte)) + asciiCount += 1; + } + + return ImColor::HSV(0.5F, 0.5F, (double(asciiCount) / data.size())); + } + } void registerMiniMapVisualizers() { ContentRegistry::HexEditor::addMiniMapVisualizer("hex.builtin.minimap_visualizer.entropy", entropyMiniMapVisualizer); ContentRegistry::HexEditor::addMiniMapVisualizer("hex.builtin.minimap_visualizer.zeros", zerosMiniMapVisualizer); + ContentRegistry::HexEditor::addMiniMapVisualizer("hex.builtin.minimap_visualizer.ascii", byteTypeMiniMapVisualizer); } } \ No newline at end of file