Example #1
0
BOOL LayerManager::ReadSpreadLayerDetails() 
{
	ENSURE(CurrentSpread != NULL, "Trying to read the details of a NULL current spread"); 
	ENSURE(LyrDetList.IsEmpty(), "Layer details list not empty"); 

	LyrDetails* LayerDet; 

	Layer* Current = CurrentSpread->FindFirstLayer(); 
	while (Current != NULL) 
	{
		// Found a layer so record the details 
		LayerDet = new LyrDetails(); 
		if (LayerDet == NULL)
		{
			// Inform an error - The error will already be set by new
			InformError();
			return FALSE; 
		}
		LayerDet->Status = (Current)->GetLayerStatus(); // record the layer status  
		LayerDet->m_pLayer = Current; 
		LayerDet->New = FALSE; 
		LayerDet->Deleted = FALSE; 

		LyrDetList.AddTail(LayerDet); // Add the layers details to the tail of the layer 
									   // detail list, so preserving the correct z-order. 
		Current = Current->FindNextLayer(); 
	}
	ENSURE(!LyrDetList.IsEmpty(), "No layers found on the current spread"); 
	return TRUE; 
}
Example #2
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 	
}