Skip to content

jpenrici/DraftStep

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 

Repository files navigation

DraftStep

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.

DraftStep screenshot

canvas 400 350
layer "base"
color #555555
fill #F5E6C8
moveto 100 140
rect 200 px 160 px

What it does

  • Interprets .draftstep command 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

Tech Stack

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)

Requirements

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

Getting Started

# 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.py

DraftStep — draft means sketch, step means one command at a time.

About

Experimental drawing generator via commands.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors