diff --git a/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj b/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj index 9a9ec55..056b403 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj +++ b/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj @@ -89,6 +89,7 @@ + @@ -97,7 +98,7 @@ - + diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueObjects/ColorValue.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueObjects/ColorValue.cs new file mode 100644 index 0000000..6ddd3c8 --- /dev/null +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueObjects/ColorValue.cs @@ -0,0 +1,67 @@ +using Advanced_Software_Engineering.Verbs.Value.ValueTypes; +using System; +using System.Drawing; + +namespace Advanced_Software_Engineering.Verbs.Value.ValueObjects { + + internal class ColorValue : IValue { + private IValue r; + private IValue g; + private IValue b; + + bool hasAlpha; + private IValue a; + + public ColorValue(Color value) { + r = new IntValue(value.R); + g = new IntValue(value.G); + b = new IntValue(value.B); + a = new IntValue(value.A); + hasAlpha = true; + } + + public ColorValue(IValue r, IValue g, IValue b, IValue a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + hasAlpha = true; + } + + public ColorValue(IValue r, IValue g, IValue b) { + this.r = r; + this.g = g; + this.b = b; + hasAlpha = false; + } + + public string GetDescription() { + return "A color value"; + } + + public string GetOriginalType() { + return "color"; + } + + public bool ToBool() { + return ToColor().GetBrightness() > 0.5; + } + + public Color ToColor() { + if (hasAlpha) return Color.FromArgb(a.ToInt(), r.ToInt(), g.ToInt(), b.ToInt()); + else return Color.FromArgb(r.ToInt(), g.ToInt(), b.ToInt()); + } + + public double ToDouble() { + return ToColor().GetBrightness(); + } + + public int ToInt() { + return ToColor().ToArgb(); + } + + public bool isInitialised() { + return true; + } + } +} \ No newline at end of file diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ColorValue.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ColorValue.cs deleted file mode 100644 index 8a8bf26..0000000 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ColorValue.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Drawing; - -namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes { - - internal class ColorValue : IValue { - private bool initialised = false; - - private Color value; - private Type type = typeof(Color); - - public ColorValue(Color value) { - this.value = value; - initialised = true; - } - - public ColorValue() { - } - - public string GetDescription() { - if (initialised) return "A color with description " + value.ToString(); - else return "An uninitialised color"; - } - - public string GetOriginalType() { - return "color"; - } - - public bool ToBool() { - return ToColor().GetBrightness() > 0.5; - } - - public Color ToColor() { - if (initialised) return value; - else throw new Exception("Color value not set"); - } - - public double ToDouble() { - return ToColor().GetBrightness(); - } - - public int ToInt() { - return ToColor().ToArgb(); - } - - public bool isInitialised() { - return initialised; - } - } -} \ No newline at end of file