x window研究筆記(2)
2.x window的功能
x window提供了一組非常底層的服務,客戶端程式傳送請求給x window, x window根據請求完成相應服務。通過這些服務,客戶端程式可以構建期望的使用者介面。根據不同的功能,可以把這些服務分為以下幾大類:
2.1.處理輸入
x window從鍵盤和滑鼠接受輸入,這些輸入資料被當作」事件」傳送給適當的客戶端程式。至於哪個視窗應該接受到這些事件,是依賴於視窗管理器的(視窗管理器實際上也是乙個客戶端),典型的事件包括按鍵,滑鼠移動,滑鼠按下/放開等。
輸入裝置往往是與硬體平台相關的,而且又是獨佔資源,所以用x window管理是理所當然的。應用程式通常不需要關心具體的裝置,只要處理相應的事件就行了,像mouse和筆點可能發出同樣的事件,而應用程式不用區分它們。輸入事件也可以通過xtest擴充套件,由軟體模擬出來的(通常用來實現軟體鍵盤)。
2.2.按層次形組織視窗
x window提供服務讓客戶端程式建立/銷毀視窗,所謂的視窗就是螢幕上的矩形區域,它是可以層層巢狀的,有很多操作可以作用於視窗(如,查詢或改變視窗的大小和位置等),x window的主要功能之一就是負責管理這種按層次形組織的視窗。
不過x window管理這些視窗是被動進行的,由視窗管理器根據使用者的行為決定。它請求x window做相應的動作,比如移動視窗,調整視窗的大小,改變視窗的前後關係等等。第一次接觸x window時,得知視窗管理器是乙個普通的客戶端時,我覺得驚訝,這種設計真是太先進了,其實它正是遵循了提供機制而不是策略這一原則。
現在已經有很多視窗管理器的實現可用,它們提供不同的風格和功能,有的用於pc,有的用於嵌入式系統,像matchbox就是在嵌入式上比較流行的,像nokia的n770/n800就是用的matchbox。
2.3.提供圖形操作
x window提供了一些基本的畫圖操作,如畫直線、矩形、圓弧和多邊形等。 這些圖形的顏色、線寬、填充型別都可以由客戶端程式指定。x window同時提供了許多位圖操作,這些位圖操作可以作用於了視窗的各個區域。
x winwod還會充分挖掘硬體的加速特性,像填充、畫直線和影象疊加等操作,如果硬體支援相應的加速功能,就可以通過硬體實現,否則就用軟體實現。
2.4.提供文字和字型操作
x window提供了字型相關的操作。客戶端程式可以請求x window在指定的區域用指定的字型顯示指定的字串,當然在此之前應該請求x window載入字型,載入後客戶端程式可以得到關於字型的一些資訊。
實際上,這一功能由於客戶端字型繪製的流行,而大大弱化了,現在的字型差不多都是在客戶端繪製好後,再通過x render擴充套件顯示到x window去的。在fontconfig/freetype/pango/cairo的幫助,在客戶端繪製字型更容易使用。
(待續)
X Window研究筆記 5
x window研究筆記 5 顯示裝置曾一度是效能的瓶頸,儘管有些顯示標準存在,但各廠家為了提高市場競爭力,增強顯示裝置的效能,加入了各種加速功能和其它一些專有特性,各os提供的介面也各不相同,x window為了保持可移植性,又要充分發揮硬體特性,所以顯示裝置驅動介面看起來有點複雜。幸運的是,對t...
X Window研究筆記 14
x window研究筆記 14 驅動程式對不同硬體和平台上的實現有很多差異,x window框架部分並不會直接與驅動程式關聯起來,也是採用的註冊機制。前面已經有關於這方面的介紹了,這裡不再驁述了。實現指定的介面 儘管大多數與平台相關的函式都可以採用註冊機制,x window框架部分通過函式指標去呼叫...
X Window研究筆記 16
x window研究筆記 16 伺服器端字型的配置 指定字型搜尋路徑 預設的路徑 包括 usr x11r6 lib x11 fonts目錄下的幾個子目錄。在配置檔案中指定 tinyx不需要配置檔案。在命令列引數中指定。用fp選項設定字型路徑。用fn設定預設的字型。用fc設定預設的游標字型。預設的字型...