GKS
應用程序服務的圖形系統
GKS(Graphical Kernel System)即圖形核心繫統,是一個為應用程序服務的基本的圖形系統,它提供了一個應用程序可以調用的功能函數集合,供繪圖編程使用,可以使用GKS編製應用圖形軟體。1985年8月被國際標準化組織確定為計算機圖形標準。
GKS是一個為應用程序服務的基本的圖形系統,它提供了一組用於計算機圖形程序設計的功能函數,定義了6種圖形輸出元素和6種邏輯輸入設備,引進了工作站的概念,設置了3種坐標系,可進行窗口和視口問的轉換,允許存貯和動態地修改畫面.由於GKS對具體設備是獨立的,因此使用GKS編製的應用圖形軟體具有很好的可移植性.GKS定義了 一個獨立於語言的圖形系統的內核,為了和程序語言集成在一起,GKS將嵌入到一個服從於某個語言專有的慣例的語言依賴層中。
自從GKS成為國際標準以來,許多國家實現了自己的GKS系統,並與CAD結合在 一起設計出面嚮應用的交互圖形系統。在一些國家還成立了有關GKS的實現、測試的專門機構以推進研究與探討工作。
GKS的主要功能包括圖形的輸出功能、輸入功能、控制功能、變換功能、組合功能(又稱圖段功能)、元文件功能,其輔助功能還包括詢問功能和出錯處理功能。
GKS把眾多的繪圖功能歸併成五種基本的繪圖功能和一種擴充的繪圖功能。五種基本繪圖功能用來輸出五種基本圖形,它們是折線、鄉點記號、正文、填充區和像元陣列。一種擴充的繪圖功能稱為廣義繪圖原語(GDP)。用它可以繪製圓、圓強、捅圓和洋條曲線等。每個GKS具體有哪些GDP依賴於工作站的特性,在標準中不作統一的規定。繪製上述圖形的功能稱為輸出原語(又稱圖形原語),簡稱為圖原。應用程序員用上述五種基本團原,必要時再加上廣義繪圖原語,可以畫出各種各樣的圖形來。其中,折線用來繪製線划圖形(如機械製圖);多點記號用來標記一串不同的伍置,如一個離散的函數值或過程的採樣值;正文用來在圖上注字,原有國際標準只允許注西文,在國家標準中增加了漢字;填充區用來繪製用直線段包圍起來的多邊形,它可以分別用單一的顏色、陰影線、圖案來填充其內部,或者只劃一個邊框,像元陣列用來顯示一塊矩形的圖像。前兩種圖原比較適合於在繪圖機一類線划圖形設備上使用,后兩種圖原則適合於在光柵圖形設備上使用。至於正文,它既適用於線划圖形設備,又適合於光柵圖形設備。儘管如此,通過適當的硬軟體處理,它們均可在兩類圖形設備上使用。
單單這五種基本繪圖功能加上一種廣義繪圖功能,還不能完全刻畫出所有需要的繪圖特性。例如,對於折線需要控制它所用的線型和顏色,對於正文需要控制其字元高度、所用字體乃至字元的走向。在GKS中,把這些和圖原有關的外宏特性稱為圖原屬性。它們可以用圖原屬性設置功能加以控制。按照圖原屬性是否和幾何尺寸有關,GKS把它們分成幾何屬性和外表屬性。由於外表屬性在不同類型的圖形設備上可以有不同的表現形式,允許應用程序員用與工作站(即圖形設備)無關的方式來指定圖原的外表或用依賴於工作站的方式來指定它們。在GKS中,前一種方式稱為單獨指定,后一種稱為成束指定。
和繪圖功能一樣,GKS也把各種交互圖形輸入設備所具有的功能抽象成與設備無關的六種邏輯輸入設備。它們是定位器、筆劃器、定值器、選擇器、揀取器和字元串設備.其中定位器用來輸入單個位置信息;筆劃器用來軸入一串位置信息;定值器用來輸入一個實效值,它相當於一個旋鈕;選擇器用來選一個號碼,它相當於按鈕;揀取器用來指點畫面上的圖形實體或圖原;字元串設備相當於鍵盤,可用來輸入字元串。在GKS國家標準中規定,可以用字元串設備來輸入漢字串。
每個邏輯輸入設備可以在三種不同的方式下工作,稱為操作方式。這三種方式是請求方式、採樣方式和事件方式。邏輯輸入設備在請求方式下工作時,要由應用程序先發出輸入請求,程序掛起等持操作員的輸入動作,如用滑鼠器標定輸入位置並擊一鑲通知系統.系統經處理后把這個位置信息傳送給應用程序。這種方式類似於從普通終端上輸入一申字元。採樣方式適於從圖形輸入板上用跟蹤方式輸入一串位置,富避免了輸入過程中不必要的”擊健”、“等待”動作;事件方式有點類似於請求方式,但是操作員可以先於程序的請求進行輸入操作,系統把這些輸入倍息作為“事件”存入一個隊列中。當應用程序帶要輸入時,可直接從隊列中取走一個事件,避免了不必要的等待。
各種圖形輸入輸出設備在GKS中統稱為工作站。GKS的控制功能是指那些用來打開和關閉GKS、打開和關閉土作站以及其他對工作站的控制功能.在GKS中,對工作站的控制就是對圖形設備的控制。主要的控制功能還包括啟用和停用工作站,對工作站上圃面更新的控制。
GKS用啟用工作站來啟動圖形輸出原語向工作站的實際輸出。可以同時啟用幾個工作站。輸出原語同時向所有已啟用(活動)的工作站輸出圖原。GKS還提供了—組功能來授制工作站上畫面的更新。對於那些需要通過重畫(或稱再生)才能實現的操作(如刪除畫面上的某些內容),應用程序可以使GKS自動地重畫(隱含再生),或者暫時禁止隱含再生,到適當的時候通過重畫功能或更新工作站功能使其重畫。提供這些功能可以使應用程序以及佳的方式來更改畫面。
GKS使用了三種坐標系和三種變換,即世界坐標系(WC)、規格化設備坐標系(NDC)和設備坐標系(DC).應用程序用世界坐標系定義圖原中的坐標。圖原中的世界坐標通過規格化變換變成規格化設備坐標,再通過工作站變換變成設備坐標。上述兩個變換均是從窗口到視口的變換,即只允許平移和縮放.第三種變換是圖段變換,這是一個從NDC到NDC的任意二維坐標變換。
GKS允許定義多個規格化交換,以便在一個畫面上可以同時顯示幾個不同比例和內容的圖。由於GKS能自動地剪除在規格化變換視口外面的圖形,就可容易地實現一屏多圖,或稱為多窗口。至於工作站變換則只有一個。它用來對整個畫面進行放大和縮小。
在GKS中,圖原可以組合到段圖中,也可以在圖段外產生。當圖原產生時,若有一個圖段是打開著的,該圖原就自動地組合到該打開著的圖段之內。只能同時打開一個圖段.圖段一旦關閉后,就不能重新打開,也不能增加或刪除該圖段內的圖原。圖段有一系列屬性,包括圖段變換、可見性、醒目性、圖段優先順序和可檢測性。圖段變換是一個任意的二維坐標變換。它用來對整個圖段進行平移、縮故和旋轉。
GKS的圖段還用來實現揀取輸入功能,即通過滑鼠器來指點畫面上的某些元素。GKS規定只能揀取圖段內的圖原。可檢測性則進一步控制某個圖段是否能被揀取。
圖段的另一個用途是用於畫面的重面。GKS只重畫定義在圖段內的全部圖原。所有圖段外的圖原在雹畫時自動消失。
為了進一步擴充圖段功能,GKS還定義了一個獨立於工作站的圖段存儲器(WISS)。它是一種特殊的工作站。凡是定義在們WISS工作站上的圖段,可以通過複製圖段到工作站的功能,或把圖段聯結到工作站的功能回到另一個實在的輸出型工作站上。二者的區別在於後者是把圖段作為一個整體畫到工作站上,而前者則是一個一個地把圖段中的圖原複製到工作站上。還有一個插入圖段功能,可把一個圖段經過平移、縮放和旋轉后輸出到當時所有活動的工作站上。
為了長期保存圖形信息,GKS提供了一個稱為元文件的元文件介面。GKS元文件(GKSM)可用於:在系統之間傳送圖形信息;把圖形信息從一個地方送到另一個地方;從一個GKS應用程序向另一個應用程序傳送圖形信息。
在GKS中,元文件作為兩個特殊的工作站對待,即元文件輸出工作姑MO和元文件賴入工作站MI。當應用程序需要寫一個元文件時,只需打開一個MO工作站,並啟用它。隨後的圖形輸出原語就依次寫入該元文件中。除此以外.還寫人和工作站控制、工作站變換、工作站屬性改變以及團段控制和操縱等功能相對應的元文件記錄(稱為項目)。這些寫入的元文件記錄可以由另—個程序,在另一個時刻,乃至在另一個系統上,通過打開一個MI型工作站進行讀入。GKS提供了“從GKSM獲得項目類型”、“從GKSM讀入項目”和“解釋項目”等功能,以便重現原來的圖形。
圖形核心繫統GKS的功能已覆蓋了狹義的計算機圖形學——生成式計算機圖形學的主要部分。同時它在圖片分析和圖片處理中也有用處。圖形核心繫統是關於圖形程序設計工具的第一個國際標準。它不僅提供了有關圖片生成、圓片表示、組合、變換和輸入方面的功能,而且對計算機圖形學產生了更為深遠的影響。
GKS首次提出了一個計算機圖形學方法論的構架,以便把多年來發展起來的各種計算機圖形學的概念有機地聯繫起來。這個構架將成為統一的名詞和概念的基礎,便於大家構造計算機圖形系統,使用計算機圖形學工具,討論計算機圖形學方面的問題。它還有助於進行計算機圖形學的方法、概念和應用方面的教學。
為了便於應用程序用不同的高級程序語言來調用GKS的功能,GKS的功能描述是獨立於任何高級語言的。另外,對一些主要的高級語言,設計了GKS的語言聯編,以便應用程序通過於程序或過程調用來引用GKS的各種功能。這是通過語言依賴層來實現的。在語言依賴層和應用程序之間,有時還有一個面向某個應用領域的軟體支撐層,稱為面嚮應用的層。由於GKS要直接和各種圖形設備打交道,GKS中負責這部分工作的程序稱為設備驅動程序,又稱為工作站驅動程序。當然這部分程序仍要通過操作系統中通用的驅動程序最終與設備發生關係。此外,GKS中還有一部分負責元文件生成和解釋的程序。它們可以看成是GKS和操作系統中文件系統之間的介面。
設備驅動程序是GKS核心部分和圖形設備之間的介面。它的任務是產生和設備有關的繪圖命令並處理和設備有關的交互輸入。在GKS核心部分和設備驅動程序之間可以定義一種介面信息格式,稱為工作站介面。在互動式圖形設備和操作員之間也存在另一個介面.稱為操作員介面。通常這兩個介面由GKS的實現者來規定。至於GKS的元文件輸出和輸入可以看成兩個特殊的圖形設備,元文件的產生和解釋程序就好像是它們的驅動程序。
通過GKS元文件,還可實現圖形信息在計算機網路中的通信。應用程序可以通過元文件和另一節點機上的另一個應用程序進行聯機的圖形信息通信,也可以直接訪問存儲在另一個節點機上的GKS元文件。所以可以同時把GKS元文件看成GKS和網路之間的介面。