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


// xImaLyr.cpp : Layers functions 
/* 21/04/2003 v1.00 - Davide Pizzolato - www.xdp.it 
 * CxImage version 6.0.0 02/Feb/2008 
 */ 
 
#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 = new CxImage*[info.nNumLayers + 1]; 
	if (ptmp==0) return false; 
 
	int i=0; 
	for (int n=0; ninfo.pParent = this; 
	} else { 
		free(ptmp); 
		return false; 
	} 
 
	info.nNumLayers++; 
	delete [] ppLayers; 
	ppLayers = 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; 
	if ( position < 0) return false; 
 
	if (info.nNumLayers>1){ 
 
		CxImage** ptmp = new CxImage*[info.nNumLayers - 1]; 
		if (ptmp==0) return false; 
 
		int i=0; 
		for (int n=0; n= info.nNumLayers ) return NULL; 
	if ( position < 0) position = info.nNumLayers - 1; 
	return ppLayers[position]; 
} 
//////////////////////////////////////////////////////////////////////////////// 
#endif //CXIMAGE_SUPPORT_LAYERS