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