37
38
#define TORMAP(x)(unsigned short)((x<0?0:x>1?1:x)*(GLfloat)(REVERSECMAPSIZE-1))
38
39
#define FROMCMAP(x) (GLfloat)x / (GLfloat)((1<<16) - 1)
40
static struct fb_cmap ColorMap;
41
static struct fb_cmap ColorMap, OriginalColorMap;
42
43
unsigned short RedColorMap[256], GreenColorMap[256], BlueColorMap[256];
92
93
void RestoreColorMap(void)
95
if(FixedInfo.visual == FB_VISUAL_TRUECOLOR)
94
98
if (ioctl(FrameBufferFD, FBIOPUTCMAP, (void *) &ColorMap) < 0)
95
99
sprintf(exiterror, "ioctl(FBIOPUTCMAP) failed!\n");
98
102
void LoadColorMap(void)
100
/* we're assuming 256 entries here */
104
if(FixedInfo.visual == FB_VISUAL_TRUECOLOR)
103
107
ColorMap.start = 0;
105
108
ColorMap.red = RedColorMap;
106
109
ColorMap.green = GreenColorMap;
107
110
ColorMap.blue = BlueColorMap;
108
111
ColorMap.transp = NULL;
110
if (ioctl(FrameBufferFD, FBIOGETCMAP, (void *) &ColorMap) < 0)
111
sprintf(exiterror, "ioctl(FBIOGETCMAP) failed!\n");
113
switch(VarInfo.bits_per_pixel) {
116
RedColorMap[i] = GreenColorMap[i] = BlueColorMap[i] = i*65535/31;
120
RedColorMap[i] = BlueColorMap[i] = i*65535/31;
122
GreenColorMap[i] = i*65535/63;
127
RedColorMap[i] = GreenColorMap[i] = BlueColorMap[i] = i*257;
133
if(DisplayMode & GLUT_INDEX)
113
if(DisplayMode & GLUT_INDEX) {
116
if (ioctl(FrameBufferFD, FBIOGETCMAP, (void *) &ColorMap) < 0)
117
sprintf(exiterror, "ioctl(FBIOGETCMAP) failed!\n");
134
119
FillReverseColorMap();
121
int rcols = 1 << VarInfo.red.length;
122
int gcols = 1 << VarInfo.green.length;
123
int bcols = 1 << VarInfo.blue.length;
127
ColorMap.len = gcols;
129
for (i = 0; i < rcols ; i++)
130
RedColorMap[i] = (65536/(rcols-1)) * i;
132
for (i = 0; i < gcols ; i++)
133
GreenColorMap[i] = (65536/(gcols-1)) * i;
135
for (i = 0; i < bcols ; i++)
136
BlueColorMap[i] = (65536/(bcols-1)) * i;
137
142
void glutSetColor(int cell, GLfloat red, GLfloat green, GLfloat blue)