make icons use pixel32 data, and image_draw takes pixel32 data.
[mikachu/openbox.git] / render / color.h
1 #ifndef __color_h
2 #define __color_h
3
4 #include <X11/Xlib.h>
5 #include <X11/Xutil.h>
6
7 #ifdef HAVE_STDINT_H 
8 #  include <stdint.h>
9 #else
10 #  ifdef HAVE_SYS_TYPES_H
11 #    include <sys/types.h>
12 #  endif   
13 #endif
14
15
16 #ifdef HAVE_STDINT_H
17 typedef uint32_t pixel32;
18 typedef uint16_t pixel16;
19 #else
20 typedef u_int32_t pixel32;  
21 typedef u_int16_t pixel16;   
22 #endif /* HAVE_STDINT_H */  
23
24 #if (G_BYTE_ORDER == G_BIG_ENDIAN)
25 #define default_red_offset 0
26 #define default_green_offset 8
27 #define default_blue_offset 16
28 #define default_alpha_offset 24
29 #define render_endian MSBFirst  
30 #else
31 #define default_alpha_offset 24
32 #define default_red_offset 16
33 #define default_green_offset 8
34 #define default_blue_offset 0
35 #define render_endian LSBFirst
36 #endif /* G_BYTE_ORDER == G_BIG_ENDIAN */
37
38
39 typedef struct color_rgb {
40     int r;
41     int g;
42     int b;
43     unsigned long pixel;
44     GC gc;
45 } color_rgb;
46
47 void color_allocate_gc(color_rgb *in);
48 XColor *pickColor(int r, int g, int b);
49 color_rgb *color_parse(char *colorname);
50 color_rgb *color_new(int r, int g, int b);
51 void color_free(color_rgb *in);
52 void reduce_depth(pixel32 *data, XImage *im);
53 void increase_depth(pixel32 *data, XImage *im);
54
55 extern int render_red_offset;
56 extern int render_green_offset;
57 extern int render_blue_offset;
58
59 extern int render_red_shift;
60 extern int render_green_shift;
61 extern int render_blue_shift;
62
63 extern int render_red_mask;
64 extern int render_green_mask;
65 extern int render_blue_mask;
66
67 extern int pseudo_bpc;
68 #define pseudo_ncolors() (1 << (pseudo_bpc * 3))
69 extern XColor *pseudo_colors;
70 #endif /* __color_h */