diff --git a/configure.ac b/configure.ac index 9acfe86a..2b4f3477 100644 --- a/configure.ac +++ b/configure.ac @@ -428,7 +428,7 @@ XCFLAGS="$X_CFLAGS" XLFLAGS="$X_LIBS" -XLIBS="-lX11 $X_EXTRA_LIBS" +XLIBS="-lX11 -lXmu $X_EXTRA_LIBS" lib_search_path="$lib_search_path $XLFLAGS" diff --git a/wrlib/CmapAlloc.c b/wrlib/CmapAlloc.c deleted file mode 100644 index 60b14e57..00000000 --- a/wrlib/CmapAlloc.c +++ /dev/null @@ -1,325 +0,0 @@ -/* $XConsortium: CmapAlloc.c,v 1.9 94/04/17 20:15:52 rws Exp $ */ - -/* - -Copyright (c) 1989, 1994 X Consortium - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the X Consortium shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from the X Consortium. - -*/ - -/* - * Author: Donna Converse, MIT X Consortium - */ - -#include -#include -#include -#include - -#define lowbit(x) ((x) & (~(x) + 1)) - -static int default_allocation(); -static void best_allocation(); -static void gray_allocation(); -static int icbrt(); -static int icbrt_with_bits(); -static int icbrt_with_guess(); - -/* To determine the best allocation of reds, greens, and blues in a - * standard colormap, use XmuGetColormapAllocation. - * vinfo specifies visual information for a chosen visual - * property specifies one of the standard colormap property names - * red_max returns maximum red value - * green_max returns maximum green value - * blue_max returns maximum blue value - * - * XmuGetColormapAllocation returns 0 on failure, non-zero on success. - * It is assumed that the visual is appropriate for the colormap property. - */ - -Status XmuGetColormapAllocation(vinfo, property, red_max, green_max, blue_max) -XVisualInfo *vinfo; -Atom property; -unsigned long *red_max, *green_max, *blue_max; -{ - Status status = 1; - - if (vinfo->colormap_size <= 2) - return 0; - - switch (property) { - case XA_RGB_DEFAULT_MAP: - status = default_allocation(vinfo, red_max, green_max, blue_max); - break; - case XA_RGB_BEST_MAP: - best_allocation(vinfo, red_max, green_max, blue_max); - break; - case XA_RGB_GRAY_MAP: - gray_allocation(vinfo->colormap_size, red_max, green_max, blue_max); - break; - case XA_RGB_RED_MAP: - *red_max = vinfo->colormap_size - 1; - *green_max = *blue_max = 0; - break; - case XA_RGB_GREEN_MAP: - *green_max = vinfo->colormap_size - 1; - *red_max = *blue_max = 0; - break; - case XA_RGB_BLUE_MAP: - *blue_max = vinfo->colormap_size - 1; - *red_max = *green_max = 0; - break; - default: - status = 0; - } - return status; -} - -/****************************************************************************/ -/* Determine the appropriate color allocations of a gray scale. - * - * Keith Packard, MIT X Consortium - */ - -static void gray_allocation(n, red_max, green_max, blue_max) -int n; /* the number of cells of the gray scale */ -unsigned long *red_max, *green_max, *blue_max; -{ - *red_max = (n * 30) / 100; - *green_max = (n * 59) / 100; - *blue_max = (n * 11) / 100; - *green_max += ((n - 1) - (*red_max + *green_max + *blue_max)); -} - -/****************************************************************************/ -/* Determine an appropriate color allocation for the RGB_DEFAULT_MAP. - * If a map has less than a minimum number of definable entries, we do not - * produce an allocation for an RGB_DEFAULT_MAP. - * - * For 16 planes, the default colormap will have 27 each RGB; for 12 planes, - * 12 each. For 8 planes, let n = the number of colormap entries, which may - * be 256 or 254. Then, maximum red value = floor(cube_root(n - 125)) - 1. - * Maximum green and maximum blue values are identical to maximum red. - * This leaves at least 125 cells which clients can allocate. - * - * Return 0 if an allocation has been determined, non-zero otherwise. - */ - -static int default_allocation(vinfo, red, green, blue) -XVisualInfo *vinfo; -unsigned long *red, *green, *blue; -{ - int ngrays; /* number of gray cells */ - - switch (vinfo->class) { - case PseudoColor: - - if (vinfo->colormap_size > 65000) - /* intended for displays with 16 planes */ - *red = *green = *blue = (unsigned long)27; - else if (vinfo->colormap_size > 4000) - /* intended for displays with 12 planes */ - *red = *green = *blue = (unsigned long)12; - else if (vinfo->colormap_size < 250) - return 0; - else - /* intended for displays with 8 planes */ - *red = *green = *blue = (unsigned long) - (icbrt(vinfo->colormap_size - 125) - 1); - break; - - case DirectColor: - - if (vinfo->colormap_size < 10) - return 0; - *red = *green = *blue = vinfo->colormap_size / 2 - 1; - break; - - case TrueColor: - - *red = vinfo->red_mask / lowbit(vinfo->red_mask); - *green = vinfo->green_mask / lowbit(vinfo->green_mask); - *blue = vinfo->blue_mask / lowbit(vinfo->blue_mask); - break; - - case GrayScale: - - if (vinfo->colormap_size > 65000) - ngrays = 4096; - else if (vinfo->colormap_size > 4000) - ngrays = 512; - else if (vinfo->colormap_size < 250) - return 0; - else - ngrays = 12; - gray_allocation(ngrays, red, green, blue); - break; - - default: - return 0; - } - return 1; -} - -/****************************************************************************/ -/* Determine an appropriate color allocation for the RGB_BEST_MAP. - * - * For a DirectColor or TrueColor visual, the allocation is determined - * by the red_mask, green_mask, and blue_mask members of the visual info. - * - * Otherwise, if the colormap size is an integral power of 2, determine - * the allocation according to the number of bits given to each color, - * with green getting more than red, and red more than blue, if there - * are to be inequities in the distribution. If the colormap size is - * not an integral power of 2, let n = the number of colormap entries. - * Then maximum red value = floor(cube_root(n)) - 1; - * maximum blue value = floor(cube_root(n)) - 1; - * maximum green value = n / ((# red values) * (# blue values)) - 1; - * Which, on a GPX, allows for 252 entries in the best map, out of 254 - * defineable colormap entries. - */ - -static void best_allocation(vinfo, red, green, blue) -XVisualInfo *vinfo; -unsigned long *red, *green, *blue; -{ - - if (vinfo->class == DirectColor || vinfo->class == TrueColor) { - *red = vinfo->red_mask; - while ((*red & 01) == 0) - *red >>= 1; - *green = vinfo->green_mask; - while ((*green & 01) == 0) - *green >>= 1; - *blue = vinfo->blue_mask; - while ((*blue & 01) == 0) - *blue >>= 1; - } else { - register int bits, n; - - /* Determine n such that n is the least integral power of 2 which is - * greater than or equal to the number of entries in the colormap. - */ - n = 1; - bits = 0; - while (vinfo->colormap_size > n) { - n = n << 1; - bits++; - } - - /* If the number of entries in the colormap is a power of 2, determine - * the allocation by "dealing" the bits, first to green, then red, then - * blue. If not, find the maximum integral red, green, and blue values - * which, when multiplied together, do not exceed the number of - - * colormap entries. - */ - if (n == vinfo->colormap_size) { - register int r, g, b; - b = bits / 3; - g = b + ((bits % 3) ? 1 : 0); - r = b + (((bits % 3) == 2) ? 1 : 0); - *red = 1 << r; - *green = 1 << g; - *blue = 1 << b; - } else { - *red = icbrt_with_bits(vinfo->colormap_size, bits); - *blue = *red; - *green = (vinfo->colormap_size / ((*red) * (*blue))); - } - (*red)--; - (*green)--; - (*blue)--; - } - return; -} - -/* - * integer cube roots by Newton's method - * - * Stephen Gildea, MIT X Consortium, July 1991 - */ - -static int icbrt(a) /* integer cube root */ -int a; -{ - register int bits = 0; - register unsigned n = a; - - while (n) { - bits++; - n >>= 1; - } - return icbrt_with_bits(a, bits); -} - -static int icbrt_with_bits(a, bits) -int a; -int bits; /* log 2 of a */ -{ - return icbrt_with_guess(a, a >> 2 * bits / 3); -} - -#ifdef DEBUG -int icbrt_loopcount; -#endif - -/* Newton's Method: x_n+1 = x_n - ( f(x_n) / f'(x_n) ) */ - -/* for cube roots, x^3 - a = 0, x_new = x - 1/3 (x - a/x^2) */ - -/* - * Quick and dirty cube roots. Nothing fancy here, just Newton's method. - * Only works for positive integers (since that's all we need). - * We actually return floor(cbrt(a)) because that's what we need here, too. - */ - -static int icbrt_with_guess(a, guess) -int a, guess; -{ - register int delta; - -#ifdef DEBUG - icbrt_loopcount = 0; -#endif - if (a <= 0) - return 0; - if (guess < 1) - guess = 1; - - do { -#ifdef DEBUG - icbrt_loopcount++; -#endif - delta = (guess - a / (guess * guess)) / 3; -#ifdef DEBUG - printf("pass %d: guess=%d, delta=%d\n", icbrt_loopcount, guess, delta); -#endif - guess -= delta; - } while (delta != 0); - - if (guess * guess * guess > a) - guess--; - - return guess; -} diff --git a/wrlib/CrCmap.c b/wrlib/CrCmap.c deleted file mode 100644 index fca9d34e..00000000 --- a/wrlib/CrCmap.c +++ /dev/null @@ -1,484 +0,0 @@ -/* $XConsortium: CrCmap.c,v 1.6 94/04/17 20:15:53 rws Exp $ */ - -/* - -Copyright (c) 1989 X Consortium - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the X Consortium shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from the X Consortium. - -*/ - -/* - * Author: Donna Converse, MIT X Consortium - */ - -/* - * CreateCmap.c - given a standard colormap description, make the map. - */ - -#include -#include -#include -#include - -static int ROmap(); /* allocate entire map Read Only */ -static Status ROorRWcell(); /* allocate a cell, prefer Read Only */ -static Status RWcell(); /* allocate a cell Read Write */ -static int compare(); /* for quicksort */ -static Status contiguous(); /* find contiguous sequence of cells */ -static void free_cells(); /* frees resources before quitting */ -static Status readonly_map(); /* create a map in a RO visual type */ -static Status readwrite_map(); /* create a map in a RW visual type */ - -#define lowbit(x) ((x) & (~(x) + 1)) -#define TRUEMATCH(mult,max,mask) \ - (colormap->max * colormap->mult <= vinfo->mask && \ - lowbit(vinfo->mask) == colormap->mult) - -/* - * To create any one colormap which is described by an XStandardColormap - * structure, use XmuCreateColormap(). - * - * Return 0 on failure, non-zero on success. - * Resources created by this function are not made permanent. - * No argument error checking is provided. Use at your own risk. - * - * All colormaps are created with read only allocations, with the exception - * of read only allocations of colors in the default map or otherwise - * which fail to return the expected pixel value, and these are individually - * defined as read/write allocations. This is done so that all the cells - * defined in the default map are contiguous, for use in image processing. - * This typically happens with White and Black in the default map. - * - * Colormaps of static visuals are considered to be successfully created if - * the map of the static visual matches the definition given in the - * standard colormap structure. - */ - -Status XmuCreateColormap(dpy, colormap) -Display *dpy; /* specifies the connection under - * which the map is created */ -XStandardColormap *colormap; /* specifies the map to be created, - * and returns, particularly if the - * map is created as a subset of the - * default colormap of the screen, - * the base_pixel of the map. - */ -{ - XVisualInfo vinfo_template; /* template visual information */ - XVisualInfo *vinfo; /* matching visual information */ - XVisualInfo *vpointer; /* for freeing the entire list */ - long vinfo_mask; /* specifies the visual mask value */ - int n; /* number of matching visuals */ - int status; - - vinfo_template.visualid = colormap->visualid; - vinfo_mask = VisualIDMask; - if ((vinfo = XGetVisualInfo(dpy, vinfo_mask, &vinfo_template, &n)) == NULL) - return 0; - - /* A visual id may be valid on multiple screens. Also, there may - * be multiple visuals with identical visual ids at different depths. - * If the colormap is the Default Colormap, use the Default Visual. - * Otherwise, arbitrarily, use the deepest visual. - */ - vpointer = vinfo; - if (n > 1) { - register int i; - register int screen_number; - Bool def_cmap; - - def_cmap = False; - for (screen_number = ScreenCount(dpy); --screen_number >= 0;) - if (colormap->colormap == DefaultColormap(dpy, screen_number)) { - def_cmap = True; - break; - } - - if (def_cmap) { - for (i = 0; i < n; i++, vinfo++) { - if (vinfo->visual == DefaultVisual(dpy, screen_number)) - break; - } - } else { - unsigned int maxdepth = 0; - XVisualInfo *v = vinfo; - - for (i = 0; i < n; i++, vinfo++) - if (vinfo->depth > maxdepth) { - maxdepth = vinfo->depth; - v = vinfo; - } - vinfo = v; - } - } - - if (vinfo->class == PseudoColor || vinfo->class == DirectColor || vinfo->class == GrayScale) - status = readwrite_map(dpy, vinfo, colormap); - else if (vinfo->class == TrueColor) - status = TRUEMATCH(red_mult, red_max, red_mask) && - TRUEMATCH(green_mult, green_max, green_mask) && TRUEMATCH(blue_mult, blue_max, blue_mask); - else - status = readonly_map(dpy, vinfo, colormap); - - XFree((char *)vpointer); - return status; -} - -/****************************************************************************/ -static Status readwrite_map(dpy, vinfo, colormap) -Display *dpy; -XVisualInfo *vinfo; -XStandardColormap *colormap; -{ - register unsigned long i, n; /* index counters */ - int ncolors; /* number of colors to be defined */ - int npixels; /* number of pixels allocated R/W */ - int first_index; /* first index of pixels to use */ - int remainder; /* first index of remainder */ - XColor color; /* the definition of a color */ - unsigned long *pixels; /* array of colormap pixels */ - unsigned long delta; - - /* Determine ncolors, the number of colors to be defined. - * Insure that 1 < ncolors <= the colormap size. - */ - if (vinfo->class == DirectColor) { - ncolors = colormap->red_max; - if (colormap->green_max > ncolors) - ncolors = colormap->green_max; - if (colormap->blue_max > ncolors) - ncolors = colormap->blue_max; - ncolors++; - delta = lowbit(vinfo->red_mask) + lowbit(vinfo->green_mask) + lowbit(vinfo->blue_mask); - } else { - ncolors = colormap->red_max * colormap->red_mult + - colormap->green_max * colormap->green_mult + colormap->blue_max * colormap->blue_mult + 1; - delta = 1; - } - if (ncolors <= 1 || ncolors > vinfo->colormap_size) - return 0; - - /* Allocate Read/Write as much of the colormap as we can possibly get. - * Then insure that the pixels we were allocated are given in - * monotonically increasing order, using a quicksort. Next, insure - * that our allocation includes a subset of contiguous pixels at least - * as long as the number of colors to be defined. Now we know that - * these conditions are met: - * 1) There are no free cells in the colormap. - * 2) We have a contiguous sequence of pixels, monotonically - * increasing, of length >= the number of colors requested. - * - * One cell at a time, we will free, compute the next color value, - * then allocate read only. This takes a long time. - * This is done to insure that cells are allocated read only in the - * contiguous order which we prefer. If the server has a choice of - * cells to grant to an allocation request, the server may give us any - * cell, so that is why we do these slow gymnastics. - */ - - if ((pixels = (unsigned long *)calloc((unsigned)vinfo->colormap_size, sizeof(unsigned long))) == NULL) - return 0; - - if ((npixels = ROmap(dpy, colormap->colormap, pixels, vinfo->colormap_size, ncolors)) == 0) { - free((char *)pixels); - return 0; - } - - qsort((char *)pixels, npixels, sizeof(unsigned long), compare); - - if (!contiguous(pixels, npixels, ncolors, delta, &first_index, &remainder)) { - /* can't find enough contiguous cells, give up */ - XFreeColors(dpy, colormap->colormap, pixels, npixels, (unsigned long)0); - free((char *)pixels); - return 0; - } - colormap->base_pixel = pixels[first_index]; - - /* construct a gray map */ - if (colormap->red_mult == 1 && colormap->green_mult == 1 && colormap->blue_mult == 1) - for (n = colormap->base_pixel, i = 0; i < ncolors; i++, n += delta) { - color.pixel = n; - color.blue = color.green = color.red = - (unsigned short)((i * 65535) / (colormap->red_max + - colormap->green_max + colormap->blue_max)); - - if (!ROorRWcell(dpy, colormap->colormap, pixels, npixels, &color, first_index + i)) - return 0; - } - - /* construct a red ramp map */ - else if (colormap->green_max == 0 && colormap->blue_max == 0) - for (n = colormap->base_pixel, i = 0; i < ncolors; i++, n += delta) { - color.pixel = n; - color.red = (unsigned short)((i * 65535) / colormap->red_max); - color.green = color.blue = 0; - - if (!ROorRWcell(dpy, colormap->colormap, pixels, npixels, &color, first_index + i)) - return 0; - } - - /* construct a green ramp map */ - else if (colormap->red_max == 0 && colormap->blue_max == 0) - for (n = colormap->base_pixel, i = 0; i < ncolors; i++, n += delta) { - color.pixel = n; - color.green = (unsigned short)((i * 65535) / colormap->green_max); - color.red = color.blue = 0; - - if (!ROorRWcell(dpy, colormap->colormap, pixels, npixels, &color, first_index + i)) - return 0; - } - - /* construct a blue ramp map */ - else if (colormap->red_max == 0 && colormap->green_max == 0) - for (n = colormap->base_pixel, i = 0; i < ncolors; i++, n += delta) { - color.pixel = n; - color.blue = (unsigned short)((i * 65535) / colormap->blue_max); - color.red = color.green = 0; - - if (!ROorRWcell(dpy, colormap->colormap, pixels, npixels, &color, first_index + i)) - return 0; - } - - /* construct a standard red green blue cube map */ - else { -#define calc(max,mult) (((n / colormap->mult) % \ - (colormap->max + 1)) * 65535) / colormap->max - - for (n = 0, i = 0; i < ncolors; i++, n += delta) { - color.pixel = n + colormap->base_pixel; - color.red = calc(red_max, red_mult); - color.green = calc(green_max, green_mult); - color.blue = calc(blue_max, blue_mult); - if (!ROorRWcell(dpy, colormap->colormap, pixels, npixels, &color, first_index + i)) - return 0; - } -#undef calc - } - /* We have a read-only map defined. Now free unused cells, - * first those occuring before the contiguous sequence begins, - * then any following the contiguous sequence. - */ - - if (first_index) - XFreeColors(dpy, colormap->colormap, pixels, first_index, (unsigned long)0); - if (remainder) - XFreeColors(dpy, colormap->colormap, - &(pixels[first_index + ncolors]), remainder, (unsigned long)0); - - free((char *)pixels); - return 1; -} - -/****************************************************************************/ -static int ROmap(dpy, cmap, pixels, m, n) -Display *dpy; /* the X server connection */ -Colormap cmap; /* specifies colormap ID */ -unsigned long pixels[]; /* returns pixel allocations */ -int m; /* specifies colormap size */ -int n; /* specifies number of colors */ -{ - register int p; - - /* first try to allocate the entire colormap */ - if (XAllocColorCells(dpy, cmap, 1, (unsigned long *)NULL, (unsigned)0, pixels, (unsigned)m)) - return m; - - /* Allocate all available cells in the colormap, using a binary - * algorithm to discover how many cells we can allocate in the colormap. - */ - m--; - while (n <= m) { - p = n + ((m - n + 1) / 2); - if (XAllocColorCells(dpy, cmap, 1, (unsigned long *)NULL, (unsigned)0, pixels, (unsigned)p)) { - if (p == m) - return p; - else { - XFreeColors(dpy, cmap, pixels, p, (unsigned long)0); - n = p; - } - } else - m = p - 1; - } - return 0; -} - -/****************************************************************************/ -static Status contiguous(pixels, npixels, ncolors, delta, first, rem) -unsigned long pixels[]; /* specifies allocated pixels */ -int npixels; /* specifies count of alloc'd pixels */ -int ncolors; /* specifies needed sequence length */ -unsigned long delta; /* between pixels */ -int *first; /* returns first index of sequence */ -int *rem; /* returns first index after sequence, - * or 0, if none follow */ -{ - register int i = 1; /* walking index into the pixel array */ - register int count = 1; /* length of sequence discovered so far */ - - *first = 0; - if (npixels == ncolors) { - *rem = 0; - return 1; - } - *rem = npixels - 1; - while (count < ncolors && ncolors - count <= *rem) { - if (pixels[i - 1] + delta == pixels[i]) - count++; - else { - count = 1; - *first = i; - } - i++; - (*rem)--; - } - if (count != ncolors) - return 0; - return 1; -} - -/****************************************************************************/ -static Status ROorRWcell(dpy, cmap, pixels, npixels, color, p) -Display *dpy; -Colormap cmap; -unsigned long pixels[]; -int npixels; -XColor *color; -unsigned long p; -{ - unsigned long pixel; - XColor request; - - /* Free the read/write allocation of one cell in the colormap. - * Request a read only allocation of one cell in the colormap. - * If the read only allocation cannot be granted, give up, because - * there must be no free cells in the colormap. - * If the read only allocation is granted, but gives us a cell which - * is not the one that we just freed, it is probably the case that - * we are trying allocate White or Black or some other color which - * already has a read-only allocation in the map. So we try to - * allocate the previously freed cell with a read/write allocation, - * because we want contiguous cells for image processing algorithms. - */ - - pixel = color->pixel; - request.red = color->red; - request.green = color->green; - request.blue = color->blue; - - XFreeColors(dpy, cmap, &pixel, 1, (unsigned long)0); - if (!XAllocColor(dpy, cmap, color) - || (color->pixel != pixel && (!RWcell(dpy, cmap, color, &request, &pixel)))) { - free_cells(dpy, cmap, pixels, npixels, (int)p); - return 0; - } - return 1; -} - -/****************************************************************************/ -static void free_cells(dpy, cmap, pixels, npixels, p) -Display *dpy; -Colormap cmap; -unsigned long pixels[]; /* to be freed */ -int npixels; /* original number allocated */ -int p; -{ - /* One of the npixels allocated has already been freed. - * p is the index of the freed pixel. - * First free the pixels preceeding p, and there are p of them; - * then free the pixels following p, there are npixels - p - 1 of them. - */ - XFreeColors(dpy, cmap, pixels, p, (unsigned long)0); - XFreeColors(dpy, cmap, &(pixels[p + 1]), npixels - p - 1, (unsigned long)0); - free((char *)pixels); -} - -/****************************************************************************/ -static Status RWcell(dpy, cmap, color, request, pixel) -Display *dpy; -Colormap cmap; -XColor *color; -XColor *request; -unsigned long *pixel; -{ - unsigned long n = *pixel; - - XFreeColors(dpy, cmap, &(color->pixel), 1, (unsigned long)0); - if (!XAllocColorCells(dpy, cmap, (Bool) 0, (unsigned long *)NULL, (unsigned)0, pixel, (unsigned)1)) - return 0; - if (*pixel != n) { - XFreeColors(dpy, cmap, pixel, 1, (unsigned long)0); - return 0; - } - color->pixel = *pixel; - color->flags = DoRed | DoGreen | DoBlue; - color->red = request->red; - color->green = request->green; - color->blue = request->blue; - XStoreColors(dpy, cmap, color, 1); - return 1; -} - -/****************************************************************************/ -static int compare(e1, e2) -unsigned long *e1, *e2; -{ - if (*e1 < *e2) - return -1; - if (*e1 > *e2) - return 1; - return 0; -} - -/****************************************************************************/ -static Status readonly_map(dpy, vinfo, colormap) -Display *dpy; -XVisualInfo *vinfo; -XStandardColormap *colormap; -{ - int i, last_pixel; - XColor color; - - last_pixel = (colormap->red_max + 1) * (colormap->green_max + 1) * - (colormap->blue_max + 1) + colormap->base_pixel - 1; - - for (i = colormap->base_pixel; i <= last_pixel; i++) { - - color.pixel = (unsigned long)i; - color.red = (unsigned short) - (((i / colormap->red_mult) * 65535) / colormap->red_max); - - if (vinfo->class == StaticColor) { - color.green = (unsigned short) - ((((i / colormap->green_mult) % (colormap->green_max + 1)) * - 65535) / colormap->green_max); - color.blue = (unsigned short) - (((i % colormap->green_mult) * 65535) / colormap->blue_max); - } else /* vinfo->class == GrayScale, old style allocation XXX */ - color.green = color.blue = color.red; - - XAllocColor(dpy, colormap->colormap, &color); - if (color.pixel != (unsigned long)i) - return 0; - } - return 1; -} diff --git a/wrlib/DelCmap.c b/wrlib/DelCmap.c deleted file mode 100644 index 1ef6dbda..00000000 --- a/wrlib/DelCmap.c +++ /dev/null @@ -1,63 +0,0 @@ -/* $XConsortium: DelCmap.c,v 1.2 94/04/17 20:15:58 converse Exp $ */ - -/* - -Copyright (c) 1989 X Consortium - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the X Consortium shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from the X Consortium. - -*/ - -/* - * Author: Donna Converse, MIT X Consortium - */ - -#include -#include - -/* To remove any standard colormap property, use XmuDeleteStandardColormap(). - * XmuDeleteStandardColormap() will remove the specified property from the - * specified screen, releasing any resources used by the colormap(s) of the - * property if possible. - */ - -void XmuDeleteStandardColormap(dpy, screen, property) -Display *dpy; /* specifies the X server to connect to */ -int screen; /* specifies the screen of the display */ -Atom property; /* specifies the standard colormap property */ -{ - XStandardColormap *stdcmaps, *s; - int count = 0; - - if (XGetRGBColormaps(dpy, RootWindow(dpy, screen), &stdcmaps, &count, property)) { - for (s = stdcmaps; count > 0; count--, s++) { - if ((s->killid == ReleaseByFreeingColormap) && - (s->colormap != None) && (s->colormap != DefaultColormap(dpy, screen))) - XFreeColormap(dpy, s->colormap); - else if (s->killid != None) - XKillClient(dpy, s->killid); - } - XDeleteProperty(dpy, RootWindow(dpy, screen), property); - XFree((char *)stdcmaps); - XSync(dpy, False); - } -} diff --git a/wrlib/LookupCmap.c b/wrlib/LookupCmap.c deleted file mode 100644 index e66dfd08..00000000 --- a/wrlib/LookupCmap.c +++ /dev/null @@ -1,298 +0,0 @@ -/* $XConsortium: LookupCmap.c,v 1.10 94/04/17 20:16:11 rws Exp $ */ - -/* - -Copyright (c) 1989 X Consortium - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the X Consortium shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from the X Consortium. - -*/ - -/* - * Author: Donna Converse, MIT X Consortium - */ - -#include -#include -#include -#include -#include -#include "StdCmap.h" - -static Status lookup(); - -/* - * To create a standard colormap if one does not currently exist, or - * replace the currently existing standard colormap, use - * XmuLookupStandardColormap(). - * - * Given a screen, a visual, and a property, XmuLookupStandardColormap() - * will determine the best allocation for the property under the specified - * visual, and determine the whether to create a new colormap or to use - * the default colormap of the screen. It will call XmuStandardColormap() - * to create the standard colormap. - * - * If replace is true, any previous definition of the property will be - * replaced. If retain is true, the property and the colormap will be - * made permanent for the duration of the server session. However, - * pre-existing property definitions which are not replaced cannot be made - * permanent by a call to XmuLookupStandardColormap(); a request to retain - * resources pertains to newly created resources. - * - * Returns 0 on failure, non-zero on success. A request to create a - * standard colormap upon a visual which cannot support such a map is - * considered a failure. An example of this would be requesting any - * standard colormap property on a monochrome visual, or, requesting an - * RGB_BEST_MAP on a display whose colormap size is 16. - */ - -Status XmuLookupStandardColormap(dpy, screen, visualid, depth, property, replace, retain) -Display *dpy; /* specifies X server connection */ -int screen; /* specifies screen of display */ -VisualID visualid; /* specifies the visual type */ -unsigned int depth; /* specifies the visual type */ -Atom property; /* a standard colormap property */ -Bool replace; /* specifies whether to replace */ -Bool retain; /* specifies whether to retain */ -{ - Display *odpy; /* original display connection */ - XStandardColormap *colormap; - XVisualInfo vinfo_template, *vinfo; /* visual */ - long vinfo_mask; - unsigned long r_max, g_max, b_max; /* allocation */ - int count; - Colormap cmap; /* colormap ID */ - Status status = 0; - - /* Match the requested visual */ - - vinfo_template.visualid = visualid; - vinfo_template.screen = screen; - vinfo_template.depth = depth; - vinfo_mask = VisualIDMask | VisualScreenMask | VisualDepthMask; - if ((vinfo = XGetVisualInfo(dpy, vinfo_mask, &vinfo_template, &count)) == NULL) - return 0; - - /* Monochrome visuals have no standard maps */ - - if (vinfo->colormap_size <= 2) { - XFree((char *)vinfo); - return 0; - } - - /* If the requested property already exists on this screen, and, - * if the replace flag has not been set to true, return success. - * lookup() will remove a pre-existing map if replace is true. - */ - - if (lookup(dpy, screen, visualid, property, (XStandardColormap *) NULL, replace) && !replace) { - XFree((char *)vinfo); - return 1; - } - - /* Determine the best allocation for this property under the requested - * visualid and depth, and determine whether or not to use the default - * colormap of the screen. - */ - - if (!XmuGetColormapAllocation(vinfo, property, &r_max, &g_max, &b_max)) { - XFree((char *)vinfo); - return 0; - } - - cmap = (property == XA_RGB_DEFAULT_MAP && visualid == XVisualIDFromVisual(DefaultVisual(dpy, screen))) - ? DefaultColormap(dpy, screen) : None; - - /* If retaining resources, open a new connection to the same server */ - - if (retain) { - odpy = dpy; - if ((dpy = XOpenDisplay(XDisplayString(odpy))) == NULL) { - XFree((char *)vinfo); - return 0; - } - } - - /* Create the standard colormap */ - - colormap = XmuStandardColormap(dpy, screen, visualid, depth, property, cmap, r_max, g_max, b_max); - - /* Set the standard colormap property */ - - if (colormap) { - XGrabServer(dpy); - - if (lookup(dpy, screen, visualid, property, colormap, replace) && !replace) { - /* Someone has defined the property since we last looked. - * Since we will not replace it, release our own resources. - * If this is the default map, our allocations will be freed - * when this connection closes. - */ - if (colormap->killid == ReleaseByFreeingColormap) - XFreeColormap(dpy, colormap->colormap); - } else if (retain) { - XSetCloseDownMode(dpy, RetainPermanent); - } - XUngrabServer(dpy); - XFree((char *)colormap); - status = 1; - } - - if (retain) - XCloseDisplay(dpy); - XFree((char *)vinfo); - return status; -} - -/***************************************************************************/ - -/* Lookup a standard colormap property. If the property is RGB_DEFAULT_MAP, - * the visualid is used to determine whether the indicated standard colormap - * exists. If the map exists and replace is true, delete the resources used - * by the map and remove the property. Return true if the map exists, - * or did exist and was deleted; return false if the map was not found. - * - * Note that this is not the way that a Status return is normally used. - * - * If new is not NULL, new points to an XStandardColormap structure which - * describes a standard colormap of the specified property. It will be made - * a standard colormap of the screen if none already exists, or if replace - * is true. - */ - -static Status lookup(dpy, screen, visualid, property, new, replace) -Display *dpy; /* specifies display connection */ -int screen; /* specifies screen number */ -VisualID visualid; /* specifies visualid for std map */ -Atom property; /* specifies colormap property name */ -XStandardColormap *new; /* specifies a standard colormap */ -Bool replace; /* specifies whether to replace */ -{ - register int i; - int count; - XStandardColormap *stdcmaps, *s; - Window win = RootWindow(dpy, screen); - - /* The property does not already exist */ - - if (!XGetRGBColormaps(dpy, win, &stdcmaps, &count, property)) { - if (new) - XSetRGBColormaps(dpy, win, new, 1, property); - return 0; - } - - /* The property exists and is not describing the RGB_DEFAULT_MAP */ - - if (property != XA_RGB_DEFAULT_MAP) { - if (replace) { - XmuDeleteStandardColormap(dpy, screen, property); - if (new) - XSetRGBColormaps(dpy, win, new, 1, property); - } - XFree((char *)stdcmaps); - return 1; - } - - /* The property exists and is RGB_DEFAULT_MAP */ - - for (i = 0, s = stdcmaps; (i < count) && (s->visualid != visualid); i++, s++) ; - - /* No RGB_DEFAULT_MAP property matches the given visualid */ - - if (i == count) { - if (new) { - XStandardColormap *m, *maps; - - s = (XStandardColormap *) malloc((unsigned)((count + 1) * sizeof(XStandardColormap))); - - for (i = 0, m = s, maps = stdcmaps; i < count; i++, m++, maps++) { - m->colormap = maps->colormap; - m->red_max = maps->red_max; - m->red_mult = maps->red_mult; - m->green_max = maps->green_max; - m->green_mult = maps->green_mult; - m->blue_max = maps->blue_max; - m->blue_mult = maps->blue_mult; - m->base_pixel = maps->base_pixel; - m->visualid = maps->visualid; - m->killid = maps->killid; - } - m->colormap = new->colormap; - m->red_max = new->red_max; - m->red_mult = new->red_mult; - m->green_max = new->green_max; - m->green_mult = new->green_mult; - m->blue_max = new->blue_max; - m->blue_mult = new->blue_mult; - m->base_pixel = new->base_pixel; - m->visualid = new->visualid; - m->killid = new->killid; - - XSetRGBColormaps(dpy, win, s, ++count, property); - free((char *)s); - } - XFree((char *)stdcmaps); - return 0; - } - - /* Found an RGB_DEFAULT_MAP property with a matching visualid */ - - if (replace) { - /* Free old resources first - we may need them, particularly in - * the default colormap of the screen. However, because of this, - * it is possible that we will destroy the old resource and fail - * to create a new one if XmuStandardColormap() fails. - */ - - if (count == 1) { - XmuDeleteStandardColormap(dpy, screen, property); - if (new) - XSetRGBColormaps(dpy, win, new, 1, property); - } else { - XStandardColormap *map; - - /* s still points to the matching standard colormap */ - - if (s->killid == ReleaseByFreeingColormap) { - if ((s->colormap != None) && (s->colormap != DefaultColormap(dpy, screen))) - XFreeColormap(dpy, s->colormap); - } else if (s->killid != None) - XKillClient(dpy, s->killid); - - map = (new) ? new : stdcmaps + --count; - - s->colormap = map->colormap; - s->red_max = map->red_max; - s->red_mult = map->red_mult; - s->green_max = map->green_max; - s->green_mult = map->green_mult; - s->blue_max = map->blue_max; - s->blue_mult = map->blue_mult; - s->visualid = map->visualid; - s->killid = map->killid; - - XSetRGBColormaps(dpy, win, stdcmaps, count, property); - } - } - XFree((char *)stdcmaps); - return 1; -} diff --git a/wrlib/Makefile.am b/wrlib/Makefile.am index a43b89b9..f376e504 100644 --- a/wrlib/Makefile.am +++ b/wrlib/Makefile.am @@ -15,12 +15,6 @@ bin_SCRIPTS = get-wraster-flags include_HEADERS = wraster.h libwraster_la_SOURCES = \ - LookupCmap.c \ - StdCmap.c \ - StdCmap.h \ - CrCmap.c \ - DelCmap.c \ - CmapAlloc.c \ raster.c \ draw.c \ color.c \ diff --git a/wrlib/StdCmap.c b/wrlib/StdCmap.c deleted file mode 100644 index 81a7e041..00000000 --- a/wrlib/StdCmap.c +++ /dev/null @@ -1,216 +0,0 @@ -/* $XConsortium: StdCmap.c,v 1.14 94/04/17 20:16:14 rws Exp $ */ - -/* - -Copyright (c) 1989 X Consortium - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the X Consortium shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from the X Consortium. - -*/ - -/* - * Author: Donna Converse, MIT X Consortium - */ - -#include -#include -#include -#include -#include "StdCmap.h" - -#define lowbit(x) ((x) & (~(x) + 1)) - -static Status valid_args(); /* argument restrictions */ - -/* - * To create any one standard colormap, use XmuStandardColormap(). - * - * Create a standard colormap for the given screen, visualid, and visual - * depth, with the given red, green, and blue maximum values, with the - * given standard property name. Return a pointer to an XStandardColormap - * structure which describes the newly created colormap, upon success. - * Upon failure, return NULL. - * - * XmuStandardColormap() calls XmuCreateColormap() to create the map. - * - * Resources created by this function are not made permanent; that is the - * caller's responsibility. - */ - -XStandardColormap *XmuStandardColormap(dpy, screen, visualid, depth, property, cmap, red_max, green_max, blue_max) -Display *dpy; /* specifies X server connection */ -int screen; /* specifies display screen */ -VisualID visualid; /* identifies the visual type */ -unsigned int depth; /* identifies the visual type */ -Atom property; /* a standard colormap property */ -Colormap cmap; /* specifies colormap ID or None */ -unsigned long red_max, green_max, blue_max; /* allocations */ -{ - XStandardColormap *stdcmap; - Status status; - XVisualInfo vinfo_template, *vinfo; - long vinfo_mask; - int n; - - /* Match the required visual information to an actual visual */ - vinfo_template.visualid = visualid; - vinfo_template.screen = screen; - vinfo_template.depth = depth; - vinfo_mask = VisualIDMask | VisualScreenMask | VisualDepthMask; - if ((vinfo = XGetVisualInfo(dpy, vinfo_mask, &vinfo_template, &n)) == NULL) - return 0; - - /* Check the validity of the combination of visual characteristics, - * allocation, and colormap property. Create an XStandardColormap - * structure. - */ - - if (!valid_args(vinfo, red_max, green_max, blue_max, property) - || ((stdcmap = XAllocStandardColormap()) == NULL)) { - XFree((char *)vinfo); - return 0; - } - - /* Fill in the XStandardColormap structure */ - - if (cmap == DefaultColormap(dpy, screen)) { - /* Allocating out of the default map, cannot use XFreeColormap() */ - Window win = XCreateWindow(dpy, RootWindow(dpy, screen), 1, 1, 1, 1, - 0, 0, InputOnly, vinfo->visual, - (unsigned long)0, - (XSetWindowAttributes *) NULL); - stdcmap->killid = (XID) XCreatePixmap(dpy, win, 1, 1, depth); - XDestroyWindow(dpy, win); - stdcmap->colormap = cmap; - } else { - stdcmap->killid = ReleaseByFreeingColormap; - stdcmap->colormap = XCreateColormap(dpy, RootWindow(dpy, screen), vinfo->visual, AllocNone); - } - stdcmap->red_max = red_max; - stdcmap->green_max = green_max; - stdcmap->blue_max = blue_max; - if (property == XA_RGB_GRAY_MAP) - stdcmap->red_mult = stdcmap->green_mult = stdcmap->blue_mult = 1; - else if (vinfo->class == TrueColor || vinfo->class == DirectColor) { - stdcmap->red_mult = lowbit(vinfo->red_mask); - stdcmap->green_mult = lowbit(vinfo->green_mask); - stdcmap->blue_mult = lowbit(vinfo->blue_mask); - } else { - stdcmap->red_mult = (red_max > 0) - ? (green_max + 1) * (blue_max + 1) : 0; - stdcmap->green_mult = (green_max > 0) ? blue_max + 1 : 0; - stdcmap->blue_mult = (blue_max > 0) ? 1 : 0; - } - stdcmap->base_pixel = 0; /* base pixel may change */ - stdcmap->visualid = vinfo->visualid; - - /* Make the colormap */ - - status = XmuCreateColormap(dpy, stdcmap); - - /* Clean up */ - - XFree((char *)vinfo); - if (!status) { - - /* Free the colormap or the pixmap, if we created one */ - if (stdcmap->killid == ReleaseByFreeingColormap) - XFreeColormap(dpy, stdcmap->colormap); - else if (stdcmap->killid != None) - XFreePixmap(dpy, stdcmap->killid); - - XFree((char *)stdcmap); - return (XStandardColormap *) NULL; - } - return stdcmap; -} - -/****************************************************************************/ -static Status valid_args(vinfo, red_max, green_max, blue_max, property) -XVisualInfo *vinfo; /* specifies visual */ -unsigned long red_max, green_max, blue_max; /* specifies alloc */ -Atom property; /* specifies property name */ -{ - unsigned long ncolors; /* number of colors requested */ - - /* Determine that the number of colors requested is <= map size */ - - if ((vinfo->class == DirectColor) || (vinfo->class == TrueColor)) { - unsigned long mask; - - mask = vinfo->red_mask; - while (!(mask & 1)) - mask >>= 1; - if (red_max > mask) - return 0; - mask = vinfo->green_mask; - while (!(mask & 1)) - mask >>= 1; - if (green_max > mask) - return 0; - mask = vinfo->blue_mask; - while (!(mask & 1)) - mask >>= 1; - if (blue_max > mask) - return 0; - } else if (property == XA_RGB_GRAY_MAP) { - ncolors = red_max + green_max + blue_max + 1; - if (ncolors > vinfo->colormap_size) - return 0; - } else { - ncolors = (red_max + 1) * (green_max + 1) * (blue_max + 1); - if (ncolors > vinfo->colormap_size) - return 0; - } - - /* Determine that the allocation and visual make sense for the property */ - - switch (property) { - case XA_RGB_DEFAULT_MAP: - if (red_max == 0 || green_max == 0 || blue_max == 0) - return 0; - break; - case XA_RGB_RED_MAP: - if (red_max == 0) - return 0; - break; - case XA_RGB_GREEN_MAP: - if (green_max == 0) - return 0; - break; - case XA_RGB_BLUE_MAP: - if (blue_max == 0) - return 0; - break; - case XA_RGB_BEST_MAP: - if (red_max == 0 || green_max == 0 || blue_max == 0) - return 0; - break; - case XA_RGB_GRAY_MAP: - if (red_max == 0 || blue_max == 0 || green_max == 0) - return 0; - break; - default: - return 0; - } - return 1; -} diff --git a/wrlib/StdCmap.h b/wrlib/StdCmap.h deleted file mode 100644 index a1cdd2e7..00000000 --- a/wrlib/StdCmap.h +++ /dev/null @@ -1,112 +0,0 @@ -/* $XConsortium: StdCmap.h,v 1.4 94/04/17 20:16:15 converse Exp $ */ - -/* - -Copyright (c) 1988 X Consortium - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the X Consortium shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from the X Consortium. - -*/ - -/* - * The interfaces described by this header file are for miscellaneous utilities - * and are not part of the Xlib standard. - */ - -#ifndef _XMU_STDCMAP_H_ -#define _XMU_STDCMAP_H_ - -#include - -_XFUNCPROTOBEGIN - -Status XmuAllStandardColormaps( -#if NeedFunctionPrototypes - Display* /* dpy */ -#endif -); - -Status XmuCreateColormap( -#if NeedFunctionPrototypes - Display* /* dpy */, - XStandardColormap* /* colormap */ -#endif -); - -void XmuDeleteStandardColormap( -#if NeedFunctionPrototypes - Display* /* dpy */, - int /* screen */, - Atom /* property */ -#endif -); - -Status XmuGetColormapAllocation( -#if NeedFunctionPrototypes - XVisualInfo* /* vinfo */, - Atom /* property */, - unsigned long* /* red_max_return */, - unsigned long* /* green_max_return */, - unsigned long* /* blue_max_return */ -#endif -); - -Status XmuLookupStandardColormap( -#if NeedFunctionPrototypes - Display* /* dpy */, - int /* screen */, - VisualID /* visualid */, - unsigned int /* depth */, - Atom /* property */, - Bool /* replace */, - Bool /* retain */ -#endif -); - -XStandardColormap *XmuStandardColormap( -#if NeedFunctionPrototypes - Display* /* dpy */, - int /* screen */, - VisualID /* visualid */, - unsigned int /* depth */, - Atom /* property */, - Colormap /* cmap */, - unsigned long /* red_max */, - unsigned long /* green_max */, - unsigned long /* blue_max */ -#endif -); - -Status XmuVisualStandardColormaps( -#if NeedFunctionPrototypes - Display* /* dpy */, - int /* screen */, - VisualID /* visualid */, - unsigned int /* depth */, - Bool /* replace */, - Bool /* retain */ -#endif -); - -_XFUNCPROTOEND - -#endif /* _XMU_STDCMAP_H_ */ diff --git a/wrlib/context.c b/wrlib/context.c index 3c061883..c4d0e814 100644 --- a/wrlib/context.c +++ b/wrlib/context.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -32,8 +33,6 @@ #include -#include "StdCmap.h" - #include "wraster.h" extern void _wraster_change_filter(int type);