enum { COLOR_BLACK = 0, COLOR_RED, COLOR_GREEN, COLOR_YELLOW, COLOR_BLUE, COLOR_MAGENTA, COLOR_CYAN, COLOR_WHITE }; static float RGBMap[9][3] = { {0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {1, 1, 0}, {0, 0, 1}, {1, 0, 1}, {0, 1, 1}, {1, 1, 1}, {0.5, 0.5, 0.5} }; static void SetColor(int c) { if (glutGet(GLUT_WINDOW_RGBA)) glColor3fv(RGBMap[c]); else glIndexf(c); } static void InitMap(void) { int i; if (rgb) return; for (i = 0; i < 9; i++) glutSetColor(i, RGBMap[i][0], RGBMap[i][1], RGBMap[i][2]); } static void SetFogRamp(int density, int startIndex) { int fogValues, colorValues; int i, j, k; float intensity; fogValues = 1 << density; colorValues = 1 << startIndex; for (i = 0; i < colorValues; i++) { for (j = 0; j < fogValues; j++) { k = i * fogValues + j; intensity = (i * fogValues + j * colorValues) / 255.0; glutSetColor(k, intensity, intensity, intensity); } } } static void SetGreyRamp(void) { int i; float intensity; for (i = 0; i < 255; i++) { intensity = i / 255.0; glutSetColor(i, intensity, intensity, intensity); } }