diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2017-09-08 20:35:37 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2017-09-08 20:35:37 (GMT) |
commit | 2c0391ff033e38bec876555a1b0d7ffbbe525d4a (patch) | |
tree | ff91cf9102af305f1c8d71b246ed495e3c761b1e | |
parent | 335a28c2222230bb443f680e1c51cdaddafcceb1 (diff) | |
download | blt-2c0391ff033e38bec876555a1b0d7ffbbe525d4a.zip blt-2c0391ff033e38bec876555a1b0d7ffbbe525d4a.tar.gz blt-2c0391ff033e38bec876555a1b0d7ffbbe525d4a.tar.bz2 |
new AST support
-rw-r--r-- | tksao/frame/fitsimage.C | 36 | ||||
-rw-r--r-- | tksao/frame/fitsimage.h | 3 | ||||
-rw-r--r-- | tksao/frame/grid2d.C | 11 |
3 files changed, 49 insertions, 1 deletions
diff --git a/tksao/frame/fitsimage.C b/tksao/frame/fitsimage.C index 830eb27..884fac2 100644 --- a/tksao/frame/fitsimage.C +++ b/tksao/frame/fitsimage.C @@ -3448,6 +3448,8 @@ void FitsImage::astinit(int ii, FitsHead* hd, FitsHead* prim) // DSS,PLT,LIN goes straight to AST // we can't send 3D directly to AST + ast_[ii] = fits2ast(hd); + /* if (wcs_[ii]->prjcode==WCS_DSS || wcs_[ii]->prjcode==WCS_PLT || (wcs_[ii]->prjcode==WCS_LIN && !strncmp(wcs_[ii]->ptype,"HPX",3)) || @@ -3457,7 +3459,7 @@ void FitsImage::astinit(int ii, FitsHead* hd, FitsHead* prim) ast_[ii] = fits2ast(hd); else ast_[ii] = buildast(ii, hd, prim); - + */ if (!ast_[ii]) return; @@ -3506,6 +3508,38 @@ void FitsImage::setAstFormat(AstFrameSet* aa, int id, const char* format) astSet(aa, str.str().c_str()); } +#ifdef NEWWCS +void FitsImage::setAstSystem(AstFrameSet* fs, Coord::CoordSystem sys, + Coord::SkyFrame sky) +{ + int nn = astGetI(fs,"nframe"); + char cc = ' '; + int ww = sys-Coord::WCS; + switch (sys) { + case Coord::DATA: + case Coord::IMAGE: + case Coord::PHYSICAL: + case Coord::AMPLIFIER: + case Coord::DETECTOR: + // this should not happen + return; + default: + if (ww) + cc = ww+'@'; + } + + for (int ii=0; ii<nn; ii++) { + const char* id = astGetC(astGetFrame(fs,ii+1),"Ident"); + if (cc == id[0]) { + astSetI(fs,"current",ii+1); + break; + } + } + + setAstSkyFrame(fs,sky); +} +#endif + void FitsImage::setAstSkyFrame(AstFrameSet* aa, Coord::SkyFrame sky) { // is sky frame diff --git a/tksao/frame/fitsimage.h b/tksao/frame/fitsimage.h index 3a6e902..39bf8ae 100644 --- a/tksao/frame/fitsimage.h +++ b/tksao/frame/fitsimage.h @@ -390,6 +390,9 @@ class FitsImage { double getWCSRotation(Coord::CoordSystem, Coord::SkyFrame); Vector getWCScdelt(Coord::CoordSystem); +#ifdef NEWWCS + void setAstSystem(AstFrameSet*, Coord::CoordSystem, Coord::SkyFrame); +#endif void setAstSkyFrame(AstFrameSet*, Coord::SkyFrame); void setAstFormat(AstFrameSet*, int, const char*); AstFrameSet* getAST(Coord::CoordSystem sys) diff --git a/tksao/frame/grid2d.C b/tksao/frame/grid2d.C index ce472e5..31a0028 100644 --- a/tksao/frame/grid2d.C +++ b/tksao/frame/grid2d.C @@ -68,6 +68,7 @@ int Grid2d::doit(RenderMode rm) break; default: { +#ifndef NEWWCS AstFrameSet* wcsfs = (AstFrameSet*)astCopy(fits->getAST(system_)); // set desired skyformat @@ -81,6 +82,16 @@ int Grid2d::doit(RenderMode rm) astAddFrame(frameSet,2,astUnitMap(2,""),wcsfs); astSetI(frameSet,"current",astGetI(frameSet,"nframe")); } +#else + AstFrameSet* wcs = (AstFrameSet*)astCopy(fits->getAST(system_)); + + // add wcs to frameset + // this will link frameset to wcs with unitMap + astInvert(wcs); + astAddFrame(frameSet,2,astUnitMap(2,""),wcs); + fits->setAstSystem(frameSet,system_,sky_); + } +#endif } astSet(frameSet,"Title=%s", " "); |