Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / lsolesen / pel / CHANGELOG.md
1 ## CHANGELOG
2
3 ## 0.9.4 - 2016-03-21
4
5 Notes:
6
7 This is mainly a cleanup version and better composer integration.
8 We added Scrutinizer, which should make sure that the code improves
9 in the future.
10
11 Changes:
12
13 * Improved performance of PelJpeg.
14
15 * Fixed wrong usage of private variable in examples.
16
17
18 ## 0.9.3 - 2015-08-08
19
20 Notes:
21
22 This is a major update, and should have been the first tag of the
23 0.10.0 series. If you want to use the latest stable version without
24 namespaces, you should use 0.9.2.
25
26 Changes:
27
28 * Introduced namespaces.
29
30 * Added composer support and made it available on
31   [packagist.org](https://packagist.org/packages/lsolesen/pel) and
32   introduced PSR-4 autoloader.
33
34 * Major cleanup of the code and following PSR-2 standards.
35
36
37 ## 0.9.2 - 2010-03-09
38
39 Notes:
40
41 This release is the last release before introducing namespaces.
42
43 Added a static method, Pel::setJPEGQuality(), for controlling the
44 quality for encoding JPEG images. Fixed bug in conversion between
45 Julian Day count and UNIX timestamps and removed dependency on the
46 calendar PHP extension. Fixed placement of Windows XP tags. Added GPS
47 example.
48
49 Changes:
50
51 * Added an example of how GPS information can be added. Thanks Andac
52   Aydin for contributing and testing this.
53
54 * Fixed PelJpegComment::getBytes(): it didn't return anything! Thanks
55   macondos.
56
57 * Fixed SF bug #1699489: Incorrect UNIX/Julian conversion.
58
59 * PEL 0.9.1 introduced a dependency on the calendar extension for PHP.
60   The necessary functions have now been reimplemented in pure PHP. The
61   patch was supplied by Francois Pirsch, thanks.
62
63 * Fixed doc comment for PelEntryTime, the variables for date() was
64   swapped. Thanks Francois Pirsch.
65
66 * Added static Pel::setJPEGQuality() and Pel::getJPEGQuality() method
67   for setting and getting the quality used when PelJpeg automatically
68   converts an image resource to a JPEG image. Thanks Csaba Gabor for
69   asking about this.
70
71 * Moved the XP specific tags from the Exif IFD to the IFD0/1 IFD.
72   Thanks Piotr Golebiowski for noticing this.
73
74 * Added links from PelTag::XP_* tags to the PelEntryWindowsString
75   class. Thanks Garrison Locke for indirectly pointing out the need
76   for this.
77
78
79 ## 0.9.1 - 2016-12-19
80
81 Notes:
82
83 Added setExif(), getExif(), and clearExif() methods as a convenient
84 and recommended way of manipulating the Exif data in a PelJpeg object.
85 Improved PelEntryTime to deal with timestamps in the full range from
86 year 0 to year 9999. Removed PelTag::getDescription() because the
87 descriptions were out of context. A new example demonstrates how to
88 resize images while keeping the Exif data intact. Added a Japanese and
89 updated the French and Danish translations.
90
91 Changes:
92
93 * The constructors of PelJpeg and PelTiff can now take an argument
94   which is used for initialization. This can be a filename (equivalent
95   to calling loadFromFile()), a PelDataWindow (equivalent to load()).
96   The PelJpeg constructor will also accept an image resource.
97
98 * Added PelJpeg::setExif(). This method should always be used in
99   preference to PelJpeg::insertSection() and PelJpeg::appendSection().
100   One should actually not be using appendSection() unless one is very
101   sure that the image has not been ended by a EOI marker.
102
103 * Added PelJpeg::getExif().  This method is the new preferred way of
104   obtaining the PelExif object from a PelJpeg object.  Updated the
105   examples and code to make use of it.
106
107 * An example of how to resize images while keeping the Exif data
108   intact is given in resize.php.
109
110 * The PelTag::getDescription() method is no more. The descriptions
111   were taken directly from the Exif specification and they were often
112   impossible to translate in a meaningful out of context because they
113   had references to figures and tables from said specification.
114
115 * Fixed bug in edit-description.php which still called the constructor
116   of PelIfd in the old pre-0.9 way.
117
118 * Updated documentation of PelIfd to make it clearer that it can be
119   used as an array because it implements the ArrayAccess SPL (Standard
120   PHP Library) interface.
121
122 * Added Japanese translation by Tadashi Jokagi.
123
124 * Update by David Lesieur of the French translation.
125
126 * Rewrote entry for version 0.9 in NEWS to highlight the API
127   incompatible changes made from version 0.8.
128
129 * Renamed test.php to run-tests.php and implemented a simple search
130   functionality for finding the SimpleTest installation.
131
132 * Rewrote make-release.sh script to work with Subversion.
133
134 ## 0.9.0 - 2006-01-08
135
136 Notes:
137
138 Added full support for GPS information (this breaks API compatibility
139 with version 0.8), JPEG comments, the Gamma tag, and Windows XP
140 specific title, comment, author, keywords, and subject tags.
141 Implemented a non-strict mode for broken images where most errors wont
142 result in visible exceptions.  The edit-description.php example now
143 correctly deals with images with no previous Exif data.  A partial
144 Polish translation was added. The API documentation was updated with
145 details about the constrains on format and number of components for
146 each tag.
147
148 API incompatible changes:
149
150 * Changed PelIfd::getSubIfd() to take an IFD type as argument instead
151   of a PelTag.  The IFD types are constants in PelIfd.  So use
152
153     $exif = $ifd0->getSubIfd(PelIfd::EXIF);
154
155   instead of
156
157     $exif = $ifd0->getSubIfd(PelTag::EXIF_IFD_POINTER);
158
159   in your code.
160
161 * Added support for the GPS IFD.  This API break compatibility with
162   version 0.8.  The problem is that the GPS related tags have the same
163   value as some other tags, and so the function PelTag::getName(),
164   PelTag::getTitle(), and PelTag::getDescription() has been changed to
165   take an extra argument specifying IFD type of the tag.
166
167   This might change very well further in the future.
168
169 Changes:
170
171 * Added support for JPEG comments through the PelJpegComment class
172   which works almost like PelEntry (use getValue() and setValue() to
173   read and write the comment).
174
175 * Enabled iterating a PelIfd object with foreach().  It will iterate
176   over (PelTag, PelEntry) pairs.
177
178 * Added PelIfd::getValidTags() which return an array of tags valid for
179   the IFD in question.  Using this, PEL now reject entries in wrong
180   IFDs.  For example, you cannot have a UserComment tag in a IFD for
181   GPS information.
182
183 * Added a new concept of strict/non-strict mode.  The old behavior
184   was strict mode where an errors would abort the loading of an image
185   because of exceptions --- in non-strict mode most exceptions will be
186   trapped and broken images can still be loaded.  See the description
187   in Pel.php and the answer in the FAQ for more information.
188
189 * Added support for the 0xA500 Gamma tag.
190
191 * Changed paths in example shell scripts to /usr/bin/php and explained
192   in the README how to execute them.
193
194 * Updated FAQ with information about making Gettext work and the new
195   strict/non-strict mode.
196
197 * Added support for Windows XP specific title, comment, author,
198   keywords, and subject tags.  These tags can be edited in Windows XP
199   in the Properties dialog found by right-clicking on an image.
200
201 * A number of translations in the German, French, and Spanish
202   translations were inactive because of small differences between PHP
203   and C (such as using %d and %i in format strings).
204
205 * Added Polish translation by Jakub Bogusz from the libexif project.
206
207 * Corrected tag documentation in PelTag.
208
209 * Made edit-description.php correctly add an empty Exif structure in
210   case the original image has none.
211
212 * Removed PelJpegContent::getSize() method.  Calling this method in
213   the PelExif subclass resulted in an error, and overriding it
214   correctly in PelExif would have required too much code to justify
215   the effort.
216
217 * Better doc comments and small code cleanups in PelJpeg.php,
218   PelExif.php, and PelIfd.php.
219
220 * PelEntry.php now unconditionally includes the class definitions of
221   all the entry types.  The conditionally loading only worked when one
222   created a new PelJpeg object, but not when one had stored such an
223   object in, say, a session.
224
225 * Moved PelEntry::newFromData() to PelIfd::newEntryFromData() since it
226   needs knowledge about PelIfd::$type.  Updated the documentation it
227   to indicate that one shouldn't use this method unless the data comes
228   directly from an image.  The method signature was corrected with a
229   type hint, so that $data really is a PelDataWindow.
230
231 * Updated the documentation in PelTag.  All tags now details their
232   expected format and the expected number of components.  One can
233   still freely choose to obey or disregard these constrains, but doing
234   so will lead to non-compliant images, which might cause PEL to throw
235   exceptions when reloading.
236
237 * Updated the documentation in PelFormat with links to the PelEntry
238   classes corresponding to each format.
239
240 * Updated the make-release.sh script to use a run-phpdoc.sh script for
241   generating the API documentation.
242
243
244 ## 0.8.0 - 2005-02-18
245
246 Notes:
247
248 Erroneous entries will now be skipped while loading instead of causing
249 a total abort.  The documentation was expanded with a short tutorial
250 and a FAQ.  New test images were added from Leica D-LUX, Olympos C50Z
251 and C765 cameras.
252
253 Changes:
254
255 * Added more documentation in the form of a short tutorial and a FAQ.
256
257 * Instead of aborting on load errors, PelIfd::load() will now continue
258   with the next entry.  A warning will be issued if debugging is
259   turned on in PEL.
260
261 * Added a PelEntryException class.  When an entry cannot be loaded in
262   PelEntry::newFromData(), an appropriate subclass of this exception
263   will be thrown.
264
265 * Described the requirements in terms of formats and component counts
266   in the documentation for individual tags in PelTag.
267
268 * Fixed the edit-description.php example, it still used PelEntryString
269   instead of PelEntryAscii.  Thanks goes to Achim Gerber.
270
271 * Fixed the throwing of a PelWrongComponentCountException in PelEntry,
272   the class name was misspelled.
273
274 * Added abstract getValue() and setValue() methods to PelEntry, to
275   better describe that all objects representing Exif entries have
276   those two methods.
277
278 * Updated copyright statements throughout the source to year 2005.
279
280 * Fixed (some) of the XHTML errors in the phpDocumentor template.
281
282
283 ## 0.7.0 - 2004-10-10
284
285 Notes:
286
287 Running PEL under PHP version 5.0.2 would produce incorrect Exif data,
288 this was fixed so that PEL works correctly on all versions of PHP 5.
289 PEL now runs on installations without support for Gettext, but does so
290 with English texts only.  A new example script was added, showing how
291 one can mass-rename images based on their timestamps using PEL.  The
292 Danish translation was updated slightly.  The collection of test
293 images has been split out as a separate download, cutting down on the
294 size of a PEL download.
295
296 Changes:
297
298 * The image tests are now split into their own, separate download.
299
300 * Added a test image from a Canon PowerShot S60.
301
302 * Fixed a bug caused by a change in the way PHP 5.0.2 handles integers
303   larger than 2^31-1.  This change means that one can no longer use
304   PelConvert::longToBytes() to convert both signed and unsigned bytes,
305   one must now use sLongToBytes() for signed longs and longToBytes()
306   for unsigned bytes.
307
308 * Added a work-around, so the PEL will run (with English texts only)
309   on installations without support for Gettext.
310
311 * Added test/rename.php which shows how one can easily rename images
312   based on their Exif timestamps.
313
314 * Updated the Danish translation.
315
316 * Removed trailing newlines at the end of Pel.php and PelConvert.php.
317
318
319 ## 0.6 - 2004-07-21
320
321 Notes:
322
323 The interface for PelJpeg and PelTiff was changed so that one can now
324 add new content from scratch to JPEG and TIFF images.  Bugs in the
325 loading of signed bytes and shorts were fixed, as well as a bug where
326 timestamps were saved in UTC time, but loaded in local time.  The code
327 that turned PelJpeg objects into bytes was fixed, and new test cases
328 were written to test the writing and reading of PelJpeg objects to and
329 from files.  New images from Nikon models E950, E5000, and Coolscan IV
330 have been added to the test suite, bringing the total number of tests
331 up to more than 1000.
332
333 Changes:
334
335 * The timestamps were saved as UTC time in PelEntryTime, but loaded as
336   local time in PelEntry.  This lead to differences when one tried to
337   load a previously saved timestamp.
338
339 * Changed the constructors in PelJpeg, PelExif, PelTiff, and PelIfd so
340   that one can now make new objects without filling them with data
341   immediately.  This makes it possible to add, say, a new APP1 section
342   with Exif to a JPEG image lacking such information.
343
344 * Fixed loading of signed bytes and shorts in PelConvert.
345
346 * Renamed the isValidMarker() method into just isValid() in
347   PelJpegMarker, so that it matches the other isValid() methods found
348   in PelJpeg and PelTiff.
349
350 * Added test images from Nikon models E950, E5000 and the film scanner
351   Coolscan IV ED, and added tests that would read their contents.
352
353 * The shell scripts could only be run from the test directory because
354   of the use of relative paths in the require_once() statements.  The
355   scripts can now be run from any directory.
356
357 * A stupid bug that prevented PelJpeg objects from being turned into
358   bytes was fixed.
359
360 * Fixed the output of PelEntryRationals::getText().
361
362
363 ## 0.5.0 - 2004-06-28
364
365 Notes:
366
367 This release has been tested with images from a number of different
368 camera models (from Fujifilm, Nikon, Ricoh, Sony, and Canon), leading
369 to the discovery and fixing of a number of bugs.  The API for
370 PelJpeg::getSection() was changed slightly, making it more convenient
371 to use.  All classes and methods are now documented.
372
373 Changes:
374
375 * Some images have content following the EOI marker --- this would
376   make PEL thrown an exception.  The content is now stored as a
377   PelJpegContent object associated with the fictive marker 0x00.
378
379 * Added code to handle images where the length of the thumbnail image
380   is broken.  PEL would previously throw an exception, but the length
381   is now adjusted instead, and the parsing continues.
382
383 * Fixed a number of bugs regarding the conversion back and forth
384   between integers and bytes.  These bugs affected the parsing of
385   large integers that would overflow a signed 32 bit integer.
386
387 * Fixed bug #976782.  If an image contains two APP1 sections, PEL
388   would crash trying to parse the second non-Exif section.  PEL will
389   now just store a non-Exif APP1 section as a generic PelJpegContent
390   object.
391
392 * Removed the PelJpegSection class.  This lead to a rewrite of the
393   PelJpeg::getSection() method, so that it now takes a PelJpegMarker
394   as argument instead of the section number.
395
396 * The byte order can now be specified when a PelTiff object is
397   converted into bytes.
398
399 * Updated documentation, PEL is now fully documented.
400
401
402 ## 0.4.0 - 2004-06-09
403
404 Notes:
405
406 The infrastructure for internationalization has been put in place.
407 Preliminary translations for Danish, German, French, and Spanish is
408 included.  Support for tags with GPS information were disabled due to
409 conflicts with a number of normal tags.
410
411 Changes:
412
413 * Disabled the code that tries to look up the title and description of
414   the GPS related tags, since those tags have the same hexadecimal
415   value as a number of other normal tags.  This means that there is no
416   support for tags with GPS information.
417
418 * Marked strings for translation throughout the source code.
419
420 * Added German, French, and Spanish translations taken from libexif.
421   The translations were made by Lutz M�ller, Arnaud Launay, and Fabian
422   Mandelbaum, respectively.
423
424 * Added Danish translation.
425
426 * Added new static methods Pel::tra() and Pel::fmt() which are used
427   for interaction with Gettext.  The first function simply translates
428   its argument, the second will in addition function like sprintf()
429   when given several arguments.
430
431 * Updated documentation, both the doc comments in the code and the
432   README and INSTALL files.
433
434
435 ## 0.3.0 - 2004-05-25
436
437 Notes:
438
439 Support was added for parsing TIFF images, leading to a mass renaming
440 of files and classes to cleanup the class hierarchy.  The decoding of
441 Exif data is now tested against known values (over 400 individual
442 tests), this lead to the discovery of a couple of subtle bugs.  The
443 documentation has been updated and expanded.
444
445 Changes:
446
447 * Renamed all files and classes so that only Exif specific code is
448   labeled with Exif.  So, for example, PelExifIfd is now PelIfd, since
449   the IFD structure is not specific to Exif but rather to TIFF images.
450   The same applies to the former PelExifEntry* classes.
451
452 * Fixed offset bug in PelDataWindow::getBytes() which caused the
453   method to return too much data.
454
455 * Added support for the SCENE_TYPE tag.
456
457 * Fixed display of integer version numbers.  Version x.0 would be
458   displayed as just version 'x' before.
459
460 * Unit tests for Exif decoding.  PEL is now tested with an image from
461   a Sony DSC V1 and one from a Canon IXUS II.
462
463 * Changed all occurrences of include_once() to require_once() since
464   the files are required.
465
466 * Updated documentation all over.
467
468
469 ## 0.2.0 - 2004-05-16
470
471 Notes:
472
473 This release brings updated documentation and better support for the
474 Exif user comment tag and tags containing version information.  The
475 code is now tested using SimpleTest.
476
477 Changes:
478
479 * All PelExifEntry descendant classes now use setValue() and
480   getValue() methods consistently.
481
482 * Signed and unsigned numbers (bytes, shorts, longs, and rationals)
483   are now handled correctly.
484
485 * The SimpleTest (http://sf.net/projects/simpletest) framework is used
486   for regression testing.
487
488 * Added new PelExifEntryUserComment class to better support the Exif
489   user comment tag.
490
491 * Added new PelExifEntryVersion class to support the Exif tags with
492   version information, namely the EXIF_VERSION, FLASH_PIX_VERSION, and
493   INTEROPERABILITY_VERSION tags.
494
495 * Updated doc comments all over.
496
497
498 ## 0.1.0 - 2004-05-08
499
500 Notes:
501
502 The initial release of PEL.  Most of the functionality is in place:
503 JPEG files are parsed, Exif entries are found and interpreted, the
504 entries can be edited and new entries can be added, and finally, the
505 whole thing can be turned into bytes and saved as a valid JPEG file.
506
507 The API is still subject to change, and will remain so until version
508 1.0 is reached.