ElementLog.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include "../../Include/RmlUi/Core/ElementDocument.h"
  3. #include "../../Include/RmlUi/Core/EventListener.h"
  4. #include "../../Include/RmlUi/Core/Types.h"
  5. #include "ElementDebugDocument.h"
  6. namespace Rml {
  7. namespace Debugger {
  8. class DebuggerSystemInterface;
  9. class ElementLog : public ElementDebugDocument, public Rml::EventListener {
  10. public:
  11. RMLUI_RTTI_DefineWithParent(ElementLog, ElementDebugDocument)
  12. ElementLog(const String& tag);
  13. ~ElementLog();
  14. /// Initialises the log element.
  15. /// @return True if the element initialised successfully, false otherwise.
  16. bool Initialise();
  17. /// Adds a log message to the debug log.
  18. void AddLogMessage(Log::Type type, const String& message);
  19. protected:
  20. void OnUpdate() override;
  21. void ProcessEvent(Event& event) override;
  22. private:
  23. struct LogMessage {
  24. unsigned int index;
  25. String message;
  26. };
  27. using LogMessageList = Vector<LogMessage>;
  28. struct LogType {
  29. bool visible;
  30. String class_name;
  31. String alert_contents;
  32. String button_name;
  33. LogMessageList log_messages;
  34. };
  35. LogType log_types[Log::LT_MAX];
  36. int FindNextEarliestLogType(unsigned int log_pointers[Log::LT_MAX]);
  37. unsigned int current_index;
  38. bool dirty_logs;
  39. bool auto_scroll;
  40. Element* message_content;
  41. ElementDocument* beacon;
  42. int current_beacon_level;
  43. };
  44. } // namespace Debugger
  45. } // namespace Rml