From fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 8 Jul 2015 20:46:52 -0400 Subject: Initial commit --- pkg/images/imgeom/src/blkcomp.x | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pkg/images/imgeom/src/blkcomp.x (limited to 'pkg/images/imgeom/src/blkcomp.x') diff --git a/pkg/images/imgeom/src/blkcomp.x b/pkg/images/imgeom/src/blkcomp.x new file mode 100644 index 00000000..814be4ee --- /dev/null +++ b/pkg/images/imgeom/src/blkcomp.x @@ -0,0 +1,38 @@ +# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + +include + +# 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 + -- cgit