Loading...
Searching...
No Matches
Go to the documentation of this file. 1#ifndef PATCHWORK_PIXEL_H
2#define PATCHWORK_PIXEL_H 1
6#if defined(__cplusplus)
13#define PIXEL_ALPHA(pixel) (((pixel) >> 24) & 0xFF)
14#define PIXEL_RED(pixel) (((pixel) >> 16) & 0xFF)
15#define PIXEL_GREEN(pixel) (((pixel) >> 8) & 0xFF)
16#define PIXEL_BLUE(pixel) (((pixel) >> 0) & 0xFF)
18#define PIXEL_ARGB(a, r, g, b) (((a) << 24) | ((r) << 16) | ((g) << 8) | ((b) << 0))
20#define PIXEL_BLEND(dest, src) \
22 uint8_t aAlpha = PIXEL_ALPHA(*src); \
23 uint8_t bAlpha = PIXEL_ALPHA(*dest); \
24 uint8_t alpha = aAlpha + ((bAlpha * (0xFF - aAlpha)) / 0xFF); \
27 *dest = PIXEL_ARGB(alpha, \
28 (PIXEL_RED(*src) * aAlpha + PIXEL_RED(*dest) * bAlpha * (0xFF - aAlpha) / 0xFF) / alpha, \
29 (PIXEL_GREEN(*src) * aAlpha + PIXEL_GREEN(*dest) * bAlpha * (0xFF - aAlpha) / 0xFF) / alpha, \
30 (PIXEL_BLUE(*src) * aAlpha + PIXEL_BLUE(*dest) * bAlpha * (0xFF - aAlpha) / 0xFF) / alpha); \
38#if defined(__cplusplus)