www.pudn.com > MyBloodVessel.rar > ximalyr.cpp


// xImaLyr.cpp : Layers functions 
/* 21/04/2003 v1.00 - Davide Pizzolato - www.xdp.it 
 * CxImage version 5.99c 17/Oct/2004 
 */ 
 
#include "ximage.h" 
 
#if CXIMAGE_SUPPORT_LAYERS 
 
//////////////////////////////////////////////////////////////////////////////// 
/** 
 * If the object is an internal layer, GetParent return its parent in the hierarchy. 
 */ 
CxImage* CxImage::GetParent() const 
{ 
	return info.pParent; 
} 
//////////////////////////////////////////////////////////////////////////////// 
/** 
 * Number of layers allocated directly by the object. 
 */ 
long CxImage::GetNumLayers() const 
{ 
	return info.nNumLayers; 
} 
//////////////////////////////////////////////////////////////////////////////// 
/** 
 * Creates an empty layer. If position is less than 0, the new layer will be placed in the last position 
 */ 
bool CxImage::LayerCreate(long position) 
{ 
	if ( position < 0 || position > info.nNumLayers ) position = info.nNumLayers; 
 
	CxImage** ptmp = (CxImage**)malloc((info.nNumLayers + 1)*sizeof(CxImage**)); 
	if (ptmp==0) return false; 
 
	int i=0; 
	for (int n=0; ninfo.pParent = this; 
	} else { 
		free(ptmp); 
		return false; 
	} 
 
	info.nNumLayers++; 
	if (pLayers) free(pLayers); 
	pLayers = ptmp; 
	return true; 
} 
//////////////////////////////////////////////////////////////////////////////// 
/** 
 * Deletes a layer. If position is less than 0, the last layer will be deleted 
 */ 
bool CxImage::LayerDelete(long position) 
{ 
	if ( position >= info.nNumLayers ) return false; 
	if ( position < 0) position = info.nNumLayers - 1; 
 
	CxImage** ptmp = (CxImage**)malloc((info.nNumLayers - 1)*sizeof(CxImage**)); 
	if (ptmp==0) return false; 
 
	int i=0; 
	for (int n=0; n<(info.nNumLayers - 1); n++){ 
		if (position == n){ 
			delete pLayers[n]; 
			i=1; 
		} 
		ptmp[n]=pLayers[n+i]; 
	} 
	if (i==0) delete pLayers[info.nNumLayers - 1]; 
 
	info.nNumLayers--; 
	if (pLayers) free(pLayers); 
	pLayers = ptmp; 
	return true; 
} 
//////////////////////////////////////////////////////////////////////////////// 
void CxImage::LayerDeleteAll() 
{ 
	if (pLayers) {  
		for(long n=0; n= info.nNumLayers ) return 0; 
	if ( position < 0) position = info.nNumLayers - 1; 
	return pLayers[position]; 
} 
//////////////////////////////////////////////////////////////////////////////// 
#endif //CXIMAGE_SUPPORT_LAYERS