summaryrefslogtreecommitdiffstats
path: root/graphics/kphotoalbum/kphotoalbum-4.1.1-exiv2.patch
blob: ca8e21005450d099c5722d9acd13ef0f78122227 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
--- kphotoalbum/Exif/Info.cpp	2011/01/09 06:47:21	1213127
+++ kphotoalbum/Exif/Info.cpp	2011/01/09 06:50:40	1213128
@@ -106,6 +106,28 @@
         return res;
 
     QList<const Exiv2::TagInfo*> tags;
+    std::ostringstream s;
+
+#if (EXIV2_TEST_VERSION(0,21,0))
+    const Exiv2::GroupInfo* gi = Exiv2::ExifTags::groupList();
+    while (gi->tagList_ != 0) {
+	    Exiv2::TagListFct tl     = gi->tagList_;
+	    const Exiv2::TagInfo* ti = tl();
+
+	    while (ti->tag_ != 0xFFFF) {
+		    tags << ti;
+		    ++ti;
+	    }
+        ++gi;
+    }
+
+    for (QList<const Exiv2::TagInfo*>::iterator it = tags.begin(); it != tags.end(); ++it) {
+        while ( (*it)->tag_ != 0xffff ) {
+            res.insert(QString::fromLatin1(Exiv2::ExifKey(**it).key().c_str()));
+            ++(*it);
+        }
+    }
+#else
     tags <<
         Exiv2::ExifTags::ifdTagList() <<
         Exiv2::ExifTags::exifTagList() <<
@@ -121,7 +143,6 @@
     // Now the ugly part -- exiv2 doesn't have any way to get a list of
     // MakerNote tags in a reasonable form, so we have to parse it from strings
 
-    std::ostringstream s;
     for ( Exiv2::IfdId kind = Exiv2::canonIfdId; kind < Exiv2::lastIfdId;
             kind = static_cast<Exiv2::IfdId>( kind + 1 ) ) {
 #if EXIV2_TEST_VERSION(0,17,0)
@@ -130,6 +151,7 @@
         Exiv2::ExifTags::makerTaglist( s, kind );
 #endif
     }
+#endif
 
     // IPTC tags use yet another format...
     Exiv2::IptcDataSets::dataSetList( s );