Quartz 2D is an advanced, two-dimensional drawing engine available for iOS application development and to all Mac OS X application environments outside of the kernel. Quartz 2D provides low-level, lightweight 2D rendering with unmatched output fidelity regardless of display or printing device. Quartz 2D is resolution- and device-independent; you don’t need to think about the final destination when you use the Quartz 2D application programming interface (API) for drawing.
The Quartz 2D API is easy to use and provides access to powerful features such as transparency layers, path-based drawing, offscreen rendering, advanced color management, anti-aliased rendering, and PDF document creation, display, and parsing.
The Quartz 2D API is part of the Core Graphics framework, so you may see Quartz referred to as Core Graphics or, simply, CG.
Who Should Read This Document?
This document is intended for iOS and Mac OS X developers who need to perform any of the following tasks:
Provide graphics editing capabilities in an application
Create or display bitmap images
Work with PDF documents
Organization of This Document
This document is organized into the following chapters:
“Overview of Quartz 2D” describes the page, drawing destinations, Quartz opaque data types, graphics states, coordinates, and memory management, and it takes a look at how Quartz works “under the hood.”
“Graphics Contexts” describes the kinds of drawing destinations and provides step-by-step instructions for creating all flavors of graphics contexts.
“Paths” discusses the basic elements that make up paths, shows how to create and paint them, shows how to set up a clipping area, and explains how blend modes affect painting.
“Color and Color Spaces” discusses color values and using alpha values for transparency, and it describes how to create a color space, set colors, create color objects, and set rendering intent.
“Transforms” describes the current transformation matrix and explains how to modify it, shows how to set up affine transforms, shows how to convert between user and device space, and provides background information on the mathematical operations that Quartz performs.
“Patterns” defines what a pattern and its parts are, tells how Quartz renders them, and shows how to create colored and stenciled patterns.
“Shadows” describes what shadows are, explains how they work, and shows how to paint with them.
“Gradients” discusses axial and radial gradients and shows how to create and use CGShading and CGGradient objects.
“Transparency Layers” gives examples of what transparency layers look like, discusses how they work, and provides step-by-step instructions for implementing them.
“Data Management in Quartz 2D” discusses how to move data into and out of Quartz.
“Bitmap Images and Image Masks” describes what makes up a bitmap image definition and shows how to use a bitmap image as a Quartz drawing primitive. It also describes masking techniques you can use on images and shows the various effects you can achieve by using blend modes when drawing images.
“Core Graphics Layer Drawing” describes how to create and use drawing layers to achieve high-performance patterned drawing or to draw offscreen.
“PDF Document Creation, Viewing, and Transforming” shows how to open and view PDF documents, apply transforms to them, create a PDF file, access PDF metadata, add links, and add security features (such as password protection).
“PDF Document Parsing” describes how to use CGPDFScanner and CGPDFContentStream objects to parse and inspect PDF documents.
“PostScript Conversion” gives an overview of the functions you can use in Mac OS X to convert a PostScript file to a PDF document. These functions are not available in iOS.
“Text” describes Quartz 2D low-level support for text and glyphs, and alternatives that provide higher-level and Unicode text support. It also discusses how to copy font variations.
“Glossary” defines the terms used in this guide.
These items are essential reading for anyone using Quartz 2D:
Quartz 2D Reference Collection, organized by header file, provides a complete reference for the Quartz 2D application programming interface.
Color Management Overview is a brief introduction to the principles of color perception, color spaces, and color management systems.
Mailing lists. Join the quartz-dev mailing list to discuss problems using Quartz 2D.
Programming With Quartz: 2D and PDF Graphics in Mac OS X provides in-depth information on using Quartz. This book is current through Mac OS X v10.4 and was written prior to the introduction of iOS. The book includes examples that show how to support earlier versions of Mac OS X as well as how to use the features introduced in v10.4. The sample code associated with this book is available from the publisher.