// -------------------------------------------------------------------------------------------------------------------- // // Copyright © James South and contributors. // Licensed under the Apache License, Version 2.0. // // // Stores meta information about a image, like the name of the author, // the copyright information, the date, where the image was created // or some other information. // // -------------------------------------------------------------------------------------------------------------------- namespace ImageProcessor { using System; /// /// Stores meta information about a image, like the name of the author, /// the copyright information, the date, where the image was created /// or some other information. /// public struct ImageProperty : IEquatable { /// /// The name of this indicating which kind of /// information this property stores. /// /// /// Typical properties are the author, copyright /// information or other meta information. /// public string Name; /// /// The value of this . /// public string Value; /// /// Initializes a new instance of the struct. /// /// /// The name of the property. /// /// /// The value of the property. /// public ImageProperty(string name, string value) { this.Name = name; this.Value = value; } /// /// Compares two objects. The result specifies whether the values /// of the or properties of the two /// objects are equal. /// /// /// The on the left side of the operand. /// /// /// The on the right side of the operand. /// /// /// True if the current left is equal to the parameter; otherwise, false. /// public static bool operator ==(ImageProperty left, ImageProperty right) { return left.Equals(right); } /// /// Compares two objects. The result specifies whether the values /// of the or properties of the two /// objects are unequal. /// /// /// The on the left side of the operand. /// /// /// The on the right side of the operand. /// /// /// True if the current left is unequal to the parameter; otherwise, false. /// public static bool operator !=(ImageProperty left, ImageProperty right) { return !left.Equals(right); } /// /// Indicates whether this instance and a specified object are equal. /// /// /// The object to compare with the current instance. /// /// /// true if and this instance are the same type and represent the /// same value; otherwise, false. /// public override bool Equals(object obj) { if (!(obj is ImageProperty)) { return false; } ImageProperty other = (ImageProperty)obj; return other.Name == this.Name && other.Value == this.Value; } /// /// Returns the hash code for this instance. /// /// /// A 32-bit signed integer that is the hash code for this instance. /// public override int GetHashCode() { return this.GetHashCode(this); } /// /// Returns the fully qualified type name of this instance. /// /// /// A containing a fully qualified type name. /// public override string ToString() { return "{Name=" + this.Name + ",Value=" + this.Value + "}"; } /// /// Indicates whether the current object is equal to another object of the same type. /// /// /// True if the current object is equal to the parameter; otherwise, false. /// /// An object to compare with this object. public bool Equals(ImageProperty other) { return this.Name.Equals(other.Name) && this.Value.Equals(other.Value); } /// /// Returns the hash code for this instance. /// /// /// The instance of to return the hash code for. /// /// /// A 32-bit signed integer that is the hash code for this instance. /// private int GetHashCode(ImageProperty imageProperty) { unchecked { int hashCode = imageProperty.Name.GetHashCode(); hashCode = (hashCode * 397) ^ imageProperty.Value.GetHashCode(); return hashCode; } } } }