blob: f2b299262da0f558391109e22f0076e205dd918c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
include <syserr.h>
include <gio.h>
# GASCALE -- Scale the world coordinates of either the X or Y axis to fit the
# data vector. This is done by setting the WCS limits to the minimum and
# maximum pixel values of the data vector. The original WCS limits are
# overwritten.
procedure gascale (gp, v, npts, axis)
pointer gp # graphics descriptor
real v[ARB] # data vector
int npts # length of data vector
int axis # asis to be scaled (1=X, 2=Y)
int start, i
real minval, maxval, pixval
pointer w
begin
# Find first definite valued pixel. If entire data vector is
# indefinite we cannot perform our function and must abort.
for (start=1; start <= npts; start=start+1)
if (!IS_INDEF (v[start]))
break
if (start > npts)
call syserr (SYS_GINDEF)
minval = v[start]
maxval = minval
# Compute min and max values of data vector.
do i = start+1, npts {
pixval = v[i]
if (!IS_INDEF(pixval))
if (pixval < minval)
minval = pixval
else if (pixval > maxval)
maxval = pixval
}
w = GP_WCSPTR (gp, GP_WCS(gp))
# Set the window limits.
switch (axis) {
case 1:
WCS_WX1(w) = minval
WCS_WX2(w) = maxval
case 2:
WCS_WY1(w) = minval
WCS_WY2(w) = maxval
default:
call syserr (SYS_GSCALE)
}
WCS_FLAGS(w) = or (WCS_FLAGS(w), WF_DEFINED)
GP_WCSSTATE(gp) = MODIFIED
call gpl_reset()
end
|