1 |
< |
/* Copyright (c) 1992 Regents of the University of California */ |
1 |
> |
/* Copyright (c) 1993 Regents of the University of California */ |
2 |
|
|
3 |
|
#ifndef lint |
4 |
|
static char SCCSid[] = "$SunId$ LBL"; |
86 |
|
int i; |
87 |
|
|
88 |
|
progname = argv[0] = fixargv0(argv[0]); |
89 |
< |
if ((gv = getenv("GAMMA")) != NULL) |
89 |
> |
if ((gv = getenv("DISPLAY_GAMMA")) != NULL) |
90 |
|
gamcor = atof(gv); |
91 |
|
|
92 |
|
for (i = 1; i < argc; i++) |
147 |
|
} |
148 |
|
|
149 |
|
|
150 |
+ |
int |
151 |
|
headline(s) /* get relevant info from header */ |
152 |
|
char *s; |
153 |
|
{ |
159 |
|
formatval(fmt, s); |
160 |
|
wrongformat = strcmp(fmt, COLRFMT); |
161 |
|
} |
162 |
+ |
return(0); |
163 |
|
} |
164 |
|
|
165 |
|
|
170 |
|
short xsiz, ysiz; |
171 |
|
} video[] = { |
172 |
|
{_MRES256COLOR, 320, 200}, |
173 |
< |
{_VRES256COLOR, 640, 400}, |
173 |
> |
{_VRES256COLOR, 640, 480}, |
174 |
|
{_SVRES256COLOR, 800, 600}, |
175 |
|
{_XRES256COLOR, 1024, 768}, |
176 |
< |
-1 |
176 |
> |
{-1, 0, 0} |
177 |
|
}; |
178 |
|
struct videoconfig config; |
179 |
|
register int i; |
188 |
|
ms_init(); |
189 |
|
initialized = 1; |
190 |
|
_getvideoconfig(&config); |
191 |
< |
if (maxcolors == 0) |
192 |
< |
maxcolors = config.numcolors; |
193 |
< |
if (maxcolors > 4) { |
194 |
< |
maxcolors -= minpix = 2; |
195 |
< |
_settextcolor(ourwhite); |
196 |
< |
} |
191 |
> |
if (maxcolors == 0 | maxcolors > config.numcolors) |
192 |
> |
maxcolors = config.numcolors-2; |
193 |
> |
if (maxcolors <= config.numcolors-2) |
194 |
> |
minpix = 2; |
195 |
> |
else |
196 |
> |
ourwhite = maxcolors-1; |
197 |
> |
_settextcolor(ourwhite); |
198 |
|
cheight = config.numypixels/config.numtextrows; |
199 |
|
cwidth = config.numxpixels/config.numtextcols; |
200 |
|
/* clear scan position array */ |
378 |
|
long cvals[256]; |
379 |
|
register int i; |
380 |
|
|
381 |
< |
if (minpix >= 2) { |
382 |
< |
cvals[ourblack] = _BLACK; cvals[ourwhite] = _BRIGHTWHITE; |
380 |
< |
} |
381 |
> |
cvals[ourblack] = _BLACK; |
382 |
> |
cvals[ourwhite] = _BRIGHTWHITE; |
383 |
|
for (i = 0; i < maxcolors; i++) |
384 |
< |
cvals[i+minpix] = clrtab[i][BLU]<<14 & 0x3f0000L | |
384 |
> |
cvals[i+minpix] = (long)clrtab[i][BLU]<<14 & 0x3f0000L | |
385 |
|
clrtab[i][GRN]<<6 & 0x3f00 | |
386 |
|
clrtab[i][RED]>>2; |
387 |
|
_remapallpalette(cvals); |
397 |
|
setcolrgam(gamcor); |
398 |
|
/* set up color map */ |
399 |
|
for (x = 0; x < maxcolors; x++) |
400 |
< |
clrtab[x][RED] = clrtab[x][GRN] = |
401 |
< |
clrtab[x][BLU] = ((long)x*256+maxcolors/2)/maxcolors; |
400 |
> |
clrtab[x][RED] = clrtab[x][GRN] = clrtab[x][BLU] = |
401 |
> |
((long)x*256 + 128)/maxcolors; |
402 |
|
setpalette(); |
403 |
|
_setplotaction(_GPSET); |
404 |
|
/* read and display file */ |
406 |
|
getscan(y); |
407 |
|
if (scale) |
408 |
|
shiftcolrs(scanline, xmax, scale); |
409 |
+ |
for (x = 0; x < xmax; x++) |
410 |
+ |
scanline[x][GRN] = normbright(scanline[x]); |
411 |
|
colrs_gambs(scanline, xmax); |
412 |
|
if (maxcolors < 256) |
413 |
|
for (x = 0; x < xmax; x++) { |
414 |
< |
thiscolor = ((long)normbright(scanline[x]) * |
415 |
< |
maxcolors + 128) >> 8; |
414 |
> |
thiscolor = ((long)scanline[x][GRN] * |
415 |
> |
maxcolors + maxcolors/2) / 256; |
416 |
|
if (thiscolor != lastcolor) |
417 |
|
_setcolor((lastcolor=thiscolor)+minpix); |
418 |
|
_setpixel(x, y); |
419 |
|
} |
420 |
|
else |
421 |
|
for (x = 0; x < xmax; x++) { |
422 |
< |
thiscolor = normbright(scanline[x]); |
422 |
> |
thiscolor = scanline[x][GRN]; |
423 |
|
if (thiscolor != lastcolor) |
424 |
|
_setcolor((lastcolor=thiscolor)+minpix); |
425 |
|
_setpixel(x, y); |
480 |
|
if (fseek(fin, scanpos[y], 0) == -1) |
481 |
|
quiterr("fseek error"); |
482 |
|
cury = y; |
483 |
< |
} else if (scanpos != NULL && scanpos[y] == -1) |
483 |
> |
} else if (fin != stdin && scanpos[y] == -1) |
484 |
|
scanpos[y] = ftell(fin); |
485 |
|
|
486 |
|
if (freadcolrs(scanline, xmax, fin) < 0) |
601 |
|
inregs.w.ax = 0; |
602 |
|
int386 (0x33, &inregs, &outregs); |
603 |
|
} |
600 |
– |
|