This commit is contained in:
2026-05-05 18:20:25 +03:00
parent 9cff466ddb
commit 58d162ff5c

71
README.md Normal file
View File

@@ -0,0 +1,71 @@
# 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`.