]> www.wagner.pp.ru Git - oss/fgis.git/blob - lib/clr.c
ac92d495e9b2da5c60e1cbc8fb21f0d383263f24
[oss/fgis.git] / lib / clr.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include "eppl_ut.h"
4 #include <clr.h>
5 #include <X11/Xlib.h>
6 int defarray[]={
7 #include "defpal.h"
8 };
9 PALETTE default_palette=defarray;
10 PALETTE read_palette(FILE *f)
11 /* þÉÔÁÅÔ ÐÁÌÉÔÒÕ ÉÚ ÆÁÊÌÁ × ÆÏÒÍÁÔÅ EPPL7 */
12 { PALETTE pal;
13   int index,r,g,b;
14   pal=memcpy(malloc(256*sizeof(long int)),default_palette,256*sizeof(long int));
15   do {
16     if (fscanf(f,"%d %d %d %d\n",&index,&r,&g,&b)!=4) break;
17     if (index>255) continue;
18     pal[index]=(r*255/1000)<<16|(g*255/1000)<<8|(b*255/1000);
19   } while (!feof(f));
20   return pal;
21 }
22
23 char *ppm_pixel(PALETTE palette,int index)
24 { int value;
25   static char buffer[24];
26   if(index>=0&&index<255)
27   value=palette[index];
28   else value=palette[255];
29   sprintf(buffer,"%d %d %d ",value>>16,(value>>8)&0xFF,value & 0xFF);
30   return buffer;
31 }
32
33 char *Xcolor_string(PALETTE palette,int index)
34 { int value;
35   static char buffer[24];
36   if(index>=0&&index<255)
37   value=palette[index]; else value=palette[255];
38   sprintf(buffer,"#%06x",value);
39   return buffer;
40 }
41 XColor Xcolor_struct(PALETTE palette,int index)
42 { int value;
43   XColor buffer;
44   if (index>=0&&index<255)
45    value=palette[index]; else value=palette[255];
46   buffer.red=value>>16;
47   buffer.green=(value>>8)&0xFF;
48   buffer.blue=value&0xFF;
49   buffer.flags=DoRed|DoGreen|DoBlue;
50   return buffer;
51 }
52