Example #1
0
        /// <include file='doc\FontUnit.uex' path='docs/doc[@for="FontUnit.FontUnit4"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public FontUnit(string value, CultureInfo culture)
        {
            this.type  = FontSize.NotSet;
            this.value = Unit.Empty;

            if ((value != null) && (value.Length > 0))
            {
                // This is invariant because it acts like an enum with a number together.
                // The enum part is invariant, but the number uses current culture.
                char firstChar = Char.ToLower(value[0], CultureInfo.InvariantCulture);
                if (firstChar == 'x')
                {
                    string lcaseValue = value.ToLower(CultureInfo.InvariantCulture);

                    if (lcaseValue.Equals("xx-small") || lcaseValue.Equals("xxsmall"))
                    {
                        this.type = FontSize.XXSmall;
                        return;
                    }
                    else if (lcaseValue.Equals("x-small") || lcaseValue.Equals("xsmall"))
                    {
                        this.type = FontSize.XSmall;
                        return;
                    }
                    else if (lcaseValue.Equals("x-large") || lcaseValue.Equals("xlarge"))
                    {
                        this.type = FontSize.XLarge;
                        return;
                    }
                    else if (lcaseValue.Equals("xx-large") || lcaseValue.Equals("xxlarge"))
                    {
                        this.type = FontSize.XXLarge;
                        return;
                    }
                }
                else if (firstChar == 's')
                {
                    string lcaseValue = value.ToLower(CultureInfo.InvariantCulture);
                    if (lcaseValue.Equals("small"))
                    {
                        this.type = FontSize.Small;
                        return;
                    }
                    else if (lcaseValue.Equals("smaller"))
                    {
                        this.type = FontSize.Smaller;
                        return;
                    }
                }
                else if (firstChar == 'l')
                {
                    string lcaseValue = value.ToLower(CultureInfo.InvariantCulture);
                    if (lcaseValue.Equals("large"))
                    {
                        this.type = FontSize.Large;
                        return;
                    }
                    if (lcaseValue.Equals("larger"))
                    {
                        this.type = FontSize.Larger;
                        return;
                    }
                }
                else if ((firstChar == 'm') && (value.ToLower(CultureInfo.InvariantCulture).Equals("medium")))
                {
                    this.type = FontSize.Medium;
                    return;
                }

                this.value = new Unit(value, culture, UnitType.Point);
                this.type  = FontSize.AsUnit;
            }
        }