Commit Graph

137 Commits

Author SHA1 Message Date
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
fb24a572c6 #1291 Thank you to T Modes for reporting this and providing this patch. 2017-04-23 16:28:01 +00:00
Robin Mills
73572aa54d #1291 Fix submitted. Thank You to T Modes for reporting this issue. 2017-04-23 11:57:05 +00:00
Robin Mills
67859f4f4e #1175 I'm going to accept the recommendation to change BasicIo::size() to return size_t. This passes the test suite. The only "ripple" outside of basicio is to iotest.cpp. This change enables several casts to be removed. 2017-04-19 17:03:54 +00:00
Robin Mills
73047ce568 #1279 Correction to r4748 which broke the CMake build. 2017-03-27 09:04:12 +00:00
Robin Mills
54408bac2f #1279 Move src/ini_int.hpp to include/exiv2/ini.hpp to reveal class Exiv2:INIReader in API 2017-03-26 20:49:54 +00:00
Robin Mills
192a2a83cf #1279 Cleaned up doxygen warnings for doc and website. 2017-03-16 18:13:12 +00:00
Robin Mills
199820576d #1279 Work in Progress: API Documentation (doxygen) 2017-03-16 09:09:31 +00:00
Robin Mills
11993b3b55 #1271 Thanks to Ben for reporting this and providing the patch. 2017-03-15 21:30:55 +00:00
Robin Mills
85eb0da9d1 #1279 Bump EXIV2_MINOR_VERSION in include/exiv2/version.hpp 2017-03-14 12:11:45 +00:00
Robin Mills
6d5c2c3256 Getting ready to release v0.26 2017-03-08 20:42:28 +00:00
Robin Mills
54cfc47346 class RWLock should not be in the Exiv2::Internal namespace 2017-03-07 21:30:05 +00:00
Robin Mills
2ebacb6b0b #1272 Use in-memory temporary files. 2017-03-05 17:42:12 +00:00
Robin Mills
9f06ff2971 #1272 Submitting modified version of Ben's patch. 2017-02-15 20:53:58 +00:00
Robin Mills
5392ada8f4 #1273 Thanks to A Wilcox for reporting this and providing the patch. 2017-01-21 11:53:53 +00:00
Robin Mills
81265684f0 #1108 Fixed bugs in printStructure(kpsRecursive) handling of RATIONAL data. 2016-11-12 22:08:10 +00:00
Robin Mills
0c57b55035 #1230 Fix msvc build breaker when building using configure.bat -W (with WebReady) 2016-11-03 12:26:28 +00:00
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