| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | using PaintDotNet.Measurement.Enum;using System;using System.Runtime.Serialization;namespace PaintDotNet.Measurement.ObjInfo{    [Serializable]    public sealed class SelectionDrawModeInfo        : ICloneable<SelectionDrawModeInfo>,          IDeserializationCallback    {        private SelectionDrawMode drawMode;        private double width;        private double height;        private MeasurementUnit units;        public SelectionDrawMode DrawMode        {            get            {                return this.drawMode;            }        }        public double Width        {            get            {                return this.width;            }        }        public double Height        {            get            {                return this.height;            }        }        public MeasurementUnit Units        {            get            {                return this.units;            }        }        public override bool Equals(object obj)        {            SelectionDrawModeInfo asSDMI = obj as SelectionDrawModeInfo;            if (asSDMI == null)            {                return false;            }            return (asSDMI.drawMode == this.drawMode) && (asSDMI.width == this.width) && (asSDMI.height == this.height) && (asSDMI.units == this.units);        }        public override int GetHashCode()        {            return unchecked(this.drawMode.GetHashCode() ^ this.width.GetHashCode() ^ this.height.GetHashCode() & this.units.GetHashCode());        }        public SelectionDrawModeInfo(SelectionDrawMode drawMode, double width, double height, MeasurementUnit units)        {            this.drawMode = drawMode;            this.width = width;            this.height = height;            this.units = units;        }        public static SelectionDrawModeInfo CreateDefault()        {            return new SelectionDrawModeInfo(SelectionDrawMode.Normal, 4.0, 3.0, MeasurementUnit.Inch);        }        public SelectionDrawModeInfo CloneWithNewDrawMode(SelectionDrawMode newDrawMode)        {            return new SelectionDrawModeInfo(newDrawMode, this.width, this.height, this.units);        }        public SelectionDrawModeInfo CloneWithNewWidth(double newWidth)        {            return new SelectionDrawModeInfo(this.drawMode, newWidth, this.height, this.units);        }        public SelectionDrawModeInfo CloneWithNewHeight(double newHeight)        {            return new SelectionDrawModeInfo(this.drawMode, this.width, newHeight, this.units);        }        public SelectionDrawModeInfo CloneWithNewWidthAndHeight(double newWidth, double newHeight)        {            return new SelectionDrawModeInfo(this.drawMode, newWidth, newHeight, this.units);        }        public SelectionDrawModeInfo Clone()        {            return new SelectionDrawModeInfo(this.drawMode, this.width, this.height, this.units);        }        public SelectionDrawModeInfo CloneWithNewUnits(MeasurementUnit newUnits)        {            return new SelectionDrawModeInfo(this.drawMode, this.width, this.height, newUnits);        }        object ICloneable.Clone()        {            return Clone();        }        void IDeserializationCallback.OnDeserialization(object sender)        {            switch (this.units)            {                case MeasurementUnit.Centimeter:                case MeasurementUnit.Inch:                case MeasurementUnit.Pixel:                    break;                default:                    this.units = MeasurementUnit.Pixel;                    break;            }        }    }}
 |