Annotation of 43BSDTahoe/new/X/showimg/calcmap.c, revision 1.1

1.1     ! root        1: /* Calculates gray scale based on mouse offset from window center */
        !             2: #include <X/Xlib.h>
        !             3: 
        !             4: #ifdef MC68000
        !             5: #include <sys/types.h>
        !             6: #endif
        !             7: 
        !             8: #include "shimg.h"
        !             9:    
        !            10: #define MIN(a,b) (((a) < (b)) ? (a) : (b))
        !            11: #define MAX(a,b) (((a) > (b)) ? (a) : (b))
        !            12: 
        !            13: CalcMap(winfo,cmap,x,y,ncolors,flags,key)
        !            14:        WindowInfo *winfo;
        !            15:        Color *cmap;
        !            16:        int x,y, key;
        !            17:        int ncolors;
        !            18:        u_short flags;
        !            19: {
        !            20:        register int intercept,slope,intensity,i;
        !            21: 
        !            22:        if(x<0 || y<=0 || x>=winfo->width-2 || y>winfo->height) return;
        !            23: 
        !            24:        intercept = (((x<<1) - winfo->width)<<16) / winfo->width;
        !            25:        slope = ((winfo->height - y)<<16) / y;
        !            26: 
        !            27:        for(i=0; i<ncolors; i++) {
        !            28:                intensity = (slope * i)/(ncolors-1) + intercept;
        !            29:                intensity = MIN(65535,MAX(intensity,0));
        !            30:                if(flags & VOP_Inverse)  intensity = 65535 - intensity;
        !            31:                if(flags & VOP_RGB) 
        !            32:                    switch((int)key) {
        !            33:                        case LeftButton:
        !            34:                                cmap[i].red = intensity; break;
        !            35:                        case MiddleButton:
        !            36:                                cmap[i].green = intensity; break;
        !            37:                        case RightButton:
        !            38:                                cmap[i].blue = intensity; break;
        !            39:                    }
        !            40:                else {
        !            41:                    cmap[i].red = cmap[i].blue = cmap[i].green = intensity;
        !            42:                }
        !            43:        }
        !            44:        return;
        !            45: }
        !            46: 
        !            47: initcmap(ncolors,cmap,pixel,nplanes,flags)
        !            48:      int ncolors, nplanes, pixel;
        !            49:      Color *cmap;
        !            50:      unsigned short flags;
        !            51: {
        !            52:      int i;
        !            53: 
        !            54: /* Initialize color map to slope 1, intercept 0 */
        !            55:      for (i = 0; i < ncolors; i++) {
        !            56:        cmap[i].pixel = pixel + i;
        !            57:        cmap[i].red = cmap[i].green = cmap[i].blue =
        !            58:            ( (flags & VOP_Inverse) ? (65535 - (i << (16 - nplanes))) :
        !            59:              (i << (16 - nplanes)));
        !            60:      }
        !            61:      return;
        !            62: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.