/// <summary> /// 获取当前选中ROI的信息 /// </summary> /// <returns></returns> protected internal System.Collections.Generic.List <double> smallestActiveROI(out string name, out int index) { name = ""; int activeROIIdx = this.getActiveROIIdx(); index = activeROIIdx; if (activeROIIdx > -1) { ROI region = this.getActiveROI(); Type type = region.GetType(); name = type.Name; HTuple smallest = region.getModelData(); System.Collections.Generic.List <double> resual = new System.Collections.Generic.List <double>(); for (int i = 0; i < smallest.Length; i++) { resual.Add(smallest[i].D); } return(resual); } else { return(null); } }
protected internal ROI smallestActiveROI(out System.Collections.Generic.List <double> data, out int index) { int activeROIIdx = this.getActiveROIIdx(); index = activeROIIdx; data = new System.Collections.Generic.List <double>(); if (activeROIIdx > -1) { ROI region = this.getActiveROI(); Type type = region.GetType(); HTuple smallest = region.getModelData(); for (int i = 0; i < smallest.Length; i++) { data.Add(smallest[i].D); } return(region); } else { return(null); } }
/// <summary> /// Clears all variables managing ROI objects /// </summary> public void reset() { ROIList.Clear(); activeROIidx = -1; ModelROI = null; roiMode = null; NotifyRCObserver(EVENT_DELETED_ALL_ROIS); }
protected internal RoiData(int id, ROI roi) { this._id = id; HTuple m_roiData = null; m_roiData = roi.getModelData(); switch (roi.Type) { case "ROIRectangle1": this._name = "Rectangle1"; if (m_roiData != null) { this._rectangle1 = new Config.Rectangle1(m_roiData[0].D, m_roiData[1].D, m_roiData[2].D, m_roiData[3].D); this._rectangle1.Color = roi.Color; } break; case "ROIRectangle2": this._name = "Rectangle2"; if (m_roiData != null) { this._rectangle2 = new Config.Rectangle2(m_roiData[0].D, m_roiData[1].D, m_roiData[2].D, m_roiData[3].D, m_roiData[4].D); this._rectangle2.Color = roi.Color; } break; case "ROICircle": this._name = "Circle"; if (m_roiData != null) { this._circle = new Config.Circle(m_roiData[0].D, m_roiData[1].D, m_roiData[2].D); this._circle.Color = roi.Color; } break; case "ROILine": this._name = "Line"; if (m_roiData != null) { this._line = new Config.Line(m_roiData[0].D, m_roiData[1].D, m_roiData[2].D, m_roiData[3].D); this._line.Color = roi.Color; } break; default: break; } }
/// <summary> /// 在指定位置显示ROI--Rectangle2 /// </summary> /// <param name="row"></param> /// <param name="col"></param> /// <param name="phi"></param> /// <param name="length1"></param> /// <param name="length2"></param> /// <param name="rois"></param> public void displayRect2(double row, double col, double phi, double length1, double length2) { setROIShape(new ROIRectangle2()); if (roiMode != null) //either a new ROI object is created { roiMode.createRectangle2(row, col, phi, length1, length2); roiMode.Type = roiMode.GetType().Name; ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
/// <summary> /// 在指定位置生成ROI--Circle /// </summary> /// <param name="row"></param> /// <param name="col"></param> /// <param name="radius"></param> /// <param name="rois"></param> public void displayCircle(double row, double col, double radius) { setROIShape(new ROICircle()); if (roiMode != null) //either a new ROI object is created { roiMode.createCircle(row, col, radius); roiMode.Type = roiMode.GetType().Name; ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
/// <summary> /// 在指定位置显示ROI--Line /// </summary> /// <param name="beginRow"></param> /// <param name="beginCol"></param> /// <param name="endRow"></param> /// <param name="endCol"></param> /// <param name="rois"></param> public void displayLine(double beginRow, double beginCol, double endRow, double endCol) { this.setROIShape(new ROILine()); if (roiMode != null) //either a new ROI object is created { roiMode.createLine(beginRow, beginCol, endRow, endCol); roiMode.Type = roiMode.GetType().Name; ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
/*****************************/ /// <summary> /// 在指定位置显示ROI--Rectangle1 /// </summary> /// <param name="row1"></param> /// <param name="col1"></param> /// <param name="row2"></param> /// <param name="col2"></param> /// <param name="rois"></param> public void displayRect1(string color, double row1, double col1, double row2, double col2) { setROIShape(new ROIRectangle1()); if (roiMode != null) //either a new ROI object is created { roiMode.createRectangle1(row1, col1, row2, col2); roiMode.Type = roiMode.GetType().Name; roiMode.Color = color; ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
public void displayCircularArc(string color, double row, double col, double radius, double startPhi, double extentPhi) { setROIShape(new ROICircle()); if (roiMode != null) //either a new ROI object is created { roiMode.createCircularArc(row, col, radius, startPhi, extentPhi, "positive"); roiMode.Type = roiMode.GetType().Name; roiMode.Color = color; ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
public void displayNurbs(string color, HTuple rows, HTuple cols) { setROIShape(new ROINurbs()); if (roiMode != null) //either a new ROI object is created { roiMode.createROINurbs(rows, cols); roiMode.Type = roiMode.GetType().Name; roiMode.Color = color; ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
/// <summary> /// Reaction of ROI objects to the 'mouse button down' event: changing /// the shape of the ROI and adding it to the ROIList if it is a 'seed' /// ROI. /// </summary> /// <param name="imgX">x coordinate of mouse event</param> /// <param name="imgY">y coordinate of mouse event</param> /// <returns></returns> public int mouseDownAction(double imgX, double imgY) { int idxROI = -1; double max = 10000, dist = 0; double epsilon = 35.0; //maximal shortest distance to one of //the handles if (roiMode != null) //either a new ROI object is created { roiMode.createROI(imgX, imgY); ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } else if (ROIList.Count > 0) // ... or an existing one is manipulated { activeROIidx = -1; for (int i = 0; i < ROIList.Count; i++) { dist = ((ROI)ROIList[i]).distToClosestHandle(imgX, imgY); if ((dist < max) && (dist < epsilon)) { max = dist; idxROI = i; } } //end of for if (idxROI >= 0) { activeROIidx = idxROI; NotifyRCObserver(ROIController.EVENT_ACTIVATED_ROI); } viewController.repaint(); } return(activeROIidx); }
/// <summary> /// 在指定位置生成ROI--Rectangle1 /// </summary> /// <param name="row1"></param> /// <param name="col1"></param> /// <param name="row2"></param> /// <param name="col2"></param> /// <param name="rois"></param> protected internal void genNurbs(HTuple rows, HTuple cols, ref System.Collections.Generic.List <ROI> rois) { setROIShape(new ROINurbs()); if (rois == null) { rois = new System.Collections.Generic.List <ROI>(); } if (roiMode != null) //either a new ROI object is created { roiMode.createROINurbs(rows, cols); roiMode.Type = roiMode.GetType().Name; rois.Add(roiMode); ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
/// <summary> /// 在指定位置生成ROI--Line /// </summary> /// <param name="beginRow"></param> /// <param name="beginCol"></param> /// <param name="endRow"></param> /// <param name="endCol"></param> /// <param name="rois"></param> protected internal void genLine(double beginRow, double beginCol, double endRow, double endCol, ref System.Collections.Generic.List <ROI> rois) { this.setROIShape(new ROILine()); if (rois == null) { rois = new System.Collections.Generic.List <ROI>(); } if (roiMode != null) //either a new ROI object is created { roiMode.createLine(beginRow, beginCol, endRow, endCol); roiMode.Type = roiMode.GetType().Name; rois.Add(roiMode); ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
/// <summary> /// 在指定位置生成ROI--Rectangle1 /// </summary> /// <param name="row1"></param> /// <param name="col1"></param> /// <param name="row2"></param> /// <param name="col2"></param> /// <param name="rois"></param> protected internal void genInitRect1(int imageHeight, ref System.Collections.Generic.List <ROI> rois) { setROIShape(new ROIRectangle1()); if (rois == null) { rois = new System.Collections.Generic.List <ROI>(); } if (roiMode != null) //either a new ROI object is created { roiMode.createInitRectangle1(imageHeight); roiMode.Type = roiMode.GetType().Name; rois.Add(roiMode); ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
/// <summary> /// 在指定位置生成ROI--Rectangle2 /// </summary> /// <param name="row"></param> /// <param name="col"></param> /// <param name="phi"></param> /// <param name="length1"></param> /// <param name="length2"></param> /// <param name="rois"></param> protected internal void genRect2(double row, double col, double phi, double length1, double length2, ref System.Collections.Generic.List <ROI> rois) { setROIShape(new ROIRectangle2()); if (rois == null) { rois = new System.Collections.Generic.List <ROI>(); } if (roiMode != null) //either a new ROI object is created { roiMode.createRectangle2(row, col, phi, length1, length2); roiMode.Type = roiMode.GetType().Name; rois.Add(roiMode); ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
/// <summary> /// 在指定位置生成ROI--Rectangle1 /// </summary> /// <param name="row1"></param> /// <param name="col1"></param> /// <param name="row2"></param> /// <param name="col2"></param> /// <param name="rois"></param> public void genRect1(double row1, double col1, double row2, double col2, ref System.Collections.Generic.List <ROI> rois) { setROIShape(new ROIRectangle1()); if (rois == null) { rois = new System.Collections.Generic.List <ROI>(); } if (roiMode != null) //either a new ROI object is created { roiMode.createRectangle1(row1, col1, row2, col2); roiMode.Type = roiMode.GetType().Name; rois.Add(roiMode); ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
protected internal void genCircularArc(double row, double col, double radius, double startPhi, double extentPhi, string direct, ref System.Collections.Generic.List <ROI> rois) { setROIShape(new ROICircularArc()); if (rois == null) { rois = new System.Collections.Generic.List <ROI>(); } if (roiMode != null) //either a new ROI object is created { roiMode.createCircularArc(row, col, radius, startPhi, extentPhi, direct); roiMode.Type = roiMode.GetType().Name; rois.Add(roiMode); ROIList.Add(roiMode); roiMode = null; activeROIidx = ROIList.Count - 1; viewController.repaint(); NotifyRCObserver(ROIController.EVENT_CREATED_ROI); } }
public Model.ROI smallestActiveROI(out List <double> data, out int index) { Model.ROI roi = this._roiController.smallestActiveROI(out data, out index); return(roi); }
public void fixROI(int index, Model.ROI roi, ref List <Model.ROI> rois) { rois[index] = roi; }
/// <summary> /// To create a new ROI object the application class initializes a /// 'seed' ROI instance and passes it to the ROIController. /// The ROIController now responds by manipulating this new ROI /// instance. /// </summary> /// <param name="r"> /// 'Seed' ROI object forwarded by the application forms class. /// </param> public void setROIShape(ROI r) { roiMode = r; roiMode.setOperatorFlag(stateROI); }
/// <summary> /// Deletes this ROI instance if a 'seed' ROI object has been passed /// to the ROIController by the application class. /// /// </summary> public void resetROI() { activeROIidx = -1; roiMode = null; }