GTK+和X在嵌入式Linux中的应用【乐鱼网页版在线登录】
在嵌入式Linux上有很多图形界面系统GUI,还包括Qt/Embedded,FLTK,Microwindows和GTK+等。作为一个开发者,究竟用于什么样的GUI系统呢?对一个系统,将它改建为合乎你的市场需求,你要做到多少改动呢?改动后的系统的尺寸一般不会有多大呢?这些都是开发人员不会遇上的问题。我们在这里辩论的就是要对这些内容做到一个明确精细的分析,通过我们的辩论,大家不会对基于GTK+和X的GUI在嵌入式Linux下的应用于有一个清楚的理解。
在嵌入式系统应用于日益发展的今天,更加多的应用于都必须用于到GUI来展开研发,以此来取得更佳的交互性。 嵌入式Linux下GUI的自由选择,对大多数开发人员来说是一个必须权衡对比的过程。自由选择GTK+运营在X系统上,然后X系统运营在映射系统的framebuffer上,这不会是一个很好的自由选择。
GTK+与X的优点 当然,GTK+与X一般都是被大家考虑到为体积较小的桌面系统的好配上,但实质上对于映射系统来说,它也具有诸多的优点: 1、X-window系统与GTK+都十分平稳可信,X-window系统是经历了长年的研发及应用于实践中的,GTK+也是一个较为成熟期的对外开放源代码项目; 2、X-window系统是一个灵活性的client/server的模型结构,一个应用于客户端的瓦解会影响到图形系统的其他部分,这是一个很最重要的特性,它不利于反对第三方应用于的拓展研发,而不影响到主体部分; 3、GTK+有两个最重要的库:GDK和GLIB。GDK抽象化了底层的窗口管理,要重制GTK+到另一个有所不同的窗口系统的话,我们只必须重制GDK就可以了。
GLIB是一个工具子集,它还包括了数据类型,各种宏定义,类型转化成,字符串处置,任何应用程序都可以链接这个GLIB库,用于其中的各种数据类型、方法,来防止反复代码,或者说防止开发人员新的发明者轮子,这样不利于增加整个系统的尺寸; 4、对GTK+/X的剪裁是很更容易的,它们具有很好的可配备的选项,具有明晰的代码结构,可以确保安全性正确地去除大段的不必须的代码; 5、GTK+具有大量的应用于,GTK+早已被用在了很多最重要的应用于系统中; 6、GTK+的许可是LGPL方式的,X是non-copyleftfreelicense的,第三方研发的系统都能与它们展开链接; 7、GTK+/X二者都是基于C代码的,而不是C++; 8、GTK+用于C来构建了面向对象的架构; 其他GUI系统 其他可以自由选择的图形系统还包括:Qt/Embedded,FLTK和Microwindows。 1、Qt/E是其中较高级的,它是一个原始的,基于framebuffer的GUI系统,由Trolltech公司研发; 2、Qt/E具有高效的图形图形效果,还包括TrueType字体系统,及alphablending半透明处置; 3、但Qt/E不是用于LGPL许可方式,而是用于两种许可方式:研发用于GPL,而商用必须许可与版税; 4、Qt/E是用C++撰写的; 5、Qt/E十分大,一个iPAQQPE就还包括了3.3MB的Qt/E库和一个718KB的QPE库(和Xlib类似于的一种库); 6、Qt/E过于平稳,QPEdemo不俗,但经常出现过瓦解; 7、FLTK(theFastLightToolkit)是一个小型的GUI图形系统,它也是用C++写出的,特性过于较少,应用于范围较较少,过于成熟期; 8、Microwindows和X-Window比起也是一个不俗的自由选择,它闲置约100KB-600KB大小的内存,和文件存储空间,虽然早已有了一个其上的GTK+重制,但还是过于成熟期; X-window:比你想象的要小很多 对于X-window系统,广大的网络开发者早已做到了大量的工作来增大其的尺寸,最著名的有TinyX。可以通过对不必须的代码的剪裁及除去XLIB中静态数据来增加总体的尺寸,如:color管理系统,弧形,粗线条等。
在大多数开发人员的印象里,X系统很可观,但实质上,你听见的,是那些对X过于理解的人的一种误会。在经过剪裁后的情况下,GTK+/X要比GTK+/FB与Qt/E还要远比有效地,且XLIB对一般的应用程序具有更佳的反对起到,应用程序的研发不会显得更加高效。 如何剪裁GTK+ 我们可以从标准的GTK+发售版本来剪裁,剪裁掉其中的不必须的,改动早已有的代码,并重新加入新的特性所必须的代码。
剪裁的范围还包括小的改动,也还包括一些大的结构性的、核心的转变。 1、除去Widgets窗口 最开始,我们把不必须的Widgets去杀掉,比如:GtkGamma、GtkHRuler、过时了的GtkList(被GtkCList所替代了)、和我们不必须的GtkFrame.边框。
2、Widgets窗口尺寸与绘制 接着,改动Widgets的大小与绘制方法,GTK+获取了一个主题引擎机制,来掌控窗口的外观与效果。它容许在运营中设置字体,设置行间隔,设置绘制特性。
这样的机制很不俗,但过于灵活性,代码中很多设置的地方都是用于软编码的方式;另外,一种主题,就是一堆额外的代码段和参数,这样不会减少整体的尺寸。 必须找到影响到窗口系统整体尺寸的内容,再行来改动它。比如,一个按钮的大小与绘制,还包括这样的参数:边框的宽度,x/y的方位(主题引擎必须的参数),缺省的间隔(常量),缺省的左上角的方位(常量),取得焦点。
这些在映射系统中并不需要那么原始,我们可以根据实际的市场需求来修改代码,来防止GTK+的复杂性。 另外,用于面向对象的方法,来承继窗口Widgets的特性,作为子类也是一个有效地的方法。 3、GtkWindow GTK+总是假设一个窗口里面包括了另一个窗口,它们就是嵌套关系。但对于我们常常不会遇到的有软键盘的应用于时,就不完全正确了。
软键盘虽然是归属于一个窗口的,但却不会远超过那个窗口。所以为了突破这个假设,必须对GtkWindow减少一些特性,将软键盘处置成一种类似的子窗口。 软键盘所在的窗口,必须处置软键盘的按键事件,并将按键转发给软键盘工具条。
当软键盘按下,软键盘的消息传递函数就被登记到完整窗口上,这样软键盘就不会号召按键事件。在GtkWindow上减少模块,可以创立,号召按键。 在小屏幕的映射系统中,可以将滚动条做到得更加修改些,去除边框,用于单个滚动条。
这些都更加合适映射系统。 字体管理系统 在字体管理方面,要寻找一个轻型的机制来在嵌入式系统表明各种字体,并不是那么非常简单,艰难在于GTK+的大型的Widget风格与X系统的老式的字体管理机制的融合所引发的问题。 前面提及的,主题引擎方式的GTK+是用来掌控窗口的样式与外观的。在一个窗口表明之前,它不会获得一个式样对象,GtkStyle,它可以是一个指向父窗口的式样对象指针,或者是一个新的类型,这些式样对象将被应用于到这个窗口及它的子窗口。
这个式样由缺省值、rc文本文件、应用于来确认。
本文关键词:leyu·乐鱼,乐鱼体育,leyu体育,leyucom乐鱼官网官方网站,leyu手机在线登录入口,乐鱼网页版在线登录,乐鱼官网入口网页版
本文来源:leyu·乐鱼-www.gamewp.net