| 72 |
|
|
| 73 |
|
double exposure = 1.0; /* exposure compensation used */ |
| 74 |
|
|
| 75 |
+ |
int wrongformat = 0; /* input in another format */ |
| 76 |
+ |
|
| 77 |
|
struct { |
| 78 |
|
int xmin, ymin, xsiz, ysiz; |
| 79 |
|
} box = {0, 0, 0, 0}; /* current box */ |
| 143 |
|
} |
| 144 |
|
} |
| 145 |
|
/* get header */ |
| 146 |
< |
getheader(fin, headline); |
| 146 |
> |
getheader(fin, headline, NULL); |
| 147 |
|
/* get picture dimensions */ |
| 148 |
< |
if (fgetresolu(&xmax, &ymax, fin) != (YMAJOR|YDECR)) |
| 148 |
> |
if (wrongformat || fgetresolu(&xmax, &ymax, fin) != (YMAJOR|YDECR)) |
| 149 |
|
quiterr("bad picture size"); |
| 150 |
|
/* set view parameters */ |
| 151 |
|
if (gotview && setview(&ourview) != NULL) |
| 170 |
|
{ |
| 171 |
|
static char *altname[] = {"rview","rpict",VIEWSTR,NULL}; |
| 172 |
|
register char **an; |
| 173 |
+ |
char fmt[32]; |
| 174 |
|
|
| 175 |
|
if (isexpos(s)) |
| 176 |
|
exposure *= exposval(s); |
| 177 |
< |
else |
| 177 |
> |
else if (isformat(s)) { |
| 178 |
> |
formatval(fmt, s); |
| 179 |
> |
wrongformat = strcmp(fmt, COLRFMT); |
| 180 |
> |
} else |
| 181 |
|
for (an = altname; *an != NULL; an++) |
| 182 |
|
if (!strncmp(*an, s, strlen(*an))) { |
| 183 |
|
if (sscanview(&ourview, s+strlen(*an)) > 0) |
| 379 |
|
sprintf(buf, "%.3f", intens(cval)/exposure); |
| 380 |
|
break; |
| 381 |
|
case 'l': /* luminance */ |
| 382 |
< |
sprintf(buf, "%.0fn", bright(cval)*683.0/exposure); |
| 382 |
> |
sprintf(buf, "%.0fn", luminance(cval)/exposure); |
| 383 |
|
break; |
| 384 |
|
case 'c': /* color */ |
| 385 |
|
comp = pow(2.0, (double)scale); |