aboutsummaryrefslogtreecommitdiff
path: root/pkg/images/imgeom/src/blkcomp.x
blob: 814be4ee088331a418c0f8b4b6ef2d8914b70119 (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
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include	<imhdr.h>

# BLKCOMP -- compute starting and ending input vectors for blocks in each
# dimension.  Initialize input-line vectors to block vectors.  Return total
# number of input lines mapping to current output line.

int procedure blkcomp (im1, blkfac, vout, blkin_s, blkin_e,
		vin_s, vin_e)

pointer	im1			# pointer to input image descriptor
int	blkfac[IM_MAXDIM]	# blocking factors for each dimension
long	vout[IM_MAXDIM]		# output image vectors for each dimension
long	blkin_s[IM_MAXDIM]	# index of starting block for each dimension
long	blkin_e[IM_MAXDIM]	# index of ending block for each dimension
long	vin_s[IM_MAXDIM]	# initial starting input vector
long	vin_e[IM_MAXDIM]	# initial ending input vector

int	num_ilines, dim

begin
	num_ilines = 1

	# Compute starting and ending indices of input image pixels in each
	# dimension mapping to current output line.

	do dim = 2, IM_NDIM(im1) {
	    blkin_s[dim] = long(1 + (vout[dim] - 1) * blkfac[dim])
	    blkin_e[dim] = long(min (IM_LEN(im1,dim), vout[dim] * blkfac[dim]))
	    vin_s[dim]   = blkin_s[dim]
	    vin_e[dim]   = blkin_s[dim]
	    num_ilines = num_ilines * (blkin_e[dim] - blkin_s[dim] + 1)
	}
	
	return (num_ilines)
end