48 lines
2.7 KiB
Markdown
48 lines
2.7 KiB
Markdown
# 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"
|
||
```
|