Tienes que cambiar al código fuente para eso. Eche un vistazo a "lib/common/arrows.c". Usted encontrará que usted tiene que:
- Añadir un # define como ARR_TYPE_YOURARROWNAME
- añadir una entrada en Arrownames [] con el nombre que va a utilizar en el código de su flecha y la de definir.
- escriba el prototipo de su función de flecha (consulte la fila 115), lea los puntos siguientes
- agregue su función en la matriz Arrowtypes [] una entrada con la definición que escribió anteriormente, el ancho del lápiz, el nombre de su función de flecha que será algo así como arrow_type_yourarrowname
- escribe tu propia función de flecha.
Con el fin de escribir su función de echar un vistazo a arrow_type_normal(), se tarda 6 parámetros: trabajo (que no tiene que preocuparse por esto, sólo lo utilizan como en esta función), dos puntos (' p 'y' u '), arrowsize, penwidth y flag. Si no le importa hacer diferentes versiones de su punta de flecha, o si desea ignorar los modificadores (flechas invertidas y similares) ignore el parámetro del indicador.
Luego, la función básicamente toma los dos puntos p y u (que son estructuras con atributos 'x' e 'y' en ellos) y los combina creando una matriz llamada a [] pasada a gvrender_polygon() que finalmente renderiza tu forma de flecha. arrow_type_normal() también lía con el ancho de la pluma y la flecha.
Resumiendo: prepare graphviz para aceptar el nombre de su flecha haciendo los primeros pasos y luego cree una función que creará la forma de flecha y que llamará a gvrender_polygon o gvrender_polyline (si lo desea).
No lo intenté todavía, pero debería funcionar.