xlib - c語言的x介面是乙個參考指南,以低層c語言介面的x視窗系統協議。它既不是編寫x window系統的教程,也不是使用者指南。相反,它提供了庫中每個函式的詳細描述以及相關背景資訊的討論。xlib - c語言x inte***ce假定對圖形視窗系統和c程式語言有基本的了解。其他高階抽象(例如,由工具包為x提供的抽象)構建在xlib庫之上。有關這些高階庫的更多資訊,請參閱適當的工具包文件。x window system協議為x的行為提供了乙個確定的單詞。雖然這裡出現了其他資訊,但是協議文件是統治文件。
為了介紹x程式設計,本章討論:
x視窗系統概述
錯誤標準標頭檔案
泛型值和型別
xlib中的命名和引數約定
程式設計注意事項
字符集和編碼
格式規範
x視窗系統概述
本書中使用的一些術語對x來說是惟一的,而其他視窗系統中常見的一些術語在x中有不同的含義。
x視窗系統支援乙個或多個包含重疊視窗或子視窗的螢幕。螢幕是一種物理監視器和硬體,可以是彩色、灰度或單色。每個顯示器或工作站可以有多個螢幕。一台x伺服器可以為任意數量的螢幕提供顯示服務。乙個使用者擁有乙個鍵盤和乙個指標(通常是滑鼠)的一組螢幕稱為顯示。
x伺服器中的所有視窗都按照嚴格的層次結構排列。在每個層次結構的頂部是乙個根視窗,它覆蓋每個顯示螢幕。每個根視窗都被子視窗部分或全部覆蓋。除根視窗外,所有視窗都有父視窗。通常每個應用程式至少有乙個視窗。子視窗可能有自己的子視窗。通過這種方式,應用程式可以在每個螢幕上建立任意深度的樹。x為windows提供圖形、文字和柵格操作。
子視窗可以比其父視窗大。也就是說,部分或全部子視窗可以擴充套件到父視窗的邊界之外,但是所有到視窗的輸出都被父視窗剪下。如果乙個視窗的多個子視窗具有重疊的位置,則其中乙個子視窗被認為位於其他子視窗之上或高於其他子視窗,從而使它們變得模糊。輸出到其他視窗覆蓋的區域將被視窗系統抑制,除非該視窗具有後備儲存。如果乙個視窗被第二個視窗遮擋,則第二個視窗只遮擋第二個視窗的祖先,這些祖先也是第乙個視窗的祖先。
視窗的邊框寬度為零或多個畫素,可以是您喜歡的任何圖案(畫素圖)或純色。乙個視窗通常有乙個背景圖案,但並不總是這樣,當它被開啟時,會被視窗系統重新繪製。子視窗使父視窗變得模糊,父視窗中的圖形操作通常由子視窗剪下。
每個視窗和pixmap都有自己的座標系統。座標系的橫座標是x軸,縱座標是y軸,原點在左上角[0,0]。座標是積分的,以畫素為單位,與畫素中心重合。對於乙個視窗,原點位於視窗內左上角的邊框內。
x不保證儲存windows的內容。當乙個視窗的一部分或全部被隱藏起來,然後重新顯示在螢幕上時,它的內容可能會丟失。然後,伺服器向客戶機程式傳送乙個expose事件,通知它需要重新繪製視窗的部分或全部。程式必須準備根據需要重新生成windows的內容。
x還提供了圖形物件的離屏儲存,稱為pixmap 。單平面(深度1)畫素圖有時稱為位圖。pixmaps可以在大多數圖形函式中與windows互換使用,也可以在各種圖形操作中用於定義模式或tile。視窗和點陣圖一起稱為drawable 。
xlib中的大多數函式只是將請求新增到輸出緩衝區。這些請求稍後將在x伺服器上非同步執行。返回儲存在伺服器中的資訊值的函式不會返回(也就是說,它們會阻塞),直到接收到顯式的響應或發生錯誤。您可以提供乙個錯誤處理程式,它將在報告錯誤時被呼叫。
如果客戶機不希望請求非同步執行,它可以在請求之後呼叫xsync, xsync將阻塞,直到傳送並處理所有先前緩衝的非同步事件。作為乙個重要的***,xlib中的輸出緩衝區總是通過呼叫任何從伺服器返回值或等待輸入的函式來重新整理。
許多xlib函式將返回乙個整數資源id,這允許您引用儲存在x伺服器上的物件。這些型別可以是window、font、pixmap、colormap、cursor和gcontext,如檔案中定義的那樣。這些資源由請求建立,並由請求或連線關閉時銷毀(或釋放)。這些資源中的大多數都可以在應用程式之間共享,實際上,視窗是由視窗管理器程式顯式地操作的。字型和游標在多個螢幕上自動共享。字型根據需要載入和解除安裝,並由多個客戶機共享。字型通常快取在伺服器中。xlib不支援在應用程式之間共享圖形上下文。
XLib程式設計 標準標頭檔案
標準標頭檔案 以下包含的檔案是xlib標準的一部分 x11 xlib.h 這是xlib的主標頭檔案。大多數的xlib符號都是通過包含這個檔案來宣告的。該檔案還包含預處理器符號xlibspecificationrelease。這個符號被定義為6。xlib的release 5首次引入這個符號 x11 x...
SQLite學習手冊 C C 介面簡介
一 概述 在sqlite提供的c c 介面中,其中5個apis屬於核心介面。在這篇部落格中我們將主要介紹它們的用法,以及它們所涉及到的核心sqlite物件,如database connection和prepared statement。相比於其它資料庫引擎提供的apis,如oci mysql api...
linux unix程式設計手冊 51 55
system v ipc 和 posix ipc比較和system v 訊息佇列對比 開啟,關閉和斷開訊息佇列 include include include mqd t mq open const char name,int oflag,mode t mode,struct mq attr ofl...