474 lines
35 KiB
C
474 lines
35 KiB
C
|
#ifndef __al_included_allegro5_aintern_pixels_h
|
||
|
#define __al_included_allegro5_aintern_pixels_h
|
||
|
|
||
|
#include "allegro5/internal/aintern_float.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#define _AL_MAP_RGBA(_color, _r, _g, _b, _a) \
|
||
|
do { \
|
||
|
(_color).r = _al_u8_to_float[_r]; \
|
||
|
(_color).g = _al_u8_to_float[_g]; \
|
||
|
(_color).b = _al_u8_to_float[_b]; \
|
||
|
(_color).a = _al_u8_to_float[_a]; \
|
||
|
} while (0)
|
||
|
|
||
|
|
||
|
#define _AL_INLINE_GET_PIXEL(format, data, color, advance) \
|
||
|
do { \
|
||
|
switch (format) { \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ARGB_8888: { \
|
||
|
uint32_t _gp_pixel = *(uint32_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
(_gp_pixel & 0x00FF0000) >> 16, \
|
||
|
(_gp_pixel & 0x0000FF00) >> 8, \
|
||
|
(_gp_pixel & 0x000000FF) >> 0, \
|
||
|
(_gp_pixel & 0xFF000000) >> 24); \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGBA_8888: { \
|
||
|
uint32_t _gp_pixel = *(uint32_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
(_gp_pixel & 0xFF000000) >> 24, \
|
||
|
(_gp_pixel & 0x00FF0000) >> 16, \
|
||
|
(_gp_pixel & 0x0000FF00) >> 8, \
|
||
|
(_gp_pixel & 0x000000FF) >> 0); \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ARGB_4444: { \
|
||
|
uint16_t _gp_pixel = *(uint16_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
_al_rgb_scale_4[(_gp_pixel & 0x0F00) >> 8], \
|
||
|
_al_rgb_scale_4[(_gp_pixel & 0x00F0) >> 4], \
|
||
|
_al_rgb_scale_4[(_gp_pixel & 0x000F)], \
|
||
|
_al_rgb_scale_4[(_gp_pixel & 0xF000) >> 12]); \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGB_888: { \
|
||
|
uint32_t _gp_pixel = READ3BYTES(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
(_gp_pixel & 0xFF0000) >> 16, \
|
||
|
(_gp_pixel & 0x00FF00) >> 8, \
|
||
|
(_gp_pixel & 0x0000FF) >> 0, \
|
||
|
255); \
|
||
|
if (advance) \
|
||
|
data += 3; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGB_565: { \
|
||
|
uint16_t _gp_pixel = *(uint16_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0xF800) >> 11], \
|
||
|
_al_rgb_scale_6[(_gp_pixel & 0x07E0) >> 5], \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x001F)], \
|
||
|
255); \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGB_555: { \
|
||
|
uint16_t _gp_pixel = *(uint16_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x7C00) >> 10], \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x03E0) >> 5], \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x001F)], \
|
||
|
255); \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGBA_5551: { \
|
||
|
uint16_t _gp_pixel = *(uint16_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0xF800) >> 11], \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x07C0) >> 6], \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x003E) >> 1], \
|
||
|
_al_rgb_scale_1[_gp_pixel & 1]); \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ARGB_1555: { \
|
||
|
uint16_t _gp_pixel = *(uint16_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x7C00) >> 10], \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x03E0) >> 5], \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x001F)], \
|
||
|
_al_rgb_scale_1[(_gp_pixel & 0x8000) >> 15]); \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ABGR_8888: { \
|
||
|
uint32_t _gp_pixel = *(uint32_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
(_gp_pixel & 0x000000FF) >> 0, \
|
||
|
(_gp_pixel & 0x0000FF00) >> 8, \
|
||
|
(_gp_pixel & 0x00FF0000) >> 16, \
|
||
|
(_gp_pixel & 0xFF000000) >> 24); \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_XBGR_8888: { \
|
||
|
uint32_t _gp_pixel = *(uint32_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
(_gp_pixel & 0x000000FF) >> 0, \
|
||
|
(_gp_pixel & 0x0000FF00) >> 8, \
|
||
|
(_gp_pixel & 0x00FF0000) >> 16, \
|
||
|
255); \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_BGR_888: { \
|
||
|
uint32_t _gp_pixel = READ3BYTES(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
(_gp_pixel & 0x000000FF) >> 0, \
|
||
|
(_gp_pixel & 0x0000FF00) >> 8, \
|
||
|
(_gp_pixel & 0x00FF0000) >> 16, \
|
||
|
255); \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_BGR_565: { \
|
||
|
uint16_t _gp_pixel = *(uint16_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x001F)], \
|
||
|
_al_rgb_scale_6[(_gp_pixel & 0x07E0) >> 5], \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0xF800) >> 11], \
|
||
|
255); \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_BGR_555: { \
|
||
|
uint16_t _gp_pixel = *(uint16_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x001F)], \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x03E0) >> 5], \
|
||
|
_al_rgb_scale_5[(_gp_pixel & 0x7C00) >> 10], \
|
||
|
255); \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGBX_8888: { \
|
||
|
uint32_t _gp_pixel = *(uint32_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
(_gp_pixel & 0xFF000000) >> 24, \
|
||
|
(_gp_pixel & 0x00FF0000) >> 16, \
|
||
|
(_gp_pixel & 0x0000FF00) >> 8, \
|
||
|
255); \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_XRGB_8888: { \
|
||
|
uint32_t _gp_pixel = *(uint32_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
(_gp_pixel & 0x00FF0000) >> 16, \
|
||
|
(_gp_pixel & 0x0000FF00) >> 8, \
|
||
|
(_gp_pixel & 0x000000FF), \
|
||
|
255); \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ABGR_F32: { \
|
||
|
float *f = (float *)data; \
|
||
|
color.r = f[0]; \
|
||
|
color.g = f[1]; \
|
||
|
color.b = f[2]; \
|
||
|
color.a = f[3]; \
|
||
|
if (advance) \
|
||
|
data += 4 * sizeof(float); \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE: { \
|
||
|
uint8_t *p = (uint8_t *)data; \
|
||
|
_AL_MAP_RGBA(color, *p, *(p + 1), *(p + 2), *(p + 3)); \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGBA_4444: { \
|
||
|
uint16_t _gp_pixel = *(uint16_t *)(data); \
|
||
|
_AL_MAP_RGBA(color, \
|
||
|
_al_rgb_scale_4[(_gp_pixel & 0xF000) >> 12], \
|
||
|
_al_rgb_scale_4[(_gp_pixel & 0x0F00) >> 8], \
|
||
|
_al_rgb_scale_4[(_gp_pixel & 0x00F0) >> 4], \
|
||
|
_al_rgb_scale_4[(_gp_pixel & 0x000F)]); \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_NO_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_WITH_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_15_NO_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_16_NO_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_16_WITH_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_24_NO_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_32_NO_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_32_WITH_ALPHA: \
|
||
|
ALLEGRO_ERROR("INLINE_GET got fake _gp_pixel format: %d\n", format); \
|
||
|
abort(); \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_NUM_PIXEL_FORMATS: \
|
||
|
default: \
|
||
|
ALLEGRO_ERROR("INLINE_GET got non _gp_pixel format: %d\n", format); \
|
||
|
abort(); \
|
||
|
break; \
|
||
|
} \
|
||
|
} while (0)
|
||
|
|
||
|
|
||
|
#define _AL_INLINE_PUT_PIXEL(format, data, color, advance) \
|
||
|
do { \
|
||
|
uint32_t _pp_pixel; \
|
||
|
switch (format) { \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ARGB_8888: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.a * 255) << 24; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 255) << 16; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 255) << 8; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 255); \
|
||
|
*(uint32_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGBA_8888: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.r * 255) << 24; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 255) << 16; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 255) << 8; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.a * 255); \
|
||
|
*(uint32_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ARGB_4444: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.a * 15) << 12; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 15) << 8; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 15) << 4; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 15); \
|
||
|
*(uint16_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGB_888: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.r * 255) << 16; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 255) << 8; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 255); \
|
||
|
WRITE3BYTES(data, _pp_pixel); \
|
||
|
if (advance) \
|
||
|
data += 3; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGB_565: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.r * 0x1f) << 11; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0x3f) << 5; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 0x1f); \
|
||
|
*(uint16_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGB_555: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.r * 0x1f) << 10; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0x1f) << 5; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 0x1f); \
|
||
|
*(uint16_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGBA_5551: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.r * 0x1f) << 11; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0x1f) << 6; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 0x1f) << 1; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.a); \
|
||
|
*(uint16_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ARGB_1555: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.a) << 15; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 0x1f) << 10; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0x1f) << 5; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 0x1f); \
|
||
|
*(uint16_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ABGR_8888: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.a * 0xff) << 24; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 0xff) << 16; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0xff) << 8; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 0xff); \
|
||
|
*(uint32_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_XBGR_8888: \
|
||
|
_pp_pixel = 0xff000000; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 0xff) << 16; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0xff) << 8; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 0xff); \
|
||
|
*(uint32_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_BGR_888: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.b * 0xff) << 16; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0xff) << 8; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 0xff); \
|
||
|
WRITE3BYTES(data, _pp_pixel); \
|
||
|
if (advance) \
|
||
|
data += 3; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_BGR_565: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.b * 0x1f) << 11; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0x3f) << 5; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 0x1f); \
|
||
|
*(uint16_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_BGR_555: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.b * 0x1f) << 10; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0x1f) << 5; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 0x1f); \
|
||
|
*(uint16_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGBX_8888: \
|
||
|
_pp_pixel = 0xff; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 0xff) << 24; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0xff) << 16; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 0xff) << 8; \
|
||
|
*(uint32_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_XRGB_8888: \
|
||
|
_pp_pixel = 0xff000000; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 0xff) << 16; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 0xff) << 8; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 0xff); \
|
||
|
*(uint32_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ABGR_F32: { \
|
||
|
float *f = (float *)data; \
|
||
|
f[0] = color.r; \
|
||
|
f[1] = color.g; \
|
||
|
f[2] = color.b; \
|
||
|
f[3] = color.a; \
|
||
|
if (advance) \
|
||
|
data += 4 * sizeof(float); \
|
||
|
break; \
|
||
|
} \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE: \
|
||
|
*((uint8_t *)data + 0) = _al_fast_float_to_int(color.r * 0xff); \
|
||
|
*((uint8_t *)data + 1) = _al_fast_float_to_int(color.g * 0xff); \
|
||
|
*((uint8_t *)data + 2) = _al_fast_float_to_int(color.b * 0xff); \
|
||
|
*((uint8_t *)data + 3) = _al_fast_float_to_int(color.a * 0xff); \
|
||
|
if (advance) \
|
||
|
data += 4; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_RGBA_4444: \
|
||
|
_pp_pixel = _al_fast_float_to_int(color.a * 15); \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.r * 15) << 12; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.g * 15) << 8; \
|
||
|
_pp_pixel |= _al_fast_float_to_int(color.b * 15) << 4; \
|
||
|
*(uint16_t *)(data) = _pp_pixel; \
|
||
|
if (advance) \
|
||
|
data += 2; \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_NO_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_WITH_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_15_NO_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_16_NO_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_16_WITH_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_24_NO_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_32_NO_ALPHA: \
|
||
|
case ALLEGRO_PIXEL_FORMAT_ANY_32_WITH_ALPHA: \
|
||
|
ALLEGRO_ERROR("INLINE_PUT got fake _pp_pixel format: %d\n", format); \
|
||
|
abort(); \
|
||
|
break; \
|
||
|
\
|
||
|
case ALLEGRO_NUM_PIXEL_FORMATS: \
|
||
|
ALLEGRO_ERROR("INLINE_PUT got non _pp_pixel format: %d\n", format); \
|
||
|
abort(); \
|
||
|
break; \
|
||
|
} \
|
||
|
} while (0)
|
||
|
|
||
|
AL_ARRAY(int, _al_rgb_scale_1);
|
||
|
AL_ARRAY(int, _al_rgb_scale_4);
|
||
|
AL_ARRAY(int, _al_rgb_scale_5);
|
||
|
AL_ARRAY(int, _al_rgb_scale_6);
|
||
|
AL_ARRAY(float, _al_u8_to_float);
|
||
|
|
||
|
void _al_init_pixels(void);
|
||
|
bool _al_pixel_format_has_alpha(int format);
|
||
|
bool _al_pixel_format_is_real(int format);
|
||
|
int _al_get_real_pixel_format(ALLEGRO_DISPLAY *display, int format);
|
||
|
char const *_al_pixel_format_name(ALLEGRO_PIXEL_FORMAT format);
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|
||
|
/* vim: set sts=3 sw=3 et: */
|