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.
This document is intended for iOS and Mac OS X developers who need to perform any of the following tasks:
Draw graphics.
Provide graphics editing capabilities in an application.
Create or display bitmap images.
Work with PDF documents.
This document is organized into the following chapters:
“Overview of Quartz 2D” describes the page, drawing destinations, Quartz opaque data types, graphics states, coordinates, memory management, and 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 shows how blend modes affect painting.
“Color and Color Spaces” discusses color values, using alpha for transparency, and 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, how to convert between user and device space, and provides background information on the mathematical operations that Quartz performs.
“Patterns” defines what a pattern is and its parts, tells how Quartz renders them, and shows how to create colored and stenciled patterns.
“Shadows” describes what shadows are, 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 Mac OS X” 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.
“CGLayer Drawing” describes how to create and use drawing layers on Mac OS X 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 on Mac OS X to convert a PostScript file to a PDF document. These functions are not available on iOS.
“Python Bindings for Quartz 2D” provides a brief overview of the Python scripting language and the Quartz 2D API for Python, and describes some of the useful tasks you can accomplish using Python scripts and Quartz 2D on Mac OS X. Python bindings not available on 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 to 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.
Last updated: 2010-06-25