[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a
Maximiliano Curia
maxy at moszumanska.debian.org
Thu Jul 13 17:40:24 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=2b7a80d
The following commit has been merged in the master branch:
commit 2b7a80d4bb58bbda6c60cf10127eefe595ae2e5f
Author: brad <chickb at gmail.com>
Date: Sun Mar 8 08:26:30 2009 +0000
made use of new easyaccess functions to support macro mode, orientation, lens name, and better iso values
---
contrib/organize/helpers.cpp | 68 +++++++++++++++++++++++++++++++++----------
contrib/organize/helpers.hpp | 3 ++
contrib/organize/organize.cpp | 6 ++++
3 files changed, 61 insertions(+), 16 deletions(-)
diff --git a/contrib/organize/helpers.cpp b/contrib/organize/helpers.cpp
index fe4fae8..7f08e42 100644
--- a/contrib/organize/helpers.cpp
+++ b/contrib/organize/helpers.cpp
@@ -31,6 +31,7 @@
#include <boost/format.hpp>
#include <boost/lexical_cast.hpp>
#include <exiv2/image.hpp>
+#include <exiv2/easyaccess.hpp>
#include <exiv2/exif.hpp>
#include <exiv2/iptc.hpp>
#include <exiv2/tags.hpp>
@@ -43,13 +44,20 @@
#define BOOST_FILESYSTEM_NO_DEPRECATED
namespace fs = boost::filesystem;
+typedef Exiv2::ExifData::const_iterator (*EasyAccessFct)(const Exiv2::ExifData& ed);
-std::string scrub(const std::string &dirty)
+
+std::string scrub(const std::string &dirty, bool strip_space = false)
{
std::string scrub = boost::trim_copy(dirty);
+ if(strip_space) {
+ boost::regex space("\s");
+ scrub = boost::regex_replace(scrub, space, "");
+ }
boost::regex dash("[:/\\|<>]");
boost::regex under("[\"'\[\]\{\}#=%\$\?,\+\*]");
scrub = boost::regex_replace(scrub, dash, "-");
+
return boost::regex_replace(scrub, under, "_");
}
@@ -69,6 +77,22 @@ bool exif_data(const Exiv2::Image *image, const char *key, Exiv2::ExifData::cons
return ok;
}
+bool exif_data_easy(const Exiv2::Image *image, EasyAccessFct easy, Exiv2::ExifData::const_iterator &md)
+{
+ assert(image && easy);
+ bool ok = false;
+ try {
+ const Exiv2::ExifData &exifData = image->exifData();
+ md = easy(exifData);
+ if(md != exifData.end() && md->typeId() != Exiv2::undefined)
+ ok = true;
+ }
+ catch(const Exiv2::AnyError&) {
+ }
+ return ok;
+}
+
+
bool iptc_data(const Exiv2::Image *image, const char *key, Exiv2::IptcData::const_iterator &md)
{
bool ok = false;
@@ -550,26 +574,38 @@ std::string exif_meter(const Exiv2::Image *image, const fs::path &)
return scrub(md->print());
}
-std::string exif_iso(const Exiv2::Image *image, const fs::path &)
+std::string exif_macro(const Exiv2::Image *image, const fs::path &)
{
Exiv2::ExifData::const_iterator md;
- bool done = exif_data(image, "Exif.Photo.ISOSpeedRatings", md);
- if(!done)
- done = exif_data(image, "Exif.CanonSi.ISOSpeed", md);
- if(!done)
- done = exif_data(image, "Exif.Nikon1.ISOSpeed", md);
- if(!done)
- done = exif_data(image, "Exif.Nikon2.ISOSpeed", md);
- if(!done)
- done = exif_data(image, "Exif.Nikon3.ISOSpeed", md);
+ bool done = exif_data_easy(image, Exiv2::macroMode, md);
if(!done)
- done = exif_data(image, "Exif.MinoltaCsNew.ISOSpeed", md);
- if(!done)
- done = exif_data(image, "Exif.MinoltaCsOld.ISOSpeed", md);
+ return "";
+ return scrub(md->print());
+}
+
+std::string exif_orientation(const Exiv2::Image *image, const fs::path &)
+{
+ Exiv2::ExifData::const_iterator md;
+ bool done = exif_data_easy(image, Exiv2::orientation, md);
if(!done)
- done = exif_data(image, "Exif.MinoltaCs5D.ISOSpeed", md);
+ return "";
+ return scrub(md->print(), true);
+}
+
+std::string exif_lens(const Exiv2::Image *image, const fs::path &)
+{
+ Exiv2::ExifData::const_iterator md;
+ bool done = exif_data_easy(image, Exiv2::lensName, md);
if(!done)
- done = exif_data(image, "Exif.MinoltaCs7D.ISOSpeed", md);
+ return "";
+ return scrub(md->print());
+}
+
+
+std::string exif_iso(const Exiv2::Image *image, const fs::path &)
+{
+ Exiv2::ExifData::const_iterator md;
+ bool done = exif_data_easy(image, Exiv2::isoSpeed, md);
if(!done)
return "";
return scrub(md->print());
diff --git a/contrib/organize/helpers.hpp b/contrib/organize/helpers.hpp
index 4e503d3..5e1a609 100644
--- a/contrib/organize/helpers.hpp
+++ b/contrib/organize/helpers.hpp
@@ -96,6 +96,9 @@ std::string exif_distance(const Exiv2::Image *image, const fs::path &path);
//std::string xmp_distance(const Exiv2::Image *image, const fs::path &path);
std::string exif_meter(const Exiv2::Image *image, const fs::path &path);
//std::string xmp_meter(const Exiv2::Image *image, const fs::path &path);
+std::string exif_macro(const Exiv2::Image *image, const fs::path &path);
+std::string exif_orientation(const Exiv2::Image *image, const fs::path &path);
+std::string exif_lens(const Exiv2::Image *image, const fs::path &path);
std::string exif_keyword(const Exiv2::Image *image, const fs::path &path);
std::string iptc_keyword(const Exiv2::Image *image, const fs::path &path);
//std::string xmp_keyword(const Exiv2::Image *image, const fs::path &path);
diff --git a/contrib/organize/organize.cpp b/contrib/organize/organize.cpp
index 00d63f7..daab8dc 100644
--- a/contrib/organize/organize.cpp
+++ b/contrib/organize/organize.cpp
@@ -141,6 +141,12 @@ const Pattern g_patterns[] = {
{exif_distance, NULL, NULL, NULL} },
{"@meter", "meter mode (multi-segment)",
{exif_meter, NULL, NULL, NULL} },
+ {"@macro", "macro mode (Off)",
+ {exif_macro, NULL, NULL, NULL} },
+ {"@orient", "orientation (top_left)",
+ {exif_orientation, NULL, NULL, NULL} },
+ {"@lens", "lens name (Tamron 90mm f-2.8)",
+ {exif_lens, NULL, NULL, NULL} },
{"@key", "first keyword (Family)",
{exif_keyword, iptc_keyword, NULL, NULL} },
--
exiv2 packaging
More information about the pkg-kde-commits
mailing list