private StyleFunctionCall(String functionName,
                           String functionReturnValue,
                           IStyleVariableAccessor variableAccessor)
     : this(functionName, () => GetParameters(functionReturnValue), variableAccessor)
 {
     _fnResult = functionReturnValue;
 }
 public EnumDeclaration(TEnum value,
                        IStyleVariableAccessor variableAccessor,
                        DeclarationProperty property)
     : base(value, variableAccessor, property)
 {
     //Value = value;
 }
 public ColorDeclaration(String value,
                         DeclarationProperty property,
                         IStyleVariableAccessor variableAccessor)
     : base(GetBrush(value, variableAccessor),
            variableAccessor, property)
 {
 }
 public DoubleDeclaration(String value,
                          IStyleVariableAccessor variableAccessor,
                          DeclarationProperty property)
     : base(variableAccessor, property)
 {
     Value = Double.TryParse(value, out var val) ? val : Double.NaN;
 }
Exemple #5
0
 public MultiTransitionDeclaration(String value,
                                   IStyleVariableAccessor variableAccessor)
     : base(
         GetTransitions(value, variableAccessor),
         variableAccessor, DeclarationProperty.Transition)
 {
 }
 public DoubleDeclaration(Double value,
                          IStyleVariableAccessor variableAccessor,
                          DeclarationProperty property)
     : base(variableAccessor, property)
 {
     Value = value;
 }
Exemple #7
0
        public BasePrimitiveStyle(IStyleVariableAccessor variableAccessor)
        {
            _variableAccessor = variableAccessor;
            var btnBaseItems = new List <IStyleRule>
            {
                Rule <QuantifiedThickness>(8, DeclarationProperty.BorderRadius),
                Rule(new VisualBorder(
                         new BorderSide(1, LengthUnits.Px, OutlineStyle.Solid, SolidColorBrush.Black)),
                     DeclarationProperty.Border),

                Rule <QuantifiedThickness>(5, DeclarationProperty.Padding),
                Rule <IBrush?>(VisualStateType.Active, SolidColorBrush.LightGray,
                               DeclarationProperty.BackgroundColor)
            };

            this[typeof(ButtonBase)] = btnBaseItems;

            this[typeof(ToggleButton)] = new[]
            {
                Rule <IBrush?>(VisualStateType.Checked, SolidColorBrush.LightGray,
                               DeclarationProperty.BackgroundColor),
                Rule <IBrush?>(VisualStateType.Active, SolidColorBrush.LightGray,
                               DeclarationProperty.BackgroundColor)
            };
        }
        public static StyleFunctionCall BuildFromRawText(String rawText,
                                                         IStyleVariableAccessor variableAccessor)
        {
            var i = 0;

            return(BuildFromRawTextImpl(rawText, ref i, variableAccessor));
        }
Exemple #9
0
        private static BoxShadow GetBoxShadow(String value,
                                              IStyleVariableAccessor variableAccessor)
        {
            var layers = GetShadowLayers(value, variableAccessor);

            return(new BoxShadow(layers));
        }
 protected MultiValueDeclaration(IEnumerable <T> values,
                                 IStyleVariableAccessor variableAccessor,
                                 DeclarationProperty property)
     : base(variableAccessor, property)
 {
     _values = new List <T>(values);
 }
        public static Object?GetValue(String text,
                                      IStyleVariableAccessor variableAccessor)
        {
            var fn = GetFunction(text, variableAccessor);

            return(fn.GetValue());
        }
 protected static QuantifiedDouble GetQuantity(String token,
                                               IStyleVariableAccessor variableAccessor)
 {
     return(TryGetQuantity(token, variableAccessor, out var res)
         ? res
         : throw new InvalidCastException());
 }
        private static String GetFontFamily(String fontFamily,
                                            IStyleVariableAccessor variableAccessor)
        {
            var fn = FunctionBuilder.GetFunction(fontFamily, variableAccessor);

            var val = fn.GetValue();

            switch (val)
            {
            case String str:
                return(str);

            case Object?[] fallbacks:

                foreach (var fallback in fallbacks)
                {
                    if (fallback is String strValid)
                    {
                        //todo: ensure the font face exists + is valid etc
                        return(strValid);
                    }
                }

                break;
            }

            return(fontFamily);
        }
 public StyleFunctionCall(String functionName,
                          Func <IEnumerable <Object?> > getFunctionParameters,
                          IStyleVariableAccessor variableAccessor)
 {
     _variableAccessor     = variableAccessor;
     FunctionName          = functionName;
     GetFunctionParameters = getFunctionParameters;
 }
 public ParameterizedFunction(String functionName,
                              IEnumerable <IFunction> parameterValues,
                              IStyleVariableAccessor variableAccessor)
 {
     _variableAccessor = variableAccessor;
     FunctionName      = functionName;
     _parameterValues  = new List <IFunction>(parameterValues);
 }
        private static IBrush?GetBrush(String value,
                                       IStyleVariableAccessor variableAccessor)
        {
            var fnCall = FunctionBuilder.GetFunction(value, variableAccessor);
            var fnVal  = fnCall.GetValue();

            return(fnVal as IBrush);
        }
 private StyleFunctionCall(String functionName,
                           IEnumerable <StyleFunctionCall> parameterGetters,
                           IStyleVariableAccessor variableAccessor)
     : this(functionName, () => GetParameters(new List <StyleFunctionCall>(parameterGetters)),
            variableAccessor)
 {
     _nestedCalls = new List <StyleFunctionCall>(parameterGetters);
 }
 public EnumDeclaration(String value,
                        TEnum defaultValue,
                        IStyleVariableAccessor variableAccessor,
                        DeclarationProperty property)
     : base(GetEnumValue(value, defaultValue),
            variableAccessor, property)
 {
     //Value = GetEnumValue(value, defaultValue);
 }
 public MarginDeclaration(String value,
                          IStyleVariableAccessor variableAccessor)
     : base(value, variableAccessor, DeclarationProperty.Margin)
     //DeclarationProperty.MarginTop,
     //DeclarationProperty.MarginRight,
     //DeclarationProperty.MarginBottom,
     //DeclarationProperty.MarginLeft)
 {
 }
Exemple #20
0
        public TransformDeclaration(String value,
                                    IStyleVariableAccessor variableAccessor)
            : base(FunctionBuilder.GetFunction(value, variableAccessor),
                   variableAccessor, DeclarationProperty.Transform)
        {
            Function = Value as ParameterizedFunction ?? throw new InvalidOperationException();

            TransformType = GetEnumValue(Function.FunctionName, TransformType.Invalid);
        }
        private static ICssRuleBuilder GetCssRuleBuilder(IStyleVariableAccessor variableAccessor)
        {
            var visualAliases   = new VisualAliasProvider();
            var selectorBuilder = new CssStyleSelectorBuilder(visualAliases);

            var ruleBuilder = new CssRuleBuilder(selectorBuilder, variableAccessor);

            return(ruleBuilder);
        }
Exemple #22
0
        private static IEnumerable <TransitionDeclaration> GetTransitions(String value,
                                                                          IStyleVariableAccessor variableAccessor)
        {
            var tokens = GetMultiSplit(value, ',');

            foreach (var token in tokens)
            {
                yield return(new TransitionDeclaration(token, variableAccessor));
            }
        }
        protected static Boolean TryGetQuantity(String token,
                                                IStyleVariableAccessor variableAccessor,
                                                out QuantifiedDouble quantity)
        {
            if (token.IndexOf("var", StringComparison.OrdinalIgnoreCase) == 0)
            {
                token = FunctionBuilder.GetValue <String>(token, variableAccessor);
            }

            return(QuantifiedDouble.TryParse(token, out quantity));
        }
 protected static Boolean TryGetColor(String token,
                                      IStyleVariableAccessor variableAccessor,
                                      out IBrush brush)
 {
     //if (token.IndexOf("var", StringComparison.OrdinalIgnoreCase) == 0)
     {
         if (FunctionBuilder.GetValue(token, variableAccessor) is IBrush b)
         {
             brush = b;
             return(true);
         }
     }
     brush = default !;
        public static T GetValue <T>(String text,
                                     IStyleVariableAccessor variableAccessor)
        {
            var fn = GetFunction(text, variableAccessor);

            switch (fn.GetValue())
            {
            case T good:
                return(good);

            default:
                throw new InvalidCastException();
            }
        }
        public TransitionDeclaration(String value,
                                     IStyleVariableAccessor variableAccessor)
            : base(variableAccessor, DeclarationProperty.Transition)
        {
            var tokens = value.Split();

            TransitionProperty = new TransitionPropertyDeclaration(tokens[0],
                                                                   DeclarationProperty.Invalid, variableAccessor);

            if (tokens.Length == 1)
            {
                Duration = new TransitionDurationDeclaration("0", variableAccessor);
                goto finished;
            }

            Duration = new TransitionDurationDeclaration(tokens[1], variableAccessor);

            if (tokens.Length == 2)
            {
                goto finished;
            }

            for (var c = 2; c < tokens.Length; c++)
            {
                var fn = GetEnumValue(tokens[c], TransitionFunctionType.Invalid, false);
                if (fn != TransitionFunctionType.Invalid)
                {
                    TimingFunction = new TransitionFunctionDeclaration(fn, variableAccessor);
                }
                else
                {
                    if (TransitionDurationDeclaration.IsValidQuantity(tokens[c]))
                    {
                        Delay = new TransitionDurationDeclaration(tokens[c], variableAccessor);
                    }
                }
            }


finished:
            if (TimingFunction == null)
            {
                TimingFunction = new TransitionFunctionDeclaration(TransitionFunctionType.Initial,
                                                                   variableAccessor);
            }
        }
        public BoxShadow(String value,
                         IStyleVariableAccessor variableAccessor)
        {
            List <String> tokens;

            var rgbIndex = value.IndexOf("rgb", StringComparison.OrdinalIgnoreCase);

            if (rgbIndex < 0)
            {
                tokens = new List <String>(value.Split());
            }
            else
            {
                var preRgb = value.Substring(0, rgbIndex - 1);
                tokens = new List <String>(preRgb.Split());

                var withRgb = value.Substring(rgbIndex);
                tokens.Add(withRgb);
            }

            switch (tokens.Count)
            {
            case 5:
                SpreadRadius = new QuantityDeclaration(tokens[3],
                                                       variableAccessor, DeclarationProperty.BoxShadow);
                goto case 4;

            case 4:
                BlurRadius = new QuantityDeclaration(tokens[2],
                                                     variableAccessor, DeclarationProperty.BoxShadow);
                break;
            }

            OffsetY = new QuantityDeclaration(tokens[1],
                                              variableAccessor, DeclarationProperty.BoxShadow);

            OffsetX = new QuantityDeclaration(tokens[0],
                                              variableAccessor, DeclarationProperty.BoxShadow);

            Color = new ColorDeclaration(tokens[tokens.Count - 1], DeclarationProperty.BoxShadow,
                                         variableAccessor);
        }
        private static IFunction GetFunctionFromLiteral(String literalValue,
                                                        IStyleVariableAccessor variableAccessor)
        {
            var literalTokens = GetFunctionTokens(literalValue).ToArray();

            if (literalTokens.Length == 1)
            {
                return(GetFunctionImpl(literalTokens[0], false, variableAccessor));
            }

            var values = new List <IFunction>();

            foreach (var paramToken in literalTokens)
            {
                var paramFunc = GetFunctionImpl(paramToken, true, variableAccessor);
                values.Add(paramFunc);
            }

            return(new MultiFunction(values));
        }
        private static IFunction GetFunctionImpl(String text,
                                                 Boolean isDissectLiterals,
                                                 IStyleVariableAccessor variableAccessor)
        {
            GetFunctionParts(text, out var functionName,
                             out var functionParameterMeat,
                             out var literalValue);

            if (literalValue != null)
            {
                if (isDissectLiterals)
                {
                    return(GetFunctionFromLiteral(literalValue, variableAccessor));
                }
                return(new LiteralFunction(literalValue.Trim()));
            }

            if (functionName != null && functionParameterMeat != null)
            {
                var paramTokens = GetFunctionTokens(functionParameterMeat).ToArray();

                if (paramTokens.Length == 0)
                {
                    return(new ParameterizedFunction(functionName, Enumerable.Empty <IFunction>(),
                                                     variableAccessor));
                }

                var paramValues = new List <IFunction>();
                foreach (var paramToken in paramTokens)
                {
                    var paramFunc = GetFunctionImpl(paramToken, true, variableAccessor);
                    paramValues.Add(paramFunc);
                }

                return(new ParameterizedFunction(functionName, paramValues, variableAccessor));
            }

            throw new NotImplementedException();
        }
        public QuantifiedNumericDeclaration(String value,
                                            Dictionary <String, TQuantity> quantitySearch,
                                            TQuantity defaultValue,
                                            IStyleVariableAccessor variableAccessor,
                                            DeclarationProperty property)
            : base(variableAccessor, property)
        {
            var endOfValue = -1;

            for (var c = value.Length - 1; c >= 0; c--)
            {
                if (!Char.IsDigit(value[c]))
                {
                    continue;
                }

                endOfValue = c;
                break;
            }

            if (endOfValue == -1)
            {
                return;
            }

            var unitStr = value.Substring(endOfValue + 1);

            if (quantitySearch.TryGetValue(unitStr, out var enumVal))
            {
                Units = enumVal;
            }
            else
            {
                Units = GetEnumValue(unitStr, defaultValue);
            }

            Value = Double.Parse(value.Substring(0, endOfValue + 1));
        }