GNOME 技术综述
发表于:2007-07-01来源:作者:点击数:
标签:
1 简介 GNOME提供了一个丰富,成熟的桌面环境让你使用你的应用程序.在这个环境的图形前端是一个健壮的结构,允许 开发 者花费更少的时间来创建应用程序,通过使用它提供的工具可以让你的应用程序保持在计算机技术的前沿. 本文所述技术细节包括:GTK+,GNOME和窗口
1 简介
GNOME提供了一个丰富,成熟的桌面环境让你使用你的应用程序.在这个环境的图形前端是一个健壮的结构,允许
开发者花费更少的时间来创建应用程序,通过使用它提供的工具可以让你的应用程序保持在计算机技术的前沿.
本文所述技术细节包括:GTK+,GNOME和窗口管理器的关系,CORBA和ORBit,和GNOME成像结构.
2.GTK+
GTK+是一个成熟,高效的构件集合.它在保持了扩展性和效率的前提下提供了现代的视觉和感觉效果.GTK+为应用程序开发者提供了一个强大的系统对象,它具有动态查询的能力,还可以在运行时修改对象和构件.GTK+是一个可以扩展的工具箱,例如,GNOME有内嵌的,高层构件来缩短应用程序的开发周期.
有很多理由使用GTK+诸如:许可证,捆绑的语言,国际化,拖放支持.
2.1许可证
GPL
2.2语言捆绑
因为GTK+开发的开放性,许多人发布了捆绑GTK+的语言.除了C还有许多语言可以用来创建GTK+应用程序:C++,Perl,Python,Pascal,Objective C,Guile,和Ada.
2.3国际化
GTK+支持国际化文本显示,输入使用XIM扩展工具.因此,你的应用程序立即可以使用非罗马字符集例如亚洲语言.
2.4拖放
GTK+拖放功能支持Xdnd和Motif拖放协议,它们允许其它支持这两个协议的其它构件使用拖放功能.使用其它支持拖放协议的构件(例如Motif, Qt)写的程序可以和GTK+应用程序共享拖放功能.
3.GNOME,窗口管理器和X
新的使用者很难理解GNOME和窗口管理器,GNOME和X的关系.
X窗口系统是将图形元素写到屏幕上的软件.它是整个系统的基础,提供显示图形的库和技术.
窗口管理器定义窗口在屏幕上的位置和窗口边界外观与行为.
GNOME是一个运行在X窗口系统和一个窗口管理器上的桌面环境.GNOME被设计成独立于任何窗口管理器.用户可以选择窗口管理器.GNOME提供了一些机制(hints)让窗口管理器和它无缝地工作在一起.如果一个窗口管理器包含了这些机制就和GNOME兼容.当前,只有很少的窗口管理器和GNOME全部或者部分兼容.
4.GNOME中的CORBA
GNOME提供了CORBA作为应用程序的通信机制.CORBA(Common Object Request Broker Archiecture通用对象请求代理结构)是由OMG开发的.CORBA允许程序互相通信而无论它在本地还是
网络或者它们是如何实现的(使用何种语言/操作系统).例如,一个运行在
LINUX上使用C语言写的程序可以使用CORBA向一个使用Python写成的运行于
Windows系统上的程序发出申请.
GNOME应用程序之间的通信是通过对象请求代理(ORB)实现的.简言之,ORB是允许两个程序进行通讯的
中间件.
4.1 ORBit
ORBit是一个由GNOME工程组开发的ORB.早期,由于受到许可证的限制,几乎没有可以用在GNOME中的ORB.一群黑客写了一个小的,轻量级的ORB叫做ORBit.
5.GNOME成像结构
GNOME成像结构为开发者提供了创建交互图形显示,高
质量打印,印刷质量字体的工具.在GNOME成像结构中有四个组件:Canvas,Libart,GNOME打印,GNOME字体.
5.1 Cavas
GNOME Cavas是一个创建结构化图形的高层显示引擎.一个Cavas显示诸如线,矩形,弧形,文本的集合.Cavas是个可扩展的,高层,
面向对象的绘画构件.应用程序可以使用cavas的基本绘画原语来创建交互的显示,或者定义他们自己的类型来提供复杂的显示..
GNOME Cavas通过俩种模式来显示图象. 1.使用Xlib,快速但是质量低; 2.使用Libart,高质量,但是需要更多的系统资源.
5.2. Llibart
Libart是一个高质量的执行引擎.它使用了很多的技术来提高
性能,例如,microtile数组.一个microtile数组是一个类网格的数据结构,它让canvas有效地代表需要重划区域.
Libart使用GdkRGB为所有的图象创建24位的执行空间,而不管最后的显示是多少位的.如果图象使用少于24位的深度来显示,Libart在显示之前仍然使用24位RGB空间来计算,然后,根据X的显示深度对图象进行转换.这样提高了执行的效率,而且使用24位的深度进行计算可以保证图象的画质.
原文转自:http://www.ltesting.net