diff --git a/surfacemanager.cpp b/surfacemanager.cpp index 759a1393..bad80138 100644 --- a/surfacemanager.cpp +++ b/surfacemanager.cpp @@ -2416,6 +2416,7 @@ textres SurfaceManager::Phase2(QList list, QList inp cp->m_zRangeMode = "Fractions of Wave"; cp->contourWaveRangeChanged(inputs[0]->std* 3); wavefront * wf = new wavefront(*inputs[i]); + wf->cloneMatricesFrom(*inputs[i]); wf->data = wf->workData = standwfs[i]; @@ -2461,6 +2462,7 @@ textres SurfaceManager::Phase2(QList list, QList inp //display average of all stand zernwavefronts wavefront * wf2 = new wavefront(*inputs[0]); + wf2->cloneMatricesFrom(*inputs[0]); wf2->data = wf2->workData = standavgZernMat ; cv::resize(inputs[0]->mask,wf2->mask, cv::Size(wf2->data.cols, wf2->data.rows)); wf2->workMask = wf2->mask; diff --git a/wavefront.cpp b/wavefront.cpp index b62cf757..361e9577 100644 --- a/wavefront.cpp +++ b/wavefront.cpp @@ -22,42 +22,11 @@ wavefront::wavefront(): { } -wavefront::~wavefront() +void wavefront::cloneMatricesFrom(const wavefront &wf) { - - data.release(); - mask.release(); - workData.release(); - workMask.release(); - InputZerns.clear(); - nulledData.release(); - + data = wf.data.clone(); + nulledData = wf.nulledData.clone(); + mask = wf.mask.clone(); + workData = wf.workData.clone(); + workMask = wf.workMask.clone(); } -wavefront::wavefront( const wavefront &wf): - data(wf.data.clone()), - nulledData(wf.nulledData.clone()), - mask(wf.mask.clone()), - workData(wf.workData.clone()), - workMask(wf.workMask.clone()), - InputZerns(wf.InputZerns), - zernEnablesApplied(wf.zernEnablesApplied), - gaussian_diameter(wf.gaussian_diameter), - gbEnabled(wf.gbEnabled), - gbValue(wf.gbValue), - wasSmoothed(wf.wasSmoothed), - useSANull(wf.useSANull), - GBSmoothingValue(wf.GBSmoothingValue), - m_origin(wf.m_origin), - m_manuallyInverted(wf.m_manuallyInverted), - lambda(wf.lambda), - m_outside(wf.m_outside), - m_inside(wf.m_inside), - diameter(wf.diameter), - roc(wf.roc), - min(wf.min), - max(wf.max), - std(wf.std), - mean(wf.mean), - dirtyZerns(wf.dirtyZerns) -{} - diff --git a/wavefront.h b/wavefront.h index e35c088a..489c4797 100644 --- a/wavefront.h +++ b/wavefront.h @@ -36,11 +36,12 @@ class wavefront { public: wavefront(); - ~wavefront(); - wavefront( const wavefront &wf); // copy constructor doing deep copy of cv::Mat - wavefront( wavefront && ) = delete; // move constructor, deleted because unused - wavefront& operator=( const wavefront & ) = default; // copy operator not doing deep copy of cv::mat - wavefront& operator=(wavefront &&) = delete; // move operator, deleted because unused + ~wavefront() = default; + wavefront( const wavefront &wf) = default; + wavefront( wavefront && ) = default; + wavefront& operator=( const wavefront & ) = default; + wavefront& operator=(wavefront &&) = default; + void cloneMatricesFrom(const wavefront &wf); cv::Mat_ data; cv::Mat_ nulledData;