/// <summary>
        /// Convert a SoluiNet.BrushDefinition to <see cref="Brush"/>.
        /// </summary>
        /// <param name="soluiNetBrush">The SoluiNet.BrushDefinition.</param>
        /// <returns>Returns a <see cref="Brush"/> object which represents the overgiven SoluiNet.BrushDefinition.</returns>
        public static Brush ToBrush(this SoluiNetBrushDefinitionType soluiNetBrush)
        {
            if (soluiNetBrush == null)
            {
                throw new ArgumentNullException(nameof(soluiNetBrush));
            }

            Brush brush = null;

            switch (soluiNetBrush.type)
            {
            case SoluiNetBrushType.SimpleLinearGradient:
                brush = new LinearGradientBrush(soluiNetBrush.startColour.ToColour(), soluiNetBrush.endColour.ToColour(), Convert.ToDouble(soluiNetBrush.angle));
                break;

            case SoluiNetBrushType.LinearGradient:
                brush = new LinearGradientBrush();

                foreach (var gradientStop in soluiNetBrush.SoluiNetGradientStop)
                {
                    (brush as LinearGradientBrush).GradientStops.Add(new GradientStop(gradientStop.colour.ToColour(), Convert.ToDouble(gradientStop.offset)));
                }

                (brush as LinearGradientBrush).StartPoint = new System.Windows.Point(Convert.ToDouble(soluiNetBrush.SoluiNetStartPoint.xAxis), Convert.ToDouble(soluiNetBrush.SoluiNetStartPoint.yAxis));
                (brush as LinearGradientBrush).EndPoint   = new System.Windows.Point(Convert.ToDouble(soluiNetBrush.SoluiNetEndPoint.xAxis), Convert.ToDouble(soluiNetBrush.SoluiNetEndPoint.yAxis));
                break;
            }

            return(brush);
        }
        /// <summary>
        /// Read from brush definition and prefill fields.
        /// </summary>
        /// <param name="brushDefinition">The brush definition.</param>
        public void ReadFromBrushDefinition(SoluiNetBrushDefinitionType brushDefinition)
        {
            if (!brushDefinition.typeSpecified)
            {
                return;
            }

            switch (brushDefinition.type)
            {
            case SoluiNetBrushType.SimpleLinearGradient:
                this.Angle.Value = brushDefinition.angleSpecified ? brushDefinition.angle : 0.75;
                this.StartColour.SelectedColor = brushDefinition.startColour.ToColour();
                this.EndColour.SelectedColor   = brushDefinition.endColour.ToColour();
                break;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Get brush definition for the selected values of this control.
        /// </summary>
        /// <returns>Returns a <see cref="SoluiNetBrushDefinitionType"/> object which represents the selected brush settings.</returns>
        public SoluiNetBrushDefinitionType GetBrushDefinition()
        {
            var brushDefinition = new SoluiNetBrushDefinitionType();

            if (this.BrushDefinitionTypeTabs.SelectedIndex == 0)
            {
                brushDefinition.typeSpecified = true;
                brushDefinition.type          = SoluiNetBrushType.SimpleLinearGradient;

                brushDefinition.startColour = this.StartColour.SelectedColor.HasValue ? this.StartColour.SelectedColor.Value.ToHexValue() : "#FFFFFF";
                brushDefinition.endColour   = this.EndColour.SelectedColor.HasValue ? this.EndColour.SelectedColor.Value.ToHexValue() : "#FFFFFF";

                brushDefinition.angleSpecified = true;
                brushDefinition.angle          = this.Angle.Value ?? 0.75;
            }
            else if (this.BrushDefinitionTypeTabs.SelectedIndex == 1)
            {
                throw new NotImplementedException();
            }

            return(brushDefinition);
        }