示例#1
0
        /// <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;
        }
示例#2
0
        /// <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;
        }