50 lines
1.6 KiB
Plaintext
50 lines
1.6 KiB
Plaintext
@startuml
|
|
title Zivro: компонентная архитектура
|
|
|
|
skinparam componentStyle rectangle
|
|
skinparam shadowing false
|
|
|
|
package "UI Layer" {
|
|
[main.zig\nEvent Loop]
|
|
[ui/*\nMenu/Tab/Panels]
|
|
[Canvas.zig\nViewport + Redraw]
|
|
}
|
|
|
|
package "Application State" {
|
|
[WindowContext.zig\nOpenDocument tabs]
|
|
[models/Document.zig\nObject tree]
|
|
[models/Object.zig\nProperties + Children]
|
|
}
|
|
|
|
package "Render Layer" {
|
|
[RenderEngine.zig\nInterface]
|
|
[CpuRenderEngine.zig\nCPU backend]
|
|
[cpu/draw.zig\nRecursive draw]
|
|
[cpu/pipeline.zig\nTransforms + blend]
|
|
[cpu/line.zig]
|
|
[cpu/ellipse.zig]
|
|
[cpu/broken.zig]
|
|
}
|
|
|
|
package "Persistence" {
|
|
[persistence/json_io.zig]
|
|
}
|
|
|
|
[main.zig\nEvent Loop] --> [WindowContext.zig\nOpenDocument tabs]
|
|
[ui/*\nMenu/Tab/Panels] --> [WindowContext.zig\nOpenDocument tabs]
|
|
[Canvas.zig\nViewport + Redraw] --> [RenderEngine.zig\nInterface]
|
|
[Canvas.zig\nViewport + Redraw] --> [models/Document.zig\nObject tree]
|
|
[WindowContext.zig\nOpenDocument tabs] --> [Canvas.zig\nViewport + Redraw]
|
|
[WindowContext.zig\nOpenDocument tabs] --> [CpuRenderEngine.zig\nCPU backend]
|
|
|
|
[RenderEngine.zig\nInterface] <|.. [CpuRenderEngine.zig\nCPU backend]
|
|
[CpuRenderEngine.zig\nCPU backend] --> [cpu/draw.zig\nRecursive draw]
|
|
[cpu/draw.zig\nRecursive draw] --> [cpu/pipeline.zig\nTransforms + blend]
|
|
[cpu/draw.zig\nRecursive draw] --> [cpu/line.zig]
|
|
[cpu/draw.zig\nRecursive draw] --> [cpu/ellipse.zig]
|
|
[cpu/draw.zig\nRecursive draw] --> [cpu/broken.zig]
|
|
[models/Document.zig\nObject tree] --> [models/Object.zig\nProperties + Children]
|
|
[persistence/json_io.zig] ..> [models/Document.zig\nObject tree] : save/load
|
|
|
|
@enduml
|