Reorders the channels and overwrites the pixels of one or more planes of an ARGBFFFF image.
- iOS 7.0+
- macOS 10.9+
- Mac Catalyst 13.0+
- tvOS 9.0+
- watchOS 2.0+
A pointer to a vImage buffer structure that contains the source image whose data you want to permute.
A pointer to a vImage buffer data structure. You're responsible for filling out the
rowfields of this structure, and for allocating a data buffer of the appropriate size. On return, the data buffer this structure points to contains the destination image data. When you no longer need the data buffer, you must deallocate the memory.
An array of four 8-bit integers with the values 0, 1, 2, and 3, in some order. Each value specifies a plane from the source image that should be copied to that plane in the destination image. 0 denotes the alpha channel, 1 the red channel, 2 the green channel, and 3 the blue channel.
An output value that selects the plane (or planes) from the ARGBFFFF source buffer that you want replaced with the scalar value. The value
0x8selects the alpha channel,
0x4the red channel,
0x2the green channel, and
0x1the blue channel. You can add these values together to select multiple channels.
A pointer to floating-point ARGB values that replace the result pixels based on the
The options to use when performing the operation. If you plan to perform your own tiling or use multithreading, pass
Image Do Not Tile
This function is, in principle, the same as
v, followed by
v. The fused operation is provided because it allows you to set different channels to different values. Also, because neither the permute nor the overwrite functions alone saturate the vector ALU on most architectures, the function gets the extra work done in the compound operation for free.
This function can work in place provided the following are true:
For each buffer,
buf, that overlaps with
buf->datais equal to
Bytes >= dest->row Bytes
If an overlapping buffer has a different
kvis also passed in the flags
Image Do Not Tile