summaryrefslogtreecommitdiffstats
path: root/tksao/frame/frame3dbase.C
diff options
context:
space:
mode:
Diffstat (limited to 'tksao/frame/frame3dbase.C')
-rw-r--r--tksao/frame/frame3dbase.C52
1 files changed, 52 insertions, 0 deletions
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,