⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 age.cs

📁 Open Dicom source code C#
💻 CS
字号:
/*       openDICOM.NET openDICOM# 0.1.1    openDICOM# provides a library for DICOM related development on Mono.    Copyright (C) 2006-2007  Albert Gnandt    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Lesser General Public    License as published by the Free Software Foundation; either    version 2.1 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU    Lesser General Public License for more details.    You should have received a copy of the GNU Lesser General Public    License along with this library; if not, write to the Free Software    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA    $Id$*/using System;using System.Text.RegularExpressions;using openDicom;namespace openDicom.Encoding.Type{    /// <summary>    ///     All available age measuring units.    /// </summary>    public enum AgeContext    {        /// <summary>        ///     DICOM VR Age String (AS) representation is "xxxD".        /// </summary>        Days,        /// <summary>        ///     DICOM VR Age String (AS) representation is "xxxW".        /// </summary>        Weeks,        /// <summary>        ///     DICOM VR Age String (AS) representation is "xxxM".        /// </summary>        Months,        /// <summary>        ///     DICOM VR Age String (AS) representation is "xxxY".        /// </summary>        Years    }    /// <summary>    ///     This class represents a single DICOM Age String (AS) value.    /// </summary>    public sealed class Age    {        private const char days   = 'D';        private const char weeks  = 'W';        private const char months = 'M';        private const char years  = 'Y';        private AgeContext context = AgeContext.Days;        /// <summary>        ///     Returns the choosen age measuring unit.        /// </summary>        public AgeContext Context        {            get { return context; }        }        /// <summary>        ///     Access <see cref="Context" /> for measuring unit in days.        /// </summary>        /// <remarks>        ///     Only one measuring unit can be assigned to this instance at        ///     once. If this property is set on true, <see cref="Context" />        ///     will be re-assigned to days.        /// </remarks>        public bool IsDays        {            set { if (value) context = AgeContext.Days; }            get { return context == AgeContext.Days; }        }        /// <summary>        ///     Access <see cref="Context" /> for measuring unit in weeks.        /// </summary>        /// <remarks>        ///     Only one measuring unit can be assigned to this instance at        ///     once. If this property is set on true, <see cref="Context" />        ///     will be re-assigned to weeks.        /// </remarks>        public bool IsWeeks        {            set { if (value) context = AgeContext.Weeks; }            get { return context == AgeContext.Weeks; }        }        /// <summary>        ///     Access <see cref="Context" /> for measuring unit in months.        /// </summary>        /// <remarks>        ///     Only one measuring unit can be assigned to this instance at        ///     once. If this property is set on true, <see cref="Context" />        ///     will re-assigned to months.        /// </remarks>        public bool IsMonths        {            set { if (value) context = AgeContext.Months; }            get { return context == AgeContext.Months; }        }        /// <summary>        ///     Access <see cref="Context" /> for measuring unit in years.        /// </summary>        /// <remarks>        ///     Only one measuring unit can be assigned to this instance at        ///     once. If this property is set on true, <see cref="Context" />        ///     will be re-assigned to years.        /// </remarks>        public bool IsYears        {            set { if (value) context = AgeContext.Years; }            get { return context == AgeContext.Years; }        }        private int ageValue = 0;        /// <summary>        ///     Access of age value.        /// </summary>        public int AgeValue        {            set             {                 if (value >= 0)                    ageValue = value;                 else                    throw new DicomException("Age cannot be negativ.",                         "Age.AgeValue", value.ToString());            }            get { return ageValue; }        }        /// <summary>        ///     Creates a new age instance from specified age string of        ///     format "xxxM", where "xxx" is a decimal number, the age value,         ///     like "013" and "M", is the age context or measuring unit.        /// </summary>        public Age(string ageString)        {            if (Regex.IsMatch(ageString,                 "^[0-9]{3}[" + days + weeks + months + years + "]$"))            {                AgeValue = int.Parse(ageString.Substring(0, 3));                char context = (char) ageString[3];                switch (context)                {                    case days: IsDays = true; break;                    case weeks: IsWeeks = true; break;                    case months: IsMonths = true; break;                    case years: IsYears = true; break;                    default:                        throw new DicomException("Age context is invalid.",                            "ageString", ageString);                        break;                }            }            else                throw new DicomException("Age string is invalid.", "ageString",                    ageString);        }        /// <summary>        ///     Creates a new age instance from specified age value and        ///     context.        /// </summary>        public Age(int ageValue, AgeContext context)        {            this.context = context;            AgeValue = ageValue;        }        /// <summary>        ///     Creates a new age instance from specified age value and        ///     context as single character. Only DICOM VR Age String (AS)        ///     measuring units are allowed (see <see cref="AgeContext" />).        /// </summary>        public Age(int ageValue, char context)        {            switch (context)            {                case days: IsDays = true; break;                case weeks: IsWeeks = true; break;                case months: IsMonths = true; break;                case years: IsYears = true; break;                default:                    throw new DicomException("Age context is invalid.",                        "context", context.ToString());                    break;            }            AgeValue = ageValue;        }        /// <summary>        ///     Returns the DICOM VR Age String (AS) representation of this        ///     instance. Format is "xxxM", where "xxx" is a decimal number        ///     and "M" is a single character that represents the        ///     <see cref="AgeContext" />.        /// </summary>        public override string ToString()        {            char charContext = ' ';            switch (Context)            {                case AgeContext.Days: charContext = days; break;                case AgeContext.Weeks: charContext = weeks; break;                case AgeContext.Months: charContext = months; break;                case AgeContext.Years: charContext = years; break;            }            return string.Format("{0:D3}", AgeValue) + charContext;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -