using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Runtime.Serialization;
namespace Dialogik.Utils.Defines
{
[Serializable]
[EFlags(EFlagSize.b32)]
public class EColor : EnumBase<EColor, Color>
{
#region Constructors
internal EColor() : base() { }
private EColor(E decValue, Color eValue) : base((Int32)decValue, eValue, typeof(E), String.Empty) {}
private EColor(E decValue, Color eValue, string description) : base((Int32)decValue, eValue, typeof(E), description ) {}
public EColor(SerializationInfo info, StreamingContext context) : base(info, context) {}
private EColor(Int32 decValue ) : base(decValue) {}
private EColor(Color eValue ) /* TT in EnumBase */ : base(eValue) {}
private EColor(string eName ) : base(eName) {}
private EColor(byte[] rawValue ) : base(rawValue) {}
private EColor(bool[] bitFlags ) : base(bitFlags) {}
private EColor(bool addFlags, object value1, object value2) : base(addFlags, value1, value2) {}
#endregion
#region Operators
public static implicit operator EColor(Int32 operatorValue) { return new EColor(operatorValue); }
public static implicit operator EColor(Color operatorValue) { return new EColor(operatorValue); }
public static implicit operator EColor(string operatorValue) { return new EColor(operatorValue); }
public static implicit operator EColor(byte[] operatorValue) { return new EColor(operatorValue); }
public static implicit operator EColor(bool[] operatorValue) { return new EColor(operatorValue); }
public static EColor operator + (EColor value1, EColor value2) { return new EColor(true, value1.CmpValue, value2 .CmpValue); }
public static EColor operator + (EColor value1, Color value2) { return new EColor(true, value1.CmpValue, new EColor(value2).CmpValue); }
public static EColor operator + (EColor value1, Int32 value2) { return new EColor(true, value1.CmpValue, new EColor(value2).CmpValue); }
public static EColor operator + (EColor value1, string value2) { return new EColor(true, value1.CmpValue, new EColor(value2).CmpValue); }
public static EColor operator - (EColor value1, EColor value2) { return new EColor(false, value1.CmpValue, value2 .CmpValue); }
public static EColor operator - (EColor value1, Color value2) { return new EColor(false, value1.CmpValue, new EColor(value2).CmpValue); }
public static EColor operator - (EColor value1, Int32 value2) { return new EColor(false, value1.CmpValue, new EColor(value2).CmpValue); }
public static EColor operator - (EColor value1, string value2) { return new EColor(false, value1.CmpValue, new EColor(value2).CmpValue); }
#endregion
#region Constants
// we define an enum so we can access a single constant
// in switches and attributes and so forth
// if not wanted, declare it private!
public enum E
{
None = 0,
BackGround = 1,
ForeGround = 2,
InnerBorder = 3,
OuterBorder = 4,
TextNormal = 5,
TextHighlite = 6,
}
// we define the constants to hold all
// the information we want
public static readonly EColor eNone = new EColor(E.None, Color.Empty );
public static readonly EColor eBackGround = new EColor(E.BackGround, Color.AliceBlue, "use Background Color" );
public static readonly EColor eForeGround = new EColor(E.ForeGround, Color.Bisque, "use Foreground Color" );
public static readonly EColor eInnerBorder = new EColor(E.InnerBorder, Color.DodgerBlue );
public static readonly EColor eOuterBorder = new EColor(E.OuterBorder, Color.Tomato );
public static readonly EColor eTextNormal = new EColor(E.TextNormal, Color.Yellow );
public static readonly EColor eTextHighlite = new EColor(E.TextHighlite, Color.RosyBrown );
#endregion
}
}