| 251 |
|
if ((scval = (COLORV *)m->os) == NULL) { |
| 252 |
|
DATARRAY *dp; |
| 253 |
|
COLORV *sinp; |
| 254 |
+ |
int n; |
| 255 |
|
double step; |
| 255 |
– |
int i; |
| 256 |
|
if (m->oargs.nsargs != 1) |
| 257 |
|
objerror(m, USER, "bad # arguments"); |
| 258 |
|
dp = getdata(m->oargs.sarg[0]); |
| 259 |
|
if (dp->nd != 1) |
| 260 |
|
objerror(m, USER, "data file must be 1-dimensional"); |
| 261 |
|
|
| 262 |
< |
sinp = (COLORV *)malloc(sizeof(COLORV)*dp->dim[0].ne); |
| 262 |
> |
n = (dp->dim[0].p == NULL) ? dp->dim[0].ne : 2*dp->dim[0].ne; |
| 263 |
> |
sinp = (COLORV *)malloc(sizeof(COLORV)*n); |
| 264 |
|
scval = (COLORV *)malloc(sizeof(COLORV)*NCSAMP); |
| 265 |
|
if ((sinp == NULL) | (scval == NULL)) |
| 266 |
|
objerror(m, SYSTEM, "out of memory"); |
| 267 |
< |
step = dp->dim[0].siz / (dp->dim[0].ne - 1.0); |
| 268 |
< |
for (i = dp->dim[0].ne; i-- > 0; ) { |
| 269 |
< |
double wl = dp->dim[0].org + i*step; |
| 270 |
< |
sinp[i] = (COLORV)datavalue(dp, &wl); |
| 267 |
> |
step = dp->dim[0].siz / (n - 1.0); |
| 268 |
> |
while (n--) { |
| 269 |
> |
double wl = dp->dim[0].org + n*step; |
| 270 |
> |
sinp[n] = (COLORV)datavalue(dp, &wl); |
| 271 |
|
} |
| 272 |
|
convertscolorcol(scval, sinp, dp->dim[0].ne, |
| 273 |
|
dp->dim[0].org-.5*step, |