Blob


1 /* Copyright (c) 2004 Russ Cox, see README for licence details */
2 #include <stdio.h>
3 #include <signal.h>
4 #include <X11/X.h>
5 #include <X11/Xlib.h>
6 #include <X11/Xutil.h>
7 #include "dat.h"
8 #include "fns.h"
10 unsigned long
11 colorpixel(Display *dpy, ScreenInfo *s, int depth, unsigned long rgb, unsigned long def)
12 {
13 int r, g, b;
15 r = rgb>>16;
16 g = (rgb>>8)&0xFF;
17 b = rgb&0xFF;
19 switch(depth){
20 case 1:
21 case 2:
22 case 4:
23 case 8:
24 default:
25 /* not going to waste color map entries */
26 return def;
27 case 15:
28 r >>= 3;
29 g >>= 3;
30 b >>= 3;
31 return (r<<10) | (g<<5) | b;
32 case 16:
33 r >>= 3;
34 g >>= 2;
35 b >>= 3;
36 return (r<<11) | (g<<5) | b;
37 case 24:
38 case 32:
39 /* try to find byte order */
40 if(s->vis->red_mask & 0xff)
41 return (r) | (g<<8) | (b<<16); /* OK on Sun */
42 return rgb;
43 }
44 }