Programming with Quartz: 2D and PDF Graphics in Mac OS X

David Gelphman, Bunny Laden

  • 出版商: Morgan Kaufmann
  • 出版日期: 2005-12-14
  • 售價: $3,790
  • 貴賓價: 9.5$3,601
  • 語言: 英文
  • 頁數: 704
  • 裝訂: Paperback
  • ISBN: 0123694736
  • ISBN-13: 9780123694737
  • 相關分類: MAC OS 蘋果電腦
  • 海外代購書籍(需單獨結帳)

買這商品的人也買了...

相關主題

商品描述

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.

 

Table Of 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

商品描述(中文翻譯)

描述
由蘋果開發團隊成員撰寫的《Programming with Quartz》是第一本描述 Mac OS X 複雜圖形系統的書籍。透過本書中所描述的方法,開發者將能夠充分利用 Mac OS X 的尖端圖形功能,無論是用於 Cocoa 還是 Carbon 開發。本書同時也介紹了 2D 圖形概念,包括圖像如何繪製以及顏色如何渲染。它提供了處理 PDF 文件、繪製位圖圖形、使用 Quartz 內建顏色管理以及繪製文本的指導。《Programming with Quartz》是新手和經驗豐富的 Mac OS X 開發者、Cocoa 和 Carbon 程式設計師、正在轉移到 Mac OS X 的 UNIX 開發者,以及任何對強大的 2D 圖形系統感興趣的人的豐富資源。

目錄
前言 由 Philip Schneider
前言
我們的目標
大綱
源代碼
標頭文件
約定和假設
Quartz 技術
致謝

第一章 介紹 Quartz 2D
一點歷史
Quartz 2D 概述
哪些軟體可以使用 Quartz 2D?
摘要
另見

第二章 Quartz 2D 繪圖基礎
Quartz 圖形上下文
填充矩形
描邊矩形
填充和描邊操作的順序
變換坐標系統
構建 Quartz 路徑
使用 Alpha 繪畫
製作虛線
裁剪繪圖
繪製 PDF 內容
更多關於圖形上下文
摘要
另見

第三章 在 Cocoa 中使用 Quartz 2D
Xcode 概述
在 Tiger 中創建 Cocoa Xcode 專案
在 Interface Builder 中創建視圖
將介面連接到代碼
在 Cocoa 中獲取圖形上下文
編寫繪圖代碼
檢查繪圖輸出
Cocoa 框架繪圖與 Quartz
摘要
另見

第四章 在 Carbon 中使用 Quartz 2D
創建 Carbon Xcode 專案
設置 Carbon 窗口
創建事件處理器
檢查繪圖輸出
使用 QDBeginCGContext
摘要
另見

第五章 Quartz 坐標系統和坐標變換
用戶空間和設備空間
坐標變換
當前變換矩陣
仿射變換的數學
保存和恢復坐標系統
仿射變換便利函數
摘要
另見

第六章 使用路徑繪圖
路徑的屬性
路徑構建原語
三次 Bézier 曲線
二次 Bézier 曲線
關閉子路徑
路徑構建便利函數
額外的路徑便利函數(Tiger)
描邊路徑
線寬
線接合
線帽
線條虛線
填充路徑
使用路徑裁剪
CGPath 對象(僅限 Jaguar 及以後版本)
抗鋸齒
路徑實用函數
在像素邊界上對齊用戶空間坐標
摘要
另見

第七章 顏色、Alpha 透明度和 Quartz 圖形狀態
顏色和顏色空間
設置顏色的一般方法
校準顏色空間
設備顏色空間
特殊顏色空間
創建顏色