[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:39:01 UTC 2017


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=f51e7e0

The following commit has been merged in the master branch:
commit f51e7e0512b805ee329cc0b2538bd1788055ac20
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Tue Oct 16 15:57:27 2007 +0000

    Added type keyword to XmpTextValue, added test with a command file that generates the same XMP packet as xmpsample.
---
 samples/xmpsample.cpp        |  14 +++---
 src/error.cpp                |   1 +
 src/value.cpp                |  49 +++++++++++++++++++-
 src/value.hpp                |  15 ++++++
 test/data/cmdxmp.txt         |  82 +++++++++++++++++++++++++++++++++
 test/data/xmpparser-test.out | 107 +++++++++++++++++++++++++++++++++++--------
 test/xmpparser-test.sh       |   7 +++
 7 files changed, 249 insertions(+), 26 deletions(-)

diff --git a/samples/xmpsample.cpp b/samples/xmpsample.cpp
index 2d13ef8..279f67f 100644
--- a/samples/xmpsample.cpp
+++ b/samples/xmpsample.cpp
@@ -20,7 +20,9 @@ try {
     xmpData["Xmp.dc.source"]  = "xmpsample.cpp";    // a simple text value
     xmpData["Xmp.dc.subject"] = "Palmtree";         // an array item
     xmpData["Xmp.dc.subject"] = "Rubbertree";       // add a 2nd array item
-    xmpData["Xmp.dc.title"]   = "lang=en-US Beach"; // a language alternative
+    // a language alternative with two entries and without default
+    xmpData["Xmp.dc.title"]   = "lang=de-DE Sonnenuntergang am Strand";
+    xmpData["Xmp.dc.title"]   = "lang=en-US Sunset on the beach";
 
     // -------------------------------------------------------------------------
     // Any properties can be set provided the namespace is known. Values of any
@@ -86,11 +88,9 @@ try {
     tv.read("inch");
     xmpData.add(Exiv2::XmpKey("Xmp.xmpDM.videoFrameSize/stDim:unit"), &tv);
 
-    // Add an element with a qualifier (using the namespace registered earlier)
-    tv.read("James Bond");
-    xmpData.add(Exiv2::XmpKey("Xmp.dc.publisher"), &tv);
-    tv.read("secret agent");
-    xmpData.add(Exiv2::XmpKey("Xmp.dc.publisher/?ns:role"), &tv);
+    // Add an element with a qualifier (using the namespace registered above)
+    xmpData["Xmp.dc.publisher"] = "James Bond";  // creates an unordered array
+    xmpData["Xmp.dc.publisher[1]/?ns:role"] = "secret agent";
 
     // Add a qualifer to an array element of Xmp.dc.creator (added above)
     tv.read("programmer");
@@ -102,7 +102,7 @@ try {
     xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef"), &tv); // Set the array type.
 
     tv.setXmpArrayType(Exiv2::XmpValue::xaNone);
-    tv.read("Birtday party");
+    tv.read("Birthday party");
     xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[1]/stJob:name"), &tv);
     tv.read("Photographer");
     xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[1]/stJob:role"), &tv);
diff --git a/src/error.cpp b/src/error.cpp
index a64e428..cb4621a 100644
--- a/src/error.cpp
+++ b/src/error.cpp
@@ -90,6 +90,7 @@ namespace Exiv2 {
         ErrMsg( 45, N_("Schema namespace %1 is not registered with the XMP Toolkit")), // %1=namespace
         ErrMsg( 46, N_("No namespace registered for prefix `%1'")), // %1=prefix
         ErrMsg( 47, N_("Aliases are not supported. Please send this XMP packet to ahuggel at gmx.net `%1', `%2', `%3'")), // %1=namespace, %2=property path, %3=value
+        ErrMsg( 48, N_("Invalid XmpText type `%1'")), // %1=type
 
         // Last error message (message is not used)
         ErrMsg( -2, N_("(Unknown Error)"))
diff --git a/src/value.cpp b/src/value.cpp
index 38d4ce2..490a4aa 100644
--- a/src/value.cpp
+++ b/src/value.cpp
@@ -495,7 +495,36 @@ namespace Exiv2 {
 
     int XmpTextValue::read(const std::string& buf)
     {
-        value_ = buf;
+        // support a type=Alt,Bag,Seq,Struct indicator
+        std::string b = buf;
+        std::string type;
+        if (buf.length() > 5 && buf.substr(0, 5) == "type=") {
+            std::string::size_type pos = buf.find_first_of(' ');
+            type = buf.substr(5, pos-5);
+            // Strip quotes (so you can also specify the type without quotes)
+            if (type[0] == '"') type = type.substr(1);
+            if (type[type.length()-1] == '"') type = type.substr(0, type.length()-1);
+            b.clear();
+            if (pos != std::string::npos) b = buf.substr(pos+1);
+        }
+        if (!type.empty()) {
+            if (type == "Alt") {
+                setXmpArrayType(XmpValue::xaAlt);
+            }
+            else if (type == "Bag") {
+                setXmpArrayType(XmpValue::xaBag);
+            }
+            else if (type == "Seq") {
+                setXmpArrayType(XmpValue::xaSeq);
+            }
+            else if (type == "Struct") {
+                setXmpStruct();
+            }
+            else {
+                throw Error(48, type);
+            }
+        }
+        value_ = b;
         return 0;
     }
 
@@ -516,6 +545,24 @@ namespace Exiv2 {
 
     std::ostream& XmpTextValue::write(std::ostream& os) const
     {
+        bool del = false;
+        if (xmpArrayType() != XmpValue::xaNone) {
+            switch (xmpArrayType()) {
+            case XmpValue::xaAlt: os << "type=\"Alt\""; break;
+            case XmpValue::xaBag: os << "type=\"Bag\""; break;
+            case XmpValue::xaSeq: os << "type=\"Seq\""; break;
+            case XmpValue::xaNone: break; // just to suppress the warning
+            }
+            del = true;
+        }
+        else if (xmpStruct() != XmpValue::xsNone) {
+            switch (xmpStruct()) {
+            case XmpValue::xsStruct: os << "type=\"Struct\""; break;
+            case XmpValue::xsNone: break; // just to suppress the warning
+            }
+            del = true;
+        }
+        if (del && !value_.empty()) os << " ";
         return os << value_;
     }
 
diff --git a/src/value.hpp b/src/value.hpp
index c6f6788..98faa63 100644
--- a/src/value.hpp
+++ b/src/value.hpp
@@ -716,6 +716,21 @@ namespace Exiv2 {
 
         //! @name Manipulators
         //@{
+        /*!
+          @brief Read a simple property value from \em buf to set the value.
+
+          Sets the value to the contents of \em buf. A optional keyword, 
+          \em type is supported to set the XMP value type. This is useful for
+          complex value types for which Exiv2 does not have direct support.
+
+          The format of \em buf is:
+          <BR>
+          <CODE>[type=["]Alt|Bag|Seq|Struct["] ]text</CODE>
+          <BR>
+
+          @return 0 if successful.
+         */
+
         virtual int read(const std::string& buf);
         //@}
 
diff --git a/test/data/cmdxmp.txt b/test/data/cmdxmp.txt
new file mode 100644
index 0000000..75bfa98
--- /dev/null
+++ b/test/data/cmdxmp.txt
@@ -0,0 +1,82 @@
+# Sample Exiv2 command file for XMP tags
+# --------------------------------------
+
+# Set basic properties. Exiv2 uses the value type of the XMP specification 
+# for the property, if it is not specified. The default XMP value type
+# for unknown properties is a simple text value.
+
+# A simple text property.
+set Xmp.dc.source      xmpsample.cpp
+
+# An array item (unordered array).
+set Xmp.dc.subject     "Palmtree"
+
+# Add a 2nd array item
+set Xmp.dc.subject     "Rubbertree"
+
+# A language alternative (without a default)
+set Xmp.dc.title       lang=en-US Sunset on the beach
+set Xmp.dc.title       lang=de-DE Sonnenuntergang am Strand
+
+# Any properties can be set provided the namespace is known.
+set Xmp.dc.one         -1
+set Xmp.dc.two         3.1415
+set Xmp.dc.three       5/7
+set Xmp.dc.four        255
+set Xmp.dc.five        256
+set Xmp.dc.six         false
+set Xmp.dc.seven       Seven
+
+# The value type can be specified. Exiv2 has support for a limited number
+# of specific XMP types with built-in types: The basic XmpText, array 
+# types XmpAlt (alternative array), XmpBag (unordered array), XmpSeq 
+# (ordered array) and language alternatives LangAlt.
+
+# Simple text property with explicitly specified value type
+set Xmp.dc.format XmpText "image/jpeg"
+
+# An ordered array
+set Xmp.dc.creator XmpSeq "1) The first creator"
+set Xmp.dc.creator  "2) The second creator"
+set Xmp.dc.creator  "3) And another one"
+
+# A language alternative. The default entry of a langauge alternative
+# doesn't need a language qualifier.
+set Xmp.dc.description LangAlt lang=de-DE Hallo, Welt
+set Xmp.dc.description LangAlt Hello, World
+
+# According to the XMP specification, Xmp.tiff.ImageDescription is an
+# alias for Xmp.dc.description. Exiv2 treats an alias just like any
+# other property.
+set Xmp.tiff.ImageDescription TIFF image description
+set Xmp.tiff.ImageDescription lang=de-DE TIFF Bildbeschreibung
+
+# Register a namespace which Exiv2 doesn't know yet with a prefix.
+reg ns myNamespace/
+
+# There are no built-in Exiv2 value types for structures, qualifiers and
+# nested types. However, these can be added by using an XmpText value and a
+# path as the key.
+
+# Add a structure
+set Xmp.xmpDM.videoFrameSize/stDim:w    16
+set Xmp.xmpDM.videoFrameSize/stDim:h    9
+set Xmp.xmpDM.videoFrameSize/stDim:unit inch
+
+# Add an element with a qualifier (using the namespace registered earlier)
+set Xmp.dc.publisher James Bond
+set Xmp.dc.publisher/?ns:role secret agent
+
+# Add a qualifer to an array element of Xmp.dc.creator (added above)
+set Xmp.dc.creator[2]/?ns:role programmer
+
+# Add an array of structures. First set a text property with just the 
+# array type. (Note: this is not the same as creating an XmpBag property.)
+set Xmp.xmpBJ.JobRef  XmpText type=Bag
+
+# Then set the array items. Each of them is a structure with two elements.
+set Xmp.xmpBJ.JobRef[1]/stJob:name   XmpText   Birthday party
+set Xmp.xmpBJ.JobRef[1]/stJob:role   XmpText   Photographer
+
+set Xmp.xmpBJ.JobRef[2]/stJob:name             Wedding ceremony
+set Xmp.xmpBJ.JobRef[2]/stJob:role             Best man
diff --git a/test/data/xmpparser-test.out b/test/data/xmpparser-test.out
index 0e6ccdf..36f1f2c 100644
--- a/test/data/xmpparser-test.out
+++ b/test/data/xmpparser-test.out
@@ -9,7 +9,7 @@ Xmp.xmp.ModifyDate                           XmpText    25  2005-09-07T15:09:51-
 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                        XmpText     0  type="Struct"
 Xmp.xmpMM.DerivedFrom/stRef:instanceID       XmpText    37  uuid:9A3B7F4F214211DAB6308A7391270C13
 Xmp.xmpMM.DerivedFrom/stRef:documentID       XmpText    37  uuid:9A3B7F4E214211DAB6308A7391270C13
 Xmp.photoshop.ColorMode                      XmpText     1  3
@@ -40,7 +40,7 @@ Xmp.exif.NativeDigest                        XmpText   414  36864,40960,40961,37
 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                  XmpText     0  type="Struct"
 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
@@ -81,7 +81,7 @@ Xmp.xmp.ModifyDate                           XmpText    25  2005-03-13T02:01:44-
 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                        XmpText     0  type="Struct"
 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
@@ -148,7 +148,7 @@ Xmp.ns1.SimpleProp2                          XmpText    13  Simple2 value
 Xmp.ns1.SimpleProp2/?xml:lang                XmpText     9  x-default
 Xmp.ns1.ArrayProp1                           XmpBag      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                           XmpText     0  type="Struct"
 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
@@ -156,10 +156,10 @@ 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                     XmpText     0  type="Struct"
+Xmp.ns1.NestedStructProp/ns2:Outer           XmpText     0  type="Struct"
+Xmp.ns1.NestedStructProp/ns2:Outer/ns2:Middle XmpText     0  type="Struct"
+Xmp.ns1.NestedStructProp/ns2:Outer/ns2:Middle/ns2:Inner XmpText     0  type="Struct"
 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 <-----
@@ -281,7 +281,7 @@ Xmp.ns1.NestedStructProp/ns2:Outer/ns2:Middle/ns2:Inner/ns2:Field2 XmpText    12
 \ No newline at end of file
 Xmp.dc.source                                XmpText    13  xmpsample.cpp
 Xmp.dc.subject                               XmpBag      2  Palmtree, Rubbertree
-Xmp.dc.title                                 LangAlt     1  lang="en-US" Beach
+Xmp.dc.title                                 LangAlt     2  lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach
 Xmp.dc.one                                   XmpText     2  -1
 Xmp.dc.two                                   XmpText     6  3.1415
 Xmp.dc.three                                 XmpText     3  5/7
@@ -296,11 +296,11 @@ Xmp.tiff.ImageDescription                    LangAlt     2  lang="x-default" TIF
 Xmp.xmpDM.videoFrameSize/stDim:w             XmpText     2  16
 Xmp.xmpDM.videoFrameSize/stDim:h             XmpText     1  9
 Xmp.xmpDM.videoFrameSize/stDim:unit          XmpText     4  inch
-Xmp.dc.publisher                             XmpText    10  James Bond
-Xmp.dc.publisher/?ns:role                    XmpText    12  secret agent
+Xmp.dc.publisher                             XmpBag      1  James Bond
+Xmp.dc.publisher[1]/?ns:role                 XmpText    12  secret agent
 Xmp.dc.creator[2]/?ns:role                   XmpText    10  programmer
-Xmp.xmpBJ.JobRef                             XmpText     0  
-Xmp.xmpBJ.JobRef[1]/stJob:name               XmpText    13  Birtday party
+Xmp.xmpBJ.JobRef                             XmpText     0  type="Bag"
+Xmp.xmpBJ.JobRef[1]/stJob:name               XmpText    14  Birthday party
 Xmp.xmpBJ.JobRef[1]/stJob:role               XmpText    12  Photographer
 Xmp.xmpBJ.JobRef[2]/stJob:name               XmpText    16  Wedding ceremony
 Xmp.xmpBJ.JobRef[2]/stJob:role               XmpText     8  Best man
@@ -332,7 +332,8 @@ Xmp.xmpBJ.JobRef[2]/stJob:role               XmpText     8  Best man
    </dc:subject>
    <dc:title>
     <rdf:Alt>
-     <rdf:li xml:lang="en-US">Beach</rdf:li>
+     <rdf:li xml:lang="de-DE">Sonnenuntergang am Strand</rdf:li>
+     <rdf:li xml:lang="en-US">Sunset on the beach</rdf:li>
     </rdf:Alt>
    </dc:title>
    <dc:creator>
@@ -351,9 +352,13 @@ Xmp.xmpBJ.JobRef[2]/stJob:role               XmpText     8  Best man
      <rdf:li xml:lang="de-DE">Hallo, Welt</rdf:li>
     </rdf:Alt>
    </dc:description>
-   <dc:publisher rdf:parseType="Resource">
-    <rdf:value>James Bond</rdf:value>
-    <ns:role>secret agent</ns:role>
+   <dc:publisher>
+    <rdf:Bag>
+     <rdf:li rdf:parseType="Resource">
+      <rdf:value>James Bond</rdf:value>
+      <ns:role>secret agent</ns:role>
+     </rdf:li>
+    </rdf:Bag>
    </dc:publisher>
    <tiff:ImageDescription>
     <rdf:Alt>
@@ -368,7 +373,7 @@ Xmp.xmpBJ.JobRef[2]/stJob:role               XmpText     8  Best man
    <xapBJ:JobRef>
     <rdf:Bag>
      <rdf:li
-      stJob:name="Birtday party"
+      stJob:name="Birthday party"
       stJob:role="Photographer"/>
      <rdf:li
       stJob:name="Wedding ceremony"
@@ -400,3 +405,69 @@ Xmp.xmpBJ.JobRef[2]/stJob:role               XmpText     8  Best man
                                                                                                     
                            
 <?xpacket end="w"?>
+File 1/1: exiv2-empty.jpg
+Set Xmp.dc.source "xmpsample.cpp" (XmpText)
+Set Xmp.dc.subject "Palmtree" (XmpBag)
+Set Xmp.dc.subject "Rubbertree" (XmpBag)
+Set Xmp.dc.title "lang=en-US Sunset on the beach" (LangAlt)
+Set Xmp.dc.title "lang=de-DE Sonnenuntergang am Strand" (LangAlt)
+Set Xmp.dc.one "-1" (XmpText)
+Set Xmp.dc.two "3.1415" (XmpText)
+Set Xmp.dc.three "5/7" (XmpText)
+Set Xmp.dc.four "255" (XmpText)
+Set Xmp.dc.five "256" (XmpText)
+Set Xmp.dc.six "false" (XmpText)
+Set Xmp.dc.seven "Seven" (XmpText)
+Set Xmp.dc.format "image/jpeg" (XmpText)
+Set Xmp.dc.creator "1) The first creator" (XmpSeq)
+Set Xmp.dc.creator "2) The second creator" (XmpSeq)
+Set Xmp.dc.creator "3) And another one" (XmpSeq)
+Set Xmp.dc.description "lang=de-DE Hallo, Welt" (LangAlt)
+Set Xmp.dc.description "Hello, World" (LangAlt)
+Set Xmp.tiff.ImageDescription "TIFF image description" (LangAlt)
+Set Xmp.tiff.ImageDescription "lang=de-DE TIFF Bildbeschreibung" (LangAlt)
+Reg ns="myNamespace/"
+Set Xmp.xmpDM.videoFrameSize/stDim:w "16" (XmpText)
+Set Xmp.xmpDM.videoFrameSize/stDim:h "9" (XmpText)
+Set Xmp.xmpDM.videoFrameSize/stDim:unit "inch" (XmpText)
+Set Xmp.dc.publisher "James Bond" (XmpBag)
+Set Xmp.dc.publisher/?ns:role "secret agent" (XmpText)
+Set Xmp.dc.creator[2]/?ns:role "programmer" (XmpText)
+Set Xmp.xmpBJ.JobRef "type=Bag" (XmpText)
+Set Xmp.xmpBJ.JobRef[1]/stJob:name "Birthday party" (XmpText)
+Set Xmp.xmpBJ.JobRef[1]/stJob:role "Photographer" (XmpText)
+Set Xmp.xmpBJ.JobRef[2]/stJob:name "Wedding ceremony" (XmpText)
+Set Xmp.xmpBJ.JobRef[2]/stJob:role "Best man" (XmpText)
+File 1/1: exiv2-empty.jpg
+Xmp.dc.source                                XmpText    13  xmpsample.cpp
+Xmp.dc.one                                   XmpText     2  -1
+Xmp.dc.two                                   XmpText     6  3.1415
+Xmp.dc.three                                 XmpText     3  5/7
+Xmp.dc.four                                  XmpText     3  255
+Xmp.dc.five                                  XmpText     3  256
+Xmp.dc.six                                   XmpText     5  false
+Xmp.dc.seven                                 XmpText     5  Seven
+Xmp.dc.format                                XmpText    10  image/jpeg
+Xmp.dc.subject                               XmpBag      2  Palmtree, Rubbertree
+Xmp.dc.title                                 LangAlt     2  lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach
+Xmp.dc.creator                               XmpText     0  type="Seq"
+Xmp.dc.creator[1]                            XmpText    20  1) The first creator
+Xmp.dc.creator[2]                            XmpText    21  2) The second creator
+Xmp.dc.creator[2]/?ns:role                   XmpText    10  programmer
+Xmp.dc.creator[3]                            XmpText    18  3) And another one
+Xmp.dc.description                           LangAlt     2  lang="x-default" Hello, World, lang="de-DE" Hallo, Welt
+Xmp.dc.publisher                             XmpText     0  type="Bag"
+Xmp.dc.publisher/?ns:role                    XmpText    12  secret agent
+Xmp.dc.publisher[1]                          XmpText    10  James Bond
+Xmp.tiff.ImageDescription                    LangAlt     2  lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung
+Xmp.xmpDM.videoFrameSize                     XmpText     0  type="Struct"
+Xmp.xmpDM.videoFrameSize/stDim:w             XmpText     2  16
+Xmp.xmpDM.videoFrameSize/stDim:h             XmpText     1  9
+Xmp.xmpDM.videoFrameSize/stDim:unit          XmpText     4  inch
+Xmp.xmpBJ.JobRef                             XmpText     0  type="Bag"
+Xmp.xmpBJ.JobRef[1]                          XmpText     0  type="Struct"
+Xmp.xmpBJ.JobRef[1]/stJob:name               XmpText    14  Birthday party
+Xmp.xmpBJ.JobRef[1]/stJob:role               XmpText    12  Photographer
+Xmp.xmpBJ.JobRef[2]                          XmpText     0  type="Struct"
+Xmp.xmpBJ.JobRef[2]/stJob:name               XmpText    16  Wedding ceremony
+Xmp.xmpBJ.JobRef[2]/stJob:role               XmpText     8  Best man
diff --git a/test/xmpparser-test.sh b/test/xmpparser-test.sh
index 602a6d9..59f64e7 100755
--- a/test/xmpparser-test.sh
+++ b/test/xmpparser-test.sh
@@ -24,6 +24,7 @@ fi
 # Main routine
 (
 binpath="$VALGRIND ../../samples"
+exiv2="$VALGRIND ../../src/exiv2"
 cd ./tmp
 
 # ----------------------------------------------------------------------
@@ -54,6 +55,12 @@ diff t1 t2
 # xmpsample
 $binpath/xmpsample
 
+# ----------------------------------------------------------------------
+# XMP sample commands
+cp -f ../data/exiv2-empty.jpg .
+$exiv2 -v -m ../data/cmdxmp.txt exiv2-empty.jpg
+$exiv2 -v -px exiv2-empty.jpg
+
 ) > $results 2>&1
 
 # ----------------------------------------------------------------------

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list