A step-by-step command interpreter for generating vector and bitmap drawings.
DraftStep reads plain-text command files (.draftstep) and renders them as drawings. Inspired by Python's Turtle library — each command represents a single drawing step.
canvas 400 350
layer "base"
color #555555
fill #F5E6C8
moveto 100 140
rect 200 px 160 px
- Interprets
.draftstepcommand files and renders them as SVG, PPM or PNG - Supports layers, groups, colors with transparency (RGBA), and cubic Bézier curves
- Includes a desktop GUI with a syntax-highlighted editor and live preview
- Runs from the command line — output format is inferred from the file extension
julia bin/draftstep examples/hello.draftstep output.svg
julia bin/draftstep examples/leaf.draftstep output.png
python gui/main.py| Component | Technology |
|---|---|
| Interpreter & Parser | Julia |
| Bézier geometry | C++ (compiled as shared library) |
| Vector output | SVG via Julia |
| Bitmap output | PPM (built-in) · PNG via PNGFiles.jl |
| Desktop GUI | Python + PySide6 (Qt6) |
| Requirement | Version |
|---|---|
| Julia | ≥ 1.10 |
| C++ compiler | GCC ≥ 9 · Clang ≥ 10 · MSVC 2019+ |
| CMake | ≥ 3.15 |
| Python | ≥ 3.10 |
| PySide6 | ≥ 6.6.0 |
| Pillow | ≥ 10.0.0 |
# Install everything (Julia + C++ library + Python/PySide6)
./install.sh
# Run a drawing from the CLI
julia bin/draftstep examples/hello.draftstep output.svg
# Launch the GUI
source .venv/bin/activate
python gui/main.pyDraftStep — draft means sketch, step means one command at a time.
