Example #1
0
        /// <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;
        }
Example #2
0
 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)
 {
 }
Example #6
0
        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;
 }