procedure tvmarkall (image) char image {prompt="image name"} real zlo =0. {prompt="lower cut level (display)"} real zhi =0. {prompt="upper cut level"} bool gal =yes {prompt="mark galaxies?"} bool star =yes {prompt="mark stars?"} bool cosmic =yes {prompt="mark cosmics?"} bool del =yes {prompt="mark deletions?"} bool region =yes {prompt="mark regions?"} string regfil =".reg" {prompt="name or extension of regions file"} int regclr =0 {prompt="regions color (0=default,204=r,205=g,206=b)"} bool dotransp=no {prompt="transpose coordinates in mark files?"} bool redispl =yes {prompt="(re)display image first?"} # @(#) task tvmarkall Author: R.A. Jansen/S.P.W.(?) -- May 25 1994 # @(#) # @(#) task to mark positions/regions on a loaded image. Positions and/ # @(#) or regions are read from files 'galfile', 'starfile', 'crfile', # @(#) and 'delfile', created by appending the strings '.pos.gal', # @(#) '.pos.star', '.pos.cosmic' and '.pos.del' to the image name, and # @(#) are each overplotted on the display using a different color. # @(#) The 'tv' package must be loaded and saoimage (imtool) started. # @(#) # @(#) Apr.19 1996 -- Added checks for existence region files: ungrace- # @(#) full exits are fixed. Added cut levels for image # @(#) display. (R.A.J.) # @(#) Aug.21 1996 -- Added switches for marking galaxy, stars, cosmics # @(#) and deletions separately; added redisplay switch. # @(#) Aug.23 1999 -- Added dotransp switch. (R.A.J.) # @(#) Jun.21 2000 -- Added support for other image formats. (R.A.J.) # @(#) Jul.27 2001 -- Added region switch to mark any region. (R.A.J.) begin char imagefile, galfile, starfile, crfile, delfile, rgnfile int l, imglen, clr file tmptvmark, inl string rest real imsiz, r, x,y, x0,y0, r2, tr,tx,ty, tt imagefile = image rgnfile = regfil # Make sure the 'tv' package is loaded... if ( !defpac("tv") ) { error(2,"Please load package 'tv' first!") } # Check whether the image exists... unlearn chkimg chkimg (imagefile, "access", verbose=yes) if (!chkimg.ok) { return } # Construct the region file names ... imagefile = chkimg.imroot//chkimg.imtype//chkimg.imrpstr galfile = chkimg.imroot//".pos.gal" starfile = chkimg.imroot//".pos.star" crfile = chkimg.imroot//".pos.cosmic" delfile = chkimg.imroot//".pos.del" if ( region ) { if ( rgnfile == "" ) { rgnfile = chkimg.imroot//".pos.reg" } else { if ( substr(rgnfile,1,1) == "." ) { rgnfile = chkimg.imroot//rgnfile } } chkimg (rgnfile, "access", imtype="file", verbose=yes) if (!chkimg.ok) { return } } # (Re)display image if redispl=yes ... if (redispl) { if (zlo != 0. || zhi != 0.) { xdisplay (imagefile, z1=zlo, z2=zhi) } else { xdisplay (imagefile) } } # Get the image size in pixels... imgets(imagefile, "naxis2") ; imsiz = real(imgets.value) # Check whether at least one positions/regions file is present... if ( !access(galfile) && !access(starfile) && !access(crfile) && !access(delfile) && !region ) { error (1, "No positions/regions files found!") } if ((gal&&!access(galfile))&&(star&&!access(starfile))&&(del&&!access(delfile))&&(cosmic&&!access(crfile))) { error (1, "No objects to mark!") } # At least one positions/regions file is present, apparently... if ( access(galfile) && gal ) { tvmark (frame=1, coor=galfile, logfile="", autolog=no, commands="", outimage="", mark="plus", radii="0", lengths="0", label=no, number=no, nxoffset=0, nyoffset=0, txsize=1, pointsize=1, font="raster", color=201, interactive=no, > "dev$null", >& "STDERR" ) } if ( access(starfile) && star ) { tmptvmark = mktemp("tvmark") list = starfile rest = "" while( fscan(list,x,y,r,rest) != EOF ) { if ( rest != "" ) { if (dotransp) { tx = imsiz - real(rest) + 1 ty = imsiz - r + 1 tr = imsiz - y + 1 tt = imsiz - x + 1 print(tx,tr," 204 b", >> tmptvmark) print(ty,tt," 204 b", >> tmptvmark) } else { print(x,r," 204 b", >> tmptvmark) print(y,rest," 204 b", >> tmptvmark) } } else { if (dotransp) { tx = imsiz - y + 1 ty = imsiz - x + 1 print(tx,ty," 204 v", >> tmptvmark) tx = tx + r print(tx,ty," 204 v", >> tmptvmark) } else { print(x,y," 204 v", >> tmptvmark) x = x + r print(x,y," 204 v", >> tmptvmark) } } rest = "" } tvmark (frame=1, coor="", logfile="", autolog=no, commands=tmptvmark, outimage="", mark="point", radii="0", lengths="0", label=no, number=no, nxoffset=0, nyoffset=0, txsize=1, pointsize=3, font="raster", color=204, interactive=no, > "dev$null", >& "STDERR" ) delete(tmptvmark, verify=no) } if ( access(delfile) && del ) { tmptvmark=mktemp("tvmark") list=delfile rest="" while(fscan(list,x,y,r,rest) != EOF) { if (rest != "" ) { if (dotransp) { tx = imsiz - real(rest) + 1 ty = imsiz - r + 1 tr = imsiz - y + 1 tt = imsiz - x + 1 print(tx,tr," 207 b", >> tmptvmark) print(ty,tt," 207 b", >> tmptvmark) } else { print(x,r," 207 b", >> tmptvmark) print(y,rest," 207 b", >> tmptvmark) } } else { if (dotransp) { tx = imsiz - y + 1 ty = imsiz - x + 1 print(tx,ty," 207 v", >> tmptvmark) tx = tx + r print(tx,ty," 207 v", >> tmptvmark) } else { print(x,y," 207 v", >> tmptvmark) x = x + r print(x,y," 207 v", >> tmptvmark) } } rest = "" } tvmark (frame=1, coor="", logfile="", autolog=no, commands=tmptvmark, outimage="", mark="point", radii="0", lengths="0", label=no, number=no, nxoffset=0, nyoffset=0, txsize=1, pointsize=3, font="raster", color=207, interactive=no, > "dev$null", >& "STDERR" ) delete(tmptvmark, verify=no) } if ( access(crfile) && cosmic ) { tmptvmark=mktemp("tvmark") list=crfile rest="" while(fscan(list,x,y,r,rest) != EOF) { if (rest != "" ) { if (dotransp) { tx = imsiz - real(rest) + 1 ty = imsiz - r + 1 tr = imsiz - y + 1 tt = imsiz - x + 1 print(tx,tr," 206 b", >> tmptvmark) print(ty,tt," 206 b", >> tmptvmark) } else { print(x,r," 206 b", >> tmptvmark) print(y,rest," 206 b", >> tmptvmark) } } else { if (dotransp) { tx = imsiz - y + 1 ty = imsiz - x + 1 print(tx,ty," 206 v", >> tmptvmark) tx = tx + r print(tx,ty," 206 v", >> tmptvmark) } else { print(x,y," 206 v", >> tmptvmark) x = x + r print(x,y," 206 v", >> tmptvmark) } } rest = "" } tvmark (frame=1, coor="", logfile="", autolog=no, commands=tmptvmark, outimage="", mark="point", radii="0", lengths="0", label=no, number=no, nxoffset=0, nyoffset=0, txsize=1, pointsize=3, font="raster", color=206, interactive=no, > "dev$null", >& "STDERR" ) delete(tmptvmark, verify=no) } if ( region ) { clr = regclr if ( clr == 0 ) { clr = 212 } tmptvmark=mktemp("tvmark") list=rgnfile rest="" while(fscan(list,x,y,r,rest) != EOF) { if (rest != "" ) { if (dotransp) { tx = imsiz - real(rest) + 1 ty = imsiz - r + 1 tr = imsiz - y + 1 tt = imsiz - x + 1 print(tx,tr," ",clr," b", >> tmptvmark) print(ty,tt," ",clr," b", >> tmptvmark) } else { print(x,r," ",clr," b", >> tmptvmark) print(y,rest," ",clr," b", >> tmptvmark) } } else { if (dotransp) { tx = imsiz - y + 1 ty = imsiz - x + 1 print(tx,ty," ",clr," v", >> tmptvmark) tx = tx + r print(tx,ty," ",clr," v", >> tmptvmark) } else { print(x,y," ",clr," v", >> tmptvmark) x = x + r print(x,y," ",clr," v", >> tmptvmark) } } rest = "" } tvmark (frame=1, coor="", logfile="", autolog=no, commands=tmptvmark, outimage="", mark="point", radii="0", lengths="0", label=no, number=no, nxoffset=0, nyoffset=0, txsize=1, pointsize=3, font="raster", color=clr, interactive=no, > "dev$null", >& "STDERR" ) delete(tmptvmark, verify=no) } end