文档章节

Dia UML Association 添加字体选择功能

i
 iblackangel
发布于 2017/04/25 19:45
字数 832
阅读 42
收藏 0
点赞 0
评论 0
Dia

背景

使用 Dia 绘制了一个聚合关系的 UML 图,点击 Association 属性页的时候结果发现没有配置字体的选项,仅有的关于字体的设置只有 Text color,这可让我郁闷了半天……于是我又看了一下 Note 的属性页,至少还是可以设置字体的嘛。

输入图片说明

输入图片说明

由此看来,功能方面确实还是有欠缺的呀。没招了,自己将该部分功能添加上去吧。

Dia 源代码

关于 Dia 源代码的下载,编译过程可以参考「优化 Dia」 一文。

修改过程

根据 Note 类似地去配置 Association 的属性。在源代码中找到名为 dia-0.97.2/objects/UML/note.c 的源文件,同目录下面还有 association.c 源文件。源代码的结构还是很清晰的,可以直接从使用的角度找到对应的源码,objects 下面存放图形绘制的对象,比如 UML 中的 Association 差不多就是 objects/UML/association.c 文件。比对着 note.c 源码来修改 association.c 文件。

  1. 添加 text.h 头文件

    association.c 文件中添加 text.h 头文件

    #include "text.h"
    
  2. 修改 struct _Association

    struct _Note 中有一个 Text 指针和一个 TextAttributes 变量,在 struct _Association 中也同样添加它俩先

     struct _Association {
     	/* ... */
     	Text *text;
     	TextAttributes attrs;
     }
    
  3. 初始化 text

    association_props[] 结构体数组中添加:

     PROP_STD_TEXT_FONT,
     PROP_STD_TEXT_HEIGHT,
     PROP_STD_TEXT_COLOUR_OPTIONS(PROP_FLAG_VISIBLE|PROP_FLAG_STANDARD|PROP_FLAG_OPTIONAL),
     { "text", PROP_TYPE_TEXT, 0, N_("Text"), NULL, NULL }, 
    
  4. 修改 association_offsets[]

    添加 text, text_font, PROP_STDNAME_TEXT_HEIGHT 属性

     { "text",PROP_TYPE_TEXT,offsetof(Association, text)},
     { "text_font",PROP_TYPE_FONT,offsetof(Association,attrs.font)},
     { PROP_STDNAME_TEXT_HEIGHT,PROP_STDTYPE_TEXT_HEIGHT,offsetof(Association,attrs.height)},
    

    将属性值 text_color 修改成 attrs.color

     { "text_colour", PROP_TYPE_COLOUR, offsetof(Association, attrs.color) },
    
  5. 修改 association_get_props 函数

    仿照 note_get_props 函数,添加

     text_get_attributes(assoc->text, &assoc->attrs);
    
  6. 修改 association_set_props 函数

    仿照 note_set_props 函数,添加

     apply_textattr_properties(props, assoc->text, "text", &assoc->attrs);
    
  7. 修改 association_create 函数

    产生 assoc->text 实例以及获取 assoc->attrs,一会得用 font 代替源码中的 assoc_font 才行。

    DiaFont *font;
    Point p;
    
    /* ... */
    
    font = dia_font_new_from_style(DIA_FONT_MONOSPACE, ASSOCIATION_FONTHEIGHT);
    p = *startpoint;
    assoc->text = new_text("", font, ASSOCIATION_FONTHEIGHT, &p, &color_black, ALIGN_LEFT);
    dia_font_unref(font);
    text_get_attributes(assoc->text, &assoc->attrs);
    
    

    到这里先 make 一下,运行 app/run_dia.sh 看下效果。

    输入图片说明

    啊哈,终于看到字体的设置了。接下来就是要将字体的值设置到 Association 对象上去。

峰回路转

在我还想着怎么去修正上面的问题的时候,读了一下 README 文档,进入 Dia 的官方网站:http://www.gnome.org/projects/dia,是的,它已经被重定向到 https://wiki.gnome.org/Apps/Dia 了。 首页上竟然还是放送着 2011 年的新闻,我就在想,哥,你们到底这几年有没有对 Dia 做过一点点升级改动呀,咋还是 0.97.2 的版本呀。不过当我点击到 Development 的时候一切就都变得可爱了。最新的修改可以查看:https://git.gnome.org//browse/dia/log/。日期显示到 2017 年,显然是一直都有在改动的。并且提供了 Git 仓库。

通过下面命令克隆:

git clone git://git.gnome.org/dia

下载回来编译:

./autogen.sh
make

测试

app/run_dia.sh

这次发现针对 UML 有好大改动。属性页竟然全改了,Association 增加了 StyleMeta 标签页,字体的选择问题竟然已经修复了,点 32 个赞。翠花,上图:

输入图片说明

输入图片说明

输入图片说明

版本升级为:0.97+git

输入图片说明

凡事越深入越多发现呀!

同时也期待 Dia 的新版本尽快发布。

参考资料

[1] 优化 Dia
[2] https://wiki.gnome.org/Apps/Dia
[3] https://wiki.gnome.org/Apps/Dia/Development
[4] https://git.gnome.org//browse/dia/log/

© 著作权归作者所有

共有 人打赏支持
i
粉丝 0
博文 47
码字总数 14784
作品 0
广州
程序员
使用Rational Software Architect设计一个电话本程序

本文作为本人给公司技术工程师培训RSA/RAD JAVA编程与UML上手的指导性HOW TO类文档,已经在WINDOWS2003,RAS6.0上测试通过. 本问将介绍 IBM Rational Software Architect,并利用内行经验为您突...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

流程图绘制软件--Dia

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

匿名 ⋅ 2008/12/05 ⋅ 11

推荐:免费开源的Visio替代软件DIA

DIA —— 这个大小为 16.5 MB 的软件可以从 Sourceforge 点击这里下载。它还提供 Linux 版本,估计也很可能可以在 Mac 上面运行。这篇文章我们介绍 Windows 版本的使用。 安装之后启动应用程...

老枪 ⋅ 2009/10/15 ⋅ 12

php开发工具

1 设计工具 2 编码工具 3 测试工具 4 部署工具 5 管理工具 设计工具 UML和相关设计工具 Argo UML UML绘图工具,支持PHP stub生成。-–Java编写。 Umbrello UML UML绘图工具,支持PHP stub生成...

“寒流” ⋅ 2011/04/26 ⋅ 2

15款替代微软产品的开源软件

虽然微软在商业软件领域处于垄断地位,但我们还是有很多优秀的开源软件可以用来替代微软的产品。 操作系统 Windows Ubuntu 邮件服务器 Exchange Server Zimbra 邮件客户端 Outlook Thunderb...

虫虫 ⋅ 2012/01/05 ⋅ 63

一个Linux脚本搞定常用软件的安装

为了测试今天装了一个Vista,Vista感觉很难用,老是出确认提示框,烦死个人鸟。后面再重装了ubuntu,这是第二次装ubuntu。显卡不太顺利,于是我在字符界面安装完之后,再把显卡驱动装上,然后...

唐玄奘 ⋅ 2017/12/04 ⋅ 0

图表制作程序 -- Dia 0.97 发布

经过两年多的开发,Dia 团队最终发布了 0.97 版本。Dia 是一个用来制作各种图表的程序,新版本包含统一的用户界面、能够完成高质量的跨平台打印及 PDF 输出、添加了有限的旋转文本功能、改进...

红薯 ⋅ 2009/05/12 ⋅ 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

UML常用图的几种关系

在UML的 类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Composition), 依赖(Dependency) 1. 泛化(General...

李永china ⋅ 2016/05/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部