paul@amos.ling.ucsd.edu (Paul Smith) (10/08/87)
Does anyone have a color map for X on the Sun which which simulates the normal spectrum? I would like to have a contiguous map which I could map low values to to darker colors, and higher values to brighter colors. This is easy to do with any two (R, G, or B) colors, but what is the correct mixture using all three? Paul Smith Internet: paul@amos.ling.ucsd.edu UUCP: ...ucbvax!sdcsvax!amos!paul
slg3x@cc.usu.edu (04/09/91)
Hi X-folks, Could you take a look my portion of codes? I can not draw the color I want; I just got all "white" color. Did I make some mistake in somewhere? I wonder I didn't create a correct colormap. I used the following method to create pallete (colormap). Does it has anything wrong? Please mail to me directly. Thanks in advance. Kchen kchen@nit.cs.usu.edu --------------------------------------------------------------------------- vTemplate.screen = myscreen; vTemplate.colormap_size = 256; vTemplate.depth = 8; visualList = XGetVisualInfo (mydisplay, VisualScreenMask | VisualDepthMask, &vTemplate, &visualsMatched); if ((visualsMatched == 0) && (visualList != NULL)) { printf("FATAL ERROR\n"); exit(0); } /* Set up window attributes */ attributes.background_pixel = mybackground; attribute_mask = CWBackPixel | CWBorderPixel | CWEventMask; /* colormap creation */ colormap1 = XCreateColormap (mydisplay, RootWindow(mydisplay, myscreen), visualList[0].visual, AllocNone); /* allocate four colors in palette and each color has 65 indexes */ if (XAllocColorCells(mydisplay, colormap1, True, NULL, 0, cells, 256)) { /* pink */ color[0].red = 62207; color[0].green = 9; color[0].blue = 8351; color[0].flags = DoRed | DoGreen | DoBlue; for (i = 0; i < 65; i++) { color[i].pixel = cells[i]; color[i].red -= 971.984375; color[i].green -= 0.140625; color[i].blue -= 130.484375; color[i].flags = DoRed | DoGreen | DoBlue; } ... ... ... color[193].red = 2047; color[193].green = 65535; color[193].blue = 17477; color[193].flags = DoRed | DoGreen | DoBlue; for (i = 193; i < 256; i++) { color[i].pixel = cells[i]; color[i].red -= 31.984375; color[i].green -= 1023.9844; color[i].blue -= 273.078125; color[i].flags = DoRed | DoGreen | DoBlue; } XStoreColors(mydisplay, colormap1, color, 256);*/ XSetWindowColormap(mydisplay, mywindow, colormap1); XFree(visualList); } else printf("Warnning: Couldn't allocate color cells\n"); ... ... .. /* test what's the color looking */. for (i = 0; i < 256; i++) { XSetForeground(mydisplay, mygc, color[i].pixel); for (k = 0; k < 3; k++) for (j = 0; j < 256; j++) XDrawPoint(mydisplay, mywindow, mygc, m+k, j); m += 3; }
marra@samuel.enet.dec.com (Dave Marra) (04/10/91)
A couple of things: First, you never installed the colormap that you created: Second, .red, .green, and .blue are unsigned shorts, not floats. Beyond that I can't see anything else violently wrong. However, I don't recommend creating your own colormap unless you like to see things go technicolor when your colormap is installed. .dave.