Seam carving

int unweaverNextVertical(SEAM_UNWEAVER *pic, int *seam,int *error);
int unweaverNextHorizontal(SEAM_UNWEAVER *pic, int *seam,int *error);

These remove a single vertical seam or a single horizontal seam, respectively. Once a seam is removed it cannot be inserted again.

Pointer to the unweaver to remove a seam from.
A pointer to a buffer long enough to hold the index of the pixel removed on each row or column of the seam. For example, if you are removing a vertical seam from an unweaver currently measuring $ 400\times500$ pixels, this buffer needs to have room for at least 500 integers. You can determine the exact size needed using the unweaverCurrentSize function, but in many cases this will be unnecessary. The length of the buffer needed will never exceed the original height (for a vertical seam) or width (for a horizontal seam), so it is often possible to allocate the buffer once and reuse for each seam removed.

The $ n^{th}$ value returned in this buffer indicate the column (for a vertical seam) or row (for a horizontal seam) of the pixel removed on the $ n^{th}$ row or column. These coordinates are relative to the image as it would be if it had been carved to the state reached before the call. They are not relative to the original image. This is a difference from the Unpicker interface.

Pointer to an integer in which an error code will be deposited, or NULL if no error code is desired.

If successful, nonzero will be returned and the buffer pointed to by seam will be filled. If unsuccessful, zero will be returned, along with an appropriate error code if error is not NULL.

Hayden Walles 2015-09-02 Logo