1 struct fb_cmap {
2  unsigned int start;
3  unsigned int len;
4  unsigned short *red;
5  unsigned short *green;
6  unsigned short *blue;
7  unsigned short *transp;
8 };
9 
10 typedef struct {
11     int r;
12     int g;
13     int b;
14     int a;
15 } rgba_t;
16 
17 static unsigned int cmap_len;
18 
19 extern unsigned int red_len, green_len, blue_len, alpha_len;
20 extern struct fb_cmap fb_cmap;
21 extern rgba_t *clut;
22 extern int fb_set_cmap(void);
23 
directcolor_update_cmap(void)24 void directcolor_update_cmap(void)
25 {
26     unsigned int i;
27 
28     for (i = 0; i < cmap_len; i++) {
29       if (i < red_len)
30 	fb_cmap.red[i] = clut[i].r;
31       if (i < green_len)
32 	fb_cmap.green[i] = clut[i].g;
33       if (i < blue_len)
34 	fb_cmap.blue[i] = clut[i].b;
35       if (fb_cmap.transp && i < alpha_len)
36 	fb_cmap.transp[i] = clut[i].a;
37     }
38 }
39