# 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 cd Zivro zig build run ``` После запуска в окне приложения нажмите `New document`, чтобы создать первый документ. ## Сборка и запуск ```bash # Debug build zig build # Запуск приложения zig build run # Тесты zig build test ``` Передача аргументов в приложение: ```bash zig build run -- ``` ## Структура проекта - `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`.