X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglut%2Ffbdev%2Fcolormap.c;h=89556ef4a5c75ba73ac009f73d7982d595e1880e;hb=a38aef93ab2a5006c3b8cfa50aaf48fafc0eb8d4;hp=4c013c7646345bfb44cd6d1f5b7942fe7059164a;hpb=7e4152f0ed46f644a4247444e18dc7ad6c9832b0;p=mesa.git diff --git a/src/glut/fbdev/colormap.c b/src/glut/fbdev/colormap.c index 4c013c76463..89556ef4a5c 100644 --- a/src/glut/fbdev/colormap.c +++ b/src/glut/fbdev/colormap.c @@ -97,54 +97,39 @@ void RestoreColorMap(void) void LoadColorMap(void) { - /* we're assuming 256 entries here */ - int i; - - switch(VarInfo.bits_per_pixel) { - case 8: - case 24: - case 32: - ColorMap.len = 256; - break; - case 15: - ColorMap.len = 32; - break; - case 16: - ColorMap.len = 64; - break; - } - ColorMap.start = 0; ColorMap.red = RedColorMap; ColorMap.green = GreenColorMap; ColorMap.blue = BlueColorMap; ColorMap.transp = NULL; - if (ioctl(FrameBufferFD, FBIOGETCMAP, (void *) &ColorMap) < 0) - sprintf(exiterror, "ioctl(FBIOGETCMAP) failed!\n"); - - switch(VarInfo.bits_per_pixel) { - case 15: - for(i=0; i<32; i++) - RedColorMap[i] = GreenColorMap[i] = BlueColorMap[i] = i*65535/31; - break; - case 16: - for(i=0; i<32; i++) - RedColorMap[i] = BlueColorMap[i] = i*65535/31; - for(i=0; i<64; i++) - GreenColorMap[i] = i*65535/63; - break; - case 24: - case 32: - for(i=0; i<256; i++) - RedColorMap[i] = GreenColorMap[i] = BlueColorMap[i] = i*257; - break; - } + if(DisplayMode & GLUT_INDEX) { + ColorMap.len = 256; - RestoreColorMap(); + if (ioctl(FrameBufferFD, FBIOGETCMAP, (void *) &ColorMap) < 0) + sprintf(exiterror, "ioctl(FBIOGETCMAP) failed!\n"); - if(DisplayMode & GLUT_INDEX) FillReverseColorMap(); + } else { + int rcols = 1 << VarInfo.red.length; + int gcols = 1 << VarInfo.green.length; + int bcols = 1 << VarInfo.blue.length; + + int i; + + ColorMap.len = gcols; + + for (i = 0; i < rcols ; i++) + RedColorMap[i] = (65536/(rcols-1)) * i; + + for (i = 0; i < gcols ; i++) + GreenColorMap[i] = (65536/(gcols-1)) * i; + + for (i = 0; i < bcols ; i++) + BlueColorMap[i] = (65536/(bcols-1)) * i; + + RestoreColorMap(); + } } void glutSetColor(int cell, GLfloat red, GLfloat green, GLfloat blue)