移植PBP和PP

PBP提供了一套GUI工具包,这套GUI工具包称为轻量级的组件工具包,这是因为这套工具包组件功能内部的实现是基于Java技术的,即在实现内部并不是直接调用本地平台的GUI工具包相应的组件功能来实现的而是通过调用java.awt包(basis/classes/common/java/awt)中的Java类来实现的,当然java.awt包中的类的实现内部实现调到最底层最基本的功能还是调用本地GUI工具包最基本的接口来实现,但是PBP
层的组件接口的功能是基于Java技术来实现的。
移植PBP的目的就是让PBP最底层内部的实现使用不同的本地GUI工具包。
PBP移植层的结构:CDC Porting文档152。
在basis/classes/common/java/awt下包含了PBP1.1标准中规定的java.awt及java.awt.*中所有的类,这些类只是提供了基本的GUI功能,还并没有提供各种组件对应的类。PBP所说的提供的轻量级的组件工具包技术通过调用这些类里的基本图形功能来实现的。
basis/classes/common/sun/awt在面的类对PBP规定的要提供的类(即java.awt中的类)提供了一个高层的实现(in java)。
basis/classes/awt/qt/java/awt下面的类是对ava.awt中的类提供了一个具体的实现(in java),相当于Java版的GUI工具包,这些类负责注册和调用本地桥的native方法,其native方法的实现需要调用qt库。
basis/classes/awt/microwindows/java.awt下面的类是对java.awt中的类提供了一个具体的实现(in java),相当于Java版的GUI工具包,这些类负责注册和调用本地桥的native方法,其native方法的实现需要调用microwindows库。
basis/native/awt/qt是basis/classes/awt/qt/java/awt下面的类的native方法的具体实现(in C),调用qt库函数。移植PBP类库的主要工作就在此。
basis/native/awt/microwindows是basis/classes/awt/microwindows/java/awt下面的类的native方法的具体实现(in C),调用microwindows库函数,移植PBP类库的主要工作就在此。
basis/classes/common/sun/awt/image下提供了实现PBP类库所需要的图像处理类(in jave),负责图象的解码。
basis/native/image是basis/classes/common/sun/awt/image下面类的native方法的具体实现(in C)需要使用具体的编解码算法。
移植PBP对本地GUI工具包的要求:CDC Porting文档155。
什么是TrueType技术?TrueType字体有什么特点?
答:TrueType是由AppleComputer公司和Microsoft公司联合提出的一种新型数学字形描述技术。它用数学函数描述字体轮廓外形,含有字形构造、颜色填充、数字描述函数、流程条件控制、栅格处理控制、附加提示控制等指令。TrueType采用几何学中二次B样条曲线及直线来描述字体的外形轮廓,其特点是:TrueType既可以作打印字体,又可以用作屏幕显示;由于它是由指令对字形进行描述,因此它与分辨率无关,输出时总是按照打印机的分辨率输出。无论放大或缩小,字符总是光滑的,不会有锯齿出现。但相对PostScript字体来说,其质量
要差一些。特别是在文字太小时,就表现得不是很清楚。
TrueType字体的优势是什么?
答:TrueType字体具有如下优势:①真正的所见即所得字体。由于True-Type字体支持几乎所有输出设备,因而无论在屏幕、激光打印机、激光照排机上,还是在彩色喷墨打印机上,均能以设备的分辨率输出,因而输出很光滑。②支持字体嵌入技术。存盘时可将文件中使用的所有TrueType 字体采用嵌入方式一并存入文件之中,使整个文件中所有字体可方便地传递到其它计算机中使用。嵌入技术可保证未安装相
应字体的计算机能以原格式使用原字体打印。③操作系统的兼容性。MAC和PC机均支持TrueType字体,都可以在同名软件中直接打开应用文件而不需要替换字体。
在我们修改了本地桥层的native方法的实现之后,我们要将新的本地桥层编译出一个新的动态链接库,并且在使用的时候在Java文件中加载这个库。
在本地桥层中的本地方法内部调用的是本地GUI工具包中的库函数。
PP提供了一套重量级的GUI组件接口,这些组件功能的实现都是直接调用本地GUI工具库的API来完成的,和PBP不一样,它们不是有java.awt包中的Java类来实现的。
在Java中对GUI Weight如按钮、对话框等的支持有两种方式:一种是轻量级的GUI组件,它们是java.awt.Component类的子类,完全是基于Java技术来实现的。另一种是重量级的GUI组件,它们是基于本地GUI工具库中的weidgt来实现的。
同PBP一样,PP也分为上层的公共的API和低层的实现类,实现类需要实现personal/classes/awt/peer_based/sun/awt/peer下的接口。
SwingGCU工具包提供了一个与awt不同的GUI框架,它提供了比awt更多的接口,许多Swing类的实现是作为一个轻量级的GUI组件。
PP同样提供了基于AWT的GUI接口,即java.awt包中的类,并且提供的类比PBP还要丰富,但是PP对于这些接口的实现方式与PBP不同,这种不同也直接导致了PP提供的是一些重量级的GUI组建.
PP移植层的结构:
1)AWT层,即java.awt包中的类,即Java应用程序员可以直接使用的类,也就是我们PP层最终要实现的类,在personal/classes/awt/peer_base/java/awt下的类和personal/classes/common/java/awt下的类,以及basis/classes/common/java/awt下的类。
2)AWT Peer接口层:指的是personal/classes/awt/peer_based/sun/awt/peer的接口,这些接口就定义了我们要实现AWT层所必须实现的接口。
3)Sun AWT实现层:指的是personal/classes/awt/peer_based/sun/awt下面的java文件以及basis/classes/common/sun/awt下面的java文件,这些类是Sun为实现AWT层所提供的高端的类。
4)工具包支持库层:指的是personal/classes/awt/peer_based/sun/awt/qt下的java文件,这一层相当于一个java版的GUI工具库,它实现了awt Peer层提出的接口,这些类使用了native方法来通过调用本地GUI工具库中的接口来实现相应的功能。
5)本地桥层:说白了就是上一层中的类的native方法的实现层,这些实现文件在personal/native/awt/qt下面。

personal/classes/common/sun/awt/image下提供了实现PP类库所需要的图像处理类(in jave),负责图象的解码。
personla/native/image是personal/classes/common/sun/awt/image下面类的native方法的具体实现(in C)需要使用具体的编解码算法。
PP的移植层结构图:Porting指南163。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值