From 098a7a303ce23e68f3543ecf440949d8bcfd7ef7 Mon Sep 17 00:00:00 2001 From: William Joye Date: Thu, 7 Dec 2017 17:49:46 -0500 Subject: update AST WCS --- tksao/frame/fitsimage.C | 347 ++++++++++++++++++++++++++++-------------------- tksao/frame/fitsimage.h | 11 +- 2 files changed, 210 insertions(+), 148 deletions(-) diff --git a/tksao/frame/fitsimage.C b/tksao/frame/fitsimage.C index 9807c10..f475971 100644 --- a/tksao/frame/fitsimage.C +++ b/tksao/frame/fitsimage.C @@ -114,6 +114,9 @@ FitsImage::FitsImage(Context* cx, Tcl_Interp* pp) #else ast_ =NULL; wcs_ =NULL; + wcsEqu_ =NULL; + wcsCel_ =NULL; + wcs3D_ =NULL; #endif wcsHeader_ =NULL; altHeader_ =NULL; @@ -192,10 +195,18 @@ FitsImage::~FitsImage() delete [] wcsx_; } #else - if (manageWCS_ && ast_) - astAnnul(ast_); - if (manageWCS_ && wcs_) - delete [] wcs_; + if (manageWCS_) { + if (ast_) + astAnnul(ast_); + if (wcs_) + delete [] wcs_; + if (wcsEqu_) + delete [] wcsEqu_; + if (wcsCel_) + delete [] wcsCel_; + if (wcs3D_) + delete [] wcs3D_; + } #endif if (wcsHeader_) @@ -1094,12 +1105,26 @@ void FitsImage::initWCS() for (int ii=0; iiast_; wcs_ = ptr->wcs_; + wcsEqu_ = ptr->wcsEqu_; + wcsCel_ = ptr->wcsCel_; + wcs3D_ = ptr->wcs3D_; #endif #ifndef NEWWCS @@ -1197,7 +1225,12 @@ void FitsImage::initWCS() } } #else - astinit(hd, prim); + astInit(hd, prim); + wcsInit(); + wcsEquInit(); + wcsCelInit(); + wcs3DInit(); + if (DebugAST && ast_) astShow(ast_); #endif @@ -3476,114 +3509,18 @@ int FitsImage::hasWCS(Coord::CoordSystem sys) int FitsImage::hasWCSEqu(Coord::CoordSystem sys) { - if (!ast_ || sys2 ? 1:0; - } - } - - astEnd; // now, clean up memory - return 0; + else + return wcs3D_[sys-Coord::WCS]; } #endif @@ -3725,15 +3642,12 @@ void FitsImage::astinit(int ss, FitsHead* hd, FitsHead* prim) setWCSSkyFrame(ast_[ss],Coord::FK5); } #else -void FitsImage::astinit(FitsHead* hd, FitsHead* prim) +void FitsImage::astInit(FitsHead* hd, FitsHead* prim) { - // init wcs_ array - if (wcs_) - delete [] wcs_; - wcs_ = new int[MULTWCS]; - for (int ii=0; ii2) ? 1 : 0; + } + } + + astEnd; } #endif diff --git a/tksao/frame/fitsimage.h b/tksao/frame/fitsimage.h index 5b79cba..7b182eb 100644 --- a/tksao/frame/fitsimage.h +++ b/tksao/frame/fitsimage.h @@ -116,8 +116,11 @@ class FitsImage { AstFrameSet** ast_; // ast frameset; WCSx** wcsx_; // xth Axis WCS #else - int* wcs_; AstFrameSet* ast_; // ast frameset; + int* wcs_; + int* wcsEqu_; + int* wcsCel_; + int* wcs3D_; #endif FitsHead* wcsHeader_; // alt wcs header FitsHead* altHeader_; // wcs header for wfpc2 @@ -153,7 +156,11 @@ class FitsImage { void putFitsCard(void* chan, const char* key, int value); void putFitsCard(void* chan, const char* key, double value); #else - void astinit(FitsHead*, FitsHead*); + void astInit(FitsHead*, FitsHead*); + void wcsInit(); + void wcsEquInit(); + void wcsCelInit(); + void wcs3DInit(); #endif void astinit0(int, FitsHead*, FitsHead*); int checkWCS(Vector&); -- cgit v0.12