5 苹果开发人员技术文档连载之-系统架构( 二 )



Quartz 2D

Quartz的Quartz 2D是一个具有矢量特性的图形库 。它的API允许您通过指定一系列命令和数学程式来生成文本与图像 。这些命令和程式用来在二维空间内绘制线段,几何形状,颜色,阴影,半透明效果和其它图形属性,而您无需为每一个特定像素指定属性 。作为结果,一个几何形状可有效地以一系列路径和属性的方式来定义,而不是以位图的方式来定义 。

通过使用矢量,Quartz 2D也能使用一种坐标系来作为绘画的参照,比方说这种坐标系是以英寸或厘米为单位的,而不是基于像素栅格 。这种坐标体系很灵活,允许不同的度量标准,并且当它不与任何一个屏幕分辨率绑定时,它具有一定程度的显示独立性 。它还使用了浮点坐标 。优先于Quartz Compositor的合成,Quartz 2D把以坐标系来表现的矢量图像信息转化为像素值 。

Quartz 2D API是设备独立的,这意味着,绘画操作的最终目的文件可以是窗口位图,也可以是可移植文档格式(PDF)文件、PostScript文件或其它输出格式 。当使用QuickDraw或其它输入机制来显示PDF文件时,应用程序可以直接或间接地调用Quartz 2D API 。

用于Quartz 2D的主要输入方式是由QuickDraw和本机C API所生成的绘画命令和程式 。(将来,更多的前端API可能会被支持)使用QuickDraw的应用程序可以通过CGContextRef接口来调用Quartz 2D,从而获得它的功能 。而QuickDraw使应用程序可以由GrafPort接口来得到CGContextRef 。
来自QuickDraw或本机API的命令和程式被即刻转换为所需的输出格式,这些输出格式既可以是屏幕渲染的位图数据、PostScript(PostScript打印机的打印数据格式),也可以是其它类型打印机的光栅数据 。打印预览时,还可以自动发布PDF 。将来,更多的后端转换器可能会被支持,例如:绘图仪 。

正如前一段所提出的,Quartz 2D是Mac OS X打印系统的底层引擎 。打印工作常常被分成二个步骤 。Quartz 2D用于解释那些由本机C或QuickDraw API所构建的文本和图形,并将它们保存为PDF格式(主要的脱机打印格式) 。这时,PDF可再次通过Quartz 2D,将其转换为适当的输出格式 。

打印系统

Mac OS X打印系统为Macintosh开发人员提供了一个灵活而强大的全新打印环境 。这种体系结构有利于应用程序开发人员在他们的程序中更好地提供对打印功能的支持,同时也有利于打印机供应商编写驱动程序和扩展打印对话框 。Mac OS X的打印系统有着许多优于Mac OS 8和9的优点,包括如下:

·打印系统使用Quartz 2D进行渲染和转换服务 。Quartz 2D支持具有独立分辨率的PDF绘画模型,允许应用程序在所有级别的光栅和PostScript打印机上的进行高品质和经过颜色管理的打印件输出 。
·漂浮对话框允许同时打开多个打印对话框,并向一个打印机队列中发送多个打印作业 。
·打印对话框可以由打印对话框扩展来定制 。页面设置对话框可以由应用程序开发人员来扩展,同时打印机供应商及应用程序开发人员都可以扩展打印对话框 。
·打印机模块代替了打印机驱动程序 。打印机模块要比打印机驱动程序更易于编写,因为驱动程序中的大量代码现在已经为您预先编写好了,它们被存放在苹果公司所提供的I/O模块和打印系统的一些其它部分中 。
·打印应用程序编程接口(API)包含对Carbon应用程序的强健支持 。Carbon开发人员可以编写一个能在Mac OS X中运行的应用程序,同时它也能在Mac OS 8和9中运行 。Cocoa开发人员通过使用Cocoa对象和方法来支持打印功能 。Cocoa方法调用了Carbon打印管理器API.

这个全新打印系统在设计上的一个关键之处在于它对Carbon应用程序的强健支持 。由于Mac OS X中的Carbon打印管理器与Mac OS 8和9中的打印管理器一样被很好的支持,所以正如预期的那样,Carbon应用程序能够在两种环境中执行相同的打印任务 。举个例子来说,当运行Mac OS 8或Mac OS 9时,应用程序使用传统的用户界面和驱动程序;而在Mac OS X中,应用程序将自动利用到新打印系统中更为一致、灵活的打印对话框和打印架构 。

推荐阅读