/// <summary> /// Compares two <see cref="IPresentationImage"/>s. /// </summary> public override int Compare(IPresentationImage x, IPresentationImage y) { ISopProvider xProvider = x as ISopProvider; ISopProvider yProvider = y as ISopProvider; if (ReferenceEquals(xProvider, yProvider)) { return(0); //same object or both are null } //at this point, at least one of x or y is non-null and they are not the same object if (xProvider == null) { return(-ReturnValue); // x > y (because we want x at the end for non-reverse sorting) } if (yProvider == null) { return(ReturnValue); // x < y (because we want y at the end for non-reverse sorting) } if (ReferenceEquals(xProvider.Sop, yProvider.Sop)) { return(0); } return(Compare(xProvider.Sop, yProvider.Sop)); }
/// <summary> /// Compares two <see cref="IImageSet"/>s. /// </summary> public override int Compare(IImageSet x, IImageSet y) { if (x.DisplaySets.Count == 0 || y.DisplaySets.Count == 0) { Debug.Assert(false, "All image sets being sorted must have at least one display set with at least one image in order for them to be sorted properly."); return(0); } IDisplaySet displaySet1 = x.DisplaySets[0]; IDisplaySet displaySet2 = y.DisplaySets[0]; if (displaySet1.PresentationImages.Count == 0 || displaySet2.PresentationImages.Count == 0) { Debug.Assert(false, "All image sets being sorted must have at least one display set with at least one image in order for them to be sorted properly."); return(0); } ISopProvider provider1 = displaySet1.PresentationImages[0] as ISopProvider; ISopProvider provider2 = displaySet2.PresentationImages[0] as ISopProvider; if (provider1 == null) { if (provider2 == null) { return(0); // x == y } else { return(-this.ReturnValue); // x > y (because we want it at the end for non-reverse sorting) } } else { if (provider2 == null) { return(this.ReturnValue); // x < y (because we want it at the end for non-reverse sorting) } } return(Compare(provider1.Sop, provider2.Sop)); }
private IEnumerable <IComparable> GetCompareValues(IImageSet imageSet) { DateTime?studyDate = null; DateTime?studyTime = null; IDicomImageSetDescriptor descriptor = imageSet.Descriptor as IDicomImageSetDescriptor; if (descriptor == null) { if (imageSet.DisplaySets.Count == 0) { Debug.Assert(false, "All image sets being sorted must have at least one display set with at least one image in order for them to be sorted properly."); } else if (imageSet.DisplaySets[0].PresentationImages.Count == 0) { Debug.Assert(false, "All image sets being sorted must have at least one display set with at least one image in order for them to be sorted properly."); } else { ISopProvider provider = imageSet.DisplaySets[0].PresentationImages[0] as ISopProvider; if (provider != null) { studyDate = DateParser.Parse(provider.Sop.StudyDate); studyTime = TimeParser.Parse(provider.Sop.StudyTime); } } } else { studyDate = DateParser.Parse(descriptor.SourceStudy.StudyDate); studyTime = TimeParser.Parse(descriptor.SourceStudy.StudyTime); } yield return(studyDate); yield return(studyTime); yield return(imageSet.Name); }