diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /pkg/xtools/xtmksection.x | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'pkg/xtools/xtmksection.x')
-rw-r--r-- | pkg/xtools/xtmksection.x | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/pkg/xtools/xtmksection.x b/pkg/xtools/xtmksection.x new file mode 100644 index 00000000..3dd404cb --- /dev/null +++ b/pkg/xtools/xtmksection.x @@ -0,0 +1,141 @@ +# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + +include <imhdr.h> + +# XT_MKSECTION -- Convert an generalized image section string to an IMIO +# section string. The generalized image section string has one of the +# following formats: +# 1. An IMIO image section +# 2. [line|column] [#|middle|last] +# 3. [#|middle|last] [line|column] +# where # is a line or column number. The strings may be abbreviated. +# This procedure will work for images of dimension greater than 2 provided +# that missing sections references default to 1. + +define SZ_WRD 10 + +procedure xt_mksection (image, secstr, section, sz_section) + +char image[ARB] # Image +char secstr[ARB] # Image section string +char section[sz_section] # Returned image section string +int sz_section # Maximum size of image section string + +char wrd1[SZ_WRD], wrd2[SZ_WRD] +int ndim, len1, len2, i, j, k +pointer im + +int strdic(), ctoi() +pointer immap() +errchk immap() + +begin + im = immap (image, READ_ONLY, 0) + ndim = IM_NDIM(im) + len1 = IM_LEN(im, 1) + len2 = IM_LEN(im, 2) + call imunmap (im) + + switch (ndim) { + case 1: + section[1] = EOS + default: + if (len2 == 1) { + section[1] = EOS + return + } + + if (secstr[1] == '[') + call strcpy (secstr, section, sz_section) + else { + call sscan (secstr) + call gargwrd (wrd1, SZ_WRD) + i = strdic (wrd1, wrd1, SZ_WRD, "|column|line|middle|last|") + call gargwrd (wrd2, SZ_WRD) + j = strdic (wrd2, wrd2, SZ_WRD, "|column|line|middle|last|") + + if ((j == 1) || (j == 2)) { + k = i + i = j + j = k + call strcpy (wrd1, wrd2, SZ_WRD) + } + + switch (i) { + case 1: + switch (j) { + case 3: + call sprintf (section, sz_section, "[%d,*]") + call pargi ((len1 + 1) / 2) + case 4: + call sprintf (section, sz_section, "[%d,*]") + call pargi (len1) + default: + i = 1 + if (ctoi (wrd2, i, len1) == 0) + call error (0, "Bad column number") + call sprintf (section, sz_section, "[%d,*]") + call pargi (len1) + } + case 2: + switch (j) { + case 3: + call sprintf (section, sz_section, "[*,%d]") + call pargi ((len2 + 1) / 2) + case 4: + call sprintf (section, sz_section, "[*,%d]") + call pargi (len2) + default: + i = 1 + if (ctoi (wrd2, i, len1) == 0) + call error (0, "Bad line number") + call sprintf (section, sz_section, "[*,%d]") + call pargi (len1) + } + default: + call error (0, + "Unknown section specification - Possible non-unique abbreviation") + } + } + } +end + + +# XT_MKIMSEC -- Apply a generalized image section to an image. + +procedure xt_mkimsec (image, secstr, imagesec, sz_fname) + +char image[ARB] # Image name +char secstr[ARB] # Image section string +char imagesec[sz_fname] # Image with section +int sz_fname # Maximum size of image name + +char section[SZ_FNAME] +errchk xt_mksection() + +begin + call xt_mksection (image, secstr, section, SZ_FNAME) + call sprintf (imagesec, sz_fname, "%s%s") + call pargstr (image) + call pargstr (section) +end + + +# XT_MK1D -- In some applications a one dimensional image is expected. +# This procedure checks to see if the image is one dimensional. If it is +# not then a section is added to the image name. This procedure should +# not be used and xt_mkimsec should be used instead. + +procedure xt_mk1d (image, secstr, sz_fname) + +char image[sz_fname] # Image name +char secstr[ARB] # Image section string +int sz_fname # Maximum size of image name + +char section[SZ_FNAME] +errchk xt_mksection() + +begin + call xt_mksection (image, secstr, section, SZ_FNAME) + call strcat (section, image, sz_fname) +end |