示例#1
0
        /// <summary>
        /// Creates a <see cref="PixelAspectRatio"/> object from a dicom multi-valued string.
        /// </summary>
        /// <returns>
        /// Null if there are not exactly 2 parsed values in the input string.
        /// </returns>
        public static PixelAspectRatio FromString(string multiValuedString)
        {
            int[] values;
            if (DicomStringHelper.TryGetIntArray(multiValuedString, out values) && values.Length == 2)
            {
                return(new PixelAspectRatio(values[0], values[1]));
            }

            return(null);
        }
        /// <summary>
        /// Deserializes the key object selection SOP instance into a list of constituent images and associated presentation states.
        /// </summary>
        public IList <IKeyObjectContentItem> Deserialize()
        {
            List <IKeyObjectContentItem> contentItems = new List <IKeyObjectContentItem>();

            SrDocumentContentModuleIod srDocument = _document.SrDocumentContent;

            if (srDocument.ContentSequence != null)
            {
                foreach (IContentSequence contentItem in srDocument.ContentSequence.Where(contentItem => contentItem.RelationshipType == RelationshipType.Contains))
                {
                    if (contentItem.ValueType == ValueType.Image)
                    {
                        IImageReferenceMacro imageReference = contentItem;
                        if (imageReference.ReferencedSopSequence == null)
                        {
                            Platform.Log(LogLevel.Warn, "Invalid Key Object Selection document has no Referenced SOP Sequence.");
                            continue;
                        }

                        string referencedSopInstanceUid        = imageReference.ReferencedSopSequence.ReferencedSopInstanceUid;
                        string presentationStateSopInstanceUid = null;

                        if (imageReference.ReferencedSopSequence.ReferencedSopSequence != null)
                        {
                            presentationStateSopInstanceUid = imageReference.ReferencedSopSequence.ReferencedSopSequence.ReferencedSopInstanceUid;
                        }

                        string referencedFrameNumbers = imageReference.ReferencedSopSequence.ReferencedFrameNumber;
                        int[]  frameNumbers;
                        if (!string.IsNullOrEmpty(referencedFrameNumbers) &&
                            DicomStringHelper.TryGetIntArray(referencedFrameNumbers, out frameNumbers) && frameNumbers.Length > 0)
                        {
                            foreach (int frameNumber in frameNumbers)
                            {
                                KeyImageContentItem item = new KeyImageContentItem(referencedSopInstanceUid, frameNumber, presentationStateSopInstanceUid, _document);
                                contentItems.Add(item);
                            }
                        }
                        else
                        {
                            KeyImageContentItem item = new KeyImageContentItem(referencedSopInstanceUid, presentationStateSopInstanceUid, _document);
                            contentItems.Add(item);
                        }
                    }
                }
            }
            else
            {
                Platform.Log(LogLevel.Warn, "Invalid Key Object Selection document has no Content Sequence.");
            }

            return(contentItems.AsReadOnly());
        }
		/// <summary>
		/// Returns a delegate that will get the value of <paramref name="dicomTag"/> (all positions),
		/// from an <see cref="ImageSop"/> as an array of <see cref="int"/>s.
		/// </summary>
		public static FrameDataRetrieverDelegate<int[]> GetIntArrayRetriever(uint dicomTag)
		{
			return delegate(Frame frame)
				{
					string value;
					value = frame[dicomTag].ToString();
					
					int[] values;
					if (!DicomStringHelper.TryGetIntArray(value ?? "", out values))
						values = new int[]{};

					return values;
				};
		}
示例#4
0
        public void TestIntArrayConverter()
        {
            string input = null;

            int[] output;
            DicomStringHelper.TryGetIntArray(input, out output);
            Assert.AreEqual(output.Length, 0);

            input = "";
            DicomStringHelper.TryGetIntArray(input, out output);
            Assert.AreEqual(output.Length, 0);

            input = @"0\1\30";
            DicomStringHelper.TryGetIntArray(input, out output);
            Assert.AreEqual(output[0], 0);
            Assert.AreEqual(output[1], 1);
            Assert.AreEqual(output[2], 30);
        }