72 lines
2.9 KiB
Markdown
72 lines
2.9 KiB
Markdown
# Zivro
|
||
|
||
Графическое приложение на Zig + DVUI/SDL3 для работы с документом фигур (линия, эллипс, ломаная) и CPU-рендерингом сцены.
|
||
|
||
## Что умеет
|
||
|
||
- Открывать и сохранять документ в JSON (`File -> Open`, `File -> Save As`).
|
||
- Создавать новый документ и управлять несколькими открытыми вкладками.
|
||
- Добавлять и удалять объекты в иерархическом дереве.
|
||
- Отображать сцену в canvas и переключать параметры рендера (quality, stats, redraw).
|
||
|
||
## Технологии
|
||
|
||
- [Zig](https://ziglang.org/) `0.15.2+`
|
||
- [DVUI](https://github.com/david-vanderson/dvui) (backend `sdl3`)
|
||
- SDL3 (через зависимость DVUI)
|
||
|
||
## Быстрый старт
|
||
|
||
```bash
|
||
git clone <your-fork-or-repo-url>
|
||
cd Zivro
|
||
zig build run
|
||
```
|
||
|
||
После запуска в окне приложения нажмите `New document`, чтобы создать первый документ.
|
||
|
||
## Сборка и запуск
|
||
|
||
```bash
|
||
# Debug build
|
||
zig build
|
||
|
||
# Запуск приложения
|
||
zig build run
|
||
|
||
# Тесты
|
||
zig build test
|
||
```
|
||
|
||
Передача аргументов в приложение:
|
||
|
||
```bash
|
||
zig build run -- <arg1> <arg2>
|
||
```
|
||
|
||
## Структура проекта
|
||
|
||
- `src/main.zig` — точка входа и главный цикл окна/событий.
|
||
- `src/ui/` — меню, панели, вкладки, canvas-представление.
|
||
- `src/models/` — документ, объекты, shape-модели.
|
||
- `src/render/` — абстракции рендера и CPU-реализация.
|
||
- `src/persistence/` — JSON импорт/экспорт документов.
|
||
- `build.zig` — описание шагов `build`, `run`, `test`.
|
||
- `Report/` — материалы отчёта и диаграммы.
|
||
|
||
## Формат данных
|
||
|
||
Документы сохраняются как JSON. Операции чтения/записи реализованы в `src/persistence/json_io.zig`, а структура документа — в `src/models/Document.zig`.
|
||
|
||
## Troubleshooting
|
||
|
||
- **Ошибка линковки вида `R_X86_64_PC64 ... crt1.o:.sframe` при `zig build test`**
|
||
Обычно связана с несовместимостью toolchain линкера/системных CRT на некоторых Linux-конфигурациях.
|
||
Проверьте актуальность Zig и системного toolchain; при необходимости попробуйте другой Zig/toolchain пакет.
|
||
|
||
## Разработка
|
||
|
||
- Тестовый root: `src/tests.zig` (подключает модули с `test`-блоками).
|
||
- Для добавления тестов в общий прогон подключайте модуль через `@import(...)` в `src/tests.zig`.
|
||
|