コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
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;
}