Programming with Quartz

1st Edition

2D and PDF Graphics in Mac OS X

Authors: David Gelphman Bunny Laden
Paperback ISBN: 9780123694737
eBook ISBN: 9780080459639
Imprint: Morgan Kaufmann
Published Date: 14th December 2005
Page Count: 704
89.95 + applicable tax
73.95 + applicable tax
58.99 + applicable tax
95.95 + applicable tax
Compatible Not compatible
VitalSource PC, Mac, iPhone & iPad Amazon Kindle eReader
ePub & PDF Apple & PC desktop. Mobile devices (Apple & Android) Amazon Kindle eReader
Mobi Amazon Kindle eReader Anything else

Institutional Access

Table of Contents

Foreword by Philip Schneider

Our Objective
Source Code
Header Files
Conventions and Assumptions
Quartz Technologies

Chapter 1 Introducing Quartz 2D
A Bit of History
Quartz 2D Overview
What Software Can Use Quartz 2D?
See Also

Chapter 2 Quartz 2D Drawing Basics
Quartz Graphics Contexts
Filling a Rectangle
Stroking a Rectangle
The Order of Fill and Stroke Operations
Transforming the Coordinate System
Constructing Quartz Paths
Painting with Alpha
Making Dashed Lines
Clipping a Drawing
Drawing PDF Content
More About Graphics Contexts
See Also

Chapter 3 Using Quartz 2D in Cocoa
Xcode Overview
Creating a Cocoa Xcode Project in Tiger
Creating a View in Interface Builder
Connecting the Interface to the Code
Obtaining a Graphics Context in Cocoa
Writing the Drawing Code
Examining the Drawing Output
Cocoa Framework Drawing and Quartz
See Also

Chapter 4 Using Quartz 2D in Carbon
Creating a Carbon Xcode Project
Setting Up a Carbon Window
Creating an Event Handler
Examining the Drawing Output
Using QDBeginCGContext
See Also

Chapter 5 The Quartz Coordinate System and Coordinate Transformations
User Space and Device Space
Coordinate Transformations
The Current Transformation Matrix
The Mathematics of Affine Transforms
Saving and Restoring a Coordinate System
Affine Transform Convenience Functions
See Also

Chapter 6 Drawing with Paths
Properties of Paths

  • Path Construction Primitives
  • Cubic Bézier Curves
  • Quadratic Bézier Curves
Closing Subpaths
Path Construction Convenience Functions
  • Additional Path Convenience Functions (Tiger)


Written by members of the development team at Apple, Programming with Quartz is the first book to describe the sophisticated graphics system of Mac OS X. By using the methods described in this book, developers will be able to fully exploit the state-of-the-art graphics capabilities of Mac OS X in their applications, whether for Cocoa or Carbon development. This book also serves as an introduction to 2D graphics concepts, including how images are drawn and how color is rendered. It includes guidance for working with PDF documents, drawing bitmap graphics, using Quartz built-in color management, and drawing text. Programming with Quartz is a rich resource for new and experienced Mac OS X developers, Cocoa and Carbon programmers, UNIX developers who are migrating to Mac OS X, and anyone interested in powerful 2D graphics systems.

Key Features

  • This is the definitive guide to the revolutionary graphics system of Mac OS X that uses the Portable Document Format (PDF) as the basis of its imaging model.
    It contains the latest on programming with Quartz for Mac OS X version 10.4.
    Carefully crafted and extensive code examples show how to accomplish most of the drawing tasks possible with Quartz.


Cocoa and Carbon programmers who want to understand and fully exploit the power of the graphics system in Mac OS X and those who are looking to add new drawing capabilities, add support for PDF documents, or improve the quality of the graphics in their applications.
UNIX developers interested in the graphics capabilities of Mac OS X.
Web developers who want to create dynamic content using Quartz.


No. of pages:
© Morgan Kaufmann 2006
Morgan Kaufmann
eBook ISBN:
Paperback ISBN:


"I strongly encourage non-Macintosh programmers to pick up this book and find out for themselves what a truly great development platform we have in the Macintosh. Programmers and software managers at Windows, Linux, and Unix shops should seriously consider the Macintosh as an addition to (or replacement for!) their current stable of platforms. In particular, movie studios, animation houses, and special-effects facilities would do well to consider that with Macintosh, a single platform can provide everything they need..."—from the foreword by Philip J. Schneider, R&D Engineer, Industrial Light + Magic

"Finally, the book I've wanted for years is here! As a graphics programmer, I appreciate the clear explanations of how Quartz has packaged the state of the art for mere mortals. As a Cocoa programmer, I appreciate the clear explanation of which facilities of Quartz Cocoa is already leveraging. This will become a well-thumbed resource for all graphics programmers on Mac OS X, whether or not they're using Cocoa, Carbon, or porting code from another platform."—Dr. Michael B. Johnson, Pixar Animation Studios

"I've been using Quartz since the first release of Mac OS X and this book covers it all! Great advice, good sample code—it's the book to have if you want to learn everything about Quartz."—Stephane Marcouiller, SDE, Microsoft Corporation

"Not only do the authors of Programming with Quartz have a superb understanding of their subject matter, but they have conveyed their knowledge in a clear, concise, and readable manner. Programming with Quartz has saved me quite a bit of time on my first major Quartz project, and its more general lessons on graphics programming techniques and concepts will prove valuable when using any modern graphics API."—Josh Aas, Software Engineer, Mozilla Corporation

"Even after implementing several features using Quartz, I still learned things from this book that I did not know. For exa

About the Authors

David Gelphman Author

David Gelphman is a senior software engineer on Apple's Graphics and Imaging team. He has over 20 years of experience working with the PostScript and PDF imaging model that is at the heart of Quartz graphics. His computer career began with scientific computing while he was earning his PhD in experimental particle physics at Stanford. Apple's introduction of the Macintosh in 1984 caused him to make a sharp turn into the world of user-friendly computing and he hasn't looked back.
While working at Adobe Systems, David co-designed Apple's LaserWriter 8 printer driver and was team lead of the development project. At Adobe he also worked closely with third party developers, taught PostScript programming, wrote a number of technical notes, and contributed to the evolution of the PostScript language. After leaving Adobe he continued to combine software engineering work with documentation for software developers, authoring an article for Apple's develop technical journal in addition to a number of Apple technical notes. Today David writes system software for Mac OS X but continues to be involved with third party documentation and enjoys writing sample code for developers outside of Apple.

Affiliations and Expertise

Apple, Cupertino, California, U.S.A.

Bunny Laden Author

Bunny Laden is a senior technical writer for Apple Computer who writes documentation for Mac OS X technologies, including Quartz, Core Image, and Quartz Composer. She has won technical writing awards for a number of Apple documents— QuickTime VR Authoring Studio, Handling Unicode Text With MLTE, Supporting Printing in Your Application—and for the book Learning Carbon (O'Reilly & Associates). In her former life as an academician, she authored articles on a number of topics including music cognition and musical acoustics.

Affiliations and Expertise

Apple, Cupertino, California, U.S.A.