Performs a horizontal shear operation on a region of interest within a Planar8 source image.


func vImageHorizontalShearD_Planar8(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ srcOffsetToROI_X: vImagePixelCount, _ srcOffsetToROI_Y: vImagePixelCount, _ xTranslate: Double, _ shearSlope: Double, _ filter: ResamplingFilter!, _ backColor: Pixel_8, _ flags: vImage_Flags) -> vImage_Error



A pointer to a vImage buffer structure that contains the source image whose data you want to shear.


A pointer to a vImage buffer data structure. You're responsible for filling out the height, width, and rowBytes fields 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.

This parameter also specifies the size of the region of interest within the source image. The region of interest has the same height and width as the destination image buffer.


The horizontal offset, in pixels, from the upper-left pixel of the region of interest within the source image.


The vertical offset, in pixels, from the upper-left pixel of the region of interest within the source image.


A translation value for the horizontal direction.


The slope of the front edge of the sheared image, measured in a clockwise direction.


The resampling filter to be used with this function. You create this object by calling vImageNewResamplingFilter(_:_:) (to use a default resampling filter supplied by vImage) or vImageNewResamplingFilterForFunctionUsingBuffer (to use a custom resampling filter that you supply). When the resampling filter is created, you can also set a scale factor that will be used in the horizontal shear operation.


A background color. Pass a pixel value only if you also set the kvImageBackgroundColorFill flag.


The options to use when applying the shear.

To specify how vImage handles pixel locations beyond the edge of the source image, you must set exactly one of the following flags: kvImageBackgroundColorFill or kvImageEdgeExtend.

If you want vImage to use a higher quality, but slower resampling filter, set the kvImageHighQualityResampling flag.

If you plan to perform your own tiling or use multithreading, set the kvImageDoNotTile flag.

Return Value

kvImageNoError; otherwise, one of the error codes described in Data Types and Constants.


This function also translates and scales the image, both in the horizontal direction. The function transforms as much of the source image as it needs in order to attempt to fill the destination buffer, which means it can transform pixels outside the region of interest.

See Also

Double-Precision Horizontal Shearing