Inheritance: NotifyPropertyChanged, IDisposable
        public void Dispose()
        {
            if (mTexCoordVertexBuffer != null)
            {
                mTexCoordVertexBuffer.Dispose();
                mTexCoordVertexBuffer = null;
            }

            if (mPositionVertexBuffer != null)
            {
                mPositionVertexBuffer.Dispose();
                mPositionVertexBuffer = null;
            }

            if (mInputLayout != null)
            {
                mInputLayout.Dispose();
                mInputLayout = null;
            }

            if (mEffect != null)
            {
                mEffect.Dispose();
                mEffect = null;
            }

            //if ( mTinyTextContext != null )
            //{
            //    mTinyTextContext.Dispose();
            //    mTinyTextContext = null;
            //}

            if (mTileManager != null)
            {
                mTileManager.Dispose();
                mTileManager = null;
            }

            if (mDebugRenderer != null)
            {
                mDebugRenderer.Dispose();
                mDebugRenderer = null;
            }
        }
        public MergeSegmentationRenderingStrategy(SlimDX.Direct3D11.Device device, DeviceContext deviceContext, TileManager tileManager)
        {
            mTileManager   = tileManager;
            mDebugRenderer = new DebugRenderer(device);

            mEffect = EffectUtil.CompileEffect(device, @"Shaders\MergeRenderer2D.fx");

            var positionTexcoordInputElements = new[]
            {
                new InputElement("POSITION", 0, POSITION_FORMAT, POSITION_SLOT),
                new InputElement("TEXCOORD", 0, TEXCOORD_FORMAT, TEXCOORD_SLOT)
            };

            EffectTechnique effectTechnique = mEffect.GetTechniqueByName("TileManager2D");

            mPass = effectTechnique.GetPassByName("TileManager2D");

            mInputLayout = new InputLayout(device, mPass.Description.Signature, positionTexcoordInputElements);

            mPositionVertexBuffer = new Buffer(device,
                                               null,
                                               QUAD_NUM_VERTICES * POSITION_NUM_COMPONENTS_PER_VERTEX * POSITION_NUM_BYTES_PER_COMPONENT,
                                               ResourceUsage.Dynamic,
                                               BindFlags.VertexBuffer,
                                               CpuAccessFlags.Write,
                                               ResourceOptionFlags.None,
                                               0);

            mTexCoordVertexBuffer = new Buffer(device,
                                               null,
                                               QUAD_NUM_VERTICES * TEXCOORD_NUM_COMPONENTS_PER_VERTEX * TEXCOORD_NUM_BYTES_PER_COMPONENT,
                                               ResourceUsage.Dynamic,
                                               BindFlags.VertexBuffer,
                                               CpuAccessFlags.Write,
                                               ResourceOptionFlags.None,
                                               0);

            //bool result;
            //mTinyTextContext = new Context( device, deviceContext, Constants.MAX_NUM_TINY_TEXT_CHARACTERS, out result );
            //Release.Assert( result );

            mStopwatch.Start();
        }
        public AdjustSegmentationRenderingStrategy( SlimDX.Direct3D11.Device device, DeviceContext deviceContext, TileManager tileManager )
        {
            mTileManager = tileManager;
            mDebugRenderer = new DebugRenderer( device );

            mEffect = EffectUtil.CompileEffect( device, @"Shaders\AdjustRenderer2D.fx" );

            var positionTexcoordInputElements = new[]
                                                {
                                                    new InputElement( "POSITION", 0, POSITION_FORMAT, POSITION_SLOT ),
                                                    new InputElement( "TEXCOORD", 0, TEXCOORD_FORMAT, TEXCOORD_SLOT )
                                                };

            EffectTechnique effectTechnique = mEffect.GetTechniqueByName( "TileManager2D" );
            mPass = effectTechnique.GetPassByName( "TileManager2D" );

            mInputLayout = new InputLayout( device, mPass.Description.Signature, positionTexcoordInputElements );

            mPositionVertexBuffer = new Buffer( device,
                                                null,
                                                QUAD_NUM_VERTICES * POSITION_NUM_COMPONENTS_PER_VERTEX * POSITION_NUM_BYTES_PER_COMPONENT,
                                                ResourceUsage.Dynamic,
                                                BindFlags.VertexBuffer,
                                                CpuAccessFlags.Write,
                                                ResourceOptionFlags.None,
                                                0 );

            mTexCoordVertexBuffer = new Buffer( device,
                                                null,
                                                QUAD_NUM_VERTICES * TEXCOORD_NUM_COMPONENTS_PER_VERTEX * TEXCOORD_NUM_BYTES_PER_COMPONENT,
                                                ResourceUsage.Dynamic,
                                                BindFlags.VertexBuffer,
                                                CpuAccessFlags.Write,
                                                ResourceOptionFlags.None,
                                                0 );

            //bool result;
            //mTinyTextContext = new Context( device, deviceContext, Constants.MAX_NUM_TINY_TEXT_CHARACTERS, out result );
            //Release.Assert( result );

            mStopwatch.Start();
        }
Esempio n. 4
0
        public void NextImage()
        {
            var centerDataSpace = TileManager.TiledDatasetView.CenterDataSpace;

            if (centerDataSpace.Z < TileManager.TiledDatasetDescription.TiledVolumeDescriptions.Get("SourceMap").NumVoxelsZ - 1)
            {
                if (CurrentToolMode == ToolMode.SplitSegmentation && TileManager.JoinSplits3D)
                {
                    //
                    // Record split state for 3D splitting
                    //
                    TileManager.Internal.RecordSplitState(TileManager.SelectedSegmentId, centerDataSpace);
                }
                centerDataSpace.Z += 1f;

                TileManager.TiledDatasetView.CenterDataSpace = centerDataSpace;

                CurrentToolMoveZ();
                TileManager.UpdateZ();
                UpdateOneTile();
            }
        }
Esempio n. 5
0
        public void PreviousImage()
        {
            var centerDataSpace = TileManager.TiledDatasetView.CenterDataSpace;

            if (centerDataSpace.Z > 0)
            {
                if (CurrentToolMode == ToolMode.SplitSegmentation && TileManager.JoinSplits3D)
                {
                    //
                    // Record split state for 3D splitting
                    //
                    TileManager.Internal.RecordSplitState(TileManager.SelectedSegmentId, centerDataSpace);
                }
                centerDataSpace.Z -= 1f;

                TileManager.TiledDatasetView.CenterDataSpace = centerDataSpace;

                CurrentToolMoveZ();
                TileManager.UpdateZ();
                UpdateOneTile();
            }
        }
Esempio n. 6
0
        public void ZoomIn()
        {
            var extentDataSpace = TileManager.TiledDatasetView.ExtentDataSpace;

            if (extentDataSpace.X > 1e-3 && extentDataSpace.Y > 1e-3)
            {
                var changeBy = (float)Constants.MAGNIFICATION_STEP;

                //
                // Decrease the view extent
                //
                extentDataSpace.X /= changeBy;
                extentDataSpace.Y /= changeBy;

                TileManager.TiledDatasetView.ExtentDataSpace = extentDataSpace;

                CheckBounds();

                QuickRender();

                TileManager.UpdateXYZ();
            }
        }
Esempio n. 7
0
        public void ZoomOut()
        {
            var extentDataSpace        = TileManager.TiledDatasetView.ExtentDataSpace;
            var tiledVolumeDescription = TileManager.TiledDatasetDescription.TiledVolumeDescriptions.Get("SourceMap");

            if (extentDataSpace.X < tiledVolumeDescription.NumTilesX * 10 && extentDataSpace.Y < tiledVolumeDescription.NumTilesY * 10)
            {
                var changeBy = (float)Constants.MAGNIFICATION_STEP;

                //
                // Increase the view extent
                //
                extentDataSpace.X *= changeBy;
                extentDataSpace.Y *= changeBy;

                TileManager.TiledDatasetView.ExtentDataSpace = extentDataSpace;

                CheckBounds();

                QuickRender();

                TileManager.UpdateXYZ();
            }
        }
Esempio n. 8
0
        public void PanToSegmentCentroid3D(uint segId)
        {
            var centerDataSpace = TileManager.TiledDatasetView.CenterDataSpace;
            var pointTileSpace  = TileManager.Internal.GetSegmentCentralTileLocation(segId);

            if (centerDataSpace.Z != pointTileSpace.Z && CurrentToolMode == ToolMode.SplitSegmentation && TileManager.JoinSplits3D)
            {
                //
                // Record split state for 3D splitting
                //
                TileManager.Internal.RecordSplitState(TileManager.SelectedSegmentId, centerDataSpace);
            }

            centerDataSpace.X = 0.5f + pointTileSpace.X;
            centerDataSpace.Y = 0.5f + pointTileSpace.Y;
            centerDataSpace.Z = pointTileSpace.Z;

            TileManager.TiledDatasetView.CenterDataSpace = centerDataSpace;

            Tools.Get(ViewerMode.TileManager2D).Get(CurrentToolMode).Select();

            TileManager.UpdateXYZ();
            Update();
        }
        public void Dispose()
        {
            if ( mTexCoordVertexBuffer != null )
            {
                mTexCoordVertexBuffer.Dispose();
                mTexCoordVertexBuffer = null;
            }

            if ( mPositionVertexBuffer != null )
            {
                mPositionVertexBuffer.Dispose();
                mPositionVertexBuffer = null;
            }

            if ( mInputLayout != null )
            {
                mInputLayout.Dispose();
                mInputLayout = null;
            }

            if ( mEffect != null )
            {
                mEffect.Dispose();
                mEffect = null;
            }

            //if ( mTinyTextContext != null )
            //{
            //    mTinyTextContext.Dispose();
            //    mTinyTextContext = null;
            //}

            if ( mTileManager != null )
            {
                mTileManager.Dispose();
                mTileManager = null;
            }

            if ( mDebugRenderer != null )
            {
                mDebugRenderer.Dispose();
                mDebugRenderer = null;
            }
        }
Esempio n. 10
0
 public DrawMergeSegmentationTool( TileManager tileManager, Engine engine )
     : base(tileManager, engine)
 {
     mTileManager = tileManager;
     mEngine = engine;
 }
Esempio n. 11
0
 public MergeSegmentationTool( TileManager tileManager, Engine engine )
     : base(tileManager, engine)
 {
     mTileManager = tileManager;
 }
Esempio n. 12
0
 public DrawMergeSegmentationTool(TileManager tileManager, Engine engine)
     : base(tileManager, engine)
 {
     mTileManager = tileManager;
     mEngine      = engine;
 }
Esempio n. 13
0
        public Engine(ObservableDictionary <string, D3D11HwndDescription> d3d11HwndDescriptions)
        {
            Console.WriteLine("\nMojo initializing...\n");

            try
            {
                D3D11.Initialize(out mDxgiFactory, out mD3D11Device);
                //Cuda.Initialize( mD3D11Device );
                //Thrust.Initialize();

                TileManager = new TileManager(new Interop.TileManager(mD3D11Device, mD3D11Device.ImmediateContext, Constants.ConstParameters));

                Tools = new ObservableDictionary <ViewerMode, ObservableDictionary <ToolMode, ITool> >
                {
                    {
                        ViewerMode.TileManager2D,
                        new ObservableDictionary <ToolMode, ITool>
                        {
                            { ToolMode.Null, new NullTool() },
                            { ToolMode.AdjustSegmentation, new AdjustSegmentationTool(TileManager, this) },
                            { ToolMode.MergeSegmentation, new MergeSegmentationTool(TileManager, this) },
                            { ToolMode.DrawMergeSegmentation, new DrawMergeSegmentationTool(TileManager, this) },
                            { ToolMode.SplitSegmentation, new SplitSegmentationTool(TileManager, this) }
                        }
                    }
                };

                RenderingStrategies = new ObservableDictionary <ViewerMode, ObservableDictionary <ToolMode, IRenderingStrategy> >
                {
                    {
                        ViewerMode.TileManager2D,
                        new ObservableDictionary <ToolMode, IRenderingStrategy>
                        {
                            { ToolMode.Null, new NullRenderingStrategy(mD3D11Device, mD3D11Device.ImmediateContext) },
                            { ToolMode.AdjustSegmentation, new AdjustSegmentationRenderingStrategy(mD3D11Device, mD3D11Device.ImmediateContext, TileManager) },
                            { ToolMode.MergeSegmentation, new MergeSegmentationRenderingStrategy(mD3D11Device, mD3D11Device.ImmediateContext, TileManager) },
                            { ToolMode.DrawMergeSegmentation, new DrawMergeSegmentationRenderingStrategy(mD3D11Device, mD3D11Device.ImmediateContext, TileManager) },
                            { ToolMode.SplitSegmentation, new SplitSegmentationRenderingStrategy(mD3D11Device, mD3D11Device.ImmediateContext, TileManager) }
                        }
                    }
                };

                Viewers = new ObservableDictionary <ViewerMode, Viewer>
                {
                    {
                        ViewerMode.TileManager2D,
                        new Viewer
                        {
                            D3D11RenderingPane = new D3D11RenderingPane(mDxgiFactory,
                                                                        mD3D11Device,
                                                                        mD3D11Device.ImmediateContext,
                                                                        d3d11HwndDescriptions.Get("TileManager2D"))
                            {
                                RenderingStrategy = RenderingStrategies.Internal[ViewerMode.TileManager2D].Internal[ToolMode.Null]
                            },
                            UserInputHandler = Tools.Internal[ViewerMode.TileManager2D].Internal[ToolMode.Null]
                        }
                    }
                };
            }
            catch (Exception e)
            {
                String errorMessage = "Error opening main window:\n\n" + e.Message + "\n\nYou might want to try one of the following:\n - Install the \"DirectX End-User Runtime\" (from the Microsoft website).\n - Install the latest graphics drivers for your graphics card.\n - Reinstall the latest Mojo release.";
                MessageBox.Show(errorMessage, "Initialization Error", MessageBoxButton.OK, MessageBoxImage.Error);
                Console.WriteLine(errorMessage);
                Application.Current.Shutdown(1);
            }
        }
Esempio n. 14
0
 public MergeSegmentationTool(TileManager tileManager, Engine engine)
     : base(tileManager, engine)
 {
     mTileManager = tileManager;
 }
Esempio n. 15
0
 public SplitSegmentationTool(TileManager tileManager, Engine engine)
     : base(tileManager, engine)
 {
     mTileManager = tileManager;
     mEngine      = engine;
 }
Esempio n. 16
0
 public ToolBase( TileManager tileImageManager, Engine engine )
 {
     mTileManager = tileImageManager;
     mEngine = engine;
 }
Esempio n. 17
0
 public AdjustSegmentationTool( TileManager tileManager, Engine engine )
     : base(tileManager, engine)
 {
     mTileManager = tileManager;
     mEngine = engine;
 }
Esempio n. 18
0
        public Engine( ObservableDictionary<string, D3D11HwndDescription> d3d11HwndDescriptions )
        {
            Console.WriteLine( "\nMojo initializing...\n" );

            try
            {

                D3D11.Initialize( out mDxgiFactory, out mD3D11Device );
                //Cuda.Initialize( mD3D11Device );
                //Thrust.Initialize();

                TileManager = new TileManager( new Interop.TileManager( mD3D11Device, mD3D11Device.ImmediateContext, Constants.ConstParameters ) );

                Tools = new ObservableDictionary<ViewerMode, ObservableDictionary<ToolMode, ITool>>
                        {
                            {
                                ViewerMode.TileManager2D,
                                new ObservableDictionary< ToolMode, ITool >
                                {
                                    { ToolMode.Null, new NullTool() },
                                    { ToolMode.AdjustSegmentation, new AdjustSegmentationTool( TileManager, this ) },
                                    { ToolMode.MergeSegmentation, new MergeSegmentationTool( TileManager, this ) },
                                    { ToolMode.DrawMergeSegmentation, new DrawMergeSegmentationTool( TileManager, this ) },
                                    { ToolMode.SplitSegmentation, new SplitSegmentationTool( TileManager, this ) }
                                }
                                }
                        };

                RenderingStrategies = new ObservableDictionary<ViewerMode, ObservableDictionary<ToolMode, IRenderingStrategy>>
                                      {
                                          {
                                              ViewerMode.TileManager2D,
                                              new ObservableDictionary< ToolMode, IRenderingStrategy >
                                              {
                                                  { ToolMode.Null, new NullRenderingStrategy( mD3D11Device, mD3D11Device.ImmediateContext ) },
                                                  { ToolMode.AdjustSegmentation, new AdjustSegmentationRenderingStrategy( mD3D11Device, mD3D11Device.ImmediateContext, TileManager ) },
                                                  { ToolMode.MergeSegmentation, new MergeSegmentationRenderingStrategy( mD3D11Device, mD3D11Device.ImmediateContext, TileManager ) },
                                                  { ToolMode.DrawMergeSegmentation, new DrawMergeSegmentationRenderingStrategy( mD3D11Device, mD3D11Device.ImmediateContext, TileManager ) },
                                                  { ToolMode.SplitSegmentation, new SplitSegmentationRenderingStrategy( mD3D11Device, mD3D11Device.ImmediateContext, TileManager ) }
                                              }
                                              }
                                      };

                Viewers = new ObservableDictionary<ViewerMode, Viewer>
                          {
                              {
                                  ViewerMode.TileManager2D,
                                  new Viewer
                                  {
                                      D3D11RenderingPane = new D3D11RenderingPane( mDxgiFactory,
                                                                                   mD3D11Device,
                                                                                   mD3D11Device.ImmediateContext,
                                                                                   d3d11HwndDescriptions.Get( "TileManager2D" ) )
                                                           {
                                                               RenderingStrategy = RenderingStrategies.Internal[ ViewerMode.TileManager2D ].Internal[ ToolMode.Null ]
                                                           },
                                      UserInputHandler = Tools.Internal[ ViewerMode.TileManager2D ].Internal[ ToolMode.Null ]
                                  }
                                  }
                          };
            }
            catch ( Exception e )
            {
                String errorMessage = "Error opening main window:\n\n" + e.Message + "\n\nYou might want to try one of the following:\n - Install the \"DirectX End-User Runtime\" (from the Microsoft website).\n - Install the latest graphics drivers for your graphics card.\n - Reinstall the latest Mojo release.";
                MessageBox.Show( errorMessage, "Initialization Error", MessageBoxButton.OK, MessageBoxImage.Error );
                Console.WriteLine( errorMessage );
                Application.Current.Shutdown( 1 );
            }
        }
Esempio n. 19
0
 public void UpdateOneTile()
 {
     mSkipUpdate = true;
     TileManager.UpdateOneTile();
     Viewers.Internal.ToList().ForEach(viewer => viewer.Value.D3D11RenderingPane.Render());
 }
Esempio n. 20
0
 public ToolBase(TileManager tileImageManager, Engine engine)
 {
     mTileManager = tileImageManager;
     mEngine      = engine;
 }