Search:

Product Information All Elsevier Sites   Advanced Product Search
SiteStat.jsp
PROGRAMMING WITH QUARTZ
Programming with Quartz
2D and PDF Graphics in Mac OS X
To order this title, and for more information, click here

By
David Gelphman, Apple, Cupertino, California, U.S.A.
Bunny Laden, Apple, Cupertino, California, U.S.A.

Included in series
The Morgan Kaufmann Series in Computer Graphics,

Description
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.

Audience
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.

Contents
Foreword by Philip Schneider



Preface

Our Objective
Outline
Source Code
Header Files
Conventions and Assumptions
Quartz Technologies
Acknowledgements



Chapter 1 Introducing Quartz 2D

A Bit of History
Quartz 2D Overview
What Software Can Use Quartz 2D?
Summary
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
Summary
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
Summary
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
Summary
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
Summary
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)
Stroking Paths
  • Line Width
  • Line Joins
  • Line Caps
  • Line Dash
Filling Paths
Clipping With Paths
CGPath Objects (Jaguar and later only)
Anti-aliasing
Path Utility Functions
  • Aligning User Space Coordinates on Pixel Boundaries
Summary
See Also



Chapter 7 Color, Alpha Transparency, and the Quartz Graphics State

Color and Color Spaces
  • A General Approach to Setting Color
  • Calibrated Color Spaces
  • Device Color Spaces
  • Special Color Spaces
  • Creating Color Spaces by Name
  • Rendering Intents
Alpha Transparency
  • Blend Modes (Tiger)
CGColorRef Objects (Panther and later)
Graphics State Parameters
Summary
See Also



Chapter 8 Data Providers and Data Consumers

Data Providers
  • CGDataProviderCreateWithURL
  • CGDataProviderCreateWithData
  • CGDataProviderCreate
  • CGDataProviderCreateDirectAccess
  • CGDataProviderCreateWithCFData (Tiger and later)
Guidelines for Using Data Providers
Data Consumers
Summary



Chapter 9 Drawing Images

Creating CGImage Objects
  • Specialized Functions for JPEG and PNG
  • Drawing Images into a Flipped Coordinate System
  • A General Function for Uncompressed Data
  • Generalized Functions for Compressed Image Data (Tiger and later)
  • Importing Image Data With QuickTime
  • Guidelines for Image Creation
Best Practices for Working With Images
Image Utility Functions
  • Getting Image Dimensions
  • Getting the Pixel Format
  • Creating an Image from a Bitmap Context
  • Working With Color Spaces
  • Creating Subimages
Writing Image Data using CGImageDestination (Tiger)
Exporting to JPEG Using a QuickTime Exporter
Summary
See Also



Chapter 10 Image Masking

Creating an Image Mask
  • Drawing and Inverting a 1-Bit Image Mask
  • Drawing an 8-Bit Deep Mask
Masking an Image (Tiger)
  • Masking an Image with an Image Mask
  • Masking an Image with an Image
  • Masking Guidelines
Using Color as a Mask (Tiger)
Clipping to a Mask (Tiger)
Summary
See Also



Chapter 11 Text

Text Drawing Parameters
  • Font and Font Size
  • Text Matrix and Text Position
  • Text Drawing Modes
  • Font Smoothing (Jaguar)
  • Character Spacing
Drawing Text Using Quartz
  • Drawing with Characters
  • Drawing with Glyphs
Drawing Text Using Cocoa
  • Using NSString
  • Using NSLayoutManager
  • Subclassing to Get Additional Control
Drawing Text Using Carbon
  • Using HIThemeDrawTextBox (Panther)
  • Using Multilingual Text Engine
  • Using Apple Type Services for Unicode Imaging
Drawing Text in a Flipped Coordinate System
Summary
See Also



Chapter 12 Creating Bits

Bitmap Graphics Context
  • Supported Pixel Formats
  • Creating a Bitmap Graphics Context
  • Getting Information About a Bitmap Context
  • Using the Bitmap Data from a Bitmap Context
CGLayers (Tiger)
  • Creating a CGLayer Object
  • Drawing to a CGLayer
  • Drawing the Contents of a CGLayer
  • Using a CGLayer to Draw a Checkerboard
Caching Drawing Offscreen
  • Drawing Repeatedly Without Caching
  • Drawing Repeatedly With Bitmap Context Caching
  • Drawing Repeatedly With CGLayer Caching
  • Display Profile Issues
Replacing CopyBits
Summary
See Also



Chapter 13 Opening and Drawing PDF Documents

PDF Document Properties
Opening a PDF Document
Using PDF as a Graphical Interchange
  • Creating PDF Data From the Pasteboard: Cocoa
  • Creating PDF from the Pasteboard: Carbon
Drawing PDF Pages
  • Drawing With CGContextDrawPDFDocument
  • Drawing PDF Documents in a Flipped Coordinate System
  • Using CGPDFPage Objects (Panther)
  • Drawing with PDF Rotation on Jaguar and Earlier
Handling Protected PDF Documents (Jaguar)
PDF Document Utility Functions
Summary
See Also



Chapter 14 Creating and Examining PDF Documents

Creating New PDF Documents
  • Using CGPDFContextCreateWithURL
  • Using the Auxiliary Information Dictionary
Copying PDF Content to the Pasteboard
Adding Content to Existing PDF Documents
Adding Links to PDF Documents (Tiger)
  • Creating a Link to a URL
  • Creating a Link to Another Page in the Document
Creating Encrypted PDF Output (Tiger)
PDF Document Generation Issues
Examining PDF Document Content (Panther, Tiger)
  • Quartz PDF Introspection
  • Scanning the PDF Content Stream (Tiger)
Summary
See Also



Chapter 15 Advanced Drawing Features

Drawing with Patterns
  • Creating Patterns
  • Creating and Drawing Colored Patterns
  • Base Space, the Pattern Matrix, and Transforming Patterns
  • Pattern Phase
  • Creating and Drawing Stencil Patterns
  • Drawing Complex Patterns
  • Pattern Issues
Drawing with Shadows (Panther)
  • Shadow Attributes
  • Creating and Drawing With Shadows
  • Shadow Offset and Quartz Base Space
  • Shadows and Grouped Objects
  • Shadows and PDF Documents
Drawing with Transparency Layers (Panther)
  • Using Transparency Layers
  • Alpha Compositing and Transparency Layers
  • Transparency Layers and PDF Documents
  • Transparency Layers Compared to CGLayers
Drawing With Shadings (Jaguar)
  • Shading Concepts and the CGFunction
  • Axial Shadings
  • Radial Shadings
  • Radial Shading Geometries
  • Transforming Shadings
Summary
See Also



Chapter 16 Supporting PostScript and EPS Data

Overview of the Conversion Process
Quartz Conversion Functions and Callbacks (Panther)
Creating a PDF Data File From PostScript Data
Using Converted PostScript Data in Your Application
PSConverter Advanced Issues
Printing Source EPS Data
Guidelines for Supporting EPS Data in Your Application
Summary
See Also



Chapter 17 Performance and Debugging

Optimizing Performance
  • The Quartz Compositor
  • Quartz Object and Memory Model
  • Improving Performance
  • Measuring Performance
Debugging Your Drawing
  • Examining the Coordinate System
  • Checking the Clipping Area
  • Drawing a Debugging Rectangle
  • Looking for Console Messages
  • Checking for Data Provider Integrity
  • Checking for Immutability Violations
  • Checking for Improperly Initialized Contexts
  • Checking for Out-of-Sync Color Setting
  • Drawing Images to a PDF Context
  • Releasing a CGPDFContext Object
  • Checking Pattern Color Space Usage
  • Using PDF Generation as a Debugging Aid
Summary
See Also



Chapter 18 Creating Quartz Tools and Python Scripts

Python Scripting with Quartz (Panther)
  • Getting Started
Creating Bits with Python
Using Quartz in UNIX Tools
  • Security Issues
The PDF Workflow in Printing (Jaguar)
Summary
See Also

Index

Bibliographic details
Paperback, 704 pages, publication date: DEC-2005
ISBN-13: 978-0-12-369473-7
ISBN-10: 0-12-369473-6
Imprint: MORGAN KAUFFMAN

Price and Ordering
Price:
EUR 67.95
GBP 51
USD 82.95
order now
Books and book related electronic products are priced in US dollars (USD), euro (EUR), and Great Britain Pounds (GBP). USD prices apply to the Americas and Asia Pacific. EUR prices apply in Europe and the Middle East. GBP prices apply to the UK and all other countries.
See also information about conditions of sale & ordering procedures, and links to our regional sales offices.

077/747
Last update: 13 Jun 2009
Book contents
Table of contents
Reviews
View other people's reviews
Submit your review
Bookmark this page
Recommend this publication
Overview of all books
Printer-friendly version   Printer-friendly version