/// <summary> /// Register the standard aliases. /// Note: This method is not lock because only called by the constructor. /// </summary> /// <exception cref="XmpException"> If the registrations of at least one alias fails. </exception> private void RegisterStandardAliases() { AliasOptions aliasToArrayOrdered = new AliasOptions(); aliasToArrayOrdered.ArrayOrdered = true; AliasOptions aliasToArrayAltText = new AliasOptions(); aliasToArrayAltText.ArrayAltText = true; // Aliases from XMP to DC. RegisterAlias(NS_XMP, "Author", NS_DC, "creator", aliasToArrayOrdered); RegisterAlias(NS_XMP, "Authors", NS_DC, "creator", null); RegisterAlias(NS_XMP, "Description", NS_DC, "description", null); RegisterAlias(NS_XMP, "Format", NS_DC, "format", null); RegisterAlias(NS_XMP, "Keywords", NS_DC, "subject", null); RegisterAlias(NS_XMP, "Locale", NS_DC, "language", null); RegisterAlias(NS_XMP, "Title", NS_DC, "title", null); RegisterAlias(NS_XMP_RIGHTS, "Copyright", NS_DC, "rights", null); // Aliases from PDF to DC and XMP. RegisterAlias(NS_PDF, "Author", NS_DC, "creator", aliasToArrayOrdered); RegisterAlias(NS_PDF, "BaseURL", NS_XMP, "BaseURL", null); RegisterAlias(NS_PDF, "CreationDate", NS_XMP, "CreateDate", null); RegisterAlias(NS_PDF, "Creator", NS_XMP, "CreatorTool", null); RegisterAlias(NS_PDF, "ModDate", NS_XMP, "ModifyDate", null); RegisterAlias(NS_PDF, "Subject", NS_DC, "description", aliasToArrayAltText); RegisterAlias(NS_PDF, "Title", NS_DC, "title", aliasToArrayAltText); // Aliases from PHOTOSHOP to DC and XMP. RegisterAlias(NS_PHOTOSHOP, "Author", NS_DC, "creator", aliasToArrayOrdered); RegisterAlias(NS_PHOTOSHOP, "Caption", NS_DC, "description", aliasToArrayAltText); RegisterAlias(NS_PHOTOSHOP, "Copyright", NS_DC, "rights", aliasToArrayAltText); RegisterAlias(NS_PHOTOSHOP, "Keywords", NS_DC, "subject", null); RegisterAlias(NS_PHOTOSHOP, "Marked", NS_XMP_RIGHTS, "Marked", null); RegisterAlias(NS_PHOTOSHOP, "Title", NS_DC, "title", aliasToArrayAltText); RegisterAlias(NS_PHOTOSHOP, "WebStatement", NS_XMP_RIGHTS, "WebStatement", null); // Aliases from TIFF and EXIF to DC and XMP. RegisterAlias(NS_TIFF, "Artist", NS_DC, "creator", aliasToArrayOrdered); RegisterAlias(NS_TIFF, "Copyright", NS_DC, "rights", null); RegisterAlias(NS_TIFF, "DateTime", NS_XMP, "ModifyDate", null); RegisterAlias(NS_TIFF, "ImageDescription", NS_DC, "description", null); RegisterAlias(NS_TIFF, "Software", NS_XMP, "CreatorTool", null); // Aliases from PNG (Acrobat ImageCapture) to DC and XMP. RegisterAlias(NS_PNG, "Author", NS_DC, "creator", aliasToArrayOrdered); RegisterAlias(NS_PNG, "Copyright", NS_DC, "rights", aliasToArrayAltText); RegisterAlias(NS_PNG, "CreationTime", NS_XMP, "CreateDate", null); RegisterAlias(NS_PNG, "Description", NS_DC, "description", aliasToArrayAltText); RegisterAlias(NS_PNG, "ModificationTime", NS_XMP, "ModifyDate", null); RegisterAlias(NS_PNG, "Software", NS_XMP, "CreatorTool", null); RegisterAlias(NS_PNG, "Title", NS_DC, "title", aliasToArrayAltText); }
public XmpAliasInfoImpl(string @namespace, string prefix, string propName, AliasOptions aliasForm) { _namespace = @namespace; _prefix = prefix; _propName = propName; _aliasForm = aliasForm; }
private void RegisterAlias(string aliasNs, string aliasProp, string actualNs, string actualProp, AliasOptions aliasForm) { ParameterAsserts.AssertSchemaNs(aliasNs); ParameterAsserts.AssertPropName(aliasProp); ParameterAsserts.AssertSchemaNs(actualNs); ParameterAsserts.AssertPropName(actualProp); // Fix the alias options AliasOptions aliasOpts = aliasForm != null ? new AliasOptions( XmpNodeUtils.VerifySetOptions(aliasForm.ToPropertyOptions(), null). Options) : new AliasOptions(); if (_regex.IsMatch(aliasProp) || _regex.IsMatch(actualProp)) { throw new XmpException("Alias and actual property names must be simple", XmpError.BADXPATH); } // check if both namespaces are registered string aliasPrefix = GetNamespacePrefix(aliasNs); string actualPrefix = GetNamespacePrefix(actualNs); if (aliasPrefix == null) { throw new XmpException("Alias namespace is not registered", XmpError.BADSCHEMA); } if (actualPrefix == null) { throw new XmpException("Actual namespace is not registered", XmpError.BADSCHEMA); } string key = aliasPrefix + aliasProp; // check if alias is already existing if (_aliasMap.Contains(key)) { throw new XmpException("Alias is already existing", XmpError.BADPARAM); } if (_aliasMap.Contains(actualPrefix + actualProp)) { throw new XmpException("Actual property is already an alias, use the base property", XmpError.BADPARAM); } IXmpAliasInfo aliasInfo = new XmpAliasInfoImpl(actualNs, actualPrefix, actualProp, aliasOpts); _aliasMap[key] = aliasInfo; }