Allow users to browse, edit, and save images, using slideshows and Core Image filters.


This collection of documents provides the API reference for the Quartz framework; in particular, for Quartz Composer, Image Kit, and PDF Kit. The Quartz Composer API supports processing and rendering graphical data and allows developers to create custom patches for the Quartz Composer developer tool. Image Kit provides user interface support for browsing, editing, and saving images, showing slideshows, and browsing and previewing Core Image filters. PDF Kit is a technology that allows applications to display and manipulate PDF documents.




The IKCameraDeviceView class displays the contents of the selected camera.


The IKDeviceBrowserView allows you to select a camera or scanner from a list of the available devices.


The IKFilterBrowserPanel class provides a user interface that allows users to browse Core Image filters (CIFilter), to preview a filter, and to get additional information about the filter, such as its description.


The IKFilterBrowserView class is used as a container for the elements of an IKFilterBrowserPanel object.


The IKFilterUIView class provides a view that contains input parameter controls for a Core Image filter (CIFilter). You need to use this class when providing a user interface for a custom filter. The class creates a view that has an object controller for the given filter. It also retains the filter.


The IKImageBrowserCell class is used to display a cell conforming to the IKImageBrowserItem Protocol protocol in an IKImageBrowserView.


The IKImageBrowserView class is a view for displaying and browsing a large amount of images and movies efficiently. This class will be deprecated in a future release. Please switch to NSCollectionView instead.


The IKImageEditPanel class provides a panel, that is, a utility window that floats on top of document windows, optimized for image editing.


The IKImageView class provides an efficient way to display images in a view while at the same time supporting a number of image editing operations such as rotating, zooming, and cropping. It supports drag and drop for the NSFilenamesPboardType flavor so that the user can drag an image to the view. If possible, image rendering uses hardware acceleration to achieve optimal performance. The IKImageView class is implemented as a subclass of NSView. Similar to NSImageView, the IKImageView class is used to display a single image.


The IKPictureTaker class represents a panel that allows users to choose images by browsing the file system. The picture taker panel provides an Open Recent menu, supports image cropping, and supports taking snapshots from an iSight or other digital camera.


The IKSaveOptions class initializes, adds, and manages user interface options for saving image data.


The IKScannerDeviceView class displays a view that allows scanning. It can be customized by specifying the display mode. The delegate receives the scanned data and must implement the IKScannerDeviceViewDelegate protocol.


The IKSlideshow class encapsulates a data source and options for a slideshow.


PDFAction, a subclass of NSObject, represents an action that is performed when, for example, a PDF annotation is activated or an outline item is clicked.


PDFActionGoTo, a subclass of PDFAction, defines methods for getting and setting the destination of a go-to action.


PDFActionNamed defines methods used to work with actions in PDF documents, some of which are named in the Adobe PDF Specification.


PDFActionRemoteGoTo, a subclass of PDFAction, defines methods for getting and setting the destination of a go-to action that targets another document.


PDFActionResetForm, a subclass of PDFAction, defines methods for getting and clearing fields in a PDF form.


PDFActionURL, a subclass of PDFAction, defines methods for getting and setting the URL associated with a URL action.


PDFAnnotation, a subclass of NSObject, represents an annotation in a PDF document, which associates an object (such as a note or a sound) with a location in a PDF document.


A PDFAnnotationButtonWidget object provides user interactivity on a page of a PDF document. There are three types of buttons available: push button, radio button, and checkbox.


A PDFAnnotationChoiceWidget object provides user interactivity on a page of a PDF document, in the form of pop-up menus and lists.


A PDFAnnotationFreeText object displays text on a page.


A PDFAnnotationLine object displays a single line on a page.


A PDFAnnotationMarkup object appears as highlighting, underlining, or a strikethrough style applied to the text of a document.


A PDFAnnotationPopup object provides user interactivity on a PDF page in the form of a pop-up menu.


A PDFAnnotationStamp object allows you to display a word or phrase, such as “Confidential,“ in a PDF page.


A PDFAnnotationText object displays as an icon (such as a “sticky note”) attached to a specified point in the PDF document.


A PDFAnnotationTextWidget object allows you to manage the appearance and content of text fields.


A PDFBorder object, when used, adds an optional border to an annotation. Borders are drawn completely within the annotation rectangle.


A PDFDestination object describes a point on a PDF page.


A PDFDocument object represents PDF data or a PDF file and defines methods for writing, searching, and selecting PDF data.


A PDFOutline object is an element in a tree-structured hierarchy that can represent the structure of a PDF document.


PDFPage, a subclass of NSObject, defines methods used to render PDF pages and work with annotations, text, and selections.


A PDFSelection object identifies a contiguous or noncontiguous selection of text in a PDF document.


A PDFThumbnailView object contains a set of thumbnails, each of which represents a page in a PDF document.


A PDFView object encapsulates the functionality of PDF Kit into a single widget that you can add to your application using Interface Builder.


The QCComposition class represents a Quartz Composer composition that either:


The QCCompositionLayer class loads, plays, and controls Quartz Composer compositions in a Core Animation layer hierarchy. The composition tracks the Core Animation layer time and is rendered directly at the current dimensions of the QCCompositionLayer object.


The QCCompositionParameterView class allows allows users to edit, in real time, the input parameters of a composition. The composition can be rendering in any of the following objects: QCRenderer, QCView, or QCCompositionLayer.


The QCCompositionPickerPanel class represents a utility window that allows users to browse compositions that are in the Quartz Composer composition repository and, if supported, preview the composition. The QCCompositionPickerPanel class cannot be subclassed.


The QCCompositionPickerView class allows users to browse compositions that are in the Quartz Composer composition repository, and to preview them. You can set the default input parameters for a composition preview by using the method setDefaultValue:forInputKey:.


The QCCompositionRepository class represents a system-wide centralized repository of built-in and installed Quartz Composer compositions (/Library/Compositions and ~/Library/Compositions). The QCCompositionRepository class cannot be subclassed.


The QCPlugIn class provides the base class to subclass for writing custom Quartz Composer patches. You implement a custom patch by subclassing QCPlugIn, overriding the appropriate methods, packaging the code as an NSBundle object, and installing the bundle in the appropriate location. A bundle can contain more than one subclass of QCPlugIn, allowing you to provide a suite of custom patches in one bundle. Quartz Composer Custom Patch Programming Guide provides detailed instructions on how to create and package a custom patch. QCPlugIn Class Reference supplements the information in the programming guide.


The QCPlugInViewController class communicates (through Cocoa bindings) between a custom patch and the view used for the internal settings of the custom patch. Only custom patches that use internal settings exposed to the user need to use the QCPlugInViewController class.


A QCRenderer class is designed for low-level rendering of Quartz Composer compositions. This is the class to use if you want to be in charge of rendering a composition to a specific OpenGL context—either using the NSOpenGLContext class or a CGLContextObj object. QCRenderer also allows you to load, play, and control a composition.


The QCView class is a custom NSView class that loads, plays, and controls Quartz Composer compositions. It is an autonomous view that is driven by an internal timer running on the main thread.


The QLPreviewPanel class implements the Quick Look preview panel—a user interface object that displays the preview of a list of items.


A QLPreviewView object generates a Quick Look preview of an item. This class allows you to imbed a Quick Look preview into your view hierarchy.




The IKCameraDeviceViewDelegate protocol is adopted by the delegate of the IKCameraDeviceView class. It allows downloading of camera content, handling selection changes, and handling errors.


The IKDeviceBrowserViewDelegate defines the methods that the delegate of the IKDeviceBrowserView class can implement. All the methods are optional.


The IKFilterCustomUIProvider protocol is an addition to the CIFilter class that defines a method for providing a view for a filter. This protocol is implemented by any filter that provides its own user interface.

IKImageBrowserDataSource Protocol

The IKImageBrowserDataSource informal protocol declares the methods that an instance of the IKImageBrowserView class uses to access the contents of its data source object.

IKImageBrowserDelegate Protocol

The IKImageBrowserDelegate is an informal protocol for the delegate of an IKImageBrowserView object. You can implement these methods to perform custom tasks when in response to events in the image browser view.

IKImageBrowserItem Protocol

The IKImageBrowserItem informal protocol declares the methods that an instance of the IKImageBrowserView class uses to access the contents of its data source for a given item. Some of the methods in this protocol are needed frequently, so you should implement them efficiently.


The IKImageEditPanelDataSource protocol describes the methods that an IKImageEditPanel object uses to access the contents of its data source object.


The IKScannerDeviceViewDelegate protocol defines the delegate protocol that the IKScannerDeviceView delegate must conform to.


The IKSlideshowDataSource protocol describes the methods that an IKSlideshow object uses to access the contents of its data source object.


The QCCompositionParameterViewDelegate informal protocol allows your application to define which parameters should be visible in a QCCompositionParameterView object.


The QCCompositionPickerViewDelegate informal protocol defines methods that allow your application to respond to changes in a composition picker view (a QCCompositionPickerView object).


The QCRenderer protocol defines the methods used to pass data to the input ports or retrieve data from the output ports of the root patch of a Quartz Composer composition. This protocol is adopted by the QCRenderer, QCView, and QCCompositionLayer classes.


The QCPlugInContext protocol defines methods that you use only from within the execution method (execute(_:atTime:withArguments:)) of a QCPlugIn object.


The QCPlugInInputImageSource protocol eliminates the need to use explicit image types for the image input ports on your custom patch. Not only does using the protocol avoid restrictions of a specific image type, but it avoids impedance mismatches, and provides better performance by deferring pixel computation until it is needed. When you need to access the pixels in an image, you simply convert the image to a representation (texture or buffer) using one of the methods defined by the QCPlugInInputImageSource protocol. Use a texture representation when you want to use input images on the GPU. Use a buffer representation when you want to use input images on the CPU.


The QCPlugInOuputImageProvider protocol eliminates the need to use explicit image types for the image output ports on a custom patch. The methods in this protocol are called by the Quartz Composer engine when the output image is needed. If your custom patch has an image output port, you need to implement the appropriate methods for rendering image data and to supply information about the rendering destination and the image bounds.


The QLPreviewItem protocol defines properties you implement to make your application’s content visible in a QuickLook preview (QLPreviewController in iOS or QLPreviewPanel in macOS).


The QLPreviewPanelDataSource protocol declares the methods that the Quick Look preview panel (QLPreviewPanel) uses to access the contents of its data source object.


QLPreviewPanelDelegate is the protocol for the delegate of the Quick Look preview panel (QLPreviewPanel) object.



The possible states for the browser cell. These values are used by the cellState() method.


These constants specify the locations for dropping items onto the browser view. Used by the method setDrop(_:dropOperation:).


Execution modes for custom patches.


Time modes for custom patches.

Extended Types


An image processor that produces an image by manipulating one or more input images or by generating new image data.


The type used for the name of a notification.


The root class of most Objective-C class hierarchies, from which subclasses inherit a basic interface to the runtime system and the ability to behave as Objective-C objects.