aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/cdl/test
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/x11iraf/cdl/test')
-rw-r--r--vendor/x11iraf/cdl/test/Imakefile22
-rw-r--r--vendor/x11iraf/cdl/test/Imakefile.standalone39
-rw-r--r--vendor/x11iraf/cdl/test/Makefile.generic76
-rw-r--r--vendor/x11iraf/cdl/test/cdltest.c635
-rw-r--r--vendor/x11iraf/cdl/test/coords42
-rw-r--r--vendor/x11iraf/cdl/test/imdtest.c336
-rw-r--r--vendor/x11iraf/cdl/test/zzdebug.x44
7 files changed, 1194 insertions, 0 deletions
diff --git a/vendor/x11iraf/cdl/test/Imakefile b/vendor/x11iraf/cdl/test/Imakefile
new file mode 100644
index 00000000..64339465
--- /dev/null
+++ b/vendor/x11iraf/cdl/test/Imakefile
@@ -0,0 +1,22 @@
+#
+# IMakefile for CDL Test tasks.
+#
+
+X11IRAFDIR = ../../
+#include <../../X11IRAF.tmpl>
+
+
+ CDLDIR = ../
+ INCLUDES = -I. -I$(CDLDIR)
+ LOCAL_LDFLAGS = -L$(CDLDIR)
+ LIBS = -lcdl
+
+
+AllTarget(cdltest imdtest)
+
+NormalProgramTarget(cdltest,cdltest.o,../libcdl.a,$(LIBS),-lm)
+NormalProgramTarget(imdtest,imdtest.o,../libcdl.a,$(LIBS),-lm)
+
+depend::
+
+LintTarget()
diff --git a/vendor/x11iraf/cdl/test/Imakefile.standalone b/vendor/x11iraf/cdl/test/Imakefile.standalone
new file mode 100644
index 00000000..ff6fd3fa
--- /dev/null
+++ b/vendor/x11iraf/cdl/test/Imakefile.standalone
@@ -0,0 +1,39 @@
+#
+# IMakefile for CDL Test tasks.
+#
+
+ CDLDIR = ../
+ INCLUDES = -I. -I$(CDLDIR)
+ LOCAL_LDFLAGS = -L$(CDLDIR)
+ LIBS = -lcdl
+
+
+# Hack to compile under SunPRO V4 on Solaris
+#if defined (SunArchitecture) && OSMajorVersion >= 5 && HasSunC
+#if OSMinorVersion <= 5
+#if !defined (i386Architecture)
+ CCOPTIONS = -Xs
+EXTRA_LDOPTIONS = -xildoff
+#endif
+#else
+ CCOPTIONS =
+EXTRA_LDOPTIONS = -xildoff
+#endif
+
+#else
+#if defined (UltrixArchitecture)
+ CCOPTIONS = -DULTRIX
+#endif
+#if defined (OSF1Architecture) && OSMajorVersion >= 4
+ CCOPTIONS = -DOSF1
+#endif
+#endif
+
+AllTarget(cdltest imdtest)
+
+NormalProgramTarget(cdltest,cdltest.o,../libcdl.a,$(LIBS),-lm)
+NormalProgramTarget(imdtest,imdtest.o,../libcdl.a,$(LIBS),-lm)
+
+depend::
+
+LintTarget()
diff --git a/vendor/x11iraf/cdl/test/Makefile.generic b/vendor/x11iraf/cdl/test/Makefile.generic
new file mode 100644
index 00000000..c64c90b2
--- /dev/null
+++ b/vendor/x11iraf/cdl/test/Makefile.generic
@@ -0,0 +1,76 @@
+#
+# Generic Makefile for CDL Test tasks.
+#
+
+ CDLDIR = ../
+ RM = rm
+ CFLAGS = -I. -I$(CDLDIR)
+ LDFLAGS = -L$(CDLDIR)
+ LIBS = -lcdl
+
+ LDLIBS =
+
+
+all:: cdltest imdtest
+
+cdltest: cdltest.o ../libcdl.a
+ $(RM) -f $@
+ $(CC) -o $@ cdltest.o $(LDFLAGS) $(LDOPTIONS) $(LIBS) $(LDLIBS) -lm
+
+clean::
+ $(RM) -f cdltest
+
+imdtest: imdtest.o ../libcdl.a
+ $(RM) -f $@
+ $(CC) -o $@ imdtest.o $(LDFLAGS) $(LDOPTIONS) $(LIBS) $(LDLIBS) -lm
+
+clean::
+ $(RM) -f imdtest
+
+depend::
+
+lint:
+ $(LINT) $(LINTFLAGS) $(SRCS) $(LINTLIBS)
+lint1:
+ $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS)
+
+clean::
+ $(RM) -f *.o
+
+# -------------------------------------------------------------------------
+# common rules for all Makefiles - do not edit
+
+emptyrule::
+
+Makefile::
+ -@if [ -f Makefile ]; then set -x; \
+ $(RM) -f Makefile.bak; $(MV) Makefile Makefile.bak; \
+ else exit 0; fi
+ $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
+
+tags::
+ $(TAGS) -w *.[ch]
+ $(TAGS) -xw *.[ch] > TAGS
+
+saber:
+ # load $(ALLDEFINES) $(SRCS)
+
+osaber:
+ # load $(ALLDEFINES) $(OBJS)
+
+# -------------------------------------------------------------------------
+# empty rules for directories that do not have SUBDIRS - do not edit
+
+install::
+ @echo "install in $(CURRENT_DIR) done"
+
+install.man::
+ @echo "install.man in $(CURRENT_DIR) done"
+
+Makefiles::
+
+includes::
+
+# -------------------------------------------------------------------------
+# dependencies generated by makedepend
+
diff --git a/vendor/x11iraf/cdl/test/cdltest.c b/vendor/x11iraf/cdl/test/cdltest.c
new file mode 100644
index 00000000..85c4b590
--- /dev/null
+++ b/vendor/x11iraf/cdl/test/cdltest.c
@@ -0,0 +1,635 @@
+#include <stdio.h>
+#define CDL_LIBRARY_SOURCE
+#include "cdl.h"
+
+/* CDLTEST -- Test routines for the CDL package.
+ */
+
+#define TEST_PATTERN -1
+
+/* Utility macros. */
+#define max(a,b) (a > b ? a : b)
+#define min(a,b) (a < b ? a : b)
+
+extern int cdl_debug;
+
+main()
+{
+ CDLPtr cdl;
+ char key, cmd[2], name[SZ_NAME], title[SZ_NAME], obj[SZ_NAME];
+ int i, j, zt=1, frame=1, fbconfig=1, color=3, lwidth=1, twidth=1;
+ int debug = 0, nx, ny, bitpix, ix=128, iy=128, lstyle=0;
+ int lx, ly, ux, uy;
+ int fb_w, fb_h, nframes, wcs;
+ int xarray[1024], yarray[1024];
+ float rx=128., ry=128., sx, sy;
+ float a, b, c, d, tx, ty, z1=0.0, z2=0.0;
+ int snx, sny, dnx, dny, dx, dy;
+ uchar *pix, *c_ras;
+ double sin();
+
+ cdl = cdl_open ((char *)getenv("IMTDEV"));
+ if (cdl == (CDLPtr) NULL)
+ exit ();
+
+ c_ras = (uchar *) malloc (1024 * 1024);
+
+ cmd[0] = 'f';
+ cmd[1] = '\n';
+ print_help();
+ do {
+ switch (cmd[0]) {
+ case '<': /* ENABLE DEBUG */
+ cdl_setDebug (1);
+ break;
+
+ case '>': /* DISABLE DEBUG */
+ cdl_setDebug (0);
+ break;
+
+ case 'S': /* SAMPLE CURSOR */
+ (void) cdl_readCursor (cdl, 1, &rx, &ry, &wcs, &key);
+ printf ("cursor: x=%g y=%g wcs=%d key='%d' (%c)\n",
+ rx, ry, wcs, key, key);
+ break;
+
+ case 'C': /* CLIP TEST TOP */
+ if (cdl_readSubRaster (cdl, 128, -32, 128, 128, &c_ras))
+ printf ("...read returns an error\n");
+ if (cdl_writeSubRaster (cdl, 128, -32, 128, 128, c_ras))
+ printf ("...write returns an error\n");
+ if (cdl_readSubRaster (cdl, 128, -8, 16, 16, &c_ras))
+ printf ("...read returns an error\n");
+ for (i=0;i<16;i++) {
+ for (j=0; j<16; j++)
+ printf ("%3d ", c_ras[i*16+j]);
+ printf ("\n");
+ }
+ printf ("\n");
+ if (cdl_readSubRaster (cdl, 128, 504, 16, 16, &c_ras))
+ printf ("...read returns an error\n");
+ for (i=0;i<16;i++) {
+ for (j=0; j<16; j++)
+ printf ("%3d ", c_ras[i*16+j]);
+ printf ("\n");
+ }
+ break;
+
+ case 'c': /* CLEAR FRAME */
+ if (cdl_clearFrame (cdl))
+ printf ("...returns an error\n");
+ break;
+
+ case 'd': /* DELETE MARKER */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ if (cdl_deleteMark (cdl, ix, iy))
+ printf ("...returns an error\n");
+ break;
+
+ case 'D': /* DELETE OVERLAY */
+ (void) cdl_clearOverlay (cdl);
+ break;
+
+ case 'f': /* DISPLAY FITS */
+ if (cdl_displayFITS (cdl, "dpix.fits", frame, FB_AUTO, 1))
+ printf ("...returns an error\n");
+ break;
+
+ case 'g': /* READ IMAGE */
+ if (cdl_readImage (cdl, &c_ras, &nx, &ny))
+ printf ("...returns an error\n");
+ printf ("corners: nx=%d ny=%d LL = [%d] UR = [%d]\n",
+ nx, ny, c_ras[0], c_ras[nx*ny-1]);
+ if (cdl_displayPix (cdl, c_ras, nx, ny, 8, frame, FB_AUTO, 0))
+ printf ("...returns an error\n");
+ break;
+
+ case 'G': /* READ FB */
+ if (cdl_readFrameBuffer (cdl, &c_ras, &nx, &ny))
+ printf ("...returns an error\n");
+ printf ("fb corners: nx=%d ny=%d LL = [%d] UR = [%d]\n",
+ nx, ny, c_ras[0], c_ras[nx*ny-1]);
+ if (cdl_displayPix (cdl, c_ras, nx, ny, 8, frame, FB_AUTO, 0))
+ printf ("...returns an error\n");
+ break;
+
+ case 'i': /* DISPLAY IRAF */
+ if (cdl_displayIRAF (cdl, "examples/dpix.imh", 1, frame,
+ FB_AUTO, 0))
+ printf ("...returns an error\n");
+ break;
+
+ case 'm': /* MARK POINT */
+ i = 1;
+ while (cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key) != 'q') {
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n",
+ rx, ix, ry, iy, key);
+ if (cdl_markPoint (cdl, ix, iy, i++, 7, M_STAR, C_GREEN))
+ printf ("...returns an error\n");
+ }
+ break;
+
+ case 'n': /* NEXT FRAME */
+ frame = (frame+1 > 16 ? 1 : frame+1);
+ cdl_setFrame (cdl, frame);
+ printf ("set cdl->frame = %d\n", cdl->frame);
+ cdl_getFrame (cdl, &frame);
+ printf ("get cdl->frame = %d\n", frame);
+ break;
+
+ case 'N': /* NEXT CONFIG */
+ fbconfig = (fbconfig+1 > 12 ? 1 : fbconfig+1);
+ cdl_setFBConfig (cdl, fbconfig);
+ i = cdl->fbconfig - 1;
+ printf ("cdl->fbconfig = %d/%d [%d %d %d %d]\n", cdl->fbconfig,
+ i, cdl->imd->fbtab[i]->config, cdl->imd->fbtab[i]->nframes,
+ cdl->imd->fbtab[i]->width, cdl->imd->fbtab[i]->height);
+ break;
+
+ case 'p': /* PREVIOUS FRAME */
+ frame = (frame-1 < 1 ? 4 : frame-1);
+ cdl_setFrame (cdl, frame);
+ printf ("set cdl->frame = %d\n", cdl->frame);
+ cdl_getFrame (cdl, &frame);
+ printf ("get cdl->frame = %d\n", frame);
+ break;
+
+ case 'P': /* PREV CONFIG */
+ cdl_setFBConfig (cdl, fbconfig);
+ fbconfig = (fbconfig-1 < 1 ? 12 : fbconfig)-1;
+ i = cdl->fbconfig - 1;
+ printf ("cdl->fbconfig = %d/%d [%d %d %d %d]\n", cdl->fbconfig,
+ i, cdl->imd->fbtab[i]->config, cdl->imd->fbtab[i]->nframes,
+ cdl->imd->fbtab[i]->width, cdl->imd->fbtab[i]->height);
+ break;
+
+ case 'q': /* QUIT */
+ goto quit;
+
+ case 'r': /* READ CURSOR */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf("cursor: x=%g/%d y=%g/%d wcs = %d key='%c' frame=%d\n",
+ rx, ix, ry, iy, wcs, key, wcs / 100);
+ break;
+
+ case 's': /* TEXT STRING */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ if (cdl_markText (cdl, -20, iy, "testing 123", 1., 0.0, C_RED))
+ printf ("...returns an error\n");
+ break;
+
+ case 't': /* TEST IMAGE */
+ printf ("creating raster....\n");
+ make_raster (c_ras, 512, 512, TEST_PATTERN);
+ cdl_setName (cdl, "test image");
+ cdl_setTitle (cdl, "test title");
+ printf ("displaying raster....\n");
+ if (cdl_displayPix (cdl, c_ras, 512, 512, 8, frame,fbconfig,0))
+ printf ("...returns an error\n");
+ break;
+
+ case 'T': /* TEST TILE */
+ if (cdl_readFITS ("dpix.fits", &pix, &nx, &ny,
+ &bitpix, obj))
+ printf ("...returns an error\n");
+ printf ("nx=%d ny=%d bitpix=%d\n", nx, ny, bitpix);
+ cdl_clearFrame (cdl);
+ cdl_selectFB (cdl, 2*nx, 2*ny, &fbconfig, &fb_w, &fb_h,
+ &nframes, 1);
+ if (cdl_setWCS (cdl, "imaname", "imtitle", 1., 0., 0., -1., 0.,
+ (float) 2*ny, 1., 255., 1))
+ printf ("...returns an error\n");
+ cdl_computeZscale (cdl, pix, nx ,ny, bitpix, &z1, &z2);
+ cdl_zscaleImage (cdl, &pix, nx ,ny, bitpix, z1, z2);
+ if (cdl_writeSubRaster (cdl, 0, 0, nx, ny, pix))
+ printf ("...returns an error\n");
+ if (cdl_writeSubRaster (cdl, nx, 0, nx, ny, pix))
+ printf ("...returns an error\n");
+ if (cdl_writeSubRaster (cdl, 0, ny, nx, ny, pix))
+ printf ("...returns an error\n");
+ if (cdl_writeSubRaster (cdl, nx, ny, nx, ny, pix))
+ printf ("...returns an error\n");
+ break;
+
+ case 'w': /* SET WCS */
+ if (cdl_setWCS (cdl, "imname", "imtitle", 1., 0., 0., -1., 0.,
+ 512., 1., 255., 1))
+ printf ("...returns an error\n");
+ break;
+
+ case 'W': /* GET WCS */
+ if (cdl_getWCS (cdl, name, title, &a, &b, &c, &d, &tx, &ty,
+ &z1, &z2, &zt))
+ printf ("...returns an error\n");
+ printf ("name='%s' title='%s'\n a=%g b=%g c=%g d=%g ",
+ name, title, a, b, c, d);
+ printf ("tx=%g ty=%g z1=%g z2=%g zt=%d\n", tx, ty, z1, z2, zt);
+ break;
+
+ case 'b': /* MARK BOX */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ lx = (int) (rx + 0.5); ly = (int) (ry + 0.5);
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ux = (int) (rx + 0.5); uy = (int) (ry + 0.5);
+ printf ("cursor: x=%d/%d y=%d/%d\n", lx,ux,ly,uy);
+ if (cdl_markBox (cdl, lx, ly, ux, uy, 0, C_RED))
+ printf ("...returns an error\n");
+ break;
+
+ case 'B': /* FILL BOX */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ lx = (int) (rx + 0.5); ly = (int) (ry + 0.5);
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ux = (int) (rx + 0.5); uy = (int) (ry + 0.5);
+ printf ("cursor: x=%d/%d y=%d/%d\n", lx,ux,ly,uy);
+ if (cdl_markBox (cdl, lx, ly, ux, uy, 1, C_RED))
+ printf ("...returns an error\n");
+ break;
+
+ case 'L': /* MARK LINE STYLES */
+ break;
+
+ case 'l': /* MARK LINE */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ lx = (int) (rx + 0.5); ly = (int) (ry + 0.5);
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ux = (int) (rx + 0.5); uy = (int) (ry + 0.5);
+ printf ("cursor: x=%d/%d y=%d/%d\n", lx,ux,ly,uy);
+ if (cdl_markLine (cdl, lx, ly, ux, uy, C_YELLOW))
+ printf ("...returns an error\n");
+ break;
+
+ case '[':
+ cdl_setTextWidth (cdl, twidth = (twidth-1 < 1 ? 1 : --twidth));
+ break;
+
+ case ']':
+ cdl_setTextWidth (cdl, ++twidth);
+ break;
+
+ case ',':
+ cdl_setLineWidth (cdl, lwidth = (lwidth-1 < 1 ? 1 : --lwidth));
+ break;
+
+ case '.':
+ cdl_setLineWidth (cdl, ++lwidth);
+ break;
+
+ case '{':
+ cdl_setLineStyle (cdl, lstyle = (lstyle-1 < 1 ? 1 : --lstyle));
+ break;
+
+ case '}':
+ cdl_setLineStyle (cdl, ++lstyle);
+ break;
+
+ case '(': /* MARK POLYLINE */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ for (i=0; i < 145; i++) {
+ xarray[i] = ix + i;
+ yarray[i] = iy + (int)(32*sin((double)(i*0.17453)));
+ }
+ if (cdl_markPolyline (cdl, xarray, yarray, 145, C_GREEN))
+ printf ("...returns an error\n");
+ break;
+
+ case ')': /* MARK POLYGON */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ xarray[0] = ix - 9; yarray[0] = iy - 9;
+ xarray[1] = ix + 0; yarray[1] = iy + 9;
+ xarray[2] = ix + 9; yarray[2] = iy - 9;
+ if (cdl_markPolygon (cdl, xarray, yarray, 3, 1, C_GREEN))
+ printf ("...returns an error\n");
+ break;
+
+ case 'e': /* MARK ELLIPSE */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ if (cdl_markEllipse (cdl, ix, iy, 11, 7, 45.0, 0, C_RED))
+ printf ("...returns an error\n");
+ break;
+
+ case 'E': /* MARK ELLIPSE */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ if (cdl_markEllipAnnuli (cdl, ix, iy, 11, 7, 45.0, 2, 5, C_RED))
+ printf ("...returns an error\n");
+ break;
+
+ case 'o': /* MARK CIRCLE */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ if (cdl_markCircle (cdl, ix, iy, 27, 0, C_YELLOW))
+ printf ("...returns an error\n");
+ break;
+
+ case 'O': /* MARK CIRCLE */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ if (cdl_markCircAnnuli (cdl, ix, iy, 13, 2, 5, C_YELLOW))
+ printf ("...returns an error\n");
+ break;
+
+ case 'M': /* MARK ALL PTS */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ cdl_markPoint (cdl,ix+00,iy, 0,13, M_BOX, C_GREEN);
+ cdl_markPoint (cdl,ix+15,iy, 0,13, M_PLUS, C_GREEN);
+ cdl_markPoint (cdl,ix+30,iy, 0,13, M_CROSS, C_GREEN);
+ cdl_markPoint (cdl,ix+45,iy, 0,13, M_DIAMOND,C_GREEN);
+ cdl_markPoint (cdl,ix+60,iy, 0,13, M_CIRCLE, C_GREEN);
+ cdl_markPoint (cdl,ix+75,iy, 0,13, M_STAR, C_GREEN);
+ cdl_markPoint (cdl,ix+90,iy, 0,13, M_HLINE, C_GREEN);
+ cdl_markPoint (cdl,ix+105,iy, 0,13, M_VLINE, C_GREEN);
+ cdl_markPoint (cdl,ix+120,iy, 0,13, M_HBLINE, C_GREEN);
+ cdl_markPoint (cdl,ix+135,iy, 0,13, M_VBLINE, C_GREEN);
+ cdl_markPoint (cdl,ix+00,iy-16,0,13, M_FILL|M_BOX, C_GREEN);
+ cdl_markPoint (cdl,ix+45,iy-16,0,13, M_FILL|M_DIAMOND,C_GREEN);
+ cdl_markPoint (cdl,ix+60,iy-16,0,13, M_FILL|M_CIRCLE, C_GREEN);
+ cdl_markPoint (cdl,ix+90,iy-16,0,13, M_VLINE|M_HLINE, C_GREEN);
+ cdl_markPoint (cdl,ix+105,iy-16,0,13, M_VLINE|M_HLINE, C_GREEN);
+ cdl_markPoint (cdl,ix+120,iy-16,0,13,M_VBLINE|M_HBLINE,C_GREEN);
+ cdl_markPoint (cdl,ix+135,iy-16,0,13,M_VBLINE|M_HBLINE,C_GREEN);
+ cdl_markPoint (cdl,ix+00,iy-32,0,13, M_PLUS|M_BOX, C_GREEN);
+ cdl_markPoint (cdl,ix+45,iy-32,0,13, M_PLUS|M_DIAMOND,C_GREEN);
+ cdl_markPoint (cdl,ix+60,iy-32,0,13, M_PLUS|M_CIRCLE, C_GREEN);
+ cdl_markPoint (cdl,ix+90,iy-32,0,13, M_HLINE|M_POINT, C_GREEN);
+ cdl_markPoint (cdl,ix+105,iy-32,0,13, M_VLINE|M_POINT, C_GREEN);
+ cdl_markPoint (cdl,ix+120,iy-32,0,13, M_HBLINE|M_POINT,C_GREEN);
+ cdl_markPoint (cdl,ix+135,iy-32,0,13, M_VBLINE|M_POINT,C_GREEN);
+ cdl_markPoint (cdl,ix+00,iy-48,0,13, M_CROSS|M_BOX, C_GREEN);
+ cdl_markPoint (cdl,ix+45,iy-48,0,13, M_CROSS|M_DIAMOND,C_GREEN);
+ cdl_markPoint (cdl,ix+60,iy-48,0,13, M_CROSS|M_CIRCLE, C_GREEN);
+ cdl_markPoint (cdl,ix+90,iy-48,0,13, M_VLINE|M_HLINE|M_POINT,
+ C_GREEN);
+ cdl_markPoint (cdl,ix+105,iy-48,0,13, M_HLINE|M_VLINE|M_POINT,
+ C_GREEN);
+ cdl_markPoint (cdl,ix+120,iy-48,0,13, M_VBLINE|M_HBLINE|M_POINT,
+ C_GREEN);
+ cdl_markPoint (cdl,ix+135,iy-48,0,13, M_HBLINE|M_VBLINE|M_POINT,
+ C_GREEN);
+ break;
+
+ case '+': /* MARK PLUS */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ if (cdl_markPoint (cdl, ix, iy, 1, 7, M_PLUS, C_KHAKI))
+ printf ("...returns an error\n");
+ break;
+
+ case 'x': /* MARK CROSS */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ if (cdl_markPoint (cdl, ix, iy, 1, 7, M_CROSS, C_CYAN))
+ printf ("...returns an error\n");
+ break;
+
+ case '*': /* MARK STAR */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key);
+ if (cdl_markPoint (cdl, ix, iy, 1, 7, M_STAR, C_GREEN))
+ printf ("...returns an error\n");
+ break;
+
+ case '-':
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ (void) cdl_markPoint (cdl,ix, iy, 0, 30, M_HBLINE, C_RED);
+ break;
+
+ case '|':
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ (void) cdl_markPoint (cdl,ix, iy, 0, 30, M_VBLINE, C_RED);
+ break;
+
+ case '=':
+ cdl_readFrameBuffer (cdl, &pix, &nx, &ny);
+ cdl_printPixToFile (cdl, "foo.eps", pix, nx, ny, 1);
+ break;
+
+ case '&':
+ clock ();
+ for (i=0, ix=16, iy=16; i < 512; i++) {
+ ix = xarray[i] = (ix+10 > 500 ? 16 : ix + 10);
+ iy = yarray[i] = (ix == 16 ? iy + 16: iy);
+ }
+ for (i=0; i < 512; i++) {
+ if (cdl_markPoint (cdl, xarray[i], yarray[i], 0, 7,
+ M_PLUS, C_RED))
+ printf ("...returns an error\n");
+ }
+ printf ("takes %d microseconds\n", clock());
+ break;
+
+ case 'Q':
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ printf("cursor: x=%g/%d y=%g/%d wcs = %d key='%c' frame=%d\n",
+ rx, ix, ry, iy, wcs, key, wcs / 100);
+
+ (void) cdl_queryMap (cdl, wcs, name, &sx, &sy, &snx, &sny,
+ &dx, &dy, &dnx, &dny, obj);
+ printf ("\tregion='%s' ref='%s'\n", name, obj);
+ printf ("\tsrc = %g,%g,%d,%d dest = %d,%d,%d,%d\n",
+ sx, sy, snx, sny, dx, dy, dnx, dny);
+
+ break;
+
+ case '?':
+ print_help();
+ break;
+
+ case '1': /* TEXT STRING */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ if (cdl_markText (cdl, ix, iy, "test", 2, 0.0, C_GREEN))
+ printf ("...returns an error\n");
+ if (cdl_markText (cdl, ix-5, iy+15, "test", 2, 45.0, C_GREEN))
+ printf ("...returns an error\n");
+ if (cdl_markText (cdl, ix-20, iy+30, "test", 2, 90.0, C_GREEN))
+ printf ("...returns an error\n");
+ if (cdl_markText (cdl, ix-35, iy+30, "test", 2, 135.0, C_GREEN))
+ printf ("...returns an error\n");
+ if (cdl_markText (cdl, ix-40, iy+15, "test", 2, 180.0, C_GREEN))
+ printf ("...returns an error\n");
+ if (cdl_markText (cdl, ix-40, iy-10, "test", 2, 225.0, C_GREEN))
+ printf ("...returns an error\n");
+ if (cdl_markText (cdl, ix-30, iy-25, "test", 2, 270.0, C_GREEN))
+ printf ("...returns an error\n");
+ if (cdl_markText (cdl, ix-15, iy-15, "test", 2, 315.0, C_GREEN))
+ printf ("...returns an error\n");
+ break;
+
+ case '2': /* TEXT STRING */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ if (cdl_markText (cdl, ix, iy, "testing", 2, 180.0, C_GREEN))
+ printf ("...returns an error\n");
+ break;
+
+ case '3': /* BLINKING MARKER */
+ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key);
+ ix = (int) (rx + 0.5); iy = (int) (ry + 0.5);
+ cdl_blinkCircle (cdl, ix, iy, 10, C_YELLOW, 5);
+ break;
+
+ case '4': /* BLINKING MARKER */
+ (void) cdl_setCursor (cdl, 100, 100, 0);
+ break;
+ }
+ printf ("Command: ");
+
+ /* gets(cmd); */
+ scanf ("%s", cmd);
+ } while (cmd[0] != 'q');
+
+quit: (void) cdl_close (cdl);
+}
+
+cdl_blinkCircle (cdl, x, y, r, color, nblinks)
+CDLPtr cdl;
+int x;
+int y;
+int r;
+int color;
+int nblinks;
+{
+ char *init, *mark, *blink;
+ int i, dim = 2*r + 2, DIM=4*r + 2;
+
+ init = (char *) malloc (DIM*DIM);
+ mark = (char *) malloc (dim*dim);
+ blink = (char *) malloc (DIM*DIM);
+
+ cdl_readSubRaster (cdl, x-dim, y-dim, DIM, DIM, &init);
+
+ cdl_setLineWidth (cdl, 3);
+ cdl_markCircle (cdl, x, y, 2*r-1, 0, color);
+ cdl_readSubRaster (cdl, x-dim, y-dim, DIM, DIM, &blink);
+ cdl_setLineWidth (cdl, 1);
+
+ cdl_markCircle (cdl, x, y, r, 0, color);
+ cdl_readSubRaster (cdl, x-r, y-r, 2*r, 2*r, &mark);
+
+ for (i=0; i<nblinks; i++) {
+ cdl_writeSubRaster (cdl, x-dim, y-dim, DIM, DIM, blink);
+ usleep (333*1000);
+ cdl_writeSubRaster (cdl, x-r, y-r, 2*r, 2*r, mark);
+ usleep (333*1000);
+ cdl_writeSubRaster (cdl, x-dim, y-dim, DIM, DIM, init);
+ usleep (333*1000);
+ }
+ cdl_writeSubRaster (cdl, x-r, y-r, 2*r, 2*r, mark);
+
+ free ((char *)init);
+ free ((char *)blink);
+ free ((char *)mark);
+}
+
+
+print_help ()
+{
+ printf ("\n");
+ printf (" b - mark box ");
+ printf (" B - fill box ");
+ printf (" c - clear frame "); printf ("\n");
+ printf (" d - delete marker ");
+ printf (" D - delete overlay ");
+ printf (" e - mark ellipse "); printf ("\n");
+ printf (" E - mark ellip ann ");
+ printf (" f - display FITS ");
+ printf (" g - read image "); printf ("\n");
+ printf (" G - read fb ");
+ printf (" i - display iraf ");
+ printf (" l - mark line "); printf ("\n");
+ printf (" m - mark point ");
+ printf (" n - next frame ");
+ printf (" N - next config "); printf ("\n");
+ printf (" M - mark all pts ");
+ printf (" o - mark circle ");
+ printf (" O - mark circle ann "); printf ("\n");
+ printf (" p - previous frame ");
+ printf (" P - prev config ");
+ printf (" q - quit "); printf ("\n");
+ printf (" r - read cursor ");
+ printf (" s - text string ");
+ printf (" S - sample cursor "); printf ("\n");
+ printf (" t - test image ");
+ printf (" T - tile image ");
+ printf (" w - set wcs "); printf ("\n");
+ printf (" W - get wcs ");
+ printf (" ( - mark polyline ");
+ printf (" ) - mark polygon "); printf ("\n");
+ printf (" + - mark plus ");
+ printf (" x - mark cross ");
+ printf (" * - mark star "); printf ("\n");
+ printf (" = - test hardcopy ");
+ printf (" & - time 512 points ");
+ printf (" > - enable debug "); printf ("\n");
+ printf (" < - disable debug ");
+ printf (" ? - help ");
+ printf (" , - dec linewidth "); printf ("\n");
+ printf (" . - inc linewidth ");
+ printf (" [ - dec textwidth ");
+ printf (" ] - inc textwidth "); printf ("\n");
+ printf (" { - dec linestyle ");
+ printf (" } - inc linestyle ");
+ printf (" Q - query mapping "); printf ("\n");
+}
+
+
+make_raster (raster, nx, ny, color)
+uchar *raster;
+int nx, ny, color;
+{
+ register uchar pix;
+ register int i, j;
+ register float scale;
+
+ if (color > 0) {
+ /* Build a solid color */
+ for (i = 0; i < nx; i++) {
+ for (j = 0; j < ny; j++) {
+ raster[i * nx + j] = (uchar) color;
+ }
+ }
+ } else {
+ /* Make a test pattern. */
+ for (i = 0; i < nx; i++) {
+ for (j = 0; j < ny; j++) {
+/* Diagonal ramp
+*/
+ scale = 200. / (float)(ny) / 2.;
+ pix = (uchar) max(2, (min(200,(scale*i + scale*j))));
+/* Vertical ramp
+ scale = 200. / (float)(ny);
+ pix = (uchar) max(2, (min(200,(scale * i))));
+*/
+/* Horizontal ramp
+ scale = 200. / (float)(nx);
+ pix = (uchar) max(2, (min(200,(scale * j))));
+*/
+ raster[i * nx + j] = pix;
+ }
+ }
+ }
+}
+
diff --git a/vendor/x11iraf/cdl/test/coords b/vendor/x11iraf/cdl/test/coords
new file mode 100644
index 00000000..7f6fcdf5
--- /dev/null
+++ b/vendor/x11iraf/cdl/test/coords
@@ -0,0 +1,42 @@
+ 49 343
+ 59 226
+ 68 459
+ 87 481
+ 92 319
+ 97 106
+113 143
+126 117
+133 391
+134 109
+134 221
+144 345
+150 83
+179 355
+182 63
+211 328
+218 439
+219 314
+225 129
+241 403
+265 340
+269 355
+288 133
+292 104
+294 178
+320 327
+321 32
+329 409
+338 325
+348 231
+349 188
+364 325
+365 124
+377 368
+381 67
+405 274
+415 187
+442 409
+452 212
+466 62
+472 232
+508 445
diff --git a/vendor/x11iraf/cdl/test/imdtest.c b/vendor/x11iraf/cdl/test/imdtest.c
new file mode 100644
index 00000000..d43c023e
--- /dev/null
+++ b/vendor/x11iraf/cdl/test/imdtest.c
@@ -0,0 +1,336 @@
+#include <stdio.h>
+#define CDL_LIBRARY_SOURCE
+#include "cdl.h"
+
+#define TEST_PATTERN -1
+
+/* Utility macros. */
+#define max(a,b) (a > b ? a : b)
+#define min(a,b) (a < b ? a : b)
+
+
+/* IMDTEST -- Test routines for the IMD package.
+ */
+
+main()
+{
+ IMDPtr imd, imd_open();
+ char key, cmd[2], name[SZ_NAME], title[SZ_NAME];
+ int i, j, zt=1, frame=1, fbconfig=2, color=201;
+ int debug = 1, nx, ny, ix=128, iy=128, wcs=0;
+ int xarray[1024], yarray[1024];
+ float rx=128., ry=128.;
+ float a, b, c, d, tx, ty, z1, z2;
+ uchar pix, raster[1024*1024];
+
+ imd_setDebug (debug);
+ com_setDebug (debug);
+ if ((imd = imd_open ((char *)getenv("IMTDEV"))) == (IMDPtr) NULL)
+ exit ();
+
+ cmd[0] = 'd';
+ cmd[1] = '\n';
+ print_help();
+ do {
+ switch (cmd[0]) {
+ case '+': /* ENABLE DEBUG */
+ imd_setDebug (++debug);
+ break;
+
+ case '-': /* DISABLE DEBUG */
+ imd_setDebug (--debug);
+ break;
+
+ case 's': /* SAMPLE CURSOR */
+ sleep (2);
+ if (imd_readCursor (imd, 1, &rx, &ry, &wcs, &key))
+ printf ("...returns an error\n");
+ printf ("cursor: x=%g y=%g key='%c'\n", rx, ry, key);
+ break;
+
+ case 'c': /* SET CURSOR */
+ sleep (2);
+ if (imd_setCursor (imd, 256, 256))
+ printf ("...returns an error\n");
+ break;
+
+ case 'C': /* READ CURSOR */
+ if (imd_readCursor (imd, 0, &rx, &ry, &wcs, &key))
+ printf ("...returns an error\n");
+ ix = (int) rx;
+ iy = (int) ry;
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n",
+ rx, ix, ry, iy, key);
+ break;
+
+ case 'd': /* WRITE IMAGE */
+ printf ("creating raster....\n");
+ /*
+ make_raster (raster, 1024, 1024, TEST_PATTERN);
+ */
+ make_raster (raster, 512, 512, TEST_PATTERN);
+ imd_setName (imd, "test image");
+ imd_setTitle (imd, "test title");
+ printf ("displaying raster....\n");
+ /*
+ if (imd_displayImage(imd,raster,1024,1024,frame,fbconfig,1))
+ printf ("...returns an error\n");
+ */
+ if (imd_displayImage(imd,raster,512,512,frame,fbconfig,1))
+ printf ("...returns an error\n");
+ break;
+
+ case 'D': /* READ IMAGE */
+ if (imd_readImage (imd, raster, &nx, &ny))
+ printf ("...returns an error\n");
+ printf ("corners: nx=%d ny=%d LL = [%d] UR = [%d]\n",
+ nx, ny, raster[0], raster[nx*ny-1]);
+ if (imd_displayImage(imd,raster,nx,ny,frame,fbconfig,1))
+ printf ("...returns an error\n");
+ break;
+
+ case 'e': /* ERASE FRAME */
+ if (imd_clearFrame (imd))
+ printf ("...returns an error\n");
+ break;
+
+ case 'F': /* READ FB */
+ if (imd_readFrameBuffer (imd, raster, &nx, &ny))
+ printf ("...returns an error\n");
+ printf ("fb corners: nx=%d ny=%d LL = [%d] UR = [%d]\n",
+ nx, ny, raster[0], raster[nx*ny-1]);
+ if (imd_displayImage(imd,raster,nx,ny,frame,fbconfig,1))
+ printf ("...returns an error\n");
+ break;
+
+ case 'm': /* MARK POINT */
+ for (key='z'; key != 'q'; ) {
+ if (imd_readCursor (imd, 0, &rx, &ry, &wcs, &key))
+ printf ("...returns an error\n");
+ ix = (int) rx;
+ iy = (int) ry;
+ printf ("cursor: x=%g/%d y=%g/%d key='%c'\n",
+ rx, ix, ry, iy, key);
+ make_raster (raster, 16, 16, color);
+ color = (color+1 > 209 ? 201 : color+1);
+ if (imd_writeSubRaster (imd, ix-8, iy-8, 16, 16, raster))
+ printf ("...returns an error\n");
+ }
+ break;
+
+ case 'n': /* NEXT FRAME */
+ frame = (frame+1 > 4 ? 1 : frame+1);
+ if (imd_setFrame (imd, frame))
+ printf ("...returns an error\n");
+ printf ("imd->frame = %d\n", imd->frame);
+ break;
+
+ case 'N': /* NEXT CONFIG */
+ fbconfig = (fbconfig+1 > 12 ? 1 : fbconfig+1);
+ if (imd_setFBConfig (imd, fbconfig))
+ printf ("...returns an error\n");
+ i = imd->fbconfig - 1;
+ printf ("imd->fbconfig = %d/%d [%d %d %d %d]\n", imd->fbconfig,
+ i, imd->fbtab[i]->config, imd->fbtab[i]->nframes,
+ imd->fbtab[i]->width, imd->fbtab[i]->height);
+ break;
+
+ case 'p': /* PREVIOUS FRAME */
+ frame = (frame-1 < 1 ? 4 : frame-1);
+ if (imd_setFrame (imd, frame))
+ printf ("...returns an error\n");
+ printf ("imd->frame = %d\n", imd->frame);
+ break;
+
+ case 'P': /* PREV CONFIG */
+ if (imd_setFBConfig (imd, fbconfig))
+ printf ("...returns an error\n");
+ fbconfig = (fbconfig-1 < 1 ? 12 : fbconfig)-1;
+ i = imd->fbconfig - 1;
+ printf ("imd->fbconfig = %d/%d [%d %d %d %d]\n", imd->fbconfig,
+ i, imd->fbtab[i]->config, imd->fbtab[i]->nframes,
+ imd->fbtab[i]->width, imd->fbtab[i]->height);
+ break;
+
+ case 'q': /* QUIT */
+ goto quit;
+ case 'f': /* (FAST) REGION */
+ make_raster (raster, 256, 256, TEST_PATTERN);
+ for (i=0; i < 256; i++) /* diagonal */
+ (void) imd_writeSubRaster(imd,i,i,256,256,raster);
+ for (; i > 0; i--) /* left */
+ (void) imd_writeSubRaster(imd,i,256,256,256,raster);
+ for (i=256; i > 0; i--) /* down */
+ (void) imd_writeSubRaster(imd,0,i,256,256,raster);
+ for (i=0; i < 256; i++) /* right */
+ (void) imd_writeSubRaster(imd,i,0,256,256,raster);
+ for (i=0; i < 256; i++) /* up */
+ (void) imd_writeSubRaster(imd,256,i,256,256,raster);
+ break;
+ case 'r': /* WRITE REGION */
+ make_raster (raster, 256, 256, TEST_PATTERN);
+ for (i=0; i < 100; i++) {
+ if (imd_writeSubRaster (imd,103+i,103+i,256,256,raster)) {
+ printf ("...returns an error\n");
+ break;
+ }
+ }
+
+ /* Old test to make sure we clip properly.
+
+ make_raster (raster, 32, 32, color);
+ if (imd_writeSubRaster (imd, -16, -16, 32, 32, raster))
+ printf ("...returns an error\n");
+ if (imd_writeSubRaster (imd, -16, 496, 32, 32, raster))
+ printf ("...returns an error\n");
+ if (imd_writeSubRaster (imd, 496, -16, 32, 32, raster))
+ printf ("...returns an error\n");
+ if (imd_writeSubRaster (imd, 496, 496, 32, 32, raster))
+ printf ("...returns an error\n");
+ */
+ color = (color+1 > 209 ? 201 : color+1);
+ break;
+
+ case 'R': /* READ REGION */
+ if (imd_readSubRaster (imd, -8, -8, 16, 16, raster))
+ printf ("...returns an error\n");
+ for (i=15; i > 0; i--) {
+ for (j=0; j < 16; j++) {
+ printf ("%3d ", raster[i * 16 + j]);
+ raster[i * 16 + j] = 0;
+ }
+ printf ("\n");
+ }
+ if (imd_writeSubRaster (imd, -8, -8, 16, 16, raster))
+ printf ("...returns an error\n");
+ break;
+
+ case 'w': /* SET WCS */
+ if (imd_setWCS (imd, "imaname", "imtitle", 1., 0., 0., -1., 0.,
+ 0., 1., 255., 1))
+ printf ("...returns an error\n");
+ break;
+
+ case 'W': /* GET WCS */
+ if (imd_setWCS (imd, name, title, &a, &b, &c, &d, &tx, &ty,
+ &z1, &z2, &zt))
+ printf ("...returns an error\n");
+ printf ("name='%s' title='%s'\n a=%g b=%g c=%g d=%g tx=%g ty=%g z1=%g z2=%g zt=%d\n", name, title, a, b, c, d, tx, ty, z1, z2, zt);
+ break;
+
+ case '?':
+ print_help();
+ break;
+
+ case '1': /* WRITE CLIPPING */
+ printf ("creating raster....\n");
+ make_raster (raster, 512, 512, TEST_PATTERN);
+ imd_setFrame (imd, frame);
+ imd_clearFrame (imd);
+ imd_setFBConfig (imd, fbconfig);
+ imd_setName (imd, "test image");
+ imd_setTitle (imd, "test title");
+ printf ("displaying raster....\n");
+ if (imd_writeImage(imd,raster,512,512,-8, -8))
+ printf ("...returns an error\n");
+ break;
+
+ case '2': /* READ CLIPPING */
+ if (imd_readSubRaster (imd, -8, -8, 16, 16, raster))
+ printf ("...returns an error\n");
+ for (i=15; i >= 0; i--) {
+ for (j=0; j < 16; j++)
+ printf ("%3d ", raster[i * 16 + j]);
+ printf ("\n");
+ }
+ if (imd_writeSubRaster (imd, -8, -8, 16, 16, raster))
+ printf ("...returns an error\n");
+ break;
+
+ case 'a':
+ clock ();
+ for (i=0, ix=16, iy=16; i < 1024; i++) {
+ ix = xarray[i] = (ix+10 > 500 ? 16 : ix + 10);
+ iy = yarray[i] = (ix == 16 ? iy + 16: iy);
+ }
+ for (i=0; i < 1024; i++) {
+ make_raster (raster, 8, 8, color);
+ color = (color+1 > 209 ? 201 : color+1);
+ if (imd_writeSubRaster (imd, xarray[i], yarray[i],
+ 8, 8, raster))
+ printf ("...returns an error\n");
+ }
+ printf ("takes %d microseconds\n", clock());
+ }
+ printf ("Command: ");
+
+ scanf ("%s", cmd);
+ } while (cmd[0] != 'q');
+
+quit: (void) imd_close (imd);
+}
+
+
+print_help ()
+{
+ printf ("\n");
+ printf (" c - set cursor ");
+ printf (" C - read cursor ");
+ printf (" d - write image "); printf ("\n");
+ printf (" D - read image ");
+ printf (" e - erase frame ");
+ printf (" F - read frame buf "); printf ("\n");
+ printf (" m - mark points ");
+ printf (" n - next frame ");
+ printf (" N - next config "); printf ("\n");
+ printf (" p - previous frame ");
+ printf (" P - prev config ");
+ printf (" q - quit "); printf ("\n");
+ printf (" r - write region ");
+ printf (" R - read region ");
+ printf (" s - sample cursor "); printf ("\n");
+ printf (" w - set wcs ");
+ printf (" W - get wcs ");
+ printf (" ? - print help "); printf ("\n");
+ printf (" + - enable debug ");
+ printf (" - - disable debug "); printf ("\n");
+}
+
+
+make_raster (raster, nx, ny, color)
+uchar *raster;
+int nx, ny, color;
+{
+ register uchar pix;
+ register int i, j;
+ register float scale;
+
+ if (color > 0) {
+ /* Build a solid color */
+ for (i = 0; i < nx; i++) {
+ for (j = 0; j < ny; j++) {
+ raster[i * nx + j] = (uchar) color;
+ }
+ }
+ } else {
+ /* Make a test pattern. */
+ for (i = 0; i < nx; i++) {
+ for (j = 0; j < ny; j++) {
+/* Diagonal ramp
+*/
+ scale = 200. / (float)(ny) / 2.;
+ pix = (uchar) max(2, (min(200,(scale*i + scale*j))));
+/* Vertical ramp
+ scale = 200. / (float)(ny);
+ pix = (uchar) max(2, (min(200,(scale * i))));
+*/
+/* Horizontal ramp
+ scale = 200. / (float)(nx);
+ pix = (uchar) max(2, (min(200,(scale * j))));
+*/
+ raster[i * nx + j] = pix;
+ }
+ }
+ }
+}
+
diff --git a/vendor/x11iraf/cdl/test/zzdebug.x b/vendor/x11iraf/cdl/test/zzdebug.x
new file mode 100644
index 00000000..352b0657
--- /dev/null
+++ b/vendor/x11iraf/cdl/test/zzdebug.x
@@ -0,0 +1,44 @@
+include "../cdlspp.h"
+
+# ZZDEBUG -- Quickie demo tasks of the CDL SPP language binding.
+
+
+task display = t_display,
+ tvmark = t_tvmark,
+ rimcur = t_rimcur
+
+
+procedure t_display ()
+int ier
+begin
+ call cdl_open ("", ier)
+ call cdl_displayIRAF ("/iraf/iraf/dev/pix.imh", 1, 1, 1, 1, ier)
+ call cdl_close ()
+end
+
+procedure t_tvmark ()
+int ier
+begin
+ call cdl_open ("", ier)
+ call cdl_displayIRAF ("/iraf/iraf/dev/pix.imh", 1, 1, 1, 1, ier)
+ call cdl_markCoordsFile ("coords", M_PLUS, 11, C_GREEN, YES, ier)
+ call cdl_close ()
+end
+
+procedure t_rimcur ()
+int ier
+char key
+real x, y
+begin
+ call cdl_open ("", ier)
+ key = 'a'
+ while (key != 'q' && key != EOS) {
+ call cdl_readCursor (0, x, y, key, ier)
+ call printf ("x=%.2g y=%.2g key='%c' ier=%d\n")
+ call pargr (x)
+ call pargr (y)
+ call pargc (key)
+ call pargi (ier)
+ }
+ call cdl_close ()
+end