summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2017-12-06 18:36:30 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2017-12-06 18:36:30 (GMT)
commitf4c3792630280511326ab60c3bf79e30473cb6a7 (patch)
tree84649d174ca471c0c68885498ddf43c114bf8661
parent7a8c23503173b4ea298a8c80733a13419720c681 (diff)
downloadblt-f4c3792630280511326ab60c3bf79e30473cb6a7.zip
blt-f4c3792630280511326ab60c3bf79e30473cb6a7.tar.gz
blt-f4c3792630280511326ab60c3bf79e30473cb6a7.tar.bz2
update AST WCS
-rw-r--r--tksao/frame/base.C5
-rw-r--r--tksao/frame/frame3dbase.C52
2 files changed, 54 insertions, 3 deletions
diff --git a/tksao/frame/base.C b/tksao/frame/base.C
index 594573a..5b020d3 100644
--- a/tksao/frame/base.C
+++ b/tksao/frame/base.C
@@ -736,15 +736,14 @@ int Base::doRender()
return context->cfits ? 1 : 0;
}
-void Base::doubleToTclArray(double d, const char* var,
+void Base::doubleToTclArray(double dd, const char* var,
const char* base, const char* mod)
{
ostringstream str;
str << base << "," << mod << ends;
ostringstream vstr;
- vstr << setprecision(8) << d << ends;
- // vstr << fixed << setw(9) << setprecision(3) << d << ends;
+ vstr << setprecision(8) << dd << ends;
Tcl_SetVar2(interp, (char*)var, str.str().c_str(), vstr.str().c_str(), 0);
}
diff --git a/tksao/frame/frame3dbase.C b/tksao/frame/frame3dbase.C
index 9b8360e..9000bd7 100644
--- a/tksao/frame/frame3dbase.C
+++ b/tksao/frame/frame3dbase.C
@@ -152,6 +152,57 @@ void Frame3dBase::getInfoCmd(const Vector& vv, Coord::InternalSystem ref,
getInfoClearValue(var);
}
+#ifndef NEWWCS
+void Frame3dBase::getInfoWCS(char* var, Vector3d& rr, FitsImage* ptr,
+ FitsImage* sptr)
+{
+ Vector3d img = rr * sptr->refToImage3d;
+
+ for (int ii=0; ii<MULTWCS; ii++) {
+ char buf[64];
+ char ww = !ii ? '\0' : '`'+ii;
+ Coord::CoordSystem www = (Coord::CoordSystem)(Coord::WCS+ii);
+
+ if (hasWCS(www)) {
+ char buff[128];
+ sptr->pix2wcs(Vector(img), www, wcsSky_, wcsSkyFormat_, buff);
+
+ int argc;
+ const char** argv;
+ Tcl_SplitList(interp, buff, &argc, &argv);
+
+ if (argc > 0 && argv && argv[0])
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",x"),argv[0],0);
+ else
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",x"),"",0);
+
+ if (argc > 1 && argv && argv[1])
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",y"),argv[1],0);
+ else
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",y"),"",0);
+
+ char* wcsname = (char*)sptr->getWCSName(www);
+ if (wcsname)
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",sys"),wcsname,0);
+ else if (argc > 2 && argv && argv[2])
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",sys"),argv[2],0);
+ else
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",sys"),"",0);
+
+ double ss = ptr->mapFromImage3d(img[2],www);
+ doubleToTclArray(ss,var,varcat(buf,(char*)"wcs",ww,(char*)""),"z");
+
+ Tcl_Free((char*)argv);
+ }
+ else {
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",x"),"",0);
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",y"),"",0);
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",z"),"",0);
+ Tcl_SetVar2(interp,var,varcat(buf,(char*)"wcs",ww,(char*)",sys"),"",0);
+ }
+ }
+}
+#else
void Frame3dBase::getInfoWCS(char* var, Vector3d& rr, FitsImage* ptr,
FitsImage* sptr)
{
@@ -203,6 +254,7 @@ void Frame3dBase::getInfoWCS(char* var, Vector3d& rr, FitsImage* ptr,
}
}
}
+#endif
#ifndef NEWWCS
void Frame3dBase::coordToTclArray(FitsImage* ptr, const Vector3d& vv,