Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dcbfd4c98b | ||
|
|
7519b719ba | ||
|
|
bfb4b6513f | ||
|
|
effca97ac0 |
No files matched your search
@@ -0,0 +1,21 @@
|
|||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
linux:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- run: ./configure && make
|
||||||
|
- run: ./mikusays -V && ./mikusays "hi"
|
||||||
|
|
||||||
|
windows-cross:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- run: sudo apt-get update && sudo apt-get install -y gcc-mingw-w64-x86-64
|
||||||
|
- run: ./configure --host=x86_64-w64-mingw32 && make
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags: ["v*"]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
dist:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: install autotools
|
||||||
|
run: sudo apt-get update && sudo apt-get install -y autoconf automake
|
||||||
|
- run: autoreconf -fi
|
||||||
|
- run: touch configure configure.ac aclocal.m4 Makefile.in
|
||||||
|
- name: tag must match version in configure.ac
|
||||||
|
run: |
|
||||||
|
ver=$(./configure --version | head -1 | awk '{print $NF}')
|
||||||
|
test "v$ver" = "$GITHUB_REF_NAME"
|
||||||
|
- run: ./configure && make distcheck
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
path: mikusays-*.tar.gz
|
||||||
|
|
||||||
|
# linux binary, built from the tarball (so it tests what packagers get)
|
||||||
|
build:
|
||||||
|
needs: dist
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: install compiler
|
||||||
|
run: sudo apt-get update && sudo apt-get install -y build-essential
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
- name: build and package
|
||||||
|
run: |
|
||||||
|
VERSION=${GITHUB_REF_NAME#v}
|
||||||
|
tar xf mikusays-$VERSION.tar.gz
|
||||||
|
cd mikusays-$VERSION
|
||||||
|
./configure LDFLAGS="-static"
|
||||||
|
make
|
||||||
|
strip mikusays
|
||||||
|
./mikusays -V
|
||||||
|
./mikusays "hi" > /dev/null
|
||||||
|
mv mikusays ../mikusays-$VERSION-linux-x86_64
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: bin-linux-x86_64
|
||||||
|
path: mikusays-*-linux-x86_64
|
||||||
|
|
||||||
|
build-windows:
|
||||||
|
needs: dist
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: install compiler
|
||||||
|
run: sudo apt-get update && sudo apt-get install -y build-essential gcc-mingw-w64-x86-64
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
- name: build and package
|
||||||
|
run: |
|
||||||
|
VERSION=${GITHUB_REF_NAME#v}
|
||||||
|
tar xf mikusays-$VERSION.tar.gz
|
||||||
|
cd mikusays-$VERSION
|
||||||
|
./configure --host=x86_64-w64-mingw32 LDFLAGS="-static"
|
||||||
|
make
|
||||||
|
x86_64-w64-mingw32-strip mikusays.exe
|
||||||
|
mv mikusays.exe ../mikusays-$VERSION-windows-x86_64.exe
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: bin-windows-x86_64
|
||||||
|
path: mikusays-*-windows-x86_64.exe
|
||||||
|
|
||||||
|
release:
|
||||||
|
needs: [dist, build, build-windows]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
path: artifacts
|
||||||
|
- name: checksums
|
||||||
|
run: |
|
||||||
|
cd artifacts
|
||||||
|
find . -mindepth 2 -type f -exec mv {} . \;
|
||||||
|
find . -type d -empty -delete
|
||||||
|
sha256sum * > SHA256SUMS
|
||||||
|
- uses: akkuman/gitea-release-action@v1
|
||||||
|
with:
|
||||||
|
files: artifacts/*
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
name: ci
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
unix:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-15, macos-15-intel]
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6
|
|
||||||
- run: ./configure && make
|
|
||||||
- run: ./mikusays -V && ./mikusays "hi"
|
|
||||||
|
|
||||||
windows:
|
|
||||||
runs-on: windows-2025
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
shell: msys2 {0}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6
|
|
||||||
- uses: msys2/setup-msys2@v2
|
|
||||||
with:
|
|
||||||
msystem: UCRT64
|
|
||||||
install: mingw-w64-ucrt-x86_64-gcc make
|
|
||||||
- run: ./configure && make
|
|
||||||
- run: ./mikusays.exe -V && ./mikusays.exe "hi"
|
|
||||||
|
|
||||||
# runs in a real FreeBSD VM with its stock cc + BSD make
|
|
||||||
freebsd:
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6
|
|
||||||
- uses: vmactions/freebsd-vm@v1
|
|
||||||
with:
|
|
||||||
usesh: true
|
|
||||||
run: |
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
./mikusays -V
|
|
||||||
./mikusays "hi"
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
name: release
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags: ["v*"]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# builds the source tarball (configure included) and checks tag == configure.ac version
|
|
||||||
dist:
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6
|
|
||||||
- name: install autotools
|
|
||||||
run: sudo apt-get update && sudo apt-get install -y autoconf automake
|
|
||||||
- run: autoreconf -fi
|
|
||||||
- run: touch configure configure.ac aclocal.m4 Makefile.in
|
|
||||||
- name: tag must match version in configure.ac
|
|
||||||
run: |
|
|
||||||
ver=$(./configure --version | head -1 | awk '{print $NF}')
|
|
||||||
test "v$ver" = "$GITHUB_REF_NAME"
|
|
||||||
- run: ./configure && make distcheck
|
|
||||||
- uses: actions/upload-artifact@v7
|
|
||||||
with:
|
|
||||||
name: dist
|
|
||||||
path: mikusays-*.tar.gz
|
|
||||||
|
|
||||||
# linux + macos binaries, built from the tarball (so it tests what packagers get)
|
|
||||||
build:
|
|
||||||
needs: dist
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- { name: linux-x86_64, os: ubuntu-24.04, ldflags: "-static" }
|
|
||||||
- { name: linux-aarch64, os: ubuntu-24.04-arm, ldflags: "-static" }
|
|
||||||
- { name: macos-arm64, os: macos-15, ldflags: "" }
|
|
||||||
- { name: macos-x86_64, os: macos-15-intel, ldflags: "" }
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
env:
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: "11.0"
|
|
||||||
steps:
|
|
||||||
- uses: actions/download-artifact@v8
|
|
||||||
with:
|
|
||||||
name: dist
|
|
||||||
- name: build and package
|
|
||||||
run: |
|
|
||||||
VERSION=${GITHUB_REF_NAME#v}
|
|
||||||
tar xf mikusays-$VERSION.tar.gz
|
|
||||||
cd mikusays-$VERSION
|
|
||||||
./configure LDFLAGS="${{ matrix.ldflags }}"
|
|
||||||
make
|
|
||||||
strip mikusays
|
|
||||||
./mikusays -V
|
|
||||||
./mikusays "hi" > /dev/null
|
|
||||||
out=mikusays-$VERSION-${{ matrix.name }}
|
|
||||||
mkdir "$out"
|
|
||||||
cp mikusays LICENSE README.md "$out"/
|
|
||||||
tar czf ../"$out".tar.gz "$out"
|
|
||||||
- uses: actions/upload-artifact@v7
|
|
||||||
with:
|
|
||||||
name: bin-${{ matrix.name }}
|
|
||||||
path: mikusays-*-${{ matrix.name }}.tar.gz
|
|
||||||
|
|
||||||
# windows exe via MSYS2/MinGW (configure needs a posix shell)
|
|
||||||
windows:
|
|
||||||
needs: dist
|
|
||||||
runs-on: windows-2025
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
shell: msys2 {0}
|
|
||||||
steps:
|
|
||||||
- uses: msys2/setup-msys2@v2
|
|
||||||
with:
|
|
||||||
msystem: UCRT64
|
|
||||||
install: mingw-w64-ucrt-x86_64-gcc make zip
|
|
||||||
- uses: actions/download-artifact@v8
|
|
||||||
with:
|
|
||||||
name: dist
|
|
||||||
- name: build and package
|
|
||||||
run: |
|
|
||||||
VERSION=${GITHUB_REF_NAME#v}
|
|
||||||
tar xf mikusays-$VERSION.tar.gz
|
|
||||||
cd mikusays-$VERSION
|
|
||||||
./configure LDFLAGS="-static"
|
|
||||||
make
|
|
||||||
strip mikusays.exe
|
|
||||||
./mikusays.exe -V
|
|
||||||
./mikusays.exe "hi" > /dev/null
|
|
||||||
out=mikusays-$VERSION-windows-x86_64
|
|
||||||
mkdir "$out"
|
|
||||||
cp mikusays.exe LICENSE README.md "$out"/
|
|
||||||
zip -r ../"$out".zip "$out"
|
|
||||||
- uses: actions/upload-artifact@v7
|
|
||||||
with:
|
|
||||||
name: bin-windows-x86_64
|
|
||||||
path: mikusays-*-windows-x86_64.zip
|
|
||||||
|
|
||||||
release:
|
|
||||||
needs: [dist, build, windows]
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
steps:
|
|
||||||
- uses: actions/download-artifact@v8
|
|
||||||
with:
|
|
||||||
path: artifacts
|
|
||||||
merge-multiple: true
|
|
||||||
- name: checksums
|
|
||||||
run: cd artifacts && sha256sum * > SHA256SUMS
|
|
||||||
- uses: softprops/action-gh-release@v2
|
|
||||||
with:
|
|
||||||
files: artifacts/*
|
|
||||||
generate_release_notes: true
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.73 for mikusays 1.0.0.
|
# Generated by GNU Autoconf 2.73 for mikusays 1.1.0.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation,
|
# Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation,
|
||||||
@@ -584,8 +584,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='mikusays'
|
PACKAGE_NAME='mikusays'
|
||||||
PACKAGE_TARNAME='mikusays'
|
PACKAGE_TARNAME='mikusays'
|
||||||
PACKAGE_VERSION='1.0.0'
|
PACKAGE_VERSION='1.1.0'
|
||||||
PACKAGE_STRING='mikusays 1.0.0'
|
PACKAGE_STRING='mikusays 1.1.0'
|
||||||
PACKAGE_BUGREPORT=''
|
PACKAGE_BUGREPORT=''
|
||||||
PACKAGE_URL='https://git.squeakyrat.moe/mikusays-c'
|
PACKAGE_URL='https://git.squeakyrat.moe/mikusays-c'
|
||||||
|
|
||||||
@@ -1281,7 +1281,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
'configure' configures mikusays 1.0.0 to adapt to many kinds of systems.
|
'configure' configures mikusays 1.1.0 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@@ -1348,7 +1348,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of mikusays 1.0.0:";;
|
short | recursive ) echo "Configuration of mikusays 1.1.0:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@@ -1443,7 +1443,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
mikusays configure 1.0.0
|
mikusays configure 1.1.0
|
||||||
generated by GNU Autoconf 2.73
|
generated by GNU Autoconf 2.73
|
||||||
|
|
||||||
Copyright (C) 2026 Free Software Foundation, Inc.
|
Copyright (C) 2026 Free Software Foundation, Inc.
|
||||||
@@ -1555,7 +1555,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by mikusays $as_me 1.0.0, which was
|
It was created by mikusays $as_me 1.1.0, which was
|
||||||
generated by GNU Autoconf 2.73. Invocation command line was
|
generated by GNU Autoconf 2.73. Invocation command line was
|
||||||
|
|
||||||
$ $0$ac_configure_args_raw
|
$ $0$ac_configure_args_raw
|
||||||
@@ -3171,7 +3171,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='mikusays'
|
PACKAGE='mikusays'
|
||||||
VERSION='1.0.0'
|
VERSION='1.1.0'
|
||||||
|
|
||||||
|
|
||||||
printf '%s\n' "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
printf '%s\n' "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
||||||
@@ -5437,7 +5437,7 @@ cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by mikusays $as_me 1.0.0, which was
|
This file was extended by mikusays $as_me 1.1.0, which was
|
||||||
generated by GNU Autoconf 2.73. Invocation command line was
|
generated by GNU Autoconf 2.73. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@@ -5497,7 +5497,7 @@ ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
|
|||||||
cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
|
cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config='$ac_cs_config_escaped'
|
ac_cs_config='$ac_cs_config_escaped'
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
mikusays config.status 1.0.0
|
mikusays config.status 1.1.0
|
||||||
configured by $0, generated by GNU Autoconf 2.73,
|
configured by $0, generated by GNU Autoconf 2.73,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ([2.69])
|
AC_PREREQ([2.69])
|
||||||
AC_INIT([mikusays], [1.0.0], [], [mikusays], [https://git.squeakyrat.moe/mikusays-c])
|
AC_INIT([mikusays], [1.1.0], [], [mikusays], [https://git.squeakyrat.moe/mikusays-c])
|
||||||
AC_CONFIG_SRCDIR([src/main.c])
|
AC_CONFIG_SRCDIR([src/main.c])
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR([build-aux])
|
||||||
AM_INIT_AUTOMAKE([foreign subdir-objects -Wall])
|
AM_INIT_AUTOMAKE([foreign subdir-objects -Wall])
|
||||||
|
|||||||
+185
@@ -733,5 +733,190 @@ static char **mikuart[] = {
|
|||||||
|
|
||||||
#define migucount (sizeof(mikuart)/sizeof(mikuart[0]))
|
#define migucount (sizeof(mikuart)/sizeof(mikuart[0]))
|
||||||
|
|
||||||
|
static char *tetoart_0[] = {
|
||||||
|
"",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⢚⡫⠽⢗⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣞⠞⠁⠀⠀⠀⠈⠙⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠴⠚⠋⠉⠉⠉⢻⡟⠉⠉⠉⠛⠲⢤⡀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⠋⠁⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⠀⠉⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡞⢀⠀⠀⢀⡠⠒⠉⠀⠀⠀⠘⣦⣀⠀⠉⠒⢦⡀⠀⠘⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⣀⢤⣤⣤⣒⣒⣒⣶⣖⣠⣴⣳⡠⠃⣠⠖⠁⠀⠀⠀⢠⠃⠀⠀⢸⡌⠳⣄⠀⠀⠙⣄⠀⠘⣇⢀⣀⣀⣀⣀⣀⣀⣀⠀⠀⠀",
|
||||||
|
"⢸⠺⣏⠉⠁⠀⠀⠉⠉⠉⣹⠇⡰⣡⠞⠁⡀⠀⠀⠀⣠⡎⠀⠀⠀⢨⡇⠀⠈⠢⡀⠀⠘⣆⠀⠸⡟⠛⠋⠉⠛⠛⠻⠿⠿⢯⣶",
|
||||||
|
"⠈⡦⢄⣉⠒⠒⠀⠒⢒⣩⣿⣼⡿⡁⠤⡼⢂⣀⢀⡴⢻⠁⠀⠀⠀⢸⠱⡀⠀⠀⠀⠀⠀⠈⢆⢣⣗⣦⠤⣀⣀⣀⣀⠤⠖⠫⡾",
|
||||||
|
"⠀⢯⠒⠦⠬⠍⠙⢧⣤⡤⠟⠋⣁⣠⠟⠀⣠⠴⠋⠀⢸⠀⠀⠀⢠⠟⠒⠳⣄⠀⠀⢰⡀⠀⠈⠣⡧⣉⣓⠒⠠⠤⠄⠒⠂⣩⡇",
|
||||||
|
"⠀⠸⣯⣓⣒⣒⣒⣒⣲⠯⣿⢉⡵⠋⣠⢞⣿⣿⣦⠢⢸⢠⠇⣠⢋⡀⢀⣀⣈⠢⣀⠀⠻⡦⣤⣀⣬⡿⠯⣍⣉⣀⣀⣤⠬⢴⠁",
|
||||||
|
"⠀⠀⢇⠉⠉⠉⠉⢁⣒⣭⢿⣫⢴⣻⡇⢸⣈⢿⡤⡇⢰⣞⡜⠁⢠⣾⣿⡿⢿⠻⡏⠓⠦⣝⣦⣟⡷⣉⠙⠓⠒⠶⠶⠶⠟⡇⠀",
|
||||||
|
"⠀⠀⣯⣉⠉⠉⣉⣙⡿⢿⣿⢇⡎⢸⡃⠈⠣⠤⠝⢀⠞⠋⠀⠀⠀⣧⠜⠣⡺⢠⡃⠀⠀⡎⢻⠋⢿⣫⢝⡒⠲⠤⠤⠤⢖⡇⠀",
|
||||||
|
"⠀⠀⢻⢛⡻⠯⠥⠤⠖⠋⣾⢸⣼⠸⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠒⠚⢁⡼⡇⠀⣾⢠⡏⠀⢸⣝⠯⣙⣒⣲⣶⣲⢖⡇⠀",
|
||||||
|
"⠀⠀⠘⠦⠴⠿⠛⣲⣺⣿⠁⠀⠱⣦⡗⣿⣗⡤⣄⣀⠐⠤⠤⠀⠀⠀⠀⢀⣨⢴⣁⡾⠷⠏⠀⠀⠘⢢⡥⣤⣀⣀⣀⣒⣹⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠸⣉⣉⣹⠾⠋⠀⠀⠀⠁⠙⠊⠛⠾⢇⡽⣿⣿⣗⣲⣶⠿⡍⠉⠰⠟⠁⠀⠀⠀⠀⠀⠀⠸⣍⠺⣦⡤⢤⠈⠁⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠳⢾⣄⡀⠀⠀⠀⠀⠀⠀⠀⣠⠿⣏⣈⢹⣏⣉⣧⡰⢿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢩⣳⡞⠋⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⢀⡴⠁⢀⡟⠜⣦⡟⠶⠛⢻⡓⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠛⠁⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡴⣿⡿⢢⢫⠇⠀⡷⡇⠀⠀⠸⣷⠀⢈⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⡛⣫⡴⢣⣾⡦⢤⣷⣇⣀⣠⠤⡷⣧⠿⠟⣳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⡰⣻⡹⠁⠀⡇⠀⡇⠀⢇⠘⣜⣦⣼⢚⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⢗⣒⣤⣇⣀⣥⣒⣚⢭⣽⠊⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡧⠤⠤⡏⡧⠹⠮⢿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⡇⢸⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⡇⢸⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠀⠘⠛⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static char * tetoart_1[] = {
|
||||||
|
"",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣬⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢠⣶⠟⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⢠⣿⠏⣼⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⣾⣿⡆⣿⣿⡃⣿⣧⣝⢿⡻⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⢸⣿⣿⣿⢸⣿⣴⣾⣿⣿⣯⣳⣜⢿⣿⣿⣿⣿⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⡌⣿⣿⣿⡈⣿⢀⣤⣤⣭⡉⠙⢿⡏⣿⣿⣿⣿⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⢀⢸⡟⣿⣿⢷⡌⢸⣿⣿⣿⣿⣷⡜⢷⣿⣿⣿⣿⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠸⢘⡀⢻⣿⣦⡀⣙⡛⠛⠛⠿⠿⠿⢸⣿⣿⣿⣿⠃⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⢰⠀⢠⣍⠙⠻⣿⣿⣿⣷⣶⣦⠀⣾⣿⣿⣿⠃⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠈⢦⣾⢹⣿⣦⢘⣋⡁⠀⠀⢙⠃⣿⣿⠟⠁⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠈⢻⣾⣿⡏⠸⣿⡿⠿⠿⠟⢀⣡⣄⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠈⣾⠟⠀⠀⠠⢤⣼⣿⣆⢻⣿⣿⣷⡀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠘⠁⣊⣐⡀⣴⣶⡼⠟⣡⣾⣿⣿⣿⣷⡀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⡀⠀⢀⣴⣿⣿⣿⠿⠋⠀⠘⣻⣿⡿⢻⣿⣿⣿⢆⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⣠⡅⠐⢿⣙⠾⠿⠁⣰⣶⡾⢘⣋⣩⣾⡆⣿⣿⣿⣿⡆⠀⠀",
|
||||||
|
"⠀⠀⠀⣿⡇⠀⠀⠙⠷⢷⣶⣭⣍⡁⣾⣿⣿⣿⡗⣿⣿⣿⣿⠇⠀⠀",
|
||||||
|
"⠀⠀⠀⢿⡇⠀⠀⠀⠀⠀⣿⣶⣶⡄⢿⡛⠛⠛⠛⣸⠿⢏⠉⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠃⠀⠀⠀⠀⠀⠙⠛⠛⠁⠀⠈⠁⠀⠁⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *tetoart_2[] = {
|
||||||
|
"",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⠴⠶⠖⠒⠒⠲⠶⠦⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣟⣆⣧⣤⣶⣶⣶⣦⣤⣤⣤⣄⣀⡇⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⡀⠀⠀⣸⡿⠟⠛⠛⠛⠛⠛⠛⠛⠛⠋⠉⠙⠓⢦⣀⣠⠴⠶⠚⠉⠉⠀⠘⡇",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⣼⠁⠀⠀⠉⠉⣹⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⣦⢸⡋⠁⠀⠀⠀⠀⠀⠀⠀⠀⢹",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⡿⠀⠀⠀⠀⢠⡟⠁⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘",
|
||||||
|
"⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⡿⠀⠀⠀⢸⠇⠀⠀⠀⠀⠀⣷⠀⠀⠀⠀⠀⠈⢿⣆⠀⠀⠀⠀⢀⣤⣤⣴⣾",
|
||||||
|
"⠀⠀⠀⠀⠀⠈⣳⣶⣤⣤⢸⠇⠀⠀⠀⢸⡀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠈⣿⡀⠀⠀⠀⠀⠀⠀⠀⠘",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⡿⠀⠀⠀⢸⠀⠀⠀⢀⣸⡇⠀⠀⠀⠀⠀⢸⣧⡴⠆⠀⠀⠀⠀⠸⣟⣶⡶⠖⠀⠀⠀⠀⣀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⣇⡀⠀⠀⣿⠀⠀⠀⢨⡟⢳⡒⠀⠀⠀⠈⡟⠉⠻⣤⠀⠀⠀⠀⣀⢻⣿⡀⠀⠀⠠⠾⠟⢳",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢠⠟⠛⠀⣿⣾⠀⢀⣾⠀⠈⢳⣼⣷⣄⢰⠇⠀⠀⠈⠓⢦⣄⣀⡙⢷⣿⣷⠀⠀⠀⠀⠀⢸",
|
||||||
|
"⠀⠀⠀⣾⡳⣄⢸⡀⠀⠐⢿⢇⣠⡟⢻⡀⠀⣀⣽⡿⠈⠉⠀⣰⣶⣆⣠⣼⢧⡟⠹⣍⡟⠈⢻⠖⠀⠀⣴⠚",
|
||||||
|
"⠀⠀⠀⢻⠀⢻⡀⠳⣤⡄⠘⠛⣯⢻⣹⣟⠛⢛⠋⠁⠀⠀⠀⠉⠉⠩⠍⢸⣼⠁⡼⠋⠀⠀⠘⠦⠤⣄⢈⡿",
|
||||||
|
"⠀⠀⠀⣠⣇⠀⣧⢺⣍⢠⡴⠶⠋⠈⢻⣿⣆⠀⠀⠀⣴⠚⠙⢷⠀⢀⡴⠿⠷⠚⠁⠀⠀⠀⠀⠀⢠⠿⠋⠀",
|
||||||
|
"⠀⡴⠺⡅⠘⣆⠘⣆⠉⠻⢧⠀⠀⠀⠀⠈⠈⠙⠢⢤⣘⣦⣤⡼⢶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢰⢷⡀⢻⡀⢿⠀⠙⠚⠛⠛⣦⠀⠀⠀⠀⢀⣀⣠⣤⢞⡟⠒⠒⠺⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠘⣦⡻⣤⠿⠚⠀⢀⡶⠋⠉⠉⠀⠀⢀⡴⡏⣽⣽⣳⣿⣇⠀⠀⣴⣿⣷⠶⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠈⡿⠗⠀⠒⠒⢻⡄⠀⠀⠀⠀⣠⢞⣽⢱⣿⡟⣿⣿⣿⣤⢾⢿⢇⣹⠀⣿⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠓⣶⠒⠒⠒⢿⠀⠀⢀⣄⡾⡿⢊⡏⡞⡼⣸⣿⣿⢹⠓⠚⠚⢼⡿⠀⣿⠀⡀⠀⠀⠀⠀⠀⠀⢀⠀⠀",
|
||||||
|
"⠀⠀⠀⢻⠀⠀⠀⠘⡆⣴⢋⢜⠻⣴⣿⢹⢿⢷⣿⣿⣿⠈⣽⢿⠖⢿⠁⠀⡗⠀⡀⠀⠀⠀⠀⠀⠀⢸⠙⠆",
|
||||||
|
"⠀⠀⠀⠈⡇⠀⠀⠀⢻⠡⡫⣋⢎⢝⣇⣏⡎⣾⣿⣿⡟⢸⣾⣼⢸⢸⡀⠀⡇⠀⡇⠀⠀⠀⠀⠀⢀⡜⠀⠰",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *tetoart_3[] = {
|
||||||
|
"",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡴⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣈⡧⠖⠚⠉⠉⠀⠀⠀⠀⠀⠘⡆⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡞⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢧⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⢀⡜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠦⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣨⡆⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢀⡎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⢀⡨⠻⣗⢄⠀⠀⣀⣠⡤⣤⠔⠛⢩⠟⠀⠀",
|
||||||
|
"⠀⢀⣀⡤⠤⠤⣾⠀⠀⠀⠀⠰⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⠀⠀⠀⢀⡀⢤⡒⠥⠒⠉⠘⢯⡽⢿⠉⢀⣴⣁⣤⠴⠧⡄⠀⠀",
|
||||||
|
"⠁⠀⠀⠀⠀⠀⡇⠁⠒⠀⠀⠀⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⢀⡴⠉⠳⣄⠀⠀⠀⠀⠀⠻⣼⣖⠋⠁⠀⠀⠀⠀⢹⡀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⡇⠐⠒⠂⠤⠤⠤⡿⣄⠤⠤⠀⠀⠀⠀⠀⠀⠀⣽⣾⣋⠀⠀⠀⠈⠃⠀⠀⠀⠀⠀⠀⠺⠿⣤⠀⠀⠀⣀⡤⡿⠀",
|
||||||
|
"⡄⠀⠀⠀⠀⠀⣹⠀⠀⠀⠀⠀⢠⣇⠘⢦⠀⠀⠀⠀⠀⠀⠰⠏⣽⡟⠉⠉⠓⣶⣴⣤⡀⣽⠦⠤⠴⡶⠚⠉⠁⣀⣴⠞⠁⡼⠃⠀",
|
||||||
|
"⠈⡆⢀⡴⠲⠯⣭⡆⠀⠀⠀⠀⢸⡱⠉⠩⠿⣖⠂⣄⠀⠀⠀⠀⢀⣧⣶⣶⣿⣿⣯⣿⣷⠺⡄⠀⠀⡿⠤⢞⣩⣾⣥⡤⠾⠓⠙⡇",
|
||||||
|
"⠀⠙⠯⠤⠤⣤⡴⠻⡄⠀⠀⠀⡞⠁⠀⠀⢀⣈⣳⣼⠛⢦⣀⠀⢲⣿⣿⡿⣿⡇⢹⡟⠛⠀⡧⠀⢠⡇⠀⠘⡆⠀⠀⠀⠀⠀⢠⡇",
|
||||||
|
"⠀⠀⠀⠸⣍⠁⠀⠀⡇⠀⠀⣸⡇⣶⠿⣿⣿⣿⣷⡮⠀⠀⠈⠉⠓⠋⠘⢷⡬⠔⠋⡇⠀⠀⢧⠀⡼⠀⠀⠀⠉⠒⢠⡤⠤⣶⠞⠁",
|
||||||
|
"⠀⠀⠀⠀⠈⠳⣄⣤⣿⡄⣰⣽⢻⡹⣆⠘⣿⡛⢻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⢸⠸⣅⠀⠀⠀⢰⠏⠙⢶⣋⣁⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢸⣧⡿⢽⡏⢧⠀⠀⠈⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⡼⠒⠚⠳⠀⠀⠈⠓⠦⠤⠼⠛⠁⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠈⠋⢧⠘⡇⠘⣇⠀⠀⠀⠀⠀⠀⠀⣠⠴⣒⡦⢤⡀⠀⠀⢀⣿⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⠿⡄⢸⣦⣀⠀⠀⠀⠀⠀⡟⠉⠀⠀⠀⣳⢀⡴⠋⢸⣄⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣛⠋⣳⣰⡇⠈⠛⠲⠤⣄⣀⣙⠦⠤⢤⣲⠵⠋⣀⣤⣼⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠛⠀⠀⠀⠀⠀⠀⣠⣿⣿⣭⡉⣠⣴⠿⡛⢉⣻⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣠⣄⣀⣰⣿⢻⣷⣔⣿⣗⢀⣠⣶⣿⣿⣿⣿⢦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⠋⠁⠀⠑⡀⣿⣶⣴⣼⣿⣿⣿⢿⣿⣿⢿⣿⡿⠏⣡⠿⠉⠀⢨⣿⡟⡩⠏⠉⠉⠓⠶⡄⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⢸⢿⡿⠿⠿⢿⣆⠙⣿⣻⣿⣿⢉⣡⡾⠃⠀⠀⠀⠨⣿⡏⠀⠀⠀⠀⠀⠀⢹⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⡞⠀⠏⠂⠢⡀⢹⣿⣿⣽⣿⣿⠾⠯⠀⠄⠤⠀⠔⠚⢸⠃⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠈⠁⣿⡿⣿⠛⡟⣴⠈⠁⠀⠀⠀⠀⠀⢸⠁⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⢀⡾⠚⠛⠛⠐⠒⢶⣤⡇⡇⣿⢰⣿⢃⡤⠖⠚⠉⠙⠓⠲⡏⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⠀⠀⠀⢠⣼⢷⣄⣿⡿⢀⣠⣾⣼⠁⠀⣿⣼⠃⣟⠀⠀⠰⣶⡆⣠⣴⣧⠀⠀⠀⠀⠀⠀⠀⡏⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⢀⢦⣿⡀⠈⣿⠏⠉⢱⡇⢿⣶⣿⣿⡏⠀⡽⠉⠛⠛⣿⠛⡉⣸⠈⢄⡀⠀⠀⠀⠀⢰⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⣤⠾⠒⠒⢳⣾⠀⠉⠂⡏⠀⠀⣾⡇⢸⣿⠻⢿⠁⠀⡇⠀⠀⠀⣿⢠⡇⣿⠶⠒⠛⠉⠉⠉⠙⢚⡆⠀⠀⠀",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *tetoart_4[] = {
|
||||||
|
"",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠞⠉⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣿⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣻⡟⢯⣛⢿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⢷⣫⢇⣟⣣⠟⣮⢞⣯⡝⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⢀⣶⣾⣿⣿⣿⣿⣿⣿⡿⢉⣾⢱⢏⣶⣿⢿⣸⣉⣷⢹⣆⣿⣷⣰⣶⣰⣶⣆⡀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠘⣾⣭⢩⣝⣿⣻⣿⣟⣵⡋⣤⣿⢿⠿⡟⢚⣵⣿⢿⣶⢿⡾⣿⣿⣿⢿⣿⣿⣿⣿⡆",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢳⢾⡋⠼⣿⣯⣷⡿⢧⣿⡻⠟⠁⢀⣏⣟⡟⠁⠈⢻⣯⢿⣿⣿⣿⠲⠴⣾⡿⣿⠇",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢘⣿⣷⣿⣾⣿⣿⣫⣿⡾⣷⣮⠁⢰⡾⠋⣴⣤⣤⡀⣿⣯⢿⣟⣿⣓⡻⢳⣻⡟⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣶⠶⣯⣿⣿⣿⣧⠃⠹⠋⠀⠀⠀⠀⠸⣻⠏⡿⣿⣿⣿⣿⣟⡛⣿⣿⡏⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣟⣹⣿⠟⣿⣿⡀⠀⠀⠀⠠⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣩⣽⣾⠿⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢯⣷⠀⠈⡟⡿⠢⢀⠁⠀⠈⠁⢀⡤⢺⠟⠛⠋⢹⣅⣫⢿⠟⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠋⠀⠀⠈⠋⢉⣀⢗⡠⠔⣞⡁⠀⠋⠀⠀⠀⠈⣿⠆⠁⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⠀⣤⣴⣶⣿⡏⠀⠁⠃⠘⣿⣦⣴⣶⣤⢄⡐⠉⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡐⠁⠀⠀⣿⣞⣿⣿⢧⡀⠀⣀⣾⣿⣿⣿⡿⠁⠀⠈⢂⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣆⡀⠀⠀⢰⢹⣭⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⡆⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣆⠀⣾⣿⣧⢿⣽⣿⢻⢿⣯⢿⣿⣿⣇⡄⠀⢠⣤⣶⡇⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⡿⢚⣿⢿⡻⢿⣿⢾⢫⢾⣽⣫⢿⣿⣿⣿⡄⠈⠉⠁⠠⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⠟⠁⠀⠸⣯⢷⣛⣯⣿⣿⠿⣿⣾⣯⢷⡞⣽⣿⣷⣀⡠⣴⣾⣄⠀⠀⠀⠀⠀",
|
||||||
|
"⢠⣿⡻⣼⣹⣯⣿⣿⡟⠁⠀⠀⠀⠀⣿⢿⡻⣟⢷⡏⢾⣿⢺⡟⣿⢻⣿⣿⠃⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀",
|
||||||
|
"⠸⣸⣿⢱⣇⢿⣸⢿⣇⠀⠀⠀⠀⠀⣿⣇⡿⣾⢹⣏⣹⣏⡷⢿⣸⢏⣿⣿⠀⢸⣿⣿⣿⡿⡆⠀⠀⠀⠀",
|
||||||
|
"⠀⠘⠬⡑⠌⠛⠮⣏⣿⣵⣄⠀⠀⢸⣿⣜⣳⣭⣿⢽⣻⡿⣼⢻⡜⣯⣿⡇⠀⠈⣿⣿⢿⡿⣇⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠈⢳⣾⣔⣨⣗⢯⣿⣷⣄⡾⣿⣜⣳⢮⣿⣧⢻⡷⣭⡗⣯⣳⣿⣗⠀⠀⢻⡽⣾⣽⡿⡀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠙⢿⣿⣿⣯⣿⣿⣿⢀⣿⡾⣱⣯⣿⣽⣻⡽⣖⢯⣷⡿⣯⣏⠀⠀⠈⡷⣏⡿⣿⡗⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⣟⠯⣿⣳⣻⣿⣳⡽⣟⠻⣻⡿⣭⣿⢯⡽⣾⣿⡄⠀⠀⢿⣱⣏⣿⠳⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣻⡱⢎⣷⡯⣿⣿⣿⣷⣿⣿⣿⣛⡮⣗⣿⣿⣿⣿⡄⠀⢺⣷⢺⣿⣿⡀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢠⡴⣿⣿⣷⣞⣿⡷⣿⢿⣿⣿⣟⢶⣯⢳⣿⣿⣿⣿⣿⣷⡀⢸⣷⣻⡿⢿⡅⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠃⠈⢹⢹⣿⡳⢯⣟⣿⡿⣿⣿⣿⣿⣿⣾⣿⢿⡿⣿⣿⣿⣿⣿⣽⢶⡛⣷⢦⡇⠀⠀",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *tetoart_5[] = {
|
||||||
|
"",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⣠⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠻⡿⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠿⠥⠤⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⡠⡄⣤⠀⠀⠀⢀⠃⣷⡄⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠠⠀⠆⠀⠀⠐⠀⠈⠀⠨⠂⡄⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠚⠀⠠⠀⠀⠀⠀⢀⠀⠈⠐⣠⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠐⠀⠀⠀⠂⠀⠀⡀⠀⠀⠂⢁⢊⡅⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⢀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠂⡐⢼⡀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠂⠀⠀⠀⠂⠀⠀⣆⠀⠀⠀⠈⠄⠀⡔⣣⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⡡⠊⢆⠀⡀⠀⠀⡇⠈⠣⡀⠀⠀⠡⠀⠌⠐⣣⠀⠀",
|
||||||
|
"⠀⡐⣬⢑⡅⢊⢎⣛⢬⡅⢧⠡⣂⣀⣄⠀⠈⠠⠈⠠⢘⢧⠀",
|
||||||
|
"⢀⢱⡖⣍⣿⣧⠀⠣⣧⠓⠀⡜⣅⣿⣿⣧⢀⠐⠀⠂⢤⠭⡂",
|
||||||
|
"⠠⠸⢇⠻⣿⡟⠂⠀⠘⢷⠀⠈⢿⣿⡿⡻⡉⠄⡁⠀⢀⠨⡆",
|
||||||
|
"⠨⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠈⠀⠣⠀⠄⠐⠀⢁⡂",
|
||||||
|
"⠈⡀⠀⠀⠀⠀⠀⢤⣀⣀⣠⠆⠀⠀⠀⠀⠁⠐⠌⠄⡠⢷⠃",
|
||||||
|
"⠀⠐⡠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠁⠀⡃⠠⣂⢢⡜⠀",
|
||||||
|
"⠀⠀⠈⢄⠁⢀⠀⡀⠀⠀⡀⠀⠠⠀⠀⠀⡠⠀⢁⢒⠈⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠐⠠⡀⠂⠈⠄⠀⣀⠀⠈⢂⠈⠠⡰⠖⠁⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠉⠛⠷⣶⢾⣼⣧⡿⠷⠋⠁⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static char **tetoart[] = {
|
||||||
|
tetoart_0,
|
||||||
|
tetoart_1,
|
||||||
|
tetoart_2,
|
||||||
|
tetoart_3,
|
||||||
|
tetoart_4,
|
||||||
|
tetoart_5,
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#define tetocount (sizeof(tetoart)/sizeof(tetoart[0]))
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+67
-30
@@ -1,10 +1,15 @@
|
|||||||
#include "../defs/all.h"
|
#include "../defs/all.h"
|
||||||
#include "../defs/mikuart.h"
|
#include "../defs/mikuart.h"
|
||||||
|
|
||||||
char **getmikuart(int style){
|
char **getmikuart(int style, int isteto){
|
||||||
|
if(isteto == 0){
|
||||||
|
if(style < 0)
|
||||||
|
style = rand() % migucount;
|
||||||
|
return mikuart[style];
|
||||||
|
}
|
||||||
if(style < 0)
|
if(style < 0)
|
||||||
style = rand() % migucount;
|
style = rand() % tetocount;
|
||||||
return mikuart[style];
|
return tetoart[style];
|
||||||
}
|
}
|
||||||
|
|
||||||
struct win {
|
struct win {
|
||||||
@@ -232,7 +237,10 @@ static void print_help(void){
|
|||||||
" [TEXT] Text to display in the speech bubble\n\n"
|
" [TEXT] Text to display in the speech bubble\n\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
" -s, --style <STYLE> Style of the Miku art. A random one is chosen if not specified\n"
|
" -s, --style <STYLE> Style of the Miku art. A random one is chosen if not specified\n"
|
||||||
" -l, --list List all available art styles with their indices\n"
|
" -l, --list List all available art (miku and teto) styles with their indices\n"
|
||||||
|
" -lm, --listmiku List only the Miku art styles\n"
|
||||||
|
" -lt, --listteto List only the Teto art styles\n"
|
||||||
|
" -t, --teto Use Teto art instead of Miku\n"
|
||||||
" --rainbow Apply a smooth rainbow gradient across the ASCII art\n"
|
" --rainbow Apply a smooth rainbow gradient across the ASCII art\n"
|
||||||
" --saturation <SATURATION> Saturation level for rainbow gradient (0-100) [default: 100]\n"
|
" --saturation <SATURATION> Saturation level for rainbow gradient (0-100) [default: 100]\n"
|
||||||
" --brightness <BRIGHTNESS> Brightness level for rainbow gradient (0-100) [default: 50]\n"
|
" --brightness <BRIGHTNESS> Brightness level for rainbow gradient (0-100) [default: 50]\n"
|
||||||
@@ -244,18 +252,33 @@ static void print_help(void){
|
|||||||
" -V, --version Print version\n");
|
" -V, --version Print version\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void list_all_art_styles(void){
|
#define LIST_NONE 0
|
||||||
printf("Available Miku art styles:\n");
|
#define LIST_BOTH 1
|
||||||
printf("==========================\n");
|
#define LIST_MIKU 2
|
||||||
printf("Total styles: %zu\n", migucount);
|
#define LIST_TETO 3
|
||||||
|
|
||||||
for(size_t i = 0; i < migucount; i++){
|
static void list_art_group(const char *name, char ***art, size_t total){
|
||||||
printf("\n--- Style %zu ---\n", i);
|
printf("%s styles (total: %zu)\n", name, total);
|
||||||
for(int j = 0; mikuart[i][j] != NULL; j++)
|
printf("==========================\n");
|
||||||
printf("%s\n", mikuart[i][j]);
|
for(size_t style_index = 0; style_index < total; style_index++){
|
||||||
|
printf("\n--- %s style %zu ---\n", name, style_index);
|
||||||
|
for(int line_index = 0; art[style_index][line_index] != NULL; line_index++)
|
||||||
|
printf("%s\n", art[style_index][line_index]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void list_all_art_styles(int list_mode){
|
||||||
|
printf("Available art styles:\n\n");
|
||||||
|
|
||||||
|
if(list_mode == LIST_BOTH || list_mode == LIST_MIKU)
|
||||||
|
list_art_group("Miku", mikuart, migucount);
|
||||||
|
if(list_mode == LIST_BOTH)
|
||||||
|
printf("\n");
|
||||||
|
if(list_mode == LIST_BOTH || list_mode == LIST_TETO)
|
||||||
|
list_art_group("Teto", tetoart, tetocount);
|
||||||
|
|
||||||
printf("\nUse --style <number> to select a specific style, or omit for random selection.\n");
|
printf("\nUse --style <number> to select a specific style, or omit for random selection.\n");
|
||||||
|
printf("Use --teto to pick from the Teto styles instead of the Miku ones.\n");
|
||||||
|
|
||||||
printf("\nColor Options:\n"
|
printf("\nColor Options:\n"
|
||||||
" --rainbow Apply a smooth rainbow gradient\n"
|
" --rainbow Apply a smooth rainbow gradient\n"
|
||||||
@@ -334,11 +357,11 @@ static void print_art_line(const char *line, size_t *index, size_t total){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void draw_miku_says(char *text, int style){
|
void draw_miku_says(char *text, int style, int teto){
|
||||||
char **speech_bubble_lines = getbubblelines(text);
|
char **speech_bubble_lines = getbubblelines(text);
|
||||||
if(speech_bubble_lines == NULL)
|
if(speech_bubble_lines == NULL)
|
||||||
return;
|
return;
|
||||||
char **miku_art = getmikuart(style);
|
char **miku_art = getmikuart(style, teto);
|
||||||
|
|
||||||
int available_width = TERMINALWIDTH;
|
int available_width = TERMINALWIDTH;
|
||||||
int available_height = TERMINALHEIGHT;
|
int available_height = TERMINALHEIGHT;
|
||||||
@@ -457,8 +480,7 @@ static int usage_error(const char *format, ...){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//returns 1 if argv[*index] is this option; *value stays NULL when the value is missing
|
//returns 1 if argv[*index] is this option; *value stays NULL when the value is missing
|
||||||
static int match_value_option(int argc, char **argv, int *index, const char *long_name,
|
static int match_value_option(int argc, char **argv, int *index, const char *long_name, char short_name, const char **value){
|
||||||
char short_name, const char **value){
|
|
||||||
const char *argument = argv[*index];
|
const char *argument = argv[*index];
|
||||||
size_t long_length = strlen(long_name);
|
size_t long_length = strlen(long_name);
|
||||||
|
|
||||||
@@ -525,12 +547,16 @@ static int parse_gradient(const char *specification, rgbcolor *start, rgbcolor *
|
|||||||
|
|
||||||
int main(int argc, char **argv){
|
int main(int argc, char **argv){
|
||||||
long style = -1; //-1 means random
|
long style = -1; //-1 means random
|
||||||
int index, result = 0, list_requested = 0, color_debug = 0, no_color = 0;
|
int index, result = 0, list_requested = 0, color_debug = 0;
|
||||||
|
#ifdef _WIN32
|
||||||
|
int no_color = 0;
|
||||||
|
#endif
|
||||||
int has_text = 0, options_ended = 0, ansi_enabled = 0;
|
int has_text = 0, options_ended = 0, ansi_enabled = 0;
|
||||||
const char *value, *color_text = NULL, *gradient_text = NULL;
|
const char *value, *color_text = NULL, *gradient_text = NULL;
|
||||||
ColorParseError color_error;
|
ColorParseError color_error;
|
||||||
size_t length = 0;
|
size_t length = 0, art_total;
|
||||||
char *text;
|
char *text;
|
||||||
|
int areyouteto = 0;
|
||||||
|
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
getterminalsize();
|
getterminalsize();
|
||||||
@@ -558,15 +584,25 @@ int main(int argc, char **argv){
|
|||||||
printf("mikusays " VERSION "\n");
|
printf("mikusays " VERSION "\n");
|
||||||
goto out;
|
goto out;
|
||||||
} else if(strcmp(argument, "-l") == 0 || strcmp(argument, "--list") == 0){
|
} else if(strcmp(argument, "-l") == 0 || strcmp(argument, "--list") == 0){
|
||||||
list_requested = 1;
|
list_requested = LIST_BOTH;
|
||||||
} else if(strcmp(argument, "--no-color") == 0){
|
} else if(strcmp(argument, "-lm") == 0 || strcmp(argument, "--listmiku") == 0){
|
||||||
no_color = 1;
|
list_requested = LIST_MIKU;
|
||||||
colors.mode = MODE_NONE;
|
} else if(strcmp(argument, "-lt") == 0 || strcmp(argument, "--listteto") == 0){
|
||||||
}else if(strcmp(argument, "--rainbow") == 0){
|
list_requested = LIST_TETO;
|
||||||
|
}
|
||||||
|
#ifdef _WIN32
|
||||||
|
else if(strcmp(argument, "--no-color") == 0){
|
||||||
|
no_color = 1;
|
||||||
|
colors.mode = MODE_NONE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
else if(strcmp(argument, "--rainbow") == 0){
|
||||||
colors.rainbow_enabled = true;
|
colors.rainbow_enabled = true;
|
||||||
} else if(strcmp(argument, "--color-debug") == 0){
|
} else if(strcmp(argument, "--color-debug") == 0){
|
||||||
color_debug = 1;
|
color_debug = 1;
|
||||||
} else if(match_value_option(argc, argv, &index, "--style", 's', &value)){
|
} else if(strcmp(argument, "--teto") == 0 || strcmp(argument, "-t") == 0){
|
||||||
|
areyouteto = 1;
|
||||||
|
}else if(match_value_option(argc, argv, &index, "--style", 's', &value)){
|
||||||
char *end;
|
char *end;
|
||||||
long parsed;
|
long parsed;
|
||||||
if(value == NULL){
|
if(value == NULL){
|
||||||
@@ -621,7 +657,7 @@ int main(int argc, char **argv){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(list_requested){
|
if(list_requested){
|
||||||
list_all_art_styles();
|
list_all_art_styles(list_requested);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if(!has_text){
|
if(!has_text){
|
||||||
@@ -629,9 +665,10 @@ int main(int argc, char **argv){
|
|||||||
result = 1;
|
result = 1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if(style >= (long)migucount){
|
art_total = areyouteto ? tetocount : migucount;
|
||||||
result = usage_error("style %ld does not exist; choose a value between 0 and %lu",
|
if(style >= (long)art_total){
|
||||||
style, (unsigned long)(migucount - 1));
|
result = usage_error("style %ld does not exist for %s; choose a value between 0 and %lu",
|
||||||
|
style, areyouteto ? "Teto" : "Miku", (unsigned long)(art_total - 1));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -658,9 +695,9 @@ int main(int argc, char **argv){
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_miku_says(text, (int)style);
|
draw_miku_says(text, (int)style, (int)areyouteto);
|
||||||
//i didn't know you could do labels like in assembly (nasm) this is very useful knowledge
|
//i didn't know you could do labels like in assembly (nasm) this is very useful knowledge
|
||||||
out:
|
out:
|
||||||
free(text);
|
free(text);
|
||||||
return result;
|
return result;
|
||||||
} //ooooo 666 lines spookyyy evillll
|
}
|
||||||
Reference in new issue
Block a user