ossimRefPtr<ossimImageData> ossimImageSourceSequencer::getNextTile( ossim_uint32 resLevel) { if(!theInputConnection) { return NULL; } ossimIpt origin; if(getTileOrigin(theCurrentTileNumber, origin)) { ++theCurrentTileNumber; ossimIrect tileRect(origin.x, origin.y, origin.x + (theTileSize.x - 1), origin.y + (theTileSize.y - 1)); ossimRefPtr<ossimImageData> data = theInputConnection->getTile(tileRect, resLevel); if(!data.valid()||!data->getBuf()) { theBlankTile->setImageRectangle(tileRect); return theBlankTile; } return data; } return ossimRefPtr<ossimImageData>(); }
bool ossimImageSourceSequencer::getTileRect(ossim_int64 tile_id, ossimIrect& tileRect) const { // Fetch tile origin for this tile: ossimIpt origin; bool result = getTileOrigin(tile_id, origin); if ( result ) { // Establish the tile rect of interest for this tile: tileRect.set_ul (origin); tileRect.set_lrx(origin.x + theTileSize.x - 1); tileRect.set_lry(origin.y + theTileSize.y - 1); } return result; }
bool ossimGui::StaticTileImageCache::getTile(const ossimIpt& pt, QImage& image)const { OpenThreads::ScopedLock<OpenThreads::Mutex> lock(m_mutex); bool result = false; ossimIpt tileOrigin = getTileOrigin(pt); ossimIrect cacheRect = getRect(); if((image.width() != m_tileSize.x)|| (image.height() != m_tileSize.y)) { image = QImage(m_tileSize.x, m_tileSize.y, QImage::Format_RGB32); } if(cacheRect.pointWithin(tileOrigin)) { ossimIpt delta(tileOrigin.x - cacheRect.ul().x, tileOrigin.y - cacheRect.ul().y); if((delta.x >= 0)&&(delta.y >= 0)) { image = m_cache->copy(tileOrigin.x - cacheRect.ul().x, tileOrigin.y - cacheRect.ul().y, m_tileSize.x, m_tileSize.y); ossim_int32 idx = getTileIndex(m_cacheRect, m_numberOfTiles, pt); if(idx >=0) { result = m_validTileArray[idx]; } } else { image.fill(0); } } else { image.fill(0); } return result; }
bool ossimQtStaticTileImageCache::getTile(const ossimIpt& pt, QImage& image)const { bool result = false; ossimIpt tileOrigin = getTileOrigin(pt); ossimIrect cacheRect = getCacheRect(); if((image.width() != theTileSize.x)|| (image.height() != theTileSize.y)) { image.create(theTileSize.x, theTileSize.y, 32); } if(cacheRect.pointWithin(tileOrigin)) { ossimIpt delta(tileOrigin.x - cacheRect.ul().x, tileOrigin.y - cacheRect.ul().y); if((delta.x >= 0)&&(delta.y >= 0)) { image = theCache.copy(tileOrigin.x - cacheRect.ul().x, tileOrigin.y - cacheRect.ul().y, theTileSize.x, theTileSize.y); ossim_int32 idx = getTileIndex(pt); if(idx >=0) { result = theValidTileArray[idx]; } } else { image.fill(0); } } else { image.fill(0); } return result; }
ossimRefPtr<ossimImageData> ossimImageSourceSequencer::getTile( ossim_int32 id, ossim_uint32 resLevel) { static const char* MODULE= "ossimImageSourceSequencer::getTile(id, resLevel)"; if(traceDebug()) { CLOG << "entering.."<<endl; } if(!theInputConnection) { if(traceDebug()) { CLOG << "No input connection so returing NULL" << endl; } return NULL; } // if we have no tiles try to initialize. if(getNumberOfTiles() == 0) { initialize(); } ossimIpt origin; if(getTileOrigin(id, origin)) { if(traceDebug()) { CLOG << "returning tile" << endl; } ossimIrect tRect(origin.x, origin.y, origin.x + theTileSize.x - 1, origin.y + theTileSize.y - 1); ossimRefPtr<ossimImageData> temp = theInputConnection->getTile(tRect, resLevel); theBlankTile->setImageRectangle(tRect); if(temp.valid()) { if(!temp->getBuf()) { return theBlankTile; } } else { return theBlankTile; } return temp; } else { if(traceDebug()) { CLOG << "was not able to get an origin for id = " << id << endl; } } if(traceDebug()) { CLOG << "leaving.."<<endl; } return 0; }