| 27 | 
  | 
 | 
| 28 | 
  | 
#include  "color.h" | 
| 29 | 
  | 
#include  "view.h" | 
| 30 | 
– | 
#include  "pic.h" | 
| 30 | 
  | 
#include  "x11raster.h" | 
| 31 | 
  | 
#include  "random.h" | 
| 32 | 
  | 
#include  "resolu.h" | 
| 103 | 
  | 
 | 
| 104 | 
  | 
char  errmsg[128]; | 
| 105 | 
  | 
 | 
| 106 | 
+ | 
extern BYTE  clrtab[256][3];            /* global color map */ | 
| 107 | 
+ | 
 | 
| 108 | 
  | 
extern long  ftell(); | 
| 109 | 
  | 
 | 
| 110 | 
  | 
extern char  *malloc(), *calloc(); | 
| 111 | 
  | 
 | 
| 111 | 
– | 
extern double  pow(), log(); | 
| 112 | 
– | 
 | 
| 112 | 
  | 
Display  *thedisplay; | 
| 113 | 
  | 
 | 
| 114 | 
+ | 
 | 
| 115 | 
  | 
main(argc, argv) | 
| 116 | 
  | 
int  argc; | 
| 117 | 
  | 
char  *argv[]; | 
| 118 | 
  | 
{ | 
| 119 | 
+ | 
        extern char  *getenv(); | 
| 120 | 
+ | 
        char  *gv; | 
| 121 | 
  | 
        int  headline(); | 
| 122 | 
  | 
        int  i; | 
| 123 | 
  | 
         | 
| 124 | 
  | 
        progname = argv[0]; | 
| 125 | 
+ | 
        if ((gv = getenv("GAMMA")) != NULL) | 
| 126 | 
+ | 
                gamcor = atof(gv); | 
| 127 | 
  | 
 | 
| 128 | 
  | 
        for (i = 1; i < argc; i++) | 
| 129 | 
  | 
                if (argv[i][0] == '-') | 
| 193 | 
  | 
                getevent();             /* main loop */ | 
| 194 | 
  | 
userr: | 
| 195 | 
  | 
        fprintf(stderr, | 
| 196 | 
< | 
        "Usage: %s [-display disp][-geometry spec][-b][-m][-d][-f][-c ncolors][-e +/-stops] file\n", | 
| 196 | 
> | 
"Usage: %s [-di disp][[-ge] spec][-b][-m][-d][-f][-c nclrs][-e +/-stops] pic\n", | 
| 197 | 
  | 
                        progname); | 
| 198 | 
< | 
        quit(1); | 
| 198 | 
> | 
        exit(1); | 
| 199 | 
  | 
} | 
| 200 | 
  | 
 | 
| 201 | 
  | 
 | 
| 234 | 
  | 
        getbestvis(); | 
| 235 | 
  | 
                                /* store image */ | 
| 236 | 
  | 
        getras(); | 
| 237 | 
+ | 
                                /* get size and position */ | 
| 238 | 
+ | 
        bzero((char *)&oursizhints, sizeof(oursizhints)); | 
| 239 | 
+ | 
        oursizhints.width = xmax; oursizhints.height = ymax; | 
| 240 | 
+ | 
        if (geometry != NULL) { | 
| 241 | 
+ | 
                i = XParseGeometry(geometry, &oursizhints.x, &oursizhints.y, | 
| 242 | 
+ | 
                                (unsigned *)&oursizhints.width, | 
| 243 | 
+ | 
                                (unsigned *)&oursizhints.height); | 
| 244 | 
+ | 
                if ((i&(WidthValue|HeightValue)) == (WidthValue|HeightValue)) | 
| 245 | 
+ | 
                        oursizhints.flags |= USSize; | 
| 246 | 
+ | 
                else | 
| 247 | 
+ | 
                        oursizhints.flags |= PSize; | 
| 248 | 
+ | 
                if ((i&(XValue|YValue)) == (XValue|YValue)) { | 
| 249 | 
+ | 
                        oursizhints.flags |= USPosition; | 
| 250 | 
+ | 
                        if (i & XNegative) | 
| 251 | 
+ | 
                                oursizhints.x += DisplayWidth(thedisplay, | 
| 252 | 
+ | 
                                ourscreen)-1-oursizhints.width-2*BORWIDTH; | 
| 253 | 
+ | 
                        if (i & YNegative) | 
| 254 | 
+ | 
                                oursizhints.y += DisplayHeight(thedisplay, | 
| 255 | 
+ | 
                                ourscreen)-1-oursizhints.height-2*BORWIDTH; | 
| 256 | 
+ | 
                } | 
| 257 | 
+ | 
        } | 
| 258 | 
  | 
                                /* open window */ | 
| 259 | 
  | 
        ourwinattr.border_pixel = ourblack; | 
| 260 | 
  | 
        ourwinattr.background_pixel = ourwhite; | 
| 261 | 
  | 
        ourwinattr.colormap = XCreateColormap(thedisplay, ourroot, | 
| 262 | 
  | 
                        ourvis.visual, AllocNone); | 
| 263 | 
< | 
        wind = XCreateWindow(thedisplay, ourroot, 0, 0, xmax, ymax, BORWIDTH, | 
| 263 | 
> | 
        wind = XCreateWindow(thedisplay, ourroot, oursizhints.x, oursizhints.y, | 
| 264 | 
> | 
                        oursizhints.width, oursizhints.height, BORWIDTH, | 
| 265 | 
  | 
                        ourvis.depth, InputOutput, ourvis.visual,  | 
| 266 | 
  | 
                        CWBackPixel|CWBorderPixel|CWColormap, &ourwinattr); | 
| 267 | 
  | 
        if (wind == 0) | 
| 280 | 
  | 
        XDefineCursor(thedisplay, wind, XCreateFontCursor(thedisplay,  | 
| 281 | 
  | 
                        XC_diamond_cross)); | 
| 282 | 
  | 
        XStoreName(thedisplay, wind, fname == NULL ? progname : fname); | 
| 283 | 
< | 
        if (geometry != NULL) { | 
| 258 | 
< | 
                bzero((char *)&oursizhints, sizeof(oursizhints)); | 
| 259 | 
< | 
                i = XParseGeometry(geometry, &oursizhints.x, &oursizhints.y, | 
| 260 | 
< | 
                                (unsigned *)&oursizhints.width, | 
| 261 | 
< | 
                                (unsigned *)&oursizhints.height); | 
| 262 | 
< | 
                if ((i&(WidthValue|HeightValue)) == (WidthValue|HeightValue)) | 
| 263 | 
< | 
                        oursizhints.flags |= USSize; | 
| 264 | 
< | 
                else { | 
| 265 | 
< | 
                        oursizhints.width = xmax; | 
| 266 | 
< | 
                        oursizhints.height = ymax; | 
| 267 | 
< | 
                        oursizhints.flags |= PSize; | 
| 268 | 
< | 
                } | 
| 269 | 
< | 
                if ((i&(XValue|YValue)) == (XValue|YValue)) { | 
| 270 | 
< | 
                        oursizhints.flags |= USPosition; | 
| 271 | 
< | 
                        if (i & XNegative) | 
| 272 | 
< | 
                                oursizhints.x += DisplayWidth(thedisplay, | 
| 273 | 
< | 
                                ourscreen)-1-oursizhints.width-2*BORWIDTH; | 
| 274 | 
< | 
                        if (i & YNegative) | 
| 275 | 
< | 
                                oursizhints.y += DisplayHeight(thedisplay, | 
| 276 | 
< | 
                                ourscreen)-1-oursizhints.height-2*BORWIDTH; | 
| 277 | 
< | 
                } | 
| 283 | 
> | 
        if (oursizhints.flags) | 
| 284 | 
  | 
                XSetNormalHints(thedisplay, wind, &oursizhints); | 
| 279 | 
– | 
        } | 
| 285 | 
  | 
        ourxwmhints.flags = InputHint|IconPixmapHint; | 
| 286 | 
  | 
        ourxwmhints.input = True; | 
| 287 | 
  | 
        ourxwmhints.icon_pixmap = XCreateBitmapFromData(thedisplay, | 
| 308 | 
  | 
} | 
| 309 | 
  | 
 | 
| 310 | 
  | 
 | 
| 306 | 
– | 
eputs(s) | 
| 307 | 
– | 
char    *s; | 
| 308 | 
– | 
{ | 
| 309 | 
– | 
        fputs(s, stderr); | 
| 310 | 
– | 
} | 
| 311 | 
– | 
 | 
| 312 | 
– | 
 | 
| 313 | 
– | 
quit(code) | 
| 314 | 
– | 
int  code; | 
| 315 | 
– | 
{ | 
| 316 | 
– | 
        exit(code); | 
| 317 | 
– | 
} | 
| 318 | 
– | 
 | 
| 319 | 
– | 
 | 
| 311 | 
  | 
static int | 
| 312 | 
  | 
viscmp(v1,v2)           /* compare visual to see which is better, descending */ | 
| 313 | 
  | 
register XVisualInfo    *v1, *v2; | 
| 411 | 
  | 
                greyscale = 1; | 
| 412 | 
  | 
        if (ourvis.depth <= 8 && ourvis.colormap_size < maxcolors) | 
| 413 | 
  | 
                maxcolors = ourvis.colormap_size; | 
| 423 | 
– | 
        if (maxcolors > 4) | 
| 424 | 
– | 
                maxcolors -= 2; | 
| 414 | 
  | 
        if (ourvis.class == StaticGray) { | 
| 415 | 
  | 
                ourblack = 0; | 
| 416 | 
  | 
                ourwhite = 255; | 
| 421 | 
  | 
                        ourblack = 0; | 
| 422 | 
  | 
                        ourwhite = 1; | 
| 423 | 
  | 
                } | 
| 424 | 
+ | 
                if (maxcolors > 4) | 
| 425 | 
+ | 
                        maxcolors -= 2; | 
| 426 | 
  | 
        } else { | 
| 427 | 
  | 
                ourblack = 0; | 
| 428 | 
  | 
                ourwhite = ourvis.red_mask|ourvis.green_mask|ourvis.blue_mask; | 
| 433 | 
  | 
 | 
| 434 | 
  | 
getras()                                /* get raster file */ | 
| 435 | 
  | 
{ | 
| 445 | 
– | 
        colormap        ourmap; | 
| 436 | 
  | 
        XVisualInfo     vinfo; | 
| 437 | 
  | 
 | 
| 438 | 
  | 
        if (maxcolors <= 2) {           /* monochrome */ | 
| 444 | 
  | 
                if (ourras == NULL) | 
| 445 | 
  | 
                        goto fail; | 
| 446 | 
  | 
                getmono(); | 
| 447 | 
< | 
        } else if (ourvis.class == TrueColor || ourvis.class == DirectColor) { | 
| 447 | 
> | 
        } else if (ourvis.class == TrueColor | ourvis.class == DirectColor) { | 
| 448 | 
  | 
                ourdata = (unsigned char *)malloc(4*xmax*ymax); | 
| 449 | 
  | 
                if (ourdata == NULL) | 
| 450 | 
  | 
                        goto fail; | 
| 461 | 
  | 
                                xmax, ymax, 8); | 
| 462 | 
  | 
                if (ourras == NULL) | 
| 463 | 
  | 
                        goto fail; | 
| 464 | 
< | 
                if (ourvis.class == StaticGray) | 
| 464 | 
> | 
                if (greyscale | ourvis.class == StaticGray) | 
| 465 | 
  | 
                        getgrey(); | 
| 466 | 
< | 
                else { | 
| 467 | 
< | 
                        if (greyscale) | 
| 468 | 
< | 
                                biq(dither,maxcolors,1,ourmap); | 
| 469 | 
< | 
                        else | 
| 480 | 
< | 
                                ciq(dither,maxcolors,1,ourmap); | 
| 481 | 
< | 
                        if (init_rcolors(ourras, ourmap[0], | 
| 482 | 
< | 
                                        ourmap[1], ourmap[2]) == 0) | 
| 483 | 
< | 
                                goto fail; | 
| 484 | 
< | 
                } | 
| 466 | 
> | 
                else | 
| 467 | 
> | 
                        getmapped(); | 
| 468 | 
> | 
                if (ourvis.class != StaticGray && !init_rcolors(ourras,clrtab)) | 
| 469 | 
> | 
                        goto fail; | 
| 470 | 
  | 
        } | 
| 471 | 
< | 
                return; | 
| 471 | 
> | 
        return; | 
| 472 | 
  | 
fail: | 
| 473 | 
  | 
        quiterr("could not create raster image"); | 
| 474 | 
  | 
} | 
| 533 | 
  | 
        switch (com) {                  /* interpret command */ | 
| 534 | 
  | 
        case 'q': | 
| 535 | 
  | 
        case CTRL('D'):                         /* quit */ | 
| 536 | 
< | 
                quit(0); | 
| 536 | 
> | 
                quiterr(NULL); | 
| 537 | 
  | 
        case '\n': | 
| 538 | 
  | 
        case '\r': | 
| 539 | 
  | 
        case 'l': | 
| 612 | 
  | 
                XClearWindow(thedisplay, wind); | 
| 613 | 
  | 
                map_rcolors(ourras, wind); | 
| 614 | 
  | 
                if (fast) | 
| 615 | 
< | 
                        make_rpixmap(ourras); | 
| 615 | 
> | 
                        make_rpixmap(ourras, wind); | 
| 616 | 
  | 
                redraw(0, 0, width, height); | 
| 617 | 
  | 
                return(0); | 
| 618 | 
+ | 
        case '0':                               /* recenter origin */ | 
| 619 | 
+ | 
                if (xoff == 0 & yoff == 0) | 
| 620 | 
+ | 
                        return(0); | 
| 621 | 
+ | 
                xoff = yoff = 0; | 
| 622 | 
+ | 
                XClearWindow(thedisplay, wind); | 
| 623 | 
+ | 
                redraw(0, 0, width, height); | 
| 624 | 
+ | 
                return(0); | 
| 625 | 
  | 
        case ' ':                               /* clear */ | 
| 626 | 
  | 
                redraw(box.xmin, box.ymin, box.xsiz, box.ysiz); | 
| 627 | 
  | 
                return(0); | 
| 733 | 
  | 
                return(-1); | 
| 734 | 
  | 
        if (left == ll && right == lr && top == lt && bottom == lb) { | 
| 735 | 
  | 
                copycolor(clr, lc); | 
| 736 | 
< | 
                return; | 
| 736 | 
> | 
                return(0); | 
| 737 | 
  | 
        } | 
| 738 | 
  | 
        for (y = top; y < bottom; y++) { | 
| 739 | 
  | 
                if (getscan(y) == -1) | 
| 762 | 
  | 
                quiterr("out of memory in getmono"); | 
| 763 | 
  | 
        dp = ourdata - 1; | 
| 764 | 
  | 
        for (y = 0; y < ymax; y++) { | 
| 765 | 
< | 
                if (getscan(y) < 0) | 
| 774 | 
< | 
                        quiterr("seek error in getmono"); | 
| 775 | 
< | 
                normcolrs(scanline, xmax, scale); | 
| 765 | 
> | 
                getscan(y); | 
| 766 | 
  | 
                add2icon(y, scanline); | 
| 767 | 
+ | 
                normcolrs(scanline, xmax, scale); | 
| 768 | 
  | 
                err = 0; | 
| 769 | 
  | 
                for (x = 0; x < xmax; x++) { | 
| 770 | 
  | 
                        if (!(x&7)) | 
| 790 | 
  | 
        static short  cerr[ICONSIZ]; | 
| 791 | 
  | 
        static int  ynext; | 
| 792 | 
  | 
        static char  *dp; | 
| 793 | 
+ | 
        COLR  clr; | 
| 794 | 
  | 
        register int  err; | 
| 795 | 
  | 
        register int    x, ti; | 
| 796 | 
  | 
        int  errp; | 
| 821 | 
  | 
                        *++dp = 0; | 
| 822 | 
  | 
                errp = err; | 
| 823 | 
  | 
                ti = x*xmax/iconwidth; | 
| 824 | 
< | 
                err += normbright(scan[ti]) + cerr[x]; | 
| 824 | 
> | 
                copycolr(clr, scan[ti]); | 
| 825 | 
> | 
                normcolrs(clr, 1, scale); | 
| 826 | 
> | 
                err += normbright(clr) + cerr[x]; | 
| 827 | 
  | 
                if (err > 127) | 
| 828 | 
  | 
                        err -= 255; | 
| 829 | 
  | 
                else | 
| 845 | 
  | 
                                        /* read and convert file */ | 
| 846 | 
  | 
        dp = (unsigned long *)ourdata; | 
| 847 | 
  | 
        for (y = 0; y < ymax; y++) { | 
| 848 | 
< | 
                if (getscan(y) < 0) | 
| 849 | 
< | 
                        quiterr("seek error in getfull"); | 
| 848 | 
> | 
                getscan(y); | 
| 849 | 
> | 
                add2icon(y, scanline); | 
| 850 | 
  | 
                if (scale) | 
| 851 | 
  | 
                        shiftcolrs(scanline, xmax, scale); | 
| 852 | 
  | 
                colrs_gambs(scanline, xmax); | 
| 859 | 
– | 
                add2icon(y, scanline); | 
| 853 | 
  | 
                if (ourras->image->blue_mask & 1) | 
| 854 | 
  | 
                        for (x = 0; x < xmax; x++) | 
| 855 | 
  | 
                                *dp++ = scanline[x][RED] << 16 | | 
| 874 | 
  | 
                                        /* read and convert file */ | 
| 875 | 
  | 
        dp = ourdata; | 
| 876 | 
  | 
        for (y = 0; y < ymax; y++) { | 
| 877 | 
< | 
                if (getscan(y) < 0) | 
| 878 | 
< | 
                        quiterr("seek error in getfull"); | 
| 877 | 
> | 
                getscan(y); | 
| 878 | 
> | 
                add2icon(y, scanline); | 
| 879 | 
  | 
                if (scale) | 
| 880 | 
  | 
                        shiftcolrs(scanline, xmax, scale); | 
| 881 | 
+ | 
                for (x = 0; x < xmax; x++) | 
| 882 | 
+ | 
                        scanline[x][GRN] = normbright(scanline[x]); | 
| 883 | 
  | 
                colrs_gambs(scanline, xmax); | 
| 884 | 
< | 
                add2icon(y, scanline); | 
| 890 | 
< | 
                if (ourvis.colormap_size < 256) | 
| 884 | 
> | 
                if (maxcolors < 256) | 
| 885 | 
  | 
                        for (x = 0; x < xmax; x++) | 
| 886 | 
< | 
                                *dp++ = ((long)normbright(scanline[x]) * | 
| 887 | 
< | 
                                        ourvis.colormap_size + 128) >> 8; | 
| 886 | 
> | 
                                *dp++ = ((long)scanline[x][GRN] * | 
| 887 | 
> | 
                                        maxcolors + maxcolors/2) >> 8; | 
| 888 | 
  | 
                else | 
| 889 | 
  | 
                        for (x = 0; x < xmax; x++) | 
| 890 | 
< | 
                                *dp++ = normbright(scanline[x]); | 
| 890 | 
> | 
                                *dp++ = scanline[x][GRN]; | 
| 891 | 
  | 
        } | 
| 892 | 
+ | 
        for (x = 0; x < maxcolors; x++) | 
| 893 | 
+ | 
                clrtab[x][RED] = clrtab[x][GRN] = | 
| 894 | 
+ | 
                        clrtab[x][BLU] = ((long)x*256 + 128)/maxcolors; | 
| 895 | 
  | 
} | 
| 896 | 
  | 
 | 
| 897 | 
  | 
 | 
| 898 | 
+ | 
getmapped()                     /* get color-mapped data */ | 
| 899 | 
+ | 
{ | 
| 900 | 
+ | 
        int     y; | 
| 901 | 
+ | 
                                        /* set gamma correction */ | 
| 902 | 
+ | 
        setcolrgam(gamcor); | 
| 903 | 
+ | 
                                        /* make histogram */ | 
| 904 | 
+ | 
        new_histo(); | 
| 905 | 
+ | 
        for (y = 0; y < ymax; y++) { | 
| 906 | 
+ | 
                if (getscan(y) < 0) | 
| 907 | 
+ | 
                        quiterr("seek error in getmapped"); | 
| 908 | 
+ | 
                add2icon(y, scanline); | 
| 909 | 
+ | 
                if (scale) | 
| 910 | 
+ | 
                        shiftcolrs(scanline, xmax, scale); | 
| 911 | 
+ | 
                colrs_gambs(scanline, xmax); | 
| 912 | 
+ | 
                cnt_colrs(scanline, xmax); | 
| 913 | 
+ | 
        } | 
| 914 | 
+ | 
                                        /* map pixels */ | 
| 915 | 
+ | 
        if (!new_clrtab(maxcolors)) | 
| 916 | 
+ | 
                quiterr("cannot create color map"); | 
| 917 | 
+ | 
        for (y = 0; y < ymax; y++) { | 
| 918 | 
+ | 
                if (getscan(y) < 0) | 
| 919 | 
+ | 
                        quiterr("seek error in getmapped"); | 
| 920 | 
+ | 
                if (scale) | 
| 921 | 
+ | 
                        shiftcolrs(scanline, xmax, scale); | 
| 922 | 
+ | 
                colrs_gambs(scanline, xmax); | 
| 923 | 
+ | 
                if (dither) | 
| 924 | 
+ | 
                        dith_colrs(ourdata+y*xmax, scanline, xmax); | 
| 925 | 
+ | 
                else | 
| 926 | 
+ | 
                        map_colrs(ourdata+y*xmax, scanline, xmax); | 
| 927 | 
+ | 
        } | 
| 928 | 
+ | 
} | 
| 929 | 
+ | 
 | 
| 930 | 
+ | 
 | 
| 931 | 
  | 
scale_rcolors(xr, sf)                   /* scale color map */ | 
| 932 | 
  | 
register XRASTER        *xr; | 
| 933 | 
  | 
double  sf; | 
| 965 | 
  | 
                if (fseek(fin, scanpos[y], 0) == -1) | 
| 966 | 
  | 
                        quiterr("fseek error"); | 
| 967 | 
  | 
                cury = y; | 
| 968 | 
< | 
        } else if (scanpos != NULL) | 
| 968 | 
> | 
        } else if (scanpos != NULL && scanpos[y] == -1) | 
| 969 | 
  | 
                scanpos[y] = ftell(fin); | 
| 970 | 
  | 
 | 
| 971 | 
  | 
        if (freadcolrs(scanline, xmax, fin) < 0) | 
| 973 | 
  | 
 | 
| 974 | 
  | 
        cury++; | 
| 975 | 
  | 
        return(0); | 
| 946 | 
– | 
} | 
| 947 | 
– | 
 | 
| 948 | 
– | 
 | 
| 949 | 
– | 
picreadline3(y, l3)                     /* read in 3-byte scanline */ | 
| 950 | 
– | 
int  y; | 
| 951 | 
– | 
register rgbpixel  *l3; | 
| 952 | 
– | 
{ | 
| 953 | 
– | 
        register int    i; | 
| 954 | 
– | 
                                                        /* read scanline */ | 
| 955 | 
– | 
        if (getscan(y) < 0) | 
| 956 | 
– | 
                quiterr("cannot seek for picreadline"); | 
| 957 | 
– | 
                                                        /* convert scanline */ | 
| 958 | 
– | 
        normcolrs(scanline, xmax, scale); | 
| 959 | 
– | 
        add2icon(y, scanline); | 
| 960 | 
– | 
        for (i = 0; i < xmax; i++) { | 
| 961 | 
– | 
                l3[i].r = scanline[i][RED]; | 
| 962 | 
– | 
                l3[i].g = scanline[i][GRN]; | 
| 963 | 
– | 
                l3[i].b = scanline[i][BLU]; | 
| 964 | 
– | 
        } | 
| 965 | 
– | 
} | 
| 966 | 
– | 
 | 
| 967 | 
– | 
 | 
| 968 | 
– | 
picwriteline(y, l)              /* add 8-bit scanline to image */ | 
| 969 | 
– | 
int  y; | 
| 970 | 
– | 
pixel  *l; | 
| 971 | 
– | 
{ | 
| 972 | 
– | 
        bcopy((char *)l, (char *)ourdata+y*xmax, xmax); | 
| 973 | 
– | 
} | 
| 974 | 
– | 
 | 
| 975 | 
– | 
 | 
| 976 | 
– | 
picreadcm(map)                  /* do gamma correction */ | 
| 977 | 
– | 
colormap  map; | 
| 978 | 
– | 
{ | 
| 979 | 
– | 
        extern double  pow(); | 
| 980 | 
– | 
        register int  i, val; | 
| 981 | 
– | 
 | 
| 982 | 
– | 
        for (i = 0; i < 256; i++) { | 
| 983 | 
– | 
                val = pow((i+0.5)/256.0, 1.0/gamcor) * 256.0; | 
| 984 | 
– | 
                map[0][i] = map[1][i] = map[2][i] = val; | 
| 985 | 
– | 
        } | 
| 986 | 
– | 
} | 
| 987 | 
– | 
 | 
| 988 | 
– | 
 | 
| 989 | 
– | 
picwritecm(map)                 /* handled elsewhere */ | 
| 990 | 
– | 
colormap  map; | 
| 991 | 
– | 
{ | 
| 992 | 
– | 
#if 0 | 
| 993 | 
– | 
        register int i; | 
| 994 | 
– | 
 | 
| 995 | 
– | 
        for (i = 0; i < 256; i++) | 
| 996 | 
– | 
                printf("%d %d %d\n", map[0][i],map[1][i],map[2][i]); | 
| 997 | 
– | 
#endif | 
| 976 | 
  | 
} |