public static ThumbnailDescriptor Create(IDisplaySet displaySet, IPresentationImage image, bool copyImage) { if (displaySet == null || image == null) { return(null); } string identifier = GetIdentifier(displaySet, image); if (String.IsNullOrEmpty(identifier)) { return(null); } return(new ThumbnailDescriptor(identifier, copyImage ? image.CreateFreshCopy() : image)); }
public static void AddKeyImage(IPresentationImage image) { Platform.CheckForNullReference(image, "image"); Platform.CheckForNullReference(image.ImageViewer, "image.ImageViewer"); if (!PermissionsHelper.IsInRole(AuthorityTokens.KeyImages)) throw new PolicyException(SR.ExceptionCreateKeyImagePermissionDenied); var sopProvider = image as IImageSopProvider; if (sopProvider == null) throw new ArgumentException("The image must be an IImageSopProvider.", "image"); IDisplaySet displaySet = null; foreach (var set in image.ImageViewer.LogicalWorkspace.ImageSets) { if (set.Descriptor.Equals(image.ParentDisplaySet.ParentImageSet.Descriptor)) { foreach (var d in set.DisplaySets) { var displaySetDescriptor = d.Descriptor as KeyImageDisplaySetDescriptor; if (displaySetDescriptor != null && displaySetDescriptor.SourceStudy.StudyInstanceUid.Equals(sopProvider.Sop.StudyInstanceUid)) { displaySet = d; break; } } break; } } if (displaySet == null) { var displaySetDescriptor = new KeyImageDisplaySetDescriptor(new StudyIdentifier(sopProvider.ImageSop)); displaySet = new DisplaySet(displaySetDescriptor); bool displaySetAdded = false; foreach (var imageSet in image.ImageViewer.LogicalWorkspace.ImageSets) { if (imageSet.Descriptor.Equals(image.ParentDisplaySet.ParentImageSet.Descriptor)) { imageSet.DisplaySets.Add(displaySet); displaySetAdded = true; break; } } if (!displaySetAdded) { throw new ApplicationException(SR.MessageCreateKeyImageFailed); } } var presentationImage = image.CreateFreshCopy(); var presentationState = DicomSoftcopyPresentationState.Create(image); var basicImage = presentationImage as BasicPresentationImage; if (basicImage != null) basicImage.PresentationState = presentationState; displaySet.PresentationImages.Add(presentationImage); foreach (var imageBox in image.ImageViewer.PhysicalWorkspace.ImageBoxes) { if (imageBox.DisplaySet != null && imageBox.DisplaySet.Descriptor.Uid == displaySet.Descriptor.Uid) { var physicalImage = presentationImage.CreateFreshCopy(); presentationState = DicomSoftcopyPresentationState.Create(image); basicImage = physicalImage as BasicPresentationImage; if (basicImage != null) basicImage.PresentationState = presentationState; imageBox.DisplaySet.PresentationImages.Add(physicalImage); imageBox.Draw(); } } }
public static void AddKeyImage(IPresentationImage image) { Platform.CheckForNullReference(image, "image"); Platform.CheckForNullReference(image.ImageViewer, "image.ImageViewer"); // TODO (CR Phoenix5 - Med): Clinical as well if (!PermissionsHelper.IsInRole(AuthorityTokens.KeyImages)) { throw new PolicyException(SR.ExceptionCreateKeyImagePermissionDenied); } var sopProvider = image as IImageSopProvider; if (sopProvider == null) { throw new ArgumentException("The image must be an IImageSopProvider.", "image"); } IDisplaySet displaySet = null; foreach (var set in image.ImageViewer.LogicalWorkspace.ImageSets) { if (set.Descriptor.Equals(image.ParentDisplaySet.ParentImageSet.Descriptor)) { foreach (var d in set.DisplaySets) { var displaySetDescriptor = d.Descriptor as KeyImageDisplaySetDescriptor; if (displaySetDescriptor != null && displaySetDescriptor.SourceStudy.StudyInstanceUid.Equals(sopProvider.Sop.StudyInstanceUid)) { displaySet = d; break; } } break; } } if (displaySet == null) { var displaySetDescriptor = new KeyImageDisplaySetDescriptor(new StudyIdentifier(sopProvider.ImageSop)); displaySet = new DisplaySet(displaySetDescriptor); bool displaySetAdded = false; foreach (var imageSet in image.ImageViewer.LogicalWorkspace.ImageSets) { if (imageSet.Descriptor.Equals(image.ParentDisplaySet.ParentImageSet.Descriptor)) { imageSet.DisplaySets.Add(displaySet); displaySetAdded = true; break; } } if (!displaySetAdded) { throw new ApplicationException(SR.MessageCreateKeyImageFailed); } } var presentationImage = image.CreateFreshCopy(); var presentationState = DicomSoftcopyPresentationState.Create(image); var basicImage = presentationImage as BasicPresentationImage; if (basicImage != null) { basicImage.PresentationState = presentationState; } displaySet.PresentationImages.Add(presentationImage); foreach (var imageBox in image.ImageViewer.PhysicalWorkspace.ImageBoxes) { if (imageBox.DisplaySet != null && imageBox.DisplaySet.Descriptor.Uid == displaySet.Descriptor.Uid) { var physicalImage = presentationImage.CreateFreshCopy(); presentationState = DicomSoftcopyPresentationState.Create(image); basicImage = physicalImage as BasicPresentationImage; if (basicImage != null) { basicImage.PresentationState = presentationState; } imageBox.DisplaySet.PresentationImages.Add(physicalImage); imageBox.Draw(); } } }