asciigen/README.md
2026-08-26 11:56:56 +03:00

48 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# asciigen — скелет проекта
## Структура
```
asciigen/
├── go.mod
├── variant.go # тип Variant + интерфейс Renderer
├── options.go # ImageOptions/TextOptions, палитры, пресеты
├── image.go # ImageRenderer — картинка -> ASCII
├── text.go # TextRenderer — текст -> FIGlet-баннер
├── tui/
│ └── model.go # bubbletea-модель: список превью + выбор
└── cmd/asciigen/
└── main.go # CLI: `asciigen img file.png` / `asciigen text "Hello"`
```
Ядро (`asciigen.Renderer`) не знает о TUI и не знает о CLI — можно
подключить как библиотеку в другой Go-проект (auspex, rimefrost и т.д.)
и обвязать своим интерфейсом, ничего не переписывая внутри пакета.
Подробный разбор потока данных и почему всё разложено именно так —
см. **[ARCHITECTURE.md](./ARCHITECTURE.md)**.
## Что уже готово
- Интерфейс `Renderer` с двумя реализациями (`ImageRenderer`, `TextRenderer`)
- Пресеты вариантов (палитры для картинок, шрифты для текста)
- TUI на bubbletea: навигация стрелками, превью справа, Enter — полный рендер
- CLI-обвязка с двумя подкомандами
- `image.go``render()` реализован полностью: ресайз, яркость (luma),
гамма-коррекция, инверсия, маппинг на палитру, опциональный ANSI-цвет
## Что нужно доделать
- `go.sum` — появится сам после `go mod tidy` (нужен доступ к proxy.golang.org,
которого нет в этой песочнице, так что тут не собирал и не компилировал)
- Реальный запуск и визуальная проверка на конкретных картинках — стоит
подобрать `Gamma` под глаз, цифры в пресетах сейчас ориентировочные
- См. "Известные ограничения" в ARCHITECTURE.md — сознательно не решённые
мелочи (авто-определение ширины терминала, оптимизация ANSI-вывода)
## Запуск (после `go mod tidy` у себя)
```
go run ./cmd/asciigen img photo.png
go run ./cmd/asciigen text "HELLO"
```