QuickDraw

来自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 提供支持。