2 个不稳定版本
0.9.0 | 2024 年 5 月 9 日 |
---|---|
0.7.4 | 2022 年 3 月 20 日 |
#8 在 #pgn
2.5MB
3K SLoC
c2g
♟️ 将您的棋类 PGN 转换为 GIF。 c2g
还为 Yew 网络应用程序提供动力: c2g-yew。
用法
基本用法
将像素大小和输出文件传递给 c2g
cat example/example.pgn | ./c2g --size 640 --output example/chess.gif
将输出以下 640x640 的 GIF
子弹
子弹游戏非常适合使用 --delay="real"
标志进行实时延迟
cat example/example_bullet.pgn | ./c2g --size 640 --delay="real" --output example/chess_bullet.gif
清洁
如果您更喜欢更简洁的外观而没有任何 功能,则可以禁用它们
cat example/example_no_clock.pgn | ./c2g --size 640 --no-player-bars --no-terminations --output example/chess_clean.gif
安装
要安装 c2g,您可以下载从 版本 中可用的二进制文件之一。这些二进制文件使用默认功能 include-svgs
和 include-fonts
编译,这意味着位于 svgs/
和 fonts/
的 svgs 和字体分别捆绑在二进制文件中,这使得它可以在任何地方运行,无需任何额外的依赖项。
从源代码编译
c2g 还可以通过获取存储库并使用 cargo
构建
git clone https://github.com/tomasfarias/c2g.git
cd c2g
cargo build --release
强烈建议使用 --release
标志进行构建,因为与调试构建相比,GIF 渲染性能非常优越。
默认情况下启用了 include-svgs
和 include-fonts
功能,这些功能可以通过使用 --no-default-features
构建,以禁用。如果禁用,则需要通过 CLI 参数提供字体和 svgs 的路径。如果您希望使用不同的字体或棋子集,而不是使用 --no-default-features
并依赖 CLI 参数,请考虑将它们添加到 svgs/
和 fonts/
目录,并启用默认功能进行编译。
功能
玩家栏
如果可用,我们将在 GIF 的顶部和底部包含玩家的用户名、elo 和回合时钟。此功能可以通过传递 --no-player-bars
禁用。
时钟和实时
如果棋盘游戏PGN文件中包含%clk
注释,c2g将尝试将它们解析为时长,以尝试估算每步棋所需的时间。每一轮的时钟都会包含在[玩家栏](#Player bars)中。此外,我们可以要求c2g使用实际时长作为GIF帧之间的延迟,使用--delay="real"
选项。这对于通常持续1-2分钟或更短的速棋比赛来说尤其令人兴奋。
终止圆圈
gif的最后一张图片将在每个国王上方画一个小圆圈,以显示比赛的结果。某些终止状态有特殊的圆圈来指示比赛结束的原因。由于有众多可能导致棋局终止的原因,我们利用终止PGN标题来尝试缩小原因范围。如果标题不可用,或者在其中找不到任何原因,我们假设输掉的一方是因为选择绘制哪种圆圈而认输。目前,所有可能的和局都同样处理,以确定绘制哪种圆圈。
可以使用--no-termination
禁用此功能。
许可
本项目中未列为例外情况的任何文件均受GNU通用公共许可证第3版许可。
以下(免费)例外情况适用
文件 | 作者 | 许可 |
---|---|---|
svgs/cburnett/*.svg | Colin M.L. Burnett | GPLv2+ |
fonts/roboto.ttf | Christian Robertson | Apache 2.0 |
fonts/oswald.ttf | Vernon Adams, Kalapi Gajjar, Cyreal | 开放字体许可证 |
依赖项
~12–22MB
~285K SLoC