開啟主選單

Macintosh中文维基 β

本條目參考:知乎專欄文章,專欄文章參考英文維基的 QuickDrawQuickDraw GXQuickDraw 3D 所在條目。

QuickDraw 是 Classic Mac OS 平台核心的 2D 圖形庫與 API,它最初由 Bill Atkinson 與 Andy Hertzfeld 開發,前身是 Apple Lisa 平台的 LisaGraf。

Mac OS X 中 Apple 啟用了全新的 Quartz 圖形引擎,但仍然將 QuickDraw 作為 Carbon API 的一部分保留在系統內。

從 10.4 Tiger 開始官方放棄了 QuickDraw,10.5 Leopard 開始使用 QuickDraw 開發的應用不再支持 64 位,10.8 Mountain Lion 移除了系統對 QuickDraw 頭文件的支持。

使用 QuickDraw 開發的應用仍可在 OS X 10.8 - macOS Sierra 10.12 下運行,但 macOS SDK 與 Xcode 不再能夠編譯使用 QuickDraw 的工程。

2010 年,美國計算機歷史博物館(Computer History Museum)收錄並公開了歷史版本 QuickDraw 與 MacPaint 1.3 的源代碼,MacPaint 也是使用 QuickDraw 的應用程序。

MacPaint



目錄

理論概述編輯

條目中所有原理描述截取自官方文檔:Imaging with QuickDraw (PDF)


QuickDraw 是一個位圖系統,像素在該系統中作為表示圖像數據的基本單位。

該系統定義的基礎數據結構是稱為 GrafPort 的圖形容器,它代表邏輯上的繪製區域。

GrafPort 中最明顯的「對象」是窗口,每個窗口都代表各自獨立的 GrafPort 圖形容器,用戶創建窗口時將由窗口管理器使用 QuickDraw 來創建圖形容器並顯示內容。
此處的窗口內容區域不包含窗口邊框、投影和可能存在的標題欄。另外,整個桌面視圖也能被看作一個 GrafPort 容器。

 
在 QuickDraw 中顯示含灰階圖像的窗口的所需過程

同時,GrafPort 將整個圖形界面定位為一個坐標系,整個 QuickDraw 系統可提供 16 位分辨率,這代表着 65536 個獨立的橫向或縱向位置,坐標點的範圍從 -32767 到 +32768。

 
180*300px 示例窗口在 QuickDraw 全局與窗口自身坐標系中的定位方式

在坐標系內,橫縱網格線的交點稱為點(point),而每一個像素則位於所在點的右下方,也可以說是位於構成坐標網格的線之間。
點與網格線本身都極其微小,根據 Apple 官方開發文檔描述,QuickDraw 可提供超過 40 億個點。

Macintosh 能顯示的像素形狀為矩形,由 GrafPort 所定義的默認分辨率是每英寸 72 像素,這和印刷行業標準的每英寸 72 點相匹配。指針光標的像素則為 16*16,組成光標圖像的一部分點被稱作熱區(hot spot),熱區需位於可進行鼠標點擊交互的對象之上。

像素位於坐標系內的軸線之間,並不與坐標系相交。

 
點和像素的關係

QuickDraw編輯

Classic Mac OS 中所有的用戶可見元素都由 QuickDraw 生成:

  • 直線
  • 矩形和圓角矩形
  • 圓和橢圓
  • 弧形和楔形
  • 多邊形
  • 由像素組合的區域
  • 位圖與文本


除文本內容之外,上述元素均由可定義尺寸、顏色、樣式的抽象概念 「筆」 生成,由於 「筆」 的形狀是矩形且與坐標軸對齊,因此繪製的對角線會較橫或縱向的水平直線更粗。

「筆」 可以在窗口自身坐標系內繪製內容,例如在下面的示例圖中執行了兩步操作:

  1. 將 「筆」 用相關函數移動到坐標系位置(10,20)
  2. 用相關函數操作 「筆」 繪製直線,終點坐標(50,30)


文本內容則可顯示任何已安裝的位圖點陣字體或 TrueType 字體

QuickDraw 可以由 PostScript 頁面描述語言控制,相應的打印驅動也可將圖形操作轉為對應的打印機控制命令,使得 Macintosh 可以應用於桌面出版行業。

在最初,QuickDraw 只支持黑白以及 16 色顯示,且 16 色顯示和打印功能只被有限的應用程序所支持。

1987 年的 Macintosh II 發布後,Apple 擴充了原有 QuickDraw 的內容,升級到 Color QuickDraw ,引入了代表各個連接的顯示設備及顯卡的 GDevices 與承載顏色的 CGrafPort,從而實現最高 24 位 1677 萬色或 256 級灰階顯示及相應的真彩色顯示卡支持。

隨着 QuickTime 的問世,QuickDraw 又增加了處理 JPEG 等壓縮格式的能力與對 ColorSync 色彩管理技術的支持。


QuickDraw GX編輯

在 Mac 轉換到 PowerPC 架構的時期,QuickDraw 升級到了 QuickDraw GX 成為新的 2D 圖形引擎與打印管理系統,仍然保留和原有 QuickDraw 圖像數據結構的兼容性。

QuickDraw GX 面向對象的特性令開發工作更為簡易,並增加了原來缺失的部分曲線繪圖指令,同時啟用 TrueType 作為默認的字體系統。


QuickDraw 3D編輯

QuickDraw 3D 是 Macintosh 的 3D 圖形 API,基於純 C 代碼,它分為與 Direct3D 或 MiniGL 功能相近的跨平台硬件抽象層 RAVE(Rendering Acceleration Virtual Engine)和面向對象的場景圖形系統,可以加載並生成與 OpenGL++ 相似等級的模型,並提供了一系列文件轉換功能和標準化 3DMF 模型文件格式,但也存在部分性能問題。

使用 RAVE 的應用包含了在當時隨每台 Power Macintosh 發行的 Graphing Calculator 圖形計算器以及 Quake 等遊戲。


Classic Mac OS 系統中默認提供支持 QuickDraw 3D 的查看器,例如自帶的剪貼冊應用。

1998 年 Apple 放棄了 QuickDraw 3D 的開發,並宣布未來 Mac OS 的 3D 圖形部分將由 OpenGL 提供支持。