예제 #1
0
            public override bool ApplyNextLut()
            {
                IVoiLut currentLut   = CurrentLut;
                State   currentState = State.GetState(currentLut);

                if (currentLut is IAutoVoiLut)
                {
                    var autoVoiLut = (IAutoVoiLut)currentLut;
                    if (autoVoiLut.IsLast)
                    {
                        int nextState = _stateProgression.IndexOf(currentState) + 1;
                        for (int n = nextState; n < nextState + _stateProgression.Count; n++)
                        {
                            IVoiLut lut = _stateProgression[(n % _stateProgression.Count)].GetLut(this);
                            if (lut != null)
                            {
                                VoiLutManager.InstallVoiLut(lut);
                                return(true);
                            }
                        }
                    }
                    else
                    {
                        autoVoiLut.ApplyNext();
                        return(true);
                    }
                }
                else
                {
                    ApplyInitialLut();
                    return(true);
                }

                return(false);
            }
예제 #2
0
            public override bool ApplyInitialLut()
            {
                var lut = GetInitialLut();

                if (lut != null)
                {
                    VoiLutManager.InstallVoiLut(lut);
                }
                return(true);
            }
        public FusionOverlayCompositeGraphic(FusionOverlayFrameData overlayFrameData)
        {
            _overlayFrameDataReference = overlayFrameData.CreateTransientReference();
            _overlayFrameDataReference.FusionOverlayFrameData.Unloaded += HandleOverlayFrameDataUnloaded;
            _voiLutManagerProxy   = new VoiLutManagerProxy();
            _colorMapManagerProxy = new ColorMapManagerProxy();

            // install an initial VOI window if one is available in the overlay headers
            var initialVoiWindow = CollectionUtils.FirstElement(overlayFrameData.OverlayData.VoiWindows);

            if (initialVoiWindow != null)
            {
                VoiLutManager.InstallVoiLut(new BasicVoiLutLinear(initialVoiWindow.Width, initialVoiWindow.Center));
            }
        }
예제 #4
0
            public override bool ApplyLinearLut(string lutExplanation)
            {
                if (VoiLutManager == null)
                {
                    return(false);
                }

                var voiLutsProvider       = Image as IDicomVoiLutsProvider;
                AutoImageVoiLutLinear lut = AutoImageVoiLutLinear.CreateFrom(voiLutsProvider, lutExplanation);

                if (lut == null)
                {
                    return(false);
                }

                VoiLutManager.InstallVoiLut(lut);
                return(true);
            }
예제 #5
0
            public override bool ApplyDataLut(string lutExplanation)
            {
                if (VoiLutManager == null)
                {
                    return(false);
                }

                var voiLutsProvider     = Image as IDicomVoiLutsProvider;
                AutoImageVoiDataLut lut = AutoImageVoiDataLut.CreateFrom(voiLutsProvider, lutExplanation);

                if (lut == null)
                {
                    return(false);
                }

                VoiLutManager.InstallVoiLut(new AdjustableDataLut(lut));
                return(true);
            }
예제 #6
0
 public override bool ApplyInitialLut()
 {
     VoiLutManager.InstallVoiLut(GetInitialLut());
     return(true);
 }