summaryrefslogtreecommitdiffstats
path: root/funtools/funtest/qcon.c
diff options
context:
space:
mode:
Diffstat (limited to 'funtools/funtest/qcon.c')
-rw-r--r--funtools/funtest/qcon.c123
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);
-}