diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2017-12-06 18:36:30 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2017-12-06 18:36:30 (GMT) |
commit | f4c3792630280511326ab60c3bf79e30473cb6a7 (patch) | |
tree | 84649d174ca471c0c68885498ddf43c114bf8661 /tksao | |
parent | 7a8c23503173b4ea298a8c80733a13419720c681 (diff) | |
download | blt-f4c3792630280511326ab60c3bf79e30473cb6a7.zip blt-f4c3792630280511326ab60c3bf79e30473cb6a7.tar.gz blt-f4c3792630280511326ab60c3bf79e30473cb6a7.tar.bz2 |
update AST WCS
Diffstat (limited to 'tksao')
-rw-r--r-- | tksao/frame/base.C | 5 | ||||
-rw-r--r-- | tksao/frame/frame3dbase.C | 52 |
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, |