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 /pkg/images/tv/imedit/epcolon.x | |
download | iraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz |
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'pkg/images/tv/imedit/epcolon.x')
-rw-r--r-- | pkg/images/tv/imedit/epcolon.x | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/pkg/images/tv/imedit/epcolon.x b/pkg/images/tv/imedit/epcolon.x new file mode 100644 index 00000000..51765889 --- /dev/null +++ b/pkg/images/tv/imedit/epcolon.x @@ -0,0 +1,335 @@ +include "epix.h" + +# List of colon commands. +define CMDS "|angh|angv|aperture|autodisplay|autosurface|buffer|command|\ + |display|eparam|graphics|input|output|radius|search|sigma|\ + |value|minvalue|maxvalue|width|write|xorder|yorder|" + +define ANGH 1 # Horizontal viewing angle +define ANGV 2 # Vertical viewing angle +define APERTURE 3 # Aperture type +define AUTODISPLAY 4 # Automatic display? +define AUTOSURFACE 5 # Automatic surface graph? +define BUFFER 6 # Background buffer width +define COMMAND 7 # Display command +define DISPLAY 9 # Display image? +define EPARAM 10 # Eparam +define GRAPHICS 11 # Graphics device +define INPUT 12 # Input image +define OUTPUT 13 # Output image +define RADIUS 14 # Aperture radius +define SEARCH 15 # Search radius +define SIGMA 16 # Noise sigma +define VALUE 18 # Constant substitution value +define MINVALUE 19 # Minimum value for replacement +define MAXVALUE 20 # Maximum value for replacement +define WIDTH 21 # Background width +define WRITE 22 # Write output +define XORDER 23 # X order +define YORDER 24 # Y order + +# EP_COLON -- Respond to colon commands. +# The changed parameters are written to the parameter file and +# to the optional log file. + +procedure ep_colon (ep, cmdstr, newimage) + +pointer ep # EPIX structure +char cmdstr[ARB] # Colon command +int newimage # New image? + +int ival, ncmd +real rval +bool bval +pointer sp, cmd + +bool strne() +int nscan(), strdic(), btoi(), imaccess() +pointer immap() + +begin + call smark (sp) + call salloc (cmd, SZ_LINE, TY_CHAR) + + # Scan the command string and get the first word. + call sscan (cmdstr) + call gargwrd (Memc[cmd], SZ_LINE) + ncmd = strdic (Memc[cmd], Memc[cmd], SZ_LINE, CMDS) + + switch (ncmd) { + case ANGH: + call gargr (rval) + if (nscan() == 1) { + call printf ("angh %g\n") + call pargr (EP_ANGH(ep)) + } else { + EP_ANGH(ep) = rval + call clputr ("angh", EP_ANGH(ep)) + } + case ANGV: + call gargr (rval) + if (nscan() == 1) { + call printf ("angv %g\n") + call pargr (EP_ANGV(ep)) + } else { + EP_ANGV(ep) = rval + call clputr ("angv", EP_ANGV(ep)) + } + case APERTURE: + call gargwrd (Memc[cmd], SZ_FNAME) + if (nscan() == 1) { + call printf ("aperture %s\n") + switch (EP_APERTURE(ep)) { + case APCIRCULAR: + call pargstr ("circular") + case APSQUARE: + call pargstr ("square") + } + } else { + ncmd = strdic (Memc[cmd], Memc[cmd], SZ_LINE, APTYPES) + if (ncmd > 0) { + EP_APERTURE(ep) = ncmd + call clpstr ("aperture", Memc[cmd]) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":aperture %s\n") + call pargstr (Memc[cmd]) + } + } else + call printf ("Unknown aperture type\n") + } + case AUTODISPLAY: + call gargb (bval) + if (nscan() == 1) { + if (EP_AUTODISPLAY(ep) == YES) + call printf ("autodisplay yes\n") + else + call printf ("autodisplay no\n") + } else { + EP_AUTODISPLAY(ep) = btoi (bval) + call clputb ("autodisplay", bval) + } + case AUTOSURFACE: + call gargb (bval) + if (nscan() == 1) { + if (EP_AUTOSURFACE(ep) == YES) + call printf ("autosurface yes\n") + else + call printf ("autosurface no\n") + } else { + EP_AUTOSURFACE(ep) = btoi (bval) + call clputb ("autosurface", bval) + } + case BUFFER: + call gargr (rval) + if (nscan() == 1) { + call printf ("buffer %g\n") + call pargr (EP_BUFFER(ep)) + } else { + EP_BUFFER(ep) = rval + call clputr ("buffer", EP_BUFFER(ep)) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":buffer %g\n") + call pargr (EP_BUFFER(ep)) + } + } + case COMMAND: + call gargwrd (Memc[cmd], SZ_FNAME) + if (nscan() == 1) { + call printf ("command %s\n") + call pargstr (EP_COMMAND(ep)) + } else { + call strcpy (Memc[cmd], EP_COMMAND(ep), EP_SZLINE) + call gargstr (Memc[cmd], SZ_FNAME) + call strcat (Memc[cmd], EP_COMMAND(ep), EP_SZFNAME) + call clpstr ("command", EP_COMMAND(ep)) + } + case DISPLAY: + call gargb (bval) + if (nscan() == 1) { + if (EP_DISPLAY(ep) == YES) + call printf ("display yes\n") + else + call printf ("display no\n") + } else { + EP_DISPLAY(ep) = btoi (bval) + call clputb ("display", bval) + } + case EPARAM: + call clcmdw ("eparam imedit") + call ep_setpars (ep) + case GRAPHICS: + call gargwrd (Memc[cmd], SZ_FNAME) + if (nscan() == 1) { + call printf ("graphics %s\n") + call pargstr (EP_GRAPHICS(ep)) + } else { + call strcpy (Memc[cmd], EP_GRAPHICS(ep), EP_SZFNAME) + call clpstr ("graphics", EP_GRAPHICS(ep)) + } + case INPUT: + call gargwrd (Memc[cmd], SZ_FNAME) + if (nscan() == 1) { + call printf ("input %s\n") + call pargstr (EP_INPUT(ep)) + } else if (strne (Memc[cmd], EP_INPUT(ep))) { + call strcpy (Memc[cmd], EP_INPUT(ep), SZ_LINE) + newimage = YES + } + case OUTPUT: + call gargwrd (Memc[cmd], SZ_FNAME) + if (nscan() == 1) { + call printf ("output %s\n") + call pargstr (EP_OUTPUT(ep)) + } else if (strne (Memc[cmd], EP_INPUT(ep))) { + if (imaccess (Memc[cmd], READ_ONLY) == YES) { + call eprintf ("%s: Output image %s exists\n") + call pargstr (EP_INPUT(ep)) + call pargstr (Memc[cmd]) + } else + call strcpy (Memc[cmd], EP_OUTPUT(ep), EP_SZFNAME) + } + case RADIUS: + call gargr (rval) + if (nscan() == 1) { + call printf ("radius %g\n") + call pargr (EP_RADIUS(ep)) + } else { + EP_RADIUS(ep) = rval + call clputr ("radius", EP_RADIUS(ep)) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":radius %g\n") + call pargr (EP_RADIUS(ep)) + } + } + case SEARCH: + call gargr (rval) + if (nscan() == 1) { + call printf ("search %g\n") + call pargr (EP_SEARCH(ep)) + } else { + EP_SEARCH(ep) = rval + call clputr ("search", EP_SEARCH(ep)) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":search %g\n") + call pargr (EP_SEARCH(ep)) + } + } + case SIGMA: + call gargr (rval) + if (nscan() == 1) { + call printf ("sigma %g\n") + call pargr (EP_SIGMA(ep)) + } else { + EP_SIGMA(ep) = rval + call clputr ("sigma", EP_SIGMA(ep)) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":sigma %g\n") + call pargr (EP_SIGMA(ep)) + } + } + case VALUE: + call gargr (rval) + if (nscan() == 1) { + call printf ("value %g\n") + call pargr (EP_VALUE(ep)) + } else { + EP_VALUE(ep) = rval + call clputr ("value", EP_VALUE(ep)) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":value %g\n") + call pargr (EP_VALUE(ep)) + } + } + case MINVALUE: + call gargr (rval) + if (nscan() == 1) { + call printf ("minvalue %g\n") + call pargr (EP_MINVALUE(ep)) + } else { + EP_MINVALUE(ep) = rval + call clputr ("minvalue", EP_MINVALUE(ep)) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":minvalue %g\n") + call pargr (EP_MINVALUE(ep)) + } + } + case MAXVALUE: + call gargr (rval) + if (nscan() == 1) { + call printf ("maxvalue %g\n") + call pargr (EP_MAXVALUE(ep)) + } else { + EP_MAXVALUE(ep) = rval + call clputr ("maxvalue", EP_MAXVALUE(ep)) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":maxvalue %g\n") + call pargr (EP_MAXVALUE(ep)) + } + } + case WIDTH: + call gargr (rval) + if (nscan() == 1 || rval < 1.) { + call printf ("width %g\n") + call pargr (EP_WIDTH(ep)) + } else { + EP_WIDTH(ep) = max (1., rval) + call clputr ("width", EP_WIDTH(ep)) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":width %g\n") + call pargr (EP_WIDTH(ep)) + } + } + case WRITE: + call gargwrd (Memc[cmd], SZ_FNAME) + ival = YES + if (nscan() == 1) + call strcpy (EP_OUTPUT(ep), Memc[cmd], SZ_FNAME) + else if (strne (Memc[cmd], EP_INPUT(ep))) { + if (imaccess (Memc[cmd], READ_ONLY) == YES) { + call eprintf ("Image %s exists\n") + call pargstr (Memc[cmd]) + ival = NO + } + } + + if (ival == YES) { + call printf ("output %s\n") + call pargstr (Memc[cmd]) + if (imaccess (Memc[cmd], READ_ONLY) == YES) + call imdelete (Memc[cmd]) + call imunmap (EP_IM(ep)) + call ep_imcopy (EP_WORK(ep), Memc[cmd]) + EP_IM(ep) = immap (EP_WORK(ep), READ_WRITE, 0) + } + case XORDER: + call gargi (ival) + if (nscan() == 1) { + call printf ("xorder %d\n") + call pargi (EP_XORDER(ep)) + } else { + EP_XORDER(ep) = max (0, ival) + call clputi ("xorder", EP_XORDER(ep)) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":xorder %d\n") + call pargi (EP_XORDER(ep)) + } + } + case YORDER: + call gargi (ival) + if (nscan() == 1) { + call printf ("yorder %d\n") + call pargi (EP_YORDER(ep)) + } else { + EP_YORDER(ep) = max (0, ival) + call clputi ("yorder", EP_YORDER(ep)) + if (EP_LOGFD(ep) != NULL) { + call fprintf (EP_LOGFD(ep), ":yorder %d\n") + call pargi (EP_YORDER(ep)) + } + } + default: + call printf ("Unrecognized or ambiguous command\007") + } + + call sfree (sp) +end |