summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2017-09-08 20:35:37 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2017-09-08 20:35:37 (GMT)
commit2c0391ff033e38bec876555a1b0d7ffbbe525d4a (patch)
treeff91cf9102af305f1c8d71b246ed495e3c761b1e
parent335a28c2222230bb443f680e1c51cdaddafcceb1 (diff)
downloadblt-2c0391ff033e38bec876555a1b0d7ffbbe525d4a.zip
blt-2c0391ff033e38bec876555a1b0d7ffbbe525d4a.tar.gz
blt-2c0391ff033e38bec876555a1b0d7ffbbe525d4a.tar.bz2
new AST support
-rw-r--r--tksao/frame/fitsimage.C36
-rw-r--r--tksao/frame/fitsimage.h3
-rw-r--r--tksao/frame/grid2d.C11
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", " ");