int spcprt(const struct spcprm *spc) { char hext[32]; int i; if (spc == 0x0) return SPCERR_NULL_POINTER; wcsprintf(" flag: %d\n", spc->flag); wcsprintf(" type: \"%s\"\n", spc->type); wcsprintf(" code: \"%s\"\n", spc->code); if (undefined(spc->crval)) { wcsprintf(" crval: UNDEFINED\n"); } else { wcsprintf(" crval: %#- 11.5g\n", spc->crval); } wcsprintf(" restfrq: %f\n", spc->restfrq); wcsprintf(" restwav: %f\n", spc->restwav); wcsprintf(" pv:"); if (spc->isGrism) { for (i = 0; i < 5; i++) { if (undefined(spc->pv[i])) { wcsprintf(" UNDEFINED "); } else { wcsprintf(" %#- 11.5g", spc->pv[i]); } } wcsprintf("\n "); for (i = 5; i < 7; i++) { if (undefined(spc->pv[i])) { wcsprintf(" UNDEFINED "); } else { wcsprintf(" %#- 11.5g", spc->pv[i]); } } wcsprintf("\n"); } else { wcsprintf(" (not used)\n"); } wcsprintf(" w:"); for (i = 0; i < 3; i++) { wcsprintf(" %#- 11.5g", spc->w[i]); } if (spc->isGrism) { wcsprintf("\n "); for (i = 3; i < 6; i++) { wcsprintf(" %#- 11.5g", spc->w[i]); } wcsprintf("\n"); } else { wcsprintf(" (remainder unused)\n"); } wcsprintf(" isGrism: %d\n", spc->isGrism); WCSPRINTF_PTR(" err: ", spc->err, "\n"); if (spc->err) { wcserr_prt(spc->err, " "); } wcsprintf(" spxX2P: %s\n", wcsutil_fptr2str((int (*)(void))spc->spxX2P, hext)); wcsprintf(" spxP2S: %s\n", wcsutil_fptr2str((int (*)(void))spc->spxP2S, hext)); wcsprintf(" spxS2P: %s\n", wcsutil_fptr2str((int (*)(void))spc->spxS2P, hext)); wcsprintf(" spxP2X: %s\n", wcsutil_fptr2str((int (*)(void))spc->spxP2X, hext)); return 0; }
int linprt(const struct linprm *lin) { int i, j, k; if (lin == 0x0) return LINERR_NULL_POINTER; if (lin->flag != LINSET) { wcsprintf("The linprm struct is UNINITIALIZED.\n"); return 0; } wcsprintf(" flag: %d\n", lin->flag); /* Parameters supplied. */ wcsprintf(" naxis: %d\n", lin->naxis); WCSPRINTF_PTR(" crpix: ", lin->crpix, "\n"); wcsprintf(" "); for (j = 0; j < lin->naxis; j++) { wcsprintf(" %#- 11.5g", lin->crpix[j]); } wcsprintf("\n"); k = 0; WCSPRINTF_PTR(" pc: ", lin->pc, "\n"); for (i = 0; i < lin->naxis; i++) { wcsprintf(" pc[%d][]:", i); for (j = 0; j < lin->naxis; j++) { wcsprintf(" %#- 11.5g", lin->pc[k++]); } wcsprintf("\n"); } WCSPRINTF_PTR(" cdelt: ", lin->cdelt, "\n"); wcsprintf(" "); for (i = 0; i < lin->naxis; i++) { wcsprintf(" %#- 11.5g", lin->cdelt[i]); } wcsprintf("\n"); WCSPRINTF_PTR(" dispre: ", lin->dispre, ""); if (lin->dispre != 0x0) wcsprintf(" (see below)"); wcsprintf("\n"); WCSPRINTF_PTR(" disseq: ", lin->disseq, ""); if (lin->disseq != 0x0) wcsprintf(" (see below)"); wcsprintf("\n"); /* Derived values. */ if (lin->piximg == 0x0) { wcsprintf(" piximg: (nil)\n"); } else { k = 0; for (i = 0; i < lin->naxis; i++) { wcsprintf("piximg[%d][]:", i); for (j = 0; j < lin->naxis; j++) { wcsprintf(" %#- 11.5g", lin->piximg[k++]); } wcsprintf("\n"); } } if (lin->imgpix == 0x0) { wcsprintf(" imgpix: (nil)\n"); } else { k = 0; for (i = 0; i < lin->naxis; i++) { wcsprintf("imgpix[%d][]:", i); for (j = 0; j < lin->naxis; j++) { wcsprintf(" %#- 11.5g", lin->imgpix[k++]); } wcsprintf("\n"); } } wcsprintf(" i_naxis: %d\n", lin->i_naxis); wcsprintf(" unity: %d\n", lin->unity); wcsprintf(" affine: %d\n", lin->affine); wcsprintf(" simple: %d\n", lin->simple); /* Error handling. */ WCSPRINTF_PTR(" err: ", lin->err, "\n"); if (lin->err) { wcserr_prt(lin->err, " "); } /* Work arrays. */ WCSPRINTF_PTR(" tmpcrd: ", lin->tmpcrd, "\n"); /* Memory management. */ wcsprintf(" m_flag: %d\n", lin->m_flag); wcsprintf(" m_naxis: %d\n", lin->m_naxis); WCSPRINTF_PTR(" m_crpix: ", lin->m_crpix, ""); if (lin->m_crpix == lin->crpix) wcsprintf(" (= crpix)"); wcsprintf("\n"); WCSPRINTF_PTR(" m_pc: ", lin->m_pc, ""); if (lin->m_pc == lin->pc) wcsprintf(" (= pc)"); wcsprintf("\n"); WCSPRINTF_PTR(" m_cdelt: ", lin->m_cdelt, ""); if (lin->m_cdelt == lin->cdelt) wcsprintf(" (= cdelt)"); wcsprintf("\n"); WCSPRINTF_PTR(" m_dispre: ", lin->m_dispre, ""); if (lin->dispre && lin->m_dispre == lin->dispre) wcsprintf(" (= dispre)"); wcsprintf("\n"); WCSPRINTF_PTR(" m_disseq: ", lin->m_disseq, ""); if (lin->disseq && lin->m_disseq == lin->disseq) wcsprintf(" (= disseq)"); wcsprintf("\n"); /* Distortion parameters (from above). */ if (lin->dispre) { wcsprintf("\n"); wcsprintf("dispre.*\n"); disprt(lin->dispre); } if (lin->disseq) { wcsprintf("\n"); wcsprintf("disseq.*\n"); disprt(lin->disseq); } return 0; }
int tabprt(const struct tabprm *tab) { char *cp, text[128]; int j, k, m, n, nd; double *dp; if (tab == 0x0) return TABERR_NULL_POINTER; if (tab->flag != TABSET) { wcsprintf("The tabprm struct is UNINITIALIZED.\n"); return 0; } wcsprintf(" flag: %d\n", tab->flag); wcsprintf(" M: %d\n", tab->M); /* Array dimensions. */ WCSPRINTF_PTR(" K: ", tab->K, "\n"); wcsprintf(" "); for (m = 0; m < tab->M; m++) { wcsprintf("%6d", tab->K[m]); } wcsprintf("\n"); /* Map vector. */ WCSPRINTF_PTR(" map: ", tab->map, "\n"); wcsprintf(" "); for (m = 0; m < tab->M; m++) { wcsprintf("%6d", tab->map[m]); } wcsprintf("\n"); /* Reference index value. */ WCSPRINTF_PTR(" crval: ", tab->crval, "\n"); wcsprintf(" "); for (m = 0; m < tab->M; m++) { wcsprintf(" %- 11.5g", tab->crval[m]); } wcsprintf("\n"); /* Index vectors. */ WCSPRINTF_PTR(" index: ", tab->index, "\n"); for (m = 0; m < tab->M; m++) { wcsprintf(" index[%d]: ", m); WCSPRINTF_PTR("", tab->index[m], ""); if (tab->index[m]) { for (k = 0; k < tab->K[m]; k++) { if (k%5 == 0) { wcsprintf("\n "); } wcsprintf(" %- 11.5g", tab->index[m][k]); } wcsprintf("\n"); } } /* Coordinate array. */ WCSPRINTF_PTR(" coord: ", tab->coord, "\n"); dp = tab->coord; for (n = 0; n < tab->nc; n++) { /* Array index. */ j = n; cp = text; for (m = 0; m < tab->M; m++) { nd = (tab->K[m] < 10) ? 1 : 2; sprintf(cp, ",%*d", nd, j % tab->K[m] + 1); j /= tab->K[m]; cp += strlen(cp); } wcsprintf(" (*%s)", text); for (m = 0; m < tab->M; m++) { wcsprintf(" %- 11.5g", *(dp++)); } wcsprintf("\n"); } wcsprintf(" nc: %d\n", tab->nc); WCSPRINTF_PTR(" sense: ", tab->sense, "\n"); if (tab->sense) { wcsprintf(" "); for (m = 0; m < tab->M; m++) { wcsprintf("%6d", tab->sense[m]); } wcsprintf("\n"); } WCSPRINTF_PTR(" p0: ", tab->p0, "\n"); if (tab->p0) { wcsprintf(" "); for (m = 0; m < tab->M; m++) { wcsprintf("%6d", tab->p0[m]); } wcsprintf("\n"); } WCSPRINTF_PTR(" delta: ", tab->delta, "\n"); if (tab->delta) { wcsprintf(" "); for (m = 0; m < tab->M; m++) { wcsprintf(" %- 11.5g", tab->delta[m]); } wcsprintf("\n"); } WCSPRINTF_PTR(" extrema: ", tab->extrema, "\n"); dp = tab->extrema; for (n = 0; n < tab->nc/tab->K[0]; n++) { /* Array index. */ j = n; cp = text; *cp = '\0'; for (m = 1; m < tab->M; m++) { nd = (tab->K[m] < 10) ? 1 : 2; sprintf(cp, ",%*d", nd, j % tab->K[m] + 1); j /= tab->K[m]; cp += strlen(cp); } wcsprintf(" (*,*%s)", text); for (m = 0; m < 2*tab->M; m++) { if (m == tab->M) wcsprintf("-> "); wcsprintf(" %- 11.5g", *(dp++)); } wcsprintf("\n"); } WCSPRINTF_PTR(" err: ", tab->err, "\n"); if (tab->err) { wcserr_prt(tab->err, " "); } /* Memory management. */ wcsprintf(" m_flag: %d\n", tab->m_flag); wcsprintf(" m_M: %d\n", tab->m_M); wcsprintf(" m_N: %d\n", tab->m_N); WCSPRINTF_PTR(" m_K: ", tab->m_K, ""); if (tab->m_K == tab->K) wcsprintf(" (= K)"); wcsprintf("\n"); WCSPRINTF_PTR(" m_map: ", tab->m_map, ""); if (tab->m_map == tab->map) wcsprintf(" (= map)"); wcsprintf("\n"); WCSPRINTF_PTR(" m_crval: ", tab->m_crval, ""); if (tab->m_crval == tab->crval) wcsprintf(" (= crval)"); wcsprintf("\n"); WCSPRINTF_PTR(" m_index: ", tab->m_index, ""); if (tab->m_index == tab->index) wcsprintf(" (= index)"); wcsprintf("\n"); for (m = 0; m < tab->M; m++) { wcsprintf(" m_indxs[%d]: ", m); WCSPRINTF_PTR("", tab->m_indxs[m], ""); if (tab->m_indxs[m] == tab->index[m]) wcsprintf(" (= index[%d])", m); wcsprintf("\n"); } WCSPRINTF_PTR(" m_coord: ", tab->m_coord, ""); if (tab->m_coord == tab->coord) wcsprintf(" (= coord)"); wcsprintf("\n"); return 0; }