示例#1
0
 /// <summary>
 /// Creates a new 'range' type media feature
 /// </summary>
 /// <param name="name"></param>
 /// <param name="comparator"></param>
 /// <param name="value"></param>
 public MediaFeature(CssValue[] values, EMediaOperator[] ops)
 {
     Context   = EMediaFeatureContext.Range;
     Values    = values;
     Operators = ops;
     IsValid   = true;
 }
示例#2
0
        // private bool IsNegated = false;
        #endregion

        #region Constructors
        /// <summary>
        /// Creates a new 'boolean' type media feature
        /// </summary>
        /// <param name="name"></param>
        public MediaFeature(EMediaFeatureName Name)
        {
            Context = EMediaFeatureContext.Boolean;

            MediaDefinition def = MediaDefinition.Lookup(Name);

            if (def != null)
            {
                IsValid = true;
                /* if an allowed type is keywords and 'none' is an option then we match it against that keyword */
                if (0 != (def.AllowedTypes & ECssValueTypes.KEYWORD) && def.KeywordWhitelist.Contains("none"))
                {
                    Values = new CssValue[] { CssValue.From(Name), CssValue.None };
                }
                else if (0 != (def.AllowedTypes & ECssValueTypes.INTEGER))
                {
                    Values = new CssValue[] { CssValue.From(Name), CssValue.From(0) };
                }
                else if (0 != (def.AllowedTypes & ECssValueTypes.DIMENSION))
                {
                    Values = new CssValue[] { CssValue.From(Name), CssValue.From(0, ECssUnit.PX) };
                }
                else if (0 != (def.AllowedTypes & ECssValueTypes.RESOLUTION))
                {
                    Values = new CssValue[] { CssValue.From(Name), CssValue.From(0, ECssUnit.DPPX) };
                }
            }
            else
            {
                /* This isnt a supported feature, therefore it should always evaluate to false */
                IsValid = false;
            }

            /* For sanity just catch the case where we dont have values to compare here */
            if (Values.Length <= 0)
            {
                IsValid = false;
            }
        }