Example #1
0
        /// <summary>
        /// Returns the value of a named property in the portfolio to the parent property.
        /// </summary>
        /// <returns>The `KimonoProperty`'s value if found, else raises an error.</returns>
        /// <param name="name">Name.</param>
        /// <param name="userData">The `ScriptEngine` executing the script.</param>
        public static void Property(string name, object userData)
        {
            var property = ObiScriptPortfolio.FindProperty(name);

            // Found?
            if (property == null)
            {
                // No, set error state
                EvaluationResult.Successful   = false;
                EvaluationResult.ErrorMessage = $"Error: Property '{name}' not defined in portfolio.";
                EvaluationResult.Value        = null;
            }
            else
            {
                // Save result
                EvaluationResult.Successful   = true;
                EvaluationResult.ErrorMessage = "";

                // Execute any scripts on the property
                property.Evaluate();

                // Successful?
                if (EvaluationResult.Successful)
                {
                    // Yes, take action based on the property type
                    if (property is KimonoPropertyBoolean)
                    {
                        EvaluationResult.Value = ((KimonoPropertyBoolean)property).Value;
                    }
                    else if (property is KimonoPropertyColor)
                    {
                        EvaluationResult.Value = ((KimonoPropertyColor)property).Value;
                    }
                    else if (property is KimonoPropertyGradient)
                    {
                        EvaluationResult.Value = ((KimonoPropertyGradient)property).Value;
                    }
                    else if (property is KimonoPropertyNumber)
                    {
                        EvaluationResult.Value = ((KimonoPropertyNumber)property).Value;
                    }
                    else if (property is KimonoPropertyNumber)
                    {
                        EvaluationResult.Value = ((KimonoPropertyNumber)property).Value;
                    }
                    else if (property is KimonoPropertyRect)
                    {
                        EvaluationResult.Value = ((KimonoPropertyRect)property).Value;
                    }
                    else if (property is KimonoPropertyStyle)
                    {
                        EvaluationResult.Value = ((KimonoPropertyStyle)property).Value;
                    }
                    else if (property is KimonoPropertyText)
                    {
                        EvaluationResult.Value = ((KimonoPropertyText)property).Value;
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// Returns a named style saved in the portfolio to the parent property.
        /// </summary>
        /// <returns>The name `KimonoStyle` if found, else raises an error.</returns>
        /// <param name="name">The name of the style to return.</param>
        /// <param name="userData">The `ScriptEngine` executing the script.</param>
        public static void Style(string name, object userData)
        {
            // Find the requested style object
            var style = ObiScriptPortfolio.FindGradient(name);

            // Found?
            if (style == null)
            {
                // No, set error state
                EvaluationResult.Successful   = false;
                EvaluationResult.ErrorMessage = $"Error: Style '{name}' not defined in portfolio.";
                EvaluationResult.Value        = null;
            }
            else
            {
                // Save result
                EvaluationResult.Successful   = true;
                EvaluationResult.ErrorMessage = "";
                EvaluationResult.Value        = style;
            }
        }
Example #3
0
        /// <summary>
        /// Returns a named color saved in the portfolio to the parent property.
        /// </summary>
        /// <returns>The named `KimonoColor` if found, or raises an error.</returns>
        /// <param name="name">The name of the color to return.</param>
        /// <param name="userData">The `ScriptEngine` executing the script.</param>
        public static void Color(string name, object userData)
        {
            // Find the requested color object
            var color = ObiScriptPortfolio.FindColor(name);

            // Found?
            if (color == null)
            {
                // No, set error state
                EvaluationResult.Successful   = false;
                EvaluationResult.ErrorMessage = $"Error: Color '{name}' not defined in portfolio.";
                EvaluationResult.Value        = null;
            }
            else
            {
                // Save result
                EvaluationResult.Successful   = true;
                EvaluationResult.ErrorMessage = "";
                EvaluationResult.Value        = color;
            }
        }