@startuml title Компоненты проекта Wayland package "Wayland Application" { [wayland-runtime] as Runtime [registry] as Registry [input] as Input [input-handle] as InputHandle [window] as Window package "Rendering & Animation" { [figure-draw] as FigureDraw [figure-animate (ASM)] as FigureAnimate } Runtime --> Registry : использует глобальные объекты Runtime --> Input : инициализирует Runtime --> Window : создаёт и управляет Input --> InputHandle : делегирует обработку InputHandle --> Runtime : вызывает run_window() InputHandle --> Window : изменяет параметры фигуры Window --> Registry : получает compositor, shm, wm_base Window --> FigureDraw : отрисовка фигуры Window --> FigureAnimate : aux_thread для анимации FigureDraw --> FigureAnimate : использует place_points_on_circle } package "System Libraries" { [wayland-client] as WaylandLib [xdg-shell-protocol] as XDGShell [xkbcommon] as XKB } Registry --> WaylandLib Registry --> XDGShell Window --> WaylandLib Window --> XDGShell Input --> WaylandLib Input --> XKB cloud "Wayland Compositor" as Compositor Runtime --> Compositor : wl_display_connect() Registry --> Compositor : получение глобальных объектов Window --> Compositor : создание окон и буферов Input --> Compositor : получение событий клавиатуры note right of Runtime Центральный компонент: - Управление жизненным циклом - Многопоточность (окна + анимация) - Синхронизация через mutex end note note right of FigureAnimate Реализация на NASM: - Физика движения - Обработка коллизий - Математика (sin/cos) - SSE инструкции end note note right of Window Каждое окно в отдельном потоке: - window_thread: отрисовка - aux_thread: анимация - Event queue для изоляции событий end note @enduml