/// <summary> /// Switches the currently selected segment /// </summary> /// <param name="index">Index of the segment in the segment cache</param> private void ShowSeg(int index) { for (var i = 0; i < SegmentCache.MaxSegmentCount; i++) { _segmentButtons[i].interactable = i != index; } _selectedSegment = index; _selectedColor.color = _segmentCache.GetSegment(_selectedSegment).SegmentColor; _segmentationStrategyChoice.value = _segmentationStrategyChoice.options.FindIndex(data => { foreach (var typeName in Enum.GetNames(typeof(SegmentationType))) { if (typeName == data.text && typeName == Enum.GetName(typeof(SegmentationType), _selectedType[index])) { return(true); } } return(false); }); _minRange.CurrentInt = _rangeParameters[index].Lower; _maxRange.CurrentInt = _rangeParameters[index].Upper; _thresholdRegion.CurrentDouble = _regionGrowParameters[index].Threshold; UpdateRegionSeed(_regionGrowParameters[index].X, _regionGrowParameters[index].Y, _regionGrowParameters[index].Z); ValidateCurrentParameters(); _dontSendToggleEvent = true; UpdateToggles(); _dontSendToggleEvent = false; }
/// <summary> /// Initializes the configuration window for the given cache. /// </summary> /// <param name="cache">SegmentCache containing the segments</param> /// <param name="minIntensity">Minimum possible intensity in data</param> /// <param name="maxIntensity">Maximum possible intensity in data</param> public void Initialize(SegmentCache cache, int minIntensity, int maxIntensity) { _segmentCache = cache; _segmentCache.SegmentChanged.AddListener(delegate { ValidateCurrentParameters(); }); _selectedColor.color = cache.GetSegment(_selectedSegment).SegmentColor; _minRange.MinimumValue = minIntensity; _maxRange.MinimumValue = minIntensity; _minRange.MaximumValue = maxIntensity; _maxRange.MaximumValue = maxIntensity; _thresholdRegion.MinimumValue = 0; _thresholdRegion.MaximumValue = (maxIntensity - minIntensity) / 2f; _segmentationStrategyChoice.value = 0; for (var i = 0; i < SegmentCache.MaxSegmentCount; i++) { _selectedType[i] = SegmentationType.Range; _rangeParameters[i] = new RangeSegmentation.RangeParameter(minIntensity, maxIntensity, 2); _regionGrowParameters[i] = new RegionGrowSegmentation.RegionGrowParameter(-1, -1, -1, (int)(_thresholdRegion.MaximumValue / 4)); } var options = new List <string>(Enum.GetNames(typeof(SegmentationType))); options.Remove(Enum.GetName(typeof(SegmentationType), SegmentationType.Unknown)); _segmentationStrategyChoice.ClearOptions(); _segmentationStrategyChoice.AddOptions(options); _thresholdRegion.CurrentInt = (int)(_thresholdRegion.MaximumValue / 4); UpdateRegionSeed(-1, -1, -1); ValidateCurrentParameters(); _dontSendToggleEvent = true; Display2Ds = 0xFFFFFFFF; Display3Ds = 0xFFFFFFFF; UpdateToggles(); _dontSendToggleEvent = false; }