/// <summary> /// Attempts to extract the media properties of the main /// photo. /// </summary> /// <returns> /// A <see cref="Properties" /> object with a best effort guess /// at the right values. When no guess at all can be made, /// <see langword="null" /> is returned. /// </returns> private Properties ExtractProperties() { int width = 0, height = 0; IFDTag tag = GetTag(TagTypes.TiffIFD) as IFDTag; IFDStructure structure = tag.Structure; width = (int)(structure.GetLongValue(0, 0x07) ?? 0); height = (int)(structure.GetLongValue(0, 0x06) ?? 0); var vendor = ImageTag.Make; if (vendor == "LEICA") { vendor = "Leica"; } var desc = String.Format("{0} RAW File", vendor); if (width > 0 && height > 0) { return(new Properties(TimeSpan.Zero, new Codec(width, height, desc))); } return(null); }
/// <summary> /// Gets a tag of a specified type from the current instance, /// optionally creating a new tag if possible. /// </summary> /// <param name="type"> /// A <see cref="TagLib.TagTypes" /> value indicating the /// type of tag to read. /// </param> /// <param name="create"> /// A <see cref="bool" /> value specifying whether or not to /// try and create the tag if one is not found. /// </param> /// <returns> /// A <see cref="Tag" /> object containing the tag that was /// found in or added to the current instance. If no /// matching tag was found and none was created, <see /// langword="null" /> is returned. /// </returns> public override TagLib.Tag GetTag(TagLib.TagTypes type, bool create) { TagLib.Tag tag = base.GetTag(type, false); if (tag != null) { return(tag); } if (!create || (type & ImageTag.AllowedTypes) == 0) { return(null); } if (type != TagTypes.TiffIFD) { return(base.GetTag(type, create)); } ImageTag new_tag = new IFDTag(this); ImageTag.AddTag(new_tag); return(new_tag); }