75 lines
2.2 KiB
Plaintext
75 lines
2.2 KiB
Plaintext
@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
|