文档章节

优化 Dia

i
 iblackangel
发布于 2017/04/23 17:54
字数 898
阅读 38
收藏 1
点赞 0
评论 0
Dia

背景

使用 Dia 进行 UML 图和流程图的绘制,但是在使用过程中总有很多不爽的地方,所以决定对其进行调整优化。

下载 Dia 源代码

在 Ubuntu 14.04 系统中直接执行 apt-get source dia 命令即可将 Dia 的源码下载到当前目录。

$ apt-get source dia

注意不需要带 sudo 前缀。 接着我还需要 Dia 的编译依赖包,估计一大堆。

$ sudo apt-get build-dep -y dia

好吧,等待它们安装完成就可以进行重新编译了。

编译 Dia

下载回来的是 dia-0.97.2 版本,稍稍阅读下源码目录下的 INSTALL 文档,里面的一节是

BUILDING:
==========

To build, run:

 ./configure
 make

遵循标准的 GNU 编译系统。OK,先用最简单的方式进行编译先吧

$ ./configure
$ make

在编译过程中报错:

layer_dialog.c: In function ‘undo_layer_visibility’:
layer_dialog.c:1452:59: error: ‘intptr_t’ undeclared (first use in this function)
 visibilities = g_list_append(visibilities, (gpointer)(intptr_t)temp_layer->
                                                       ^

intptr_t 未定义,那说明是缺少了 stdint.h 头文件了。这种级别的代码错误不应该呀。虽然可以定位到 app/layer_dialog.c 文件,加上

/* dia-0.97.2/app/layer_dialog.c */
#include <stdint.h>

来解决一下问题,但我还是放弃了这种思路,我想通过目录下的 autogen.sh 重新产生一份我当前系统的编译版本出来。

  1. 清除之前所有的配置信息

     $ make distclean
    
  2. 执行自动化脚本

     $ ./autogen.sh
    
  3. 再编译一次

     $ make
    

果然顺利通过。证明我的判断是对的,代码是没问题的,编译环境不一致而已。

接下来先运行一下看看情况如何。在 INSTALL 文档中提及了测试方案。

TRYING IT OUT:
==============

You can try out dia in the compilation directory by running
 ./app/run_dia.sh

直接运行脚本看看情况如何:

app/run_dia.sh

跟系统上运行的 Dia 一个模样,0.20cm 粗的线条,丑得不行,默认情况下没有 AntiAliased 和关闭 Show Connection Points。我得找找看如何修正这些小问题了。

Now, let the hack begin!

查找默认配置

我在 Dia 里面画了一个流程图 (Flowchart) 的 Box 图形。

输入图片说明

右键查看属性

输入图片说明

这时我在源代码目录下面找到了名为 dia-0.97.2/objects/flowchart/box.c 的文件。

static DiaObject *
box_create(Point *startpoint,
	   void *user_data,
	   Handle **handle1,
	   Handle **handle2)
{
	// ...
	box->border_width =  attributes_get_default_linewidth();
	// ...
}

沿着 box->border_width = attributes_get_default_linewidth(); 的线索寻找它在何处被设置的。往上找到 dia-0.97.2/lib/attributes.c

real
attributes_get_default_linewidth(void)
{
  return attributes_default_linewidth;
}

好的,到这里还得往前找找看是谁设置了 attributes_default_linewidth 这个变量。我利用 emacsM-x grep-find 功能在源代码目录寻找

./lib/attributes.c:27:static real attributes_default_linewidth = 0.1;
./lib/attributes.c:109:  return attributes_default_linewidth;
./lib/attributes.c:118:  attributes_default_linewidth = width;

看来只有 lib/attributes.c 这个文件使用了 attributes_default_linewidth 变量。定位到 118 行

void
attributes_set_default_linewidth(real width)
{
  attributes_default_linewidth = width;
  persistence_set_real("linewidth", width);
}

啊哈,看到这里我突然想起有 ~/.dia/persistence 这个文件。果然在这个文件中 215 行找到了 linewidth 这个变量,变量值 0.20000000000000001 跟上面的设置是一样的:

<dia:real role="linewidth">
  <dia:attribute name="realvalue">
	<dia:real val="0.20000000000000001"/>
  </dia:attribute>
</dia:real>

我试着修改了这个值成 0.10000000000000001 再重新打开 Dia 软件。

输入图片说明

点击右键查看属性

输入图片说明

Good! 原来 Dia 通过 ~/.dia/persistence 这个文件配置某些属性呀!

修改 AntiAliased

~/.dia/persistence 文件中搜索 anti 关键词定位到 270 行

<dia:boolean role="view_antialised">
  <dia:attribute name="booleanvalue">
    <dia:boolean val="true"/>
  </dia:attribute>
</dia:boolean>

修改成 true 即可。

修改 Show Connection Points

~/.dia/persistence 文件中搜索 show 关键词定位到 295 行

<dia:boolean role="show_cx_pts">
  <dia:attribute name="booleanvalue">
    <dia:boolean val="false"/>
  </dia:attribute>
</dia:boolean>

修改成 false,这下子再重新启动 Dia 看看效果。这下子果然满意多了 :D 输入图片说明

© 著作权归作者所有

共有 人打赏支持
i
粉丝 0
博文 47
码字总数 14784
作品 0
广州
程序员
《Towards Interpretable Chi-Chat:Open Domain Dialogue Generation with Dialogue Acts》阅读笔记

标题:Towards Interpretable Chi-Chat:Open Domain Dialogue Generation with Dialogue Acts 来源:ICLR2018 论文链接 声明:转载请注明出处:学习ML的皮皮虾 摘要 传统方法将开放域对话生成...

zc111 ⋅ 2017/12/18 ⋅ 0

Win7 下安装流程图绘制软件 Dia

1.我的环境 操作系统:32位 Win7 旗舰版 Service Pack 1 2.安装Dia OSC上Dia的页面地址:http://www.oschina.net/p/dia 软件首页地址:https://wiki.gnome.org/action/show/Apps/Dia 在这个页...

北风其凉 ⋅ 2014/12/12 ⋅ 0

开源中国4-1期软件推荐 流程图绘制软件Dia

开源中国4-1期(4月第1周)推荐的开源软件是流程图绘制软件Dia,被称为免费开源的Visio替代软件。 Dia是开放源码的流程图软件,是GNU计划的一部分,程式创立者 是Alexander Larsson。Dia使用s...

老枪 ⋅ 2010/04/06 ⋅ 6

Dia 0.97.2 发布,流程图绘制工具

Dia 0.97.2 发布了,该版本更新了大量翻译,修复了很多bug,为 SADT 增加更多的颜色。 Dia是开放源码的流程图软件,是GNU计划的一部分,程式创立者 是Alexander Larsson。Dia使用single docu...

红薯 ⋅ 2011/12/28 ⋅ 9

maven package 打包失败,web模块引入common模块的jar包,报错找不到jar包

分模块工程: xx-parent是父工程,包含pom.xml xx-common包含pojo/dao/mapper,会打包成jar xx-web包含Controller、service,打包成war,提供接口。 现在我打包xx-web,需引入common的jar包,...

王静0716 ⋅ 2017/08/05 ⋅ 6

dia 0.97.2 无法输入中文解决

最近装到mint13 安装dia后无法输入中文,解决如下 修改/usr/bin/dia #dia-normal --integrated "$@" dia-normal "$@" 但是这样会造成工具条独立出来,没事能用就行...

三桂sg ⋅ 2012/06/17 ⋅ 0

java 程序在exclipse中运行错误,不知道原因,求大神指点~~~

java运行后出现下面错误,求大神指点: java.lang.NullPointerException atit.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory$CTL13MultilinearPairingCreator.create(PairingFactory.java......

ttqiao2 ⋅ 2014/05/07 ⋅ 5

Ubuntu 下 Dia 无法输入中文解决方法

1.安装Dia sudo apt install dia 2.终端打开dia 3.点击上面菜单栏的输入法项 4.选择最下面的X输入法 5.此时发现可以切换输入法,切换成中文打字即可 本人系统 Ubuntu 16.04LTS ,输入法:搜狗...

100972 ⋅ 2017/11/03 ⋅ 0

流程图绘制软件--Dia

Dia是开放源码的流程图软件,是GNU计划的一部分,程式创立者 是Alexander Larsson。Dia使用single document interface (CSDI)模式,类似于GIMP。 Dia将多种需求以模组化来设计,如流程图、网...

匿名 ⋅ 2008/12/05 ⋅ 11

奢侈品品牌 Dia 采用 Magento 建立电子商务网站

Magento 的博客分享了一个使用 Magento 企业版运行的阿拉伯电子商务网站,该网站也提供英文版。Dia 是一个奢侈品的品牌,其电子商务网站使用 Magento 的企业版建设,同时也提供 Dia 杂志订阅...

红薯 ⋅ 2010/06/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Windows下安装运行phpMyAdmin

首先确保安装了phpMyAdmin,其次要求服务器是打开的。 如果是在Windows下,建议下载安装WampServer,这是一个集成软件,集成了Apache+MySQL+PHP的开发环境,而且也自带了phpMyAdmin这个软件。...

临江仙卜算子 ⋅ 9分钟前 ⋅ 0

jdk1.8 安装及环境变量配置

1.根据jdk 的软件安装包,首先安装,jdk,

kuchawyz ⋅ 9分钟前 ⋅ 0

给Java字节码加上”翅膀“的JIT编译器

给Java字节码加上”翅膀“的JIT编译器 上面文章在介绍Java的内存模型的时候,提到过由于编译器的优化会导致重排序的问题,其中一个比较重要的点地方就是关于JIT编译器的功能。JIT的英文单词是...

九劫散仙 ⋅ 10分钟前 ⋅ 0

PCI简介(二)

1.x86处理器系统地址空间简介 1.1 CPU地址空间 CPU地址空间是指CPU所能寻址的空间大小,比如对于32位CPU来说,其所能寻址的空间大小为0~4G。这是由CPU自身的地址总线数目决定的。这段空间也被...

深山野老 ⋅ 12分钟前 ⋅ 0

spring中的InitializingBean接口

好久没更博了,真有点怀念,前段时间刚和上家公司say bye,这次进的是电商公司,今天刚开始看代码,逻辑很复杂。 今天看的注册功能,里面见到一个知识点,现在记录一下,今天看项目时见到里面...

千元机爱好者 ⋅ 13分钟前 ⋅ 0

机器学习:数据预处理之独热编码(One-Hot)

前言 ———————————————————————————————————————— 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等。 ...

NateHuang ⋅ 21分钟前 ⋅ 0

MyBatis之输入与输出(resultType、resultMap)映射

在MyBatis中,我们通过parameterType完成输入映射(指将值映射到sql语句的占位符中,值的类型与dao层响应方法的参数类型一致),通过resultType完成输出映射(从数据库中输出,通过dao层的方法查...

瑟青豆 ⋅ 22分钟前 ⋅ 0

屏蔽运营商广告劫持

在今天早上我查找知乎时再次遇到了恶心的运营商广告劫持,右下角硕大的广告直接让知乎挂掉了,我刷了五次知乎才好,之前休息的时候逛知乎也是多次加载错误,估计也是这劫持的锅,相信各位也遇...

gcudwork ⋅ 25分钟前 ⋅ 0

java web 进度条实现原理

资料路径 https://blog.csdn.net/fengsheng5210/article/details/79305026

zaolonglei ⋅ 26分钟前 ⋅ 0

命令行输出java版本与环境变量配置的不一样问题解决

问题:java10刚出来,本着好奇的心,急切的装了体验一下,然后实际项目需求还是java8,所以体验完了就把环境变量改回来了,但是出现了一个问题,命令行输出java版本与环境变量配置的不一样,...

消散了的诗意 ⋅ 29分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部