1 #ifndef __al_included_allegro5_color_h
2 #define __al_included_allegro5_color_h
3 
4 #include "allegro5/base.h"
5 
6 #ifdef __cplusplus
7    extern "C" {
8 #endif
9 
10 
11 /* Type: ALLEGRO_COLOR
12  */
13 typedef struct ALLEGRO_COLOR ALLEGRO_COLOR;
14 
15 struct ALLEGRO_COLOR
16 {
17    float r, g, b, a;
18 };
19 
20 
21 /* Enum: ALLEGRO_PIXEL_FORMAT
22  */
23 typedef enum ALLEGRO_PIXEL_FORMAT
24 {
25    ALLEGRO_PIXEL_FORMAT_ANY                   = 0,
26    ALLEGRO_PIXEL_FORMAT_ANY_NO_ALPHA          = 1,
27    ALLEGRO_PIXEL_FORMAT_ANY_WITH_ALPHA        = 2,
28    ALLEGRO_PIXEL_FORMAT_ANY_15_NO_ALPHA       = 3,
29    ALLEGRO_PIXEL_FORMAT_ANY_16_NO_ALPHA       = 4,
30    ALLEGRO_PIXEL_FORMAT_ANY_16_WITH_ALPHA     = 5,
31    ALLEGRO_PIXEL_FORMAT_ANY_24_NO_ALPHA       = 6,
32    ALLEGRO_PIXEL_FORMAT_ANY_32_NO_ALPHA       = 7,
33    ALLEGRO_PIXEL_FORMAT_ANY_32_WITH_ALPHA     = 8,
34    ALLEGRO_PIXEL_FORMAT_ARGB_8888             = 9,
35    ALLEGRO_PIXEL_FORMAT_RGBA_8888             = 10,
36    ALLEGRO_PIXEL_FORMAT_ARGB_4444             = 11,
37    ALLEGRO_PIXEL_FORMAT_RGB_888               = 12, /* 24 bit format */
38    ALLEGRO_PIXEL_FORMAT_RGB_565               = 13,
39    ALLEGRO_PIXEL_FORMAT_RGB_555               = 14,
40    ALLEGRO_PIXEL_FORMAT_RGBA_5551             = 15,
41    ALLEGRO_PIXEL_FORMAT_ARGB_1555             = 16,
42    ALLEGRO_PIXEL_FORMAT_ABGR_8888             = 17,
43    ALLEGRO_PIXEL_FORMAT_XBGR_8888             = 18,
44    ALLEGRO_PIXEL_FORMAT_BGR_888               = 19, /* 24 bit format */
45    ALLEGRO_PIXEL_FORMAT_BGR_565               = 20,
46    ALLEGRO_PIXEL_FORMAT_BGR_555               = 21,
47    ALLEGRO_PIXEL_FORMAT_RGBX_8888             = 22,
48    ALLEGRO_PIXEL_FORMAT_XRGB_8888             = 23,
49    ALLEGRO_PIXEL_FORMAT_ABGR_F32              = 24,
50    ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE          = 25,
51    ALLEGRO_PIXEL_FORMAT_RGBA_4444             = 26,
52    ALLEGRO_PIXEL_FORMAT_SINGLE_CHANNEL_8      = 27,
53    ALLEGRO_PIXEL_FORMAT_COMPRESSED_RGBA_DXT1  = 28,
54    ALLEGRO_PIXEL_FORMAT_COMPRESSED_RGBA_DXT3  = 29,
55    ALLEGRO_PIXEL_FORMAT_COMPRESSED_RGBA_DXT5  = 30,
56    ALLEGRO_NUM_PIXEL_FORMATS
57 } ALLEGRO_PIXEL_FORMAT;
58 
59 
60 /* Pixel mapping */
61 AL_FUNC(ALLEGRO_COLOR, al_map_rgb, (unsigned char r, unsigned char g, unsigned char b));
62 AL_FUNC(ALLEGRO_COLOR, al_map_rgba, (unsigned char r, unsigned char g, unsigned char b, unsigned char a));
63 AL_FUNC(ALLEGRO_COLOR, al_map_rgb_f, (float r, float g, float b));
64 AL_FUNC(ALLEGRO_COLOR, al_map_rgba_f, (float r, float g, float b, float a));
65 AL_FUNC(ALLEGRO_COLOR, al_premul_rgba,
66    (unsigned char r, unsigned char g, unsigned char b, unsigned char a));
67 AL_FUNC(ALLEGRO_COLOR, al_premul_rgba_f,
68    (float r, float g, float b, float a));
69 
70 /* Pixel unmapping */
71 AL_FUNC(void, al_unmap_rgb, (ALLEGRO_COLOR color, unsigned char *r, unsigned char *g, unsigned char *b));
72 AL_FUNC(void, al_unmap_rgba, (ALLEGRO_COLOR color, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a));
73 AL_FUNC(void, al_unmap_rgb_f, (ALLEGRO_COLOR color, float *r, float *g, float *b));
74 AL_FUNC(void, al_unmap_rgba_f, (ALLEGRO_COLOR color, float *r, float *g, float *b, float *a));
75 
76 /* Pixel formats */
77 AL_FUNC(int, al_get_pixel_size, (int format));
78 AL_FUNC(int, al_get_pixel_format_bits, (int format));
79 AL_FUNC(int, al_get_pixel_block_size, (int format));
80 AL_FUNC(int, al_get_pixel_block_width, (int format));
81 AL_FUNC(int, al_get_pixel_block_height, (int format));
82 
83 #ifdef __cplusplus
84    }
85 #endif
86 
87 #endif
88 
89 /* vim: set ts=8 sts=3 sw=3 et: */
90