Skip to main content

QLI SVG Converter

QLI provides a simple conversion of QLI format files to SVG files. QLI also supports conversion to raster file formats supported by the ImageMagic "convert" tool.

QLI files are the predominant format for the Statler Stitcher by Gammill®. The QLI format defines a collection of stitching paths. The file format is a subset of the Galil DMC language, although, no official information from Gammill has been made available.

This is provided in an open source format in the hope that someone else may find this useful.

Feel welcome to raise issues at: https://github.com/owebeeone/qli/issues

I make no promise to look at them but I will, time permitting. However raising issues will likely get a response while emailing me directly will likely not.

Installation

Install the package using pip:

pip install qli

You will need Python 3 and the svg.path Python package installed on your computer. svg.path will be installed automatically when you install qli via pip.

Usage

To see the available options, run:

python -m qli.qli_to_svg --help

Examples

Convert a single file from QLI format to SVG:

python -m qli.qli_to_svg a-file.qli

This will create a-file.svg.

Convert an entire directory hierarchy of QLI files:

python -m qli.qli_to_svg --recursive --continue_on_error a-directory

All files named .qli will have a new file with the suffix replaced with .svg.

Remove the border on the generated files:

python -m qli.qli_to_svg --borders '' a-file.qli

Place the border on the shape extents:

python -m qli.qli_to_svg --borders 'green:0' a-file.qli

Add two borders:

python -m qli.qli_to_svg --borders 'blue:1,red:0' a-file.qli

The second border will be drawn directly on the shape extents.

Additionally convert to a PNG image:

python -m qli.qli_to_svg --raster_out png a-file.qli

The --raster_out parameter is a comma-separated list. You can specify raster types like png, jpeg, etc., supported by ImageMagick's convert tool. For advanced usage involving convert parameters, refer to the --help output.

Produce SVG with no margin or border and double wide lines:

python -m qli.qli_to_svg --margin 0x0 --borders '' --line_width 2 a-file.qli

The resulting file will have no border.

Command Line Options

usage: qli_to_svg.py [-h] [--oncolor ONCOLOR] [--offcolor OFFCOLOR] [--line_width LINE_WIDTH] [--margin MARGIN] [--width WIDTH] [--borders BORDERS]
                     [--recursive | --no-recursive] [--continue_on_error | --no-continue_on_error] [--out_dir OUT_DIR] [--out_name OUT_NAME]
                     [--suffix SUFFIX] [--print_progress | --no-print_progress] [--raster_image RASTER_IMAGE] [--raster_out RASTER_OUT]
                     [<file> ...]

Convert QLI pattern files to SVG.

positional arguments:
  <file>                input files

options:
  -h, --help            show this help message and exit
  --oncolor ONCOLOR     The color of the "on" path default: black
  --offcolor OFFCOLOR   The color of the "off" path default: red
  --line_width LINE_WIDTH
                        Bigger numbers means thicker lines default: 1.0
  --margin MARGIN       Margin around image default: 50x50
  --width WIDTH         The image width (inside margin). Aspect ratio is maintained. default: 700.0
  --borders BORDERS     Comma separated list of borders default: blue:1
  --recursive           Perform recursive scan on directories. default: False
  --no-recursive        See --recursive
  --continue_on_error   Ignore parsing errors and omit the offending file. default: False
  --no-continue_on_error
                        See --continue_on_error
  --out_dir OUT_DIR     Output directory format. default: {path_name}
  --out_name OUT_NAME   Output file name format. default: {base_name}.svg
  --suffix SUFFIX       Suffix filter for recursive search. default: qli
  --print_progress      Show progress of parsing. default: False
  --no-print_progress   See --print_progress
  --raster_image RASTER_IMAGE
                        Add conversion to . default: <class 'str'>
  --raster_out RASTER_OUT
                        Comma separated list of raster types to generate default:

Metadata

Release files for qli 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qli 0.1.3
File Size Uploaded
qli-0.1.3.tar.gz 29.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qli 0.1.3
File Interpreter ABI Platform
qli-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 59.3 kB

Release files / qli-0.1.3.tar.gz

Download URL qli-0.1.3.tar.gz
Size 29.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1e0b88ef4eded77ecc0da419ebe111f842f718f086030c12f9ffeda39c6136f4
BLAKE2b-256 checksum
How to use checksums
2fe269553112981d7e810104ed87642ca588e61f75ba3e039f2b8fd1b2247572
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 13, 2025.

Transparency log

Release files / qli-0.1.3-py3-none-any.whl

Download URL qli-0.1.3-py3-none-any.whl
Size 30.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f96a521e4f678ac550219ebac7fc10fbb2e52dfc0eb58814d77293e4f019e982
BLAKE2b-256 checksum
How to use checksums
08e38631d67431d037479e8cb72fff492c08727b7576f7028d41fda3a9fb493a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 13, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page