Ascii Art Widget
This commit is contained in:
443
wdgt_asciiarttext.go
Normal file
443
wdgt_asciiarttext.go
Normal file
@@ -0,0 +1,443 @@
|
||||
/*
|
||||
Copyright © Brian Buller <brian@bullercodeworks.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
package widgets
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
"unicode"
|
||||
|
||||
"github.com/gdamore/tcell"
|
||||
)
|
||||
|
||||
// ArtWidget displays it's text as ascii art.
|
||||
type ArtWidget struct {
|
||||
id string
|
||||
x, y int
|
||||
w, h int
|
||||
style tcell.Style
|
||||
|
||||
active bool
|
||||
visible bool
|
||||
focusable bool
|
||||
|
||||
font string
|
||||
text string
|
||||
keyMap KeyMap
|
||||
|
||||
allFonts []ArtWidgetFont
|
||||
currFont ArtWidgetFont
|
||||
|
||||
logger func(string, ...any)
|
||||
}
|
||||
|
||||
var _ Widget = (*ArtWidget)(nil)
|
||||
|
||||
func NewArtWidget(id string, st tcell.Style) *ArtWidget {
|
||||
ret := &ArtWidget{}
|
||||
ret.Init(id, st)
|
||||
return ret
|
||||
}
|
||||
|
||||
func (w *ArtWidget) Init(id string, st tcell.Style) {
|
||||
w.id = id
|
||||
w.style = st
|
||||
w.keyMap = BlankKeyMap()
|
||||
w.initFonts()
|
||||
}
|
||||
func (w *ArtWidget) Id() string { return w.id }
|
||||
func (w *ArtWidget) HandleResize(ev *tcell.EventResize) { w.w, w.h = ev.Size() }
|
||||
func (w *ArtWidget) SetKeyMap(km KeyMap) { w.keyMap = km }
|
||||
func (w *ArtWidget) AddToKeyMap(km KeyMap) { w.keyMap.Merge(km) }
|
||||
func (w *ArtWidget) RemoveFromKeyMap(km KeyMap) {
|
||||
for k := range km.Keys {
|
||||
w.keyMap.Remove(k)
|
||||
}
|
||||
for r := range km.Runes {
|
||||
w.keyMap.RemoveRune(r)
|
||||
}
|
||||
}
|
||||
func (w *ArtWidget) HandleKey(ev *tcell.EventKey) bool { return false }
|
||||
func (w *ArtWidget) HandleTime(ev *tcell.EventTime) {}
|
||||
func (w *ArtWidget) Draw(screen tcell.Screen) {
|
||||
x, y := w.x, w.y
|
||||
for _, ch := range w.text {
|
||||
w.drawRune(ch, x, y, screen)
|
||||
x += w.getRuneWidth(ch)
|
||||
}
|
||||
}
|
||||
|
||||
func (w *ArtWidget) drawRune(r rune, x, y int, screen tcell.Screen) {
|
||||
wx, wy := x, y
|
||||
rs := w.getRune(r)
|
||||
for _, ln := range rs {
|
||||
wx = x
|
||||
for _, d := range ln {
|
||||
screen.SetContent(wx, wy, d, nil, w.style)
|
||||
wx++
|
||||
}
|
||||
wy++
|
||||
}
|
||||
}
|
||||
|
||||
func (w *ArtWidget) getRune(r rune) [][]rune { return w.currFont.GetRune(r) }
|
||||
func (w *ArtWidget) getRuneHeight(r rune) int { return len(w.getRune(r)) }
|
||||
func (w *ArtWidget) getRuneWidth(r rune) int {
|
||||
rn := w.getRune(r)
|
||||
if len(rn) > 0 {
|
||||
return len(rn[0])
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (w *ArtWidget) Active() bool { return w.active }
|
||||
func (w *ArtWidget) SetActive(a bool) { w.active = a }
|
||||
func (w *ArtWidget) Visible() bool { return w.visible }
|
||||
func (w *ArtWidget) SetVisible(v bool) { w.visible = v }
|
||||
func (w *ArtWidget) Focusable() bool { return w.focusable }
|
||||
func (w *ArtWidget) SetFocusable(t bool) { w.focusable = t }
|
||||
func (w *ArtWidget) SetX(x int) { w.x = x }
|
||||
func (w *ArtWidget) SetY(y int) { w.y = y }
|
||||
func (w *ArtWidget) GetX() int { return w.x }
|
||||
func (w *ArtWidget) GetY() int { return w.y }
|
||||
func (w *ArtWidget) GetPos() Coord { return Coord{X: w.x, Y: w.y} }
|
||||
func (w *ArtWidget) SetPos(pos Coord) { w.x, w.y = pos.X, pos.Y }
|
||||
func (w *ArtWidget) SetSize(size Coord) { w.w, w.h = size.X, size.Y }
|
||||
func (w *ArtWidget) SetW(wd int) { w.w = wd }
|
||||
func (w *ArtWidget) SetH(h int) { w.h = h }
|
||||
func (w *ArtWidget) GetW() int { return w.w }
|
||||
func (w *ArtWidget) GetH() int { return w.h }
|
||||
|
||||
func (w *ArtWidget) WantW() int {
|
||||
var wd int
|
||||
for _, ch := range w.text {
|
||||
r := w.getRune(ch)
|
||||
if len(r) > 0 {
|
||||
wd += len(r[0])
|
||||
}
|
||||
}
|
||||
w.Log("%s: Want Width: %d", w.Id(), wd)
|
||||
return wd
|
||||
}
|
||||
|
||||
func (w *ArtWidget) WantH() int {
|
||||
h := len(w.getRune('Q'))
|
||||
w.Log("%s: Want Height: %d", w.Id(), h)
|
||||
return h
|
||||
}
|
||||
func (w *ArtWidget) MinW() int { return w.WantW() }
|
||||
func (w *ArtWidget) MinH() int { return w.WantH() }
|
||||
|
||||
func (w *ArtWidget) SetText(txt string) { w.text = txt }
|
||||
func (w *ArtWidget) GetText() string { return w.text }
|
||||
|
||||
func (w *ArtWidget) SetFont(fnt string) { w.font = fnt }
|
||||
func (w *ArtWidget) GetFont() string { return w.font }
|
||||
|
||||
func (w *ArtWidget) initFonts() {
|
||||
f := NewArtWidgetFont("miniwi")
|
||||
f.SetRune('a', [][]rune{{' ', ' '}, {'▀', '▌'}, {'█', '▌'}, {' ', ' '}})
|
||||
f.SetRune('b', [][]rune{{'▌', ' '}, {'▛', '▌'}, {'▙', '▌'}, {' ', ' '}})
|
||||
f.SetRune('c', [][]rune{{' ', ' '}, {'▛', '▘'}, {'▙', '▖'}, {' ', ' '}})
|
||||
f.SetRune('d', [][]rune{{' ', '▌'}, {'▛', '▌'}, {'▙', '▌'}, {' ', ' '}})
|
||||
f.SetRune('e', [][]rune{{' ', ' '}, {'█', '▌'}, {'▙', '▖'}, {' ', ' '}})
|
||||
f.SetRune('f', [][]rune{{'▐', '▘'}, {'▜', '▘'}, {'▐', ' '}, {' ', ' '}})
|
||||
f.SetRune('g', [][]rune{{' ', ' '}, {'▛', '▌'}, {'▙', '▌'}, {'▄', '▌'}})
|
||||
f.SetRune('h', [][]rune{{'▌', ' '}, {'▛', '▌'}, {'▌', '▌'}, {' ', ' '}})
|
||||
f.SetRune('i', [][]rune{{'▘'}, {'▌'}, {'▌'}, {' '}})
|
||||
f.SetRune('j', [][]rune{{' ', '▘'}, {' ', '▌'}, {' ', '▌'}, {'▙', '▌'}})
|
||||
f.SetRune('k', [][]rune{{'▌', ' '}, {'▙', '▘'}, {'▛', '▖'}, {' ', ' '}})
|
||||
f.SetRune('l', [][]rune{{'▜', ' '}, {'▐', ' '}, {'▐', '▖'}, {' ', ' '}})
|
||||
f.SetRune('m', [][]rune{{' ', ' ', ' '}, {'▛', '▛', '▌'}, {'▌', '▌', '▌'}, {' ', ' ', ' '}})
|
||||
f.SetRune('n', [][]rune{{' ', ' '}, {'▛', '▌'}, {'▌', '▌'}, {' ', ' '}})
|
||||
f.SetRune('o', [][]rune{{' ', ' '}, {'▛', '▌'}, {'▙', '▌'}, {' ', ' '}})
|
||||
f.SetRune('p', [][]rune{{' ', ' '}, {'▛', '▌'}, {'▙', '▌'}, {'▌', ' '}})
|
||||
f.SetRune('q', [][]rune{{' ', ' '}, {'▛', '▌'}, {'▙', '▌'}, {' ', '▌'}})
|
||||
f.SetRune('r', [][]rune{{' ', ' '}, {'▛', '▘'}, {'▌', ' '}, {' ', ' '}})
|
||||
f.SetRune('s', [][]rune{{' ', ' '}, {'▛', '▘'}, {'▄', '▌'}, {' ', ' '}})
|
||||
f.SetRune('t', [][]rune{{'▗', ' '}, {'▜', '▘'}, {'▐', '▖'}, {' ', ' '}})
|
||||
f.SetRune('u', [][]rune{{' ', ' '}, {'▌', '▌'}, {'▙', '▌'}, {' ', ' '}})
|
||||
f.SetRune('v', [][]rune{{' ', ' '}, {'▌', '▌'}, {'▚', '▘'}, {' ', ' '}})
|
||||
f.SetRune('w', [][]rune{{' ', ' ', ' '}, {'▌', '▌', '▌'}, {'▚', '▚', '▘'}, {' ', ' ', ' '}})
|
||||
f.SetRune('x', [][]rune{{' ', ' '}, {'▚', '▘'}, {'▞', '▖'}, {' ', ' '}})
|
||||
f.SetRune('y', [][]rune{{' ', ' '}, {'▌', '▌'}, {'▙', '▌'}, {'▄', '▌'}})
|
||||
f.SetRune('z', [][]rune{{' ', ' '}, {'▀', '▌'}, {'▙', '▖'}, {' ', ' '}})
|
||||
f.SetRune('A', [][]rune{{'▄', '▖'}, {'▌', '▌'}, {'▛', '▌'}, {' ', ' '}})
|
||||
f.SetRune('B', [][]rune{{'▄', ' '}, {'▙', '▘'}, {'▙', '▘'}, {' ', ' '}})
|
||||
f.SetRune('C', [][]rune{{'▄', '▖'}, {'▌', ' '}, {'▙', '▖'}, {' ', ' '}})
|
||||
f.SetRune('D', [][]rune{{'▄', ' '}, {'▌', '▌'}, {'▙', '▘'}, {' ', ' '}})
|
||||
f.SetRune('E', [][]rune{{'▄', '▖'}, {'▙', '▖'}, {'▙', '▖'}, {' ', ' '}})
|
||||
f.SetRune('F', [][]rune{{'▄', '▖'}, {'▙', '▖'}, {'▌', ' '}, {' ', ' '}})
|
||||
f.SetRune('G', [][]rune{{'▄', '▖'}, {'▌', ' '}, {'▙', '▌'}, {' ', ' '}})
|
||||
f.SetRune('H', [][]rune{{'▖', '▖'}, {'▙', '▌'}, {'▌', '▌'}, {' ', ' '}})
|
||||
f.SetRune('I', [][]rune{{'▄', '▖'}, {'▐', ' '}, {'▟', '▖'}, {' ', ' '}})
|
||||
f.SetRune('J', [][]rune{{' ', '▖'}, {' ', '▌'}, {'▙', '▌'}, {' ', ' '}})
|
||||
f.SetRune('K', [][]rune{{'▖', '▖'}, {'▙', '▘'}, {'▌', '▌'}, {' ', ' '}})
|
||||
f.SetRune('L', [][]rune{{'▖', ' '}, {'▌', ' '}, {'▙', '▖'}, {' ', ' '}})
|
||||
f.SetRune('M', [][]rune{{'▖', ' ', ' ', '▖'}, {'▛', '▖', '▞', '▌'}, {'▌', '▝', ' ', '▌'}, {' ', ' ', ' ', ' '}})
|
||||
f.SetRune('N', [][]rune{{'▖', ' ', '▖'}, {'▛', '▖', '▌'}, {'▌', '▝', '▌'}, {' ', ' ', ' '}})
|
||||
f.SetRune('O', [][]rune{{'▄', '▖'}, {'▌', '▌'}, {'▙', '▌'}, {' ', ' '}})
|
||||
f.SetRune('P', [][]rune{{'▄', '▖'}, {'▙', '▌'}, {'▌', ' '}, {' ', ' '}})
|
||||
f.SetRune('Q', [][]rune{{'▄', '▖'}, {'▌', '▌'}, {'█', '▌'}, {' ', '▘'}})
|
||||
f.SetRune('R', [][]rune{{'▄', '▖'}, {'▙', '▘'}, {'▌', '▌'}, {' ', ' '}})
|
||||
f.SetRune('S', [][]rune{{'▄', '▖'}, {'▚', ' '}, {'▄', '▌'}, {' ', ' '}})
|
||||
f.SetRune('T', [][]rune{{'▄', '▖'}, {'▐', ' '}, {'▐', ' '}, {' ', ' '}})
|
||||
f.SetRune('U', [][]rune{{'▖', '▖'}, {'▌', '▌'}, {'▙', '▌'}, {' ', ' '}})
|
||||
f.SetRune('V', [][]rune{{'▖', '▖'}, {'▌', '▌'}, {'▚', '▘'}, {' ', ' '}})
|
||||
f.SetRune('W', [][]rune{{'▖', ' ', ' ', '▖'}, {'▌', '▞', '▖', '▌'}, {'▛', ' ', '▝', '▌'}, {' ', ' ', ' ', ' '}})
|
||||
f.SetRune('X', [][]rune{{'▖', '▖'}, {'▚', '▘'}, {'▌', '▌'}, {' ', ' '}})
|
||||
f.SetRune('Y', [][]rune{{'▖', '▖'}, {'▌', '▌'}, {'▐', ' '}, {' ', ' '}})
|
||||
f.SetRune('Z', [][]rune{{'▄', '▖'}, {'▗', '▘'}, {'▙', '▖'}, {' ', ' '}})
|
||||
f.SetRune(' ', [][]rune{{' ', ' '}, {' ', ' '}, {' ', ' '}, {' ', ' '}})
|
||||
w.allFonts = append(w.allFonts, *f)
|
||||
w.currFont = *f
|
||||
}
|
||||
|
||||
func (w *ArtWidget) SetLogger(l func(string, ...any)) { w.logger = l }
|
||||
func (w *ArtWidget) Log(txt string, args ...any) {
|
||||
if w.logger != nil {
|
||||
txt = fmt.Sprintf("%s:%s", time.Now().Format(time.TimeOnly), txt)
|
||||
w.logger(txt, args...)
|
||||
}
|
||||
}
|
||||
|
||||
type ArtWidgetFont struct {
|
||||
name string
|
||||
runes map[rune][][]rune
|
||||
}
|
||||
|
||||
func NewArtWidgetFont(nm string) *ArtWidgetFont {
|
||||
return &ArtWidgetFont{
|
||||
name: nm,
|
||||
runes: make(map[rune][][]rune),
|
||||
}
|
||||
}
|
||||
|
||||
func (f *ArtWidgetFont) HasLower() bool {
|
||||
// Naively just check if the map has an 'a' element
|
||||
_, ok := f.runes['a']
|
||||
return ok
|
||||
}
|
||||
func (f *ArtWidgetFont) SetRune(r rune, bts [][]rune) { f.runes[r] = bts }
|
||||
|
||||
func (f *ArtWidgetFont) GetRune(r rune) [][]rune {
|
||||
if bts, ok := f.runes[r]; ok {
|
||||
return bts
|
||||
}
|
||||
if bts, ok := f.runes[unicode.ToUpper(r)]; ok {
|
||||
return bts
|
||||
}
|
||||
if bts, ok := f.runes[unicode.ToLower(r)]; ok {
|
||||
return bts
|
||||
}
|
||||
return [][]rune{}
|
||||
}
|
||||
|
||||
func (f *ArtWidgetFont) RuneWidth(r rune) int {
|
||||
bts := f.GetRune(r)
|
||||
if len(bts) > 0 {
|
||||
return len(bts[0])
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (f *ArtWidgetFont) RuneHeight(r rune) int {
|
||||
return len(f.GetRune(r))
|
||||
}
|
||||
|
||||
/*
|
||||
# Big
|
||||
## Uppercase
|
||||
____ _____ _____ ______ ______ _____ _ _ _____ _ _ __ __ _ _ ____ _____ ____ _____ _____ _______ _ ___ ____ ____ ____ ________
|
||||
/\ | _ \ / ____| __ \| ____| ____/ ____| | | |_ _| | | | | \/ | \ | |/ __ \| __ \ / __ \| __ \ / ____|__ __| | | \ \ / /\ \ / /\ \ / /\ \ / /___ /
|
||||
/ \ | |_) | | | | | | |__ | |__ | | __| |__| | | | | | | | \ / | \| | | | | |__) | | | | |__) | (___ | | | | | |\ \ / / \ \ /\ / / \ V / \ \_/ / / /
|
||||
/ /\ \ | _ <| | | | | | __| | __|| | |_ | __ | | | _ | | | | |\/| | . ` | | | | ___/| | | | _ / \___ \ | | | | | | \ \/ / \ \/ \/ / > < \ / / /
|
||||
/ ____ \| |_) | |____| |__| | |____| | | |__| | | | |_| || |__| | |____| | | | |\ | |__| | | | |__| | | \ \ ____) | | | | |__| | \ / \ /\ / / . \ | | / /__
|
||||
/_/ \_\____/ \_____|_____/|______|_| \_____|_| |_|_____\____/|______|_| |_|_| \_|\____/|_| \___\_\_| \_\_____/ |_| \____/ \/ \/ \/ /_/ \_\ |_| /_____|
|
||||
## Lowercase
|
||||
_ _ __ _ _ _ _ _ _
|
||||
| | | | / _| | | (_|_) | | | | |
|
||||
__ _| |__ ___ __| | ___| |_ __ _| |__ _ _| | _| |_ __ ___ _ __ ___ _ __ __ _ _ __ ___| |_ _ ___ ____ ____ ___ _ ____
|
||||
/ _` | '_ \ / __/ _` |/ _ \ _/ _` | '_ \| | | |/ / | '_ ` _ \| '_ \ / _ \| '_ \ / _` | '__/ __| __| | | \ \ / /\ \ /\ / /\ \/ / | | |_ /
|
||||
| (_| | |_) | (_| (_| | __/ || (_| | | | | | | <| | | | | | | | | | (_) | |_) | (_| | | \__ \ |_| |_| |\ V / \ V V / > <| |_| |/ /
|
||||
\__,_|_.__/ \___\__,_|\___|_| \__, |_| |_|_| |_|\_\_|_| |_| |_|_| |_|\___/| .__/ \__, |_| |___/\__|\__,_| \_/ \_/\_/ /_/\_\\__, /___|
|
||||
__/ | _/ | | | | | __/ |
|
||||
|___/ |__/ |_| |_| |___/
|
||||
|
||||
# BlurVision
|
||||
░▒▓██████▓▒░░▒▓███████▓▒░ ░▒▓██████▓▒░░▒▓███████▓▒░░▒▓████████▓▒░▒▓████████▓▒░▒▓██████▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓██████████████▓▒░░▒▓███████▓▒░ ░▒▓██████▓▒░░▒▓███████▓▒░ ░▒▓██████▓▒░░▒▓███████▓▒░ ░▒▓███████▓▒░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░
|
||||
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
|
||||
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓██▓▒░
|
||||
░▒▓████████▓▒░▒▓███████▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓██████▓▒░ ░▒▓██████▓▒░░▒▓█▓▒▒▓███▓▒░▒▓████████▓▒░▒▓█▓▒░ ░▒▓█▓▒░▒▓███████▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░ ░▒▓██████▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░ ░▒▓██████▓▒░ ░▒▓██▓▒░
|
||||
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓██▓▒░
|
||||
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▓<E29693>▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
|
||||
░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░ ░▒▓██████▓▒░░▒▓███████▓▒░░▒▓████████▓▒░▒▓█▓▒░ ░▒▓██████▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓██████▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░░▒▓█▓▒░ ░▒▓██████▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░ ░▒▓█▓▒░ ░▒▓██████▓▒░ ░▒▓██▓▒░ ░▒▓█████████████▓▒░░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓████████▓▒░
|
||||
░▒▓█▓▒░
|
||||
░▒▓██▓▒░
|
||||
|
||||
# Bulbhead
|
||||
__ ____ ___ ____ ____ ____ ___ _ _ ____ ____ _ _ __ __ __ _ _ _____ ____ _____ ____ ___ ____ __ __ _ _ _ _ _ _ _ _ ____
|
||||
/__\ ( _ \ / __)( _ \( ___)( ___)/ __)( )_( )(_ _) (_ _)( )/ )( ) ( \/ )( \( )( _ )( _ \( _ )( _ \/ __)(_ _)( )( )( \/ )( \/\/ )( \/ )( \/ )(_ )
|
||||
/(__)\ ) _ <( (__ )(_) ))__) )__)( (_-. ) _ ( _)(_ .-_)( ) ( )(__ ) ( ) ( )(_)( )___/ )(_)( ) /\__ \ )( )(__)( \ / ) ( ) ( \ / / /_
|
||||
(__)(__)(____/ \___)(____/(____)(__) \___/(_) (_)(____)\____) (_)\_)(____)(_/\/\_)(_)\_)(_____)(__) (___/\\(_)\_)(___/ (__) (______) \/ (__/\__)(_/\_) (__) (____)
|
||||
|
||||
# Crawford2
|
||||
____ ____ __ ___ ___ _____ ____ __ __ ____ ____ __ _ _ ___ ___ ____ ___ ____ ___ ____ _____ ______ __ __ __ __ __ __ __ __ __ __ _____
|
||||
/ || \ / ]| \ / _]| | / || | || || || |/ ]| | | | || \ / \ | \ / \ | \ / ___/| || | || | || |__| || | || | || |
|
||||
| o || o ) / / | \ / [_ | __|| __|| | | | | |__ || ' / | | | _ _ || _ || || o ) || D )( \_ | || | || | || | | || | || | ||__/ |
|
||||
| || |/ / | D || _]| |_ | | || _ | | | __| || \ | |___ | \_/ || | || O || _/| Q || / \__ ||_| |_|| | || | || | | ||_ _|| ~ || __|
|
||||
| _ || O / \_ | || [_ | _] | |_ || | | | |/ | || \| || | || | || || | | || \ / \ | | | | : || : || ` ' || ||___, || / |
|
||||
| | || \ || || || | | || | | | |\ ` || . || || | || | || || | | || . \ \ | | | | | \ / \ / | | || || |
|
||||
|__|__||_____|\____||_____||_____||__| |___,_||__|__||____|\____||__|\_||_____||___|___||__|__| \___/ |__| \__,_||__|\_| \___| |__| \__,_| \_/ \_/\_/ |__|__||____/ |_____|
|
||||
|
||||
# Doom
|
||||
## Uppercase
|
||||
___ ______ ___________ ___________ _____ _ _ _____ ___ _ __ _ ___ ___ _ _ ___________ ___________ _____ _____ _ _ _ _ _ ___ ____ ________
|
||||
/ _ \ | ___ \/ __ \ _ \ ___| ___| __ \| | | |_ _| |_ | | / /| | | \/ || \ | | _ | ___ \ _ | ___ \/ ___|_ _| | | | | | || | | \ \ / /\ \ / /___ /
|
||||
/ /_\ \| |_/ /| / \/ | | | |__ | |_ | | \/| |_| | | | | | |/ / | | | . . || \| | | | | |_/ / | | | |_/ /\ `--. | | | | | | | | || | | |\ V / \ V / / /
|
||||
| _ || ___ \| | | | | | __|| _| | | __ | _ | | | | | \ | | | |\/| || . ` | | | | __/| | | | / `--. \ | | | | | | | | || |/\| |/ \ \ / / /
|
||||
| | | || |_/ /| \__/\ |/ /| |___| | | |_\ \| | | |_| |_/\__/ / |\ \| |____| | | || |\ \ \_/ / | \ \/' / |\ \ /\__/ / | | | |_| \ \_/ /\ /\ / /^\ \ | | ./ /___
|
||||
\_| |_/\____/ \____/___/ \____/\_| \____/\_| |_/\___/\____/\_| \_/\_____/\_| |_/\_| \_/\___/\_| \_/\_\_| \_|\____/ \_/ \___/ \___/ \/ \/\/ \/ \_/ \_____/
|
||||
|
||||
## Lowercase
|
||||
_ _ __ _ _ _ _ _ _
|
||||
| | | | / _| | | (_|_) | | | | |
|
||||
__ _| |__ ___ __| | ___| |_ __ _| |__ _ _| | _| |_ __ ___ _ __ ___ _ __ __ _ _ __ ___| |_ _ ___ ____ ____ ___ _ ____
|
||||
/ _` | '_ \ / __/ _` |/ _ \ _/ _` | '_ \| | | |/ / | '_ ` _ \| '_ \ / _ \| '_ \ / _` | '__/ __| __| | | \ \ / /\ \ /\ / /\ \/ / | | |_ /
|
||||
| (_| | |_) | (_| (_| | __/ || (_| | | | | | | <| | | | | | | | | | (_) | |_) | (_| | | \__ \ |_| |_| |\ V / \ V V / > <| |_| |/ /
|
||||
\__,_|_.__/ \___\__,_|\___|_| \__, |_| |_|_| |_|\_\_|_| |_| |_|_| |_|\___/| .__/ \__, |_| |___/\__|\__,_| \_/ \_/\_/ /_/\_\\__, /___|
|
||||
__/ | _/ | | | | | __/ |
|
||||
|___/ |__/ |_| |_| |___/
|
||||
|
||||
# Epic
|
||||
## Uppercase
|
||||
_______ ______ _______ ______ _______ _______ _______ __________________ _ _ _______ _ _______ _______ _______ _______ _______ _________ _______
|
||||
( ___ )( ___ \ ( ____ \( __ \ ( ____ \( ____ \( ____ \|\ /|\__ __/\__ _/| \ /\( \ ( )( ( /|( ___ )( ____ )( ___ )( ____ )( ____ \\__ __/|\ /||\ /||\ /||\ /||\ /|/ ___ )
|
||||
| ( ) || ( ) )| ( \/| ( \ )| ( \/| ( \/| ( \/| ) ( | ) ( ) ( | \ / /| ( | () () || \ ( || ( ) || ( )|| ( ) || ( )|| ( \/ ) ( | ) ( || ) ( || ) ( |( \ / )( \ / )\/ ) |
|
||||
| (___) || (__/ / | | | | ) || (__ | (__ | | | (___) | | | | | | (_/ / | | | || || || \ | || | | || (____)|| | | || (____)|| (_____ | | | | | || | | || | _ | | \ (_) / \ (_) / / )
|
||||
| ___ || __ ( | | | | | || __) | __) | | ____ | ___ | | | | | | _ ( | | | |(_)| || (\ \) || | | || _____)| | | || __)(_____ ) | | | | | |( ( ) )| |( )| | ) _ ( \ / / /
|
||||
| ( ) || ( \ \ | | | | ) || ( | ( | | \_ )| ( ) | | | | | | ( \ \ | | | | | || | \ || | | || ( | | /\| || (\ ( ) | | | | | | | \ \_/ / | || || | / ( ) \ ) ( / /
|
||||
| ) ( || )___) )| (____/\| (__/ )| (____/\| ) | (___) || ) ( |___) (___|\_) ) | / \ \| (____/\| ) ( || ) \ || (___) || ) | (_\ \ || ) \ \__/\____) | | | | (___) | \ / | () () |( / \ ) | | / (_/\
|
||||
|/ \||/ \___/ (_______/(______/ (_______/|/ (_______)|/ \|\_______/(____/ |_/ \/(_______/|/ \||/ )_)(_______)|/ (____\/_)|/ \__/\_______) )_( (_______) \_/ (_______)|/ \| \_/ (_______/
|
||||
|
||||
# Graceful
|
||||
__ ____ ___ ____ ____ ____ ___ _ _ __ __ __ _ __ _ _ __ _ __ ____ __ ____ ____ ____ _ _ _ _ _ _ _ _ _ _ ____
|
||||
/ _\ ( _ \ / __)( \( __)( __)/ __)/ )( \( ) _( )( / )( ) ( \/ )( ( \ / \( _ \ / \ ( _ \/ ___)(_ _)/ )( \/ )( \/ )( \( \/ )( \/ )(__ )
|
||||
/ \ ) _ (( (__ ) D ( ) _) ) _)( (_ \) __ ( )( / \) \ ) ( / (_/\/ \/ \/ /( O )) __/( O ) ) /\___ \ )( ) \/ (\ \/ /\ /\ / ) ( ) / / _/
|
||||
\_/\_/(____/ \___)(____/(____)(__) \___/\_)(_/(__)\____/(__\_)\____/\_)(_/\_)__) \__/(__) \__\)(__\_)(____/ (__) \____/ \__/ (_/\_)(_/\_)(__/ (____)
|
||||
|
||||
# Graffiti
|
||||
## Uppercase
|
||||
_____ ___________________ ________ ______________________________ ___ ___ .___ ____.____ __.____ _____ _______ ________ __________________ __________ ________________________ _______ ______ ______ ________.___.__________
|
||||
/ _ \\______ \_ ___ \\______ \ \_ _____/\_ _____/ _____/ / | \| | | | |/ _| | / \ \ \ \_____ \\______ \_____ \\______ \/ _____/\__ ___/ | \ \ / / \ / \ \/ /\__ | |\____ /
|
||||
/ /_\ \| | _/ \ \/ | | \ | __)_ | __)/ \ ___/ ~ \ | | | < | | / \ / \ / | \ / | \| ___// / \ \| _/\_____ \ | | | | /\ Y /\ \/\/ /\ / / | | / /
|
||||
/ | \ | \ \____| ` \| \ | \ \ \_\ \ Y / /\__| | | \| |___/ Y \/ | \/ | \ | / \_/. \ | \/ \ | | | | / \ / \ / / \ \____ | / /_
|
||||
\____|__ /______ /\______ /_______ /_______ / \___ / \______ /\___|_ /|___\________|____|__ \_______ \____|__ /\____|__ /\_______ /____| \_____\ \_/____|_ /_______ / |____| |______/ \___/ \__/\ / /___/\ \ / ______|/_______ \
|
||||
\/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \__> \/ \/ \/ \_/ \/ \/
|
||||
|
||||
## Lowercase
|
||||
___. .___ _____ .__ .__ __ __ .__ __
|
||||
_____ \_ |__ ____ __| _/_____/ ____\____ | |__ |__| |__| | _| | _____ ____ ____ ______ _____________ _______/ |_ __ _____ ____ _ _____ ______.__.________
|
||||
\__ \ | __ \_/ ___\ / __ |/ __ \ __\/ ___\| | \| | | | |/ / | / \ / \ / _ \\____ \ / ____/\_ __ \/ ___/\ __\ | \ \/ /\ \/ \/ /\ \/ < | |\___ /
|
||||
/ __ \| \_\ \ \___/ /_/ \ ___/| | / /_/ > Y \ | | | <| |_| Y Y \ | ( <_> ) |_> >< <_| | | | \/\___ \ | | | | /\ / \ / > < \___ | / /
|
||||
(____ /___ /\___ >____ |\___ >__| \___ /|___| /__/\__| |__|_ \____/__|_| /___| /\____/| __/ \__ | |__| /____ > |__| |____/ \_/ \/\_/ /__/\_ \/ ____|/_____ \
|
||||
\/ \/ \/ \/ \/ /_____/ \/ \______| \/ \/ \/ |__| |__| \/ \/\/ \/
|
||||
|
||||
# miniwi
|
||||
## Uppercase
|
||||
▄▖▄ ▄▖▄ ▄▖▄▖▄▖▖▖▄▖ ▖▖▖▖ ▖ ▖▖ ▖▄▖▄▖▄▖▄▖▄▖▄▖▖▖▖▖▖ ▖▖▖▖▖▄▖
|
||||
▌▌▙▘▌ ▌▌▙▖▙▖▌ ▙▌▐ ▌▙▘▌ ▛▖▞▌▛▖▌▌▌▙▌▌▌▙▘▚ ▐ ▌▌▌▌▌▞▖▌▚▘▌▌▗▘
|
||||
▛▌▙▘▙▖▙▘▙▖▌ ▙▌▌▌▟▖▙▌▌▌▙▖▌▝ ▌▌▝▌▙▌▌ █▌▌▌▄▌▐ ▙▌▚▘▛ ▝▌▌▌▐ ▙▖
|
||||
▘
|
||||
## Lowercase
|
||||
▌ ▌ ▐▘ ▌ ▘ ▘▌ ▜ ▗
|
||||
▀▌▛▌▛▘▛▌█▌▜▘▛▌▛▌▌ ▌▙▘▐ ▛▛▌▛▌▛▌▛▌▛▌▛▘▛▘▜▘▌▌▌▌▌▌▌▚▘▌▌▀▌
|
||||
█▌▙▌▙▖▙▌▙▖▐ ▙▌▌▌▌ ▌▛▖▐▖▌▌▌▌▌▙▌▙▌▙▌▌ ▄▌▐▖▙▌▚▘▚▚▘▞▖▙▌▙▖
|
||||
▄▌ ▙▌ ▌ ▌ ▄▌
|
||||
|
||||
# Shaded Blocky
|
||||
░░ ░░░ ░░░░ ░░░ ░░░ ░░ ░░░ ░░░ ░░░░ ░░ ░░ ░░ ░░░░ ░░ ░░░░░░░░ ░░░░ ░░ ░░░ ░░░ ░░░ ░░░░ ░░░ ░░░░ ░░░ ░░ ░░░░ ░░ ░░░░ ░░ ░░░░ ░░ ░░░░ ░░ ░░░░ ░░ ░
|
||||
▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒ ▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒ ▒▒ ▒▒▒ ▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒ ▒ ▒▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒▒▒▒▒ ▒▒
|
||||
▓ ▓▓▓▓ ▓▓ ▓▓▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓ ▓▓ ▓▓▓▓ ▓▓▓▓ ▓▓▓ ▓▓ ▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓ ▓▓ ▓▓▓▓▓ ▓▓▓▓▓▓▓▓ ▓▓ ▓ ▓ ▓▓ ▓▓▓▓ ▓▓ ▓▓▓ ▓▓ ▓ ▓▓ ▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓ ▓▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓▓▓ ▓▓▓▓
|
||||
█ ██ ████ ██ ████ ██ ████ ██ ████████ ████████ ████ ██ ████ █████ █████ ████ ██ ███ ███ ████████ █ █ ██ ██ ██ ████ ██ ████████ ███ ██ ███ █████████ █████ █████ ████ ████ ████ ██ ███ ██ ██████ ██████ ██████
|
||||
█ ████ ██ ████ ███ ███ ██ █████████ ███ ████ ██ ███ ███ ████ ██ ██ ████ ██ ███ ███ ███ █████████ █ █ ████ ███ ██████ ██████ ██████ █████ ████ ██ ████ █████ █████ █
|
||||
|
||||
# Slant
|
||||
## Uppercase
|
||||
___ ____ __________ ____________________ ______ ____ __ __ __ ____ ______ ____ ____ ____ _____________ ___ ___ ___ ____ _______
|
||||
/ | / __ )/ ____/ __ \/ ____/ ____/ ____/ / / / _/ / / //_// / / |/ / | / / __ \/ __ \/ __ \ / __ \/ ___/_ __/ / / / | / / | / / |/ /\ \/ /__ /
|
||||
/ /| | / __ / / / / / / __/ / /_ / / __/ /_/ // /__ / / ,< / / / /|_/ / |/ / / / / /_/ / / / / / /_/ /\__ \ / / / / / /| | / /| | /| / /| / \ / / /
|
||||
/ ___ |/ /_/ / /___/ /_/ / /___/ __/ / /_/ / __ // // /_/ / /| |/ /___/ / / / /| / /_/ / ____/ /_/ / / _, _/___/ // / / /_/ / | |/ / | |/ |/ // | / / / /__
|
||||
/_/ |_/_____/\____/_____/_____/_/ \____/_/ /_/___/\____/_/ |_/_____/_/ /_/_/ |_/\____/_/ \___\_\/_/ |_|/____//_/ \____/ |___/ |__/|__//_/|_| /_/ /____/
|
||||
|
||||
## Lowercase
|
||||
__ __ ____ __ _ _ __ __ __
|
||||
____ _/ /_ _________/ /__ / __/___ _/ /_ (_) (_) /__/ /___ ___ ____ ____ ____ ____ ___________/ /___ ___ ___ ___ ____ ______
|
||||
/ __ `/ __ \/ ___/ __ / _ \/ /_/ __ `/ __ \/ / / / //_/ / __ `__ \/ __ \/ __ \/ __ \/ __ `/ ___/ ___/ __/ / / / | / / | /| / / |/_/ / / /_ /
|
||||
/ /_/ / /_/ / /__/ /_/ / __/ __/ /_/ / / / / / / / ,< / / / / / / / / / / /_/ / /_/ / /_/ / / (__ ) /_/ /_/ /| |/ /| |/ |/ /> </ /_/ / / /_
|
||||
\__,_/_.___/\___/\__,_/\___/_/ \__, /_/ /_/_/_/ /_/|_/_/_/ /_/ /_/_/ /_/\____/ .___/\__, /_/ /____/\__/\__,_/ |___/ |__/|__/_/|_|\__, / /___/
|
||||
/____/ /___/ /_/ /_/ /____/
|
||||
|
||||
# Tmplr
|
||||
## Uppercase
|
||||
┏┓┳┓┏┓┳┓┏┓┏┓┏┓┓┏┳┏┳┓┏┓┓ ┳┳┓┳┓┏┓┏┓┏┓┳┓┏┓┏┳┓┳┳┓┏┓ ┏┏┓┏┓┓┏┏┓
|
||||
┣┫┣┫┃ ┃┃┣ ┣ ┃┓┣┫┃ ┃┃┫ ┃ ┃┃┃┃┃┃┃┃┃┃┃┣┫┗┓ ┃ ┃┃┃┃┃┃┃ ┃┃ ┗┫┏┛
|
||||
┛┗┻┛┗┛┻┛┗┛┻ ┗┛┛┗┻┗┛┛┗┛┗┛┛ ┗┛┗┗┛┣┛┗┻┛┗┗┛ ┻ ┗┛┗┛┗┻┛┗┛┗┛┗┛┗┛
|
||||
|
||||
## Lowercase
|
||||
┓ ┓ ┏ ┓ ••┓ ┓
|
||||
┏┓┣┓┏┏┫┏┓╋┏┓┣┓┓┓┃┏┃┏┳┓┏┓┏┓┏┓┏┓┏┓┏╋┓┏┓┏┓┏┏┓┏┓┏┓
|
||||
┗┻┗┛┗┗┻┗ ┛┗┫┛┗┗┃┛┗┗┛┗┗┛┗┗┛┣┛┗┫┛ ┛┗┗┻┗┛┗┻┛┛┗┗┫┗
|
||||
┛ ┛ ┛ ┗ ┛
|
||||
|
||||
# Bloody
|
||||
▄▄▄ ▄▄▄▄ ▄████▄ ▓█████▄ ▓█████ █████▒ ▄████ ██░ ██ ██▓ ▄▄▄██▀▀▀██ ▄█▀ ██▓ ███▄ ▄███▓ ███▄ █ ▒█████ ██▓███ █████ ██▀███ ██████ ▄▄▄█████▓ █ ██ ██▒ █▓ █ █░▒██ ██▒▓██ ██▓▒███████▒
|
||||
▒████▄ ▓█████▄ ▒██▀ ▀█ ▒██▀ ██▌▓█ ▀ ▓██ ▒ ██▒ ▀█▒▓██░ ██▒▓██▒ ▒██ ██▄█▒ ▓██▒ ▓██▒▀█▀ ██▒ ██ ▀█ █ ▒██▒ ██▒▓██░ ██▒▒██▓ ██▒▓██ ▒ ██▒▒██ ▒ ▓ ██▒ ▓▒ ██ ▓██▒▓██░ █▒▓█░ █ ░█░▒▒ █ █ ▒░ ▒██ ██▒▒ ▒ ▒ ▄▀░
|
||||
▒██ ▀█▄ ▒██▒ ▄██▒▓█ ▄ ░██ █▌▒███ ▒████ ░▒██░▄▄▄░▒██▀▀██░▒██▒ ░██ ▓███▄░ ▒██░ ▓██ ▓██░▓██ ▀█ ██▒▒██░ ██▒▓██░ ██▓▒▒██▒ ██░▓██ ░▄█ ▒░ ▓██▄ ▒ ▓██░ ▒░▓██ ▒██░ ▓██ █▒░▒█░ █ ░█ ░░ █ ░ ▒██ ██░░ ▒ ▄▀▒░
|
||||
░██▄▄▄▄██ ▒██░█▀ ▒▓▓▄ ▄██▒░▓█▄ ▌▒▓█ ▄ ░▓█▒ ░░▓█ ██▓░▓█ ░██ ░██░▓██▄██▓ ▓██ █▄ ▒██░ ▒██ ▒██ ▓██▒ ▐▌██▒▒██ ██░▒██▄█▓▒ ▒░██ █▀ ░▒██▀▀█▄ ▒ ██▒░ ▓██▓ ░ ▓▓█ ░██░ ▒██ █░░░█░ █ ░█ ░ █ █ ▒ ░ ▐██▓░ ▄▀▒ ░
|
||||
▓█ ▓██▒░▓█ ▀█▓▒ ▓███▀ ░░▒████▓ ░▒████▒░▒█░ ░▒▓███▀▒░▓█▒░██▓░██░ ▓███▒ ▒██▒ █▄░██████▒▒██▒ ░██▒▒██░ ▓██░░ ████▓▒░▒██▒ ░ ░░▒███▒█▄ ░██▓ ▒██▒▒██████▒▒ ▒██▒ ░ ▒▒█████▓ ▒▀█░ ░░██▒██▓ ▒██▒ ▒██▒ ░ ██▒▓░▒███████▒
|
||||
▒▒ ▓▒█░░▒▓███▀▒░ ░▒ ▒ ░ ▒▒▓ ▒ ░░ ▒░ ░ ▒ ░ ░▒ ▒ ▒ ░░▒░▒░▓ ▒▓▒▒░ ▒ ▒▒ ▓▒░ ▒░▓ ░░ ▒░ ░ ░░ ▒░ ▒ ▒ ░ ▒░▒░▒░ ▒▓▒░ ░ ░░░ ▒▒░ ▒ ░ ▒▓ ░▒▓░▒ ▒▓▒ ▒ ░ ▒ ░░ ░▒▓▒ ▒ ▒ ░ ▐░ ░ ▓░▒ ▒ ▒▒ ░ ░▓ ░ ██▒▒▒ ░▒▒ ▓░▒░▒
|
||||
▒ ▒▒ ░▒░▒ ░ ░ ▒ ░ ▒ ▒ ░ ░ ░ ░ ░ ░ ▒ ░▒░ ░ ▒ ░ ▒ ░▒░ ░ ░▒ ▒░░ ░ ▒ ░░ ░ ░░ ░░ ░ ▒░ ░ ▒ ▒░ ░▒ ░ ░ ▒░ ░ ░▒ ░ ▒░░ ░▒ ░ ░ ░ ░░▒░ ░ ░ ░ ░░ ▒ ░ ░ ░░ ░▒ ░ ▓██ ░▒░ ░░▒ ▒ ░ ▒
|
||||
░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ▒ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ▒ ░░ ░ ░ ░░ ░ ░ ░ ░ ░ ░░░ ░ ░ ░░ ░ ░ ░ ░ ▒ ▒ ░░ ░ ░ ░ ░ ░
|
||||
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
|
||||
░ ░ ░ ░ ░ ░ ░
|
||||
|
||||
# Electronic
|
||||
▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄ ▄ ▄▄ ▄▄ ▄▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄
|
||||
▐░░░░░░░░░░░▌▐░░░░░░░░░░▌ ▐░░░░░░░░░░░▌▐░░░░░░░░░░▌ ▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░▌ ▐░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░▌ ▐░▌▐░▌ ▐░░▌ ▐░░▌▐░░▌ ▐░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░▌ ▐░▌▐░▌ ▐░▌▐░▌ ▐░▌▐░▌ ▐░▌▐░▌ ▐░▌▐░░░░░░░░░░░▌
|
||||
▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀▀▀ ▐░▌ ▐░▌ ▀▀▀▀█░█▀▀▀▀ ▀▀▀▀▀█░█▀▀▀ ▐░▌ ▐░▌ ▐░▌ ▐░▌░▌ ▐░▐░▌▐░▌░▌ ▐░▌▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀▀▀ ▀▀▀▀█░█▀▀▀▀ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▀▀▀▀▀▀▀▀▀█░▌
|
||||
▐░▌ ▐░▌▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌▐░▌▐░▌▐░▌ ▐░▌▐░▌ ▐░▌▐░▌ ▐░▌▐░▌ ▐░▌▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌
|
||||
▐░█▄▄▄▄▄▄▄█░▌▐░█▄▄▄▄▄▄▄█░▌▐░▌ ▐░▌ ▐░▌▐░█▄▄▄▄▄▄▄▄▄ ▐░█▄▄▄▄▄▄▄▄▄ ▐░▌ ▄▄▄▄▄▄▄▄ ▐░█▄▄▄▄▄▄▄█░▌ ▐░▌ ▐░▌ ▐░▌░▌ ▐░▌ ▐░▌ ▐░▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌▐░█▄▄▄▄▄▄▄█░▌▐░▌ ▐░▌▐░█▄▄▄▄▄▄▄█░▌▐░█▄▄▄▄▄▄▄▄▄ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▄ ▐░▌ ▐░▐░▌ ▐░█▄▄▄▄▄▄▄█░▌ ▄▄▄▄▄▄▄▄▄█░▌
|
||||
▐░░░░░░░░░░░▌▐░░░░░░░░░░▌ ▐░▌ ▐░▌ ▐░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░▌▐░░░░░░░░▌▐░░░░░░░░░░░▌ ▐░▌ ▐░▌ ▐░░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌▐░░░░░░░░░░░▌▐░▌ ▐░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌
|
||||
▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀█░▌▐░▌ ▐░▌ ▐░▌▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀▀▀ ▐░▌ ▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀█░▌ ▐░▌ ▐░▌ ▐░▌░▌ ▐░▌ ▐░▌ ▀ ▐░▌▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌▐░█▀▀▀▀▀▀▀▀▀ ▐░█▄▄▄▄▄▄▄█░▌▐░█▀▀▀▀█░█▀▀ ▀▀▀▀▀▀▀▀▀█░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌░▌ ▐░▌ ▐░▌░▌ ▀▀▀▀█░█▀▀▀▀ ▐░█▀▀▀▀▀▀▀▀▀
|
||||
▐░▌ ▐░▌▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌▐░▌▐░▌ ▐░▌▐░▌ ▐░░░░░░░░░░░▌▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌▐░▌ ▐░▌▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░▌
|
||||
▐░▌ ▐░▌▐░█▄▄▄▄▄▄▄█░▌▐░█▄▄▄▄▄▄▄▄▄ ▐░█▄▄▄▄▄▄▄█░▌▐░█▄▄▄▄▄▄▄▄▄ ▐░▌ ▐░█▄▄▄▄▄▄▄█░▌▐░▌ ▐░▌ ▄▄▄▄█░█▄▄▄▄ ▄▄▄▄▄█░▌ ▐░▌ ▐░▌ ▐░█▄▄▄▄▄▄▄▄▄ ▐░▌ ▐░▌▐░▌ ▐░▐░▌▐░█▄▄▄▄▄▄▄█░▌▐░▌ ▀▀▀▀▀▀█░█▀▀ ▐░▌ ▐░▌ ▄▄▄▄▄▄▄▄▄█░▌ ▐░▌ ▐░█▄▄▄▄▄▄▄█░▌ ▐░▐░▌ ▐░▌░▌ ▐░▐░▌ ▐░▌ ▐░▌ ▐░▌ ▐░█▄▄▄▄▄▄▄▄▄
|
||||
▐░▌ ▐░▌▐░░░░░░░░░░▌ ▐░░░░░░░░░░░▌▐░░░░░░░░░░▌ ▐░░░░░░░░░░░▌▐░▌ ▐░░░░░░░░░░░▌▐░▌ ▐░▌▐░░░░░░░░░░░▌▐░░░░░░░▌ ▐░▌ ▐░▌▐░░░░░░░░░░░▌▐░▌ ▐░▌▐░▌ ▐░░▌▐░░░░░░░░░░░▌▐░▌ ▐░▌ ▐░▌ ▐░▌▐░░░░░░░░░░░▌ ▐░▌ ▐░░░░░░░░░░░▌ ▐░▌ ▐░░▌ ▐░░▌▐░▌ ▐░▌ ▐░▌ ▐░░░░░░░░░░░▌
|
||||
▀ ▀ ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀ ▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀ ▀ ▀▀ ▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀ ▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀ ▀▀ ▀ ▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀
|
||||
|
||||
# Elite
|
||||
▄▄▄· ▄▄▄▄· ▄▄· ·▄▄▄▄ ▄▄▄ .·▄▄▄ ▄▄ • ▄ .▄▪ ▐▄▄▄▄ •▄ ▄▄▌ • ▌ ▄ ·. ▐ ▄ ▄▄▄·.▄▄▄ ▄▄▄ .▄▄ · ▄▄▄▄▄▄• ▄▌ ▌ ▐·▄▄▌ ▐ ▄▌▐▄• ▄ ▄· ▄▌·▄▄▄▄•
|
||||
▐█ ▀█ ▐█ ▀█▪▐█ ▌▪██▪ ██ ▀▄.▀·▐▄▄·▐█ ▀ ▪██▪▐███ ·███▌▄▌▪██• ·██ ▐███▪•█▌▐█▪ ▐█ ▄█▐▀•▀█ ▀▄ █·▐█ ▀. •██ █▪██▌▪█·█▌██· █▌▐█ █▌█▌▪▐█▪██▌▪▀·.█▌
|
||||
▄█▀▀█ ▐█▀▀█▄██ ▄▄▐█· ▐█▌▐▀▀▪▄██▪ ▄█ ▀█▄██▀▐█▐█·▪▄ ██▐▀▀▄·██▪ ▐█ ▌▐▌▐█·▐█▐▐▌ ▄█▀▄ ██▀·█▌·.█▌▐▀▀▄ ▄▀▀▀█▄ ▐█.▪█▌▐█▌▐█▐█•██▪▐█▐▐▌ ·██· ▐█▌▐█▪▄█▀▀▀•
|
||||
▐█ ▪▐▌██▄▪▐█▐███▌██. ██ ▐█▄▄▌██▌.▐█▄▪▐███▌▐▀▐█▌▐▌▐█▌▐█.█▌▐█▌▐▌██ ██▌▐█▌██▐█▌▐█▌.▐▌▐█▪·•▐█▪▄█·▐█•█▌▐█▄▪▐█ ▐█▌·▐█▄█▌ ███ ▐█▌██▐█▌▪▐█·█▌ ▐█▀·.█▌▪▄█▀
|
||||
▀ ▀ ·▀▀▀▀ ·▀▀▀ ▀▀▀▀▀• ▀▀▀ ▀▀▀ ·▀▀▀▀ ▀▀▀ ·▀▀▀ ▀▀▀•·▀ ▀.▀▀▀ ▀▀ █▪▀▀▀▀▀ █▪ ▀█▄▀▪.▀ ·▀▀█. .▀ ▀ ▀▀▀▀ ▀▀▀ ▀▀▀ . ▀ ▀▀▀▀ ▀▪•▀▀ ▀▀ ▀ • ·▀▀▀ •
|
||||
*/
|
||||
@@ -140,6 +140,7 @@ func (w *LinearLayout) Draw(screen tcell.Screen) {
|
||||
if !w.visible {
|
||||
return
|
||||
}
|
||||
|
||||
pos := w.GetPos()
|
||||
if w.insetBorder {
|
||||
wh.Border(pos.X, pos.Y, pos.X+w.w, pos.Y+w.h, wh.BRD_CSIMPLE, w.style, screen)
|
||||
@@ -188,6 +189,9 @@ func (w *LinearLayout) WantW() int {
|
||||
wantW = wantW + wd.WantW()
|
||||
}
|
||||
}
|
||||
if w.insetBorder {
|
||||
wantW += 2
|
||||
}
|
||||
return wantW
|
||||
}
|
||||
|
||||
@@ -203,6 +207,9 @@ func (w *LinearLayout) WantH() int {
|
||||
wantH = wh.Max(wd.WantH(), wantH)
|
||||
}
|
||||
}
|
||||
if w.insetBorder {
|
||||
wantH += 2
|
||||
}
|
||||
return wantH
|
||||
}
|
||||
|
||||
@@ -487,6 +494,10 @@ func (w *LinearLayout) updateLLVWidgetPos(wd Widget) {
|
||||
} else {
|
||||
c.X = 0
|
||||
}
|
||||
if w.insetBorder {
|
||||
c.X += 1
|
||||
c.Y += 1
|
||||
}
|
||||
wd.SetPos(c)
|
||||
}
|
||||
|
||||
@@ -533,6 +544,10 @@ func (w *LinearLayout) updateLLHWidgetPos(wd Widget) {
|
||||
c.Y = int((float64(w.h) / 2) - (float64(wd.GetH()) / 2))
|
||||
}
|
||||
}
|
||||
if w.insetBorder {
|
||||
c.X += 1
|
||||
c.Y += 1
|
||||
}
|
||||
wd.SetPos(c)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user