1These are all the release notes for versions 0.1 (Sept 2008) - 0.10 (Feb 2012).
2For the full release notes of all versions, see:
3[CHANGES](https://github.com/OpenImageIO/oiio/blob/master/CHANGES.md).
4
5
6Release 0.10.5 (20 Feb 2012)
7----------------------------
8* Improvements to anisotropic texture filtering: (1) fix for degenerate
9  derivatives that could corrupt the filter footpring calculations,
10  resulting in an infinitely long major axis; (2) more efficient subpixel
11  filtering for very narrow anisotropic footprints when on the highest-res
12  MIP level.
13
14
15Release 0.10.4 (November 20, 2011)
16----------------------------------
17* Important texture bug fix: Improve robustness of texture lookups with
18  very small derivatives.  The previous bug/misunderstanding had the
19  result of some filter footprints with very small (but valid)
20  derivatives inappropriately using the highest-resolution MIPmap level
21  and maximum anisotropy, resulting in terrible performance, alising,
22  and in some cases visible seams on the boundary between where this
23  happened and where it didn't.  Be aware that the fixed code will make
24  some areas of texture look less sharp, but that's only because it was
25  aliasing before and using a totally incorrect MIPmap level.
26
27
28Release 0.10.3 (November 5, 2011)
29---------------------------------
30* New ImageCache/TextureSystem option: "autoscanline", which, when
31  autotile is turned on, causes the virtual tiles to be the full width
32  of the image scanlines, rather than square.  This improves performance
33  for some apps.
34* Bug fix: PNG files with both associated alpha and gamma correction lost
35  precision when converting.
36* Bug fix: ICO and Targa did not properly force requested (but
37  unsupported) UINT16 output to be UINT8.
38* maketx (and Filter classes): fixes to sinc, blackman-harris filters.
39* Minor Python binding bug fixes.
40* Allow stream << of TypeDesc.
41* Fix minor Timer::lap() bug.
42
43
44Release 0.10.2 (August 6, 2011)
45-------------------------------
46* Improve the performance of ustring constructor when highly multithread.
47* Remove old out-of-date Doxygen html pages.
48
49
50Release 0.10.1 (August 2, 2011)
51-------------------------------
52* Fix TextureSystem::get_texture_info(file,"exists") (and the equivalent for
53  ImageCache), it was previously incorrectly giving an error if the file
54  didn't exist.
55* Fixed an error where we were losing the error message if ImageInput::create
56  failed.
57* maketx: --hash is deprecated, the SHA-1 hash is always computed; the
58  hash takes into account upstream image changes, such as resizing; the
59  --filter command line argument only takes the filter name, the width
60  is now automatically computed.
61* Add static methods to Filter classes allowing queries about the names
62  and vital info about all available filters.
63* New Filesystem::is_regular() wraps the boost is_regular and catches
64  exceptions.
65* iv: raise the maximum ImageCache settable in the UI from 2GB to 8GB.
66* Bug fixes with per-channel data formats.
67* Add Strutil::escape_chars() and unescape_chars() utility functions.
68* TextureOpt: add ustring-aware versions of the decode_wrapmode() utility.
69
70
71
72Release 0.10 (June 9 2010)
73--------------------------
74
75Major new features and improvements:
76
77* TextureSystem: fix longstanding texture quality issues: underestimation
78  of anisotropic filter footprint, improved metric for determining when to
79  switch to bicubic filtering, better MIP level selection for non-square
80  images.
81* maketx --filter allows you to specify the filter for resizing and
82  downsizing to generate MIPmap levels (this lets you choose a filter
83  that is better than the default "box").
84* TextureSystem option "gray_to_rgb", when set to nonzero, promotes
85  grayscale (single channel) texture lookups to RGB (rather than using
86  the fill color for missing channel.
87* IFF (Maya) support from Mikael Sundell.
88
89API changes:
90
91* TextureSystem has additional API entry points for apps that want to
92  retrieve an opaque texture handle and per-thread info and then pass it
93  back to texture lookups, saving some name resolution and per-thread
94  retrieval time.  (The old routines that do this all automatically still
95  work just fine.)
96* New ImageBufAlgo utilities: setNumChannels, isConstantColor, isMonochrome,
97  computePixelHashSHA1, transform.
98
99Fixes, minor enhancements, and performance improvements:
100
101* ImageCache/TextuerSystem:
102  - option "accept_untiled" wasn't properly recognized (0.9.1); new
103    attribute "accept_unmipped" (default to 1), when set to zero, will
104    treat any un-MIPmapped file as an error (analogous to the existing
105    "accept_untiled") (0.9.2);
106  - fix deadlock when file handles are exhausted (0.9.3);
107    invalidate_all() no longer closes all files unconditionally, only
108    the ones actually invalidated;
109  - fix longstanding problem where multiple threads could redundantly
110    open and read the same file if they need it simultaneously and it
111    isn't in cache already;
112  - get_pixels issues a single error from a corrupt file, rather than
113    reporting error after error on the same file.
114* Texture: Fixes to make latlong environment maps more correct for OpenEXR
115  files, which have some particular unique conventions. (0.9.1);
116  bug fix to TextureOpt default initializer that could screw up texture
117  lookups. (0.9.1)
118* maketx fixes: the -oiio command line option also enables hash generation;
119  resize properly if any of the dimensions change (previously only did
120  if ALL dimensions changed) (0.9.3); --nchannels lets you set the number
121  of output channels.
122* Added ImageBufAlgo::transform to allow for 'flip' & 'flop' in iprocess.
123  (0.9.1)
124* DPX: fix file reading when number of channels not equal to 3 (0.9.3);
125  support for endianness specification, fix lots of problems writing metadata.
126* BMP: RGB-to-BGR conversion fixed, force UINT8 output; scanline size was
127  incorrect when copying to temporary buffers.
128* JPEG: reader is more robust to corrupted files and other problems.
129* JPEG-2000: support files with more than 8 bits per channel.
130* Targa: properly expand 5 bit per channel to full bytes.
131* Fixed incorrectly set "ResolutionUnit" and "BitsPerSample" usage in several
132  format plugins.
133* Improved handling of file formats that allow unassociated alpha.
134* iv: display non-Latin filenames properly.
135* iconvert --noclobber option ensures that existing files aren't overwritten.
136* iinfo: fixes to properly print subimage and mipmap statistics.
137
138For developers / build issues:
139
140* Fix USE_TBB macro on Windows build. (0.9.1)
141* Fixes required for Windows compile in conjunction with OSL. (0.9.1)
142* Removed some pointless debugging output to the console. (0.9.1)
143* Fix subtle bug in convert_type utility function that was causing a slight
144  incorrect rounding when converting float to a signed integer type. (0.9.3)
145* Fix to compile properly against Boost 1.46. (0.9.3)
146* Update pugixml from 0.5 to 1.0.
147* Remove boost::test and gtest as dependencies, use our own macros.
148* Fixes to allow use of libtiff 4.0.
149* make USE_JASPER=0 USE_FIELD3D=0 make it easy to disable Jasper and
150  Field3D as dependencies.
151* Various fixes to make cleaner compiles with clang.
152* ustring: Added find* methods that match those of std::string, expose
153  make_unique, is_unique, and from_unique helper functions.
154* Add Filesystem::exists and Filesystem::is_directory.
155
156
157
158Release 0.9 (Dec 9 2010, updated Feb 23, 2011)
159----------------------------------------------
160Major new features:
161
162* New format plugin: DPX
163* New format plugin: Cineon (currently read only) (r1599,1600,1601,1617)
164* New format plugin: Ptex (currently read only) (r1655,1664).
165* New format plugin: Field3D (currently read only) (r1659,1666,1669)
166* Support for files that are simultaneously multi-image and where each
167  subimage may also be mipmapped (these concepts were previously
168  comingled).  This mainly effects ImageInput::seek_subimage and
169  ImageOutput::open, as well as some minor methods of ImageCache and
170  ImageBuf.  (r1655,1656,1664,1671)
171* Support for per-channel data formats via the new ImageSpec::channelformats
172  vector and interpreting read_foo/write_foo format parameter of UKNOWN
173  as a request for the true native format.  (r1674)
174* Full support of TextureSystem environment() for lat-long maps.
175
176API changes:
177
178* Single-point texture lookup struct (TextureOpt) and additional
179  single-point texture lookup entry points.  (r1679)
180* Filter{1D,2D} class now has a destroy() method to match its create(),
181  and create() accepts "bspline" and "catrom" as synonyms for the
182  existing "b-spline" and "catmull-rom" fileters. (r1542)
183* Add methods to ImageSpec to read/write an XML representation of the
184  ImageSpec (r1574).
185* Finally put all the helper classes (ustring, TypeDesc, etc.) that were
186  in the main OpenImageIO namespace, as well as centralized version numbering
187  and custom namespace control.
188* ParamList now has a method to remove attributes.
189* Color handling change: color space now is a metadata string,
190  "oiio:ColorSpace", not 'linearity' data member of ImageSpec; remnants of
191  bad 'dither' ideas have been removed; "BitsPerSample" metadata has been
192  renamed "oiio:BitsPerSample" and several bugs have been fixed related to
193  it in some of the image plugins.
194* Moved some ImageBuf methods into functions in imagebufalgo.h.
195
196Fixes, minor enhancements, and performance improvements:
197
198* OpenEXR: Allow read/write with different data formats per channel (r1674).
199* SGI: add support for files with any number of channels (r1630).
200* PNG: improve PNG write speed by 4x by adjusting compression tradeoffs
201  (r1677)
202* JPEG: assume sRGB unless EXIF says otherwise (r1693); fix broken JPEG
203  4-channel to 3-channel conversion (r1696).
204* PNM: monochrome data was output incorrectly in both binary & ascii forms;
205  adopt the Netbpm convention for endianness in the 16 bit case; open binary
206  image files in binary mode to avoid newline mangling (r1709).
207* TIFF: more sensible checkpointing logic greatly reduces header rewriting.
208* iinfo: add --stats option (r1618)
209* iv: Now can sort the image list by file date, metadata date, name, or
210  file path (r1514).
211* ImageCache: fixed bug that allowed the max_open_files limit to be
212  exceeded (r1657); raise the default IC cache size to 256 MB (r1663);
213  automip unmipped files even if they are tiled (r1670); fix bug wherein
214  an invalidated and modified file would continue to flush in subsequent
215  invalidations, even if the file was not modified again (r1712/0.8.8).
216* New ImageBuf algorithm: computePixelStats (r1618)
217* Fixes in ImageCache and ImageBuf to allow correct handling of
218  3D (volumetric) files. (r1659,1660)
219* ImageCache fixed to ensure that multiple threads don't try to concurrently
220  open the same file.
221* Properly append error messages; ASSERT if the error message buffer
222  exceeds 16 MB (which means somebody is failing to call geterror) (1672)
223* Fix subtle Strutil::format and ustring::format crasher bugs with long
224  strings (r1654 - 0.8.8).
225* Print the OIIO version in the ImageCache stats so we don't guess
226  when somebody sends us a log file with complaints.
227* ImageCache::getattribute can retrieve its interesting internal
228  statistics individually by name. (r1721)
229* idiff and iv increased their IC cache size. (r1722)
230* idiff bug fixes: (1) files with different number of MIPmap levels
231  immediately failed, whereas they should have compared their top
232  levels, and only fail if the "-a" flag was used; (2) some failure
233  modes incorrectly printed a "PASS" message despite actually failing. (r1722)
234* Changed the environment variable that contains the plugin search path
235  from IMAGEIO_LIBRARY_PATH to OPENIMAGEIO_LIBRARY_PATH. (r1723)
236* Bug fix to ImageInput::read_image -- could crash due to an internal
237  buffer allocated as the wrong size. (r1724)
238* Bug fixes to write_image(), related to subtle stride errors.
239* Improved strhash, fewer ustring hash collisions.
240* New maketx functionality: --constant-color-detect, --monochrome-detect,
241  --prman, --oiio (look in docs for explanation).
242
243For developers / build issues:
244
245* testtex: print memory use (r1522)
246* Embedded plugins are now built within the OIIO namespace, if defined (r1559).
247* Fixed implementation of TypeDesc construction from a string. (r1562)
248* Incorporate PugiXML for XML parsing/writing needs (r1569).
249* In-progress socket I/O plugin is in the code base, but not yet fully
250  supported.
251* Disable python support if boost_python is not found. (r1701)
252
253
254Release 0.8 (May 26 2010)
255-------------------------
256Major new features:
257
258* Python bindings for the ImageInput, ImageOutput, ImageSpec, ImageBuf,
259  and ImageCache classes.
260* New format plugin: SGI image file
261* New format plugin: PNM/PPM/PGM/PBM
262* New format plugin: DDS (currently reading only)
263* New format plugin: Softimage PIC (currently reading only)
264
265API changes:
266
267* New "linearity" tags include AdobeRGB, Rec709, and KodakLog.
268* ColorTransfer helper class can convert among the linearity types, and
269  may be optionally passed to convert_image and convert_types.
270* Added to fmath.h: sincos, exp2f, log2f
271* Renamed ErrHandler::ErrCode enums with EH_ prefix (to fix conflicts
272  with some Windows headers).
273* ustring now has getstats() and memory() methods.
274
275Fixes, minor enhancements, and performance improvements:
276
277* ImageInput::create() error messages are more helpful.
278* Fixed some error messages in FITS output, iconvert.
279* maketx: Console flushes in status messages to that a calling process
280  will get status messages right away.
281* Fix subtle ImageCache bug with invalidate().
282* ImageCache/TextureSystem have improved multithreading performance
283  when large untiled files are needed simultaneously by many threads.
284* TextureSystem: new 'missingcolor' texture option that, when provided,
285  can specify a color that will be used for missing textures rather than
286  generating errors.  (If not supplied, missing tex is still an error.)
287* BMP plugin enhancements.
288* TIFF: support 64-bit float pixels, proper random scanline access emulation
289  for all appropriate compression types, handle incorrectly set-to-zero
290  image_full_width and image_full_height. (r1515 - 0.8.1)
291* PNG: properly handle palette images, unassociated alpha, gamma
292  correction, endianness for 16-bit files, and has vastly better memory
293  consumption due to reading scanlines individually rather than
294  buffering the whole image (r1523 - 0.8.1); fix clamping/wrapping
295  problem for certain values when alpha > color. (r1605 - 0.8.3)
296* iv fixes: fix improper recentering after image reload; fix crash when
297  image info window opened without any image files loaded; better status
298  window message when image reads fail; iv goes into background properly
299  in Windows; "slide show" mode; pixel view display moves if you need to
300  look at pixels underneath it;
301* ImageCache bug: previously couldn't designate a cache > 2GB (because of
302  integer overflow issues).
303* ImageCache::get_image_info and TextureSystem::get_texture_info now respond
304  to a new "exists" query that merely tests for existance of the file. (0.8.1)
305* ImageCache/TextureSystem fix for a threading logic bug that could potentially
306  lead to a deadlock (and definitely led to hitting a DASSERT when compiled
307  for DEBUG mode). (0.8.1)
308* maketx performance improvements: --noresize is now the default (use
309  --resize if you really want power-of-two resizing); much better
310  performance because it doesn't use ImageCache unless the image being
311  converted is very large; takes advantage of multiple cores by
312  automatically multithreading (the number of threads can be controlled
313  by the "-t" option, with the default to use the same number of threads
314  as hardware cores). (r1546 - 0.8.2)
315* Fix potential crash in read_tile for files with tiles so big that they
316  would not fit on the stack (heap allocation used instead). (0.8.2)
317* OpenEXR: add support for vector metadata attributes. (r1554 - 0.8.2)
318* Improve TIFF open error messages. (r1570 - 0.8.3)
319* Make ImageCache::get_pixels() and TextureSystem::get_texels() safe for
320  crop windows -- fill with zero outside the valid pixel data area. (r1579 - 0.8.3)
321* In ImageCache::attribute (and by extension, TS::attribute), only
322  invalidate the cache if the attributes actually CHANGED. (r1582 - 0.8.3)
323* maketx: --checknan option double checks that no source image pixels
324  are NaN or Inf (r1584 - 0.8.3).
325* Fixed crash that could result from certain XML strings embedded in TIFF
326  headers (uncaught exception). (0.8.5)
327* Fixed ImageCache deadlock when using autotile. (r1631 - 0.8.6)
328* Fixed a longstanding performance issue with ImageCache automip, wherein
329  an unmipped file that is larger than the cache size leads to pathological
330  thrashing.  The solution is to automatically raise the cache size to be
331  large enough to automip the file without danger of thrashing. (r1657 - 0.8.7)
332
333For developers / build issues:
334
335* EMBEDPLUGINS=1 is now the default.  This means that all the format
336  plugins that come with OIIO are compiled into the main library, so
337  there's no reason for users to set $IMAGEIO_LIBRARY_PATH unless they
338  need custom format plugins not supplied with the main distribution.
339* Fix compiler warnings (mostly under Windows): TBB stuff, ustring, windows.h.
340* Option to build static libraries (with 'make LINKSTATIC=1').
341* Fixes to make clean compilation with gcc-4.4.2.
342* Allow custom 'platform' designation in the build.
343* Allow custom installation destination ('make INSTALLDIR=...').
344* ustring now takes half the memory (by no longer redundantly storing the
345  characters on Linux and OS X).
346* Always use TBB (better performance on Windows for atomics). [0.8.2]
347
348
349
350Release 0.7 (Nov 26 2009)
351--------------------------
352
353Major new features:
354
355* New format plugin: JPEG-2000 (r1050)
356* New format plugin: FITS (r1287 et al)
357* TextureSystem: two new entries to TextureOptions which allow the texture
358  system to return the derivatives in s and t of the texture. (r1308)
359
360API changes:
361
362* Added imagespec() method to ImageCache and TextureSystem that returns a
363  reference to the internal ImageSpec of the image.  This is much more
364  efficient than get_imagespec, but beware, the pointer is only valid
365  until somebody calls invalidate() on the file.  (r1266)
366* TextureOptions: eliminated the 'alpha' field.  Added the dresultds and
367  dresultdt fields.
368* Extend TypeDesc to include INT64 and UINT64. (r1145)
369
370Fixes, minor enhancements, and performance improvements:
371
372* Make EMBEDPLUGINS=1 the default. (0.7.1)
373* Improvements to the Targa plugin, bringing it into compliance with
374  TGA 2.0 (r1163, r1297)
375* Fixed PNG-related crashes on 64 bit machines. (r1336)
376* iv improvements: support for multichannel images and different color
377  modes (r1129), support auto use mipmap level based on zooming (r1093),
378  correct pixelview for rotated images (r1092), fix off-by-one error
379  with some zoom levels (r1089).
380* maketx: fixed problem where it was sometimes not setting the output
381  data format to match the input data format correctly (r1290), fixed
382  problems with writing EXR files with --nomipmap (r1286), fixed cases
383  where data window was not the same as display window (i.e. crop or
384  overscan).
385* ImageCache/TextureSystem: various threading and performance improvements.
386  (r1188, r1211, r1288, r1299)
387* TS: fixed incorrect "texturetype" results of get_texture_info. (r1314)
388* IC/TS: fixed crasher bugs when doing get_pixels of images that had
389  non-zero data window origin. (r1313)
390* IC/TS: better error messages and recovery from spooky open and read_tile
391  failures. (r1321)
392* When IC/TS reads and entire (untiled) image, the file is closed afterwards.
393  This is especially helpful on Windows where open files are locked to
394  writing by other processes. (r1298)
395* HUGE speedup of ImageCache::get_image_info (and TS::get_texture_info)
396  b replacing strcmp's with ustring == (r1281).
397* IC: fixed various subtle logic errors with broken files and
398  invalidate/invalidate_all. (r1252, r1279)
399* IC/TS: fixed memory leak of per-thread imagecache data and subtle race
400  conditions. (r1057, r1216, r1222, r1238)
401* TS: fixed problem where missing or broken textures weren't using the
402  right fill color. (r1268)
403* IC: Clamp cache size to a reasonable lower limit (r1256)
404* TS: improvements to filter estimation (1134) and bicubic interpolation
405  numerical stability and speed (r1166, r1179, r1333).
406* IC: when autotile=0 but automip=1, fixed bug that was wasting HUGE
407  amounts of memory by using the wrong resolution for mip levels! (r1147)
408* IC: fix an edge case where tiles could leak. (r1044)
409* Fixed some hairy static initialization problems with ustring (r1280)
410* Use a spin lock rather than block in ustring constructor gives HUGE
411  speedup especially on Windows. (r1167)
412* TS: Make everything work for textures whose image origin is not (0,0)
413  or whose pixel data window doesn't match the image window (i.e. crop
414  windows or overscan).  (r1332)
415* IC/TS: Correctly invalidate files afected by recently changed "automip"
416  setting. (r1337)
417* IC/TS: fix crash that could occur with non-existant textures in combination
418  with invalidate_all(). (r1338)
419* Make create() error messages more helpful. (0.7.1)
420
421For developers:
422
423* Build more easily when older OpenEXR versions are found. (r1082)
424* HTML Doxygen documentation on the public APIs. (r1311, r1312, et al)
425* Sysutil::this_program_path finds the full path of the running program.
426  (r1304)
427* Better compiler-side error checking of printf-like functions (r1302)
428* A new site/... area where important users with local build customization
429  needs can check in (reasonably sized) custom makefiles or other helpful
430  things. (r1284)
431* New ErrorHandler class, currently unused by OIIO itself, but very handy.
432  (r1265)
433* Fixed lots of compiler warnings.
434* Upgraded to a more recent TBB, which fixed some atomic problems. (r1211)
435* ustring: make string comparison safe for empty strings. (r1330)
436* Include file fixes for gcc 4.4. (r1331)
437* Regularize all #include references to Imath and Openexr to
438  `<OpenEXR/blah>`. (r1335)
439
440
441
442Release 0.6 (Jul 20, 2009)
443--------------------------
444
445Major new features:
446
447* Everything has been ported to Windows.
448* iv: handle older cards or versions of OpenGL, including lack of GLSL,
449  non-pow2 textures, etc.  Generally should now be usable (if slightly
450  degraded functionality) for most OpenGL 1.x implementations. (r764)
451* ImageBuf that only reads images is now automatically backed by
452  ImageCache.  In the process, add Iterator and ConstIterator as "safe"
453  and efficient ways to visit all the pixels within a region of the
454  image, and eliminate the unsafe pixeladdr() method.  Also added
455  ImageCache::attribute("forcefloat") to conveniently force all
456  ImageCache internal storage to be float.  (r770,771,772,775,803,805)
457* iv can now support "big" images, in particular larger than the OpenGL
458  texture limit (4k), and also very big images via the use of ImageCache
459  (r912).
460* Truevision Targa (TGA) support. (r776,792)
461
462API changes:
463* In a variety of places that specified pixel rectangles (including
464  ImageCache::get_pixels and TextureSystem::get_texels), specify regions
465  as (xbegin,xend,ybegin,yend) rather than (xmin, ymin, xmax, ymax).
466  Note that 'end' is, like STL, one past the last pixel. (r771)
467* All classes now query error messages using geterror().  Previously some
468  used geterror() and others used error_message(). The old error_message
469  is deprecated and will be removed in a future release (r957).
470
471Fixes and minor enhancements:
472
473* OpenEXR plugin improvements: don't set "textureformat" attribute
474  unless it really is a mip-mapped texture.  Preserve the mipmap
475  rounding mode when copying OpenEXR files, by using the
476  "openexr:roundingmode" metadata (r801). Properly mark the alpha
477  and z channels in the ImageSpec (r885).
478* TIFF plugin improvements: handle 2 bpp images, properly name channels
479  when reading palette images (r802), no longer uses the
480  PREDICTOR_FLOATINGPOINT, since older versions of libtiff can't read
481  those files (r752). Properly set the Exif sRGB marker (r888).
482* BMP plugin improvements: allows top-down scanlines as well as bottom-up,
483  correctly reads 4-, 8- and 24-bit images that have scanlines padded to
484  4-byte boundaries.
485* ImageBuf algorithms: crop, add (r892).
486* EXPERIMENTAL: 'iprocess' utility that lets you do some simple image
487  processing operations (r892).
488* ImageCache additional statistics: file open time (r743), alert if
489  mip-mapped images are accessed at only their highest-res level (r743).
490  Properly emulates random access reads of LZW-compressed files (r920).
491* iv: fix problems displaying images whose width was not a multiple of 4
492  bytes (r767), when loading small images, the window starts out a
493  usable minimum size, iv always raises the window upon first opening,
494  fix pixelview of alpha in RGB images (r939).
495* iv: Fix off-by-one error that drew the last scanline incorrectly
496  sometimes (r1089).  Give feedback when doing a slow repaint (r1089).
497* iv improvements: fix skew-like problems with Intel cards, fix non-GLSL
498  texture mapping, limit texture size to 4096^2 to keep GL memory use
499  reasonable make "Reload" work again after breaking a few patches ago
500  (r1090).
501* maketx: in the case where the input texture was already float and needed
502  no pow2 rounding, we didn't get the tiling or other metadata right (r824)
503* ImageCache and TextureSystem do a better job of reporting low-level
504  ImageInput errors up the chain (r945).
505* ImageCache: new option "accept_untiled", when set to zero, will reject
506  untiled images (r979).
507* 'maketx --hash' embeds a SHA-1 fingerprint of the source image's
508  pixels in the texture file header's "ImageDescription" field.
509  ImageCache (and TextureSystem) will recognize these and eliminate
510  redundant I/O when it finds multiple files with identical pixels.
511  (r741,742)
512* iinfo: eliminate --md5 in favor of --hash (computing SHA-1). (r749)
513* Fix ImageCache and TextureSystem to have thread-specific error
514  reporting. (r1045)
515* TextureSystem: fixed subtle bug in destruction order that could
516  double-free per-thread data. (r1057)
517* ImageCache: now get_image_info("format") returns teh native data format
518  of the file. (r1058)
519* maketx: properly handle input files where the data window is not the
520  same as the display window or if the image offset was nonzero.  The
521  correct semantics are that the DISPLAY window is what maps to [0,1] in
522  texture space. (r1059)
523
524For developers:
525
526* Lots of fixes for Windows compilation (r754, r860)
527* A build option for whether or not to use TBB for atomics.  (r780)
528* New test suite entries: tiff-suite, tiff-depths (r787,788), openexr-suite,
529  openexr-multires, openexr-chroma (r789,790,791).
530* New unit tests for ImageBuf::zero, ImageBuf::fill, ImageBufAlgo::crop (r891).
531* Reorganization of unit tests.
532* Improvements to ArgParse internals and interface.
533* All the macros that prevent double-inclusion of header files have had
534  their names changed from FILENAME_H to OPENIMAGEIO_FILENAME_H so that
535  they don't conflict with other package (r967).
536* Reorganized test suite hierarchy.
537* Optionally allow the entire library to be enclosed in a versioned
538  namespace (via 'make NAMESPACE=foo') .
539* Upgraded to a more recent version of TBB that seems to have fixed some
540  bugs with atomic counters. (r1027)
541
542
543
544Release 0.5 (31 May 2009)
545-------------------------
546
547Features:
548
549* New image format plugins: zfile (r529), ICO (r579,585,588,619,637),
550  BMP (reads only) (r580,584,614,625)
551* Support for multiple subimages in iinfo (r607), iconvert, idiff (r631),
552* ImageCache and TextureSystem: better stats (r528, r717), bug fixes for
553  large untiled images (r558,561), anisotropic improvements, stats
554  improvements, thread safety improvements (r566),
555  invalidate/invalidate_all (r591), better error reporting (r606),
556  thread safety fixes (r650), fix problem when filter size was precisely
557  at a mipmap level it blurred to higher level (r687), avoid problems
558  when blur > 1 and there is no 1x1 mip level (r687).
559* maketx: --shadow (r530), --nomipmap (r531), big speedups (r699).
560* idiff: add RMS error and PSNR (r622).
561* OpenEXR plugin: support "openexr:lineOrder" attribute so
562  random-tile-order files may be written (r569).
563* API: better handling of huge images that could have sizes > 32 bits (r575)
564
565Fixes and minor enhancements:
566
567* iinfo: fix - lack of help message when no files specified (r513).
568* maketx: make -u work properly (r517), wasn't honoring --separate (r532).
569* iconvert: add --separate and --contig (r535).
570* TIFF plugin: work around error in old versions of libtiff for IPTC
571  packets (r674).
572* JPEG plugin: if linearity is sRGB, set Exif:ColorSpace correctly (r536)
573* iv: more robust to certain OpenGL versions (r550), support for OpenGL
574  versions that don't support non-pow2 textures (r563), correct texture
575  mapping when GL_NV_texture_rectangle is the best texture mapping
576  extension we can find (r572).
577* idiff: refactored to use ImageBuf internally (r541)
578
579For developers:
580
581* Switch to CMake for builds.
582* Build enhancements: 'make USE_OPENGL=0' (r512), better handling of
583  certain system OpenGL headers (r512), more robust with Qt location
584  (r542), handle older Boost 1.35 (r574).
585* Tests: test_libOpenImageIO (r581), ico (r621),
586* More work towards clean windows compilation (r659,672).
587
588
589
590Release 0.4 (15 Mar 2009 - not formally released)
591-------------------------------------------------
592(compared to the 'initial' developer release of 1 Sep 2008)
593
594Features:
595
596* Lots of work on docs.
597* API changes:
598    - Replaced ParamBaseType/ParamType with TypeDesc.
599    - ImageSpec: add full_{x,y,z} fields.
600    - Changed ImageInput/ImageOutput create(), open(), and suports() to
601      take std::string instead of char* (r297)
602    - Added ImageOutput::copy_image (r428)
603    - TypeDesc - distinguish COLOR from NOXFORM. (r466)
604    - ImageInput:open(name,newspec,config). (r482)
605* igrep utility searches metadata of images (r447,455,499)
606* iconvert: add --caption, --keyword, --clear-keywords, --adjust-time
607  --attrib, --inplace (r484,488,491), --compression (r354), --quality
608  (r362).
609* iv: put into background after launch unless -F arg (r240),
610  alt-leftmouse zooms, handle sRGB correctly, GAMMA env variable, full
611  HDR for half and float (r243), honor full/display window versus data
612  window (r300), better view re-centering behavior (r355), fix
613  orientation bugs (r363,380,381).
614* TextureSystem: single point texture lookups (r247), have all routines
615  return a bool giving error status, rename gettextureinfo ->
616  get_texture_info, add get_imagespec, get_texels, geterror (r252,265),
617  replace hard-coded get/set routines with generic
618  attribute/getattribute (r321), accept non-tiled and non-mipped
619  textures (r317,319,388,389,390), separate the image cache into a
620  separate ImageCache class that may be used independently of
621  TextureSystem (r326,327,393), better statistics including per-file
622  stats (r333,360,375,429), invalidate method (r460).
623* TIFF plugin: read/write EXIF, IPTC IIM, and IPTC XPM/XML data
624  (r406,407,456,458)
625* JPEG plugin: read/write IPTC IIM, XMP, and GPS metadata
626  (r408,411,458,461), implement ImageOutput::copy_data() can copy images
627  without altering pixel values (r483).
628
629Fixes and minor enhancements:
630
631* ImageBuf: add option to read() that allows data format conversion (r244),
632  add oriented{x,y} and oriented_full_{width,height} methods (r296).
633* TextureSystem: fix bicubic filetering (r309), big memory savings by
634  not having libtiff use memory mapping (r332), lots of performance
635  tuning (r351), anisotropic texture improvements (r364), bug fixes for
636  search paths (r459).
637* iinfo: print color space and file format info (r241), better printing
638  of matrix metadata (r365), new options -f, -m (r501).
639* idiff: bug fix - not producing difference image (r402)
640* maketx: deduce default file format from extension (r275).
641* All format plugins: better error detection in open() for senseless
642  resolutions (r294,295)
643* OpenEXR plugin: handle float as well as half data, fixes when image
644  origin is not (0,0) (r291), fix leak of exr writer (r292), conform to
645  common conventions for camera matrix naming (r367), regularize
646  capitalization of metadata (r412)
647* TIFF plugin: bug fix for combination of tile + separate (r304), fixes
648  to retrieval of matrix tags (r366)
649* HDR plugin: emulate random access of scanlines (r387), better error
650  reporting (r451).
651* JPEG plugin: respect "CompressionQuality" (r361), emulate random
652  access of scanlines (r387), properly read & write JPEG_COM marker for
653  comments (r403), assume sRGB unless the metadata say otherwise (r414).
654
655For developers:
656
657* Preliminary work on Windows port (r398,399)
658* Include all the needed .h files in the dist area (r251)
659* Handle older gcc (r273), older boost (r301,431), older OpenEXR
660  (r301), older libtiff (r432).
661* 'make EMBEDPLUGINS=1' compiles the bundled plugins right into main
662  library (r302).
663* Put header files in dist/ARCH/include/OpenImageIO (r303), rename
664  src/libimageio -> src/libOpenImageIO (r382).
665
666
667
668Initial developer release 0.1 (1 Sep 2008):
669---------------------------------------
670
671* ImageInput, ImageOutput, TextureSystem APIs pretty mature
672* Plugins: TIFF, JPEG/JFIF, OpenEXR, PNG, HDR/rgbe
673* iv - basic display, multiple images, menus, status bar, info window,
674  basic prefs window, pixel view tool, zoom, pan, open, open recent,
675  close, save as, view subimages, view channels, gamma, exposure,
676  fit window to image, fit image to window, full screen.
677* iconvert
678* idiff
679* maketx
680* API docs for ImageInput, ImageOutput, writing plugins
681* Linux and OSX
682