/// <summary> /// Sets the line style. /// </summary> /// <param name="lineStyle">The line style.</param> public void SetLineStyle(LineStyle lineStyle) { if (lineStyle == null) throw new ArgumentNullException(nameof(lineStyle)); // ReSharper disable once CompareOfFloatsByEqualityOperator if (_lineStyle != null && lineStyle.Style == LineStyle && lineStyle.Width == LineWidth) return; if (_resourceManager == null) throw new InvalidOperationException("The ResourceManager must be set before setting the style."); if (_lineStyle != null) _resourceManager.Release(_lineStyle); _linePen = _resourceManager.Get<LineStyle, Pen>(lineStyle); _lineStyle = lineStyle; }
public State([NotNull] GDIGraphics graphics) { Debug.Assert(graphics != null, "graphics != null"); Debug.Assert(graphics._lineStyle != null, "_style != null"); FillStyle = graphics.FillStyle; LineStyle = graphics._lineStyle; ResourceManager = graphics._resourceManager; Transform = graphics.Transform; }
/// <summary> /// Initializes a new instance of the <see cref="RandomStyleManager" /> class. /// </summary> /// <param name="seed">The seed.</param> /// <param name="lineStyle">The line style.</param> /// <param name="styles">The styles.</param> public RandomGreedyStyleManager(int seed, [NotNull] LineStyle lineStyle, [CanBeNull] params TileStyle[] styles) : base(seed, lineStyle, styles) { }
/// <summary> /// Initializes a new instance of the <see cref="StyleManager" /> class. /// </summary> /// <param name="lineStyle">The line style.</param> /// <param name="styles">The styles.</param> /// <exception cref="System.ArgumentNullException"></exception> public SimpleStyleManager([NotNull] LineStyle lineStyle, [CanBeNull] params TileStyle[] styles) : base(lineStyle, styles) { }
/// <summary> /// Initializes a new instance of the <see cref="StyleManager" /> class. /// </summary> /// <param name="lineStyle">The line style.</param> /// <param name="styles">The styles.</param> /// <exception cref="System.ArgumentNullException"></exception> public SimpleStyleManager([NotNull] LineStyle lineStyle, [CanBeNull] IReadOnlyCollection <TileStyle> styles) : base(lineStyle, styles) { }
private static StyleManager DeserializeStyleManager([NotNull] XElement element) { string typeName = element.Attribute("type")?.Value; if (string.IsNullOrEmpty(typeName)) throw new InvalidDataException("Style manager type missing."); XElement lineStyleElm = element.Element("LineStyle"); if (lineStyleElm == null || lineStyleElm.IsEmpty) throw new InvalidDataException("Line style missing"); float width; if (!float.TryParse(lineStyleElm.Attribute("width")?.Value, FloatNumberStyle, _culture, out width)) throw new InvalidDataException("Line width is invalid or missing."); LineStyle lineStyle = new LineStyle( width, (SolidColourStyle) DeserializeStyle(lineStyleElm.Elements().Single())); XElement stylesElm = element.Element("Styles"); if (stylesElm == null || stylesElm.IsEmpty) throw new InvalidDataException("Styles missing"); TileStyle[] styles = stylesElm.Elements().Select(DeserializeTileStyle).ToArray(); int seed; switch (typeName) { case nameof(RandomStyleManager): if (!int.TryParse(element.Element("Seed")?.Value, out seed)) throw new InvalidDataException("Random seed is invalid or missing."); return new RandomStyleManager(seed, lineStyle, styles); case nameof(RandomGreedyStyleManager): if (!int.TryParse(element.Element("Seed")?.Value, out seed)) throw new InvalidDataException("Random seed is invalid or missing."); return new RandomGreedyStyleManager(seed, lineStyle, styles); case nameof(GreedyStyleManager): int pa, pb, pc; if (!int.TryParse(element.Element("ParamA")?.Value, out pa)) throw new InvalidDataException("Style manager parameter A is invalid or missing."); if (!int.TryParse(element.Element("ParamB")?.Value, out pb)) throw new InvalidDataException("Style manager parameter B is invalid or missing."); if (!int.TryParse(element.Element("ParamC")?.Value, out pc)) throw new InvalidDataException("Style manager parameter C is invalid or missing."); return new GreedyStyleManager(pa, pb, pc, lineStyle, styles); case nameof(SimpleStyleManager): return new SimpleStyleManager(lineStyle, styles); default: throw new InvalidDataException($"Unknown style manager type {typeName}."); } }
/// <summary> /// Sets the line style. /// </summary> /// <param name="lineStyle">The line style.</param> public void SetLineStyle(LineStyle lineStyle) { if (lineStyle == null) throw new ArgumentNullException(nameof(lineStyle)); LineStyle = lineStyle.Style; LineWidth = lineStyle.Width; }