Ejemplo n.º 1
0
BOOL LayerManager::LayerDetailsChanged()
{
	LyrDetails* CurrentLyrDet = (LyrDetails*)LyrDetList.GetHead(); 	  
	Layer* CurrentLyr = CurrentSpread->FindFirstLayer(); // Get the first layer node 
	
	ENSURE(CurrentLyrDet != NULL, "There are no layer details on the layer details list"); 
	ENSURE(CurrentLyr != NULL, "The LayerManager's current spread has no layers"); 
	
	while (CurrentLyrDet != NULL) 
	{
		// We ignore deleted new layers because they don't change anything 
		if (!(CurrentLyrDet->New && CurrentLyrDet->Deleted)) 	
		{		
			if (CurrentLyr != CurrentLyrDet->m_pLayer) // z-order change 
			{
				return TRUE; 
			}									
			else if ((CurrentLyrDet->New) || (CurrentLyrDet->Deleted)) 
			{
				return TRUE; // New layer created or existing layer deleted 
			}
			else if (!(CurrentLyrDet->Status == CurrentLyr->GetLayerStatus()))
			{	
				// The layer's status has changed 
				return TRUE; 
			}  
			CurrentLyrDet =  (LyrDetails*)(LyrDetList.GetNext(CurrentLyrDet));
			CurrentLyr = (CurrentLyr->FindNextLayer()); 
		}	
		else 	
			CurrentLyrDet = (LyrDetails*)(LyrDetList.GetNext(CurrentLyrDet)); 
	}	   
	// Sanity check 
	ENSURE (CurrentLyr == NULL, "CurrentLyr ptr should be NULL"); 
	return FALSE; // Nothing has changed 	
}