IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 7, 2006, 5:06:40 PM (20 years ago)
Author:
Paul Price
Message:
  • Moving common functions (convertFitsToPsType and convertPsTypeToFits) into

psFits as private functions (p_psFitsTypeFromCfitsio and p_psFitsTypeToCfitsio).

  • Reworked psFitsInsertTable: previous version was not writing the

last column of the table; new version writes all columns.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/fits/psFits.c

    r7300 r7846  
    77 *  @author Robert DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.55 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2006-06-02 21:33:33 $
     9 *  @version $Revision: 1.56 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2006-07-08 03:06:40 $
    1111 *
    1212 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    486486    return true;
    487487}
     488
     489
     490psDataType p_psFitsTypeFromCfitsio(int datatype)
     491{
     492    switch (datatype) {
     493    case TBYTE:
     494        return PS_TYPE_U8;
     495    case TSBYTE:
     496        return PS_TYPE_S8;
     497    case TSHORT:
     498        return PS_TYPE_S16;
     499    case TUSHORT:
     500        return PS_TYPE_U16;
     501    case TLONG:
     502        if (sizeof(long) == 8) {
     503            return PS_TYPE_S64;
     504        }
     505        // no break
     506    case TINT:
     507        return PS_TYPE_S32;
     508    case TULONG:
     509        if (sizeof(unsigned long) == 8) {
     510            return PS_TYPE_U64;
     511        }
     512        // no break
     513    case TUINT:
     514        return PS_TYPE_U32;
     515    case TLONGLONG:
     516        return PS_TYPE_S64;
     517    case TFLOAT:
     518        return PS_TYPE_F32;
     519    case TDOUBLE:
     520        return PS_TYPE_F64;
     521    case TCOMPLEX:
     522        return PS_TYPE_C32;
     523    case TDBLCOMPLEX:
     524        return PS_TYPE_C64;
     525    case TLOGICAL:
     526        return PS_TYPE_BOOL;
     527    default:
     528        psError(PS_ERR_IO, true,
     529                "Unknown FITS datatype, %d.",
     530                datatype);
     531        return 0;
     532    }
     533}
     534
     535bool p_psFitsTypeToCfitsio(psDataType type, int* bitPix, double* bZero, int* dataType)
     536{
     537    int bitpix;
     538    int datatype;
     539    double bzero = 0.0;
     540
     541    switch (type) {
     542
     543    case PS_TYPE_U8:
     544        bitpix = BYTE_IMG;
     545        datatype = TBYTE;
     546        break;
     547
     548    case PS_TYPE_S8:
     549        bitpix = BYTE_IMG;
     550        bzero = INT8_MIN;
     551        datatype = TSBYTE;
     552        break;
     553
     554    case PS_TYPE_U16:
     555        bitpix = SHORT_IMG;
     556        bzero = -1.0 * INT16_MIN;
     557        datatype = TUSHORT;
     558        break;
     559
     560    case PS_TYPE_S16:
     561        bitpix = SHORT_IMG;
     562        datatype = TSHORT;
     563        break;
     564
     565    case PS_TYPE_U32:
     566        bitpix = LONG_IMG;
     567        bzero = -1.0 * INT32_MIN;
     568        datatype = TUINT;
     569        break;
     570
     571    case PS_TYPE_S32:
     572        bitpix = LONG_IMG;
     573        datatype = TINT;
     574        break;
     575
     576    case PS_TYPE_F32:
     577        bitpix = FLOAT_IMG;
     578        datatype = TFLOAT;
     579        break;
     580
     581    case PS_TYPE_F64:
     582        bitpix = DOUBLE_IMG;
     583        datatype = TDOUBLE;
     584        break;
     585
     586    case PS_DATA_STRING:
     587        bitpix = BYTE_IMG;
     588        datatype = TSTRING;
     589        break;
     590
     591    case PS_DATA_BOOL:
     592        bitpix = BYTE_IMG;
     593        datatype = TLOGICAL;
     594        break;
     595
     596    default: {
     597            char* typeStr;
     598            PS_TYPE_NAME(typeStr,type);
     599            psError(PS_ERR_BAD_PARAMETER_TYPE, true,
     600                    PS_ERRORTEXT_psFits_TYPE_UNSUPPORTED,
     601                    typeStr);
     602            return false;
     603        }
     604    }
     605
     606    // pass back the requested parameters  (NULL parameters are not set, of course).
     607    if (bitPix != NULL) {
     608        *bitPix = bitpix;
     609    }
     610
     611    if (dataType != NULL) {
     612        *dataType = datatype;
     613    }
     614
     615    if (bZero != NULL) {
     616        *bZero = bzero;
     617    }
     618
     619    return true;
     620}
     621
     622
Note: See TracChangeset for help on using the changeset viewer.