using System;

namespace OpenNest.Geometry
{
    public struct Size
    {
        public Size(double width, double length)
        {
            Width = width;
            Length = length;
        }

        public double Width;

        public double Length;

        public static Size Parse(string size)
        {
            var a = size.ToUpper().Split('X');

            if (a.Length > 2)
                throw new FormatException("Invalid size format.");

            var width = double.Parse(a[0]);
            var length = double.Parse(a[1]);

            return new Size(width, length);
        }

        public static bool TryParse(string s, out Size size)
        {
            try
            {
                size = Parse(s);
            }
            catch
            {
                size = new Size(0, 0);
                return false;
            }

            return true;
        }

        public override string ToString() => $"{Width} x {Length}";

        public string ToString(int decimalPlaces) => $"{System.Math.Round(Width, decimalPlaces)} x {System.Math.Round(Length, decimalPlaces)}";
    }
}
