/// <summary>
 /// Creates a measurement object for the provided ROI instance.
 /// </summary>
 /// <param name="roi">ROI instance</param>
 /// <param name="mAssist">Reference to controller class</param>
 public MeasurementEdge(ROI roi, MeasureAssistant mAssist)
     : base(roi, mAssist)
 {
     mResult      = new EdgeResult();
     mResultWorld = new EdgeResult();
     UpdateMeasure();
 }
        /// <summary>
        /// Triggers an update of the measure results because of
        /// changes in the parameter setup or a recreation of the measure
        /// object caused by an update in the ROI model.
        /// </summary>
        public override void UpdateResults()
        {
            if (mHandle == null)
            {
                return;
            }

            mMeasAssist.exceptionText = "";

            try
            {
                mHandle.MeasurePos(mMeasAssist.mImage,
                                   mMeasAssist.mSigma, mMeasAssist.mThresh,
                                   mMeasAssist.mTransition, mMeasAssist.mPosition,
                                   out mResult.rowEdge, out mResult.colEdge,
                                   out mResult.amplitude, out mResult.distance);

                if (mMeasAssist.mIsCalibValid && mMeasAssist.mTransWorldCoord)
                {
                    Rectify(mResult.rowEdge, mResult.colEdge, out mResultWorld.rowEdge, out mResultWorld.colEdge);
                    mResultWorld.distance  = Distance(mResult.rowEdge, mResult.colEdge, mResult.rowEdge, mResult.colEdge, 1);
                    mResultWorld.amplitude = mResult.amplitude;
                }
                else
                {
                    mResultWorld = new EdgeResult(mResult);
                }
            }
            catch (HOperatorException e)
            {
                mEdgeXLD.Dispose();
                mMeasAssist.exceptionText = e.Message;
                mResultWorld = new EdgeResult();
                return;
            }
            UpdateXLD();
        }
 /// <summary>
 /// Creates an edge result instance containing data from
 /// the provided result value (deep copy).
 /// </summary>
 public EdgeResult(EdgeResult result)
     : this(result.rowEdge, result.colEdge,
            result.amplitude, result.distance)
 {
 }
 /// <summary>Clears measurement result.</summary>
 public override void ClearResultData()
 {
     mResultWorld = new EdgeResult();
 }