private GradientStopCollection GetGradientStops(XmlNodeList stops) { int itemCount = stops.Count; GradientStopCollection gradientStops = new GradientStopCollection(itemCount); double lastOffset = 0; for (int i = 0; i < itemCount; i++) { SvgStopElement stop = (SvgStopElement)stops.Item(i); string prop = stop.GetPropertyValue("stop-color"); WpfSvgColor svgColor = new WpfSvgColor(stop, "stop-color"); double offset = stop.Offset.AnimVal; offset /= 100; offset = Math.Max(lastOffset, offset); gradientStops.Add(new GradientStop(svgColor.Color, offset)); lastOffset = offset; } if (itemCount == 0) { gradientStops.Add(new GradientStop(Colors.Black, 0)); gradientStops.Add(new GradientStop(Colors.Black, 1)); } return(gradientStops); }
private GradientStopCollection GetGradientStops(XmlNodeList stops) { int itemCount = stops.Count; GradientStopCollection gradientStops = new GradientStopCollection(itemCount); double lastOffset = 0; for (int i = 0; i < itemCount; i++) { SvgStopElement stop = (SvgStopElement)stops.Item(i); string prop = stop.GetAttribute("stop-color"); string style = stop.GetAttribute("style"); Color color = Colors.Transparent; // no auto-inherited... if (!String.IsNullOrEmpty(prop) || !String.IsNullOrEmpty(style)) { WpfSvgColor svgColor = new WpfSvgColor(stop, "stop-color"); color = svgColor.Color; } else { color = Colors.Black; // the default color... double alpha = 255; string opacity; opacity = stop.GetAttribute("stop-opacity"); // no auto-inherit if (opacity == "inherit") // if explicitly defined... { opacity = stop.GetPropertyValue("stop-opacity"); } if (opacity != null && opacity.Length > 0) { alpha *= SvgNumber.ParseNumber(opacity); } alpha = Math.Min(alpha, 255); alpha = Math.Max(alpha, 0); color = Color.FromArgb((byte)Convert.ToInt32(alpha), color.R, color.G, color.B); } double offset = stop.Offset.AnimVal; offset /= 100; offset = Math.Max(lastOffset, offset); gradientStops.Add(new GradientStop(color, offset)); lastOffset = offset; } if (itemCount == 0) { gradientStops.Add(new GradientStop(Colors.Black, 0)); gradientStops.Add(new GradientStop(Colors.Black, 1)); } return(gradientStops); }
public static Brush CreateViewportBrush(SvgStyleableElement svgElm) { string prop = svgElm.GetAttribute("viewport-fill"); string opacity = svgElm.GetAttribute("viewport-fill-opacity"); // no auto-inherit if (string.Equals(prop, "inherit", StringComparison.OrdinalIgnoreCase)) // if explicitly defined... { prop = svgElm.GetPropertyValue("viewport-fill"); } if (string.Equals(opacity, "inherit", StringComparison.OrdinalIgnoreCase)) // if explicitly defined... { opacity = svgElm.GetPropertyValue("viewport-fill-opacity"); } if (!string.IsNullOrWhiteSpace(prop)) { if (string.Equals(prop, "currentColor", StringComparison.OrdinalIgnoreCase)) { var svgParent = svgElm.ParentNode as SvgStyleableElement; if (svgParent != null) { prop = svgParent.GetPropertyValue(CssConstants.PropColor, "viewport-fill"); } } Color color = Colors.Transparent; // no auto-inherited... WpfSvgColor svgColor = new WpfSvgColor(svgElm, "viewport-fill"); color = svgColor.Color; if (color.A == 255) { double alpha = 255; if (!string.IsNullOrWhiteSpace(opacity)) { alpha *= SvgNumber.ParseNumber(opacity); } alpha = Math.Min(alpha, 255); alpha = Math.Max(alpha, 0); color = Color.FromArgb((byte)Convert.ToInt32(alpha), color.R, color.G, color.B); } var brush = new SolidColorBrush(color); double opacityValue = 1; if (!string.IsNullOrWhiteSpace(opacity) && double.TryParse(opacity, out opacityValue)) { brush.Opacity = opacityValue; } return(brush); } else { Color color = Colors.Black; // the default color... double alpha = 255; if (!string.IsNullOrWhiteSpace(opacity)) { alpha *= SvgNumber.ParseNumber(opacity); } alpha = Math.Min(alpha, 255); alpha = Math.Max(alpha, 0); color = Color.FromArgb((byte)Convert.ToInt32(alpha), color.R, color.G, color.B); return(new SolidColorBrush(color)); } }
private GradientStopCollection GetGradientStops(XmlNodeList stops) { int itemCount = stops.Count; GradientStopCollection gradientStops = new GradientStopCollection(itemCount); double lastOffset = 0; for (int i = 0; i < itemCount; i++) { SvgStopElement stop = (SvgStopElement)stops.Item(i); string prop = stop.GetAttribute("stop-color"); string style = stop.GetAttribute("style"); Color color = Colors.Transparent; // no auto-inherited... if (!String.IsNullOrEmpty(prop) || !String.IsNullOrEmpty(style)) { WpfSvgColor svgColor = new WpfSvgColor(stop, "stop-color"); color = svgColor.Color; } else { color = Colors.Black; // the default color... double alpha = 255; string opacity; opacity = stop.GetAttribute("stop-opacity"); // no auto-inherit if (opacity == "inherit") // if explicitly defined... { opacity = stop.GetPropertyValue("stop-opacity"); } if (opacity != null && opacity.Length > 0) alpha *= SvgNumber.ParseNumber(opacity); alpha = Math.Min(alpha, 255); alpha = Math.Max(alpha, 0); color = Color.FromArgb((byte)Convert.ToInt32(alpha), color.R, color.G, color.B); } double offset = stop.Offset.AnimVal; offset /= 100; offset = Math.Max(lastOffset, offset); gradientStops.Add(new GradientStop(color, offset)); lastOffset = offset; } if (itemCount == 0) { gradientStops.Add(new GradientStop(Colors.Black, 0)); gradientStops.Add(new GradientStop(Colors.Black, 1)); } return gradientStops; }
public override Brush GetBrush(Rect elementBounds, WpfDrawingContext context, Transform viewTransform) { string prop = _solidColorElement.GetAttribute("solid-color"); string opacity = _solidColorElement.GetAttribute("solid-opacity"); // no auto-inherit if (string.Equals(prop, "inherit", StringComparison.OrdinalIgnoreCase)) // if explicitly defined... { prop = _solidColorElement.GetPropertyValue("solid-color"); } if (string.Equals(opacity, "inherit", StringComparison.OrdinalIgnoreCase)) // if explicitly defined... { opacity = _solidColorElement.GetPropertyValue("solid-opacity"); } if (!string.IsNullOrWhiteSpace(prop)) { if (string.Equals(prop, "currentColor", StringComparison.OrdinalIgnoreCase)) { var svgParent = _solidColorElement.ParentNode as SvgStyleableElement; if (svgParent != null) { prop = svgParent.GetPropertyValue("color", "solid-color"); } } Color color = Colors.Transparent; // no auto-inherited... WpfSvgColor svgColor = new WpfSvgColor(_solidColorElement, "solid-color"); color = svgColor.Color; if (color.A == 255) { double alpha = 255; if (!string.IsNullOrWhiteSpace(opacity)) { alpha *= SvgNumber.ParseNumber(opacity); } alpha = Math.Min(alpha, 255); alpha = Math.Max(alpha, 0); color = Color.FromArgb((byte)Convert.ToInt32(alpha), color.R, color.G, color.B); } var brush = new SolidColorBrush(color); double opacityValue = 1; if (!string.IsNullOrWhiteSpace(opacity) && double.TryParse(opacity, out opacityValue)) { brush.Opacity = opacityValue; } return(brush); } else { Color color = Colors.Black; // the default color... double alpha = 255; if (!string.IsNullOrWhiteSpace(opacity)) { alpha *= SvgNumber.ParseNumber(opacity); } alpha = Math.Min(alpha, 255); alpha = Math.Max(alpha, 0); color = Color.FromArgb((byte)Convert.ToInt32(alpha), color.R, color.G, color.B); return(new SolidColorBrush(color)); } }