關注已久的GTK+3.0終于發布了,真是等著讓我脖子都掉下來了。早在2009年2月份,我就開始跟蹤GTK+3.0的開發,比如這篇文章:Gtk+ 3.0 Theming API Summary。到后來,我幾乎是天天跟著GTK+的Git代碼倉庫來看它的進展,沒想到這么快兩年了。如今它終于發布,不記錄點文字還真是過不去,我就稍微詳細地介紹下GTK+3.0吧。
GTK+3.0的發布公告在此:http://mail.gnome.org/archives/gtk-devel-list/2011-February/msg00020.html
針對其一些重大更新,我稍微做點擴展介紹。
完全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+一共有: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+的主題了。接下來就讓我們期待有一個漂亮、精致的主題出現吧! 上一頁1 2 下一頁進入論壇>>
推薦閱讀
英特爾旗下投資部門英特爾資本周一宣布了6筆新的投資,投資總額為2600萬美元。 北京時間2月14日晚間消息,英特爾旗下投資部門英特爾資本周一宣布了6筆新的投資,投資總額為2600萬美元。 英特爾投資的企業包括開源移動>>>詳細閱讀
地址:http://m.sdlzkt.com/a/xie/20111230/186364.html