summaryrefslogtreecommitdiffstats
path: root/tksao
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2017-12-13 20:44:09 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2017-12-13 20:44:09 (GMT)
commit8746e94c7ffb4d319cc81b4b8d69875fd96d1fdd (patch)
tree5662a3e88810c2031d51af59f751397d07d934cd /tksao
parent5c4867ac19f9aa6eb9958eed97e30339398a3c6d (diff)
downloadblt-8746e94c7ffb4d319cc81b4b8d69875fd96d1fdd.zip
blt-8746e94c7ffb4d319cc81b4b8d69875fd96d1fdd.tar.gz
blt-8746e94c7ffb4d319cc81b4b8d69875fd96d1fdd.tar.bz2
upgrade AST
Diffstat (limited to 'tksao')
-rw-r--r--tksao/frame/base.C4
-rw-r--r--tksao/frame/fitsimage.C137
-rw-r--r--tksao/frame/fitsimage.h4
-rw-r--r--tksao/frame/fitsmap.C4
-rw-r--r--tksao/frame/grid25d.C3
-rw-r--r--tksao/frame/grid2d.C3
-rw-r--r--tksao/frame/grid3d.C3
7 files changed, 56 insertions, 102 deletions
diff --git a/tksao/frame/base.C b/tksao/frame/base.C
index 858d7f0..e09a8a7 100644
--- a/tksao/frame/base.C
+++ b/tksao/frame/base.C
@@ -649,11 +649,11 @@ Matrix Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2,
astClearStatus; // just to make sure
astBegin; // start memory management
- fits1->setWCSSystem(sys1);
+ fits1->setWCSSkyFrame(sys1, sky);
AstFrameSet* wcs1 = fits1->wcsCopy();
astInvert(wcs1);
- fits2->setWCSSystem(sys2);
+ fits2->setWCSSkyFrame(sys2, sky);
AstFrameSet* wcs2 = fits2->wcsCopy();
astInvert(wcs2);
diff --git a/tksao/frame/fitsimage.C b/tksao/frame/fitsimage.C
index 15c9c51..123e559 100644
--- a/tksao/frame/fitsimage.C
+++ b/tksao/frame/fitsimage.C
@@ -1666,12 +1666,10 @@ void FitsImage::match(const char* xxname1, const char* yyname1,
Vector* ptr1 =NULL;
if (sky1 != sky2) {
- setWCSSystem(sys1);
- setWCSSkyFrame(sky1);
+ setWCSSkyFrame(sys1, sky1);
AstFrameSet* wcs1 = wcsCopy();
- setWCSSystem(sys2);
- setWCSSkyFrame(sky2);
+ setWCSSkyFrame(sys2, sky2);
AstFrameSet* wcs2 = wcsCopy();
AstFrameSet* cvt = (AstFrameSet*)astConvert(wcs1, wcs2, "SKY");
@@ -1685,8 +1683,7 @@ void FitsImage::match(const char* xxname1, const char* yyname1,
// now compare
if (ptr1 && ptr2) {
- setWCSSystem(sys2);
- setWCSSkyFrame(sky2);
+ setWCSSkyFrame(sys2, sky2);
Tcl_Obj* objrr = Tcl_NewListObj(0,NULL);
for(int jj=0; jj<nxx2; jj++) {
for (int ii=0; ii<nxx1; ii++) {
@@ -2958,7 +2955,7 @@ double FitsImage::getWCSPixelSize(Coord::CoordSystem sys)
return 0;
astClearStatus; // just to make sure
- setWCSSystem(sys);
+ setWCSSkyFrame(sys, Coord::FK5);
Vector in[3];
Vector out[3];
@@ -2977,7 +2974,7 @@ double FitsImage::getWCSPixelArea(Coord::CoordSystem sys)
return 0;
astClearStatus; // just to make sure
- setWCSSystem(sys);
+ setWCSSkyFrame(sys, Coord::FK5);
Vector in[3];
Vector out[3];
@@ -3031,8 +3028,7 @@ Coord::Orientation FitsImage::getWCSOrientation(Coord::CoordSystem sys,
return Coord::NORMAL;
astClearStatus; // just to make sure
- setWCSSystem(sys);
- setWCSSkyFrame(sky);
+ setWCSSkyFrame(sys, sky);
Vector in[3];
Vector out[3];
@@ -3084,8 +3080,7 @@ double FitsImage::getWCSRotation(Coord::CoordSystem sys, Coord::SkyFrame sky)
return 0;
astClearStatus; // just to make sure
- setWCSSystem(sys);
- setWCSSkyFrame(sky);
+ setWCSSkyFrame(sys, sky);
Vector in[2];
Vector out[2];
@@ -3154,8 +3149,7 @@ Vector FitsImage::pix2wcs(const Vector& in, Coord::CoordSystem sys,
if (!hasWCS(sys))
return Vector();
- setWCSSystem(sys);
- setWCSSkyFrame(sky);
+ setWCSSkyFrame(sys, sky);
Vector out = wcsTran(in, 1);
if (astOK && checkWCS(out))
@@ -3233,8 +3227,7 @@ char* FitsImage::pix2wcs(const Vector& in, Coord::CoordSystem sys,
if (!hasWCS(sys))
return lbuf;
- setWCSSystem(sys);
- setWCSSkyFrame(sky);
+ setWCSSkyFrame(sys, sky);
ostringstream str;
Vector out = wcsTran(in, 1);
@@ -3291,8 +3284,7 @@ Vector3d FitsImage::pix2wcs(const Vector3d& in, Coord::CoordSystem sys,
if (!hasWCS(sys))
return Vector();
- setWCSSystem(sys);
- setWCSSkyFrame(sky);
+ setWCSSkyFrame(sys, sky);
Vector3d out = wcsTran(in, 1);
if (astOK && checkWCS(out))
@@ -3311,8 +3303,7 @@ char* FitsImage::pix2wcs(const Vector3d& in, Coord::CoordSystem sys,
if (!hasWCS(sys))
return lbuf;
- setWCSSystem(sys);
- setWCSSkyFrame(sky);
+ setWCSSkyFrame(sys, sky);
ostringstream str;
Vector3d out = wcsTran(in, 1);
@@ -3385,8 +3376,7 @@ Vector FitsImage::wcs2pix(const Vector& vv, Coord::CoordSystem sys,
astClearStatus; // just to make sure
if (hasWCS(sys)) {
- setWCSSystem(sys);
- setWCSSkyFrame(sky);
+ setWCSSkyFrame(sys, sky);
Vector in = hasWCSCel(sys) ? degToRad(vv) : vv;
Vector out = wcsTran(in, 0);
@@ -3404,8 +3394,7 @@ Vector3d FitsImage::wcs2pix(const Vector3d& vv, Coord::CoordSystem sys,
astClearStatus; // just to make sure
if (hasWCS(sys)) {
- setWCSSystem(sys);
- setWCSSkyFrame(sky);
+ setWCSSkyFrame(sys, sky);
Vector3d in = hasWCSCel(sys) ? degToRad(vv) : vv;
Vector3d out = wcsTran(in, 0);
@@ -3439,7 +3428,7 @@ double FitsImage::getWCSDist(const Vector& vv1, const Vector& vv2,
return 0;
astClearStatus; // just to make sure
- setWCSSystem(sys);
+ setWCSSkyFrame(sys, Coord::FK5);
return hasWCSCel(sys) ?
radToDeg(wcsDistance(degToRad(vv1), degToRad(vv2))) :
@@ -3916,8 +3905,6 @@ void FitsImage::setWCSSkyFrame(AstFrameSet* ast, Coord::SkyFrame sky)
if (!wcsIsASkyFrame(ast))
return;
- // is it already set?
- // ast is very slow when changing system,equinox
const char* str = astGetC(ast, "System");
// TLON/XLON and HPX will do this
@@ -3969,21 +3956,46 @@ void FitsImage::setWCSSkyFrame(AstFrameSet* ast, Coord::SkyFrame sky)
return;
}
}
+
#else
-void FitsImage::setWCSSkyFrame(Coord::SkyFrame sky)
+
+void FitsImage::setWCSSkyFrame(Coord::CoordSystem sys, Coord::SkyFrame sky)
{
- // is sky frame
- if (!wcsIsASkyFrame())
+ int nn = astGetI(ast_,"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+'@';
+ }
- // is it already set?
- // ast is very slow when changing system,equinox
- const char* str = astGetC(ast_, "System");
+ int found=0;
+ for (int ss=0; ss<nn; ss++) {
+ const char* id = astGetC(astGetFrame(ast_,ss+1),"Ident");
+ if (cc == id[0]) {
+ astSetI(ast_,"Current",ss+1);
+ found =1;
+ break;
+ }
+ }
- // TLON/XLON and HPX will do this
- if (!strncmp(str,"Unknown",3))
+ // did we find it?
+ if (!found)
+ return;
+
+ // is equatorial system?
+ if (!hasWCSEqu(sys))
return;
-
+
+ const char* str = astGetC(ast_, "System");
switch (sky) {
case Coord::FK4_NO_E:
if (!strncmp(str,"FK4-NO-E",8))
@@ -4031,64 +4043,11 @@ void FitsImage::setWCSSkyFrame(Coord::SkyFrame sky)
}
#endif
-#ifdef NEWWCS
-void FitsImage::setWCSSystem(Coord::CoordSystem sys)
-{
- int nn = astGetI(ast_,"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 ss=0; ss<nn; ss++) {
- const char* id = astGetC(astGetFrame(ast_,ss+1),"Ident");
- if (cc == id[0]) {
- astSetI(ast_,"Current",ss+1);
- break;
- }
- }
-}
-#endif
-
#ifndef NEWWCS
int FitsImage::wcsIsASkyFrame(AstFrameSet* ast)
{
return astIsASkyFrame(astGetFrame(ast,AST__CURRENT));
}
-#else
-int FitsImage::wcsIsASkyFrame()
-{
- astClearStatus;
- astBegin;
-
- int rr =0;
- int naxes = astGetI(ast_,"Naxes");
- switch (naxes) {
- case 1:
- break;
- case 2:
- rr = astIsASkyFrame(astGetFrame(ast_,AST__CURRENT));
- case 3:
- case 4:
- rr = strstr((char*)astGetC(ast_,"Domain"),"SKY") ? 1 : 0;
- default:
- break;
- }
-
- astEnd;
-
- return rr;
-}
#endif
#ifndef NEWWCS
diff --git a/tksao/frame/fitsimage.h b/tksao/frame/fitsimage.h
index 03ed620..9352791 100644
--- a/tksao/frame/fitsimage.h
+++ b/tksao/frame/fitsimage.h
@@ -431,9 +431,7 @@ class FitsImage {
double wcsAngle(const Vector&, const Vector&, const Vector&);
double wcsAxAngle(const Vector&, const Vector&);
- int wcsIsASkyFrame();
- void setWCSSystem(Coord::CoordSystem);
- void setWCSSkyFrame(Coord::SkyFrame);
+ void setWCSSkyFrame(Coord::CoordSystem, Coord::SkyFrame);
void setWCSFormat(int, const char*);
double getWCSPixelSize(Coord::CoordSystem);
diff --git a/tksao/frame/fitsmap.C b/tksao/frame/fitsmap.C
index 7e00b23..069abd6 100644
--- a/tksao/frame/fitsmap.C
+++ b/tksao/frame/fitsmap.C
@@ -208,7 +208,7 @@ double FitsImage::mapLenFromRef(double dd, Coord::CoordSystem sys,
if (!hasWCS(sys))
return 0;
- setWCSSystem(sys);
+ setWCSSkyFrame(sys, Coord::FK5);
Vector in[2];
Vector out[2];
@@ -309,7 +309,7 @@ double FitsImage::mapLenToRef(double dd, Coord::CoordSystem sys,
return 0;
astClearStatus; // just to make sure
- setWCSSystem(sys);
+ setWCSSkyFrame(sys, Coord::FK5);
double rdd = dd;
if (hasWCSCel(sys)) {
diff --git a/tksao/frame/grid25d.C b/tksao/frame/grid25d.C
index 76238ff..841333b 100644
--- a/tksao/frame/grid25d.C
+++ b/tksao/frame/grid25d.C
@@ -63,8 +63,7 @@ int Grid25d::doit(RenderMode rm)
AstFrameSet* ast = (AstFrameSet*)astCopy(fits->getAST(system_));
fits->setWCSSkyFrame(ast, sky_);
#else
- fits->setWCSSystem(system_);
- fits->setWCSSkyFrame(sky_);
+ fits->setWCSSkyFrame(system_, sky_);
AstFrameSet* ast = fits->wcsCopy();
int naxes = astGetI(ast,"Naxes");
diff --git a/tksao/frame/grid2d.C b/tksao/frame/grid2d.C
index b787b87..4e5f456 100644
--- a/tksao/frame/grid2d.C
+++ b/tksao/frame/grid2d.C
@@ -63,8 +63,7 @@ int Grid2d::doit(RenderMode rm)
AstFrameSet* ast = (AstFrameSet*)astCopy(fits->getAST(system_));
fits->setWCSSkyFrame(ast, sky_);
#else
- fits->setWCSSystem(system_);
- fits->setWCSSkyFrame(sky_);
+ fits->setWCSSkyFrame(system_, sky_);
AstFrameSet* ast = fits->wcsCopy();
int naxes = astGetI(ast,"Naxes");
diff --git a/tksao/frame/grid3d.C b/tksao/frame/grid3d.C
index f482cb7..ae23bcd 100644
--- a/tksao/frame/grid3d.C
+++ b/tksao/frame/grid3d.C
@@ -108,8 +108,7 @@ int Grid3d::doit(RenderMode rm)
ast = astFrameSet(cmpwcsbase,"");
astAddFrame(ast, AST__CURRENT, cmpwcsmap, cmpwcscurr);
#else
- fits->setWCSSystem(system_);
- fits->setWCSSkyFrame(sky_);
+ fits->setWCSSkyFrame(system_, sky_);
AstFrameSet* ast = fits->wcsCopy();
int naxes = astGetI(ast,"Naxes");