private void OnPipelineChanged(ImagePipeline pipe, PropertyChangedEventArgs e, int id)
 {
     switch (e.PropertyName)
     {
     case nameof(ImagePipeline.Image):
         currentView?.UpdateImage(id, pipe.Image);
         break;
     }
 }
        private void DisplayOnPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case nameof(DisplayModel.ActiveView):
                try
                {
                    currentView.Dispose();
                    currentView = null;
                    switch (models.Display.ActiveView)
                    {
                    case DisplayModel.ViewMode.Single:
                        if (models.Images.ImageType == typeof(Texture3D))
                        {
                            currentView = new Single3DView(models, viewData);
                        }
                        else
                        {
                            currentView = new SingleTextureView(models, viewData);
                        }
                        break;

                    case DisplayModel.ViewMode.Polar:
                        currentView = new PolarTextureView(models, viewData);
                        break;

                    case DisplayModel.ViewMode.CubeMap:
                        currentView = new CubeTextureView(models, viewData);
                        break;

                    case DisplayModel.ViewMode.CubeCrossView:
                        currentView = new CubeCrossTextureView(models, viewData);
                        break;

                    case DisplayModel.ViewMode.RayCasting:
                        currentView = new RayCastingView(models, viewData);
                        break;

                    case DisplayModel.ViewMode.ShearWarp:
                        currentView = new ShearWarpView(models, viewData);
                        break;

                    default:
                        currentView = new EmptyView();
                        break;
                    }

                    for (int i = 0; i < models.NumPipelines; ++i)
                    {
                        if (models.Pipelines[i].Image != null)
                        {
                            currentView.UpdateImage(i, models.Pipelines[i].Image);
                        }
                    }
                }
                catch (Exception err)
                {
                    models.Window.ShowErrorDialog(err.Message);
                    currentView = new EmptyView();
                }
                break;
            }
        }
Beispiel #3
0
        private void DisplayOnPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case nameof(DisplayModel.ActiveMipmap):
                // recompute texel position
                DispatchRecomputeTexelColor();
                break;

            case nameof(DisplayModel.ExtendedViewData):
                if (models.Display.ExtendedViewData == null)
                {
                    return;
                }
                models.Display.ExtendedViewData.ForceTexelRecompute += (o, ev) => DispatchRecomputeTexelColor();
                break;

            case nameof(DisplayModel.ActiveView):
                try
                {
                    currentView.Dispose();
                    currentView = null;
                    switch (models.Display.ActiveView)
                    {
                    case DisplayModel.ViewMode.Single:
                        if (models.Images.ImageType == typeof(Texture3D))
                        {
                            currentView = new Single3DView(models);
                        }
                        else
                        {
                            currentView = new SingleTextureView(models);
                        }
                        break;

                    case DisplayModel.ViewMode.Polar:
                        currentView = new PolarTextureView(models);
                        break;

                    case DisplayModel.ViewMode.CubeMap:
                        currentView = new CubeTextureView(models);
                        break;

                    case DisplayModel.ViewMode.CubeCrossView:
                        currentView = new CubeCrossTextureView(models);
                        break;

                    case DisplayModel.ViewMode.Volume:
                        currentView = new VolumeView(models);
                        break;

                    case DisplayModel.ViewMode.ShearWarp:
                        Debug.Assert(false);
                        //currentView = new ShearWarpView(models);
                        break;

                    default:
                        currentView = new EmptyView();
                        break;
                    }

                    for (int i = 0; i < models.NumPipelines; ++i)
                    {
                        if (models.Pipelines[i].Image != null)
                        {
                            currentView.UpdateImage(i, models.Pipelines[i].Image);
                        }
                    }
                }
                catch (Exception err)
                {
                    models.Window.ShowErrorDialog(err);
                    currentView = new EmptyView();
                }
                break;
            }
        }