一、 概述
本文档目标为介绍LibreOffice各个子模块的主要功能和作用,以及开发过程中应该注意的一些事项。除本文所述,在每个子模块的源码目录中都有一个README文件,对当前模块进行一些说明,建议阅读。
二、 文字处理模块
sw——文字处理应用层主要实现模块。
swext——文字处理扩展。目录只支持MediaWiki扩展。
writerfilter——读取docx、rtf类型文档。
writerperfect——读取WordPerfect类型文档。
三、 电子表格模块
chart2——图表模块。
sc——电子表格应用层主要实现模块。
scaddins——附加计算函数模块。
sccomp——实现线性求解算法。
四、 演示文稿模块
animations——动画模块。
avmedia——音视频模块。
sd——演示文稿应用层主要实现模块。
sdext——演示文稿扩展模块。
slideshow——幻灯片放映模块。
五、 公用模块
accessibility——gtk辅助,用于LDTP自动化测试抓取控件功能。
basebmp——比特图渲染模块。(新版本已删)
basegfx——图形基础算法模块,处理多边形、向量、矩阵运算等。
basic——宏解释器实现模块。
bean——支持通过Java调用Office API。
bin——一些shell、perl脚本工具。
binaryurp——二进制UNO远程协议,提供UNO对象的进程间通信支持。
bridges——桥接模块,建立UNO和其它协议(JNI、.NET等)之间的桥接。
canvas——画布模块。
cli_ure——UNO运行环境通用语言基础设施模块。
codemaker——生成UNOIDL代码模块。
comphelper——UNO组件辅助功能模块。
compilerplugins——编译器插件模块,目前仅支持Clang编译器。
config_host——配置文件模块。由configure推导而来。
cppcanvas——画布C++辅助模块。
cppu——UNO核心类型定义与实现模块。
cppuhelper——UNO组件核心的C++封装模块。
cpputools——UNO组件注册工具模块。
cui——通用UI用户界面模块。
desktop——桌面模块,包含main函数和应用部署等。
dictionaries——字典模块。
distro-configs——包含一些特殊的发行配置项,很少用到。
drawinglayer——绘图中间层模块,提供绘制复杂形状的API接口。
dtrans——剪贴板数据传输抽象模块。
editeng——编辑引擎模块,实现大纲段落等功能。
embeddedobj——嵌入OLE对象到Office。
embedserv——通过OLE2将Office嵌入到其它程序。
emfio——读取emf图片。
eventattacher——宏事件处理模块。
extensions——扩展模块,包括浏览器插件、ActiveX控件等支持。
external——外部工程模块。
extras——模板、剪贴画、调色板、符号字体等额外功能支持。
filter——格式过滤器模块。
formula——公式模块。
fpicker——打开文件对话框进行本地文件挑选。
framework——UI框架层,包括工具栏、菜单栏、加速键和交互等实现。
i18nlangtag——语言标签模块。
i18npool——国际化语言支持模块。
i18nutil——国际化语言相关工具模块。
icon-themes——图标资源模块。
idl——编译SDI文件,生成C++头文件。
idlc——IDL编译器模块。
include——工程共享头文件所在目录。
instdir——编译安装目录,可执行程序放于此目录。
instsetoo_native——编译安装的辅助目录。
io——UNO组件的简单IO封装。
javaunohelper——通过Java使用UNO功能的辅助模块。
jurt——Java UNO 运行时,实现Java UNO。
jvmaccess——访问jvm,对Java运行时环境中不兼容的API使用进行封装。
jvmfwk——Java运行时环境框架封装。
l10ntools——本地化语言模块。
libreofficekit——Office开发工具包。
lingucomponent——语言组件,包括拼写检查、连字符、同义词等功能。
linguistic——语言模块,处理注册模块中的拼写检查、连字符、同义词等。
m4——使用pkg-config的一些宏。
nlpsolver——非线性编程模型的引擎优化,用于电子表格应用。
o3tl——类似于boost的模板库。
odk——Office development kit,SDK开发工具集。
offapi——包括除udkapi模块以外的所有IDL文件。
officecfg——Office配置文件模块。
onlineupdate——在线更新模块。
oovbaapi——VBA API封装。
oox——OOXML支持模块。
osx——OS X系统调试辅助模块。
package——读写ZIP包文件模块。
postprocess——编译验证模块,作为最后一个编译环节对编译结果进行验证。
pyuno——Python语言的UNO绑定。
qadevOOo——QA测试模块。
readlicense_oo——授权模块。
registry——读取store模块实现的内部注册表(.rdb格式)。
remotebridges——处理进程间桥接的UNO服务。
ridljar——实现JAVA UNO类型系统。
rsc——.src资源编译模块。(新版本已删)
sal——系统抽象层模块,实现平台无关字符串、对平台相关的线程、进程等抽象。
salhelper——SAL模块的C++封装。
sax——使用UNO对expat进行封装。
scripting——脚本框架模块。
sfx2——模型-视图-控制器等框架实现模块。
shell——系统功能调用封装模块。
smoketest——冒烟测试模块。
solenv——编译环境构建模块。
soltools——编译辅助工具模块。
sot——复合文件存储工具模块。
starmath——公式编辑模块。
stoc——实现UNO注册、反射、内省机制。
store——实现二进制格式的内部注册表(.rdb格式)。
svgio——读取svg图片。
svl——从svtoolls中分离出来的不依赖于vcl的代码。
svtools——建立于VCL之上的工具集,包括通用对话框、打印对话框、帮助等。
svx——包含图形相关的许多辅助实现代码。
sysuideb——打包模块。
test——C++单元测试框架模块。
testtools——测试工具模块。
toolkit——实现抽象窗口机制。
tools——工具集模块。
translations——翻译和本地化模块。
ucb——通用内容代理模块。
ucbhelper——通用内容代理辅助模块。
udkapi——UNO底层API对应的IDL文件。
UnoControls——UNO控件,实现进程和线程分离等。
unodevtools——UNO组件开发辅助工具模块。
unoidl——UNO IDL 注册的格式支持模块。
unoil——将IDL映射到Java类定义。
unotest——UNO 测试模块。
unotools——C++ UNO 使用辅助工具。
unoxml——XML服务的UNO封装。
ure——UNO运行时环境。
uui——ui交互辅助,使用vcl,用于ucb等。
vbahelper——VBA辅助函数。
vcl——视图组件库,实现各类窗口和基本渲染机制。
workdir——编译生成中间文件放置处的工作目录。
xmerge——实现文档合并。
xmloff——ODF导入导出过滤模块。
xmlreader——一个小而快速的XML读取解析器,用于UNO组件注册。
xmlscript——将基本对话框以XML格式进行序列化/反序列化。
xmlsecurity——封装libxmlsec实现文档签名。
六、 开发注意事项
1、多到网上查找资料 https://wiki.documentfoundation.org/Development 为libreoffice开发者主页 https://wiki.openoffice.org/wiki/Main_Page 为openoffice wiki 主页
2、多尝试修改代码验证效果
不作提交时,可以大胆修改源码,验证效果。 需要提交时则需认真审查修改。 修改公用模块代码时一定要谨慎小心,最好进行代码走查,进行系统测试。 修复缺陷时要对代码多进行了解,避免产生副作用。
3、大胆重构
毕竟代码是来自开源的,而且是历史悠久的,所以发现代码坏味道就大胆地去重构。 不过重构不是重写,还是要掌握一些基本的重构方法和注意事项的。
本文暂时没有评论,来添加一个吧(●'◡'●)