今天修正了graphviz的一个BUG,解决了其中文问题:)
graphviz-1.13.20040729.1224在我的MagicLinux上用dotty时习惯性的用鼠标中键的滚轮
轻轻的向下滚动了一下,居然就core dump了:
# gdb lefty core.23835
......
#00x0805d9f7 in find (tp=0x80bd1f4, ko=0x80895f0, sk=0x0) at tbl.c:479
479 if ((kvlp = tp->lp))
(gdb) p/x sk
$1 = 0x0
看看GETSKINDEX是什么东东:
# grep GETSKINDEX tbl.c
#define GETSKINDEX(tp, sk) (unsigned long) *sk % tp->ln
不core dump才怪!!
patch了一下这个bug:
# diff tbl.c tbl.c.bk
479,483d478
< /* Add by cloud.040804*/
< if(sk == NULL)
< return NULL;
< /* Add End */
<
最后把这个BUG报告给 [email protected]了,
不能显示中文问题原来是需要在dotty.lefy中硬加入中文字体影射,
然后在dot中指定fontname=Simsun即可!
顺修改了一些功能:
1. 鼠标左键点击不建立新节点,改为中键点击时建立.
2. 移动节点后鼠标左键up时重绘视图.
3. 增加快捷键v显示鸟瞰视图
还没有解决的问题有:
1. 通过左键拖戈来移动图像
2. 通过左建拖戈加shift键来实现放大和缩小
Patch结果如下:
# diff dotty.leftydotty.lefty.old
44,45d43
< 'Simsun' =
< '-misc-fixed-medium-r-normal--0-0-0-0-c-0-gbk-0';
55d52
< 'Simsun' = 'Simsun';
# diff dotty_ui.lefty dotty_ui.lefty.old
236d235
< 'v' = "birdseye view";
281c280
< local gt,vt;
---
> local gt;
286d284
< {
288,291d285
< vt = dotty.views;
< gt = dotty.graphs;
< gt.drawgraph (gt, );
< }
293,297c287,288
< }
<
< # else if (~data.obj)
< # gt.insertnode (gt, data.pos, null, null, null, 1);
<
---
> } else if (~data.obj)
> gt.insertnode (gt, data.pos, null, null, null, 1);
322,323d312
< {
< gt.insertnode (gt, data.pos, null, null, null, 1);
325d313
< }
页:
[1]