-// xImaLyr.cpp : Layers functions\r
-/* 21/04/2003 v1.00 - Davide Pizzolato - www.xdp.it\r
- * CxImage version 6.0.0 02/Feb/2008\r
- */\r
-\r
-#include "ximage.h"\r
-\r
-#if CXIMAGE_SUPPORT_LAYERS\r
-\r
-////////////////////////////////////////////////////////////////////////////////\r
-/**\r
- * If the object is an internal layer, GetParent return its parent in the hierarchy.\r
- */\r
-CxImage* CxImage::GetParent() const\r
-{\r
- return info.pParent;\r
-}\r
-////////////////////////////////////////////////////////////////////////////////\r
-/**\r
- * Number of layers allocated directly by the object.\r
- */\r
-long CxImage::GetNumLayers() const\r
-{\r
- return info.nNumLayers;\r
-}\r
-////////////////////////////////////////////////////////////////////////////////\r
-/**\r
- * Creates an empty layer. If position is less than 0, the new layer will be placed in the last position\r
- */\r
-bool CxImage::LayerCreate(long position)\r
-{\r
- if ( position < 0 || position > info.nNumLayers ) position = info.nNumLayers;\r
-\r
- CxImage** ptmp = new CxImage*[info.nNumLayers + 1];\r
- if (ptmp==0) return false;\r
-\r
- int i=0;\r
- for (int n=0; n<info.nNumLayers; n++){\r
- if (position == n){\r
- ptmp[n] = new CxImage();\r
- i=1;\r
- }\r
- ptmp[n+i]=ppLayers[n];\r
- }\r
- if (i==0) ptmp[info.nNumLayers] = new CxImage();\r
-\r
- if (ptmp[position]){\r
- ptmp[position]->info.pParent = this;\r
- } else {\r
- free(ptmp);\r
- return false;\r
- }\r
-\r
- info.nNumLayers++;\r
- delete [] ppLayers;\r
- ppLayers = ptmp;\r
- return true;\r
-}\r
-////////////////////////////////////////////////////////////////////////////////\r
-/**\r
- * Deletes a layer. If position is less than 0, the last layer will be deleted\r
- */\r
-bool CxImage::LayerDelete(long position)\r
-{\r
- if ( position >= info.nNumLayers ) return false;\r
- if ( position < 0) position = info.nNumLayers - 1;\r
- if ( position < 0) return false;\r
-\r
- if (info.nNumLayers>1){\r
-\r
- CxImage** ptmp = new CxImage*[info.nNumLayers - 1];\r
- if (ptmp==0) return false;\r
-\r
- int i=0;\r
- for (int n=0; n<info.nNumLayers; n++){\r
- if (position == n){\r
- delete ppLayers[n];\r
- i=1;\r
- }\r
- ptmp[n]=ppLayers[n+i];\r
- }\r
-\r
- info.nNumLayers--;\r
- delete [] ppLayers;\r
- ppLayers = ptmp;\r
-\r
- } else {\r
- delete ppLayers[0];\r
- delete [] ppLayers;\r
- ppLayers = 0;\r
- info.nNumLayers = 0;\r
- }\r
- return true;\r
-}\r
-////////////////////////////////////////////////////////////////////////////////\r
-void CxImage::LayerDeleteAll()\r
-{\r
- if (ppLayers) { \r
- for(long n=0; n<info.nNumLayers;n++){ delete ppLayers[n]; }\r
- delete [] ppLayers; ppLayers=0; info.nNumLayers = 0;\r
- }\r
-}\r
-////////////////////////////////////////////////////////////////////////////////\r
-/**\r
- * Returns a pointer to a layer. If position is less than 0, the last layer will be returned\r
- */\r
-CxImage* CxImage::GetLayer(long position)\r
-{\r
- if ( ppLayers == NULL) return NULL;\r
- if ( info.nNumLayers == 0) return NULL;\r
- if ( position >= info.nNumLayers ) return NULL;\r
- if ( position < 0) position = info.nNumLayers - 1;\r
- return ppLayers[position];\r
-}\r
-////////////////////////////////////////////////////////////////////////////////\r
-#endif //CXIMAGE_SUPPORT_LAYERS\r
+// 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; n<info.nNumLayers; n++){
+ if (position == n){
+ ptmp[n] = new CxImage();
+ i=1;
+ }
+ ptmp[n+i]=ppLayers[n];
+ }
+ if (i==0) ptmp[info.nNumLayers] = new CxImage();
+
+ if (ptmp[position]){
+ ptmp[position]->info.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; n++){
+ if (position == n){
+ delete ppLayers[n];
+ i=1;
+ }
+ ptmp[n]=ppLayers[n+i];
+ }
+
+ info.nNumLayers--;
+ delete [] ppLayers;
+ ppLayers = ptmp;
+
+ } else {
+ delete ppLayers[0];
+ delete [] ppLayers;
+ ppLayers = 0;
+ info.nNumLayers = 0;
+ }
+ return true;
+}
+////////////////////////////////////////////////////////////////////////////////
+void CxImage::LayerDeleteAll()
+{
+ if (ppLayers) {
+ for(long n=0; n<info.nNumLayers;n++){ delete ppLayers[n]; }
+ delete [] ppLayers; ppLayers=0; info.nNumLayers = 0;
+ }
+}
+////////////////////////////////////////////////////////////////////////////////
+/**
+ * Returns a pointer to a layer. If position is less than 0, the last layer will be returned
+ */
+CxImage* CxImage::GetLayer(long position)
+{
+ if ( ppLayers == NULL) return NULL;
+ if ( info.nNumLayers == 0) return NULL;
+ if ( position >= info.nNumLayers ) return NULL;
+ if ( position < 0) position = info.nNumLayers - 1;
+ return ppLayers[position];
+}
+////////////////////////////////////////////////////////////////////////////////
+#endif //CXIMAGE_SUPPORT_LAYERS