Ejemplo n.º 1
0
        public override void Execute()
        {
            // make sure only one image is visible
            if (models.NumEnabled != 1)
            {
                models.Window.ShowErrorDialog("Exactly one image equation should be visible for conversion.");
                return;
            }

            var pipeId = models.GetFirstEnabledPipeline();
            var srcTex = models.Pipelines[pipeId].Image;

            if (srcTex == null)
            {
                return;                 // not yet computed?
            }
            var firstImage = models.Images.Images[models.Pipelines[pipeId].Color.FirstImageId];
            var texName    = firstImage.Filename;
            var origFormat = firstImage.OriginalFormat;
            var texAlias   = firstImage.Alias;

            var vm = new Tex3DToArrayViewModel(srcTex.Size);

            if (models.Display.ExtendedViewData is Single3DDisplayModel displayEx)
            {
                vm.SelectedAxis = vm.AxisList.Find(i => i.Cargo == displayEx.FixedAxis);
                vm.FirstSlice   = displayEx.FixedAxisSlice;
                vm.LastSlice    = displayEx.FixedAxisSlice;
            }

            var dia = new Tex3DToArrayDialog(vm);

            if (models.Window.ShowDialog(dia) != true)
            {
                return;
            }

            var tex = models.ConvertTo2DArray((Texture3D)srcTex, vm.FreeAxis1, vm.FreeAxis2, vm.FirstSlice,
                                              vm.LastSlice - vm.FirstSlice + 1);

            // clear all textures
            models.Reset();
            models.Images.AddImage(tex, false, texName, origFormat, texAlias);
        }
 public Tex3DToArrayDialog(Tex3DToArrayViewModel viewModel)
 {
     InitializeComponent();
     DataContext = viewModel;
 }