Changeset 930
- Timestamp:
- 09/02/08 14:56:18
- Files:
-
- trunk/include/vpb/Destination (modified) (4 diffs)
- trunk/include/vpb/Source (modified) (2 diffs)
- trunk/src/vpb/DataSet.cpp (modified) (5 diffs)
- trunk/src/vpb/Destination.cpp (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/include/vpb/Destination
r886 r930 111 111 void setMaximumImagerySize(unsigned int maxNumColumns,unsigned int maxNumRows) 112 112 { 113 _image ry_maxNumColumns = maxNumColumns;114 _image ry_maxNumRows = maxNumRows;113 _image_maxNumColumns = maxNumColumns; 114 _image_maxNumRows = maxNumRows; 115 115 } 116 116 … … 180 180 { 181 181 ImageData(): 182 _image ry_maxSourceResolutionX(0.0f),183 _image ry_maxSourceResolutionY(0.0f) {}184 185 186 float _image ry_maxSourceResolutionX;187 float _image ry_maxSourceResolutionY;188 189 osg::ref_ptr<DestinationData> _image ry;182 _image_maxSourceResolutionX(0.0f), 183 _image_maxSourceResolutionY(0.0f) {} 184 185 186 float _image_maxSourceResolutionX; 187 float _image_maxSourceResolutionY; 188 189 osg::ref_ptr<DestinationData> _imageDestination; 190 190 }; 191 191 192 struct ImageSet 193 { 194 ImageSet(): 195 _optional(false), 196 _image_maxSourceResolutionX(0.0f), 197 _image_maxSourceResolutionY(0.0f) {} 198 199 typedef std::map<std::string, ImageData> LayerSetImageDataMap; 200 LayerSetImageDataMap _layerSetImageDataMap; 201 202 bool _optional; 203 204 float _image_maxSourceResolutionX; 205 float _image_maxSourceResolutionY; 206 }; 207 192 208 std::vector<ImageData> _imagery; 209 std::vector<ImageSet> _imagerySet; 193 210 194 211 inline ImageData& getImageData(unsigned int layer) … … 198 215 } 199 216 217 inline ImageSet& getImageSet(unsigned int layer) 218 { 219 if (layer>=_imagerySet.size()) _imagerySet.resize(layer+1); 220 return _imagerySet[layer]; 221 } 222 200 223 osg::ref_ptr<DestinationData> _terrain; 201 224 osg::ref_ptr<DestinationData> _models; … … 207 230 unsigned int _maxSourceLevel; 208 231 209 unsigned int _image ry_maxNumColumns;210 unsigned int _image ry_maxNumRows;232 unsigned int _image_maxNumColumns; 233 unsigned int _image_maxNumRows; 211 234 212 235 unsigned int _terrain_maxNumColumns; trunk/include/vpb/Source
r843 r930 83 83 Type getType() const { return _type; } 84 84 85 void setSetName(const std::string& setname) { _setname = setname; } 86 const std::string& getSetName() const { return _setname; } 87 85 88 void setFileName(const std::string& filename) { _filename = filename; } 86 89 const std::string& getFileName() const { return _filename; } … … 210 213 double _sortValue; 211 214 215 std::string _setname; 212 216 std::string _filename; 213 217 bool _temporaryFile; trunk/src/vpb/DataSet.cpp
r925 r930 806 806 if (tile->computeImageResolution(layerNum,texture_numColumns,texture_numRows,texture_dx,texture_dy)) 807 807 { 808 if (texture_dx*resolutionSensitivityScale>tile->_imagery[layerNum]._image ry_maxSourceResolutionX) needToDivideX = true;809 if (texture_dy*resolutionSensitivityScale>tile->_imagery[layerNum]._image ry_maxSourceResolutionY) needToDivideY = true;808 if (texture_dx*resolutionSensitivityScale>tile->_imagery[layerNum]._image_maxSourceResolutionX) needToDivideX = true; 809 if (texture_dy*resolutionSensitivityScale>tile->_imagery[layerNum]._image_maxSourceResolutionY) needToDivideY = true; 810 810 } 811 811 } … … 1993 1993 // need to read locator. 1994 1994 vpb::Source* source = new vpb::Source(type, hfl->getFileName()); 1995 source->setSetName(hfl->getSetName()); 1995 1996 source->setLayer(layerNum); 1996 1997 source->setMinLevel(layer->getMinLevel()); … … 2019 2020 // need to read locator 2020 2021 vpb::Source* source = new vpb::Source(type, iml->getFileName()); 2022 source->setSetName(iml->getSetName()); 2021 2023 source->setLayer(layerNum); 2022 2024 source->setMinLevel(layer->getMinLevel()); … … 2047 2049 2048 2050 vpb::Source* source = new vpb::Source(type, pl->getFileName()); 2051 source->setSetName(pl->getSetName()); 2049 2052 source->setLayer(layerNum); 2050 2053 source->setMinLevel(layer->getMinLevel()); … … 2080 2083 { 2081 2084 vpb::Source* source = new vpb::Source(type, compositeLayer->getFileName(i)); 2085 source->setSetName(compositeLayer->getSetName(i)); 2082 2086 source->setMinLevel(layer->getMinLevel()); 2083 2087 source->setMaxLevel(layer->getMaxLevel()); trunk/src/vpb/Destination.cpp
r908 r930 82 82 _pixelFormat(GL_RGB), 83 83 _maxSourceLevel(0), 84 _image ry_maxNumColumns(4096),85 _image ry_maxNumRows(4096),84 _image_maxNumColumns(4096), 85 _image_maxNumRows(4096), 86 86 _terrain_maxNumColumns(1024), 87 87 _terrain_maxNumRows(1024), … … 142 142 { 143 143 ImageData& imageData = getImageData(source->getLayer()); 144 if (imageData._image ry_maxSourceResolutionX==0.0f) imageData._imagery_maxSourceResolutionX=sourceResolutionX;145 else imageData._image ry_maxSourceResolutionX=osg::minimum(imageData._imagery_maxSourceResolutionX,sourceResolutionX);146 if (imageData._image ry_maxSourceResolutionY==0.0f) imageData._imagery_maxSourceResolutionY=sourceResolutionY;147 else imageData._image ry_maxSourceResolutionY=osg::minimum(imageData._imagery_maxSourceResolutionY,sourceResolutionY);144 if (imageData._image_maxSourceResolutionX==0.0f) imageData._image_maxSourceResolutionX=sourceResolutionX; 145 else imageData._image_maxSourceResolutionX=osg::minimum(imageData._image_maxSourceResolutionX,sourceResolutionX); 146 if (imageData._image_maxSourceResolutionY==0.0f) imageData._image_maxSourceResolutionY=sourceResolutionY; 147 else imageData._image_maxSourceResolutionY=osg::minimum(imageData._image_maxSourceResolutionY,sourceResolutionY); 148 148 break; 149 149 } … … 183 183 { 184 184 ImageData& imageData = getImageData(layer); 185 if (imageData._image ry_maxSourceResolutionX!=0.0f && imageData._imagery_maxSourceResolutionY!=0.0f &&186 _image ry_maxNumColumns!=0 && _imagery_maxNumRows!=0)185 if (imageData._image_maxSourceResolutionX!=0.0f && imageData._image_maxSourceResolutionY!=0.0f && 186 _image_maxNumColumns!=0 && _image_maxNumRows!=0) 187 187 { 188 188 // set up properly for vector and raster (previously always vector) … … 192 192 if (_dataType == SpatialProperties::VECTOR) 193 193 { 194 numColumnsAtFullRes = 1+(unsigned int)ceilf((_extents.xMax()-_extents.xMin())/imageData._image ry_maxSourceResolutionX);195 numRowsAtFullRes = 1+(unsigned int)ceilf((_extents.yMax()-_extents.yMin())/imageData._image ry_maxSourceResolutionY);194 numColumnsAtFullRes = 1+(unsigned int)ceilf((_extents.xMax()-_extents.xMin())/imageData._image_maxSourceResolutionX); 195 numRowsAtFullRes = 1+(unsigned int)ceilf((_extents.yMax()-_extents.yMin())/imageData._image_maxSourceResolutionY); 196 196 } 197 197 else // if (_dataType == SpatialProperties::RASTER) 198 198 { 199 numColumnsAtFullRes = (unsigned int)ceilf((_extents.xMax()-_extents.xMin())/imageData._image ry_maxSourceResolutionX);200 numRowsAtFullRes = (unsigned int)ceilf((_extents.yMax()-_extents.yMin())/imageData._image ry_maxSourceResolutionY);201 } 202 203 unsigned int numColumnsRequired = osg::minimum(_image ry_maxNumColumns,numColumnsAtFullRes);204 unsigned int numRowsRequired = osg::minimum(_image ry_maxNumRows,numRowsAtFullRes);199 numColumnsAtFullRes = (unsigned int)ceilf((_extents.xMax()-_extents.xMin())/imageData._image_maxSourceResolutionX); 200 numRowsAtFullRes = (unsigned int)ceilf((_extents.yMax()-_extents.yMin())/imageData._image_maxSourceResolutionY); 201 } 202 203 unsigned int numColumnsRequired = osg::minimum(_image_maxNumColumns,numColumnsAtFullRes); 204 unsigned int numRowsRequired = osg::minimum(_image_maxNumRows,numRowsAtFullRes); 205 205 206 206 // use a minimum image size of 4x4 to avoid mipmap generation problems in OpenGL at sizes at 2x2. … … 285 285 ImageData& imageData = getImageData(layerNum); 286 286 287 imageData._image ry= new DestinationData(_dataSet);288 imageData._image ry->_cs = _cs;289 imageData._image ry->_extents = _extents;290 imageData._image ry->_geoTransform.set(texture_dx, 0.0, 0.0,0.0,287 imageData._imageDestination = new DestinationData(_dataSet); 288 imageData._imageDestination->_cs = _cs; 289 imageData._imageDestination->_extents = _extents; 290 imageData._imageDestination->_geoTransform.set(texture_dx, 0.0, 0.0,0.0, 291 291 0.0, -texture_dy, 0.0,0.0, 292 292 0.0, 0.0, 1.0,1.0, … … 294 294 295 295 296 imageData._image ry->_image = new osg::Image;296 imageData._imageDestination->_image = new osg::Image; 297 297 298 298 std::string imageName(_name+_dataSet->getDestinationImageExtension()); 299 imageData._image ry->_image->setFileName(imageName.c_str());300 301 imageData._image ry->_image->allocateImage(texture_numColumns,texture_numRows,1,_pixelFormat,GL_UNSIGNED_BYTE);302 unsigned char* data = imageData._image ry->_image->data();303 unsigned int totalSize = imageData._image ry->_image->getTotalSizeInBytesIncludingMipmaps();299 imageData._imageDestination->_image->setFileName(imageName.c_str()); 300 301 imageData._imageDestination->_image->allocateImage(texture_numColumns,texture_numRows,1,_pixelFormat,GL_UNSIGNED_BYTE); 302 unsigned char* data = imageData._imageDestination->_image->data(); 303 unsigned int totalSize = imageData._imageDestination->_image->getTotalSizeInBytesIncludingMipmaps(); 304 304 for(unsigned int i=0;i<totalSize;++i) 305 305 { … … 450 450 { 451 451 ImageData& imageData = tcp.first->_imagery[layerNum]; 452 if (imageData._image ry.valid() && imageData._imagery->_image.valid())452 if (imageData._imageDestination.valid() && imageData._imageDestination->_image.valid()) 453 453 { 454 imagesToProcess.push_back(ImageCornerPair(imageData._image ry->_image.get(),tcp.second));454 imagesToProcess.push_back(ImageCornerPair(imageData._imageDestination->_image.get(),tcp.second)); 455 455 } 456 456 } … … 653 653 { 654 654 // do we have a image to equalize? 655 if (!_imagery[layerNum]._image ry.valid()) continue;655 if (!_imagery[layerNum]._imageDestination.valid()) continue; 656 656 657 657 // does the neighbouring tile have an image to equalize? 658 658 if (layerNum>=tile2->_imagery.size()) continue; 659 if (!(tile2->_imagery[layerNum]._image ry.valid())) continue;660 661 662 osg::Image* image1 = _imagery[layerNum]._image ry->_image.get();663 osg::Image* image2 = tile2->_imagery[layerNum]._image ry->_image.get();659 if (!(tile2->_imagery[layerNum]._imageDestination.valid())) continue; 660 661 662 osg::Image* image1 = _imagery[layerNum]._imageDestination->_image.get(); 663 osg::Image* image2 = tile2->_imagery[layerNum]._imageDestination->_image.get(); 664 664 665 665 //log(osg::INFO,"Equalizing edge "<<edgeString(position)<<" of \t"<<_level<<"\t"<<_tileX<<"\t"<<_tileY … … 1043 1043 ++layerNum) 1044 1044 { 1045 if (_imagery[layerNum]._image ry.valid() &&1046 _imagery[layerNum]._image ry->_image.valid())1045 if (_imagery[layerNum]._imageDestination.valid() && 1046 _imagery[layerNum]._imageDestination->_image.valid()) 1047 1047 { 1048 1048 ++numValidImagerLayers; … … 1059 1059 { 1060 1060 ImageData& imageData = _imagery[layerNum]; 1061 if (!imageData._image ry.valid() || !imageData._imagery->_image.valid()) continue;1061 if (!imageData._imageDestination.valid() || !imageData._imageDestination->_image.valid()) continue; 1062 1062 1063 osg::Image* image = imageData._image ry->_image.get();1063 osg::Image* image = imageData._imageDestination->_image.get(); 1064 1064 1065 1065 std::string imageExension(_dataSet->_imageExtension); … … 1471 1471 { 1472 1472 ImageData& imageData = _imagery[layerNum]; 1473 if (imageData._image ry.valid() && imageData._imagery->_image.valid())1473 if (imageData._imageDestination.valid() && imageData._imageDestination->_image.valid()) 1474 1474 { 1475 osg::Image* image = imageData._image ry->_image.get();1475 osg::Image* image = imageData._imageDestination->_image.get(); 1476 1476 1477 1477 osgTerrain::ImageLayer* imageLayer = new osgTerrain::ImageLayer; … … 1850 1850 { 1851 1851 ImageData& imageData = _imagery[layerNum]; 1852 if (imageData._image ry.valid() && imageData._imagery->_image.valid())1852 if (imageData._imageDestination.valid() && imageData._imageDestination->_image.valid()) 1853 1853 { 1854 1854 geometry->setTexCoordArray(layerNum,&t); … … 2228 2228 void DestinationTile::readFrom(Source* source) 2229 2229 { 2230 bool optionalLayerSet = _dataSet->isOptionalLayerSet(source->getSetName()); 2231 log(osg::NOTICE,"DestinationTile::readFrom(SetName=%s, FileName=%s)",source->getSetName().c_str(), source->getFileName().c_str()); 2232 if (optionalLayerSet) log(osg::NOTICE," is an optional layer set"); 2233 2230 2234 if (source && 2231 2235 source->intersects(*this) && … … 2251 2255 for(unsigned int i=0;i<_imagery.size();++i) 2252 2256 { 2253 if (_imagery[i]._image ry.valid())2257 if (_imagery[i]._imageDestination.valid()) 2254 2258 { 2255 data->read(*(_imagery[i]._image ry));2259 data->read(*(_imagery[i]._imageDestination)); 2256 2260 } 2257 2261 } … … 2260 2264 { 2261 2265 // copy specific layer. 2262 if (layerNum<_imagery.size() && _imagery[layerNum]._image ry.valid())2266 if (layerNum<_imagery.size() && _imagery[layerNum]._imageDestination.valid()) 2263 2267 { 2264 data->read(*(_imagery[layerNum]._image ry));2268 data->read(*(_imagery[layerNum]._imageDestination)); 2265 2269 } 2266 2270 } … … 2272 2276 for(unsigned int i=layerNum;i<_imagery.size();++i) 2273 2277 { 2274 if (_imagery[i]._image ry.valid())2278 if (_imagery[i]._imageDestination.valid()) 2275 2279 { 2276 data->read(*(_imagery[i]._image ry));2280 data->read(*(_imagery[i]._imageDestination)); 2277 2281 } 2278 2282 } … … 2281 2285 case(BuildOptions::NO_INHERITANCE): 2282 2286 { 2283 if (layerNum<_imagery.size() && _imagery[layerNum]._image ry.valid())2287 if (layerNum<_imagery.size() && _imagery[layerNum]._imageDestination.valid()) 2284 2288 { 2285 data->read(*(_imagery[layerNum]._image ry));2289 data->read(*(_imagery[layerNum]._imageDestination)); 2286 2290 } 2287 2291 break;
