bool CLayerArray::mirrorLayers(LayerStruct& layer0,LayerStruct& layer1) const { bool retval = (containsLayer(layer0) && containsLayer(layer1)); if (retval) { if (layer0.getMirroredLayerIndex() != layer1.getLayerIndex() || layer1.getMirroredLayerIndex() != layer0.getLayerIndex() ) { retval = true; { LayerStruct* mirroredLayer0 = GetAt(layer0.getMirroredLayerIndex()); LayerStruct* mirroredLayer1 = GetAt(layer1.getMirroredLayerIndex()); if (mirroredLayer0 != NULL) { unmirrorLayer(*mirroredLayer0); } if (mirroredLayer1 != NULL) { unmirrorLayer(*mirroredLayer1); } layer0.setMirroredLayerIndex(layer1.getLayerIndex()); layer1.setMirroredLayerIndex(layer0.getLayerIndex()); } } } return retval; }
bool ossimPlanetTextureLayerGroup::addTop(osg::ref_ptr<ossimPlanetTextureLayer> layer, bool notifyFlag) { if(layer.get() == this) return false; // OpenThreads::ScopedLock<OpenThreads::Mutex> lock(theChildrenListMutex); bool result = false; if(layer.valid()) { if(!containsLayer(layer)) { layer->addParent(this); layer->addCallback(theChildListener); theChildrenListMutex.lock(); theChildrenList.insert(theChildrenList.begin(), layer); theChildrenListMutex.unlock(); dirtyExtents(); // notify parent layers dirtyStats(); result = true; if(notifyFlag) { notifyLayerAdded(layer); } } } return result; }
bool CLayerArray::unmirrorLayer(LayerStruct& layer) const { bool retval = layer.hasMirroredLayer() && containsLayer(layer); if (layer.hasMirroredLayer()) { LayerStruct* mirroredLayer = GetAt(layer.getMirroredLayerIndex()); layer.setMirroredLayerIndex(layer.getLayerIndex()); if (mirroredLayer != NULL && mirroredLayer->getMirroredLayerIndex() == layer.getLayerIndex()) { mirroredLayer->setMirroredLayerIndex(mirroredLayer->getLayerIndex()); } } return retval; }