/// <summary> /// /// </summary> /// <param name="guid"></param> public void RemoveImage(Guid guid) { ImageDataContract idc; _cacheImages.TryRemove(guid, out idc); BufferRepository.FreeBuffer(idc.PixelBuffer.Id); }
/// <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); }
/// <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); } }
/// <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); //} }
/// <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); }
/// <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); }
/// <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(); } }
/// <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); }
/// <summary> /// /// </summary> /// <returns></returns> public double GetRepositorySizeGB() { return(BufferRepository.GetSizeBytes() / 1e+9); }