mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-04-01 21:17:44 -05:00
feat: Further improve process memory provider
This commit is contained in:
@@ -197,6 +197,8 @@ namespace hex::plugin::builtin::ui {
|
||||
|
||||
std::optional<EncodingFile> m_currCustomEncoding;
|
||||
|
||||
std::pair<Region, bool> m_currValidRegion = { Region::Invalid(), false };
|
||||
|
||||
static inline std::optional<color_t> defaultColorCallback(u64, const u8 *, size_t) { return std::nullopt; }
|
||||
static inline void defaultTooltipCallback(u64, const u8 *, size_t) { }
|
||||
std::function<std::optional<color_t>(u64, const u8 *, size_t)> m_foregroundColorCallback = defaultColorCallback, m_backgroundColorCallback = defaultColorCallback;
|
||||
|
||||
@@ -379,11 +379,10 @@ namespace hex::plugin::builtin::ui {
|
||||
|
||||
if (this->m_provider != nullptr && this->m_provider->isReadable()) {
|
||||
|
||||
std::pair<Region, bool> validRegion = { Region::Invalid(), false };
|
||||
const auto isCurrRegionValid = [this, &validRegion](u64 address){
|
||||
auto &[currRegion, currRegionValid] = validRegion;
|
||||
const auto isCurrRegionValid = [this](u64 address){
|
||||
auto &[currRegion, currRegionValid] = this->m_currValidRegion;
|
||||
if (!Region{ address, 1 }.isWithin(currRegion)) {
|
||||
validRegion = this->m_provider->getRegionValidity(address);
|
||||
this->m_currValidRegion = this->m_provider->getRegionValidity(address);
|
||||
}
|
||||
|
||||
return currRegionValid;
|
||||
@@ -541,7 +540,7 @@ namespace hex::plugin::builtin::ui {
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(0, 0));
|
||||
ImGui::PushItemWidth(CharacterSize.x);
|
||||
if (!isCurrRegionValid(byteAddress))
|
||||
ImGui::TextFormatted("?");
|
||||
ImGui::TextDisabled("?");
|
||||
else
|
||||
this->drawCell(byteAddress, &bytes[x], 1, cellHovered, CellType::ASCII);
|
||||
ImGui::PopItemWidth();
|
||||
|
||||
Reference in New Issue
Block a user