using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WebSamples.Utilities
{
    public class Constants
    {
        /// <summary>
        /// Enumeration defining the various shape types. 
        /// </summary>
        public enum ShapeType
        {
            /// <summary>
            /// Point record, for defining point locations such as a city.
            /// </summary>
            Point,

            /// <summary>
            /// One or more sets of connected points. Used to represent roads,
            /// hydrography, etc.
            /// </summary>
            Polyline,

            /// <summary>
            /// One or more sets of closed figures. Used to represent political
            /// boundaries for countries, lakes, etc.
            /// </summary>
            Polygon,

            /// <summary>
            /// A cluster of points represented by a single shape.
            /// </summary>
            Multipoint,

            /// <summary>
            /// A cluster of polylines represented by a single shape.
            /// </summary>
            Multiline,

            /// <summary>
            /// A cluster of polygons represented by a single shape.
            /// </summary>
            Multipolygon
        }

        //public class DBConstants
        //{
        //    public const string CountryName = "CNTRY_NAME";
        //    public const string CountryPopulation = "POP_CNTRY";
        //    public const string CountryAreaSQKM = "AREA_SQKM";
        //    public const string CountryColorID = "COLOR_MAP";
        //    public const string CountryBoundary = "BOUNDARY";
        //}

        #region Constants used with Well Know Text (WKT)

        /// <summary>
        /// Well known text delimeters used to split WKT strings.
        /// </summary>
        public class WKT
        {
            /// <summary>
            /// A delimiter used to seperate a list of LatLong coorinates: 
            /// i.e. 90 -180, 70 50 will be split into {(90 -180), (70 50)}
            /// </summary>
            public static string[] WKTLatLongSplitter = new string[1] { ", " };

            /// <summary>
            /// A delimiter used to seperate a list of lists of coorinates. Used by Polygons, and MultiLines.
            /// </summary>
            public static string[] WKTBoundarySplitter1 = new string[1] { "), (" };

            /// <summary>
            /// A delimiter used to seperate a list of shapes. Used by MultiPolygons.
            /// </summary>
            public static string[] WKTBoundarySplitter2 = new string[1] { ")), ((" };
        }

        #endregion

        public class ForumlaConstants
        {
            public const double OneBy4PI = 1 / (4 * Math.PI);
        }
    }
}
