Layer* ThresholdLayerAdapter::copy(const string& layerName, bool bCopyElement, DataElement* pParent) const { // Get the layer name string name = layerName; if (name.empty() == true) { name = getName(); } // Get the raster element RasterElement* pRasterElement = NULL; RasterElement* pCurrentRasterElement = dynamic_cast<RasterElement*>(getDataElement()); if (bCopyElement == true && pCurrentRasterElement != NULL) { pRasterElement = dynamic_cast<RasterElement*>(pCurrentRasterElement->copy(name, pParent)); } else { pRasterElement = pCurrentRasterElement; } if (pRasterElement == NULL) { return NULL; } // Create the new layer ThresholdLayerAdapter* pLayer = new ThresholdLayerAdapter(SessionItemImp::generateUniqueId(), name, pRasterElement); if (pLayer != NULL) { *pLayer = *this; } return pLayer; }