private void rake(HObject hoImage, out HObject hoRegions, HTuple hvElements, HTuple hvDetectHeight,
                      HTuple hvDetectWidth, HTuple hvSigma, HTuple hvThreshold, HTuple hvTransition,
                      HTuple hvSelect, HTuple hvRow1, HTuple hvColumn1, HTuple hvRow2, HTuple hvColumn2,
                      out HTuple hvBeginRow, out HTuple hvBeginCol)
    {
        HDevProcedure     rakeProc = new HDevProcedure("rake");
        HDevProcedureCall rakeProcCall;

        rakeProcCall = new HDevProcedureCall(rakeProc);
        rakeProcCall.SetInputIconicParamObject("Image", hoImage);
        rakeProcCall.SetInputCtrlParamTuple("Elements", hvElements);
        rakeProcCall.SetInputCtrlParamTuple("DetectHeight", hvDetectHeight);
        rakeProcCall.SetInputCtrlParamTuple("DetectWidth", hvDetectWidth);
        rakeProcCall.SetInputCtrlParamTuple("Sigma", hvSigma);
        rakeProcCall.SetInputCtrlParamTuple("Threshold", hvThreshold);
        rakeProcCall.SetInputCtrlParamTuple("Transition", hvTransition);
        rakeProcCall.SetInputCtrlParamTuple("Select", hvSelect);
        rakeProcCall.SetInputCtrlParamTuple("Row1", hvRow1);
        rakeProcCall.SetInputCtrlParamTuple("Column1", hvColumn1);
        rakeProcCall.SetInputCtrlParamTuple("Row2", hvRow2);
        rakeProcCall.SetInputCtrlParamTuple("Column2", hvColumn2);
        rakeProcCall.Execute();
        // get output parameters from procedure call

        hoRegions  = rakeProcCall.GetOutputIconicParamXld("Regions");
        hvBeginRow = rakeProcCall.GetOutputCtrlParamTuple("ResultRow");
        hvBeginCol = rakeProcCall.GetOutputCtrlParamTuple("ResultColumn");

        rakeProcCall.Dispose();
        rakeProc.Dispose();
    }
    private void spoke(HObject hoImage, out HObject hoRegions, HTuple hvElements, HTuple hvDetectHeight,
                       HTuple hvDetectWidth, HTuple hvSigma, HTuple hvThreshold, HTuple hvTransition,
                       HTuple hvSelect, HTuple hvRoiRows, HTuple hvRoiCols, HTuple hvDirect,
                       out HTuple hvResultRow, out HTuple hvResultColumn, out HTuple hvArcType)
    {
        HDevProcedure     rakeProc = new HDevProcedure("spoke");
        HDevProcedureCall rakeProcCall;

        rakeProcCall = new HDevProcedureCall(rakeProc);
        rakeProcCall.SetInputIconicParamObject("Image", hoImage);
        rakeProcCall.SetInputCtrlParamTuple("Elements", hvElements);
        rakeProcCall.SetInputCtrlParamTuple("DetectHeight", hvDetectHeight);
        rakeProcCall.SetInputCtrlParamTuple("DetectWidth", hvDetectWidth);
        rakeProcCall.SetInputCtrlParamTuple("Sigma", hvSigma);
        rakeProcCall.SetInputCtrlParamTuple("Threshold", hvThreshold);
        rakeProcCall.SetInputCtrlParamTuple("Transition", hvTransition);
        rakeProcCall.SetInputCtrlParamTuple("Select", hvSelect);
        rakeProcCall.SetInputCtrlParamTuple("ROIRows", hvRoiRows);
        rakeProcCall.SetInputCtrlParamTuple("ROICols", hvRoiCols);
        rakeProcCall.SetInputCtrlParamTuple("Direct", hvDirect);
        rakeProcCall.Execute();
        // get output parameters from procedure call

        hoRegions      = rakeProcCall.GetOutputIconicParamRegion("Regions");
        hvResultRow    = rakeProcCall.GetOutputCtrlParamTuple("ResultRow");
        hvResultColumn = rakeProcCall.GetOutputCtrlParamTuple("ResultColumn");
        hvArcType      = rakeProcCall.GetOutputCtrlParamTuple("ArcType");

        rakeProcCall.Dispose();
        rakeProc.Dispose();
    }
    private void pts_to_best_line(out HObject hoLine, HTuple hvBeginRow,
                                  HTuple hvBeginCol,
                                  int activeNum,
                                  out HTuple hvResultBeginRow,
                                  out HTuple hvResultBeginCol,
                                  out HTuple hvResultEndRow,
                                  out HTuple hvResultEndCol)
    {
        HDevProcedure     ptsProc = new HDevProcedure("pts_to_best_line");
        HDevProcedureCall ptsProcCall;

        ptsProcCall = new HDevProcedureCall(ptsProc);
        ptsProcCall.SetInputCtrlParamTuple("Rows", hvBeginRow);
        ptsProcCall.SetInputCtrlParamTuple("Cols", hvBeginCol);
        ptsProcCall.SetInputCtrlParamTuple("ActiveNum", activeNum);
        ptsProcCall.Execute();
        // get output parameters from procedure call

        hoLine           = ptsProcCall.GetOutputIconicParamObject("Line");
        hvResultBeginRow = ptsProcCall.GetOutputCtrlParamTuple("Row1");
        hvResultBeginCol = ptsProcCall.GetOutputCtrlParamTuple("Col1");
        hvResultEndRow   = ptsProcCall.GetOutputCtrlParamTuple("Row2");
        hvResultEndCol   = ptsProcCall.GetOutputCtrlParamTuple("Col2");

        ptsProcCall.Dispose();
        ptsProc.Dispose();
    }
    private void pts_to_best_circle(out HObject hoCircle, HTuple hvResultRow, HTuple hvResultColumn, int activeNum,
                                    string arcType, out HTuple hvCirCentreRow, out HTuple hvCirCentreColumn,
                                    out HTuple hvCirRadius)
    {
        HDevProcedure     ptsProc = new HDevProcedure("pts_to_best_circle");
        HDevProcedureCall ptsProcCall;

        ptsProcCall = new HDevProcedureCall(ptsProc);
        ptsProcCall.SetInputCtrlParamTuple("Rows", hvResultRow);
        ptsProcCall.SetInputCtrlParamTuple("Cols", hvResultColumn);
        ptsProcCall.SetInputCtrlParamTuple("ActiveNum", activeNum);
        ptsProcCall.SetInputCtrlParamTuple("ArcType", arcType);
        ptsProcCall.Execute();
        // get output parameters from procedure call

        hoCircle          = ptsProcCall.GetOutputIconicParamObject("Circle");
        hvCirCentreRow    = ptsProcCall.GetOutputCtrlParamTuple("RowCenter");
        hvCirCentreColumn = ptsProcCall.GetOutputCtrlParamTuple("ColCenter");
        hvCirRadius       = ptsProcCall.GetOutputCtrlParamTuple("Radius");

        ptsProcCall.Dispose();
        ptsProc.Dispose();
    }