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 long11 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 }