#go #svg #png #baduk #sgf #file-read #format-text

bin+lib sgf-render

CLI 工具,用于从 SGF 游戏记录生成围棋对局图

39 个稳定版本

3.1.5 2024年8月17日
3.1.3 2024年7月31日
2.6.1 2024年3月2日
2.4.1 2023年7月26日
1.2.1 2020年11月29日

#83 in 图像

Download history 3/week @ 2024-06-06 74/week @ 2024-06-13 199/week @ 2024-06-20 3/week @ 2024-06-27 130/week @ 2024-07-11 5/week @ 2024-07-18 394/week @ 2024-07-25 101/week @ 2024-08-01 61/week @ 2024-08-08 200/week @ 2024-08-15

757 每月下载量

MIT 许可证

285KB
2.5K SLoC

Sgf Render

Continuous integration

Cho Chikun Elementary, Problem 45.

CLI 工具,用于从 SGF 格式的游戏记录生成围棋对局图。

默认 SVG 输出清晰,标签良好,易于重新样式化或修改。

支持 编号走法标记棋谱输出、以及多种可定制的 样式

安装

请检查 GitHub 上的 发布页面 以获取预构建的二进制文件。或者,您也可以从 crates.io 安装该包

$ cargo install sgf-render

从源代码构建

请确保您已安装 gitcargo。然后

$ git clone https://julianandrews/sgf-render
$ cd sgf-render
$ cargo build --release

使用方法

Usage: sgf-render [OPTIONS] [FILE] [COMMAND]

Commands:
  query  Print a tree of the SGF's variations
  help   Print this message or the help of the given subcommand(s)

Arguments:
  [FILE]  SGF file to read from [default: read from stdin]

Options:
  -o, --outfile <FILE>             Output file [default: write to stdout]
  -f, --format <OUTPUT_FORMAT>     Output format [default: svg] [possible values: svg, text, png]
  -g, --game-number <GAME_NUMBER>  Game number to display (for multi-game files) [default: 0]
  -v, --variation <VARIATION>      Variation number to display (use `query` command for numbers) [default: 0]
  -n, --node-number <NODE_NUMBER>  Node number in the variation to display [default: last]
  -w, --width <WIDTH>              Width of the output image in pixels [default: 800]
  -s, --shrink-wrap                Draw only enough of the board to hold all the stones (with 1 space padding)
  -r, --range <RANGE>              Range to draw as a pair of corners (e.g. 'cc-ff')
      --style <STYLE>              Style to use [default: simple] [possible values: minimalist, fancy, simple]
      --custom-style <FILE>        Custom style `toml` file. Conflicts with '--style'. See the README for details
      --move-numbers[=<RANGE>]     Draw move numbers (may replace other markup)
      --move-numbers-from <NUM>    Number to start counting move numbers from (requires --move-numbers) [default: 1]
      --label-sides <SIDES>        Sides to draw position labels on [default: nw]
      --no-board-labels            Don't draw position labels
      --tileset <TILESET>          Tileset to use for text rendering (11 characters) [default: ●○┏┓┗┛┯┠┷┨┼]
      --no-marks                   Don't draw SGF marks
      --no-triangles               Don't draw SGF triangles
      --no-circles                 Don't draw SGF circles
      --no-squares                 Don't draw SGF squares
      --no-selected                Don't draw SGF selected
      --no-dimmed                  Don't draw SGF dimmed
      --no-labels                  Don't draw SGF labels
      --no-lines                   Don't draw SGF lines
      --no-arrows                  Don't draw SGF arrows
      --no-point-markup            Don't draw any markup on points
      --kifu                       Generate a kifu
  -h, --help                       Print help
  -V, --version                    Print version

节点选择和查询命令

可以使用 --node-number 标志选择节点编号。对于简单的 SGF,--node-number 和走法编号通常是对齐的,因为传统上 SGF 文件根节点没有走法。

可以使用 --variation 标志选择变体,并按深度优先遍历顺序编号。您可以使用 query 命令打印变体及其关联的 --node-number

$ sgf-render query tests/data/variation_tricky/input.sgf
Game #0
v0, 0-8
├── v0, 3-8
│   ├── v0, 6-8
│   └── v1, 6-7
└── v2, 3-7
    ├── v2, 5-7
    │   ├── v2, 6-7
    │   │   ├── v2, 7-7
    │   │   ├── v3, 7-7
    │   │   └── v4, 7-7
    │   └── v5, 6-7
    │       ├── v5, 7-7
    │       └── v6, 7-8
    ├── v7, 5-5
    └── v8, 5-5

Game #1
v0, 0-3
├── v0, 3-3
└── v1, 3-3

文本输出

您可以使用以下命令在终端生成适用于终端的纯文本图表:--format text

# sgf-render -f text tests/data/minimalist/input.sgf

   ABCDEFGHJKLMNOPQRST
 1 ┏┯┯┯┯┯┯┯┯┯┯○●●●●┯┯┓
 2 ┠┼┼┼┼┼┼┼┼┼┼○○○●○●┼┨
 3 ┠┼┼┼○○●○○○┼┼○●●○●●┨
 4 ○○○○○●○○●┼○┼┼○●○○○●
 5 ○●●●○●●●┼┼┼┼○┼┼┼○●┨
 6 ●┼●○┼┼┼┼○┼┼┼●○┼●●┼●
 7 ┠●●○┼┼○○┼●○○○●●┼┼●┨
 8 ┠●○○○○●○┼○●●●○┼┼┼┼┨
 9 ┠●○●┼○●○○○○○●●●●●┼┨
10 ┠┼●●●┼●○●●●●○○○○○●┨
11 ┠┼┼●○┼●●○┼┼○┼┼┼┼┼●┨
12 ┠┼●┼●○┼○┼○○┼┼┼┼┼○●┨
13 ┠●●●○○┼○○┼●○┼┼○┼○●┨
14 ┠●○○○●●●●●●○┼┼○●●┼┨
15 ○●●○●┼●○○○●●○┼┼○●┼┨
16 ┠○○●●●┼●●○○○○○○┼●┼┨
17 ┠○┼○┼●●●○┼┼●●○●●┼┼┨
18 ┠┼○○●┼┼●○┼○●┼●┼┼┼┼┨
19 ┗┷┷┷┷┷┷┷┷┷○┷●┷┷┷┷┷┛

文本图表主要用于在终端检查SGF文件,并不支持所有功能

  • --move-numbers--kifu 不受支持,
  • 点标记被禁用(等同于 --no-point-markup),并且
  • --style--custom-style--width 被忽略。

棋谱生成

默认情况下,sgf-render 生成用于显示某一时刻棋盘位置的图表。被捕获的棋子将被移除,当使用 --move-numbers 时,只显示给定点的最后一步棋的编号。使用 --kifu 标志生成适合用作游戏记录的图表

  • 步数编号被启用
  • 所有其他标记被禁用
  • 棋子永远不会从棋盘上移除
  • 如果要在现有棋子上放置棋子,则添加注释代替

您可以使用 --move-numbers 标志选择要编号的子集,这在生成仅显示游戏一部分的图表(或一系列图表)时非常有用。

自定义样式

您可以使用 --custom-style 标志指定一个包含TOML格式自定义样式配置的文件。以下是一个用于 simple 样式的配置示例

line_color = "black"
line_width = 0.03
hoshi_radius = 0.09
background_fill = "#cfa87e"
label_color = "#6e5840"
black_stone_fill = "black"
white_stone_fill = "white"
black_stone_stroke = "black"
white_stone_stroke = "black"
markup_stroke_width = 0.1
black_stone_markup_color = "white"
white_stone_markup_color = "black"
empty_markup_color = "black"
black_stone_selected_color = "blue"
white_stone_selected_color = "blue"
empty_selected_color = "blue"

您可以在源代码包下的 resources/styles/ 中看到一些其他示例

贡献

欢迎拉取请求!对于重大更改,请首先打开一个问题来讨论您想更改的内容。

也欢迎功能请求!目标是使其成为通用的SGF图表生成工具。只需在 GitHub 上打开一个问题即可。

依赖项

~4–14MB
~186K SLoC