From 5ccf1753d347e4ad3a4a4d5afb9ee7fefd4e696e Mon Sep 17 00:00:00 2001 From: Daylin Morgan Date: Fri, 21 Apr 2023 08:39:19 -0500 Subject: [PATCH] the snake is dead long live the king --- .github/workflows/build-publish.yml | 15 +- .gitignore | 170 +----------------- Makefile | 36 +--- README.md | 2 +- assets/logo.svg | 54 +++++- config.nims | 2 + docs/ascii | 30 ++++ .../logo-braille-threshold20-h15.txt | 15 ++ .../logo-braille-threshold20.txt | 41 +++++ docs/ascii-variants/logo-color-h30.txt | 30 ++++ docs/ascii-variants/logo-h50.txt | 50 ++++++ logo.nimble | 26 +++ logo/__init__.py | 1 - logo/cli.py | 20 --- logo/config.py | 46 ----- logo/main.py | 70 -------- logo/shapes.py | 25 --- logo/utils.py | 24 --- pdm.lock | 169 ----------------- pyproject.toml | 28 --- scripts/ascii.nims | 55 ++++++ scripts/generate-all.py | 47 ----- setup.cfg | 7 - {logo => src}/css/base.css | 0 {logo => src}/css/dark.css | 0 {logo => src}/css/light.css | 0 src/logo.nim | 151 ++++++++++++++++ 27 files changed, 475 insertions(+), 639 deletions(-) create mode 100644 config.nims create mode 100644 docs/ascii create mode 100644 docs/ascii-variants/logo-braille-threshold20-h15.txt create mode 100644 docs/ascii-variants/logo-braille-threshold20.txt create mode 100644 docs/ascii-variants/logo-color-h30.txt create mode 100644 docs/ascii-variants/logo-h50.txt create mode 100644 logo.nimble delete mode 100644 logo/__init__.py delete mode 100644 logo/cli.py delete mode 100644 logo/config.py delete mode 100644 logo/main.py delete mode 100644 logo/shapes.py delete mode 100644 logo/utils.py delete mode 100644 pdm.lock delete mode 100644 pyproject.toml create mode 100755 scripts/ascii.nims delete mode 100755 scripts/generate-all.py delete mode 100644 setup.cfg rename {logo => src}/css/base.css (100%) rename {logo => src}/css/dark.css (100%) rename {logo => src}/css/light.css (100%) create mode 100644 src/logo.nim diff --git a/.github/workflows/build-publish.yml b/.github/workflows/build-publish.yml index ff12bc2..de4332b 100644 --- a/.github/workflows/build-publish.yml +++ b/.github/workflows/build-publish.yml @@ -29,17 +29,20 @@ jobs: sudo apt update sudo apt install inkscape - - name: Setup PDM - uses: pdm-project/setup-pdm@v2 - - name: checkout repo uses: actions/checkout@v3 - - name: Install Dependencies - run: pdm install + - name: Setup nim + uses: jiro4989/setup-nim-action@v1 + with: + nim-version: '1.6.12' # default is 'stable' + repo-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Get Deps + run: nimble install --depsOnly -y - name: Build Logo's - run: pdm run make all + run: make all - name: Upload GitHub Pages artifact uses: actions/upload-pages-artifact@v1.0.3 diff --git a/.gitignore b/.gitignore index 89cc51b..a9a1504 100644 --- a/.gitignore +++ b/.gitignore @@ -1,173 +1,13 @@ -# Created by https://www.toptal.com/developers/gitignore/api/python -# Edit at https://www.toptal.com/developers/gitignore?templates=python -### Python ### -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm.fming.dev/#use-with-ide -.pdm.toml - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ - -# End of https://www.toptal.com/developers/gitignore/api/python **/*.svg !assets/logo.svg **/*.png docs/* !docs/index.html +!docs/ascii-variants/ +!docs/ascii-variants/** +!docs/ascii + .task.mk +bin/ diff --git a/Makefile b/Makefile index 61d44cd..f534d80 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,3 @@ -SRC := $(shell find logo/ -type f) -CONDA := source $$(conda info --base)/etc/profile.d/conda.sh; conda activate; -SVGS := $(shell find -type f -wholename "./docs/*.svg") -PNGS := $(patsubst ./docs/svg/%.svg,./docs/png/%.png, $(SVGS)) -REV := $(shell date +'%Y.%m.%d-' )$(shell git describe --always --dirty | sed s'/dirty/dev/') - .PHONY: all all: @@ -15,7 +9,14 @@ all: @$(MAKE) docs/png/index.html @$(MAKE) pngs -pngs: $(PNGS) ## generate all of the logo pngs +svgs: ## generate all svgs + nimble run + +pngs: ## generate all of the logo pngs + nimble pngs + +ascii: ## generate all ascii variants + ./scripts/ascii.nims docs/png/index.html: docs/index.html @cat docs/index.html |\ @@ -24,27 +25,6 @@ docs/png/index.html: docs/index.html sed s'/My Logos/My Logos but PNG/g' \ > docs/png/index.html -docs/png/%.png: docs/svg/%.svg - @inkscape --export-filename=$@ $< - -svgs: $(SRC) ## generate all of the logo svgs - ./scripts/generate-all.py $(REV) - -lint: ## apply isort/black/flake8 - @isort logo - @black logo - @flake8 logo - -bootstrap: pdm-env ## bootstrap the conda environment - -conda-env: - $(CONDA) CONDA_ALWAYS_YES="true" mamba create -p ./env python --force - -pdm-env: conda-env - $(CONDA) conda activate ./env; \ - pip install pdm; \ - pdm install - clean: ## remove old files rm -f *.svg *.png rm -f docs/*.svg diff --git a/README.md b/README.md index ef176f5..359ed14 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@

Logo

-
\ No newline at end of file + diff --git a/assets/logo.svg b/assets/logo.svg index dde24b4..e8de7f6 100644 --- a/assets/logo.svg +++ b/assets/logo.svg @@ -1,2 +1,52 @@ - - \ No newline at end of file + + + + + + + + + + + + + diff --git a/config.nims b/config.nims new file mode 100644 index 0000000..2c3e374 --- /dev/null +++ b/config.nims @@ -0,0 +1,2 @@ +--mm:orc +--threads:on diff --git a/docs/ascii b/docs/ascii new file mode 100644 index 0000000..8d81cf0 --- /dev/null +++ b/docs/ascii @@ -0,0 +1,30 @@ +                      ...::::::::::...                       +                 .:::::::..........:::::::.                  +              .::::.... .................:::::               +           .:::.. ........        ........ ..:::.            +         :-:.. ........  .:--==--:.  ........ ..:-:          +       .-:. ......... .-+++=----=+++-. ......... .:-.        +      :-. .......... -*+:.        .:+*- .......... .-:       +     -: ........... +#:  ..........  :#+ ........... :-      +   .-: .......  .. -%  .            .  %- ..  ....... :-.    +   -: ........++.. #*:----------------:*# ..++........ :-    +  -- ....... +@@#. #@@@@@@@@@@@@@@@@@@@@# .#@@+ ....... --   + .= ....... :@%%@#.-@%%%%%%%%%%%%%%%%%%@-.#@%%@: ....... =.  + -: ....... *@%:#@#.+@@%%%@@@@@@@@%%%@@+.#@#:%@* ....... :-  + -........ -@@= :%@#.-%@@@@%%%%%%@@@@%-.#@%: =@@- ........-  +.=.........#@#.. :%@#..=*%@@@@@@@@%*=..#@%: ..#@#.........=. +.=....... =@@- .. :%@#.  .:-====-:.  .#@%: .. -@@= .......=. + -........%@* .... :%@#...        ...#@%: .... *@%........-  + -: .... +@%: ..... :%@#. ........ .#@%: ..... :%@+ .... :-  + .= ... :@@+ .     . .%@#. ...... .#@%. .     . +@@: ... =.  +  -- ...*@%::::::::::.:%@#. .... .#@%:.::::::::::%@*... --   +   -: .:@@@@@@@@@@@@@%:.%@#. .. .#@%.:%@@@@@@@@@@@@@:. :-    +   .-: .:-:-:------:-:. :%@#....#@%: .:-:------:-:-:. :-.    +     -:               .. :%@#..#@%: ..               :-      +      :-. ............... :%@##@%: ............... .-:       +       .-:. .............. :%@@%: .............. .:-.        +         :-:.. ............ :**: ............ ..:-:          +           .:::.. ...........  ........... ..:::.            +              .::::.... .................:::::               +                 .:::::::..........:::::::.                  +                      ...::::::::::...                       diff --git a/docs/ascii-variants/logo-braille-threshold20-h15.txt b/docs/ascii-variants/logo-braille-threshold20-h15.txt new file mode 100644 index 0000000..03a96e9 --- /dev/null +++ b/docs/ascii-variants/logo-braille-threshold20-h15.txt @@ -0,0 +1,15 @@ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⡶⠶⠶⢶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠟⠁⠀⠀⠀⠀⠈⠻⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⢀⣤⡀⢸⣏⣀⣀⣀⣀⣀⣀⣀⣀⣹⡇⢀⣤⡀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⣸⣿⣷⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⣾⣿⣇⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⢠⣿⡏⢿⣷⡻⣿⣿⣿⣿⣿⣿⣿⣿⢟⣾⡿⢹⣿⡄⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⣼⣿⠀⠈⢿⣷⡈⠛⠿⠿⠿⠿⠛⢁⣾⡿⠁⠀⣿⣧⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⢰⣿⠇⠀⠀⠈⢿⣷⡀⠀⠀⠀⠀⢀⣾⡿⠁⠀⠀⠸⣿⡆⠀⠀⠀⠀ +⠀⠀⠀⠀⣾⣿⣀⣀⣀⣀⣈⢿⣷⡀⠀⠀⢀⣾⡿⣁⣀⣀⣀⣀⣿⣷⠀⠀⠀⠀ +⠀⠀⠀⠘⠿⠿⠿⠿⠿⠿⠿⠋⢿⣷⡀⢀⣾⡿⠙⠿⠿⠿⠿⠿⠿⠿⠃⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣷⣾⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ diff --git a/docs/ascii-variants/logo-braille-threshold20.txt b/docs/ascii-variants/logo-braille-threshold20.txt new file mode 100644 index 0000000..bcab4e9 --- /dev/null +++ b/docs/ascii-variants/logo-braille-threshold20.txt @@ -0,0 +1,41 @@ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣴⣶⣶⣶⣶⣦⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⡿⠟⠛⠋⠉⠉⠉⠉⠙⠛⠻⢿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⠀⣼⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣧⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣆⠀⠀⠀⣿⣿⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⠀⠀⠀⣰⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣆⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⣰⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣆⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⣰⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⢿⣿⣿⣿⣆⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⣰⣿⣿⣿⡿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⡇⠈⢿⣿⣿⣿⣆⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⣰⣿⣿⣿⡿⠁⢸⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⡿⠀⠀⠈⢿⣿⣿⣿⣆⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⣰⣿⣿⣿⡿⠁⠀⠀⢿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⠇⠀⠀⠀⠈⢿⣿⣿⣿⣆⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⣰⣿⣿⣿⡿⠁⠀⠀⠀⠸⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⡟⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣆⠀⠀⠀⠈⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠁⠀⠀⠀⣰⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⢻⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠈⢿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⡿⠁⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠈⢿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⡿⠁⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣆⠀⠀⠀⠀⣰⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣆⠀⠀⣰⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣆⣰⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ diff --git a/docs/ascii-variants/logo-color-h30.txt b/docs/ascii-variants/logo-color-h30.txt new file mode 100644 index 0000000..8d81cf0 --- /dev/null +++ b/docs/ascii-variants/logo-color-h30.txt @@ -0,0 +1,30 @@ +                      ...::::::::::...                       +                 .:::::::..........:::::::.                  +              .::::.... .................:::::               +           .:::.. ........        ........ ..:::.            +         :-:.. ........  .:--==--:.  ........ ..:-:          +       .-:. ......... .-+++=----=+++-. ......... .:-.        +      :-. .......... -*+:.        .:+*- .......... .-:       +     -: ........... +#:  ..........  :#+ ........... :-      +   .-: .......  .. -%  .            .  %- ..  ....... :-.    +   -: ........++.. #*:----------------:*# ..++........ :-    +  -- ....... +@@#. #@@@@@@@@@@@@@@@@@@@@# .#@@+ ....... --   + .= ....... :@%%@#.-@%%%%%%%%%%%%%%%%%%@-.#@%%@: ....... =.  + -: ....... *@%:#@#.+@@%%%@@@@@@@@%%%@@+.#@#:%@* ....... :-  + -........ -@@= :%@#.-%@@@@%%%%%%@@@@%-.#@%: =@@- ........-  +.=.........#@#.. :%@#..=*%@@@@@@@@%*=..#@%: ..#@#.........=. +.=....... =@@- .. :%@#.  .:-====-:.  .#@%: .. -@@= .......=. + -........%@* .... :%@#...        ...#@%: .... *@%........-  + -: .... +@%: ..... :%@#. ........ .#@%: ..... :%@+ .... :-  + .= ... :@@+ .     . .%@#. ...... .#@%. .     . +@@: ... =.  +  -- ...*@%::::::::::.:%@#. .... .#@%:.::::::::::%@*... --   +   -: .:@@@@@@@@@@@@@%:.%@#. .. .#@%.:%@@@@@@@@@@@@@:. :-    +   .-: .:-:-:------:-:. :%@#....#@%: .:-:------:-:-:. :-.    +     -:               .. :%@#..#@%: ..               :-      +      :-. ............... :%@##@%: ............... .-:       +       .-:. .............. :%@@%: .............. .:-.        +         :-:.. ............ :**: ............ ..:-:          +           .:::.. ...........  ........... ..:::.            +              .::::.... .................:::::               +                 .:::::::..........:::::::.                  +                      ...::::::::::...                       diff --git a/docs/ascii-variants/logo-h50.txt b/docs/ascii-variants/logo-h50.txt new file mode 100644 index 0000000..6903ab5 --- /dev/null +++ b/docs/ascii-variants/logo-h50.txt @@ -0,0 +1,50 @@ + + + + + + + + ..::::.. + .=*####****####*=. + .+##*=:. .:=*##+. + .*%*: :*%*. + =@*. .*@= + *@- -@* + *@: :@* + -@+ +@- + :: *% %* :: + .%@@%: %%********************************%% :%@@%. + +@%%@%: #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@# :%@%%@+ + :@%%@%%%: +@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@+ :%%%@%%@: + #@%@%@%%%: .%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%. :%%%@%@%@# + -@%%%.+@%%%: -@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@- :%%%@+.%%%@- + %%%@+ +@%%%: :%@%%%@@@@@@@@@@@@@@@@@@@@%%%@%: :%%%@+ +@%%% + =@%%% +@%%%: .+@@@%%%%@@@@@@@@@@@@%%%%@@@+. :%%%@+ %%%@= + .%%%@= +@%%%: .+%@@@@%%%%%%%%%%%%@@@@%+: :%@%@+ =@%%%. + +@%%# +@%@%: -+#%@@@@@@@@@@@@%#+- :%@%@+ #%%@+ + :@%%@: +@%@%: .:-=+****+==:. :%@%@+ :@%%@: + #@%@* +@%@%: :%@%@+ *@%@# + -@%%%. +@%@%: :%@%@+ .%%%@- + %%%@+ +@%@%: :%@%@+ +@%%% + =@%%% +@%@%: :%@%@+ %%%@= + .%%%@= +@%@%: :%@%@+ =@%%%. + +@%@# +@%@%: :%@%@+ #@%@+ + :@%%%: +@%@%: :%@%@+ :%%%@: + #%%%%##################= +@%@%: :%@%@+ =##################%%%%# + %@@@@@@@@@@@@@@@@@@@@@@%. +@%@%: :%@%@+ .%@@@@@@@@@@@@@@@@@@@@@@% + :--------------------: +@%@%: :%@%@+ :--------------------: + +@%@%: :%@%@+ + +@%@%: :%@%@+ + +@%@%::%@%@+ + +@%@%%@%@+ + +@%@@%@+ + +@@@@+ + =##= + + + + + + + diff --git a/logo.nimble b/logo.nimble new file mode 100644 index 0000000..0912127 --- /dev/null +++ b/logo.nimble @@ -0,0 +1,26 @@ +# Package + +version = "0.1.0" +author = "Daylin Morgan" +description = "Daylin's handy logo generator" +license = "MIT" +srcDir = "src" +bin = @["logo"] +binDir = "bin" + + +# Dependencies + +requires "nim >= 1.6.12", + "nimsvg" + +proc getSvgs(): seq[string] = + (gorgeEx "find -type f -wholename \"./docs/*.svg\"").output.split("\n") + +proc makePng(svg: string) = + echo svg & " -> " & svg.replace("svg","png") + exec "inkscape --export-filename=" & svg.replace("svg","png") & " " & svg + +task pngs, "fetch dependencies": + for svg in getSvgs(): + makePng(svg) diff --git a/logo/__init__.py b/logo/__init__.py deleted file mode 100644 index 7d6d94e..0000000 --- a/logo/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .main import generate diff --git a/logo/cli.py b/logo/cli.py deleted file mode 100644 index 9f39133..0000000 --- a/logo/cli.py +++ /dev/null @@ -1,20 +0,0 @@ -import argparse - - -def get_args(): - parser = argparse.ArgumentParser() - parser.add_argument("-bg", "--background", help="background") - parser.add_argument("-b", "--border", help="include border", action="store_true") - parser.add_argument("--debug", help="add grid to debug logo", action="store_true") - parser.add_argument( - "-o", "--output", help="output file to save to", default="logo.svg" - ) - parser.add_argument( - "-t", - "--theme", - help="theme for color [light,dark][default: dark]", - default="dark", - ) - parser.add_argument("--no-minify", help="pretty print svg", action="store_true") - - return parser.parse_args() diff --git a/logo/config.py b/logo/config.py deleted file mode 100644 index 5a1d50e..0000000 --- a/logo/config.py +++ /dev/null @@ -1,46 +0,0 @@ -from collections import namedtuple -from dataclasses import dataclass - -Center = namedtuple("Center", "x y") - -SCALE = 800 - - -@dataclass -class Coordinates: - """Class for housing/calculating relevant cordinates""" - - my1: int - my1: int - my2: int - mx1: int - mx2: int - dr: int - border_gap: int - - def __post_init__(self): - self.scale_coordinates(SCALE) - - # Nominal Values - u = (SCALE - self.my1 - self.my2 - self.dr) / 2 - # v = SCALE / 2 - (self.mx1 + self.mx2) - # assert D_R < M_X1 + M_X2/2 - - # Coordinate Shape Centers - self.mc = Center(SCALE / 2, u + self.dr + self.my2) - self.dc = Center(SCALE / 2, u + self.dr) - - def scale_coordinates(self, scale): - for k in self.__dataclass_fields__: - v = getattr(self, k) - setattr(self, k, v * scale) - - -coord = Coordinates( - my1=0.15, - my2=0.35, - mx1=0.13, - mx2=0.2, - dr=0.17, - border_gap=0.025, -) diff --git a/logo/main.py b/logo/main.py deleted file mode 100644 index bc8e501..0000000 --- a/logo/main.py +++ /dev/null @@ -1,70 +0,0 @@ -import svgwrite - -from .cli import get_args -from .config import SCALE, coord -from .shapes import circle, m -from .utils import debug, get_style, minify_css - - -def generate( - name, background, border, theme, comment=None, debug_mode=False, no_minify=False -): - if comment and any([debug_mode, no_minify]): - raise ValueError("Can't specify comment and pretty output (debug/no-minify)") - - print(f"generating: {name}") - dwg = svgwrite.Drawing(filename=name, size=(SCALE, SCALE), debug=debug) - style = get_style(theme) - dwg.defs.add(dwg.style(style if (debug_mode or no_minify) else minify_css(style))) - - bg = dwg.add(dwg.g(id="bg", class_="background")) - if background == "rect": - bg.add(dwg.rect(insert=(0, 0), size=(SCALE,) * 2)) - if border: - bg.add( - dwg.rect( - insert=(coord.border_gap, coord.border_gap), - size=( - (SCALE - 2 * coord.border_gap), - (SCALE - 2 * coord.border_gap), - ), - class_="fg border", - ) - ) - - elif background == "circle": - bg.add(dwg.circle((SCALE / 2,) * 2, r=SCALE / 2)) - if border: - bg.add( - dwg.circle( - (SCALE / 2,) * 2, - r=(SCALE - 2 * coord.border_gap) / 2, - class_="fg border", - ) - ) - - logo = dwg.add(dwg.g(id="m", class_="fg logo")) - m(dwg, logo, coord) - circle(dwg, logo, coord) - - if debug_mode: - debug(dwg, SCALE) - - if comment: - with open(name, "w") as f: - f.write(f"\n") - f.write(dwg.tostring()) - else: - dwg.save(pretty=(debug_mode or no_minify)) - - -def main(): - args = get_args() - generate( - args.output, - args.background, - args.border, - args.theme, - args.debug, - args.no_minify, - ) diff --git a/logo/shapes.py b/logo/shapes.py deleted file mode 100644 index bd237e1..0000000 --- a/logo/shapes.py +++ /dev/null @@ -1,25 +0,0 @@ -def circle(dwg, g, coord): - move_to = (str(coord.dc.x - coord.dr), str(coord.dc.y)) - - circle = dwg.circle(center=coord.dc, r=coord.dr, class_="d") - filled = dwg.path( - d=f"M {','.join(move_to)} a 1 1 0 0 0 {coord.dr*2} 0 z", class_="fg d" - ) - g.add(circle) - g.add(filled) - - -def m(dwg, g, coord): - start_end_offset = 0.15 * (coord.mx1) - move_to = (str(coord.mc.x - coord.mx1 - start_end_offset), str(coord.mc.y)) - m = dwg.path( - d=f"M {','.join(move_to)}" - f"l -{coord.mx2},0 " - f"l {coord.mx2/2},-{coord.my2} " - f"l {coord.mx2/2+coord.mx1+start_end_offset},{coord.my2+coord.my1} " - f"l {coord.mx1+coord.mx2/2+start_end_offset},-{coord.my1+coord.my2} " - f"l {coord.mx2/2},{coord.my2} " - f"l -{coord.mx2}, 0" - ) - - g.add(m) diff --git a/logo/utils.py b/logo/utils.py deleted file mode 100644 index 0fa7dc3..0000000 --- a/logo/utils.py +++ /dev/null @@ -1,24 +0,0 @@ -from importlib.resources import files - - -def read_css(file): - return files("logo").joinpath(f"css/{file}").read_text() - - -def minify_css(style): - return "".join(style.split()) - - -def get_style(theme="dark"): - style = read_css(f"{theme}.css") - style += read_css("base.css") - return style - - -def debug(dwg, scale): - hlines = dwg.add(dwg.g(id="hlines", stroke="green")) - for y in range(0, scale, int(scale / 20)): - hlines.add(dwg.line(start=(0, y), end=(scale, y))) - vlines = dwg.add(dwg.g(id="vline", stroke="blue")) - for x in range(0, scale, int(scale / 20)): - vlines.add(dwg.line(start=(x, 0), end=(x, scale))) diff --git a/pdm.lock b/pdm.lock deleted file mode 100644 index e403045..0000000 --- a/pdm.lock +++ /dev/null @@ -1,169 +0,0 @@ -[[package]] -name = "black" -version = "22.6.0" -requires_python = ">=3.6.2" -summary = "The uncompromising code formatter." -dependencies = [ - "click>=8.0.0", - "mypy-extensions>=0.4.3", - "pathspec>=0.9.0", - "platformdirs>=2", - "tomli>=1.1.0; python_full_version < \"3.11.0a7\"", -] - -[[package]] -name = "click" -version = "8.1.3" -requires_python = ">=3.7" -summary = "Composable command line interface toolkit" -dependencies = [ - "colorama; platform_system == \"Windows\"", -] - -[[package]] -name = "colorama" -version = "0.4.5" -requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -summary = "Cross-platform colored terminal text." - -[[package]] -name = "flake8" -version = "4.0.1" -requires_python = ">=3.6" -summary = "the modular source code checker: pep8 pyflakes and co" -dependencies = [ - "mccabe<0.7.0,>=0.6.0", - "pycodestyle<2.9.0,>=2.8.0", - "pyflakes<2.5.0,>=2.4.0", -] - -[[package]] -name = "isort" -version = "5.10.1" -requires_python = ">=3.6.1,<4.0" -summary = "A Python utility / library to sort Python imports." - -[[package]] -name = "mccabe" -version = "0.6.1" -summary = "McCabe checker, plugin for flake8" - -[[package]] -name = "mypy-extensions" -version = "0.4.3" -summary = "Experimental type system extensions for programs checked with the mypy typechecker." - -[[package]] -name = "pathspec" -version = "0.9.0" -requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -summary = "Utility library for gitignore style pattern matching of file paths." - -[[package]] -name = "platformdirs" -version = "2.5.2" -requires_python = ">=3.7" -summary = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." - -[[package]] -name = "pycodestyle" -version = "2.8.0" -requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -summary = "Python style guide checker" - -[[package]] -name = "pyflakes" -version = "2.4.0" -requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -summary = "passive checker of Python programs" - -[[package]] -name = "svgwrite" -version = "1.4.3" -requires_python = ">=3.6" -summary = "A Python library to create SVG drawings." - -[[package]] -name = "tomli" -version = "2.0.1" -requires_python = ">=3.7" -summary = "A lil' TOML parser" - -[metadata] -lock_version = "4.0" -content_hash = "sha256:15a59b7f453339840a0b62e3c329e1cf92be16a2d0c205b6a8c75921cb75413e" - -[metadata.files] -"black 22.6.0" = [ - {url = "https://files.pythonhosted.org/packages/07/eb/a757135497a3be31ab8c00ef239070c7277ad11b618104950a756bcab3c1/black-22.6.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a218d7e5856f91d20f04e931b6f16d15356db1c846ee55f01bac297a705ca24f"}, - {url = "https://files.pythonhosted.org/packages/19/b0/13864fd5f3090ca5379f3dcf6034f1e4f02b59620e7b8b5c6f0c85622c0b/black-22.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:560558527e52ce8afba936fcce93a7411ab40c7d5fe8c2463e279e843c0328ee"}, - {url = "https://files.pythonhosted.org/packages/1a/84/203163902ee26bcf1beaef582ee0c8df3f325da3e961b68d2ece959e19d3/black-22.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6797f58943fceb1c461fb572edbe828d811e719c24e03375fd25170ada53825e"}, - {url = "https://files.pythonhosted.org/packages/1d/d2/bc58bae8ec35f5a3c796d71d5bda113060678483e623a019fb889edd8d97/black-22.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7ba9be198ecca5031cd78745780d65a3f75a34b2ff9be5837045dce55db83d1c"}, - {url = "https://files.pythonhosted.org/packages/2b/70/1d0e33a4df4ed73e9f02f698a29b5d94ff58e39f029c939ecf96a10fb1f3/black-22.6.0-py3-none-any.whl", hash = "sha256:ac609cf8ef5e7115ddd07d85d988d074ed00e10fbc3445aee393e70164a2219c"}, - {url = "https://files.pythonhosted.org/packages/2b/d9/7331e50dad8d5149a9e2285766960ac6b732ae9b3b9796e10916ad88ff61/black-22.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b154e6bbde1e79ea3260c4b40c0b7b3109ffcdf7bc4ebf8859169a6af72cd70b"}, - {url = "https://files.pythonhosted.org/packages/3e/fd/5e47b4d77549909e484de906a69fccc3fcfb782131d8b449073ad8b3ed3e/black-22.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:568ac3c465b1c8b34b61cd7a4e349e93f91abf0f9371eda1cf87194663ab684e"}, - {url = "https://files.pythonhosted.org/packages/40/d1/3f366d7887d1fb6e3e487a6c975a9e9e13618757ed0d5427197fa9e28290/black-22.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:187d96c5e713f441a5829e77120c269b6514418f4513a390b0499b0987f2ff1c"}, - {url = "https://files.pythonhosted.org/packages/46/eb/f489451de8b3e91bd82ee722b9a8493b94f8719ea6649e5b8bba2376056d/black-22.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:074458dc2f6e0d3dab7928d4417bb6957bb834434516f21514138437accdbe90"}, - {url = "https://files.pythonhosted.org/packages/55/33/752544332a2d3be0f6d54ef808075681b68ddc15cfcb90ff128f2d30c85c/black-22.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:4af5bc0e1f96be5ae9bd7aaec219c901a94d6caa2484c21983d043371c733fc4"}, - {url = "https://files.pythonhosted.org/packages/57/62/2961a0a57bdf768ccb5aea16327400be6e6bde4fb47ac05af7e9535c5289/black-22.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2ea29072e954a4d55a2ff58971b83365eba5d3d357352a07a7a4df0d95f51c78"}, - {url = "https://files.pythonhosted.org/packages/61/11/551b0d067a7e6836fc0997ab36ee46ec65259fea8f30104f4870092f3301/black-22.6.0.tar.gz", hash = "sha256:6c6d39e28aed379aec40da1c65434c77d75e65bb59a1e1c283de545fb4e7c6c9"}, - {url = "https://files.pythonhosted.org/packages/63/96/814e02033701f51701444d5505b5e2594453b1f7e913764a097b1f701633/black-22.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b270a168d69edb8b7ed32c193ef10fd27844e5c60852039599f9184460ce0807"}, - {url = "https://files.pythonhosted.org/packages/80/ff/cfcfa4cdb42d8fff75b6b4dc355a1186a95de4714df8cc2a60f69f7b17f8/black-22.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f586c26118bc6e714ec58c09df0157fe2d9ee195c764f630eb0d8e7ccce72e69"}, - {url = "https://files.pythonhosted.org/packages/86/9c/2a8a13993bc63a50bda7436ecba902231fd9a88dd1cd233e6e3f534e071c/black-22.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6fe02afde060bbeef044af7996f335fbe90b039ccf3f5eb8f16df8b20f77666"}, - {url = "https://files.pythonhosted.org/packages/8a/90/69274ed80397ada663ce3c4cc0c70b7fb20b529f9baf4bf9ddf4edc14ccd/black-22.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cfaf3895a9634e882bf9d2363fed5af8888802d670f58b279b0bece00e9a872d"}, - {url = "https://files.pythonhosted.org/packages/9b/22/ff6d904dcb6f92bd7c20b178ed0aa9e6814ae6452df6c573806dbc465b85/black-22.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3db5b6409b96d9bd543323b23ef32a1a2b06416d525d27e0f67e74f1446c8f2"}, - {url = "https://files.pythonhosted.org/packages/a7/51/d0acd9f74a946a825a148dcc392433c2332ae405967d76292b9e64712dc8/black-22.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c85928b9d5f83b23cee7d0efcb310172412fbf7cb9d9ce963bd67fd141781def"}, - {url = "https://files.pythonhosted.org/packages/ac/9d/b06f45e8dff2b10bf4644ba7a74490538c0272ae48308e04c6f551671b89/black-22.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e439798f819d49ba1c0bd9664427a05aab79bfba777a6db94fd4e56fae0cb849"}, - {url = "https://files.pythonhosted.org/packages/c4/67/a4e9125bf1a4eb5a2624b3b979af2dc6ee8d3c4ee0b3d2867173db4916fa/black-22.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b9fd45787ba8aa3f5e0a0a98920c1012c884622c6c920dbe98dbd05bc7c70fbf"}, - {url = "https://files.pythonhosted.org/packages/d6/45/985c13ac6b2f67504cda61fc1d95365eb6446a4c6988ffe0f0f311f7a617/black-22.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94783f636bca89f11eb5d50437e8e17fbc6a929a628d82304c80fa9cd945f256"}, - {url = "https://files.pythonhosted.org/packages/e7/fe/4533d110ddced851a359cbbb162685814719690ee01939a34be023410854/black-22.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6c1734ab264b8f7929cef8ae5f900b85d579e6cbfde09d7387da8f04771b51c6"}, - {url = "https://files.pythonhosted.org/packages/fc/37/032c45b55f901ee3fe780fbc17fe2dc262c809d94de1288201350d8d680b/black-22.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a3ac16efe9ec7d7381ddebcc022119794872abce99475345c5a61aa18c45ad"}, -] -"click 8.1.3" = [ - {url = "https://files.pythonhosted.org/packages/59/87/84326af34517fca8c58418d148f2403df25303e02736832403587318e9e8/click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, - {url = "https://files.pythonhosted.org/packages/c2/f1/df59e28c642d583f7dacffb1e0965d0e00b218e0186d7858ac5233dce840/click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, -] -"colorama 0.4.5" = [ - {url = "https://files.pythonhosted.org/packages/2b/65/24d033a9325ce42ccbfa3ca2d0866c7e89cc68e5b9d92ecaba9feef631df/colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, - {url = "https://files.pythonhosted.org/packages/77/8b/7550e87b2d308a1b711725dfaddc19c695f8c5fa413c640b2be01662f4e6/colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, -] -"flake8 4.0.1" = [ - {url = "https://files.pythonhosted.org/packages/34/39/cde2c8a227abb4f9ce62fe55586b920f438f1d2903a1a22514d0b982c333/flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, - {url = "https://files.pythonhosted.org/packages/e6/84/d8db922289195c435779b4ca3a3f583f263f87e67954f7b2e83c8da21f48/flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, -] -"isort 5.10.1" = [ - {url = "https://files.pythonhosted.org/packages/ab/e9/964cb0b2eedd80c92f5172f1f8ae0443781a9d461c1372a3ce5762489593/isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, - {url = "https://files.pythonhosted.org/packages/b8/5b/f18e227df38b94b4ee30d2502fd531bebac23946a2497e5595067a561274/isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, -] -"mccabe 0.6.1" = [ - {url = "https://files.pythonhosted.org/packages/06/18/fa675aa501e11d6d6ca0ae73a101b2f3571a565e0f7d38e062eec18a91ee/mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, - {url = "https://files.pythonhosted.org/packages/87/89/479dc97e18549e21354893e4ee4ef36db1d237534982482c3681ee6e7b57/mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, -] -"mypy-extensions 0.4.3" = [ - {url = "https://files.pythonhosted.org/packages/5c/eb/975c7c080f3223a5cdaff09612f3a5221e4ba534f7039db34c35d95fa6a5/mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {url = "https://files.pythonhosted.org/packages/63/60/0582ce2eaced55f65a4406fc97beba256de4b7a95a0034c6576458c6519f/mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, -] -"pathspec 0.9.0" = [ - {url = "https://files.pythonhosted.org/packages/42/ba/a9d64c7bcbc7e3e8e5f93a52721b377e994c22d16196e2b0f1236774353a/pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {url = "https://files.pythonhosted.org/packages/f6/33/436c5cb94e9f8902e59d1d544eb298b83c84b9ec37b5b769c5a0ad6edb19/pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, -] -"platformdirs 2.5.2" = [ - {url = "https://files.pythonhosted.org/packages/ed/22/967181c94c3a4063fe64e15331b4cb366bdd7dfbf46fcb8ad89650026fec/platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, - {url = "https://files.pythonhosted.org/packages/ff/7b/3613df51e6afbf2306fc2465671c03390229b55e3ef3ab9dd3f846a53be6/platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, -] -"pycodestyle 2.8.0" = [ - {url = "https://files.pythonhosted.org/packages/08/dc/b29daf0a202b03f57c19e7295b60d1d5e1281c45a6f5f573e41830819918/pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, - {url = "https://files.pythonhosted.org/packages/15/94/bc43a2efb7b8615e38acde2b6624cae8c9ec86faf718ff5676c5179a7714/pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, -] -"pyflakes 2.4.0" = [ - {url = "https://files.pythonhosted.org/packages/15/60/c577e54518086e98470e9088278247f4af1d39cb43bcbd731e2c307acd6a/pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, - {url = "https://files.pythonhosted.org/packages/43/fb/38848eb494af7df9aeb2d7673ace8b213313eb7e391691a79dbaeb6a838f/pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"}, -] -"svgwrite 1.4.3" = [ - {url = "https://files.pythonhosted.org/packages/16/c1/263d4e93b543390d86d8eb4fc23d9ce8a8d6efd146f9427364109004fa9b/svgwrite-1.4.3.zip", hash = "sha256:a8fbdfd4443302a6619a7f76bc937fc683daf2628d9b737c891ec08b8ce524c3"}, - {url = "https://files.pythonhosted.org/packages/84/15/640e399579024a6875918839454025bb1d5f850bb70d96a11eabb644d11c/svgwrite-1.4.3-py3-none-any.whl", hash = "sha256:bb6b2b5450f1edbfa597d924f9ac2dd099e625562e492021d7dd614f65f8a22d"}, -] -"tomli 2.0.1" = [ - {url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 775066b..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[project] -name = "logo" -authors = [ - {name = "Daylin Morgan", email = "daylinmorgan@gmail.com"}, -] -dependencies = [ - "svgwrite>=1.4.3", -] -requires-python = ">=3.10" -license = {text = "MIT"} -dynamic = ["version"] - -[project.scripts] -logo = "logo.main:main" - -[build-system] -requires = ["pdm-pep517>=1.0.0"] -build-backend = "pdm.pep517.api" - -[tool.pdm.dev-dependencies] -dev = [ - "black>=22.6.0", - "isort>=5.10.1", - "flake8>=4.0.1", -] - -[tool.pdm] -version = {use_scm=true} diff --git a/scripts/ascii.nims b/scripts/ascii.nims new file mode 100755 index 0000000..cd9e627 --- /dev/null +++ b/scripts/ascii.nims @@ -0,0 +1,55 @@ +#!/usr/bin/env -S nim e --hints:off +import std/[strformat] + +type + AsciiLogo = object + braille: bool + threshold: int + color: bool + height: int + baseFile: string + +const baseImg = "./docs/png/logo-dark.png" + +proc fileName(al: AsciiLogo): string = + result = "./docs/ascii-variants/logo" + if al.braille: + result &= "-braille" + if al.threshold != 0: + result &= &"-threshold{al.threshold}" + if al.color: + result &= "-color" + if al.height != 0: + result &= &"-h{al.height}" + result &= ".txt" + +proc make(al: AsciiLogo) = + var cmd: string + if al.baseFile != "": + cmd = &"ascii-image-converter {al.baseFile}" + else: + cmd = &"ascii-image-converter {baseImg}" + + if al.braille: + cmd &= " --braille " + if al.threshold != 0: + cmd &= &" --threshold {al.threshold} " + if al.color: + cmd &= &" --color " + if al.height != 0: + cmd &= &" --height {al.height} " + + cmd &= &" > {al.fileName}" + exec cmd + +when isMainModule: + mkDir("./docs/ascii-variants/") + for al in @[ + AsciiLogo(braille: true, threshold: 20), + AsciiLogo(braille: true, height: 15, threshold: 20), + AsciiLogo(braille: false, height: 50), + AsciiLogo(color: true, height: 30, baseFile: "./docs/png/logo-bg-circle-b-dark.png") + ]: + al.make() + + cpFile("./docs/ascii-variants/logo-color-h30.txt", "./docs/ascii") diff --git a/scripts/generate-all.py b/scripts/generate-all.py deleted file mode 100755 index 2131d87..0000000 --- a/scripts/generate-all.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python3 - -import sys -from pathlib import Path - -from logo import generate - -PROJECT_ROOT = Path(__file__).parent.parent - -def main(): - rev = sys.argv[1] - comment = f"© 2022 Daylin Morgan | rev. {rev}" - - if not ( PROJECT_ROOT / "docs" / "svg").is_dir(): - print("making docs directory") - (PROJECT_ROOT / "docs" / "svg").mkdir(exist_ok=True) - - for theme in ["dark", "light"]: - for background in ["rect", "circle", None]: - for border in [True, False]: - name = ["logo"] - if background: - name.append(f"bg-{background}") - if border: - name.append("b") - - name.append(theme) - name = f"{PROJECT_ROOT}/docs/svg/{'-'.join(name)}.svg" - generate( - name=name, - background=background, - border=border, - theme=theme, - comment=comment, - ) - - generate( - name=f"{PROJECT_ROOT}/docs/{theme}.svg", - background="circle", - border=True, - theme=theme, - comment=comment, - ) - - -if __name__ == "__main__": - main() diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index b8ab2c8..0000000 --- a/setup.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[flake8] -ignore = F405,F403 -max_line_length = 88 -exclude = - .git, - __pycache__ -per-file-ignores = __init__.py:F401 \ No newline at end of file diff --git a/logo/css/base.css b/src/css/base.css similarity index 100% rename from logo/css/base.css rename to src/css/base.css diff --git a/logo/css/dark.css b/src/css/dark.css similarity index 100% rename from logo/css/dark.css rename to src/css/dark.css diff --git a/logo/css/light.css b/src/css/light.css similarity index 100% rename from logo/css/light.css rename to src/css/light.css diff --git a/src/logo.nim b/src/logo.nim new file mode 100644 index 0000000..52d4ed9 --- /dev/null +++ b/src/logo.nim @@ -0,0 +1,151 @@ +import std/[os, strformat, strutils] +import nimsvg + +const + baseCSS = slurp "css/base.css" + lightCSS = slurp "css/light.css" + darkCSS = slurp "css/dark.css" + version = staticExec "git describe --tags HEAD --always" + +type + Style = enum + stLight, stDark + Background = enum + bgNone, bgCircle, bgSquare + Point = object + x, y: float64 + Logo = object + background: Background + border: bool + style: Style + + +const scale = 800 + + +proc calcCoordinates(my1, my2, mx1, mx2, dr, gap: float64): tuple[my1, my2, mx1, + mx2, dr, gap: float64, mc, dc: Point] = + + # not very DRY... + result.my1 = my1 * scale + result.my2 = my2 * scale + result.mx1 = mx1 * scale + result.mx2 = mx2 * scale + result.dr = dr * scale + result.gap = gap * scale + + let u = (scale - result.my1 - result.my2 - result.dr) / 2 + # v = SCALE / 2 - (self.mx1 + self.mx2) + # assert D_R < M_X1 + M_X2/2 + + # Coordinate Shape Centers + result.mc = Point(x: scale / 2, y: u + result.dr + result.my2) + result.dc = Point(x: scale / 2, y: u + result.dr) + + +const coord = calcCoordinates( + my1 = 0.15, + my2 = 0.35, + mx1 = 0.13, + mx2 = 0.2, + dr = 0.17, + gap = 0.025, +) + +proc drawM(): Nodes = + let startEndOffset = 0.15 * (coord.mx1) + let moveTo = Point(x: coord.mc.x - coord.mx1 - startEndOffset, y: coord.mc.y) + + # path( + buildSvg: + path(d = &""" + M {moveTo.x},{moveTo.y} + l -{coord.mx2},0 + l {coord.mx2/2},-{coord.my2} + l {coord.mx2/2+coord.mx1+startEndOffset},{coord.my2+coord.my1} + l {coord.mx1+coord.mx2/2+startEndOffset},-{coord.my1+coord.my2} + l {coord.mx2/2},{coord.my2} + l -{coord.mx2}, 0 + """ + ) + + +proc drawD(): Nodes = + let start = Point(x: coord.dc.x - coord.dr, y: coord.dc.y) + buildSvg: + g(class = "d"): + circle(cx = coord.dc.x, cy = coord.dc.y, r = coord.dr) + path(class = "fg", d = &"M {start.x},{start.y} a 1 1 0 0 0 {coord.dr*2} 0 z") + +proc addBackground(bg: Background, border: bool = true): Nodes = + buildSvg: + g: + if bg == bgCircle: + circle(class = "background", cx = scale/2, cy = scale/2, r = scale/2) + if border: + circle(class = "fg border", cx = scale/2, cy = scale/2, r = ( + scale-2*coord.gap)/2) + elif bg == bgSquare: + rect(class = "background", height = scale, width = scale, x = 0, y = 0) + if border: + rect(class = "fg border", height = scale-2*coord.gap, + width = scale-2*coord.gap, x = coord.gap, y = coord.gap) + +proc addStyle(s: Style): Nodes = + var css: string + case s: + of stDark: css &= darkCSS + of stLight: css &= lightCSS + css &= baseCSS + buildSvg: + style(type = "text/css"): + t: css + +proc fname(l: Logo): string = + var name = @["logo"] + case l.background + of bgSquare: name.add("bg-rect") + of bgCircle: name.add("bg-circle") + else: discard + case l.border: + of true: name.add("b") + else: discard + case l.style: + of stLight: name.add("light") + of stDark: name.add("dark") + + name.join("-") & ".svg" + +proc makeLogo(l: Logo, prefix = "docs/svg", fileName = "") = + if not dirExists(prefix): createDir(prefix) + let fname = prefix / (if fileName == "": l.fname() else: fileName) + + buildSvgFile(fname): + t: &"" + svg(height = scale, width = scale): + defs: embed addStyle(l.style) + if l.background != bgNone: embed addBackground(l.background, l.border) + g(class = "fg logo"): + embed drawM() + embed drawD() + +when isMainModule: + for bg in @[bgNone, bgSquare, bgCircle]: + for style in @[stLight, stDark]: + for border in @[true, false]: + Logo( + background: bg, + border: border, + style: style + ).makeLogo() + + let defaults = @[ + (Logo(background: bgCircle, border: true, style: stDark), "light.svg"), + (Logo(background: bgCircle, border: true, style: stLight), "dark.svg") + ] + for (logo, fname) in defaults: + logo.makeLogo(fileName = fname, prefix = "docs") + + when defined(makeDefault): + Logo(background: bgCircle, border: true, style: stDark).makeLogo( + prefix = "assets", "logo.svg")