Name | Synopsis | Description | Parameters | Return Values | Attributes | See Also
cc [ flag... ] file... -lmlib [ library... ]
#include <mlib.h>
mlib_status mlib_ImageBlend_BSRC1_BSRC2_Inp(mlib_image *src1dst,
     const mlib_image *src2, mlib_s32 cmask);
This group of functions supports digital image composition. They are low-level, in-place, blending functions.
The image type must be MLIB_BYTE. The input and output images must contain three or four channels. For three-channel images, the alpha value is as if the alpha value is 1.
BSRC1 is one of the following: ZERO, ONE, SC, OMSC, DA, SA, OMDA, or OMSA. BSRC2 is one of the following: ZERO, ONE, DC, OMDC, DA, SA, OMDA, OMSA, or SAS.
The following are predefined blend factor types used in mediaLib image composition functions.
/* image blend factors */
typedef enum {
    MLIB_BLEND_ZERO,
    MLIB_BLEND_ONE,
    MLIB_BLEND_DST_COLOR,
    MLIB_BLEND_SRC_COLOR,
    MLIB_BLEND_ONE_MINUS_DST_COLOR,
    MLIB_BLEND_ONE_MINUS_SRC_COLOR,
    MLIB_BLEND_DST_ALPHA,
    MLIB_BLEND_SRC_ALPHA,
    MLIB_BLEND_ONE_MINUS_DST_ALPHA,
    MLIB_BLEND_ONE_MINUS_SRC_ALPHA,
    MLIB_BLEND_SRC_ALPHA_SATURATE
} mlib_blend;
See the following table for the definitions of the blend factors.
| Type | Blend Factor [*] | Abbr. | 
|---|---|---|
| MLIB_BLEND_ZERO | (0,0,0,0) | ZERO | 
| MLIB_BLEND_ONE | (1,1,1,1) | ONE | 
| MLIB_BLEND_DST_COLOR | (Rd,Gd,Bd,Ad) | DC | 
| MLIB_BLEND_SRC_COLOR | (Rs,Gs,Bs,As) | SC | 
| MLIB_BLEND_ONE_MINUS_DST_COLOR | (1,1,1,1)-(Rd,Gd,Bd,Ad) | OMDC | 
| MLIB_BLEND_ONE_MINUS_SRC_COLOR | (1,1,1,1)-(Rs,Gs,Bs,As) | OMSC | 
| MLIB_BLEND_DST_ALPHA | (Ad,Ad,Ad,Ad) | DA | 
| MLIB_BLEND_SRC_ALPHA | (As,As,As,As) | SA | 
| MLIB_BLEND_ONE_MINUS_DST_ALPHA | (1,1,1,1)-(Ad,Ad,Ad,Ad) | OMDA | 
| MLIB_BLEND_ONE_MINUS_SRC_ALPHA | (1,1,1,1)-(As,As,As,As) | OMSA | 
| MLIB_BLEND_SRC_ALPHA_SATURATE | (f,f,f,1) | SAS | 
[*]: The components of the first source image pixel are (Rd,Gd,Bd,Ad), and the components of the second source pixel are (Rs,Gs,Bs,As). Function f = min(As,1-Ad). The first source image is also the destination image.
The blending formula for in-place processing is:
Cd = Cd*D + Cs*S
where Cd is the destination pixel (Rd,Gd,Bd,Ad), Cs is the source pixel (Rs,Gs,Bs,As), and D and S are the blend factors for the destination and source, respectively.
Each of the functions takes the following arguments:
Pointer to the first source and the destination image.
Pointer to the second source 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 is the alpha channel. cmask must be either 0x01 or 0x08.
Each of the functions returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.
See attributes(5) for descriptions of the following attributes:
| ATTRIBUTE TYPE | ATTRIBUTE VALUE | 
|---|---|
| Interface Stability | Committed | 
| MT-Level | MT-Safe | 
mlib_ImageBlend_BSRC1_BSRC2(3MLIB), mlib_ImageComposite(3MLIB), mlib_ImageComposite_Inp(3MLIB), attributes(5)
Name | Synopsis | Description | Parameters | Return Values | Attributes | See Also