diff options
author | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
---|---|---|
committer | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
commit | 40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch) | |
tree | 4464880c571602d54f6ae114729bf62a89518057 /sys/mwcs/wfinit.x | |
download | iraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz |
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'sys/mwcs/wfinit.x')
-rw-r--r-- | sys/mwcs/wfinit.x | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/sys/mwcs/wfinit.x b/sys/mwcs/wfinit.x new file mode 100644 index 00000000..eb9c8e26 --- /dev/null +++ b/sys/mwcs/wfinit.x @@ -0,0 +1,140 @@ +# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + +include <syserr.h> +include "mwcs.h" + +# WF_INIT -- Initialize the WCS function table. Everything MWCS related +# having to do with a world function is contained either in this file or +# in the driver source file. If the WCS must also be translated to/from +# a FITS image header representation, the image header translation routine +# iwewcs.x must also be modified. + +procedure wf_init() + +extern wf_smp_init(), wf_smp_tran() +extern wf_tan_init(), wf_tan_fwd(), wf_tan_inv() +extern wf_arc_init(), wf_arc_fwd(), wf_arc_inv() +extern wf_gls_init(), wf_gls_fwd(), wf_gls_inv() +extern wf_sin_init(), wf_sin_fwd(), wf_sin_inv() +extern wf_msp_init(), wf_msp_fwd(), wf_msp_inv(), wf_msp_destroy() + +extern wf_ait_init(), wf_ait_fwd(), wf_ait_inv() +extern wf_car_init(), wf_car_fwd(), wf_car_inv() +extern wf_csc_init(), wf_csc_fwd(), wf_csc_inv() +extern wf_mer_init(), wf_mer_fwd(), wf_mer_inv() +extern wf_mol_init(), wf_mol_fwd(), wf_mol_inv() +extern wf_par_init(), wf_par_fwd(), wf_par_inv() +extern wf_pco_init(), wf_pco_fwd(), wf_pco_inv() +extern wf_qsc_init(), wf_qsc_fwd(), wf_qsc_inv() +extern wf_stg_init(), wf_stg_fwd(), wf_stg_inv() +extern wf_tsc_init(), wf_tsc_fwd(), wf_tsc_inv() +extern wf_zea_init(), wf_zea_fwd(), wf_zea_inv() + +extern wf_zpx_init(), wf_zpx_fwd(), wf_zpx_inv(), wf_zpx_destroy() +extern wf_zpn_init(), wf_zpn_fwd(), wf_zpn_inv(), wf_zpn_destroy() +extern wf_tnx_init(), wf_tnx_fwd(), wf_tnx_inv(), wf_tnx_destroy() +extern wf_tpv_init(), wf_tpv_fwd(), wf_tpv_inv(), wf_tpv_destroy() + +bool first_time +data first_time /true/ +errchk wf_fnload +include "mwcs.com" +int locpr() + +begin + # Only do this once. + if (!first_time) + return + + fn_nfn = 0 + first_time = false + + # Load the function drivers. + call wf_fnload ("sampled", 0, + locpr(wf_smp_init), NULL, locpr(wf_smp_tran), locpr(wf_smp_tran)) + + # For compatibility reasons (FN index codes) new functions should + # be added at the end of the following list. + + call wf_fnload ("tan", F_RADEC, + locpr(wf_tan_init), NULL, locpr(wf_tan_fwd), locpr(wf_tan_inv)) + call wf_fnload ("arc", F_RADEC, + locpr(wf_arc_init), NULL, locpr(wf_arc_fwd), locpr(wf_arc_inv)) + call wf_fnload ("gls", F_RADEC, + locpr(wf_gls_init), NULL, locpr(wf_gls_fwd), locpr(wf_gls_inv)) + call wf_fnload ("sin", F_RADEC, + locpr(wf_sin_init), NULL, locpr(wf_sin_fwd), locpr(wf_sin_inv)) + + # Custom IRAF WCS for images containing multiple spectra. + call wf_fnload ("multispec", F_RADEC, + locpr(wf_msp_init), locpr(wf_msp_destroy), locpr(wf_msp_fwd), + locpr(wf_msp_inv)) + + # Most of the following are from G&C (also GLS above). + call wf_fnload ("ait", F_RADEC, + locpr(wf_ait_init), NULL, locpr(wf_ait_fwd), locpr(wf_ait_inv)) + call wf_fnload ("car", F_RADEC, + locpr(wf_car_init), NULL, locpr(wf_car_fwd), locpr(wf_car_inv)) + call wf_fnload ("csc", F_RADEC, + locpr(wf_csc_init), NULL, locpr(wf_csc_fwd), locpr(wf_csc_inv)) + call wf_fnload ("mer", F_RADEC, + locpr(wf_mer_init), NULL, locpr(wf_mer_fwd), locpr(wf_mer_inv)) + call wf_fnload ("mol", F_RADEC, + locpr(wf_mol_init), NULL, locpr(wf_mol_fwd), locpr(wf_mol_inv)) + call wf_fnload ("par", F_RADEC, + locpr(wf_par_init), NULL, locpr(wf_par_fwd), locpr(wf_par_inv)) + call wf_fnload ("pco", F_RADEC, + locpr(wf_pco_init), NULL, locpr(wf_pco_fwd), locpr(wf_pco_inv)) + call wf_fnload ("qsc", F_RADEC, + locpr(wf_qsc_init), NULL, locpr(wf_qsc_fwd), locpr(wf_qsc_inv)) + call wf_fnload ("stg", F_RADEC, + locpr(wf_stg_init), NULL, locpr(wf_stg_fwd), locpr(wf_stg_inv)) + call wf_fnload ("tsc", F_RADEC, + locpr(wf_tsc_init), NULL, locpr(wf_tsc_fwd), locpr(wf_tsc_inv)) + call wf_fnload ("zea", F_RADEC, + locpr(wf_zea_init), NULL, locpr(wf_zea_fwd), locpr(wf_zea_inv)) + + # Experimental WCS for astrometric approximations. + call wf_fnload ("zpx", F_RADEC, + locpr(wf_zpx_init), locpr(wf_zpx_destroy), locpr(wf_zpx_fwd), + locpr(wf_zpx_inv)) + call wf_fnload ("zpn", F_RADEC, + locpr(wf_zpn_init), locpr(wf_zpn_destroy), locpr(wf_zpn_fwd), + locpr(wf_zpn_inv)) + call wf_fnload ("tnx", F_RADEC, + locpr(wf_tnx_init), locpr(wf_tnx_destroy), locpr(wf_tnx_fwd), + locpr(wf_tnx_inv)) + call wf_fnload ("tpv", F_RADEC, + locpr(wf_tpv_init), locpr(wf_tpv_destroy), locpr(wf_tpv_fwd), + locpr(wf_tpv_inv)) +end + + +# WF_FNLOAD -- Load a driver into the WCS function table. + +procedure wf_fnload (name, flags, init, destroy, fwd, inv) + +char name[ARB] #I function name +int init #I initialize procedure +int flags #I function type flags +int destroy #I destroy procedure +int fwd #I forward transform procedure +int inv #I inverse transform procedure + +errchk syserrs +include "mwcs.com" + +begin + # Get a new driver slot. + if (fn_nfn + 1 > MAX_FN) + call syserrs (SYS_MWFNOVFL, name) + fn_nfn = fn_nfn + 1 + + # Load the driver. + FN_INIT(fn_nfn) = init + FN_FLAGS(fn_nfn) = flags + FN_DESTROY(fn_nfn) = destroy + FN_FWD(fn_nfn) = fwd + FN_INV(fn_nfn) = inv + call strcpy (name, FN_NAME(fn_nfn), SZ_FNNAME) +end |