Metadata-Version: 2.1
Name: pyxstitch
Version: 1.11.1
Summary: Convert source code to cross stitch patterns
Home-page: https://github.com/enckse/pyxstitch
Author: Sean Enck
Author-email: enckse@voidedtech.com
License: GPL3
Keywords: crossstitch cross stitch
Platform: UNKNOWN
Requires-Python: >=3.7
License-File: LICENSE
License-File: LICENSE.txt

pyxstitch
=========

pyxstitch is an application (and associated library/components) that
takes source code files and produces syntax-highlighted patterns for
cross stitching.

.. image:: https://img.shields.io/pypi/v/pyxstitch
    :target: https://pypi.org/project/pyxstitch/

.. image:: https://img.shields.io/github/workflow/status/enckse/pyxstitch/build
    :target: https://github.com/enckse/pyxstitch/actions/workflows/main.yml

install
-------

pip
~~~

Available via `pip <https://pypi.python.org/pypi/pyxstitch/>`__

::

    pip install pyxstitch

source
~~~~~~

-  Clone the source repo and…

::

    python setup.py install

or

::

    pip install .

or

::

    pip install -e .

usage
-----

to run

::

    pyxstitch --file program.py

styling
~~~~~~~

to see actual highlight colors on the pattern use ``--theme light-dmc``
and if using a high-contrast style you may want to toggle
``--theme dark`` (or ``--theme dark-dmc`` for colors on dark
backgrounds).

the coloring styles are available as part of the pygments project but
can be passed like so

::

    pyxstitch --file program.py --style monokai

output
~~~~~~

by default a png file is created matching the source code file name
(e.g. ``hello.py`` -> ``hello.png``), to change this

::

    pyxstitch --file program.py --output image.png

or just pass a file type and type/cat into pyxstitch

::

    cat test.py | pyxstitch --file .py --output myimage.png

by default, pyxstitch will attempt to create multiple pages for easier
reading of large patterns, this can be modified via ``--multipage``.

syntax/lexer
~~~~~~~~~~~~

by default pyxstitch will use just a text lexer (no syntax) if
piped/stdin is used, that can be changed, so

::

    cat test.py | pyxstich

produces no highlighting but

::

    cat test.py | pyxstitch --file .py
    # or
    cat test.py | pyxstitch --lexer autodetect
    # or tell it which pygments lexer to use
    cat test.py | pyxstitch --lexer python

fonts
~~~~~

to select a different font (from available)

::

    pyxstitch --font <type-charset-size>

floss colors
~~~~~~~~~~~~

colors can be remapped or disabled, e.g. to disable a color, set it to
map to empty

::

    pyxstitch --file test.c --map 000000=

or to map one color to another

::

    pyxstitch --file test.c --map 000000=ffffff

advanced
--------

some configuration options are available via the ``--kv`` input
settings. Alternatively set these in a ``$HOME/.pyxstitch.config`` file to
use different defaults always (unless a ``--kv`` is passed) or pass a
``--config`` and specify a different file than the one in ``$HOME``

::

    vim $HOME/.pyxstitch.config
    ---
    # comments will be ignored
    page_height=400
    page_width=300

height
~~~~~~

sets the default page height (600 default)

::

    --kv page_height=500

width
~~~~~

sets the default page width (1000 default)

::

    --kv page_width=900

padding
~~~~~~~

page padding (margins) which defaults to 50

::

    --kv page_pad=100

index
~~~~~

on multipage will produce an html file (by default of 0) to group images
into a pattern

::

    --kv page_no_index=1

legend
~~~~~~

default is 0, will print the legend to console (instead of to output
image) when set to 1

::

    --kv page_legend=1

height offset
~~~~~~~~~~~~~

default is 0, will change legend height placement on an image

::

    --kv legend_hoff=10

width offset
~~~~~~~~~~~~

default is 0, will change legend width placement on an image

::

    --kv legend_woff=-5

font size
~~~~~~~~~

to adjust the font scaling for the legend when in the output

::

    --kv page_font_size=100

zoom
~~~~

you can zoom the pattern in by specifying the vertical and/or horizontal
zoom start/end

::

    pyxstitch --hszoom 20 --hezoom 30 --vszoom 10 --vezoom 40

will zoom the output to horizontal grid position 20 to 30 and vertical
grid position 10 to 40


