自清洗过滤器滤网厂家
免费服务热线

Free service

hotline

010-00000000
自清洗过滤器滤网厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

全新的GTK30终究发布诸多新特性

发布时间:2020-03-23 12:52:02 阅读: 来源:自清洗过滤器滤网厂家

关注已久的GTK+3.0终究发布了,真是等着让我脖子都掉下来了。早在2009年2月份,我就开始跟踪GTK+3.0的开发,比如这篇文章:Gtk+ 3.0 Theming API Summary。到后来,我几近是每天随着GTK+的Git代码仓库来看它的进展,没想到这么快两年了。如今它终究发布,不记录点文字还真是过不去,我就略微详细地介绍下GTK+3.0吧。

GTK+3.0的发布公告在此:

针对其一些重大更新,我略微做点扩大介绍。

完全Cairo绘制

既然是图形库,如何绘制图形固然是最重要点。请注意,GTK+3.0在这点上,并不是革新的,由于GTK+2.x即已在绝大多数地方使用Cairo绘制了。

Cairo是什么?它是一个矢量的绘图库,Firefox使用Cairo进行网页的绘制和文字排版。

GTK+2.0的时候,还不依赖于Cairo,在Linux下,是标准的基于xlib建构的图形库。直到GTK+2.8,Cairo才开始作为 GTK的重要绘图引擎,历来带来矢量、抗锯齿等特性。但是GTK+仍然还有很多图形绘制方面的API及概念是基于X11的,这使得它的跨平台性真的不怎么 样。

举一个简单的例子好了,GTK+带有Colormap的概念(来源X11),由于Linux图形环境的限制,默许只能使用RGB的colormap,致使要实现透明的效果(即RGBA)很麻烦,并且兼容性、跨平台性不佳。

但在3.0中,所有跟图形绘制相干的东西,已全面转移向Cairo了。跨平台相干的代码,基本上都在事件、屏幕、拖曳等处理上了。现在,即便开发者具有自绘的界面或控件,也能保证在各种平台下有一致的效果了!

更棒的是,由于绘图API的清算和统一,使得GTK+3.0能非常容易地支持除X11、Win32和Mac之外的后端,这就是下节要讲的:

更灵活、更强大的平台扩大支持

前面说到了,GTK+3.0的完全Cairo支持让它的跨平台性更好了。除此之外,还有“平台扩大”能力的大福提升。什么是“平台扩大”能力?

还得记去年我写的《GTK+3.0跑在HTML 5上!——跟X说再见!》吗?对,得益于全新的架构,只需要实现一个后端,GTK+便能以HTML 5的姿态显示出来。

与其同时,GTK+的Wayland后端也在积极开发当中,基本上能在Wayland正式发布时,也有一个标准的GTK+可以使用。因此当 前,GTK+1共有:X11、Win32、Mac(Quartz)、HTML 5和Wayland这五个后端。用GTK+写软件,可以跑在这五个平台上!

另外,GTK+3.0还支持多后端功能,即在一个库里面内置不同的后端,在运行时而非编译时选择具体的后端。这对Linux图形从X11向Wayland发展有着非常重要的意义。

还是举一个例子:

熟习Qt开发朋友应当知道,Qt有一个专门面向嵌入式的版本,叫Qte。但是一个Qt软件,必须在编译时肯定它的链接库是Qt还是Qte,如果它要跑在Qte下,必须重新编使其链接至Qte。

但是GTK+3.0就不需要!多后端功能使GTK+可以动态的装载其后端。比如用户的电脑上同时有Wayland和X11环境,那末在有 Wayland的情况下,GTK应用程序可以以Wayland的形态出现出来,在没Wayland有X11的情况下,它便可以以X11应用程序出现出来。 这样同时照顾到了使用经典X11的用户和使用Wayland新桌面的用户,协助Linux桌面的逐渐进化……

支持CSS的主题API

GTK+虽然具有无数的第三方主题,但鲜有让人眼前一亮的。倒不是说缺少漂亮的设计,而是它的主题API不好,语法难懂、文档缺失,即便有好的设计,也不一定能实现出来。现在终究可以跟过去说再见了。

GTK+正式支持了CSS式的主题文件,还支持简单的动画属性——好歹是CSS 3.0了吧。之前的束缚已没有了,略微有点设计/前端经验的人,都可以简单地制作出GTK+的主题了。接下来就让我们期待有一个漂亮、精致的主题出现吧!

多点装备的支持

2011年了,到处都是支持多点的触摸屏了。GTK+也不能在这方面落后啊。通过对Xinput 2.0的支持,GTK+也支持多点了。这个多点可以是多个鼠标、多个键盘或其他,总之是:多个输入装备。

前段日子不是听到出Ubuntu平板电脑的新闻了吗?有GTK+3.0的话,应该会更给力的!

更多Widgets、更棒的App API

前面说的都是基础设施的改进,那末在运用层,GTK+有甚么变动?

首先是加入了更多的经常使用的Widget,如Switch(开关)、Grid(网格布局)等,另外还引入了GtkApplication这个类,想要实现一个应用程序+多窗口,或单实例等等,就变得非常方便了。

GTK周边:Glib和GObject Introspection

GTK+不是一个独立的个体,它丰富的周边让它增色很多。比如它所依赖的GLib库,GLib是一个功能非常丰富的C库,在最新版本中,它引入了全 新的GSettings用于取代速度很慢的GConf。GSettings在不同的平台有不同的实现,提供统一的API供开发者使用,不像GConf,跨 平台不好。

在Win32下,GSettings写注册表,在Linux下,GSettings的实现是dconf,一个存取非常之快的配置中心。之前 GNOME桌面有两个比较明显的缺点,一个是加载慢(GConf的初始化和读取设取影响很大),其二是应用程序跨平台不容易,虽然也是GTK+编写,但依 赖于GConf的缘由,让移植变得困难。现在GSettings一并解决了这些问题。

其次,还有GObject Introspection,它让GTK+的语言扩大能力尽乎无穷。之前,除GTK+、GTKMM(C++)之外,还有一些动态语言的绑定,如Pygtk、perl-gtk。但这些实现是各种独立的,保护本钱非常高。

但是GObjectIntrospection实现了GObject对象的统一调用,这意味着各种语言只要实现一个GObjectIntrospection的包装,甚么 GTK+的API,都可以通过它来调用了。就像在Python里用ctype一样,但是通过GI技术,能像使用原生API一样来使用这些C库。

目前为止,对GI支持比较好的已有Python、JavaScript了。GNOME 3.0的重要组件——GNOME Shell即是使用了JavaScript来实现其UI逻辑部份。

总结

虽然让人等了很久,但是GTK+明显很好地完成了一次平台清算和新特性的加入,宝贵的是它仍然保持了细小的个头,将能在移动或嵌入式领域发挥重要作用。

另外,本身架构的改变让它可以继续不断地进化,让Linux桌面变得更好!

接下来,就看GTK+3.0在GNOME 3.0和实践生产中发挥作用吧!文/

沈阳中科白癜风医院怎么样

成都新华医院热门文章

北京圣宝妇产医院怎么样

成都整形外科医院哪家最好