/// <summary> /// Creates a new builder. /// </summary> /// <param name="stack">image to compose</param> /// <param name="options">render options</param> public CompositorBuilder(ImageStack stack, RenderOptions options) { _stack = stack; _options = options; _image = _stack.Underlay !; }
/// <summary> /// Initializes the 2D view with the given ImageStack /// </summary> public void Initialize(ImageStack imageStack) { foreach (var type in Enum.GetValues(typeof(SliceType)).Cast <SliceType>()) { _selection[type] = 0; } if (_pixelClickHandler == null) { _pixelClickHandler = gameObject.GetComponentInChildren <PixelClickHandler>(); } _imageStack = imageStack; SliceSlider.MaximumValue = _imageStack.GetMaxValue(CurrentSliceType); SliceSlider.CurrentInt = _selection.GetValue(CurrentSliceType, 0); _pixelClickHandler.OnPixelClick.AddListener(OnPixelClicked); try { // key might not be present in dictionary Display.texture = _imageStack.GetTexture2D(CurrentSliceType, _selection.GetValue(CurrentSliceType)); } finally { ResetClickDisplay(_imageStack.Width, _imageStack.Height); ClickDisplay.color = new Color32(255, 255, 255, 255); } }
/// <summary> /// Preprocessing of the DiFiles is completed. /// </summary> private void OnPreProcessDone() { WindowSettingsPanel.EnableButtons(); MainMenu.EnableButtons(); MainMenu.EnableDropDown(); var preview = MainMenu.PreviewImage.texture as Texture2D; if (!preview || preview.width != _stack.Width || preview.height != _stack.Height) { // Could be avoided if single preloaded texture would be stored in imagestack to save memory preview = new Texture2D(_stack.Width, _stack.Height, TextureFormat.ARGB32, false); MainMenu.PreviewImage.texture = preview; } var pixels = preview.GetPixels32(); ImageStack.FillPixelsTransversal(_stack.Slices / 2, _stack.GetData(), _stack.Width, _stack.Height, _stack.DicomFiles, pixels); preview.SetPixels32(pixels); preview.Apply(); MainMenu.PreviewImage.texture = preview; _workIndicator.FinishedWork(); }
/*----------------------------------------------------------------------------------------------------------------------------------------*/ // // ViewModel Logic // /*----------------------------------------------------------------------------------------------------------------------------------------*/ #region ViewModel Logic private void InitImageStackLayout() { ImageStack.Clear(); var target = (from a in _bodyImageList select a).Skip(NowPage * PageSize).Take(PageSize); foreach (var value in target) { var childStackLayout = new StackLayout(); var imageAsBytes = Convert.FromBase64String(value.ImageBase64String); var bodyImage = new Image { Source = ImageSource.FromStream(() => new MemoryStream(ViewModelCommonUtil.GetResizeImageBytes(imageAsBytes, 500, 625))) }; childStackLayout.Children.Add(bodyImage); var registedDateLabel = new Label { Text = value.RegistedDate.ToString(ViewModelCommonUtil.DateTimeFormatString), HorizontalOptions = LayoutOptions.Center }; childStackLayout.Children.Add(registedDateLabel); ImageStack.Add(childStackLayout); } }
// Use this for initialization private void Start() { _workIndicator = FindObjectOfType <GlobalWorkIndicator>(); MainMenu.ClearDropdown(); var folders = new List <string>(Directory.GetDirectories(Application.streamingAssetsPath)); var names = new List <string>(); for (var index = 0; index < folders.Count; index++) { var fold = folders[index]; names.Add(fold.Split('\\')[1]); } MainMenu.AddDropdownOptions(names); _stack = gameObject.AddComponent <ImageStack>(); _stack.OnTextureUpdate.AddListener(Slice2DView.TextureUpdated); _segmentCache = gameObject.AddComponent <SegmentCache>(); _segmentCache.TextureReady.AddListener(Slice2DView.SegmentTextureUpdated); _segmentCache.SegmentChanged.AddListener(SegmentChanged); Slice2DView.SegmentCache = _segmentCache; WindowSettingsPanel.OnSettingsChangedEvent.AddListener(_stack.OnWindowSettingsChanged); WindowSettingsPanel.gameObject.SetActive(false); //Volume.SetActive(false); VolumeRenderingParent.SetActive(false); RotationObjectParent.SetActive(false); Slice2DView.gameObject.SetActive(false); SegmentConfiguration.transform.gameObject.SetActive(false); SegmentConfiguration.OnSelectionChanged2D.AddListener(SelectionChanged2D); SegmentConfiguration.OnSelectionChanged3D.AddListener(SelectionChanged3D); SegmentConfiguration.OnHideBaseChanged.AddListener(HideBaseChanged); Slice2DView.OnPointSelected.AddListener(SegmentConfiguration.UpdateRegionSeed); MainMenu.DisableButtons(); }
// Start is called before the first frame update private void Start() { _workIndicator = FindObjectOfType <GlobalWorkIndicator>(); _imageStack = FindObjectOfType <ImageStack>(); }
public void Initialize(ImageStack stack) { _imageStack = stack; _transStep = 1f / (stack.GetMaxValue(SliceType.Transversal)); TransSlider.maxValue = stack.GetMaxValue(SliceType.Transversal); }