diff options
Diffstat (limited to 'funtools/funtest/qcon.c')
-rw-r--r-- | funtools/funtest/qcon.c | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/funtools/funtest/qcon.c b/funtools/funtest/qcon.c deleted file mode 100644 index a5d2e2d..0000000 --- a/funtools/funtest/qcon.c +++ /dev/null @@ -1,123 +0,0 @@ -/* gcc -g -o qcon qcon.c -I/soft/saord/include -L/soft/saord/lib -lfuntools -lsocket -lnsl -ldl -lm */ - -#include <funtools.h> -#include <stdlib.h> - -extern char *optarg; -extern int optind; - -int main(int argc, char **argv) -{ - int c; - int args; - int offscl; - int dim1, dim2; - int ix, iy; - int offset; - int debug=0; - int dowcs=1; - int idx=0; - char tbuf[SZ_LINE]; - double dval1, dval2; - double dx, dy; - double *dbuf; - struct WorldCoor *wcs; - Fun fun; - - /* process switch arguments */ - while( (c = getopt(argc, argv, "d")) != -1){ - switch(c){ - case 'd': - debug = 1; - break; - case 'i': - dowcs = 0; - break; - } - } - - /* check for required arguments */ - args = argc - optind; - if( args < 1 ){ - fprintf(stderr, "usage: %s iname -d -i\n", argv[0]); - fprintf(stderr, "\n"); - fprintf(stderr, "where:\n"); - fprintf(stderr, " -d\tprint out input and output position values\n"); - fprintf(stderr, " -i\tinput values are image x,y (not ra,dec in deg)\n"); - fprintf(stderr, "\n"); - exit(1); - } - - /* exit on gio errors */ - setgerror(2); - - /* open the input FITS file */ - if( !(fun = FunOpen(argv[optind], "r", NULL)) ) - gerror(stderr, "could not FunOpen input file: %s\n", argv[optind]); - - /* extract and bin the data section into a double float image buffer */ - if( !(dbuf = FunImageGet(fun, NULL, "bitpix=-64")) ) - gerror(stderr, "could not FunImageGet: %s\n", argv[1]); - - /* get required information from funtools structure */ - FunInfoGet(fun, - FUN_SECT_DIM1, &dim1, - FUN_SECT_DIM2, &dim2, - FUN_WCS, &wcs, - 0); - - /* for each line in the contour file ... */ - while( fgets(tbuf, SZ_LINE, stdin) ){ - /* ignore comments */ - if( *tbuf == '#' ) - continue; - /* blank lines means reset counter */ - if( *tbuf == '\n' ){ - fprintf(stdout, "\n"); - idx = 0; - continue; - } - /* input contour values: ra, dec in degrees (or image coords if -i) */ - if(sscanf(tbuf, "%lf %lf", &dval1, &dval2) != 2){ - gerror(stderr, "invalid line in contour file: %s\n", tbuf); - } - /* convert input ra, dec to image x, y */ - if( dowcs ){ - wcs2pix(wcs, dval1, dval2, &dx, &dy, &offscl); - /* make sure we are not off scale */ - if( offscl ){ - fprintf(stderr, "warning: wcs position is offscale: %s\n", tbuf); - continue; - } - } - else{ - dx = dval1; - dy = dval2; - } - /* convert image values to integers */ - ix = (int)(dx+0.5); - iy = (int)(dy+0.5); - /* sanity checks -- must be inside the image */ - if( (ix < 1) || (ix > dim1) || (iy < 1) || (iy > dim2)){ - fprintf(stderr, "warning: image position off image: %s\n", tbuf); - continue; - } - /* calculate offset into dbuf */ - offset = (iy-1)*dim1 + ix-1; - /* write out the index and the pixel value at the image position */ - fprintf(stdout, "%d\t%f", idx, dbuf[offset]); - /* debugging info, if necessary */ - if( debug ){ - fprintf(stdout, "\t %f %f\t%d %d", dval1, dval2, ix, iy); - } - /* finish off line */ - fprintf(stdout, "\n"); - /* bump to next index */ - idx++; - } - - /* close output first so that flush happens automatically */ - FunClose(fun); - if( dbuf ) free(dbuf); - return(0); -} |