GetDS() public method

public GetDS ( Dicom.Data.DicomTag tag ) : DcmDecimalString
tag Dicom.Data.DicomTag
return DcmDecimalString
Example #1
0
        public static WindowLevel[] FromDataset(DcmDataset dataset)
        {
            List<WindowLevel> settings = new List<WindowLevel>();

            if (dataset.Contains(DicomTags.WindowCenter) && dataset.Contains(DicomTags.WindowWidth)) {
                string[] wc = dataset.GetDS(DicomTags.WindowCenter).GetValues();
                string[] ww = dataset.GetDS(DicomTags.WindowWidth).GetValues();

                if (wc.Length != ww.Length)
                    throw new DicomImagingException("Window Center count does not match Window Width count");

                string[] desc = null;
                if (dataset.Contains(DicomTags.WindowCenterWidthExplanation)) {
                    desc = dataset.GetLO(DicomTags.WindowCenterWidthExplanation).GetValues();
                }

                for (int i = 0; i < wc.Length; i++) {
                    double window;
                    double level;
                    if (!Double.TryParse(ww[i], out window) &&
                        !Double.TryParse(ww[i], System.Globalization.NumberStyles.Float,
                                         System.Globalization.CultureInfo.InvariantCulture, out window))
                        throw new DicomImagingException("Unable to parse Window/Level [ww: {0}]", ww[i]);

                    if (!Double.TryParse(wc[i], out level) &&
                        !Double.TryParse(wc[i], System.Globalization.NumberStyles.Float,
                                         System.Globalization.CultureInfo.InvariantCulture, out level))
                        throw new DicomImagingException("Unable to parse Window/Level [wc: {0}]", wc[i]);

                    string description = String.Empty;
                    if (desc != null && i < desc.Length)
                        description = desc[i];

                    settings.Add(new WindowLevel(description, window, level));
                }
            }

            return settings.ToArray();
        }