using System;
using System.Xml.Serialization;

namespace SurfacePlot3D.Members
{
    public class StatePopulationDataItem : CustomBindableBase
    {
        #region Private Variables

        private String _state = String.Empty;
        private Double _year = 0;
        private Double _population = 0;
        private int _row = 0;
        private int _column = 0;

        private Double _posX = 0D;
        private Double _posY = 0D;
        private Double _posZ = 0D;
        //private Double _rotateX = 0.0D;
        //private Double _rotateY = 0.0D;
        //private Double _rotateZ = 0.0D;
        private Double _textFontSize = 1;
        private Double _rotateTextX = 0.0D;
        private Double _rotateTextY = 0.0D;
        private Double _rotateTextZ = 0.0D;
        private Double _textOffsetPosX = 0.0D;
        private Double _textOffsetPosY = 0.0D;
        private Double _textOffsetPosZ = 0.0D;
        private String _text = String.Empty;
        private Guid _textLinked3DObjectId = Guid.Empty;
        private Double _fontDepth = .5D;
        private Double _textRotationX = 90.0D;
        private Double _textRotationY = 0.0D;
        private Double _textRotationZ = 180.0D;
        private String _name = String.Empty;
        private Double _ttx = 0.0D;
        private Double _tty = 0.0D;
        private Double _ttz = 0.0D;

        #endregion

        #region Public Variables
        public Double Ttx { get { return _ttx; } set { SetProperty(ref _ttx, value); } }
        public Double Tty { get { return _tty; } set { SetProperty(ref _tty, value); } }
        public Double Ttz { get { return _ttz; } set { SetProperty(ref _ttz, value); } }

        public String Name { get { return _name; } set { SetProperty(ref _name, value); } }

        [XmlIgnore] public Guid TextLinked3DObjectId { get { return _textLinked3DObjectId; } set { SetProperty(ref _textLinked3DObjectId, value); } }
        public String State { get { return _state; } set { SetProperty(ref _state, value); } }
        public Double Year { get { return _year; } set { SetProperty(ref _year, value); } }
        public Double Population { get { return _population; } set { SetProperty(ref _population, value); } }
        public int Row { get { return _row; } set { SetProperty(ref _row, value); } }
        public int Column { get { return _column; } set { SetProperty(ref _column, value); } }
        public String Text { get { return _text; } set { SetProperty(ref _text, value); } }

        public Double PosX { get { return _posX; } set { SetProperty(ref _posX, value); } }
        public Double PosY { get { return _posY; } set { SetProperty(ref _posY, value); } }
        public Double PosZ { get { return _posZ; } set { SetProperty(ref _posZ, value); } }
        //public Double RotateX { get { return _rotateX; } set { SetProperty(ref _rotateX, value); } }
        //public Double RotateY { get { return _rotateY; } set { SetProperty(ref _rotateY, value); } }
        //public Double RotateZ { get { return _rotateZ; } set { SetProperty(ref _rotateZ, value); } }
        public Double RotateTextX { get { return _rotateTextX; } set { SetProperty(ref _rotateTextX, value); } }
        public Double RotateTextY { get { return _rotateTextY; } set { SetProperty(ref _rotateTextY, value); } }
        public Double RotateTextZ { get { return _rotateTextZ; } set { SetProperty(ref _rotateTextZ, value); } }
        public Double TextOffsetPosX { get { return _textOffsetPosX; } set { SetProperty(ref _textOffsetPosX, value); } }
        public Double TextOffsetPosY { get { return _textOffsetPosY; } set { SetProperty(ref _textOffsetPosY, value); } }
        public Double TextOffsetPosZ { get { return _textOffsetPosZ; } set { SetProperty(ref _textOffsetPosZ, value); } }
        public Double TextFontSize { get { return _textFontSize; } set { SetProperty(ref _textFontSize, value); } }
        public Double TextRotationX { get { return _textRotationX; } set { SetProperty(ref _textRotationX, value); } }
        public Double TextRotationY { get { return _textRotationY; } set { SetProperty(ref _textRotationY, value); } }
        public Double TextRotationZ { get { return _textRotationZ; } set { SetProperty(ref _textRotationZ, value); } }
        public Double FontDepth { get { return _fontDepth; } set { SetProperty(ref _fontDepth, value); } }


        #endregion
    }
}