Added first few XMP parser regression tests, updated property value types, fixed related Xmpdatum methods.
This commit is contained in:
parent
e043a7cd6a
commit
f1d24641cd
@ -93,31 +93,31 @@ namespace Exiv2 {
|
||||
};
|
||||
|
||||
extern const XmpPropertyInfo xmpDcInfo[] = {
|
||||
{ "contributor", "contributor", "bag ProperName", xmpText, xmpExternal, "Contributors to the resource (other than the authors)." },
|
||||
{ "contributor", "contributor", "bag ProperName", xmpArray, xmpExternal, "Contributors to the resource (other than the authors)." },
|
||||
{ "coverage", "coverage", "Text", xmpText, xmpExternal, "The extent or scope of the resource." },
|
||||
{ "creator", "creator", "seq ProperName", xmpText, xmpExternal, "The authors of the resource (listed in order of precedence, if significant)." },
|
||||
{ "date", "date", "seq Date", xmpText, xmpExternal, "Date(s) that something interesting happened to the resource." },
|
||||
{ "description", "description", "Lang Alt", xmpText, xmpExternal, "A textual description of the content of the resource. Multiple values may be "
|
||||
{ "creator", "creator", "seq ProperName", xmpArray, xmpExternal, "The authors of the resource (listed in order of precedence, if significant)." },
|
||||
{ "date", "date", "seq Date", xmpArray, xmpExternal, "Date(s) that something interesting happened to the resource." },
|
||||
{ "description", "description", "Lang Alt", langAlt, xmpExternal, "A textual description of the content of the resource. Multiple values may be "
|
||||
"present for different languages." },
|
||||
{ "format", "format", "MIMEType", xmpText, xmpInternal, "The file format used when saving the resource. Tools and applications should set "
|
||||
"this property to the save format of the data. It may include appropriate qualifiers." },
|
||||
{ "identifier", "identifier", "Text", xmpText, xmpExternal, "Unique identifier of the resource." },
|
||||
{ "language", "language", "bag Locale", xmpText, xmpInternal, "An unordered array specifying the languages used in the resource." },
|
||||
{ "publisher", "publisher", "bag ProperName", xmpText, xmpExternal, "Publishers." },
|
||||
{ "relation", "relation", "bag Text", xmpText, xmpInternal, "Relationships to other documents." },
|
||||
{ "rights", "rights", "Lang Alt", xmpText, xmpExternal, "Informal rights statement, selected by language." },
|
||||
{ "language", "language", "bag Locale", xmpArray, xmpInternal, "An unordered array specifying the languages used in the resource." },
|
||||
{ "publisher", "publisher", "bag ProperName", xmpArray, xmpExternal, "Publishers." },
|
||||
{ "relation", "relation", "bag Text", xmpArray, xmpInternal, "Relationships to other documents." },
|
||||
{ "rights", "rights", "Lang Alt", langAlt, xmpExternal, "Informal rights statement, selected by language." },
|
||||
{ "source", "source", "Text", xmpText, xmpExternal, "Unique identifier of the work from which this resource was derived." },
|
||||
{ "subject", "subject", "bag Text", xmpText, xmpExternal, "An unordered array of descriptive phrases or keywords that specify the topic of the "
|
||||
{ "subject", "subject", "bag Text", xmpArray, xmpExternal, "An unordered array of descriptive phrases or keywords that specify the topic of the "
|
||||
"content of the resource." },
|
||||
{ "title", "title", "Lang Alt", xmpText, xmpExternal, "The title of the document, or the name given to the resource. Typically, it will be "
|
||||
{ "title", "title", "Lang Alt", langAlt, xmpExternal, "The title of the document, or the name given to the resource. Typically, it will be "
|
||||
"a name by which the resource is formally known." },
|
||||
{ "type", "type", "bag open Choice", xmpText, xmpExternal, "A document type; for example, novel, poem, or working paper." },
|
||||
{ "type", "type", "bag open Choice", xmpArray, xmpExternal, "A document type; for example, novel, poem, or working paper." },
|
||||
// End of list marker
|
||||
{ 0, 0, 0, invalidTypeId, xmpInternal, 0 }
|
||||
};
|
||||
|
||||
extern const XmpPropertyInfo xmpXmpInfo[] = {
|
||||
{ "Advisory", "Advisory", "bag XPath", xmpText, xmpExternal, "An unordered array specifying properties that were edited outside the authoring "
|
||||
{ "Advisory", "Advisory", "bag XPath", xmpArray, xmpExternal, "An unordered array specifying properties that were edited outside the authoring "
|
||||
"application. Each item should contain a single namespace and XPath separated by "
|
||||
"one ASCII space (U+0020)." },
|
||||
{ "BaseURL", "BaseURL", "URL", xmpText, xmpInternal, "The base URL for relative URLs in the document content. If this document contains "
|
||||
@ -129,7 +129,7 @@ namespace Exiv2 {
|
||||
{ "CreatorTool", "CreatorTool", "AgentName", xmpText, xmpInternal, "The name of the first known tool used to create the resource. If history is "
|
||||
"present in the metadata, this value should be equivalent to that of "
|
||||
"xmpMM:History's softwareAgent property." },
|
||||
{ "Identifier", "Identifier", "bag Text", xmpText, xmpExternal, "An unordered array of text strings that unambiguously identify the resource within "
|
||||
{ "Identifier", "Identifier", "bag Text", xmpArray, xmpExternal, "An unordered array of text strings that unambiguously identify the resource within "
|
||||
"a given context. An array item may be qualified with xmpidq:Scheme to denote the "
|
||||
"formal identification system to which that identifier conforms. Note: The "
|
||||
"dc:identifier property is not used because it lacks a defined scheme qualifier and "
|
||||
@ -142,7 +142,7 @@ namespace Exiv2 {
|
||||
"is not necessarily the same as the file's system modification date because it is "
|
||||
"set before the file is saved." },
|
||||
{ "Nickname", "Nickname", "Text", xmpText, xmpExternal, "A short informal name for the resource." },
|
||||
{ "Rating", "Rating", "Closed Choice of Integer", signedLong, xmpExternal, "A number that indicates a document's status relative to other documents, "
|
||||
{ "Rating", "Rating", "Closed Choice of Integer", xmpText, xmpExternal, "A number that indicates a document's status relative to other documents, "
|
||||
"used to organize documents in a file browser. Values are user-defined within an "
|
||||
"application-defined range." },
|
||||
{ "Thumbnails", "Thumbnails", "alt Thumbnail", undefined, xmpInternal, "An alternative array of thumbnail images for a file, which can differ in "
|
||||
@ -154,8 +154,8 @@ namespace Exiv2 {
|
||||
extern const XmpPropertyInfo xmpXmpRightsInfo[] = {
|
||||
{ "Certificate", "Certificate", "URL", xmpText, xmpExternal, "Online rights management certificate." },
|
||||
{ "Marked", "Marked", "Boolean", xmpText, xmpExternal, "Indicates that this is a rights-managed resource." },
|
||||
{ "Owner", "Owner", "bag ProperName", xmpText, xmpExternal, "An unordered array specifying the legal owner(s) of a resource." },
|
||||
{ "UsageTerms", "UsageTerms", "Lang Alt", xmpText, xmpExternal, "Text instructions on how a resource can be legally used." },
|
||||
{ "Owner", "Owner", "bag ProperName", xmpArray, xmpExternal, "An unordered array specifying the legal owner(s) of a resource." },
|
||||
{ "UsageTerms", "UsageTerms", "Lang Alt", langAlt, xmpExternal, "Text instructions on how a resource can be legally used." },
|
||||
{ "WebStatement", "WebStatement", "URL", xmpText, xmpExternal, "The location of a web page describing the owner and/or rights statement for this resource." },
|
||||
// End of list marker
|
||||
{ 0, 0, 0, invalidTypeId, xmpInternal, 0 }
|
||||
@ -205,7 +205,7 @@ namespace Exiv2 {
|
||||
{ "LastURL", "LastURL", "URL", xmpText, xmpInternal, "Deprecated for privacy protection." },
|
||||
{ "RenditionOf", "RenditionOf", "ResourceRef", xmpText, xmpInternal, "Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of which this is "
|
||||
"a rendition." },
|
||||
{ "SaveID", "SaveID", "Integer", signedLong, xmpInternal, "Deprecated. Previously used only to support the xmpMM:LastURL property." },
|
||||
{ "SaveID", "SaveID", "Integer", xmpText, xmpInternal, "Deprecated. Previously used only to support the xmpMM:LastURL property." },
|
||||
// End of list marker
|
||||
{ 0, 0, 0, invalidTypeId, xmpInternal, 0 }
|
||||
};
|
||||
@ -221,10 +221,10 @@ namespace Exiv2 {
|
||||
|
||||
extern const XmpPropertyInfo xmpXmpTPgInfo[] = {
|
||||
{ "MaxPageSize", "MaxPageSize", "Dimensions", xmpText, xmpInternal, "The size of the largest page in the document (including any in contained documents)." },
|
||||
{ "NPages", "NPages", "Integer", unsignedLong, xmpInternal, "The number of pages in the document (including any in contained documents)." },
|
||||
{ "NPages", "NPages", "Integer", xmpText, xmpInternal, "The number of pages in the document (including any in contained documents)." },
|
||||
{ "Fonts", "Fonts", "bag Font", xmpText, xmpInternal, "An unordered array of fonts that are used in the document (including any in contained documents)." },
|
||||
{ "Colorants", "Colorants", "seq Colorant", xmpText, xmpInternal, "An ordered array of colorants (swatches) that are used in the document (including any in contained documents)." },
|
||||
{ "PlateNames", "PlateNames", "seq Text", xmpText, xmpInternal, "An ordered array of plate names that are needed to print the document (including any in contained documents)." },
|
||||
{ "PlateNames", "PlateNames", "seq Text", xmpArray, xmpInternal, "An ordered array of plate names that are needed to print the document (including any in contained documents)." },
|
||||
// End of list marker
|
||||
{ 0, 0, 0, invalidTypeId, xmpInternal, 0 }
|
||||
};
|
||||
@ -233,7 +233,7 @@ namespace Exiv2 {
|
||||
{ "projectRef", "projectRef", "ProjectLink", xmpText, xmpInternal, "A reference to the project that created this file." },
|
||||
{ "videoFrameRate", "videoFrameRate", "open Choice of Text", xmpText, xmpInternal, "The video frame rate. One of: 24, NTSC, PAL." },
|
||||
{ "videoFrameSize", "videoFrameSize", "Dimensions", xmpText, xmpInternal, "The frame size. For example: w:720, h: 480, unit:pixels" },
|
||||
{ "videoPixelAspectRatio", "videoPixelAspectRatio", "Rational", unsignedRational, xmpInternal, "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" },
|
||||
{ "videoPixelAspectRatio", "videoPixelAspectRatio", "Rational", xmpText, xmpInternal, "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" },
|
||||
{ "videoPixelDepth", "videoPixelDepth", "closed Choice of Text", xmpText, xmpInternal, "The size in bits of each color component of a pixel. Standard Windows 32-bit "
|
||||
"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." },
|
||||
{ "videoColorSpace", "videoColorSpace", "closed Choice of Text", xmpText, xmpInternal, "The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), "
|
||||
@ -246,13 +246,13 @@ namespace Exiv2 {
|
||||
{ "videoFieldOrder", "videoFieldOrder", "closed Choice of Text", xmpText, xmpInternal, "The field order for video. One of: Upper, Lower, Progressive." },
|
||||
{ "pullDown", "pullDown", "closed Choice of Text", xmpText, xmpInternal, "The sampling phase of film to be converted to video (pull-down). One of: "
|
||||
"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, WWWSS_24p, WWSSW_24p." },
|
||||
{ "audioSampleRate", "audioSampleRate", "Integer", unsignedLong, xmpInternal, "The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." },
|
||||
{ "audioSampleRate", "audioSampleRate", "Integer", xmpText, xmpInternal, "The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." },
|
||||
{ "audioSampleType", "audioSampleType", "closed Choice of Text", xmpText, xmpInternal, "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." },
|
||||
{ "audioChannelType", "audioChannelType", "closed Choice of Text", xmpText, xmpInternal, "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." },
|
||||
{ "audioCompressor", "audioCompressor", "Text", xmpText, xmpInternal, "The audio compression used. For example, MP3." },
|
||||
{ "speakerPlacement", "speakerPlacement", "Text", xmpText, xmpExternal, "A description of the speaker angles from center front in degrees. For example: "
|
||||
"\"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = -110, Right Surround = 110\"" },
|
||||
{ "fileDataRate", "fileDataRate", "Rational", unsignedRational, xmpInternal, "The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/sec" },
|
||||
{ "fileDataRate", "fileDataRate", "Rational", xmpText, xmpInternal, "The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/sec" },
|
||||
{ "tapeName", "tapeName", "Text", xmpText, xmpExternal, "The name of the tape from which the clip was captured, as set during the capture process." },
|
||||
{ "altTapeName", "altTapeName", "Text", xmpText, xmpExternal, "An alternative tape name, set via the project window or timecode dialog in Premiere. "
|
||||
"If an alternative name has been set and has not been reverted, that name is displayed." },
|
||||
@ -274,7 +274,7 @@ namespace Exiv2 {
|
||||
{ "metadataModDate", "metadataModDate", "Date", xmpText, xmpInternal, "The date and time when the metadata was last modified." },
|
||||
{ "artist", "artist", "Text", xmpText, xmpExternal, "The name of the artist or artists." },
|
||||
{ "album", "album", "Text", xmpText, xmpExternal, "The name of the album." },
|
||||
{ "trackNumber", "trackNumber", "Integer", unsignedShort, xmpExternal, "A numeric value indicating the order of the audio file within its original recording." },
|
||||
{ "trackNumber", "trackNumber", "Integer", xmpText, xmpExternal, "A numeric value indicating the order of the audio file within its original recording." },
|
||||
{ "genre", "genre", "Text", xmpText, xmpExternal, "The name of the genre." },
|
||||
{ "copyright", "copyright", "Text", xmpText, xmpExternal, "The copyright information." },
|
||||
{ "releaseDate", "releaseDate", "Date", xmpText, xmpExternal, "The date the title was released." },
|
||||
@ -322,7 +322,7 @@ namespace Exiv2 {
|
||||
{ "Instructions", "Instructions", "Text", xmpText, xmpExternal, "Special instructions." },
|
||||
{ "Source", "Source", "Text", xmpText, xmpExternal, "Source." },
|
||||
{ "State", "State", "Text", xmpText, xmpExternal, "Province/state." },
|
||||
{ "SupplementalCategories", "SupplementalCategories", "bag Text", xmpText, xmpExternal, "Supplemental category." },
|
||||
{ "SupplementalCategories", "SupplementalCategories", "bag Text", xmpArray, xmpExternal, "Supplemental category." },
|
||||
{ "TransmissionReference", "TransmissionReference", "Text", xmpText, xmpExternal, "Original transmission reference." },
|
||||
{ "Urgency", "Urgency", "Integer", xmpText, xmpExternal, "Urgency. Valid range is 1-8." },
|
||||
// End of list marker
|
||||
@ -341,14 +341,14 @@ namespace Exiv2 {
|
||||
{ "AutoContrast", "AutoContrast", "Boolean", xmpText, xmpExternal, "When true, \"Contrast\" is automatically adjusted." },
|
||||
{ "AutoExposure", "AutoExposure", "Boolean", xmpText, xmpExternal, "When true, \"Exposure\" is automatically adjusted." },
|
||||
{ "AutoShadows", "AutoShadows", "Boolean", xmpText, xmpExternal, "When true,\"Shadows\" is automatically adjusted." },
|
||||
{ "BlueHue", "BlueHue", "Integer", signedShort, xmpExternal, "\"Blue Hue\" setting. Range -100 to 100." },
|
||||
{ "BlueSaturation", "BlueSaturation", "Integer", signedShort, xmpExternal, "\"Blue Saturation\" setting. Range -100 to +100." },
|
||||
{ "Brightness", "Brightness", "Integer", unsignedShort, xmpExternal, "\"Brightness\" setting. Range 0 to +150." },
|
||||
{ "BlueHue", "BlueHue", "Integer", xmpText, xmpExternal, "\"Blue Hue\" setting. Range -100 to 100." },
|
||||
{ "BlueSaturation", "BlueSaturation", "Integer", xmpText, xmpExternal, "\"Blue Saturation\" setting. Range -100 to +100." },
|
||||
{ "Brightness", "Brightness", "Integer", xmpText, xmpExternal, "\"Brightness\" setting. Range 0 to +150." },
|
||||
{ "CameraProfile", "CameraProfile", "Text", xmpText, xmpExternal, "\"Camera Profile\" setting." },
|
||||
{ "ChromaticAberrationB", "ChromaticAberrationB", "Integer", signedShort, xmpExternal, "\"Chomatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." },
|
||||
{ "ChromaticAberrationR", "ChromaticAberrationR", "Integer", signedShort, xmpExternal, "\"Chomatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." },
|
||||
{ "ColorNoiseReduction", "ColorNoiseReduction", "Integer", unsignedShort, xmpExternal, "\"Color Noise Reducton\" setting. Range 0 to +100." },
|
||||
{ "Contrast", "Contrast", "Integer", signedShort, xmpExternal, "\"Contrast\" setting. Range -50 to +100." },
|
||||
{ "ChromaticAberrationB", "ChromaticAberrationB", "Integer", xmpText, xmpExternal, "\"Chomatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." },
|
||||
{ "ChromaticAberrationR", "ChromaticAberrationR", "Integer", xmpText, xmpExternal, "\"Chomatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." },
|
||||
{ "ColorNoiseReduction", "ColorNoiseReduction", "Integer", xmpText, xmpExternal, "\"Color Noise Reducton\" setting. Range 0 to +100." },
|
||||
{ "Contrast", "Contrast", "Integer", xmpText, xmpExternal, "\"Contrast\" setting. Range -50 to +100." },
|
||||
{ "CropTop", "CropTop", "Real", xmpText, xmpExternal, "When HasCrop is true, top of crop rectangle" },
|
||||
{ "CropLeft", "CropLeft", "Real", xmpText, xmpExternal, "When HasCrop is true, left of crop rectangle." },
|
||||
{ "CropBottom", "CropBottom", "Real", xmpText, xmpExternal, "When HasCrop is true, bottom of crop rectangle." },
|
||||
@ -356,28 +356,28 @@ namespace Exiv2 {
|
||||
{ "CropAngle", "CropAngle", "Real", xmpText, xmpExternal, "When HasCrop is true, angle of crop rectangle." },
|
||||
{ "CropWidth", "CropWidth", "Real", xmpText, xmpExternal, "Width of resulting cropped image in CropUnits units." },
|
||||
{ "CropHeight", "CropHeight", "Real", xmpText, xmpExternal, "Height of resulting cropped image in CropUnits units." },
|
||||
{ "CropUnits", "CropUnits", "Integer", unsignedShort, xmpExternal, "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" },
|
||||
{ "CropUnits", "CropUnits", "Integer", xmpText, xmpExternal, "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" },
|
||||
{ "Exposure", "Exposure", "Real", xmpText, xmpExternal, "\"Exposure\" setting. Range -4.0 to +4.0." },
|
||||
{ "GreenHue", "GreenHue", "Integer", signedShort, xmpExternal, "\"Green Hue\" setting. Range -100 to +100." },
|
||||
{ "GreenSaturation", "GreenSaturation", "Integer", signedShort, xmpExternal, "\"Green Saturation\" setting. Range -100 to +100." },
|
||||
{ "GreenHue", "GreenHue", "Integer", xmpText, xmpExternal, "\"Green Hue\" setting. Range -100 to +100." },
|
||||
{ "GreenSaturation", "GreenSaturation", "Integer", xmpText, xmpExternal, "\"Green Saturation\" setting. Range -100 to +100." },
|
||||
{ "HasCrop", "HasCrop", "Boolean", xmpText, xmpExternal, "When true, image has a cropping rectangle." },
|
||||
{ "HasSettings", "HasSettings", "Boolean", xmpText, xmpExternal, "When true, non-default camera raw settings." },
|
||||
{ "LuminanceSmoothing", "LuminanceSmoothing", "Integer", unsignedShort, xmpExternal, "\"Luminance Smoothing\" setting. Range 0 to +100." },
|
||||
{ "LuminanceSmoothing", "LuminanceSmoothing", "Integer", xmpText, xmpExternal, "\"Luminance Smoothing\" setting. Range 0 to +100." },
|
||||
{ "RawFileName", "RawFileName", "Text", xmpText, xmpInternal, "File name fo raw file (not a complete path)." },
|
||||
{ "RedHue", "RedHue", "Integer", signedShort, xmpExternal, "\"Red Hue\" setting. Range -100 to +100." },
|
||||
{ "RedSaturation", "RedSaturation", "Integer", signedShort, xmpExternal, "\"Red Saturation\" setting. Range -100 to +100." },
|
||||
{ "Saturation", "Saturation", "Integer", signedShort, xmpExternal, "\"Saturation\" setting. Range -100 to +100." },
|
||||
{ "Shadows", "Shadows", "Integer", unsignedShort, xmpExternal, "\"Shadows\" setting. Range 0 to +100." },
|
||||
{ "ShadowTint", "ShadowTint", "Integer", signedShort, xmpExternal, "\"Shadow Tint\" setting. Range -100 to +100." },
|
||||
{ "Sharpness", "Sharpness", "Integer", unsignedShort, xmpExternal, "\"Sharpness\" setting. Range 0 to +100." },
|
||||
{ "Temperature", "Temperature", "Integer", unsignedShort, xmpExternal, "\"Temperature\" setting. Range 2000 to 50000." },
|
||||
{ "Tint", "Tint", "Integer", signedShort, xmpExternal, "\"Tint\" setting. Range -150 to +150." },
|
||||
{ "RedHue", "RedHue", "Integer", xmpText, xmpExternal, "\"Red Hue\" setting. Range -100 to +100." },
|
||||
{ "RedSaturation", "RedSaturation", "Integer", xmpText, xmpExternal, "\"Red Saturation\" setting. Range -100 to +100." },
|
||||
{ "Saturation", "Saturation", "Integer", xmpText, xmpExternal, "\"Saturation\" setting. Range -100 to +100." },
|
||||
{ "Shadows", "Shadows", "Integer", xmpText, xmpExternal, "\"Shadows\" setting. Range 0 to +100." },
|
||||
{ "ShadowTint", "ShadowTint", "Integer", xmpText, xmpExternal, "\"Shadow Tint\" setting. Range -100 to +100." },
|
||||
{ "Sharpness", "Sharpness", "Integer", xmpText, xmpExternal, "\"Sharpness\" setting. Range 0 to +100." },
|
||||
{ "Temperature", "Temperature", "Integer", xmpText, xmpExternal, "\"Temperature\" setting. Range 2000 to 50000." },
|
||||
{ "Tint", "Tint", "Integer", xmpText, xmpExternal, "\"Tint\" setting. Range -150 to +150." },
|
||||
{ "ToneCurve", "ToneCurve", "Seq of points (Integer, Integer)", xmpText, xmpExternal, "Array of points (Integer, Integer) defining a \"Tone Curve\"." },
|
||||
{ "ToneCurveName", "ToneCurveName", "Choice Text", xmpText, xmpInternal, "The name of the Tone Curve described by ToneCurve. One of: Linear, Medium Contrast, "
|
||||
"Strong Contrast, Custom or a user-defined preset name." },
|
||||
{ "Version", "Version", "Text", xmpText, xmpInternal, "Version of Camera Raw plugin." },
|
||||
{ "VignetteAmount", "VignetteAmount", "Integer", signedShort, xmpExternal, "\"Vignetting Amount\" setting. Range -100 to +100." },
|
||||
{ "VignetteMidpoint", "VignetteMidpoint", "Integer", unsignedShort, xmpExternal, "\"Vignetting Midpoint\" setting. Range 0 to +100." },
|
||||
{ "VignetteAmount", "VignetteAmount", "Integer", xmpText, xmpExternal, "\"Vignetting Amount\" setting. Range -100 to +100." },
|
||||
{ "VignetteMidpoint", "VignetteMidpoint", "Integer", xmpText, xmpExternal, "\"Vignetting Midpoint\" setting. Range 0 to +100." },
|
||||
{ "WhiteBalance", "WhiteBalance", "Closed Choice Text", xmpText, xmpExternal, "\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, Tungsten, "
|
||||
"Fluorescent, Flash, Custom" },
|
||||
// End of list marker
|
||||
@ -385,12 +385,12 @@ namespace Exiv2 {
|
||||
};
|
||||
|
||||
extern const XmpPropertyInfo xmpTiffInfo[] = {
|
||||
{ "ImageWidth", "ImageWidth", "Integer", unsignedLong, xmpInternal, "TIFF tag 256, 0x100. Image width in pixels." },
|
||||
{ "ImageLength", "ImageLength", "Integer", unsignedLong, xmpInternal, "TIFF tag 257, 0x101. Image height in pixels." },
|
||||
{ "BitsPerSample", "BitsPerSample", "seq Integer", unsignedShort, xmpInternal, "TIFF tag 258, 0x102. Number of bits per component in each channel." },
|
||||
{ "Compression", "Compression", "Closed Choice of Integer", unsignedShort, xmpInternal, "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." },
|
||||
{ "PhotometricInterpretation", "PhotometricInterpretation", "Closed Choice of Integer", unsignedShort, xmpInternal, "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." },
|
||||
{ "Orientation", "Orientation", "Closed Choice of Integer", unsignedShort, xmpInternal, "TIFF tag 274, 0x112. Orientation:"
|
||||
{ "ImageWidth", "ImageWidth", "Integer", xmpText, xmpInternal, "TIFF tag 256, 0x100. Image width in pixels." },
|
||||
{ "ImageLength", "ImageLength", "Integer", xmpText, xmpInternal, "TIFF tag 257, 0x101. Image height in pixels." },
|
||||
{ "BitsPerSample", "BitsPerSample", "seq Integer", xmpArray, xmpInternal, "TIFF tag 258, 0x102. Number of bits per component in each channel." },
|
||||
{ "Compression", "Compression", "Closed Choice of Integer", xmpText, xmpInternal, "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." },
|
||||
{ "PhotometricInterpretation", "PhotometricInterpretation", "Closed Choice of Integer", xmpText, xmpInternal, "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." },
|
||||
{ "Orientation", "Orientation", "Closed Choice of Integer", xmpText, xmpInternal, "TIFF tag 274, 0x112. Orientation:"
|
||||
"1 = 0th row at top, 0th column at left "
|
||||
"2 = 0th row at top, 0th column at right "
|
||||
"3 = 0th row at bottom, 0th column at right "
|
||||
@ -399,36 +399,36 @@ namespace Exiv2 {
|
||||
"6 = 0th row at right, 0th column at top "
|
||||
"7 = 0th row at right, 0th column at bottom "
|
||||
"8 = 0th row at left, 0th column at bottom" },
|
||||
{ "SamplesPerPixel", "SamplesPerPixel", "Integer", unsignedShort, xmpInternal, "TIFF tag 277, 0x115. Number of components per pixel." },
|
||||
{ "PlanarConfiguration", "PlanarConfiguration", "Closed Choice of Integer", unsignedShort, xmpInternal, "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." },
|
||||
{ "YCbCrSubSampling", "YCbCrSubSampling", "Closed Choice of seq Integer", unsignedShort, xmpInternal, "TIFF tag 530, 0x212. Sampling ratio of chrominance "
|
||||
{ "SamplesPerPixel", "SamplesPerPixel", "Integer", xmpText, xmpInternal, "TIFF tag 277, 0x115. Number of components per pixel." },
|
||||
{ "PlanarConfiguration", "PlanarConfiguration", "Closed Choice of Integer", xmpText, xmpInternal, "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." },
|
||||
{ "YCbCrSubSampling", "YCbCrSubSampling", "Closed Choice of seq Integer", xmpArray, xmpInternal, "TIFF tag 530, 0x212. Sampling ratio of chrominance "
|
||||
"components: [2, 1] = YCbCr4:2:2; [2, 2] = YCbCr4:2:0" },
|
||||
{ "YCbCrPositioning", "YCbCrPositioning", "Closed Choice of Integer", unsignedShort, xmpInternal, "TIFF tag 531, 0x213. Position of chrominance vs. "
|
||||
{ "YCbCrPositioning", "YCbCrPositioning", "Closed Choice of Integer", xmpText, xmpInternal, "TIFF tag 531, 0x213. Position of chrominance vs. "
|
||||
"luminance components: 1 = centered; 2 = co-sited." },
|
||||
{ "XResolution", "XResolution", "Rational", unsignedRational, xmpInternal, "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." },
|
||||
{ "YResolution", "YResolution", "Rational", unsignedRational, xmpInternal, "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." },
|
||||
{ "ResolutionUnit", "ResolutionUnit", "Closed Choice of Integer", unsignedShort, xmpInternal, "TIFF tag 296, 0x128. Unit used for XResolution and "
|
||||
{ "XResolution", "XResolution", "Rational", xmpText, xmpInternal, "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." },
|
||||
{ "YResolution", "YResolution", "Rational", xmpText, xmpInternal, "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." },
|
||||
{ "ResolutionUnit", "ResolutionUnit", "Closed Choice of Integer", xmpText, xmpInternal, "TIFF tag 296, 0x128. Unit used for XResolution and "
|
||||
"YResolution. Value is one of: 2 = inches; 3 = centimeters." },
|
||||
{ "TransferFunction", "TransferFunction", "seq Integer", unsignedShort, xmpInternal, "TIFF tag 301, 0x12D. Transfer function for image "
|
||||
{ "TransferFunction", "TransferFunction", "seq Integer", xmpArray, xmpInternal, "TIFF tag 301, 0x12D. Transfer function for image "
|
||||
"described in tabular style with 3 * 256 entries." },
|
||||
{ "WhitePoint", "WhitePoint", "seq Rational", unsignedRational, xmpInternal, "TIFF tag 318, 0x13E. Chromaticity of white point." },
|
||||
{ "PrimaryChromaticities", "PrimaryChromaticities", "seq Rational", unsignedRational, xmpInternal, "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." },
|
||||
{ "YCbCrCoefficients", "YCbCrCoefficients", "seq Rational", unsignedRational, xmpInternal, "TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." },
|
||||
{ "ReferenceBlackWhite", "ReferenceBlackWhite", "seq Rational", unsignedRational, xmpInternal, "TIFF tag 532, 0x214. Reference black and white point values." },
|
||||
{ "WhitePoint", "WhitePoint", "seq Rational", xmpArray, xmpInternal, "TIFF tag 318, 0x13E. Chromaticity of white point." },
|
||||
{ "PrimaryChromaticities", "PrimaryChromaticities", "seq Rational", xmpArray, xmpInternal, "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." },
|
||||
{ "YCbCrCoefficients", "YCbCrCoefficients", "seq Rational", xmpArray, xmpInternal, "TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." },
|
||||
{ "ReferenceBlackWhite", "ReferenceBlackWhite", "seq Rational", xmpArray, xmpInternal, "TIFF tag 532, 0x214. Reference black and white point values." },
|
||||
{ "DateTime", "DateTime", "Date", date, xmpInternal, "TIFF tag 306, 0x132 (primary) and EXIF tag 37520, "
|
||||
"0x9290 (subseconds). Date and time of image creation "
|
||||
"(no time zone in EXIF), stored in ISO 8601 format, not "
|
||||
"the original EXIF format. This property includes the "
|
||||
"value for the EXIF SubSecTime attribute. "
|
||||
"NOTE: This property is stored in XMP as xmp:ModifyDate." },
|
||||
{ "ImageDescription", "ImageDescription", "Lang Alt", xmpText, xmpExternal, "TIFF tag 270, 0x10E. Description of the image. Note: This property is stored in XMP as dc:description." },
|
||||
{ "ImageDescription", "ImageDescription", "Lang Alt", langAlt, xmpExternal, "TIFF tag 270, 0x10E. Description of the image. Note: This property is stored in XMP as dc:description." },
|
||||
{ "Make", "Make", "ProperName", xmpText, xmpInternal, "TIFF tag 271, 0x10F. Manufacturer of recording equipment." },
|
||||
{ "Model", "Model", "ProperName", xmpText, xmpInternal, "TIFF tag 272, 0x110. Model name or number of equipment." },
|
||||
{ "Software", "Software", "AgentName", xmpText, xmpInternal, "TIFF tag 305, 0x131. Software or firmware used to generate image. "
|
||||
"Note: This property is stored in XMP as xmp:CreatorTool. " },
|
||||
{ "Artist", "Artist", "ProperName", xmpText, xmpExternal, "TIFF tag 315, 0x13B. Camera owner, photographer or image creator. "
|
||||
"Note: This property is stored in XMP as the first item in the dc:creator array." },
|
||||
{ "Copyright", "Copyright", "Lang Alt", xmpText, xmpExternal, "TIFF tag 33432, 0x8298. Copyright information. "
|
||||
{ "Copyright", "Copyright", "Lang Alt", langAlt, xmpExternal, "TIFF tag 33432, 0x8298. Copyright information. "
|
||||
"Note: This property is stored in XMP as dc:rights." },
|
||||
// End of list marker
|
||||
{ 0, 0, 0, invalidTypeId, xmpInternal, 0 }
|
||||
@ -633,90 +633,90 @@ namespace Exiv2 {
|
||||
extern const XmpPropertyInfo xmpExifInfo[] = {
|
||||
{ "ExifVersion", "ExifVersion", "Closed Choice of Text", xmpText, xmpInternal, "EXIF tag 36864, 0x9000. EXIF version number." },
|
||||
{ "FlashpixVersion", "FlashpixVersion", "Closed Choice of Text", xmpText, xmpInternal, "EXIF tag 40960, 0xA000. Version of FlashPix." },
|
||||
{ "ColorSpace", "ColorSpace", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 40961, 0xA001. Color space information" },
|
||||
{ "ComponentsConfiguration", "ComponentsConfiguration", "Closed Choice of seq Integer", unsignedShort, xmpInternal, "EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB compressed data), 1 2 3 0 (other cases)." },
|
||||
{ "CompressedBitsPerPixel", "CompressedBitsPerPixel", "Rational", unsignedRational, xmpInternal, "EXIF tag 37122, 0x9102. Compression mode used for a compressed image is indicated in unit bits per pixel." },
|
||||
{ "PixelXDimension", "PixelXDimension", "Integer", unsignedLong, xmpInternal, "EXIF tag 40962, 0xA002. Valid image width, in pixels." },
|
||||
{ "PixelYDimension", "PixelYDimension", "Integer", unsignedLong, xmpInternal, "EXIF tag 40963, 0xA003. Valid image height, in pixels." },
|
||||
{ "UserComment", "UserComment", "Lang Alt", xmpText, xmpExternal, "EXIF tag 37510, 0x9286. Comments from user." },
|
||||
{ "ColorSpace", "ColorSpace", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 40961, 0xA001. Color space information" },
|
||||
{ "ComponentsConfiguration", "ComponentsConfiguration", "Closed Choice of seq Integer", xmpArray, xmpInternal, "EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB compressed data), 1 2 3 0 (other cases)." },
|
||||
{ "CompressedBitsPerPixel", "CompressedBitsPerPixel", "Rational", xmpText, xmpInternal, "EXIF tag 37122, 0x9102. Compression mode used for a compressed image is indicated in unit bits per pixel." },
|
||||
{ "PixelXDimension", "PixelXDimension", "Integer", xmpText, xmpInternal, "EXIF tag 40962, 0xA002. Valid image width, in pixels." },
|
||||
{ "PixelYDimension", "PixelYDimension", "Integer", xmpText, xmpInternal, "EXIF tag 40963, 0xA003. Valid image height, in pixels." },
|
||||
{ "UserComment", "UserComment", "Lang Alt", langAlt, xmpExternal, "EXIF tag 37510, 0x9286. Comments from user." },
|
||||
{ "RelatedSoundFile", "RelatedSoundFile", "Text", xmpText, xmpInternal, "EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." },
|
||||
{ "DateTimeOriginal", "DateTimeOriginal", "Date", xmpText, xmpInternal, "EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and time when original image was generated, in ISO 8601 format. Includes the EXIF SubSecTimeOriginal data." },
|
||||
{ "DateTimeDigitized", "DateTimeDigitized", "Date", xmpText, xmpInternal, "EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and time when "
|
||||
"image was stored as digital data, can be the same as DateTimeOriginal if originally "
|
||||
"stored in digital form. Stored in ISO 8601 format. Includes the EXIF SubSecTimeDigitized data." },
|
||||
{ "ExposureTime", "ExposureTime", "Rational", unsignedRational, xmpInternal, "EXIF tag 33434, 0x829A. Exposure time in seconds." },
|
||||
{ "FNumber", "FNumber", "Rational", unsignedRational, xmpInternal, "EXIF tag 33437, 0x829D. F number." },
|
||||
{ "ExposureProgram", "ExposureProgram", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 34850, 0x8822. Class of program used for exposure." },
|
||||
{ "ExposureTime", "ExposureTime", "Rational", xmpText, xmpInternal, "EXIF tag 33434, 0x829A. Exposure time in seconds." },
|
||||
{ "FNumber", "FNumber", "Rational", xmpText, xmpInternal, "EXIF tag 33437, 0x829D. F number." },
|
||||
{ "ExposureProgram", "ExposureProgram", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 34850, 0x8822. Class of program used for exposure." },
|
||||
{ "SpectralSensitivity", "SpectralSensitivity", "Text", xmpText, xmpInternal, "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." },
|
||||
{ "ISOSpeedRatings", "ISOSpeedRatings", "seq Integer", unsignedShort, xmpInternal, "EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as specified in ISO 12232." },
|
||||
{ "ISOSpeedRatings", "ISOSpeedRatings", "seq Integer", xmpArray, xmpInternal, "EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as specified in ISO 12232." },
|
||||
{ "OECF", "OECF", "OECF/SFR", xmpText, xmpInternal, "EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in ISO 14524." },
|
||||
{ "ShutterSpeedValue", "ShutterSpeedValue", "Rational", signedRational, xmpInternal, "EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF specification." },
|
||||
{ "ApertureValue", "ApertureValue", "Rational", unsignedRational, xmpInternal, "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." },
|
||||
{ "BrightnessValue", "BrightnessValue", "Rational", signedRational, xmpInternal, "EXIF tag 37379, 0x9203. Brightness, unit is APEX." },
|
||||
{ "ExposureBiasValue", "ExposureBiasValue", "Rational", signedRational, xmpInternal, "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." },
|
||||
{ "MaxApertureValue", "MaxApertureValue", "Rational", unsignedRational, xmpInternal, "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." },
|
||||
{ "SubjectDistance", "SubjectDistance", "Rational", unsignedRational, xmpInternal, "EXIF tag 37382, 0x9206. Distance to subject, in meters." },
|
||||
{ "MeteringMode", "MeteringMode", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 37383, 0x9207. Metering mode." },
|
||||
{ "LightSource", "LightSource", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 37384, 0x9208. Light source." },
|
||||
{ "ShutterSpeedValue", "ShutterSpeedValue", "Rational", xmpText, xmpInternal, "EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF specification." },
|
||||
{ "ApertureValue", "ApertureValue", "Rational", xmpText, xmpInternal, "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." },
|
||||
{ "BrightnessValue", "BrightnessValue", "Rational", xmpText, xmpInternal, "EXIF tag 37379, 0x9203. Brightness, unit is APEX." },
|
||||
{ "ExposureBiasValue", "ExposureBiasValue", "Rational", xmpText, xmpInternal, "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." },
|
||||
{ "MaxApertureValue", "MaxApertureValue", "Rational", xmpText, xmpInternal, "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." },
|
||||
{ "SubjectDistance", "SubjectDistance", "Rational", xmpText, xmpInternal, "EXIF tag 37382, 0x9206. Distance to subject, in meters." },
|
||||
{ "MeteringMode", "MeteringMode", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 37383, 0x9207. Metering mode." },
|
||||
{ "LightSource", "LightSource", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 37384, 0x9208. Light source." },
|
||||
{ "Flash", "Flash", "Flash", xmpText, xmpInternal, "EXIF tag 37385, 0x9209. Strobe light (flash) source data." },
|
||||
{ "FocalLength", "FocalLength", "Rational", unsignedRational, xmpInternal, "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." },
|
||||
{ "SubjectArea", "SubjectArea", "seq Integer", unsignedShort, xmpInternal, "EXIF tag 37396, 0x9214. The location and area of the main subject in the overall scene." },
|
||||
{ "FlashEnergy", "FlashEnergy", "Rational", unsignedRational, xmpInternal, "EXIF tag 41483, 0xA20B. Strobe energy during image capture." },
|
||||
{ "FocalLength", "FocalLength", "Rational", xmpText, xmpInternal, "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." },
|
||||
{ "SubjectArea", "SubjectArea", "seq Integer", xmpArray, xmpInternal, "EXIF tag 37396, 0x9214. The location and area of the main subject in the overall scene." },
|
||||
{ "FlashEnergy", "FlashEnergy", "Rational", xmpText, xmpInternal, "EXIF tag 41483, 0xA20B. Strobe energy during image capture." },
|
||||
{ "SpatialFrequencyResponse", "SpatialFrequencyResponse", "OECF/SFR", xmpText, xmpInternal, "EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values as specified in ISO 12233." },
|
||||
{ "FocalPlaneXResolution", "FocalPlaneXResolution", "Rational", unsignedRational, xmpInternal, "EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per unit." },
|
||||
{ "FocalPlaneYResolution", "FocalPlaneYResolution", "Rational", unsignedRational, xmpInternal, "EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per unit." },
|
||||
{ "FocalPlaneResolutionUnit", "FocalPlaneResolutionUnit", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and FocalPlaneYResolution." },
|
||||
{ "SubjectLocation", "SubjectLocation", "seq Integer", unsignedShort, xmpInternal, "EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first value is the "
|
||||
{ "FocalPlaneXResolution", "FocalPlaneXResolution", "Rational", xmpText, xmpInternal, "EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per unit." },
|
||||
{ "FocalPlaneYResolution", "FocalPlaneYResolution", "Rational", xmpText, xmpInternal, "EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per unit." },
|
||||
{ "FocalPlaneResolutionUnit", "FocalPlaneResolutionUnit", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and FocalPlaneYResolution." },
|
||||
{ "SubjectLocation", "SubjectLocation", "seq Integer", xmpArray, xmpInternal, "EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first value is the "
|
||||
"horizontal pixel and the second value is the vertical pixel at which the main subject appears." },
|
||||
{ "ExposureIndex", "ExposureIndex", "Rational", unsignedRational, xmpInternal, "EXIF tag 41493, 0xA215. Exposure index of input device." },
|
||||
{ "SensingMethod", "SensingMethod", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41495, 0xA217. Image sensor type on input device." },
|
||||
{ "FileSource", "FileSource", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41728, 0xA300. Indicates image source." },
|
||||
{ "SceneType", "SceneType", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41729, 0xA301. Indicates the type of scene." },
|
||||
{ "ExposureIndex", "ExposureIndex", "Rational", xmpText, xmpInternal, "EXIF tag 41493, 0xA215. Exposure index of input device." },
|
||||
{ "SensingMethod", "SensingMethod", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41495, 0xA217. Image sensor type on input device." },
|
||||
{ "FileSource", "FileSource", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41728, 0xA300. Indicates image source." },
|
||||
{ "SceneType", "SceneType", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41729, 0xA301. Indicates the type of scene." },
|
||||
{ "CFAPattern", "CFAPattern", "CFAPattern", xmpText, xmpInternal, "EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image sense." },
|
||||
{ "CustomRendered", "CustomRendered", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41985, 0xA401. Indicates the use of special processing on image data." },
|
||||
{ "ExposureMode", "ExposureMode", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was shot." },
|
||||
{ "WhiteBalance", "WhiteBalance", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image was shot." },
|
||||
{ "DigitalZoomRatio", "DigitalZoomRatio", "Rational", unsignedRational, xmpInternal, "EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was shot." },
|
||||
{ "FocalLengthIn35mmFilm", "FocalLengthIn35mmFilm", "Integer", unsignedShort, xmpInternal, "EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a 35mm film "
|
||||
{ "CustomRendered", "CustomRendered", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41985, 0xA401. Indicates the use of special processing on image data." },
|
||||
{ "ExposureMode", "ExposureMode", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was shot." },
|
||||
{ "WhiteBalance", "WhiteBalance", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image was shot." },
|
||||
{ "DigitalZoomRatio", "DigitalZoomRatio", "Rational", xmpText, xmpInternal, "EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was shot." },
|
||||
{ "FocalLengthIn35mmFilm", "FocalLengthIn35mmFilm", "Integer", xmpText, xmpInternal, "EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a 35mm film "
|
||||
"camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the FocalLength tag." },
|
||||
{ "SceneCaptureType", "SceneCaptureType", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." },
|
||||
{ "GainControl", "GainControl", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41991, 0xA407. Indicates the degree of overall image gain adjustment." },
|
||||
{ "Contrast", "Contrast", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41992, 0xA408. Indicates the direction of contrast processing applied by the camera." },
|
||||
{ "Saturation", "Saturation", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41993, 0xA409. Indicates the direction of saturation processing applied by the camera." },
|
||||
{ "Sharpness", "Sharpness", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing applied by the camera." },
|
||||
{ "SceneCaptureType", "SceneCaptureType", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." },
|
||||
{ "GainControl", "GainControl", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41991, 0xA407. Indicates the degree of overall image gain adjustment." },
|
||||
{ "Contrast", "Contrast", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41992, 0xA408. Indicates the direction of contrast processing applied by the camera." },
|
||||
{ "Saturation", "Saturation", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41993, 0xA409. Indicates the direction of saturation processing applied by the camera." },
|
||||
{ "Sharpness", "Sharpness", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing applied by the camera." },
|
||||
{ "DeviceSettingDescription", "DeviceSettingDescription", "DeviceSettings", xmpText, xmpInternal, "EXIF tag 41995, 0xA40B. Indicates information on the picture-taking conditions of a particular camera model." },
|
||||
{ "SubjectDistanceRange", "SubjectDistanceRange", "Closed Choice of Integer", unsignedShort, xmpInternal, "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." },
|
||||
{ "SubjectDistanceRange", "SubjectDistanceRange", "Closed Choice of Integer", xmpText, xmpInternal, "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." },
|
||||
{ "ImageUniqueID", "ImageUniqueID", "Text", xmpText, xmpInternal, "EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is recorded as a 32 "
|
||||
"character ASCII string, equivalent to hexadecimal notation and 128-bit fixed length." },
|
||||
{ "GPSVersionID", "GPSVersionID", "Text", xmpText, xmpInternal, "GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with period separators. The current value is \"2.0.0.0\"." },
|
||||
{ "GPSLatitude", "GPSLatitude", "GPSCoordinate", xmpText, xmpInternal, "GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." },
|
||||
{ "GPSLongitude", "GPSLongitude", "GPSCoordinate", xmpText, xmpInternal, "GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." },
|
||||
{ "GPSAltitudeRef", "GPSAltitudeRef", "Closed Choice of Integer", unsignedByte, xmpInternal, "GPS tag 5, 0x5. Indicates whether the altitude is above or below sea level." },
|
||||
{ "GPSAltitude", "GPSAltitude", "Rational", unsignedRational, xmpInternal, "GPS tag 6, 0x06. Indicates altitude in meters." },
|
||||
{ "GPSTimeStamp", "GPSTimeStamp", "Date", xmpText, xmpInternal, "GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS data, in Coordinated Universal Time. "
|
||||
{ "GPSAltitudeRef", "GPSAltitudeRef", "Closed Choice of Integer", xmpText, xmpInternal, "GPS tag 5, 0x5. Indicates whether the altitude is above or below sea level." },
|
||||
{ "GPSAltitude", "GPSAltitude", "Rational", xmpText, xmpInternal, "GPS tag 6, 0x06. Indicates altitude in meters." },
|
||||
{ "GPSTimeStamp", "GPSTimeStamp", "Date", xmpText, xmpInternal, "GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS data, in Coordinated Universal Time. "
|
||||
"Note: The GPSDateStamp tag is new in EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not present, "
|
||||
"the date component for the XMP should be taken from exif:DateTimeOriginal, or if that is "
|
||||
"also lacking from exif:DateTimeDigitized. If no date is available, do not write exif:GPSTimeStamp to XMP." },
|
||||
{ "GPSSatellites", "GPSSatellites", "Text", xmpText, xmpInternal, "GPS tag 8, 0x08. Satellite information, format is unspecified." },
|
||||
{ "GPSStatus", "GPSStatus", "Closed Choice of Text", xmpText, xmpInternal, "GPS tag 9, 0x09. Status of GPS receiver at image creation time." },
|
||||
{ "GPSMeasureMode", "GPSMeasureMode", "Text", xmpText, xmpInternal, "GPS tag 10, 0x0A. GPS measurement mode, Text type." },
|
||||
{ "GPSDOP", "GPSDOP", "Rational", unsignedRational, xmpInternal, "GPS tag 11, 0x0B. Degree of precision for GPS data." },
|
||||
{ "GPSDOP", "GPSDOP", "Rational", xmpText, xmpInternal, "GPS tag 11, 0x0B. Degree of precision for GPS data." },
|
||||
{ "GPSSpeedRef", "GPSSpeedRef", "Closed Choice of Text", xmpText, xmpInternal, "GPS tag 12, 0x0C. Units used to speed measurement." },
|
||||
{ "GPSSpeed", "GPSSpeed", "Rational", unsignedRational, xmpInternal, "GPS tag 13, 0x0D. Speed of GPS receiver movement." },
|
||||
{ "GPSSpeed", "GPSSpeed", "Rational", xmpText, xmpInternal, "GPS tag 13, 0x0D. Speed of GPS receiver movement." },
|
||||
{ "GPSTrackRef", "GPSTrackRef", "Closed Choice of Text", xmpText, xmpInternal, "GPS tag 14, 0x0E. Reference for movement direction." },
|
||||
{ "GPSTrack", "GPSTrack", "Rational", unsignedRational, xmpInternal, "GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." },
|
||||
{ "GPSTrack", "GPSTrack", "Rational", xmpText, xmpInternal, "GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." },
|
||||
{ "GPSImgDirectionRef", "GPSImgDirectionRef", "Closed Choice of Text", xmpText, xmpInternal, "GPS tag 16, 0x10. Reference for movement direction." },
|
||||
{ "GPSImgDirection", "GPSImgDirection", "Rational", unsignedRational, xmpInternal, "GPS tag 17, 0x11. Direction of image when captured, values range from 0 to 359.99." },
|
||||
{ "GPSImgDirection", "GPSImgDirection", "Rational", xmpText, xmpInternal, "GPS tag 17, 0x11. Direction of image when captured, values range from 0 to 359.99." },
|
||||
{ "GPSMapDatum", "GPSMapDatum", "Text", xmpText, xmpInternal, "GPS tag 18, 0x12. Geodetic survey data." },
|
||||
{ "GPSDestLatitude", "GPSDestLatitude", "GPSCoordinate", xmpText, xmpInternal, "GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates destination latitude." },
|
||||
{ "GPSDestLongitude", "GPSDestLongitude", "GPSCoordinate", xmpText, xmpInternal, "GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination longitude." },
|
||||
{ "GPSDestBearingRef", "GPSDestBearingRef", "Closed Choice of Text", xmpText, xmpInternal, "GPS tag 23, 0x17. Reference for movement direction." },
|
||||
{ "GPSDestBearing", "GPSDestBearing", "Rational", unsignedRational, xmpInternal, "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." },
|
||||
{ "GPSDestBearing", "GPSDestBearing", "Rational", xmpText, xmpInternal, "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." },
|
||||
{ "GPSDestDistanceRef", "GPSDestDistanceRef", "Closed Choice of Text", xmpText, xmpInternal, "GPS tag 25, 0x19. Units used for speed measurement." },
|
||||
{ "GPSDestDistance", "GPSDestDistance", "Rational", unsignedRational, xmpInternal, "GPS tag 26, 0x1A. Distance to destination." },
|
||||
{ "GPSDestDistance", "GPSDestDistance", "Rational", xmpText, xmpInternal, "GPS tag 26, 0x1A. Distance to destination." },
|
||||
{ "GPSProcessingMethod", "GPSProcessingMethod", "Text", xmpText, xmpInternal, "GPS tag 27, 0x1B. A character string recording the name of the method used for location finding." },
|
||||
{ "GPSAreaInformation", "GPSAreaInformation", "Text", xmpText, xmpInternal, "GPS tag 28, 0x1C. A character string recording the name of the GPS area." },
|
||||
{ "GPSDifferential", "GPSDifferential", "Closed Choice of Integer", unsignedShort, xmpInternal, "GPS tag 30, 0x1E. Indicates whether differential correction is applied to the GPS receiver." },
|
||||
{ "GPSDifferential", "GPSDifferential", "Closed Choice of Integer", xmpText, xmpInternal, "GPS tag 30, 0x1E. Indicates whether differential correction is applied to the GPS receiver." },
|
||||
// End of list marker
|
||||
{ 0, 0, 0, invalidTypeId, xmpInternal, 0 }
|
||||
};
|
||||
@ -751,9 +751,9 @@ namespace Exiv2 {
|
||||
"of a sublocation to a city or the name of a well known location or (natural) monument "
|
||||
"outside a city. In the sense of a sublocation to a city this element is at the fourth "
|
||||
"level of a top-down geographical hierarchy." },
|
||||
{ "Scene", "IPTC Scene", "bag closed Choice of Text", xmpText, xmpExternal, "Describes the scene of a photo content. Specifies one or more terms from the IPTC "
|
||||
{ "Scene", "IPTC Scene", "bag closed Choice of Text", xmpArray, xmpExternal, "Describes the scene of a photo content. Specifies one or more terms from the IPTC "
|
||||
"\"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits in an unordered list." },
|
||||
{ "SubjectCode", "IPTC Subject Code", "bag closed Choice of Text", xmpText, xmpExternal, "Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy to "
|
||||
{ "SubjectCode", "IPTC Subject Code", "bag closed Choice of Text", xmpArray, xmpExternal, "Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy to "
|
||||
"categorize the content. Each Subject is represented as a string of 8 digits in an unordered list." },
|
||||
// End of list marker
|
||||
{ 0, 0, 0, invalidTypeId, xmpInternal, 0 }
|
||||
|
||||
@ -333,7 +333,7 @@ namespace Exiv2 {
|
||||
//! Type used to store the data.
|
||||
typedef std::vector<byte> ValueType;
|
||||
// DATA
|
||||
ValueType value_;
|
||||
ValueType value_; //!< Stores the data value
|
||||
|
||||
}; // class DataValue
|
||||
|
||||
|
||||
23
src/xmp.cpp
23
src/xmp.cpp
@ -82,7 +82,6 @@ namespace {
|
||||
//! Convert Value::XmpArrayType to XMP Toolkit array option bits
|
||||
XMP_OptionBits xmpOptionBits(Exiv2::XmpValue::XmpArrayType xat);
|
||||
|
||||
#define DEBUG
|
||||
# ifdef DEBUG
|
||||
//! Print information about a parsed XMP node
|
||||
void printNode(const std::string& schemaNs,
|
||||
@ -102,8 +101,7 @@ namespace {
|
||||
namespace Exiv2 {
|
||||
|
||||
//! @cond IGNORE
|
||||
|
||||
//! Internal Pimpl structure with private members and data of class Xmpdatum.
|
||||
//! Internal Pimpl structure of class Xmpdatum.
|
||||
struct Xmpdatum::Impl {
|
||||
Impl(const XmpKey& key, const Value* pValue); //!< Constructor
|
||||
Impl(const Impl& rhs); //!< Copy constructor
|
||||
@ -249,8 +247,8 @@ namespace Exiv2 {
|
||||
|
||||
Xmpdatum& Xmpdatum::operator=(const uint16_t& value)
|
||||
{
|
||||
UShortValue::AutoPtr v(new UShortValue);
|
||||
v->value_.push_back(value);
|
||||
XmpTextValue::AutoPtr v(new XmpTextValue);
|
||||
v->read(toString(value));
|
||||
p_->value_ = v;
|
||||
return *this;
|
||||
}
|
||||
@ -275,10 +273,15 @@ namespace Exiv2 {
|
||||
|
||||
void Xmpdatum::setValue(const std::string& value)
|
||||
{
|
||||
// Todo: What's the correct default? Adjust doc
|
||||
if (p_->value_.get() == 0) {
|
||||
assert(0 != p_->key_.get());
|
||||
TypeId type = XmpProperties::propertyType(*p_->key_.get());
|
||||
TypeId type = xmpText;
|
||||
if (0 != p_->key_.get()) {
|
||||
try {
|
||||
type = XmpProperties::propertyType(*p_->key_.get());
|
||||
}
|
||||
catch (const AnyError&) {
|
||||
}
|
||||
}
|
||||
p_->value_ = Value::create(type);
|
||||
}
|
||||
p_->value_->read(value);
|
||||
@ -577,10 +580,6 @@ namespace Exiv2 {
|
||||
meta.SetProperty(ns.c_str(), i->tagName().c_str(), 0, options);
|
||||
for (int idx = 0; idx < i->count(); ++idx) {
|
||||
const std::string item = i->tagName() + "[" + toString(idx + 1) + "]";
|
||||
|
||||
//-ahu
|
||||
std::cerr << "Element " << item << " = " << i->toString(idx) << "\n";
|
||||
|
||||
meta.SetProperty(ns.c_str(), item.c_str(), i->toString(idx).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,7 +81,7 @@ namespace Exiv2 {
|
||||
Xmpdatum& operator=(const Xmpdatum& rhs);
|
||||
/*!
|
||||
@brief Assign \em value to the %Xmpdatum. The type of the new Value
|
||||
is set to UShortValue.
|
||||
is set to XmpTextValue.
|
||||
*/
|
||||
Xmpdatum& operator=(const uint16_t& value);
|
||||
/*!
|
||||
@ -99,7 +99,8 @@ namespace Exiv2 {
|
||||
@brief Set the value to the string \em value. Uses Value::read(const
|
||||
std::string&). If the %Xmpdatum does not have a Value yet,
|
||||
then a %Value of the correct type for this %Xmpdatum is
|
||||
created.
|
||||
created. If the key is unknown, a XmpTextValue is used as
|
||||
default.
|
||||
*/
|
||||
void setValue(const std::string& value);
|
||||
//@}
|
||||
|
||||
@ -21,6 +21,7 @@ try {
|
||||
Exiv2::DataBuf buf = Exiv2::readFile(filename);
|
||||
std::string xmpPacket;
|
||||
xmpPacket.assign(reinterpret_cast<char*>(buf.pData_), buf.size_);
|
||||
std::cerr << "-----> Decoding XMP data read from " << filename << " <-----\n";
|
||||
Exiv2::XmpData xmpData;
|
||||
if (0 != Exiv2::XmpParser::decode(xmpData, xmpPacket)) {
|
||||
std::string error(argv[1]);
|
||||
@ -45,13 +46,13 @@ try {
|
||||
<< std::dec << md->value()
|
||||
<< std::endl;
|
||||
}
|
||||
std::cerr << "-----------------------------------------------\n";
|
||||
filename += "-new";
|
||||
std::cerr << "-----> Encoding XMP data to write to " << filename << " <-----\n";
|
||||
if (0 != Exiv2::XmpParser::encode(xmpPacket, xmpData)) {
|
||||
std::string error(argv[1]);
|
||||
error += ": Failed to encode the XMP data";
|
||||
throw Exiv2::Error(1, error);
|
||||
}
|
||||
filename += "-new";
|
||||
Exiv2::FileIo file(filename);
|
||||
if (file.open("wb") != 0) {
|
||||
throw Exiv2::Error(10, filename, "wb", Exiv2::strError());
|
||||
|
||||
@ -18,7 +18,7 @@ SHELL = /bin/sh
|
||||
TESTS = addmoddel.sh bugfixes-test.sh crw-test.sh exifdata-test.sh \
|
||||
exiv2-test.sh ifd-test.sh imagetest.sh iotest.sh iptctest.sh \
|
||||
makernote-test.sh modify-test.sh path-test.sh write-test.sh \
|
||||
write2-test.sh
|
||||
write2-test.sh xmpparser-test.sh
|
||||
|
||||
test:
|
||||
@list='$(TESTS)'; for p in $$list; do \
|
||||
|
||||
88
test/data/BlueSquare.xmp
Normal file
88
test/data/BlueSquare.xmp
Normal file
@ -0,0 +1,88 @@
|
||||
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|
||||
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1.2-113">
|
||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<rdf:Description rdf:about=""
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:xap="http://ns.adobe.com/xap/1.0/"
|
||||
xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
|
||||
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
|
||||
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
|
||||
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
|
||||
xmlns:exif="http://ns.adobe.com/exif/1.0/"
|
||||
dc:format="image/jpeg"
|
||||
xap:CreatorTool="Adobe Photoshop CS2 Macintosh"
|
||||
xap:CreateDate="2005-09-07T15:07:40-07:00"
|
||||
xap:ModifyDate="2005-09-07T15:09:51-07:00"
|
||||
xap:MetadataDate="2006-04-10T13:37:10-07:00"
|
||||
xapMM:DocumentID="uuid:9A3B7F52214211DAB6308A7391270C13"
|
||||
xapMM:InstanceID="uuid:B59AC1B3214311DAB6308A7391270C13"
|
||||
photoshop:ColorMode="3"
|
||||
photoshop:ICCProfile="sRGB IEC61966-2.1"
|
||||
tiff:Orientation="1"
|
||||
tiff:XResolution="720000/10000"
|
||||
tiff:YResolution="720000/10000"
|
||||
tiff:ResolutionUnit="2"
|
||||
tiff:ImageWidth="360"
|
||||
tiff:ImageLength="216"
|
||||
tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;D0485928256FC8D17D036C26919E106D"
|
||||
tiff:Make="Nikon"
|
||||
exif:PixelXDimension="360"
|
||||
exif:PixelYDimension="216"
|
||||
exif:ColorSpace="1"
|
||||
exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;76DBD9F0A5E7ED8F62B4CE8EFA6478B4">
|
||||
<dc:title>
|
||||
<rdf:Alt>
|
||||
<rdf:li xml:lang="en-US">Blue Square Test File - .jpg</rdf:li>
|
||||
<rdf:li xml:lang="x-default">Blue Square Test File - .jpg</rdf:li>
|
||||
<rdf:li xml:lang="de-CH">Blaues Quadrat Test Datei - .jpg</rdf:li>
|
||||
</rdf:Alt>
|
||||
</dc:title>
|
||||
<dc:description>
|
||||
<rdf:Alt>
|
||||
<rdf:li xml:lang="x-default">XMPFiles BlueSquare test file, created in Photoshop CS2, saved as .psd, .jpg, and .tif.</rdf:li>
|
||||
</rdf:Alt>
|
||||
</dc:description>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>XMP</rdf:li>
|
||||
<rdf:li>Blue Square</rdf:li>
|
||||
<rdf:li>test file</rdf:li>
|
||||
<rdf:li>Photoshop</rdf:li>
|
||||
<rdf:li>.jpg</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<xapMM:DerivedFrom
|
||||
stRef:instanceID="uuid:9A3B7F4F214211DAB6308A7391270C13"
|
||||
stRef:documentID="uuid:9A3B7F4E214211DAB6308A7391270C13"/>
|
||||
<tiff:BitsPerSample>
|
||||
<rdf:Seq>
|
||||
<rdf:li>8</rdf:li>
|
||||
<rdf:li>8</rdf:li>
|
||||
<rdf:li>8</rdf:li>
|
||||
</rdf:Seq>
|
||||
</tiff:BitsPerSample>
|
||||
</rdf:Description>
|
||||
</rdf:RDF>
|
||||
</x:xmpmeta>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<?xpacket end="w"?>
|
||||
192
test/data/StaffPhotographer-Example.xmp
Normal file
192
test/data/StaffPhotographer-Example.xmp
Normal file
@ -0,0 +1,192 @@
|
||||
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|
||||
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1.2-113">
|
||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<rdf:Description rdf:about="uuid:0f410644-9396-11d9-bb8e-a67e6693b6e9"
|
||||
xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
|
||||
xmlns:exif="http://ns.adobe.com/exif/1.0/"
|
||||
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
|
||||
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
|
||||
xmlns:xap="http://ns.adobe.com/xap/1.0/"
|
||||
xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
|
||||
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
|
||||
xmlns:xapRights="http://ns.adobe.com/xap/1.0/rights/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:wine="http://pixelandink.com/wine/1.0/"
|
||||
Iptc4xmpCore:IntellectualGenre="Profile"
|
||||
Iptc4xmpCore:Location="Moore family farm"
|
||||
Iptc4xmpCore:CountryCode="US"
|
||||
exif:PixelXDimension="432"
|
||||
exif:PixelYDimension="293"
|
||||
exif:ColorSpace="1"
|
||||
exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;D9980F58F1A438A8507C7664C7084D77"
|
||||
photoshop:Credit="Big Newspaper"
|
||||
photoshop:City="Watseka"
|
||||
photoshop:State="Illinois"
|
||||
photoshop:Country="USA"
|
||||
photoshop:DateCreated="2003-04-03"
|
||||
photoshop:AuthorsPosition="Staff Photographer"
|
||||
photoshop:Headline="Farmer planting onions"
|
||||
photoshop:CaptionWriter="Susan Brown"
|
||||
photoshop:TransmissionReference="CSA farms"
|
||||
photoshop:Source="John Doe / Big Newspaper"
|
||||
photoshop:Instructions="Newspapers Out, Original Artixscan 4000 of color negative file, 160 ISO (frame 35a) is 7.6 x 11.2 at 500ppi, in Colormatch RGB."
|
||||
photoshop:ICCProfile="sRGB IEC61966-2.1"
|
||||
photoshop:ColorMode="3"
|
||||
tiff:XResolution="72/1"
|
||||
tiff:YResolution="72/1"
|
||||
tiff:ResolutionUnit="2"
|
||||
tiff:Orientation="1"
|
||||
tiff:ImageWidth="432"
|
||||
tiff:ImageLength="293"
|
||||
tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;24B61B075FA9960B09291337508795BF"
|
||||
xap:CreateDate="2005-03-13T02:01:44-06:00"
|
||||
xap:ModifyDate="2005-03-13T02:01:44-06:00"
|
||||
xap:MetadataDate="2007-01-08T13:25:45+01:00"
|
||||
xap:CreatorTool="Adobe Photoshop CS Windows"
|
||||
xapMM:DocumentID="adobe:docid:photoshop:0f410643-9396-11d9-bb8e-a67e6693b6e9"
|
||||
xapRights:WebStatement="http://www.bignewspaper.com/"
|
||||
xapRights:Marked="True"
|
||||
dc:format="image/jpeg"
|
||||
wine:Recommend="False">
|
||||
<Iptc4xmpCore:CreatorContactInfo
|
||||
Iptc4xmpCore:CiAdrExtadr="Big Newspaper, 123 Main Street"
|
||||
Iptc4xmpCore:CiAdrCity="Boston"
|
||||
Iptc4xmpCore:CiAdrRegion="Massachusetts"
|
||||
Iptc4xmpCore:CiAdrPcode="O2134"
|
||||
Iptc4xmpCore:CiAdrCtry="USA"
|
||||
Iptc4xmpCore:CiTelWork="+1 (800) 1234567"
|
||||
Iptc4xmpCore:CiEmailWork="johndoe@bignewspaper.com"
|
||||
Iptc4xmpCore:CiUrlWork="www.bignewspaper.com"/>
|
||||
<Iptc4xmpCore:SubjectCode>
|
||||
<rdf:Bag>
|
||||
<rdf:li>04001000</rdf:li>
|
||||
<rdf:li>04001001</rdf:li>
|
||||
</rdf:Bag>
|
||||
</Iptc4xmpCore:SubjectCode>
|
||||
<Iptc4xmpCore:Scene>
|
||||
<rdf:Bag>
|
||||
<rdf:li>011900</rdf:li>
|
||||
</rdf:Bag>
|
||||
</Iptc4xmpCore:Scene>
|
||||
<tiff:BitsPerSample>
|
||||
<rdf:Seq>
|
||||
<rdf:li>8</rdf:li>
|
||||
<rdf:li>8</rdf:li>
|
||||
<rdf:li>8</rdf:li>
|
||||
</rdf:Seq>
|
||||
</tiff:BitsPerSample>
|
||||
<xapMM:DerivedFrom
|
||||
stRef:instanceID="uuid:0f410640-9396-11d9-bb8e-a67e6693b6e9"
|
||||
stRef:documentID="adobe:docid:photoshop:e4d002a0-9392-11d9-bb8e-a67e6693b6e9"/>
|
||||
<xapRights:RightsUsageTerms>
|
||||
<rdf:Alt>
|
||||
<rdf:li xml:lang="x-default">For consideration only, no reproduction without prior permission</rdf:li>
|
||||
</rdf:Alt>
|
||||
</xapRights:RightsUsageTerms>
|
||||
<xapRights:UsageTerms>
|
||||
<rdf:Alt>
|
||||
<rdf:li xml:lang="x-default">For consideration only, no reproduction without prior permission</rdf:li>
|
||||
</rdf:Alt>
|
||||
</xapRights:UsageTerms>
|
||||
<dc:description>
|
||||
<rdf:Alt>
|
||||
<rdf:li xml:lang="x-default">After digging the furrows another ten yards with the tractor, Jim Moore hops off to hand-set more leeks and onions.</rdf:li>
|
||||
</rdf:Alt>
|
||||
</dc:description>
|
||||
<dc:title>
|
||||
<rdf:Alt>
|
||||
<rdf:li xml:lang="x-default">01661gdx</rdf:li>
|
||||
</rdf:Alt>
|
||||
</dc:title>
|
||||
<dc:rights>
|
||||
<rdf:Alt>
|
||||
<rdf:li xml:lang="x-default">©2003 Big Newspaper, all rights reserved</rdf:li>
|
||||
</rdf:Alt>
|
||||
</dc:rights>
|
||||
<dc:creator>
|
||||
<rdf:Seq>
|
||||
<rdf:li>John Doe</rdf:li>
|
||||
</rdf:Seq>
|
||||
</dc:creator>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>agriculture</rdf:li>
|
||||
<rdf:li>farm laborer</rdf:li>
|
||||
<rdf:li>farmer</rdf:li>
|
||||
<rdf:li>field hand</rdf:li>
|
||||
<rdf:li>field worker</rdf:li>
|
||||
<rdf:li>humans</rdf:li>
|
||||
<rdf:li>occupation</rdf:li>
|
||||
<rdf:li>people</rdf:li>
|
||||
<rdf:li>agricultural</rdf:li>
|
||||
<rdf:li>agronomy</rdf:li>
|
||||
<rdf:li>crops</rdf:li>
|
||||
<rdf:li>onions</rdf:li>
|
||||
<rdf:li>vegetable crops</rdf:li>
|
||||
<rdf:li>plants</rdf:li>
|
||||
<rdf:li>vegetables</rdf:li>
|
||||
<rdf:li>outdoors</rdf:li>
|
||||
<rdf:li>outside</rdf:li>
|
||||
<rdf:li>agricultural equipment</rdf:li>
|
||||
<rdf:li>tractor</rdf:li>
|
||||
<rdf:li>gender</rdf:li>
|
||||
<rdf:li>male</rdf:li>
|
||||
<rdf:li>men</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
</rdf:Description>
|
||||
</rdf:RDF>
|
||||
</x:xmpmeta>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<?xpacket end="w"?>
|
||||
281
test/data/xmpparser-test.out
Normal file
281
test/data/xmpparser-test.out
Normal file
@ -0,0 +1,281 @@
|
||||
-----> Decoding XMP data read from BlueSquare.xmp <-----
|
||||
Xmp.dc.format XmpText 10 image/jpeg
|
||||
Xmp.dc.title LangAlt 3 lang="de-CH" Blaues Quadrat Test Datei - .jpg, lang="en-US" Blue Square Test File - .jpg, lang="x-default" Blue Square Test File - .jpg
|
||||
Xmp.dc.description LangAlt 1 lang="x-default" XMPFiles BlueSquare test file, created in Photoshop CS2, saved as .psd, .jpg, and .tif.
|
||||
Xmp.dc.subject XmpArray 5 XMP, Blue Square, test file, Photoshop, .jpg
|
||||
Xmp.xmp.CreatorTool XmpText 29 Adobe Photoshop CS2 Macintosh
|
||||
Xmp.xmp.CreateDate XmpText 25 2005-09-07T15:07:40-07:00
|
||||
Xmp.xmp.ModifyDate XmpText 25 2005-09-07T15:09:51-07:00
|
||||
Xmp.xmp.MetadataDate XmpText 25 2006-04-10T13:37:10-07:00
|
||||
Xmp.xmpMM.DocumentID XmpText 37 uuid:9A3B7F52214211DAB6308A7391270C13
|
||||
Xmp.xmpMM.InstanceID XmpText 37 uuid:B59AC1B3214311DAB6308A7391270C13
|
||||
Xmp.xmpMM.DerivedFrom XmpText 0
|
||||
Xmp.xmpMM.DerivedFrom/stRef:instanceID XmpText 37 uuid:9A3B7F4F214211DAB6308A7391270C13
|
||||
Xmp.xmpMM.DerivedFrom/stRef:documentID XmpText 37 uuid:9A3B7F4E214211DAB6308A7391270C13
|
||||
Xmp.photoshop.ColorMode XmpText 1 3
|
||||
Xmp.photoshop.ICCProfile XmpText 17 sRGB IEC61966-2.1
|
||||
Xmp.tiff.Orientation XmpText 1 1
|
||||
Xmp.tiff.XResolution XmpText 12 720000/10000
|
||||
Xmp.tiff.YResolution XmpText 12 720000/10000
|
||||
Xmp.tiff.ResolutionUnit XmpText 1 2
|
||||
Xmp.tiff.ImageWidth XmpText 3 360
|
||||
Xmp.tiff.ImageLength XmpText 3 216
|
||||
Xmp.tiff.NativeDigest XmpText 134 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;D0485928256FC8D17D036C26919E106D
|
||||
Xmp.tiff.Make XmpText 5 Nikon
|
||||
Xmp.tiff.BitsPerSample XmpArray 3 8, 8, 8
|
||||
Xmp.exif.PixelXDimension XmpText 3 360
|
||||
Xmp.exif.PixelYDimension XmpText 3 216
|
||||
Xmp.exif.ColorSpace XmpText 1 1
|
||||
Xmp.exif.NativeDigest XmpText 414 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;76DBD9F0A5E7ED8F62B4CE8EFA6478B4
|
||||
-----> Encoding XMP data to write to BlueSquare.xmp-new <-----
|
||||
2c2
|
||||
< <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1.2-113">
|
||||
---
|
||||
> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.1.1">
|
||||
35d34
|
||||
< <rdf:li xml:lang="en-US">Blue Square Test File - .jpg</rdf:li>
|
||||
36a36
|
||||
> <rdf:li xml:lang="en-US">Blue Square Test File - .jpg</rdf:li>
|
||||
-----> Decoding XMP data read from StaffPhotographer-Example.xmp <-----
|
||||
Xmp.iptc.IntellectualGenre XmpText 7 Profile
|
||||
Xmp.iptc.Location XmpText 17 Moore family farm
|
||||
Xmp.iptc.CountryCode XmpText 2 US
|
||||
Xmp.iptc.CreatorContactInfo XmpText 0
|
||||
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr XmpText 30 Big Newspaper, 123 Main Street
|
||||
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity XmpText 6 Boston
|
||||
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrRegion XmpText 13 Massachusetts
|
||||
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode XmpText 5 O2134
|
||||
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry XmpText 3 USA
|
||||
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork XmpText 16 +1 (800) 1234567
|
||||
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork XmpText 24 johndoe@bignewspaper.com
|
||||
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork XmpText 20 www.bignewspaper.com
|
||||
Xmp.iptc.SubjectCode XmpArray 2 04001000, 04001001
|
||||
Xmp.iptc.Scene XmpArray 1 011900
|
||||
Xmp.exif.PixelXDimension XmpText 3 432
|
||||
Xmp.exif.PixelYDimension XmpText 3 293
|
||||
Xmp.exif.ColorSpace XmpText 1 1
|
||||
Xmp.exif.NativeDigest XmpText 414 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;D9980F58F1A438A8507C7664C7084D77
|
||||
Xmp.photoshop.Credit XmpText 13 Big Newspaper
|
||||
Xmp.photoshop.City XmpText 7 Watseka
|
||||
Xmp.photoshop.State XmpText 8 Illinois
|
||||
Xmp.photoshop.Country XmpText 3 USA
|
||||
Xmp.photoshop.DateCreated XmpText 10 2003-04-03
|
||||
Xmp.photoshop.AuthorsPosition XmpText 18 Staff Photographer
|
||||
Xmp.photoshop.Headline XmpText 22 Farmer planting onions
|
||||
Xmp.photoshop.CaptionWriter XmpText 11 Susan Brown
|
||||
Xmp.photoshop.TransmissionReference XmpText 9 CSA farms
|
||||
Xmp.photoshop.Source XmpText 24 John Doe / Big Newspaper
|
||||
Xmp.photoshop.Instructions XmpText 127 Newspapers Out, Original Artixscan 4000 of color negative file, 160 ISO (frame 35a) is 7.6 x 11.2 at 500ppi, in Colormatch RGB.
|
||||
Xmp.photoshop.ICCProfile XmpText 17 sRGB IEC61966-2.1
|
||||
Xmp.photoshop.ColorMode XmpText 1 3
|
||||
Xmp.tiff.XResolution XmpText 4 72/1
|
||||
Xmp.tiff.YResolution XmpText 4 72/1
|
||||
Xmp.tiff.ResolutionUnit XmpText 1 2
|
||||
Xmp.tiff.Orientation XmpText 1 1
|
||||
Xmp.tiff.ImageWidth XmpText 3 432
|
||||
Xmp.tiff.ImageLength XmpText 3 293
|
||||
Xmp.tiff.NativeDigest XmpText 134 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;24B61B075FA9960B09291337508795BF
|
||||
Xmp.tiff.BitsPerSample XmpArray 3 8, 8, 8
|
||||
Xmp.xmp.CreateDate XmpText 25 2005-03-13T02:01:44-06:00
|
||||
Xmp.xmp.ModifyDate XmpText 25 2005-03-13T02:01:44-06:00
|
||||
Xmp.xmp.MetadataDate XmpText 25 2007-01-08T13:25:45+01:00
|
||||
Xmp.xmp.CreatorTool XmpText 26 Adobe Photoshop CS Windows
|
||||
Xmp.xmpMM.DocumentID XmpText 58 adobe:docid:photoshop:0f410643-9396-11d9-bb8e-a67e6693b6e9
|
||||
Xmp.xmpMM.DerivedFrom XmpText 0
|
||||
Xmp.xmpMM.DerivedFrom/stRef:instanceID XmpText 41 uuid:0f410640-9396-11d9-bb8e-a67e6693b6e9
|
||||
Xmp.xmpMM.DerivedFrom/stRef:documentID XmpText 58 adobe:docid:photoshop:e4d002a0-9392-11d9-bb8e-a67e6693b6e9
|
||||
Xmp.xmpMM.InstanceID XmpText 41 uuid:0f410644-9396-11d9-bb8e-a67e6693b6e9
|
||||
Xmp.xmpRights.WebStatement XmpText 28 http://www.bignewspaper.com/
|
||||
Xmp.xmpRights.Marked XmpText 4 True
|
||||
Xmp.xmpRights.RightsUsageTerms LangAlt 1 lang="x-default" For consideration only, no reproduction without prior permission
|
||||
Xmp.xmpRights.UsageTerms LangAlt 1 lang="x-default" For consideration only, no reproduction without prior permission
|
||||
Xmp.dc.format XmpText 10 image/jpeg
|
||||
Xmp.dc.description LangAlt 1 lang="x-default" After digging the furrows another ten yards with the tractor, Jim Moore hops off to hand-set more leeks and onions.
|
||||
Xmp.dc.title LangAlt 1 lang="x-default" 01661gdx
|
||||
Xmp.dc.rights LangAlt 1 lang="x-default" ©2003 Big Newspaper, all rights reserved
|
||||
Xmp.dc.creator XmpArray 1 John Doe
|
||||
Xmp.dc.subject XmpArray 22 agriculture, farm laborer, farmer, field hand, field worker, humans, occupation, people, agricultural, agronomy, crops, onions, vegetable crops, plants, vegetables, outdoors, outside, agricultural equipment, tractor, gender, male, men
|
||||
Xmp.wine.Recommend XmpText 5 False
|
||||
-----> Encoding XMP data to write to StaffPhotographer-Example.xmp-new <-----
|
||||
2c2
|
||||
< <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1.2-113">
|
||||
---
|
||||
> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.1.1">
|
||||
4c4
|
||||
< <rdf:Description rdf:about="uuid:0f410644-9396-11d9-bb8e-a67e6693b6e9"
|
||||
---
|
||||
> <rdf:Description rdf:about=""
|
||||
46a47
|
||||
> xapMM:InstanceID="uuid:0f410644-9396-11d9-bb8e-a67e6693b6e9"
|
||||
160,191c161
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
<
|
||||
---
|
||||
>
|
||||
-----> Decoding XMP data read from xmpsdk.xmp <-----
|
||||
Xmp.ns1.SimpleProp1 XmpText 13 Simple1 value
|
||||
Xmp.ns1.SimpleProp2 XmpText 13 Simple2 value
|
||||
Xmp.ns1.SimpleProp2/?xml:lang XmpText 9 x-default
|
||||
Xmp.ns1.ArrayProp1 XmpArray 2 Item1.1 value, Item1.2 value
|
||||
Xmp.ns1.ArrayProp2 LangAlt 2 lang="x-one" Item2.1 value, lang="x-two" Item2.2 value
|
||||
Xmp.ns1.StructProp XmpText 0
|
||||
Xmp.ns1.StructProp/ns2:Field1 XmpText 12 Field1 value
|
||||
Xmp.ns1.StructProp/ns2:Field2 XmpText 12 Field2 value
|
||||
Xmp.ns1.QualProp1 XmpText 10 Prop value
|
||||
Xmp.ns1.QualProp1/?ns2:Qual XmpText 10 Qual value
|
||||
Xmp.ns1.QualProp2 XmpText 10 Prop value
|
||||
Xmp.ns1.QualProp2/?xml:lang XmpText 9 x-default
|
||||
Xmp.ns1.QualProp2/?ns2:Qual XmpText 10 Qual value
|
||||
Xmp.ns1.NestedStructProp XmpText 0
|
||||
Xmp.ns1.NestedStructProp/ns2:Outer XmpText 0
|
||||
Xmp.ns1.NestedStructProp/ns2:Outer/ns2:Middle XmpText 0
|
||||
Xmp.ns1.NestedStructProp/ns2:Outer/ns2:Middle/ns2:Inner XmpText 0
|
||||
Xmp.ns1.NestedStructProp/ns2:Outer/ns2:Middle/ns2:Inner/ns2:Field1 XmpText 12 Field1 value
|
||||
Xmp.ns1.NestedStructProp/ns2:Outer/ns2:Middle/ns2:Inner/ns2:Field2 XmpText 12 Field2 value
|
||||
-----> Encoding XMP data to write to xmpsdk.xmp-new <-----
|
||||
1,48c1,65
|
||||
< <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
||||
< <rdf:Description rdf:about='' xmlns:ns1='ns:test1/' xmlns:ns2='ns:test2/'>
|
||||
<
|
||||
< <ns1:SimpleProp1>Simple1 value</ns1:SimpleProp1>
|
||||
< <ns1:SimpleProp2 xml:lang='x-default'>Simple2 value</ns1:SimpleProp2>
|
||||
<
|
||||
< <ns1:ArrayProp1>
|
||||
< <rdf:Bag>
|
||||
< <rdf:li>Item1.1 value</rdf:li>
|
||||
< <rdf:li>Item1.2 value</rdf:li>
|
||||
< </rdf:Bag>
|
||||
< </ns1:ArrayProp1>
|
||||
<
|
||||
< <ns1:ArrayProp2>
|
||||
< <rdf:Alt>
|
||||
< <rdf:li xml:lang='x-one'>Item2.1 value</rdf:li>
|
||||
< <rdf:li xml:lang='x-two'>Item2.2 value</rdf:li>
|
||||
< </rdf:Alt>
|
||||
< </ns1:ArrayProp2>
|
||||
<
|
||||
< <ns1:StructProp rdf:parseType='Resource'>
|
||||
< <ns2:Field1>Field1 value</ns2:Field1>
|
||||
< <ns2:Field2>Field2 value</ns2:Field2>
|
||||
< </ns1:StructProp>
|
||||
<
|
||||
< <ns1:QualProp1 rdf:parseType='Resource'>
|
||||
< <rdf:value>Prop value</rdf:value>
|
||||
< <ns2:Qual>Qual value</ns2:Qual>
|
||||
< </ns1:QualProp1>
|
||||
<
|
||||
< <ns1:QualProp2 rdf:parseType='Resource'>
|
||||
< <rdf:value xml:lang='x-default'>Prop value</rdf:value>
|
||||
< <ns2:Qual>Qual value</ns2:Qual>
|
||||
< </ns1:QualProp2>
|
||||
<
|
||||
< <ns1:NestedStructProp rdf:parseType='Resource'>
|
||||
< <ns2:Outer rdf:parseType='Resource'>
|
||||
< <ns2:Middle rdf:parseType='Resource'>
|
||||
< <ns2:Inner rdf:parseType='Resource'>
|
||||
< <ns2:Field1>Field1 value</ns2:Field1>
|
||||
< <ns2:Field2>Field2 value</ns2:Field2>
|
||||
< </ns2:Inner>
|
||||
< </ns2:Middle>
|
||||
< </ns2:Outer>
|
||||
< </ns1:NestedStructProp>
|
||||
<
|
||||
< </rdf:Description>
|
||||
< </rdf:RDF>
|
||||
---
|
||||
> <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|
||||
> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.1.1">
|
||||
> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
> <rdf:Description rdf:about=""
|
||||
> xmlns:ns1="ns:test1/"
|
||||
> xmlns:ns2="ns:test2/"
|
||||
> ns1:SimpleProp1="Simple1 value">
|
||||
> <ns1:SimpleProp2 xml:lang="x-default">Simple2 value</ns1:SimpleProp2>
|
||||
> <ns1:ArrayProp1>
|
||||
> <rdf:Bag>
|
||||
> <rdf:li>Item1.1 value</rdf:li>
|
||||
> <rdf:li>Item1.2 value</rdf:li>
|
||||
> </rdf:Bag>
|
||||
> </ns1:ArrayProp1>
|
||||
> <ns1:ArrayProp2>
|
||||
> <rdf:Alt>
|
||||
> <rdf:li xml:lang="x-one">Item2.1 value</rdf:li>
|
||||
> <rdf:li xml:lang="x-two">Item2.2 value</rdf:li>
|
||||
> </rdf:Alt>
|
||||
> </ns1:ArrayProp2>
|
||||
> <ns1:StructProp
|
||||
> ns2:Field1="Field1 value"
|
||||
> ns2:Field2="Field2 value"/>
|
||||
> <ns1:QualProp1 rdf:parseType="Resource">
|
||||
> <rdf:value>Prop value</rdf:value>
|
||||
> <ns2:Qual>Qual value</ns2:Qual>
|
||||
> </ns1:QualProp1>
|
||||
> <ns1:QualProp2 xml:lang="x-default" rdf:parseType="Resource">
|
||||
> <rdf:value>Prop value</rdf:value>
|
||||
> <ns2:Qual>Qual value</ns2:Qual>
|
||||
> </ns1:QualProp2>
|
||||
> <ns1:NestedStructProp rdf:parseType="Resource">
|
||||
> <ns2:Outer rdf:parseType="Resource">
|
||||
> <ns2:Middle rdf:parseType="Resource">
|
||||
> <ns2:Inner
|
||||
> ns2:Field1="Field1 value"
|
||||
> ns2:Field2="Field2 value"/>
|
||||
> </ns2:Middle>
|
||||
> </ns2:Outer>
|
||||
> </ns1:NestedStructProp>
|
||||
> </rdf:Description>
|
||||
> </rdf:RDF>
|
||||
> </x:xmpmeta>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
> <?xpacket end="w"?>
|
||||
\ No newline at end of file
|
||||
48
test/data/xmpsdk.xmp
Normal file
48
test/data/xmpsdk.xmp
Normal file
@ -0,0 +1,48 @@
|
||||
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
||||
<rdf:Description rdf:about='' xmlns:ns1='ns:test1/' xmlns:ns2='ns:test2/'>
|
||||
|
||||
<ns1:SimpleProp1>Simple1 value</ns1:SimpleProp1>
|
||||
<ns1:SimpleProp2 xml:lang='x-default'>Simple2 value</ns1:SimpleProp2>
|
||||
|
||||
<ns1:ArrayProp1>
|
||||
<rdf:Bag>
|
||||
<rdf:li>Item1.1 value</rdf:li>
|
||||
<rdf:li>Item1.2 value</rdf:li>
|
||||
</rdf:Bag>
|
||||
</ns1:ArrayProp1>
|
||||
|
||||
<ns1:ArrayProp2>
|
||||
<rdf:Alt>
|
||||
<rdf:li xml:lang='x-one'>Item2.1 value</rdf:li>
|
||||
<rdf:li xml:lang='x-two'>Item2.2 value</rdf:li>
|
||||
</rdf:Alt>
|
||||
</ns1:ArrayProp2>
|
||||
|
||||
<ns1:StructProp rdf:parseType='Resource'>
|
||||
<ns2:Field1>Field1 value</ns2:Field1>
|
||||
<ns2:Field2>Field2 value</ns2:Field2>
|
||||
</ns1:StructProp>
|
||||
|
||||
<ns1:QualProp1 rdf:parseType='Resource'>
|
||||
<rdf:value>Prop value</rdf:value>
|
||||
<ns2:Qual>Qual value</ns2:Qual>
|
||||
</ns1:QualProp1>
|
||||
|
||||
<ns1:QualProp2 rdf:parseType='Resource'>
|
||||
<rdf:value xml:lang='x-default'>Prop value</rdf:value>
|
||||
<ns2:Qual>Qual value</ns2:Qual>
|
||||
</ns1:QualProp2>
|
||||
|
||||
<ns1:NestedStructProp rdf:parseType='Resource'>
|
||||
<ns2:Outer rdf:parseType='Resource'>
|
||||
<ns2:Middle rdf:parseType='Resource'>
|
||||
<ns2:Inner rdf:parseType='Resource'>
|
||||
<ns2:Field1>Field1 value</ns2:Field1>
|
||||
<ns2:Field2>Field2 value</ns2:Field2>
|
||||
</ns2:Inner>
|
||||
</ns2:Middle>
|
||||
</ns2:Outer>
|
||||
</ns1:NestedStructProp>
|
||||
|
||||
</rdf:Description>
|
||||
</rdf:RDF>
|
||||
58
test/xmpparser-test.sh
Executable file
58
test/xmpparser-test.sh
Executable file
@ -0,0 +1,58 @@
|
||||
#! /bin/sh
|
||||
# XMP parser test driver
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Setup
|
||||
results="./tmp/xmpparser-test.out"
|
||||
good="./data/xmpparser-test.out"
|
||||
diffargs="--strip-trailing-cr"
|
||||
tmpfile=tmp/ttt
|
||||
touch $tmpfile
|
||||
diff -q $diffargs $tmpfile $tmpfile 2>/dev/null
|
||||
if [ $? -ne 0 ] ; then
|
||||
diffargs=""
|
||||
fi
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Main routine
|
||||
(
|
||||
LD_LIBRARY_PATH=../../src:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH
|
||||
binpath="$VALGRIND ../../src"
|
||||
cd ./tmp
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# BlueSquare
|
||||
testfile=BlueSquare.xmp
|
||||
cp -f ../data/$testfile .
|
||||
$binpath/xmpparser-test $testfile
|
||||
diff $testfile ${testfile}-new
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# StaffPhotographer-Example
|
||||
testfile=StaffPhotographer-Example.xmp
|
||||
cp -f ../data/$testfile .
|
||||
$binpath/xmpparser-test $testfile
|
||||
diff $testfile ${testfile}-new
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# xmpsdk
|
||||
testfile=xmpsdk.xmp
|
||||
cp -f ../data/$testfile .
|
||||
$binpath/xmpparser-test $testfile
|
||||
diff $testfile ${testfile}-new
|
||||
$binpath/xmpparse ${testfile} > t1 2>&1
|
||||
$binpath/xmpparse ${testfile}-new > t2 2>&1
|
||||
diff t1 t2
|
||||
|
||||
) > $results 2>&1
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Evaluate results
|
||||
diff -q $diffargs $results $good
|
||||
rc=$?
|
||||
if [ $rc -eq 0 ] ; then
|
||||
echo "All testcases passed."
|
||||
else
|
||||
diff $diffargs $results $good
|
||||
fi
|
||||
Loading…
Reference in New Issue
Block a user