cc [ flag... ] file... –lmlib [ library... ] #include <mlib.h> mlib_status mlib_ImageDivAlpha_Inp(mlib_image *srcdst, mlib_s32 cmask);
The mlib_ImageDivAlpha_Inp() function divides color channels by the alpha channel on a pixel-by-pixel basis, in place.
For the MLIB_BYTE image, it uses the following equation:
srcdst[x][y][c] = srcdst[x][y][c] / (srcdst[x][y][a] * 2**(-8))
For the MLIB_SHORT image, it uses the following equation:
srcdst[x][y][c] = srcdst[x][y][c] / (srcdst[x][y][a] * 2**(-15))
For the MLIB_USHORT image, it uses the following equation:
srcdst[x][y][c] = srcdst[x][y][c] / (srcdst[x][y][a] * 2**(-16))
For the MLIB_INT image, it uses the following equation:
srcdst[x][y][c] = srcdst[x][y][c] / (srcdst[x][y][a] * 2**(-31))
where c and a are the indices for the color channels and the alpha channel, respectively, so c != a.
In the case of srcdst[x][y][a] = 0,
srcdst[x][y][c] = 0 if srcdst[x][y][c] = 0 srcdst[x][y][c] = DATA_TYPE_MAX if srcdst[x][y][c] > 0 srcdst[x][y][c] = DATA_TYPE_MIN if srcdst[x][y][c] < 0
where DATA_TYPE is MLIB_U8, MLIB_S16, MLIB_U16, or MLIB_S32 for an image of type MLIB_BYTE, MLIB_SHORT, MLIB_USHORT, or MLIB_INT, respectively.
The function takes the following arguments:
Pointer to source and destination image.
Channel mask to indicate the alpha channel. Each bit of the mask represents a channel in the image. The channel corresponding to the 1 bit of cmask is the alpha channel.
The function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.
See attributes(5) for descriptions of the following attributes:
|
mlib_ImageDivAlpha(3MLIB), mlib_ImageDivAlpha_Fp(3MLIB), mlib_ImageDivAlpha_Fp_Inp(3MLIB), attributes(5)