<!--
{
  "availability" : [
    "FxPlug: 4.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "professional_video_applications",
  "identifier" : "/documentation/professional_video_applications/FxTileableEffect",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Professional Video Applications"
    ],
    "preciseIdentifier" : "c:objc(pl)FxTileableEffect"
  },
  "title" : "FxTileableEffect"
}
-->

# FxTileableEffect

The designated initializer for your plug-in for rendering only certain portions of the plug-in’s output, referred to as tiles.

```
protocol FxTileableEffect : NSObjectProtocol
```

## Parameters

`apiManager`

An object that obtains the various API objects your plug-in needs for communicating with the host application.

## Overview

Using this protocol, your plug-in can render select portions of its output, or tiles, to increase efficiency and to operate outside the host’s process. Your plug-in should saves a weak reference to the `apiManager` object to use in subsequent calls. The plug-in initializes its properties and instance variables and returns a pointer to `self`. If any part of initialization fails in an unrecoverable way, this method returns `nil`.

## Topics

### Setting up your plug-in

[`init?(apiManager: any PROAPIAccessing)`](/documentation/professional_video_applications/FxTileableEffect/init(apiManager:)-6vvaz)

Initializes the API manager for your plug-in.

[`protocol PROAPIAccessing`](/documentation/professional_video_applications/PROAPIAccessing)

[`func finishInitialSetup() throws`](/documentation/professional_video_applications/FxTileableEffect/finishInitialSetup())

Finishes the initial setup and is called exactly once on first application of your plug-in to allow it to do anything else it needs to in order to finish setting itself up.

[`func pluginInstanceAddedToDocument()`](/documentation/professional_video_applications/FxTileableEffect/pluginInstanceAddedToDocument())

Notifies your plug-in when it becomes part of user’s document.

[`func properties(AutoreleasingUnsafeMutablePointer<NSDictionary>?) throws`](/documentation/professional_video_applications/FxTileableEffect/properties(_:))

Tells the host application about what the plug-in needs and supports, such as whether it renders in a gamma-corrected color space or a linear one.

### Adding and setting parameters

[`func addParameters() throws`](/documentation/professional_video_applications/FxTileableEffect/addParameters())

Tells the host application what parameters your plug-in requires.

[`func `class`(forCustomParameterID: UInt32) -> AnyClass`](/documentation/professional_video_applications/FxTileableEffect/class(forCustomParameterID:))

Returns the class of the object contained in the custom parameter with the given ID.

[`func classes(forCustomParameterID: UInt32) -> Set<AnyHashable>`](/documentation/professional_video_applications/FxTileableEffect/classes(forCustomParameterID:))

Returns the classes of the objects contained in the custom parameter with the given ID.

[`func parameterChanged(UInt32, at: CMTime) throws`](/documentation/professional_video_applications/FxTileableEffect/parameterChanged(_:at:))

Executes when the host detects that a parameter has changed.

### Determining input and output bounds

[`func sourceTileRect(UnsafeMutablePointer<FxRect>, sourceImageIndex: Int, sourceImages: [FxImageTile], destinationTileRect: FxRect, destinationImage: FxImageTile, pluginState: Data?, at: CMTime) throws`](/documentation/professional_video_applications/FxTileableEffect/sourceTileRect(_:sourceImageIndex:sourceImages:destinationTileRect:destinationImage:pluginState:at:))

Calculate the input rectangle needed for the given image input and the output tile to be rendered.

[`func destinationImageRect(UnsafeMutablePointer<FxRect>, sourceImages: [FxImageTile], destinationImage: FxImageTile, pluginState: Data?, at: CMTime) throws`](/documentation/professional_video_applications/FxTileableEffect/destinationImageRect(_:sourceImages:destinationImage:pluginState:at:))

Calculates the bounds of the output image determined by the various inputs and plug-in state at the given render time.

[`func FxRectsAreEqual(FxRect, FxRect) -> Bool`](/documentation/professional_video_applications/FxRectsAreEqual(_:_:))

Compares two rectangle structures and determines if they are equal.

### Rendering an output

[`func pluginState(AutoreleasingUnsafeMutablePointer<NSData>?, at: CMTime, quality: FxQuality) throws`](/documentation/professional_video_applications/FxTileableEffect/pluginState(_:at:quality:))

Retrieves the plug-in’s parameter values, performs any calculations it needs to from those values, and packages up the result to be used later with rendering.

[`func scheduleInputs(AutoreleasingUnsafeMutablePointer<NSArray?>?, withPluginState: Data?, at: CMTime) throws`](/documentation/professional_video_applications/FxTileableEffect/scheduleInputs(_:withPluginState:at:))

Tells the host application how many frames from the given input sources your plug-in requires in order to render at the given render time.

[`func renderDestinationImage(FxImageTile, sourceImages: [FxImageTile], pluginState: Data?, at: CMTime) throws`](/documentation/professional_video_applications/FxTileableEffect/renderDestinationImage(_:sourceImages:pluginState:at:))

Sends a request that the host wants your plug-in to do its rendering for a given output image tile.

### Data types

Data types defined in the FxPlug SDK that may not be class-specific.

[`typealias FxDepth`](/documentation/professional_video_applications/FxDepth)

Constants used to identify bit depth.

[`typealias FxField`](/documentation/professional_video_applications/FxField)

Constants used to identify a field.

[`typealias FxFieldOrder`](/documentation/professional_video_applications/FxFieldOrder)

Constants used to identify the field order of an image stream.

[`typealias FxPoint2D`](/documentation/professional_video_applications/FxPoint2D)

A 2D point representation.

[`struct FxPoint3D`](/documentation/professional_video_applications/FxPoint3D)

A 3D point representation

[`typealias FxQuality`](/documentation/professional_video_applications/FxQuality)

Constants used to identify rendering quality.

[`struct FxRect`](/documentation/professional_video_applications/FxRect)

A 2D axis-aligned rectangle with integer coordinates.

[`typealias FxSize`](/documentation/professional_video_applications/FxSize)

A structure to store width and height values.

[`typealias FxDrawingCoordinates`](/documentation/professional_video_applications/FxDrawingCoordinates)

Constants used to identify coordinate spaces.

[`typealias FxError`](/documentation/professional_video_applications/FxError)

Errors returned by plug-in hosts applications.

[`typealias FxImageColorInfo`](/documentation/professional_video_applications/FxImageColorInfo)

Identifies some color properties of an FxImage instance. These include the color space, gamma level, and, in the case of `YCbCr` images, the color matrix for conversion to RGB.

### Constants

[`var kFxRect_Empty: FxRect`](/documentation/professional_video_applications/kFxRect_Empty)

An empty rectangle.

[`var kFxRect_Infinite: FxRect`](/documentation/professional_video_applications/kFxRect_Infinite)

An infinite rectangle.

[`typealias FxQuality`](/documentation/professional_video_applications/FxQuality)

Constants used to identify rendering quality.

[`typealias FxDepth`](/documentation/professional_video_applications/FxDepth)

Constants used to identify bit depth.

[`let FxPlugErrorDomain: String`](/documentation/professional_video_applications/FxPlugErrorDomain)

The error domain for FxPlug-related errors.

### Initializers

[`init?(APIManager: any PROAPIAccessing)`](/documentation/professional_video_applications/FxTileableEffect/init(APIManager:)-31e6q)

## Relationships

### Inherits From

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)