Commit Graph

108 Commits

Author SHA1 Message Date
Robin Mills
52f0bd2ea1 #1109 Work in Progress on MinGW/32. Put stdout into binary mode for options -pC -pX, -eABC-, -eABC- 2016-09-22 14:34:01 +00:00
Robin Mills
b46cac7790 #1126 Fixes submitted for msvc2003 2016-09-16 05:33:40 +00:00
Robin Mills
5edc759cc9 #1074 For discussion see: http://dev.exiv2.org/issues/1074#note-23 2016-09-14 10:02:51 +00:00
Robin Mills
9ff2224fd7 #1074. Rollback r4479 which has inflicted a lot harm on the test harness. 2016-09-11 15:31:28 +00:00
Robin Mills
3aaebf50f7 #1074 Added ICC support to tiffimage.writeMetadata(). pngimage.readMetadata() is not complete. 2016-09-09 15:18:59 +00:00
Robin Mills
f44f706478 MinGW changes following discussion about building with Qt5.6/MinGW 4.9.2 http://dev.exiv2.org/boards/3/topics/2705 2016-09-07 17:08:27 +00:00
Robin Mills
9026954816 #1074 Work in progress for ICC/jpg - changes to readMetadata() and printStructure() 2016-09-01 14:17:25 +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
d78dec24e3 Moved ExifDatum::ignore from exif.hpp to the exif.cpp.
This frees up exif.hpp from needing to include tags_int.hpp.

The downside is that this function is no longer inline.
2016-08-26 13:35:50 +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
draekko
c858b7d44e #1199 minor code update, updated comments, added constants for headers, bit definitions, and misc. 2016-08-20 12:42:24 +00:00
Robin Mills
9a061d895e #1199 Fix WebP printStructure(), readMetadata() and doWriteMetadata() to handle payload padding byte. Extended webp-test to cover -iX, -ix and -ie 2016-08-20 09:43:34 +00:00
Robin Mills
043c039d25 #1199 Fixing exiv2 -dC image-path to delete ICC profile. 2016-08-18 20:04:12 +00:00
draekko
6f7b3ba8f7 #1199 removed convenience converstion for iptc to xmp, apps should handle it directly since webp doesnt support iptc. 2016-08-18 10:10:44 +00:00
tbeu
85c736831c Fix encoding 2016-08-15 20:13:17 +00:00
draekko
bcaa22ae6f #1199 removed warnings in stringToHex, enabled iptc support for WebPImage. 2016-08-13 02:23:50 +00:00
draekko
85cc2f745d #1199 Fixed crash with iptc by disabling it, updated decodeChunk to do better header checks, added hexdump function. 2016-08-11 19:47:48 +00:00
Robin Mills
bcd455be7a #1199 Patch from Ben. http://dev.exiv2.org/issues/1199#note-37 2016-08-11 10:12:25 +00:00
Robin Mills
541dfe8fdf #1199 Thank you to Ben for the patch. This corrects various matters and adds a first stab at WebPImage::printStructure() 2016-08-10 17:39:18 +00:00
Robin Mills
b3f107bd8c #1199 WebP Support (work in progress). Thank You to Ben for the patch. Thanks to Gilles for encouragement. 2016-08-08 14:33:49 +00:00
Robin Mills
80e2a47240 Corrections to r4338 2016-06-23 20:39:24 +00:00
Robin Mills
fc24b8c541 #1041 Reorganized and simplified config header files. 2016-06-23 18:30:29 +00:00
Robin Mills
2f8e56fd70 Correction to r4327 2016-06-14 13:42:44 +00:00
Robin Mills
1ac5ccc2f9 Fixing warning from contrib/buildserver/test_daily.sh concerning redefinition of EXV_SEPARATOR_STR|CHR when testing msvc builds 2016-06-14 11:01:33 +00:00
Robin Mills
c211816b2c #1189 See issue report for discussion. 2016-06-08 17:08:01 +00:00
Robin Mills
5c125a9f19 #1187 and #1041. Fixing CMake/MSVC 2013/15 build breakers 2016-06-04 17:08:09 +00:00
Robin Mills
0afe5a97a1 #1187 and #1041 Fixing CMake/MSVC build breaker 2016-06-04 05:56:02 +00:00
Robin Mills
32577413e5 #1187 Fixing msvc build breaker in r4308 Thank You Taras for the patch. 2016-06-01 20:17:51 +00:00
Robin Mills
b15a401569 #1187 Thank You to Taras for the patch. 2016-05-30 14:45:28 +00:00
Robin Mills
664af57e10 #1034 Added samples/toexv This is a first step to write exif metadata to memory to send to a web service. 2016-04-29 19:20:30 +00:00
Robin Mills
f02b94a6b4 #1169. Code simplication/clarification. 2016-04-22 12:34:04 +00:00
Robin Mills
f88138bc59 #1169. Correction to r4282. I should not have submitted the change to exv_msvc.h 2016-04-21 11:30:46 +00:00
Robin Mills
30f279787f #1169 Fix submitted. 2016-04-21 11:26:29 +00:00
Robin Mills
00984afaa2 #1178 Thanks to Terence for reporting this an providing confidential test data 2016-04-19 20:17:20 +00:00
Robin Mills
62e2fc086b #1034 Added msvc2005/ini-test 2016-03-28 13:33:08 +00:00
Robin Mills
06eabfdd88 #1074. jpgimage.cpp ICC support (Work in Progress) 2016-03-23 17:06:33 +00:00
Robin Mills
aa7e277dbc #1169. Fixing issues concerning msvc2005/EXV_UNICODE_PATH 2016-03-18 20:31:04 +00:00
Robin Mills
09c734fbcd #1108. Refactored the IPTC printStructure code from png/jpeg/tiff into iptc.cpp 2016-03-17 23:45:58 +00:00
Robin Mills
8e7eaa65a7 #1057, #1064, #922, #1148. Work in progress. This is a composite patch of several matters in development. None are totally complete at this time. 2016-03-09 07:51:04 +00:00
Robin Mills
5e968dc6f7 #1081 Added Cr2Image::printStructure() 2016-01-14 10:14:57 +00:00
Robin Mills
04f871cc4c #1152 Fix submitted. Also added new static function FileIo::temporaryPath() which I require for tgt - code and fixed typo in tiffvisitor.cpp 2016-01-11 10:03:48 +00:00
Robin Mills
f49dd0b95f #1108 and #1074 Correction to r4165 to fix MSVC build breaker and to document: exiv2 -eC (extract ICC profile). 2016-01-05 16:52:36 +00:00
Robin Mills
fd5e983746 r1108 Recursively dump an image (exiv2 -pR file...) 2016-01-05 14:39:49 +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
d6dd463c57 #1041. Finally fixed stdint.h on all platforms. CMake builds exiv2 with VS 2005, 2008, 2010, 2012, 2013 and 2013 on both laptop and buildserver. 2015-11-29 22:35:20 +00:00
Robin Mills
c5136b444b Added cmakeBuild --static option. Fixed issues with include <stdint.h> in include/exiv2/types.hpp Documentation update. 2015-11-28 21:12:20 +00:00
Robin Mills
6895e9ca5b #1041. More polishing to get every version of VS to build using CMake. 2015-11-28 11:24:38 +00:00
Robin Mills
e75bcbe385 #1041. Fixed issues with VS2008 incorrectly setting EXV_HAVE_STDINT_H 2015-11-27 18:44:35 +00:00
danielkaneider
5c7ecc6514 [cmake] add webready support and better cmake for windows 2015-10-25 16:53:18 +00:00
danielkaneider
577469b949 [cmake-webready] align VS header files 2015-10-18 17:45:10 +00:00