Commit Graph

119 Commits

Author SHA1 Message Date
Robin Mills
03ca00fc1e #1244. Correction to r4637. Added bigBlock_(NULL) to BasicIo::BasicIo(). 2016-10-17 19:24:34 +00:00
Robin Mills
a057af1616 #1244. Removing experimental APIs introduced by r4637. I submitted those APIs just to retain the code somewhere. I have no plan to release such as API. 2016-10-17 16:32:58 +00:00
Robin Mills
f5956d5db2 #1230 Fixes to read tiff with web-ready. Includes the BasicIo expiremental API readUnmarked() and markRead() which I will remove later. 2016-10-17 15:48:42 +00:00
Robin Mills
774f96094c #1243 Work-in-progress on iccProfile related code. 2016-10-15 08:51:19 +00:00
Robin Mills
163f3ce7f1 #1243 Work-in-progress on writing ICC profiles. Fixed elusive issue in exiv2 -pS foo.jp2 2016-10-14 12:44:41 +00:00
Robin Mills
05f56e95af #1242 Issue warning when we encounter erroneous Exif\0\0 in the Exif UUID box. 2016-10-14 10:26:11 +00:00
Robin Mills
699e1c744e #1243 Work in progress. Implemented jp2image::printStructure. Still to add iccProfile support to jp2image::writeMetadata() 2016-10-12 20:24:27 +00:00
Robin Mills
e922a066be #1230 Fix cygwin buildbreaker. 2016-10-05 19:48:05 +00:00
Robin Mills
5282bc2120 #1230 More changes to pacify MinGW (the nightmare environment). 2016-10-05 12:10:06 +00:00
Robin Mills
cf284286d8 #1234 Fix submitted. Passes test suite littleEndian. To be tested on Mac Powerbook PPC bigEndian. 2016-09-28 16:43:15 +00:00
Robin Mills
5f1d52e497 #1230 Added stdin-test and fixing issue identified by the test. 2016-09-25 22:43:40 +00:00
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