patterns: Move logic to draw patterns into separate class (#472)

* refactor(patterns): add visitor interface

* refactor(patterns): add public accessors

* refactor(patterns): add method to get pattern value

* refactor(pattern): make some methods public

* refactor(pattern): extract code to draw GUI

* refactor(patterns): remove GUI related code from patterns

* refactor: move common GUI function from pattern to pattern_drawer

* refactor(pattern_drawer): extract common code into methods

* refactor: rename ImGuiDrawer -> PatternDrawer

* refactor(patternr): move displayEnd into PatternDrawer

* refactor: use ArrayPattern concept to restrict argument type

Co-authored-by: Dmitry Polshakov <dmitry.polshakov@dsr-corporation.com>
This commit is contained in:
Polshakov Dmitry
2022-03-21 15:52:07 +03:00
committed by GitHub
parent 854c99bafa
commit 5dfa9cf501
21 changed files with 674 additions and 433 deletions

View File

@@ -3,6 +3,7 @@
#include <hex.hpp>
#include <imgui.h>
#include <hex/pattern_language/pattern_drawer.hpp>
#include <hex/ui/view.hpp>
#include <vector>
@@ -20,6 +21,7 @@ namespace hex::plugin::builtin {
private:
std::map<prv::Provider *, std::vector<std::shared_ptr<pl::Pattern>>> m_sortedPatterns;
hex::pl::PatternDrawer m_drawer;
};
}

View File

@@ -61,8 +61,9 @@ namespace hex::plugin::builtin {
ImGui::TableHeadersRow();
if (!sortedPatterns.empty()) {
m_drawer.setProvider(provider);
for (auto &patterns : sortedPatterns)
patterns->draw(provider);
patterns->accept(m_drawer);
}
ImGui::EndTable();