aboutsummaryrefslogtreecommitdiff
path: root/sys/imio/imaplv.x
blob: 36a1f31568c06a012064fd3c9fcaf3e55557a8a9 (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
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include	<imhdr.h>
include	<imio.h>

# IMAPLV -- Transform the logical vector LV (which references an image section)
# into a physical vector (which references the physical image).

procedure imaplv (im, lv, pv, ndim)

pointer	im
long	lv[ndim], pv[IM_MAXDIM]
int	ndim
int	loff		# logical offset (subscript)
int	nldims		# number of logical dimensions
int	i, j		# i = logical dim index, j = physical dim index

begin
	i = 1
	nldims = min (IM_NDIM(im), ndim)

	do j = 1, IM_NPHYSDIM(im) {
	    if (i <= nldims && IM_VMAP(im,i) == j) {
		loff = lv[i]
		i = i + 1
	    } else
		loff = 1
	    pv[j] = IM_VOFF(im,j) + IM_VSTEP(im,j) * loff
	}
end