Commit Graph

82 Commits

Author SHA1 Message Date
clanmills
a9c9e8ff8e Remove svn_version.h 2017-06-06 15:33:50 +01:00
Robin Mills
559ace375b #1291 Reverting change in r4763 relating to windows.h as they break the Cygwin build. Retain changes in exiv2/exiv2.hpp and exv_msvc.h 2017-04-23 19:29:19 +00:00
Robin Mills
f36cccefa2 #1291 include header simplification 2017-04-23 17:31:57 +00:00
Robin Mills
6d5c2c3256 Getting ready to release v0.26 2017-03-08 20:42:28 +00:00
Robin Mills
0abf56f71b #1236 CMake build on MinGW. 2016-09-30 16:45:54 +00:00
Robin Mills
3c675f8e53 Build trigger. 2016-09-19 22:24:46 +00:00
Robin Mills
5f9807cbef #1216. Rollback r4448/6/2/1 r4439/38 to restabilize test suite on trunk. r4449 is copy of r4448 to branches/develop 2016-08-30 16:05:45 +00:00
sridharb
8a8ec67136 This is mainly a fix for #1206, but also interprets missing Canon Exif
Tags in exiv2 with the help of Phil Harvey's exiftool (see
http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html).

Even with these changes (toward #1204 and #1205), exiv2 lags behind
exiftool in some areas of interpretation of Canon tags. Ideally, a
catch-up effort to bring the code in source: canonmn.cpp in line with
lib/Image/ExifTool/Canon.pm. v10.25 of exiftool was used as reference
for this change.

#1206 seeks to address the fact that when Canon does not have data for
certain tags, they use specific default values in those fields. These
default values need to be ignored and not displayed. This change
brings this feature to exiv2, something that already exiftool does.

With regards to implementation, the struct TagInfo in source: tags.hpp
is extended with four new fields.

The first field is a bool that if set to true (default false), denotes
that this field has ignorable default values.

The second field is the default value that needs to be ignored. This
can be of four types (String, Long, Float, Rational). These four types
were chosen as they had conversion functions in the Value class.

The third field is the comparison type (default equal_to). There are
six comparison types possible (equal_to, not_equal_to, less,
less_equal, greater, greater_equal). This is the comparison applied to
the value stored in the tag's field and the default value specified
above. For e.g. if the value in the tag Exif.CanonCs.RecordMode is -1,
then it needs to be ignored.

The fourth field is the data type (default Long). This could have been
guessed from the type of the second field, but that would necessitate
making this structure into a template calling for changes in multitude
of files.

Usage: In source: canonmn.cpp, several exif tags now have ignorable
default properties. I will list a few examples.

1. Exif.CanonCs.FocusMode:        TagInfo(0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusMode)),

There are no changes - i.e. this is an example of how the TagInfo
structure was being populated.

2. Exif.CanonCs.RecordMode:        TagInfo(0x0009, "RecordMode", N_("Record Mode"), N_("Record mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsRecordMode), true, s_1_),

Take a look at the two new arguments. The first one (true) specifies
that there is a default value that can be ignored. The second one s_1_
specifies the value (-1, in this case) to be ignored.

	const UShortValue CanonMakerNote::s_1_(65535, unsignedShort); // Till bug is resolved

Note s_1_ is temporarily having the value 65535 till #1203 that causes
signedShorts to be interpreted as unsignedShorts is resolved.


3. Exif.CanonSi.TargetAperture:         TagInfo(0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015, true, us0_, TagInfo::less_equal),

Note the third argument TagInfo::less_equal. This combined with the
second argument us0_ (the number 0) signifies that any values in this
tag that are less than or equal (<=) to 0 should be ignored.

4. 		TagInfo(0x0028, "ImageUniqueID", N_("Image Unique ID"), N_("Image Unique ID"), canonId, makerTags, asciiString, -1, printValue, true, s0x16_, TagInfo::equal_to, TagInfo::String),

The previous examples have all been of Long type. This shows a case
where the default value is a string.

	const AsciiValue CanonMakerNote::s0x16_("0000000000000000");

Once these tag values have been defined, the actual mechanics of
ignoring these default values happens in Image::exifData().

Before the exifData is returned, we loop through the data, ask the
data whether it needs to be ignored (which in turn checks its
underlying tagInfo and compares it with the default value, if
specified) and if so, deletes that element.

A compile-time switch called EXV_DONT_IGNORE_UNDEFINED which when set
to a non-zero value will cause the behavior to revert back to the
original where all values are reported irregardless of the fact that
they need to be ignored.
2016-08-26 05:36:05 +00:00
Robin Mills
b3c6de6274 #1210 C++11/regex build-breaker in src/version.cpp. Thank You to Zulan for reporting this and providing a patch. 2016-08-19 14:46:28 +00:00
Robin Mills
a04abc98c2 Build Trigger 2016-03-28 18:23:18 +00:00
Robin Mills
b8de981617 Build Trigger 2016-03-25 15:38:05 +00:00
Robin Mills
dbed6f857c #1034 Added exiv2 config file support for lens recognition. 2016-03-25 08:12:16 +00:00
Robin Mills
4a8e34bc44 Revert build trigger 2016-03-24 22:42:55 +00:00
Robin Mills
27fa76b269 Build Trigger 2016-03-24 19:48:15 +00:00
Robin Mills
2261c18724 Revert build trigger. 2016-03-24 17:23:09 +00:00
Robin Mills
d37f692374 Build Trigger 2016-03-24 13:34:25 +00:00
Robin Mills
b7607c34db #1047 Rollback r4163 and try again. r4163 broke MSVC build. 2016-01-03 12:36:20 +00:00
Robin Mills
d3ff1388c1 #1147 Fixed travis build-breaker. 2016-01-03 12:10:18 +00:00
Robin Mills
1a6419881b #1147. Fixed a typo. 2016-01-02 12:54:02 +00:00
Robin Mills
a008623362 #1147. Correction for Cygwin/MinGW build-breaker in r4159. Don't compile the uid/euid/gid code on any windows build. 2016-01-02 12:41:36 +00:00
Robin Mills
b1b42d8e15 #1147. Correction to r4159 for linux build breaker (linux doesn't have include uuid/uuid.h) 2016-01-02 12:15:20 +00:00
Robin Mills
87129d61f6 #1147 Report uid, euid and gid in exiv2 --verbose --version 2016-01-02 10:58:58 +00:00
Robin Mills
ab9ee2c6df #1024. Support for C++11 #include <regex>. --grep keys may have an optional trailer /i to indicate to ignore case. 2015-12-08 09:27:38 +00:00
Robin Mills
cf927ed2c8 #1121 (msvc support for v0.26). exiv2 -vVg ^version reports version=8.00 (2005/x64) or version=8.00 (2005/x86) instead of version=8.00 (2005) 2015-12-05 17:25:11 +00:00
Robin Mills
db4be31b6f #1130. Thank You Jakub for reporting this. 2015-10-29 19:33:34 +00:00
Robin Mills
4cca5dea0b #1127 exiv2 --verbose --version --grep libz incorrectly reports have_libz=0 2015-10-08 14:47:01 +00:00
Robin Mills
bf0604b834 Minor clean up in version.cpp. Removed 'using namespace std', replaced vector_t typedef with identical twin Exiv2::StringVector. 2015-09-23 21:25:37 +00:00
Robin Mills
416221118a Fix Visual Studio 2015 build. 2015-09-23 13:06:08 +00:00
Robin Mills
edb5c16a7f #1109 Support for Visual Studio 2003/5/8/10/12/13/15 2015-09-22 14:24:51 +00:00
Robin Mills
ed2751612d #640 Public API to reveal all namespaces known to Exiv2 and XMPsdk is XmpProperties::registeredNamespaces(Exiv2::Dictionary&) 2015-09-08 13:01:05 +00:00
Robin Mills
c396a92e01 #960 added API: static void Exiv2::XMPParser::getRegisteredNamespaces(std::map<std::string,std::string>&); 2015-08-28 19:57:46 +00:00
Robin Mills
15cbe35383 Correction to r3892 to fix build breaker on Cygwin. 2015-08-27 17:39:48 +00:00
Robin Mills
fdb33b467b Modification to r3891 to respect -g option on exiv2 command-line. 2015-08-24 11:24:39 +00:00
Robin Mills
e628f8e057 Correction to r3981. Only build this functionality when EXV_HAVE_XMP_TOOLKIT is enabled. 2015-08-24 10:02:17 +00:00
Robin Mills
f87a83978d exiv2 -vV lists registered Namespaces. #640 and topic 2169 http://dev.exiv2.org/boards/3/topics/2169 2015-08-24 09:45:10 +00:00
Robin Mills
871502f051 src/version.cpp: fixing an output formatting issue impacting exiv2 -vVg curl 2015-05-08 22:26:36 +00:00
Andreas Huggel
fd80993ab0 Updated copyright notice. 2015-05-02 11:55:40 +00:00
Robin Mills
0cf64e2542 #922. Better platform and endian detection. 2015-04-30 22:58:15 +00:00
Robin Mills
5aec2c4957 #1069. Make video a build option (msvc/autotools/cmake). Default is not to build video or webready. 2015-04-30 15:31:18 +00:00
Robin Mills
60f4c18da7 Move dumpLibraryInfo() to Exiv2 namespace. 2015-04-27 20:07:39 +00:00
Robin Mills
8424bdaa71 Replace REG_BASIC with 0. Some platforms don't define REG_BASIC. 2015-04-17 10:58:16 +00:00
Robin Mills
4c886bab24 #1024 and #1053. Changed option REG_EXTENDED and REG_BASIC to support ^ as a begin marker. 2015-04-13 12:33:00 +00:00
Robin Mills
0e1b77c8b4 #1028 and #1053. Change options to regex to respect ^ and $ in option -g 2015-04-13 09:47:10 +00:00
Robin Mills
3c42a1e47f #1053. Added new option -K key for exact Key match (not grep as -g).
Added long versions of all options (eg --key = -K)
Added Command Summary to exiv2.1
Work in progress: exiv2.1 documents features which are not yet implemented:
- modifier - (stdin/stdout) to insert/extract
- modifier R (roundtrip) to insert
2015-04-08 21:51:25 +00:00
Robin Mills
6e4f04ff23 #1046. Adding support to exiv2 --verbose --version to report have_unicode_path 2015-03-25 19:55:02 +00:00
Robin Mills
33bec3b2cc #1024. Add CMake support for regex. Fixed unused variables in version.cpp 2015-01-11 21:38:40 +00:00
Robin Mills
faf51171d0 #1024. Thank you, Thomas for this very useful contribution. 2015-01-11 17:24:13 +00:00
Robin Mills
d393b0fa7e trunk: exiv2 v0.25 2014-12-25 13:55:57 +00:00
Robin Mills
078f1f7f58 #1007. Thank You, Nicolas for reporting this and identifying the fix. 2014-12-03 19:49:34 +00:00
Robin Mills
f71d15442a Better platform detection in version.cpp for MinGW 2014-10-14 14:24:26 +00:00