3#include <unordered_map>
51 void BeginGroup(
tachyon::ID id, int32_t defaultWidth, int32_t minWidth, int32_t maxWidth,
bool resizable =
true);
63 void OnPreConstruct();
64 void OnPostConstruct();
69 uint32_t nestingDepth;
72 std::unordered_map<tachyon::ID, State> m_states;
73 std::vector<StackEntry> m_stack;
75 ElementStorage& m_elementStorage;
76 GUIStateManager& m_guiStateManager;
The frame's element tree.
Definition gui_element_storage.h:100
Stage callbacks run in registration order (no priorities): if A must run before B,...
Definition gui_frame_pipeline.h:74
Owns the per-frame state objects and runs their BeginFrame / EndFrame in order.
Definition gui_state_manager.h:65
The library's styles, icons and theme metrics, the defaults the controls draw with.
Definition gui_theme.h:46
State * GetActiveGroup()
The innermost group when it was opened at the current nesting depth, else nullptr.
void EndGroup()
Closes the innermost group.
void AddDragger(tachyon::ElementRef labelRef)
Adds a label to the innermost group and draws its resize edge; a group must be open.
LabelGroupSubsystem(FramePipeline &frame, ElementStorage &elementStorage, GUIStateManager &guiStateManager, GUITheme &theme)
bool IsBalanced() const
True iff every BeginGroup was matched by EndGroup.
Definition gui_label_group_subsystem.h:60
void BeginGroup(tachyon::ID id, int32_t defaultWidth, int32_t minWidth, int32_t maxWidth, bool resizable=true)
Opens group id at the current nesting depth; widths are CSS px, and defaultWidth applies only when th...
Definition gui_logging.h:24
An element's slot in ElementStorage: its depth and index within that depth.
Definition gui_element.h:127
Per-frame values plus references to long-lived managers, passed to every stage callback.
Definition gui_frame_pipeline.h:32
A 64-bit element ID whose bit layout depends on its IDMode.
Definition gui_id.h:23
State of one label group, kept across frames by group ID.
Definition gui_label_group_subsystem.h:31
std::vector< tachyon::TextID > labelTextIDs
transient: rebuilt each frame for auto-size
Definition gui_label_group_subsystem.h:39
int32_t minWidth
CSS px.
Definition gui_label_group_subsystem.h:33
std::vector< tachyon::ElementRef > labelRefs
transient: this frame's labels, in order
Definition gui_label_group_subsystem.h:41
int32_t maxLabelWidthThisFrame
transient: widest label (pixels), for auto-width
Definition gui_label_group_subsystem.h:40
int32_t labelWidth
shared label width, CSS px
Definition gui_label_group_subsystem.h:32
bool edgeDragging
a label's resize edge is being dragged
Definition gui_label_group_subsystem.h:37
bool resizable
false: the width fits the widest label instead
Definition gui_label_group_subsystem.h:35
int32_t maxWidth
CSS px.
Definition gui_label_group_subsystem.h:34
bool anyLabelHovered
transient: set during construction if any label has hover
Definition gui_label_group_subsystem.h:38
bool edgeHovered
a label's resize edge is hovered
Definition gui_label_group_subsystem.h:36