如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
开放源码的嵌入式浏览器概要设计 开放源码的嵌入式浏览器概要设计 Copyright(C)2001,RedFlagSoftware,Co.Ltd. Allrightsreserved. 该文档仅用于内部技术交流。未经许可不得转载全部和部分内容, 禁止随意散发,严禁用于商业目的。 【文档名称】开放源码的嵌入式浏览器概要设计 【文档编号】SUM-DESIGN-BROWSER-V1.0 【编写人员】孙勇 【编写日期】2001/09/03 【文档内容】本文档进行将进行浏览器的概要设计,主要集中在系统框架的搭建上 【主要内容】 【修订记录】 序号修订内容修订人、日期 1 开放源码的嵌入式浏览器概要设计 嵌入式浏览器实现的总体目标 在Konqueror以及Konq-Emb的基础上,实现以下的目标: 兼容HTML4.1 全面实现DOMLevel1,部分实现DOMLevel2与Level3 支持样式单,基本实现CSS1和部分实现CSS2 基本实现DOM与ECMAScript的绑定,支持JavaScript1.4 支持多字节语言以及双向排版 采用ViewML中采用的”GlueLayer”方法,实现渲染部分和GUI平台无关 支持HTTP1.1协议,支持非阻塞网络访问,通过OpenSSL支持SSL 支持Cookie 支持Netscape规范的Plugin规范 内建支持多种图象格式 嵌入式浏览器整体结构及其概要设计 Render引擎 EJ a C v M DOMHTMLDOMEventa S A c S r c i p r i t DOMCorep引 t绑擎 定 XML/HTMLTokenizer/Parser 网络访问 我们简单的描述一下浏览器的工作过程: 1.通过网络读取一个HTML文件 2.交给XML/HTML的Parser进行解析,在解析的过程中如果发现新的URL(主要是图 片、样式单以及Jscript外部代码),提交给网络部分去读取 3.在解析的过程中按照DOM规范的要求形成一棵DOM树 4.在形成DOM树的过程中,为每个DOM结点形成一个Render结点并且Render结点 形成一棵Render树(Render树和DOM树的结构不一定相同) 5.对Render树进行排版,最后进行输出。 6.把解析过程中的JavaScript代码交给JavaScript解释引擎去解释执行。 接下来,我们对每个模块进行概要设计 2 开放源码的嵌入式浏览器概要设计 Render部分的概要设计 设计思路 与Render部分相连比较紧密的CSS部分,基本上是对CSS语法的分析,生成相应的属性 和选择符,这部分与底层的GUI无关不需要大的改动,Kong-emb的Render类排版部分实 现基本上也是与GUI无关,包括layout,calWidth,calHeight,calMinMaxWidth等等就不 需要做什么大的改动。需要改动的地方主要是最后Render类的绘制,它是依赖与底层GUI 的,下面,我们就简要说一下实现思路。 Qt模拟层 Konq-emb的Render部分的实现是基于Qt的,因此需要把实现当中的Qt部分去掉。事实 上Qt有着自己比较独特的signal-slot的机制,因此模拟siganl-slot机制肯定是我们的首要 任务,我们可以访照Qt的实现,仍然采用Qt的moc预编译工具。 1.实现一个QObject类,这个类主要包括connect,disconnect,activate_signale函数 的实现。 2.实现一个QMetaObject,这个类主要是维护signal/slot的资料,它应该是内聚在Qobject 中的Qobject的函数的实现最终要依赖它来实现,存储了一些signal,slot的名字和它所 对应的函数指针,这样就可以由QObject调用相应的槽函数。 Qt-widget的替换 在Kong-emb的Render类里面基本上可以分为两类一种是和Qt-widget紧密相连的类,另 外一部分是没什么大关系的,主要是利用QPaint和Qcolor进行一些图形的绘制工作,这一 部分说作的工作并不是很大。另一部分和Qwidget相关的Render,这些类主要是 RenderFormElement类的孩子类,这些类都有一个成员m_widget,m_widget是用 Qt-widget实现的,并且做了一些相关的消息处理机制的设置,因此这部分我们要做的工作 是用mini-gui的widget来代替它原来的widget实现。 QEvent的模拟 在Render类里面,有一些函数是处理Qt-wid
as****16
实名认证
内容提供者
最近下载