Skip to content

Latest commit

 

History

History
172 lines (139 loc) · 6.48 KB

README.md

File metadata and controls

172 lines (139 loc) · 6.48 KB

protograf

protograf

protograf is a utility written in Python for designing and creating simple, regular, graphical outputs in PDF (or PNG/GIF) format via a script.

protograf has been primarily created to handle the prototyping of cards, counters, tiles and boards for board games, but can be also used for creating any simple design that has regular or repetitive elements; typically a mix of graphics and text.

You do not need to know the Python language to be able to use protograf but you do need Python installed on your machine!

Documentation

The online documentation for protograf is available at Read the Docs; its highly recommended to read the sections in the order presented in the Guide.

If you're not familiar with any kind of programming or scripting, you should at least read some of the introductory sections, and especially the installation before proceeding...

Requirements

protograf requires Python (version of 3.13 or higher) to be installed and running on your machine.

If this is not your current Python version, or Python is not installed on your machine, may want to install uv which is a cross-platform tool able to install Python.

If using uv, it is recommended to also create and use a virtual environment.

Quick Start (for the impatient)

Assuming that Python 3.13 or higher is installed on your machine, you can then install protograf via:

pip install protograf

or, if using uv:

uv pip install protograf

To check that protograf is working, you can use one (or more) of the files from any of the various examples sub-directories.

As a quick test, make a copy of example1.py script from the examples/manual directory. To do so, open the example1.py link in your browser, click on the Raw button (near the top right), and then save the web page as a file into a local directory on your machine.

Open a command-line window (also known as a terminal or a console), change to the directory where you saved the above file and type:

python example1.py

and press the Enter key.

This script is very simple - it just contains these lines:

# `example1` script for protograf
# Written by: Derek Hohls
# Created on: 29 February 2016
from protograf import *
Create()
PageBreak()
Save()

and is designed to produce a single, blank, A4-sized page in a PDF file.

It should create an output file called example1.pdf, which will appear in the same directory as the script. You should be able to open and view this file using any PDF-capable program or application.

If this works, then download and try out other scripts from any of the examples sub-directories (note some examples may require additional files such as images, CSV files, or spreadsheets). You can download all the examples in a single ZIP file.

If it does not work, you may want to look at more detail provided in the installation guide.

Contributions

Please see the list of contributors.

Work-in-Progress

These features are not guaranteed to be implemented; they just represent current / potential areas of work or development.

  • New shapes:
    • Diamond shape
    • Parallelogram shape
    • Wave shape
    • Cross shape
    • Pod shape
  • Common objects:
    • Cube (Rhombus composite)
    • Domino (DotGrid inside Rectangle outline)
    • Die (Rectangle with DotGrid; 3D?)
    • Picture Frame (Trapezoid composite)
  • Hexagons: 18xx tile example (requires Arcs below!)
  • Line:
    • end style
    • join style
  • Polyline: define arcs along the path
  • Arcs (pathways) inside a hexagon (in progress)
  • Shortcut notation for styling of a shape
  • Stripes: interior "areas" for a Rectangle
  • Rotation:
    • text along a line
    • Polygon
    • Trapezoid
    • Triangle
  • Cards:
    • multiple decks in one script
    • support card back designs
    • grid lines for hexagonal cards
    • multiple bleed areas
  • Color:
    • add support for CMYK
    • investigate gradients

Planned/Potential Board Examples

  • Abstract boards: Ludo, 9 Mens Morris, Wari
  • Wargame board: Squad Leader with terrain features (vector and bitmap)
  • Traveller board: show a fully-styled Star system (demo a custom Shape?)
  • WarpWar board: show a fully-styled example
  • 18xx board: show a basic map with tracks, towns, cities and off-map areas

Acknowledgements

The world is full of power and energy and a person can go far by just skimming off a tiny bit of it. "Snow Crash", Neal Stephenson, 1992.

As always, with Python, you are building "on the shoulders of giants". In this case, the ReportLab PDF Toolkit provides all of the core infrastructure used to do the underlying graphics processing and PDF file creation; protograf is effectively a highly customised wrapper to simplify common uses around its existing and extensive capabilities.

Additional libraries in use include:

License

protograf is licensed under the GNU General Public License.