gpt4 book ai didi

graphviz - 如何在 Graphviz 中编写自定义箭头

转载 作者:行者123 更新时间:2023-12-04 15:37:40 25 4
gpt4 key购买 nike

我使用 Graphviz(主要是 dot 和 fdp)来自动生成一些我需要的图表。对于这些图表,我需要一些不属于标准箭头集合的特殊箭头:在一个大的白色三角形内有一个小的黑色三角形,黑色三角形指向下方也是如此。

添加此类箭头的最佳方法是什么?如有必要,我不介意破解源代码。我应该从哪里开始?

最佳答案

您必须为此更改源代码。看看“lib/common/arrows.c”。
你会发现你必须:

  • 添加一个#define,如 ARR_TYPE_YOURARROWNAME
  • 在 Arrownames[] 中添加一个条目,其名称将在代码中用于箭头和定义。
  • 编写箭头函数的原型(prototype)(见第 115 行),阅读下面的点
  • 在 Arrowtypes[] 数组中添加一个条目,其中包含您之前编写的定义、笔宽、箭头函数的名称,类似于 arrow_type_yourarrowname
  • 编写自己的箭头函数。

  • 为了编写你的函数,看看arrow_type_normal(),它有6个参数:job(你不必关心这个,就像在这个函数中一样使用它),两个点('p'和'u' )、箭头大小、笔宽和标志。
    如果您不关心制作不同版本的箭头,或者如果您希望忽略修饰符(反向箭头等),请忽略 flag 参数。

    然后,该函数基本上采用两个点 p 和 u(它们是具有 'x' 和 'y' 属性的结构)并将它们组合起来创建一个名为 a[] 的数组,传递给 gvrender_polygon() 最终将呈现你的箭头形状.
    arrow_type_normal() 也弄乱了笔宽和箭头宽度。

    总结:准备graphviz在第一步接受你的箭头名称,然后创建一个函数来创建箭头形状并调用gvrender_polygon或gvrender_polyline(如果你愿意)。

    我还没有尝试,但它应该工作。

    关于graphviz - 如何在 Graphviz 中编写自定义箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179259/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com