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", // тематический декоративный } }