asciigen/options.go
2026-08-26 11:56:56 +03:00

66 lines
No EOL
3.5 KiB
Go
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.

package asciigen
// Palette — набор символов от тёмного к светлому (или наоборот при Invert).
type Palette string
const (
// PaletteBlocks — контрастная палитра, хорошо читается на глаз.
PaletteBlocks Palette = "@%#*+=-:. "
// PaletteMinimal — всего 2 символа, для мелких превью.
PaletteMinimal Palette = "#."
// PaletteDetailed — длинная градация, больше полутонов.
PaletteDetailed Palette = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\|()1{}[]?-_+~<>i!lI;:,\"^`'. "
)
// ImageOptions — параметры рендера картинки в ASCII.
type ImageOptions struct {
Width int // ширина результата в символах
Height int // 0 = вычисляется автоматически по аспекту (клетка символа ~2:1)
Palette Palette
Invert bool // поменять местами тёмное/светлое
Color bool // цветной вывод через ANSI-коды (24-bit)
Gamma float64 // 1.0 = без изменений; <1 светлее тени, >1 контрастнее
}
// TextOptions — параметры рендера текстового баннера (FIGlet).
type TextOptions struct {
Font string // имя шрифта FIGlet, напр. "standard", "big", "slant", "block"
Width int // ширина переноса строк, 0 = без переноса
}
// defaultImagePresets — набор пресетов для первого экрана выбора.
// Каждый пресет — это отдельный Variant, а не отдельный алгоритм:
// меняются только Palette/Gamma/Invert поверх одного и того же движка.
func defaultImagePresets() map[string]ImageOptions {
return map[string]ImageOptions{
"blocks-standard": {Palette: PaletteBlocks, Gamma: 1.0},
"blocks-inverted": {Palette: PaletteBlocks, Gamma: 1.0, Invert: true},
"detailed": {Palette: PaletteDetailed, Gamma: 1.0},
"high-contrast": {Palette: PaletteBlocks, Gamma: 1.6},
"minimal": {Palette: PaletteMinimal, Gamma: 1.0},
}
}
// defaultFonts — пресеты шрифтов для текстового баннера.
// Список сверен со встроенными в go-figure шрифтами (пакет их держит
// вшитыми через go-bindata, так что это не файлы на диске, а константы
// имён). Подобраны по разнообразию стиля, а не просто первые в алфавите —
// иначе часть вариантов выглядела бы почти одинаково.
func defaultFonts() []string {
return []string{
"standard", // базовый, читаемый
"big", // крупный жирный
"slant", // курсив с наклоном
"small", // компактный
"block", // блочные буквы
"shadow", // с тенью
"banner", // широкий баннерный
"bubble", // "пузырьковые" буквы
"digital", // под LCD-индикатор
"doom", // угловатый, агрессивный
"graffiti", // граффити-стиль
"isometric1", // псевдо-3D
"larry3d", // объёмный 3D
"starwars", // тематический декоративный
}
}