// xImaLyr.cpp : Layers functions /* 21/04/2003 v1.00 - Davide Pizzolato - www.xdp.it * CxImage version 7.0.0 31/Dec/2010 */ #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. */ int32_t 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(int32_t position) { if ( position < 0 || position > info.nNumLayers ) position = info.nNumLayers; CxImage** ptmp = new CxImage*[info.nNumLayers + 1]; if (ptmp==0) return false; int32_t i=0; for (int32_t 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(int32_t 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; int32_t i=0; for (int32_t n=0; n= info.nNumLayers ) return NULL; if ( position < 0) position = info.nNumLayers - 1; return ppLayers[position]; } //////////////////////////////////////////////////////////////////////////////// #endif //CXIMAGE_SUPPORT_LAYERS