public override int GetHashCode() { var hashCode = 895644725; hashCode = hashCode * -1521134295 + Id.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(BookingReference); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Last4CardDigits); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(CardType); hashCode = hashCode * -1521134295 + DateTimeCreated.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <SelectedFlights> .Default.GetHashCode(FlightsDetails); return(hashCode); }
/// <summary> /// Embed the data into given image in memory. /// NOTE: You will still need to save the image to disk yourself /// </summary> /// <param name="image">Image in memory in which to write the embedded data</param> /// <exception cref="System.Exception">Not all image data was given correctly.</exception> public void SaveToImage(Image image) { if (image.PropertyItems.Length == 0) { throw new Exception("No property items detected on the given Image object."); } PropertyItem tempPropItem = image.PropertyItems[0]; byte[] b_Time = new byte[24]; byte[] justOne = BitConverter.GetBytes(1); byte[] temp = BitConverter.GetBytes(GPSHours); Array.Copy(temp, 0, b_Time, 0, 4); Array.Copy(justOne, 0, b_Time, 4, 4); temp = BitConverter.GetBytes(GPSMinutes); Array.Copy(temp, 0, b_Time, 8, 4); Array.Copy(justOne, 0, b_Time, 12, 4); int[] frac = ConvertToFraction(GPSSeconds); Array.Copy(BitConverter.GetBytes(frac[0]), 0, b_Time, 16, 4); Array.Copy(BitConverter.GetBytes(frac[1]), 0, b_Time, 20, 4); tempPropItem.Id = (int)ProportyItemId.gpsTime; tempPropItem.Type = 5; tempPropItem.Len = b_Time.Length; tempPropItem.Value = b_Time; image.SetPropertyItem(tempPropItem); if (!String.IsNullOrEmpty(CameraModel)) { byte[] byteoriginal = asciiEncoder.GetBytes(CameraModel); byte[] bytes = new byte[(byteoriginal.Length + 1)]; Array.Copy(byteoriginal, 0, bytes, 0, byteoriginal.Length); bytes[(bytes.Length - 1)] = 0; tempPropItem.Id = (int)ProportyItemId.cameraModel; tempPropItem.Type = 2; tempPropItem.Len = bytes.Length; tempPropItem.Value = bytes; image.SetPropertyItem(tempPropItem); } if (GPSLatitudeDegrees.HasValue) { byte[] latBytes = GetBytesGPSLatitude(); tempPropItem.Id = (int)ProportyItemId.gpsLat; tempPropItem.Type = 5; tempPropItem.Len = latBytes.Length; tempPropItem.Value = latBytes; image.SetPropertyItem(tempPropItem); } else { if (image.PropertyItems.Any(pi => pi.Id == (int)ProportyItemId.gpsLat)) { image.RemovePropertyItem((int)ProportyItemId.gpsLat); } } if (GPSLongitudeDegrees.HasValue) { byte[] longBytes = GetBytesGPSLongitude(); tempPropItem.Id = (int)ProportyItemId.gpsLong; tempPropItem.Type = 5; tempPropItem.Len = longBytes.Length; tempPropItem.Value = longBytes; image.SetPropertyItem(tempPropItem); } else { if (image.PropertyItems.Any(pi => pi.Id == (int)ProportyItemId.gpsLong)) { image.RemovePropertyItem((int)ProportyItemId.gpsLong); } } byte[] b_AltRef = new byte[] { 0x0 }; tempPropItem.Id = (int)ProportyItemId.gpsAltRef; tempPropItem.Type = 1; tempPropItem.Len = 1; tempPropItem.Value = b_AltRef; image.SetPropertyItem(tempPropItem); byte[] latRefBytes = new byte[2]; latRefBytes[0] = asciiEncoder.GetBytes(GPSLatitudeRef)[0]; tempPropItem.Id = (int)ProportyItemId.gpsLatRef; tempPropItem.Type = 2; tempPropItem.Len = latRefBytes.Length; tempPropItem.Value = latRefBytes; image.SetPropertyItem(tempPropItem); byte[] longRefBytes = new byte[2]; longRefBytes[0] = asciiEncoder.GetBytes(GPSLongitudeRef)[0]; tempPropItem.Id = (int)ProportyItemId.gpsLongRef; tempPropItem.Type = 2; tempPropItem.Len = longRefBytes.Length; tempPropItem.Value = longRefBytes; image.SetPropertyItem(tempPropItem); byte[] b_Heading = GetYAWBytes(); tempPropItem.Id = (int)ProportyItemId.yaw; tempPropItem.Type = 5; tempPropItem.Len = b_Heading.Length; tempPropItem.Value = b_Heading; image.SetPropertyItem(tempPropItem); //tempPropItem = image. byte[] b_Alt = GetGPSAltBytes(); tempPropItem.Id = (int)ProportyItemId.gpsAlt; tempPropItem.Type = 5; tempPropItem.Len = b_Alt.Length; tempPropItem.Value = b_Alt; image.SetPropertyItem(tempPropItem); image.SetMetaValue((int)ProportyItemId.title, (short)ExifType.ASCII, Title); image.SetMetaValue((int)ProportyItemId.comment, (short)ExifType.ByteArray, Comments); image.SetMetaValue((int)ProportyItemId.author, (short)ExifType.ASCII, Author); image.SetMetaValue((int)ProportyItemId.keywords, (short)ExifType.ByteArray, Keywords); image.SetMetaValue((int)ProportyItemId.subject, (short)ExifType.ByteArray, Subject); image.SetMetaValue((int)ProportyItemId.dateTimeTaken, (short)ExifType.ASCII, DateTimeCreated.ToString("yyyy:MM:dd HH:mm:ss")); }