mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-10-08 08:55:46 +00:00
68 lines
2.0 KiB
C
68 lines
2.0 KiB
C
// Copyright (c) Epic Games Tools
|
|
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
|
|
|
#ifndef CONFIG_PANELS_H
|
|
#define CONFIG_PANELS_H
|
|
|
|
typedef struct CFG_PanelNode CFG_PanelNode;
|
|
struct CFG_PanelNode
|
|
{
|
|
// rjf: links data
|
|
CFG_PanelNode *first;
|
|
CFG_PanelNode *last;
|
|
CFG_PanelNode *next;
|
|
CFG_PanelNode *prev;
|
|
CFG_PanelNode *parent;
|
|
U64 child_count;
|
|
CFG_Node *cfg;
|
|
|
|
// rjf: split data
|
|
Axis2 split_axis;
|
|
F32 pct_of_parent;
|
|
|
|
// rjf: tab params
|
|
Side tab_side;
|
|
|
|
// rjf: which tabs are attached
|
|
CFG_NodePtrList tabs;
|
|
CFG_Node *selected_tab;
|
|
};
|
|
|
|
typedef struct CFG_PanelTree CFG_PanelTree;
|
|
struct CFG_PanelTree
|
|
{
|
|
CFG_PanelNode *root;
|
|
CFG_PanelNode *focused;
|
|
};
|
|
|
|
typedef struct CFG_PanelNodeRec CFG_PanelNodeRec;
|
|
struct CFG_PanelNodeRec
|
|
{
|
|
CFG_PanelNode *next;
|
|
S32 push_count;
|
|
S32 pop_count;
|
|
};
|
|
|
|
read_only global CFG_PanelNode cfg_nil_panel_node =
|
|
{
|
|
&cfg_nil_panel_node,
|
|
&cfg_nil_panel_node,
|
|
&cfg_nil_panel_node,
|
|
&cfg_nil_panel_node,
|
|
&cfg_nil_panel_node,
|
|
0,
|
|
&cfg_nil_node,
|
|
.selected_tab = &cfg_nil_node,
|
|
};
|
|
|
|
internal CFG_Node *cfg_window_from_cfg(CFG_Node *cfg);
|
|
internal CFG_PanelTree cfg_panel_tree_from_cfg(Arena *arena, CFG_Node *cfg_root);
|
|
internal CFG_PanelNodeRec cfg_panel_node_rec__depth_first(CFG_PanelNode *root, CFG_PanelNode *panel, U64 sib_off, U64 child_off);
|
|
#define cfg_panel_node_rec__depth_first_pre(root, p) cfg_panel_node_rec__depth_first((root), (p), OffsetOf(CFG_PanelNode, next), OffsetOf(CFG_PanelNode, first))
|
|
#define cfg_panel_node_rec__depth_first_pre_rev(root, p) cfg_panel_node_rec__depth_first((root), (p), OffsetOf(CFG_PanelNode, prev), OffsetOf(CFG_PanelNode, last))
|
|
internal CFG_PanelNode *cfg_panel_node_from_tree_cfg(CFG_PanelNode *root, CFG_Node *cfg);
|
|
internal Rng2F32 cfg_target_rect_from_panel_node_child(Rng2F32 parent_rect, CFG_PanelNode *parent, CFG_PanelNode *panel);
|
|
internal Rng2F32 cfg_target_rect_from_panel_node(Rng2F32 root_rect, CFG_PanelNode *root, CFG_PanelNode *panel);
|
|
|
|
#endif // CONFIG_PANELS_H
|