7.5 KiB
druid.container API
at /druid/extended/container.lua
Druid component to manage the size and positions with other containers relations to create a adaptable layouts.
Setup
Create container component with druid: container = druid:new_container(node, mode, callback)
Notes
- Container can be used to create adaptable layouts that respond to window size changes
- Container supports different layout modes: FIT, STRETCH, STRETCH_X, STRETCH_Y
- Container can be nested inside other containers
- Container supports fixed margins and percentage-based sizing
- Container can be positioned using pivot points
- Container supports minimum size constraints
- Container can be fitted into window or custom size
Functions
- init
- refresh_origins
- set_pivot
- set_size
- get_position
- set_position
- get_size
- get_scale
- fit_into_size
- fit_into_window
- add_container
- remove_container_by_node
- set_parent_container
- refresh
- refresh_scale
- update_child_containers
- create_draggable_corners
- clear_draggable_corners
- fit_into_node
- set_min_size
Fields
- node
- druid
- node_offset
- origin_size
- size
- origin_position
- position
- pivot_offset
- center_offset
- mode
- fit_size
- min_size_x
- min_size_y
- on_size_changed
- node_fill_x
- node_fill_y
- x_koef
- y_koef
- x_anchor
- y_anchor
- style
init
container:init(node, mode, [callback])
The Container constructor
- Parameters:
node
(node): Gui nodemode
(string): Layout mode[callback]
(fun(self: druid.container, size: vector3)|nil): Callback on size changed
refresh_origins
container:refresh_origins()
Refresh the origins of the container, origins is the size and position of the container when it was created
set_pivot
container:set_pivot(pivot)
Set the pivot of the container
- Parameters:
pivot
(constant): The pivot to set
set_size
container:set_size([width], [height], [anchor_pivot])
Set new size of layout node
-
Parameters:
[width]
(number|nil): The width to set[height]
(number|nil): The height to set[anchor_pivot]
(constant|nil): If set will keep the corner possition relative to the new size
-
Returns:
Container
(druid.container):
get_position
container:get_position()
Get the position of the container
- Returns:
position
(vector3): The position of the container
set_position
container:set_position(pos_x, pos_y)
Set the position of the container
- Parameters:
pos_x
(number): The x position to setpos_y
(number): The y position to set
get_size
container:get_size()
Get the current size of the layout node
- Returns:
size
(vector3): The current size of the layout node
get_scale
container:get_scale()
Get the current scale of the layout node
- Returns:
scale
(vector3): The current scale of the layout node
fit_into_size
container:fit_into_size(target_size)
Set size for layout node to fit inside it
-
Parameters:
target_size
(vector3): The target size to fit into
-
Returns:
self
(druid.container): Current container instance
fit_into_window
container:fit_into_window()
Set current size for layout node to fit inside it
- Returns:
self
(druid.container): Current container instance
add_container
container:add_container(node_or_container, [mode], [on_resize_callback])
-
Parameters:
node_or_container
(string|table|druid.container|node): The node or container to add[mode]
(string|nil): stretch, fit, stretch_x, stretch_y. Default: Pick from node, "fit" or "stretch"[on_resize_callback]
(fun(self: userdata, size: vector3)|nil):
-
Returns:
Container
(druid.container): New created layout instance
remove_container_by_node
container:remove_container_by_node([node])
-
Parameters:
[node]
(any):
-
Returns:
- `` (druid.container|nil):
set_parent_container
container:set_parent_container([parent_container])
- Parameters:
[parent_container]
(druid.container|nil): Druid component to manage the size and positions with other containers relations to create a adaptable layouts.
refresh
container:refresh()
Glossary Center Offset - vector from node position to visual center of node
refresh_scale
container:refresh_scale()
update_child_containers
container:update_child_containers()
create_draggable_corners
container:create_draggable_corners()
- Returns:
self
(druid.container): Current container instance
clear_draggable_corners
container:clear_draggable_corners()
- Returns:
self
(druid.container): Current container instance
fit_into_node
container:fit_into_node(node)
Set node for layout node to fit inside it. Pass nil to reset
-
Parameters:
node
(string|node): The node_id or gui.get_node(node_id)
-
Returns:
self
(druid.container): Current container instance
set_min_size
container:set_min_size([min_size_x], [min_size_y])
Set the minimum size of the container
-
Parameters:
[min_size_x]
(number|nil): The minimum size x[min_size_y]
(number|nil): The minimum size y
-
Returns:
self
(druid.container): Current container instance
Fields
- node (node): The gui node
- druid (druid.instance): The druid instance
- node_offset (vector4): The node offset
- origin_size (vector3): The origin size
- size (vector3): The current size
- origin_position (vector3): The origin position
- position (vector3): The current position
- pivot_offset (vector3): The pivot offset
- center_offset (vector3): The center offset
- mode (string): The layout mode
- fit_size (vector3): The fit size
- min_size_x (number): The minimum size x
- min_size_y (number): The minimum size y
- on_size_changed (event): fun(self: druid.container, size: vector3) The event triggered when the size changes
- node_fill_x (nil)
- node_fill_y (nil)
- x_koef (number)
- y_koef (number)
- x_anchor (unknown)
- y_anchor (unknown)
- style (table)