Skip to main content

Command line tool to generate razor-sharp Xiangqi (Chinese chess) setup graphics

Project description

xiangqi-setup (and xiangqi-board)

Overview

xiangqi-setup is a command line tool using svgutils 0.3.4 to render Xiangqi (Chinese chess) board setups from WXF/FEN/annoFEN/XAY files to SVG images. With WXF files that contain move history, xiangqi-setup can replay these moves on top of the initial setup — all of them, none, or any custom number of moves (using the --moves COUNT argument). With XAY/annoFEN files it can also draw arrows, mark a field as "good", "bad" or involved in a move — it can add annotations.

The most simple way to render a given setup is:

# xiangqi-setup input.wxf output.svg

For file doc/demo.wxf, the result is:

(left: default board, default pieces — right: default board, euro_xiangqi_js pieces)

There are a number of themes to pick from for board and pieces (independently). The --help listing below also includes the list of all themes and their license information.

The default board theme clean_alpha has been generated with command line tool xiangqi-board that is included with the xiangqi-setup package. It can be used to create variations of the detault theme, e.g. to create a version with reduced spacing in crosses you would run:

# xiangqi-board --cross-gap-px 2 board.{svg,ini}

Installation

You can install the latest release using pip like so:

# pip install xiangqi-setup

If you would rather run the latest pre-release code off Git master in a virtualenv, you could do:

# git clone --depth 1 https://github.com/hartwork/xiangqi-setup
# cd xiangqi-setup/
# python3 -m venv venv
# source venv/bin/activate
# pip install -e .

Writing a Book

For a demo of how to use xiangqi-setup in writing a book please see https://github.com/hartwork/xiangqi-book-example .

Usage in Detail

xiangqi-setup — Renders WXF/FEN/annoFEN/XAY Files to SVG Images

# xiangqi-setup --help
usage: xiangqi-setup [OPTIONS] INPUT_FILE OUTPUT_FILE
       xiangqi-setup --help
       xiangqi-setup --version

Generate razor-sharp Xiangqi (Chinese chess) setup graphics

positional arguments:
  INPUT_FILE            location of WXF/FEN/annoFEN/XAY file to render
  OUTPUT_FILE           location of SVG output file to write

optional arguments:
  -h, --help            show this help message and exit
  --debug               enable debugging (e.g. mark corners of the board)
  --version             show program's version number and exit

theme selection:
  --board THEME         name of board theme to use (default: "clean_alpha");
                        please check the list of available themes below
  --pieces THEME        name of piece theme to use (default: "retro_simple");
                        please check the list of available themes below
  --annotations THEME   name of annotation theme to use (default:
                        "colors_alpha"); please check the list of available
                        themes below

scaling:
  --width-px PIXEL      width of the output in pixels (default: ~248.03, i.e. 7.0cm at 90.0dpi)
  --width-cm CENTIMETER
                        width of the output in centimeters (default: 7.0)
  --dpi FLOAT           resolution of the output in dots per inch (default: 90.0)
  --scale-pieces FACTOR
                        factor to scale pieces by (0.0 to 1.2, default: 0.9)
  --scale-annotations FACTOR
                        factor to scale annotations by (0.0 to 1.2, default: 0.9)

WXF format arguments:
  --moves COUNT         how many moves to play (for a file with moves history),
                        e.g. "3" would play the first move of red, the first
                        move of black and the second move of red and then skip
                        any remaining moves, "all" would play all moves, "-1"
                        all moves but the last, "-2" all but the last two
                        (default: "0")
  --annotate-last-move  Add annotations "blank_move" and "piece_move" to the
                        source and target locations of the last move

board themes (16 available, in alphabetic order):
  a4_blank_2cm_margin                        (license: CC0-1.0)
  cambaluc_remake_nolegend                   (license: CC0-1.0)
  cambaluc_remake_nolegend_nogap             (license: CC0-1.0)
  ccbridge_3_0_beta4_default_preview_remake  (license: CC0-1.0)
  clean_alpha                                (license: CC0-1.0)
  clean_beta                                 (license: CC0-1.0)
  commons_xiangqi_board_2008                 (license: public-domain)
  commons_xiangqi_board_2008_bw_thin         (license: public-domain)
  dhtmlxq_2014_remake                        (license: CC0-1.0)
  latex_xq_remake                            (license: CC0-1.0)
  minimal                                    (license: CC0-1.0)
  minimal_chinese                            (license: CC0-1.0)
  minimal_chinese_arabic                     (license: CC0-1.0)
  playok_2014_remake                         (license: CC0-1.0)
  western_red_wine                           (license: CC0-1.0)
  xiexie_2_5_0_remake_minimal                (license: CC0-1.0)

piece themes (9 available, in alphabetic order):
  ccbridge_3_0_beta4_default_preview_remake  (license: CC0-1.0)
  commons_xiangqi_pieces_print_2010          (license: FDL-1.2+ / CC-BY-SA-4.0)
  commons_xiangqi_pieces_print_2010_bw_heavy (license: FDL-1.2+ / CC-BY-SA-4.0)
  euro_xiangqi_js                            (license: CC-BY-4.0)
  latex_xqlarge_2006_chinese_autotrace       (license: non-commercial)
  latex_xqlarge_2006_chinese_potrace         (license: non-commercial)
  playok_2014_chinese                        (license: CC0-1.0)
  playok_2014_chinese_noshadow               (license: CC0-1.0)
  retro_simple                               (license: CC0-1.0)

annotation themes (2 available, in alphabetic order):
  colors_alpha                               (license: CC0-1.0)
  gray_alpha                                 (license: CC0-1.0)

xiangqi-board — Creates Custom Board Themes

# xiangqi-board --help
usage: xiangqi-board [-h] [--line-thickness-px FLOAT] [--field-width-px FLOAT]
                     [--field-height-px FLOAT] [--border-thickness-px FLOAT]
                     [--border-gap-width-px FLOAT]
                     [--border-gap-height-px FLOAT] [--cross-width-px FLOAT]
                     [--cross-thickness-px FLOAT] [--cross-gap-px FLOAT]
                     SVG_FILE INI_FILE

positional arguments:
  SVG_FILE
  INI_FILE

optional arguments:
  -h, --help            show this help message and exit
  --line-thickness-px FLOAT
                        Line thickness of square fields in pixel (default: 1)
  --field-width-px FLOAT
                        Width of fields in pixel (default: 53)
  --field-height-px FLOAT
                        Height of fields in pixel (default: 53)
  --border-thickness-px FLOAT
                        Line thickness of border in pixel (default: 2)
  --border-gap-width-px FLOAT
                        Widtn of gap to border in pixel (default: 40)
  --border-gap-height-px FLOAT
                        Height of gap to border in pixel (default: 40)
  --cross-width-px FLOAT
                        Width of starting position cross segments in pixel
                        (default: 10)
  --cross-thickness-px FLOAT
                        Line thickness of starting position cross in pixel
                        (default: 1)
  --cross-gap-px FLOAT  Gap to starting position cross in pixel (default: 4)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xiangqi-setup-2.1.0.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

xiangqi_setup-2.1.0-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

Details for the file xiangqi-setup-2.1.0.tar.gz.

File metadata

  • Download URL: xiangqi-setup-2.1.0.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.11

File hashes

Hashes for xiangqi-setup-2.1.0.tar.gz
Algorithm Hash digest
SHA256 861b4f6c0a4725b6a86be2e09a962016c81981fad02c9fd30dc8e13eaa5b9959
MD5 203f4329bc9e4c1c3fc65a4c6daea600
BLAKE2b-256 c75a857f6b146269738ae2250a5371836f3e7ed3192ca7378ba526b08a814839

See more details on using hashes here.

File details

Details for the file xiangqi_setup-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: xiangqi_setup-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.11

File hashes

Hashes for xiangqi_setup-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fb7cb36fb36434b2116a8b73ae823aac6a63ad5313deac72e00578e5fddc1f5c
MD5 aaf5625fc147e58b920c304c648324f9
BLAKE2b-256 aed76e1f1ae0d02e7a97b65ba7f59d8eb2293788438374901dff2665a923fd76

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page