/
d.vision
/
division_engine_cpp
Обзор
Документация
Войти
/
d.vision
/
division_engine_cpp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
resources/scripts/views/aligned.lua
41 строка
1 KB
den163
Improved annotations
27 ноя 2024, 11:06
27 ноя 2024, 11:06
0828538
Код
Авторство
О чём код?
local alignment = require 'alignment' local constraints = require 'constraints' local rect = require 'rect' local vec2 = require 'vec2' local single_child_view = require 'views.single_child_view' ---@class aligned.options ---@field alignment vec2 ---@field child view ---@class aligned: single_child_view, aligned.options ---@overload fun(options: aligned.options): aligned ---@diagnostic disable-next-line: assign-type-mismatch local aligned = single_child_view:inherit 'aligned' ---@class align.state: single_child_view.state aligned.state = single_child_view.state:inherit 'aligned.state' ---@param options aligned.options function aligned:__call(options) assert(options.child) options.alignment = options.alignment or alignment.center return aligned:new(options) end ---@param render_rect rect ---@param view aligned function aligned.state:render(render_rect, view) local render_constraints = constraints.new(vec2(0), render_rect:size()) local child_constrained_size = self.child_state:layout(render_constraints, view.child) local child_size = child_constrained_size:to_vec2_or(render_rect:size()) local child_rect = rect .from_bottom_left(vec2(0), child_size) :align_in(render_rect, view.alignment) self.child_state:render(child_rect, view.child) end return aligned