Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="guid"></param>
        public void RemoveImage(Guid guid)
        {
            ImageDataContract idc;

            _cacheImages.TryRemove(guid, out idc);

            BufferRepository.FreeBuffer(idc.PixelBuffer.Id);
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="guid"></param>
        public void RemoveSurfaceMesh(Guid guid)
        {
            SurfaceMeshDataContract smdc;

            _cacheMeshes.TryRemove(guid, out smdc);
            BufferRepository.FreeBuffer(smdc.VertexBuffer.Id);
            BufferRepository.FreeBuffer(smdc.NormalBuffer.Id);
            BufferRepository.FreeBuffer(smdc.TriangleIndexBuffer.Id);
        }
Esempio n. 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="guid"></param>
        public void RemoveImageVolume(Guid guid)
        {
            UniformImageVolumeDataContract ivdc;

            if (_cacheImageVolumes.TryGetValue(guid, out ivdc))
            {
                _cacheImageVolumes.Remove(guid);
                BufferRepository.FreeBuffer(ivdc.PixelBuffer.Id);
            }
        }
Esempio n. 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="guid"></param>
        public void RemoveImage(Guid guid)
        {
            ImageDataContract idc;

            _cacheImages.TryRemove(guid, out idc);

            BufferRepository.FreeBuffer(idc.PixelBuffer.Id);
            //if (_cacheImages.Count == 0)
            //{
            //    System.Diagnostics.Trace.Assert(BufferRepository.GetCount() == 0);
            //}
        }
Esempio n. 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="guid"></param>
        public void RemoveStructure(Guid guid)
        {
            StructureDataContract sdc;

            _cacheStructures.TryRemove(guid, out sdc);
            foreach (var pdcGuid in sdc.Contours)
            {
                PolygonDataContract pdc;
                _cachePolygons.TryRemove(pdcGuid, out pdc);
                BufferRepository.FreeBuffer(pdc.VertexBuffer.Id);
            }
        }
        public ContourDataContract AddPolygon(ContourDataContract pdc)
        {
            System.Diagnostics.Trace.Assert(pdc.Id.CompareTo(Guid.Empty) == 0);
            pdc.Id = Guid.NewGuid();
            _cachePolygons.Add(pdc.Id, pdc);

            // assert that GUID was not already assigned
            pdc.VertexBuffer =
                BufferRepository.CreateBuffer(pdc.Id, typeof(System.Windows.Media.Media3D.Vector3D),
                                              pdc.VertexCount);

            return(pdc);
        }
Esempio n. 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="pixelType"></param>
        /// <param name="label"></param>
        /// <returns></returns>
        public ImageDataContract AddImage(ImageDataContract idc)
        {
            // assert that GUID was not already assigned
            System.Diagnostics.Trace.Assert(idc.ImageId.CompareTo(Guid.Empty) == 0);

            idc.ImageId     = Guid.NewGuid();
            idc.PixelBuffer =
                BufferRepository.CreateBuffer(idc.ImageId, typeof(ushort), idc.Width * idc.Height);

            _cacheImages.TryAdd(idc.ImageId, idc);

            return(idc);
        }
Esempio n. 8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sb"></param>
        public void PrefetchBuffer(SharedBuffer sb)
        {
            if ((!_sbStack.Any(sbOther => sbOther.Id.CompareTo(sb.Id) == 0)) &&
                (!_sbDone.Any(sbOther => sbOther.Id.CompareTo(sb.Id) == 0)))
            {
                _sbStack.Push(sb);
            }

            if (_sbPrefetchTask == null ||
                _sbPrefetchTask.Status != System.Threading.Tasks.TaskStatus.Running)
            {
                Action prefetchAction = () =>
                {
                    try
                    {
                        while (true)
                        {
                            SharedBuffer sbLocal;
                            if (_sbStack.TryPop(out sbLocal))
                            {
#if SLOW_POKE
                                var        handle    = sbLocal.GetHandle();
                                const long STEP_SIZE = 4096;
                                long       numSteps  = (long)handle.ByteLength / STEP_SIZE;
                                System.Threading.Tasks.Parallel.For(0, numSteps,
                                                                    at => handle.Read <byte>((ulong)(at * STEP_SIZE)));
                                sbLocal.ReleaseHandle();
#else
                                BufferRepository.ReadFile(sbLocal.Id);
#endif
                                _sbDone.Add(sbLocal);
                            }
                            else
                            {
                                System.Threading.Thread.Sleep(1000);
                            }
                        }
                    }
                    finally
                    {
                        System.Console.WriteLine("Exiting prefetch...");
                    }
                };

                _sbPrefetchTask = new System.Threading.Tasks.Task(prefetchAction);
                _sbPrefetchTask.Start();
            }
        }
Esempio n. 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ivdc"></param>
        /// <returns></returns>
        public UniformImageVolumeDataContract AddImageVolume(UniformImageVolumeDataContract ivdc)
        {
            // assert that GUID was not already assigned
            System.Diagnostics.Trace.Assert(ivdc.Identity.Guid.CompareTo(Guid.Empty) == 0);

            ivdc.Identity.Guid = Guid.NewGuid();
            ivdc.PixelBuffer   =
                BufferRepository.CreateBuffer(ivdc.Identity.Guid, typeof(ushort),
                                              ivdc.Width * ivdc.Height * ivdc.Depth);

            try
            {
                _cacheImageVolumes.Add(ivdc.Identity.Guid, ivdc);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return(ivdc);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="smdc"></param>
        /// <returns></returns>
        public SurfaceMeshDataContract AddSurfaceMesh(SurfaceMeshDataContract smdc)
        {
            // assert that GUID was not already assigned
            System.Diagnostics.Trace.Assert(smdc.Id.CompareTo(Guid.Empty) == 0);
            smdc.Id = Guid.NewGuid();
            _cacheMeshes.Add(smdc.Id, smdc);

            smdc.VertexBuffer =
                BufferRepository.CreateBuffer(Guid.NewGuid(), typeof(System.Windows.Media.Media3D.Vector3D),
                                              smdc.VertexCount);

            smdc.NormalBuffer =
                BufferRepository.CreateBuffer(Guid.NewGuid(), typeof(System.Windows.Media.Media3D.Vector3D),
                                              smdc.VertexCount);

            if (smdc.TriangleCount > 0)
            {
                smdc.TriangleIndexBuffer =
                    BufferRepository.CreateBuffer(Guid.NewGuid(), typeof(TriangleIndex),
                                                  smdc.TriangleCount);
            }

            return(smdc);
        }
Esempio n. 11
0
 /// <summary>
 ///
 /// </summary>
 /// <returns></returns>
 public double GetRepositorySizeGB()
 {
     return(BufferRepository.GetSizeBytes() / 1e+9);
 }