KstObject::UpdateType DMCSource::update(int u) { if (KstObject::checkUpdateCounter(u)) { return lastUpdateResult(); } if (_valid && _dmcObject && _dmcObject->updated()) { updateNumFramesScalar(); return setLastUpdateResult(KstObject::UPDATE); } return setLastUpdateResult(KstObject::NO_CHANGE); }
KstObject::UpdateType QimagesourceSource::update(int u) { if (KstObject::checkUpdateCounter(u)) { return lastUpdateResult(); } int newNF = _image.width()*_image.height(); bool isnew = newNF != _frameCount; _frameCount = newNF; updateNumFramesScalar(); return setLastUpdateResult(isnew ? KstObject::UPDATE : KstObject::NO_CHANGE); }
KstObject::UpdateType NADDirectSource::update(int u) { if (KstObject::checkUpdateCounter(u)) { return lastUpdateResult(); } if (_conn && _conn->updated()) { updateNumFramesScalar(); kstdDebug() << "NAD::update(" << QString::number(u) << ") = UPDATE\n"; return setLastUpdateResult(KstObject::UPDATE); } else { kstdDebug() << "NAD::update(" << QString::number(u) << ") = NO_CHANGE\n"; return setLastUpdateResult(KstObject::NO_CHANGE); } }
KstObject::UpdateType DirFileSource::update(int u) { if (KstObject::checkUpdateCounter(u)) { return lastUpdateResult(); } int err = 0; int newNF = GetNFrames(_filename.latin1(), &err, 0L); bool isnew = newNF != _frameCount; _frameCount = newNF; updateNumFramesScalar(); return setLastUpdateResult(isnew ? KstObject::UPDATE : KstObject::NO_CHANGE); }
KstObject::UpdateType FrameSource::update(int u) { if (KstObject::checkUpdateCounter(u)) { return lastUpdateResult(); } QString tmpfilename; struct stat stat_buf; int done = 0; int dec = 0; int newN; if (_maxExt < 0) { // no hex number extension: only this file if (stat(_filename.toLatin1(), &stat_buf) != 0) { // file is gone newN = 0; } else { // file exists newN = stat_buf.st_size/_bytesPerFrame; } } else { do { tmpfilename.sprintf("%s%2.2x", _rootFileName.toLatin1().data(), _maxExt); if (stat(QFile::encodeName(tmpfilename).data(), &stat_buf) != 0) { if (_maxExt > _rootExt) { // deleted (?) check the next one down _maxExt--; dec = 1; } else { // All files have been deleted stat_buf.st_size = 0; done = 1; } } else { if (stat_buf.st_size == _bytesPerFrame*_framesPerFile) { // Full file if (dec) { // already checked next one up: it is empty done = 1; } else { _maxExt++; } } else { done = 1; } } } while (!done); newN = (_maxExt - _rootExt)*_framesPerFile + stat_buf.st_size/_bytesPerFrame; } bool isnew = _frameCount != newN; _frameCount = newN; updateNumFramesScalar(); return setLastUpdateResult(isnew ? KstObject::UPDATE : KstObject::NO_CHANGE); }
KstObject::UpdateType LFIIOSource::update( int u ) { if (KstObject::checkUpdateCounter(u)) { return lastUpdateResult(); } KstObject::UpdateType updateType = KstObject::NO_CHANGE; QString strTemplate; QString strName; fitsfile* ffits; char charTemplate[ FLEN_CARD ]; char charName[ FLEN_CARD ]; long lNumFrames; long lMaxRepeat = 1; long lRepeat; long lWidth; int iColNumber; int iNumCols; int iStatus = 0; int iResult = 0; int iTypeCode; int i; _valid = false; if( !_filename.isNull( ) && !_filename.isEmpty( ) ) { iResult = fits_open_table( &ffits, _filename.toAscii( ), READONLY, &iStatus ); if( iResult == 0 ) { // // determine size of data... // iResult = fits_get_num_cols( ffits, &iNumCols, &iStatus ); if( iResult == 0 ) { iResult = fits_get_num_rows( ffits, &lNumFrames, &iStatus ); if( iResult == 0 ) { _fieldList.clear( ); _fieldList.append( "INDEX" ); _valid = true; _bHasTime = false; // // need to multiply lNumFrames by the maximum value of the vector repeat value... // for( i=0; i<iNumCols; i++ ) { iStatus = 0; sprintf( charTemplate, "%d", i+1 ); iResult = fits_get_colname( ffits, CASEINSEN, charTemplate, charName, &iColNumber, &iStatus ); if( iResult == 0 ) { int iOffset = i; strName = charName; // // ensure that we don't add duplicates to the _fieldList... // while( _fieldList.indexOf( strName ) != -1 ) { strName = QString("%1[%2]").arg( charName ).arg( iOffset ); iOffset++; } } else { strName.setNum( i ); } _fieldList.append( strName ); iStatus = 0; iResult = fits_get_coltype( ffits, i+1, &iTypeCode, &lRepeat, &lWidth, &iStatus ); if( iResult == 0 ) { if( lRepeat > lMaxRepeat ) { lMaxRepeat = lRepeat; } } } // // check if we have a time field defined by the header keys TIMEZERO and DELTA_T. // If so then we create a new field called $TIME_FIELD, unless such a field already // exists, in which case we do nothing... // char charTimeZero[] = "TIMEZERO"; iStatus = 0; iResult = fits_read_key( ffits, TDOUBLE, charTimeZero, &_dTimeZero, 0L, &iStatus ); if( iResult == 0 ) { char charTimeDelta[] = "DELTA_T"; iResult = fits_read_key( ffits, TDOUBLE, charTimeDelta, &_dTimeDelta, 0L, &iStatus ); if( iResult == 0 ) { if( _fieldList.indexOf( QString( TIME_FIELD ) ) == _fieldList.size( )-1 ) { _bHasTime = true; _fieldList.append( TIME_FIELD ); } } } if( lNumFrames * lMaxRepeat != _numFrames ) { _numCols = iNumCols; _numFrames = lNumFrames * lMaxRepeat; updateType = KstObject::UPDATE; } } } iStatus = 0; fits_close_file( ffits, &iStatus ); } } updateNumFramesScalar(); return setLastUpdateResult(updateType); }
bool WMAPSource::initFile( ) { bool bRetVal = true; int iResult = 0; _numFrames = 0; if( !_filename.isNull( ) && !_filename.isEmpty( ) ) { QString str; fitsfile* ffits; int iStatus = 0; iResult = fits_open_file( &ffits, _filename.ascii( ), READONLY, &iStatus ); if( iResult == 0 ) { int iNumHeaderDataUnits; if( fits_get_num_hdus( ffits, &iNumHeaderDataUnits, &iStatus ) == 0 ) { long lNumBaseRows = 0; long lNumRows; int iHDUType; int i; // // determine the number of frames... // for( i=0; i<iNumHeaderDataUnits-1; i++ ) { if( iStatus == 0 ) { fits_get_hdu_type( ffits, &iHDUType, &iStatus ); if( iHDUType == BINARY_TBL || iHDUType == ASCII_TBL ) { iResult = fits_get_num_rows( ffits, &lNumRows, &iStatus ); if( iResult == 0 ) { if( lNumBaseRows == 0 ) { lNumBaseRows = lNumRows; } else if( lNumRows != 1 ) { if( lNumRows < lNumBaseRows ) { lNumBaseRows = lNumRows; } } } } fits_movrel_hdu( ffits, 1, &iHDUType, &iStatus ); } } fits_movabs_hdu( ffits, 1, &iHDUType, &iStatus); field *fld = new field; fld->table = 0; fld->column = 0; fld->entry = 0; fld->entries = 0; fld->numSamplesPerFrame = 1; fld->numFrames = lNumBaseRows; _fields.insert( "INDEX", fld ); _fieldList.append( "INDEX" ); // // add the fields and metadata... // for( i=0; i<iNumHeaderDataUnits-1; i++ ) { if( iStatus == 0 ) { addToMetadata( ffits, iStatus ); // // create the field entries... // fits_get_hdu_type( ffits, &iHDUType, &iStatus ); if( iStatus == 0 ) { if( iHDUType == BINARY_TBL || iHDUType == ASCII_TBL ) { int iNumCols; iResult = fits_get_num_cols( ffits, &iNumCols, &iStatus ); if( iResult == 0 ) { iResult = fits_get_num_rows( ffits, &lNumRows, &iStatus ); if( iResult == 0 ) { if( lNumRows > 1 ) { addToFieldList( ffits, iNumCols, lNumRows, lNumBaseRows, iStatus ); } else if( lNumRows == 1 ) { addToMetadata( ffits, iNumCols, iStatus ); } } } } } fits_movrel_hdu( ffits, 1, &iHDUType, &iStatus); } } } iStatus = 0; updateNumFramesScalar( ); fits_close_file( ffits, &iStatus ); } } return bRetVal; }
bool PLANCKIDEFSource::initFile( ) { bool bRetVal = true; int iResult = 0; _numFrames = 0; if( !_filename.isNull( ) && !_filename.isEmpty( ) ) { QString str; fitsfile* ffits; int iStatus = 0; iResult = fits_open_file( &ffits, _filename.ascii( ), READONLY, &iStatus ); if( iResult == 0 ) { int iNumHeaderDataUnits; if( fits_get_num_hdus( ffits, &iNumHeaderDataUnits, &iStatus ) == 0 ) { long lNumRows; int iHDUType; int i; // // determine the number of frames... // if( iNumHeaderDataUnits > 1 ) { if( fits_movabs_hdu( ffits, 2, &iHDUType, &iStatus ) == 0 ) { if( fits_get_hdu_type( ffits, &iHDUType, &iStatus ) == 0 ) { if( iHDUType == BINARY_TBL ) { iResult = fits_get_num_rows( ffits, &lNumRows, &iStatus ); if( iResult == 0 ) { _numFrames = lNumRows; } } } } } if( _numFrames > 0 ) { fits_movabs_hdu( ffits, 1, &iHDUType, &iStatus ); field *fld = new field; fld->table = 0; fld->column = 0; _fields.insert( "INDEX", fld ); _fieldList.append( "INDEX" ); // // add the fields and metadata... // for( i=0; i<iNumHeaderDataUnits-1; i++ ) { if( iStatus == 0 ) { addToMetadata( ffits, iStatus ); // // the first table never contains data... // if( i > 0 ) { // // create the time entries if necessary... // if( _fields.find( "TIME_ABSOLUTE" ) == 0L && _fields.find( "TIME_RELATIVE" ) == 0L ) { char comment[FLEN_COMMENT]; int iStatusDelta = 0; int iStatusZero = 0; fits_read_key( ffits, TDOUBLE, "DELTA_T", &_dTimeDelta, comment, &iStatusDelta ); fits_read_key( ffits, TDOUBLE, "TIMEZERO", &_dTimeZero, comment, &iStatusZero ); if( iStatusDelta == 0 ) { if( iStatusZero == 0 ) { field *fld = new field; fld->table = 0; fld->column = 0; _fields.insert( "TIME_ABSOLUTE", fld ); _fieldList.append( "TIME_ABSOLUTE" ); } else { field *fld = new field; fld->table = 0; fld->column = 0; _fields.insert( "TIME_RELATIVE", fld ); _fieldList.append( "TIME_RELATIVE" ); } } } // // create the field entries... // fits_get_hdu_type( ffits, &iHDUType, &iStatus ); if( iStatus == 0 ) { if( iHDUType == BINARY_TBL || iHDUType == ASCII_TBL ) { int iNumCols; iResult = fits_get_num_cols( ffits, &iNumCols, &iStatus ); if( iResult == 0 ) { iResult = fits_get_num_rows( ffits, &lNumRows, &iStatus ); if( iResult == 0 ) { addToFieldList( ffits, iNumCols, iStatus ); } } } } } fits_movrel_hdu( ffits, 1, &iHDUType, &iStatus); } } } } iStatus = 0; updateNumFramesScalar( ); fits_close_file( ffits, &iStatus ); } } return bRetVal; }