Exemple #1
0
        /// <summary>
        /// Adds GPS destination location URL metadata item to the <see cref="IGalleryObject.MetadataItems" />
        /// collection of <paramref name="galleryObject" />. If the gallery object's metadata does not contain GPS data or the
        /// visibility of the GPS map link is turned off, no action is taken.
        /// </summary>
        /// <param name="galleryObject">The gallery object.</param>
        /// <param name="metadataDisplaySettings">The metadata display settings.</param>
        /// <remarks>The metadata item is added with <see cref="IGalleryObjectMetadataItem.HasChanges" /> = <c>false</c> to prevent it
        /// from getting persisted to the database. This allows the hyperlink to be regenerated from the template, thus incorporating the
        /// most recent template and other media object properties (such as title). Because the item is linked to the media object, it is
        /// automatically included in the cache of media objects.
        /// This function is identical to <see cref="AddGpsLocationWithMapLink" /> except it uses the primary (not destination) GPS settings.</remarks>
        private static void AddGpsDestLocationWithMapLink(IGalleryObject galleryObject, IMetadataDefinitionCollection metadataDisplaySettings)
        {
            if (!metadataDisplaySettings.Find(FormattedMetadataItemName.GpsDestLocationWithMapLink).IsVisible)
            {
                return;                 // The map link is disabled, so there is nothing to do.
            }
            IGalleryObjectMetadataItemCollection metadata = galleryObject.MetadataItems;
            IGalleryObjectMetadataItem           gpsLocation;

            if (metadata.TryGetMetadataItem(FormattedMetadataItemName.GpsDestLocation, out gpsLocation) && (!metadata.Contains(FormattedMetadataItemName.GpsDestLocationWithMapLink)))
            {
                // We have a GPS location but have not yet created the URL'd version. Do so now and add it to the collection.
                IGalleryObjectMetadataItem latitude;
                IGalleryObjectMetadataItem longitude;
                bool foundLatitude  = metadata.TryGetMetadataItem(FormattedMetadataItemName.GpsDestLatitude, out latitude);
                bool foundLongitude = metadata.TryGetMetadataItem(FormattedMetadataItemName.GpsDestLongitude, out longitude);

                if (foundLatitude && foundLongitude)
                {
                    string url = GetGpsMapUrl(galleryObject, latitude.Value, longitude.Value, gpsLocation.Value);

                    if (!String.IsNullOrEmpty(url))
                    {
                        // Add to meta collection. Specify false for HasChanges to prevent it from getting persisted back to the database.
                        galleryObject.MetadataItems.AddNew(int.MinValue, FormattedMetadataItemName.GpsDestLocationWithMapLink, Resources.GalleryServerPro.Metadata_GpsDestLocationWithMapLink, url, false);
                    }
                }
            }
        }
Exemple #2
0
        private void AddExifMetadata(IGalleryObjectMetadataItemCollection metadataItems)
        {
            foreach (FormattedMetadataItemName metadataItemName in Enum.GetValues(typeof(FormattedMetadataItemName)))
            {
                IGalleryObjectMetadataItem mdi = null;
                switch (metadataItemName)
                {
                case FormattedMetadataItemName.Author: mdi = GetStringMetadataItem(RawMetadataItemName.Artist, FormattedMetadataItemName.Author, Resources.Metadata_Author); break;

                case FormattedMetadataItemName.CameraModel: mdi = GetStringMetadataItem(RawMetadataItemName.EquipModel, FormattedMetadataItemName.CameraModel, Resources.Metadata_CameraModel); break;

                case FormattedMetadataItemName.ColorRepresentation: mdi = GetColorRepresentationMetadataItem(); break;

                case FormattedMetadataItemName.Comment: mdi = GetStringMetadataItem(RawMetadataItemName.ExifUserComment, FormattedMetadataItemName.Comment, Resources.Metadata_Comment); break;

                case FormattedMetadataItemName.Copyright: mdi = GetStringMetadataItem(RawMetadataItemName.Copyright, FormattedMetadataItemName.Copyright, Resources.Metadata_Copyright); break;

                case FormattedMetadataItemName.DatePictureTaken: mdi = GetDatePictureTakenMetadataItem(); break;

                case FormattedMetadataItemName.Description: mdi = GetStringMetadataItem(RawMetadataItemName.ImageDescription, FormattedMetadataItemName.Description, Resources.Metadata_Description); break;

                case FormattedMetadataItemName.Dimensions: mdi = GetDimensionsMetadataItem(); break;

                case FormattedMetadataItemName.EquipmentManufacturer: mdi = GetStringMetadataItem(RawMetadataItemName.EquipMake, FormattedMetadataItemName.EquipmentManufacturer, Resources.Metadata_EquipmentManufacturer); break;

                case FormattedMetadataItemName.ExposureCompensation: mdi = GetExposureCompensationMetadataItem(); break;

                case FormattedMetadataItemName.ExposureProgram: mdi = GetExposureProgramMetadataItem(); break;

                case FormattedMetadataItemName.ExposureTime: mdi = GetExposureTimeMetadataItem(); break;

                case FormattedMetadataItemName.FlashMode: mdi = GetFlashModeMetadataItem(); break;

                case FormattedMetadataItemName.FNumber: mdi = GetFNumberMetadataItem(); break;

                case FormattedMetadataItemName.FocalLength: mdi = GetFocalLengthMetadataItem(); break;

                case FormattedMetadataItemName.Height: mdi = GetHeightMetadataItem(); break;

                case FormattedMetadataItemName.HorizontalResolution: mdi = GetXResolutionMetadataItem(); break;

                case FormattedMetadataItemName.IsoSpeed: mdi = GetStringMetadataItem(RawMetadataItemName.ExifISOSpeed, FormattedMetadataItemName.IsoSpeed, Resources.Metadata_IsoSpeed); break;

                case FormattedMetadataItemName.Keywords: break;                         // No way to access keywords through Exif, so just skip this one

                case FormattedMetadataItemName.LensAperture: mdi = GetApertureMetadataItem(); break;

                case FormattedMetadataItemName.LightSource: mdi = GetLightSourceMetadataItem(); break;

                case FormattedMetadataItemName.MeteringMode: mdi = GetMeteringModeMetadataItem(); break;

                case FormattedMetadataItemName.Rating: break;                         // No way to access rating through Exif, so just skip this one

                case FormattedMetadataItemName.Subject: break;                        // No way to access rating through Exif, so just skip this one

                case FormattedMetadataItemName.SubjectDistance: mdi = GetStringMetadataItem(RawMetadataItemName.ExifSubjectDist, FormattedMetadataItemName.SubjectDistance, Resources.Metadata_SubjectDistance, String.Concat("{0} ", Resources.Metadata_SubjectDistance_Units)); break;

                case FormattedMetadataItemName.Title: mdi = GetStringMetadataItem(RawMetadataItemName.ImageTitle, FormattedMetadataItemName.Title, Resources.Metadata_Title); break;

                case FormattedMetadataItemName.VerticalResolution: mdi = GetYResolutionMetadataItem(); break;

                case FormattedMetadataItemName.Width: mdi = GetWidthMetadataItem(); break;

                default: throw new System.ComponentModel.InvalidEnumArgumentException(string.Format(CultureInfo.CurrentCulture, "The FormattedMetadataItemName enumeration value {0} is not being processed in MediaObjectMetadataExtractor.AddExifMetadata().", metadataItemName.ToString()));
                }
                if ((mdi != null) && (!metadataItems.Contains(mdi)))
                {
                    metadataItems.Add(mdi);
                }
            }
        }
        //private void OutputToDebugWindow()
        //{
        //  foreach (RawMetadataItemName metadataItemName in Enum.GetValues(typeof(RawMetadataItemName)))
        //  {
        //    MetadataItem rawMdi;
        //    if (RawMetadata.TryGetValue(metadataItemName, out rawMdi))
        //    {
        //      string rawValue = rawMdi.Value.ToString().Trim().TrimEnd(new char[] {'\0'});
        //      string msg = String.Format(CultureInfo.CurrentCulture, "{0}: {1} (ID {2}, {3}, {4})", metadataItemName, rawValue, rawMdi.PropertyItem.Id, rawMdi.ExtractedValueType, rawMdi.PropertyTagType);
        //      System.Diagnostics.Trace.WriteLine(msg);
        //    }
        //  }
        //}
        private void AddExifMetadata(IGalleryObjectMetadataItemCollection metadataItems)
        {
            //OutputToDebugWindow();

            foreach (FormattedMetadataItemName metadataItemName in Enum.GetValues(typeof(FormattedMetadataItemName)))
            {
                IGalleryObjectMetadataItem mdi = null;
                switch (metadataItemName)
                {
                    case FormattedMetadataItemName.Author: mdi = GetStringMetadataItem(RawMetadataItemName.Artist, FormattedMetadataItemName.Author, Resources.Metadata_Author); break;
                    case FormattedMetadataItemName.CameraModel: mdi = GetStringMetadataItem(RawMetadataItemName.EquipModel, FormattedMetadataItemName.CameraModel, Resources.Metadata_CameraModel); break;
                    case FormattedMetadataItemName.ColorRepresentation: mdi = GetColorRepresentationMetadataItem(); break;
                    case FormattedMetadataItemName.Comment: mdi = GetStringMetadataItem(RawMetadataItemName.ExifUserComment, FormattedMetadataItemName.Comment, Resources.Metadata_Comment); break;
                    case FormattedMetadataItemName.Copyright: mdi = GetStringMetadataItem(RawMetadataItemName.Copyright, FormattedMetadataItemName.Copyright, Resources.Metadata_Copyright); break;
                    case FormattedMetadataItemName.DatePictureTaken: mdi = GetDatePictureTakenMetadataItem(); break;
                    case FormattedMetadataItemName.Description: mdi = GetStringMetadataItem(RawMetadataItemName.ImageDescription, FormattedMetadataItemName.Description, Resources.Metadata_Description); break;
                    case FormattedMetadataItemName.Dimensions: mdi = GetDimensionsMetadataItem(); break;
                    case FormattedMetadataItemName.EquipmentManufacturer: mdi = GetStringMetadataItem(RawMetadataItemName.EquipMake, FormattedMetadataItemName.EquipmentManufacturer, Resources.Metadata_EquipmentManufacturer); break;
                    case FormattedMetadataItemName.ExposureCompensation: mdi = GetExposureCompensationMetadataItem(); break;
                    case FormattedMetadataItemName.ExposureProgram: mdi = GetExposureProgramMetadataItem(); break;
                    case FormattedMetadataItemName.ExposureTime: mdi = GetExposureTimeMetadataItem(); break;
                    case FormattedMetadataItemName.FlashMode: mdi = GetFlashModeMetadataItem(); break;
                    case FormattedMetadataItemName.FNumber: mdi = GetFNumberMetadataItem(); break;
                    case FormattedMetadataItemName.FocalLength: mdi = GetFocalLengthMetadataItem(); break;
                    case FormattedMetadataItemName.Height: mdi = GetHeightMetadataItem(); break;
                    case FormattedMetadataItemName.HorizontalResolution: mdi = GetXResolutionMetadataItem(); break;
                    case FormattedMetadataItemName.IsoSpeed: mdi = GetStringMetadataItem(RawMetadataItemName.ExifISOSpeed, FormattedMetadataItemName.IsoSpeed, Resources.Metadata_IsoSpeed); break;
                    case FormattedMetadataItemName.Keywords: break; // No way to access keywords through Exif, so just skip this one
                    case FormattedMetadataItemName.LensAperture: mdi = GetApertureMetadataItem(); break;
                    case FormattedMetadataItemName.LightSource: mdi = GetLightSourceMetadataItem(); break;
                    case FormattedMetadataItemName.MeteringMode: mdi = GetMeteringModeMetadataItem(); break;
                    case FormattedMetadataItemName.Rating: break; // No way to access rating through Exif, so just skip this one
                    case FormattedMetadataItemName.Subject: break; // No way to access rating through Exif, so just skip this one
                    case FormattedMetadataItemName.SubjectDistance: mdi = GetSubjectDistanceMetadataItem(); break;
                    case FormattedMetadataItemName.Title: mdi = GetStringMetadataItem(RawMetadataItemName.ImageTitle, FormattedMetadataItemName.Title, Resources.Metadata_Title); break;
                    case FormattedMetadataItemName.VerticalResolution: mdi = GetYResolutionMetadataItem(); break;
                    case FormattedMetadataItemName.Width: mdi = GetWidthMetadataItem(); break;
                }
                if ((mdi != null) && (!metadataItems.Contains(mdi)))
                {
                    metadataItems.Add(mdi);
                }
            }
        }
		private void AddExifMetadata(IGalleryObjectMetadataItemCollection metadataItems)
		{
			foreach (FormattedMetadataItemName metadataItemName in Enum.GetValues(typeof(FormattedMetadataItemName)))
			{
				IGalleryObjectMetadataItem mdi = null;
				switch (metadataItemName)
				{
					case FormattedMetadataItemName.Author: mdi = GetStringMetadataItem(RawMetadataItemName.Artist, FormattedMetadataItemName.Author, Resources.Metadata_Author); break;
					case FormattedMetadataItemName.CameraModel: mdi = GetStringMetadataItem(RawMetadataItemName.EquipModel, FormattedMetadataItemName.CameraModel, Resources.Metadata_CameraModel); break;
					case FormattedMetadataItemName.ColorRepresentation: mdi = GetColorRepresentationMetadataItem(); break;
					case FormattedMetadataItemName.Comment: mdi = GetStringMetadataItem(RawMetadataItemName.ExifUserComment, FormattedMetadataItemName.Comment, Resources.Metadata_Comment); break;
					case FormattedMetadataItemName.Copyright: mdi = GetStringMetadataItem(RawMetadataItemName.Copyright, FormattedMetadataItemName.Copyright, Resources.Metadata_Copyright); break;
					case FormattedMetadataItemName.DatePictureTaken: mdi = GetDatePictureTakenMetadataItem(); break;
					case FormattedMetadataItemName.Description: mdi = GetStringMetadataItem(RawMetadataItemName.ImageDescription, FormattedMetadataItemName.Description, Resources.Metadata_Description); break;
					case FormattedMetadataItemName.Dimensions: mdi = GetDimensionsMetadataItem(); break;
					case FormattedMetadataItemName.EquipmentManufacturer: mdi = GetStringMetadataItem(RawMetadataItemName.EquipMake, FormattedMetadataItemName.EquipmentManufacturer, Resources.Metadata_EquipmentManufacturer); break;
					case FormattedMetadataItemName.ExposureCompensation: mdi = GetExposureCompensationMetadataItem(); break;
					case FormattedMetadataItemName.ExposureProgram: mdi = GetExposureProgramMetadataItem(); break;
					case FormattedMetadataItemName.ExposureTime: mdi = GetExposureTimeMetadataItem(); break;
					case FormattedMetadataItemName.FlashMode: mdi = GetFlashModeMetadataItem(); break;
					case FormattedMetadataItemName.FNumber: mdi = GetFNumberMetadataItem(); break;
					case FormattedMetadataItemName.FocalLength: mdi = GetFocalLengthMetadataItem(); break;
					case FormattedMetadataItemName.Height: mdi = GetHeightMetadataItem(); break;
					case FormattedMetadataItemName.HorizontalResolution: mdi = GetXResolutionMetadataItem(); break;
					case FormattedMetadataItemName.IsoSpeed: mdi = GetStringMetadataItem(RawMetadataItemName.ExifISOSpeed, FormattedMetadataItemName.IsoSpeed, Resources.Metadata_IsoSpeed); break;
					case FormattedMetadataItemName.Keywords: break; // No way to access keywords through Exif, so just skip this one
					case FormattedMetadataItemName.LensAperture: mdi = GetApertureMetadataItem(); break;
					case FormattedMetadataItemName.LightSource: mdi = GetLightSourceMetadataItem(); break;
					case FormattedMetadataItemName.MeteringMode: mdi = GetMeteringModeMetadataItem(); break;
					case FormattedMetadataItemName.Rating: break; // No way to access rating through Exif, so just skip this one
					case FormattedMetadataItemName.Subject: break; // No way to access rating through Exif, so just skip this one
					case FormattedMetadataItemName.SubjectDistance: mdi = GetStringMetadataItem(RawMetadataItemName.ExifSubjectDist, FormattedMetadataItemName.SubjectDistance, Resources.Metadata_SubjectDistance, String.Concat("{0} ", Resources.Metadata_SubjectDistance_Units)); break;
					case FormattedMetadataItemName.Title: mdi = GetStringMetadataItem(RawMetadataItemName.ImageTitle, FormattedMetadataItemName.Title, Resources.Metadata_Title); break;
					case FormattedMetadataItemName.VerticalResolution: mdi = GetYResolutionMetadataItem(); break;
					case FormattedMetadataItemName.Width: mdi = GetWidthMetadataItem(); break;

					default: throw new System.ComponentModel.InvalidEnumArgumentException(string.Format(CultureInfo.CurrentCulture, "The FormattedMetadataItemName enumeration value {0} is not being processed in MediaObjectMetadataExtractor.AddExifMetadata().", metadataItemName.ToString()));
				}
				if ((mdi != null) && (!metadataItems.Contains(mdi)))
				{
					metadataItems.Add(mdi);
				}
			}
		}
 private static void AddMetadataItem(IGalleryObjectMetadataItemCollection metadataItems, GalleryObjectMetadataItem metadataItem)
 {
     if ((metadataItem != null) && (!metadataItems.Contains(metadataItem)))
     {
         metadataItems.Add(metadataItem);
     }
 }