# API Notes: AppKit framework

The full API is described in Apple’s documentation, both the C and Objective-C APIs are available (but see the API Notes below).

These bindings are accessed through the `AppKit` package (that is, `import AppKit`).

## API Notes

### API Extensions

See API Description for PyObjCTools.AppCategories for same extensions for the APIs from the AppKit framework.

### `NSBezierPath`

- `-drawPackedGlyphs:atPoint:` and `-appendBezierPathWithPackedGlyphs:`

  These methods are barely supported…

### `NSColorSpace`

- `-initWithColorSyncProfile:` and `colorSyncProfile`

  These methods are not supported.

### `NSEvent`

- `-initWithEventRef:` and `-eventRef`

  These methods are not supported

### `NSGradient`

- `-initWithColorsAndLocations:`

  This method is not supported, use `-initWithColors:atLocations:colorSpace:` instead.

### `NSDrawBitmap`

This function is deprecated and is not supported by PyObjC. Use an `NSBitmapImageRep` instead.

### `NSImage`

- `initWithIconRef:`

  This method is not yet supported.

### `NSMovie`

NOTE: This class is deprecated by Apple, use `QTMovie` instead.

- `-QTMovie`, `-initWithMovie:`

  These methods are not supported.

### `NSMovieView`

- `-movieController`

  This method is not supported.

### `NSPrintInfo`

- `-PMPrintSession`, `-PMPageFormat`, `-PMPrintSettings`

  These methods are not supported.

### `NSQuickDrawView`

- `-qdPort`

  This method is not supported.

### `NSGlyphInfoAtIndex`

This function is not supported.

### `NSTypesetterGlyphInfo`

This structure is not supported, and therefore the method `-baseOfTypesetterGlyphInfo` and `-typesetterLaidOneGlyph` of `NSSimpleHorizontalTypesetter` are not supported as well.

### `NSWindow`

Methods `-initWithWindowRef:` and `-windowRef` are not supported.

### `NSInputStream`

- `getBuffer:length:`

  > This method is not supported

### `NSBitmapImageRep`

- `-initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:`

  This method is not yet supported. Support for this method requires a manual wrapper, which has not been written yet.

### `NSDictionaryOfVariableBindings`

This is a helper macro that cannot be implemented with the same interface in Python.

Instead of:

    NSDictionaryOfVariableBindings(button1, button2, nil)

use:

    { "button1": button1, "button2": button2 }

or:

    AppKit.NSDictionaryOfVariableBindings("button1", "button2")

The first alternative is preferable because it is cleaner Python code, and the implementation of `NSDictionaryOfVariableBindings` has to use an unstable API of CPython.

### `IBInspectable` and `IB_DESIGNABLE`

These definitions are not supported.