<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<!--
This file is used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the 
release process easy :-).

2.  Do a Jira search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
CVS commits.  Set the project.properties' maven.changelog.range 
property to the number of days since the last release.


To generate the release notes from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

then tweak the source formatting if necessary and regenerate, then commit

The <action> type attribute can be add,update,fix,remove.
-->

<document>
  <properties>
    <title>Apache Commons Imaging Release Notes</title>
  </properties>
  <body>
    <release version="1.0-alpha2" date="2020-??-??" description="Second 1.0 alpha release">
      <action issue="IMAGING-253" dev="kinow" type="update" due-to="David Hrbacek">
        ByteSourceInputStream has initialized its length when reading starts
      </action>
      <action issue="IMAGING-249" dev="kinow" type="update">
        Make IPTCBlock members private and add getter/setter
      </action>
      <action issue="IMAGING-248" dev="kinow" type="add" due-to="Greg Shrago">
        ICNS: missing element types; some safety checks
      </action>
      <action issue="IMAGING-246" dev="kinow" type="fix">
        Invalid Block Size error prevents handling of block 1084, Macintosh NSPrintInfo
      </action>
      <action issue="IMAGING-163" dev="kinow" type="fix">
        Add XmpEmbedabble interface to parsers that support it
      </action>
      <action issue="IMAGING-245" dev="kinow" type="add" due-to="Christoffer Rydberg">
        Add disposal method to GIF metadata
      </action>
      <action issue="IMAGING-146" dev="kinow" type="add">
        Add documentation for the color package
      </action>
      <action issue="IMAGING-244" dev="kinow" type="add">
        Use isEmpty instead of comparing size() with integers
      </action>
      <action issue="IMAGING-151" dev="kinow" type="fix">
        ColorGroup.color_counts is mutable public List and is multiply sorted
      </action>
      <action issue="IMAGING-243" dev="kinow" type="add" due-to="Andreas Menze">
        PNG Writer Indexed Color with semi-transparent Pixels and Better Compression
      </action>
      <action issue="IMAGING-242" dev="kinow" type="fix">
        Upgrade to JUnit 5
      </action>
      <action issue="IMAGING-241" dev="kinow" type="fix">
        Copy byte arrays fixing TODO markers
      </action>
      <action issue="IMAGING-136" dev="kinow" type="fix" due-to="Michael Groß">
        Imaging.getImageInfo() fails to read JPEG file
      </action>
      <action issue="IMAGING-238" dev="kinow" type="fix">
        Return copied byte arrays in Png Chunk and Png Chunk ICCP
      </action>
      <action issue="IMAGING-239" dev="kinow" type="add" due-to="Paul Austin">
        Add inflate (deflate algorithm) to TIFF files
      </action>
      <action issue="IMAGING-164" dev="kinow" type="add" due-to="Michael Groß">
        Simplify code in IcoImageParser::writeImage
      </action>
      <action issue="IMAGING-165" dev="kinow" type="add" due-to="Michael Groß">
        Add the fields from TiffReader.Collector to TiffContents
      </action>
      <action issue="IMAGING-230" dev="kinow" type="fix">
        Properly close resources with try-with-resources in T4AndT6Compression
      </action>
      <action issue="IMAGING-134" dev="kinow" type="fix" due-to="Michael Sommerville">
        Invalid (RST) marker found in entropy data
      </action>
      <action issue="IMAGING-130" dev="kinow" type="fix" due-to="Michael Sommerville">
        Reading of some GIF images throws java.io.IOException: AddStringToTable: codes: 4096 code_size: 12
      </action>
      <action issue="IMAGING-228" dev="kinow" type="add">
        Remove private method PhotometricInterpreterLogLuv#cube by Math.pow
      </action>
      <action issue="IMAGING-224" dev="kinow" type="fix">
        Fix build errors in Travis
      </action>
      <action issue="IMAGING-167" dev="kinow" type="fix" due-to="Michael Groß">
        Possible infinite loop at XpmImageParser::writeImage
      </action>
      <action issue="IMAGING-211" dev="kinow" type="fix">
      	Imaging.getBufferedImage fails throwing java.lang.ArrayIndexOutOfBoundsException for specific inputs
      </action>
      <action issue="IMAGING-210" dev="kinow" type="fix">
        Imaging.getBufferedImage fails throwing NegativeArraySizeException for specific inputs
      </action>
      <action issue="IMAGING-236" dev="kinow" type="add" due-to="Christoffer Rydberg">
        Add support to read multiple images from GIF
      </action>
    </release>
    <release version="1.0-alpha1" date="2019-04-28" description="First 1.0 alpha release">
      <action issue="IMAGING-199" dev="kinow" type="fix" due-to="Ric Emery">
        All tEXt chunks are not returned from PngImageParser.getMetadata
      </action>
      <action issue="IMAGING-220" dev="kinow" type="fix">
        JpegDecoder takes a long time (+10s) to decode a bad JPEG
      </action>
      <action issue="IMAGING-219" dev="kinow" type="fix">
        Imaging gets stuck parsing a RGBE input file
      </action>
      <action issue="IMAGING-154" dev="kinow" type="update">
        Remove Debug class
      </action>
      <action issue="IMAGING-124" dev="kinow" type="update" due-to="Jens Kapitza">
        Tidy up IconParser
      </action>
      <action issue="IMAGING-215" dev="kinow" type="fix">
        ArrayIndexOutOfBoundsException in DhtSegment
      </action>
      <action issue="IMAGING-203" dev="kinow" type="fix" due-to="Rody Kersten">
        JPEG segment size not validated
      </action>
      <action issue="IMAGING-123" dev="kinow" type="update" due-to="Jens Kapitza">
        remove duplicated lines in T4AndT6Compression
      </action>
      <action issue="IMAGING-209" dev="kinow" type="fix" due-to="Isak Wertwein">
        PnmImageParser throws ImageWriteException when writing if PnmImageParser.PARAM_KEY_PNM_RAWBITS is provided
      </action>
      <action issue="IMAGING-205" dev="kinow" type="fix">
        Imaging (Apache Sanselan) produces "odd offsets" in (EXIF) metadata
      </action>
      <action issue="IMAGING-195" dev="britter" type="fix" due-to="Keith Strydom">
        Incorrect Maven coordinates on project website
      </action>
      <action issue="IMAGING-190" dev="sebb" type="fix">
        ImageDataReader.decompress() overwrites its input
      </action>
      <action issue="IMAGING-193" dev="sebb" type="fix">
        Duplicate class names
      </action>
      <action issue="IMAGING-189" dev="sebb" type="fix">
        parseXpmValuesSection uses &amp;&amp; instead of ||
      </action>
      <action issue="IMAGING-181" dev="damjan" type="fix">
        EXIF lens metadata tags missing in Commons Imaging but recognized in exiftool
      </action>
      <action issue="IMAGING-172" dev="damjan" type="fix">
        Microsoft tags are not seen in MS Windows Properties/Details dialog.
      </action>
      <action issue="IMAGING-186" dev="britter" type="update" due-to="Ric Emery">
        Add sCAL support to PNG reading and writing.
      </action>
      <action issue="IMAGING-176" dev="britter" type="fix" due-to="Gabriel Axel">
        TiffImageParser.getImageInfo() throws exception when "Compression" field is missing.
      </action>
      <action issue="IMAGING-178" dev="britter" type="fix" due-to="emopers">
        PnmImageParser does not check the validity of input PAM header.
      </action>
      <action issue="IMAGING-184" dev="ggregory" type="update">
        Update platform from Java 5 to 7
      </action>
      <action issue="IMAGING-112" dev="britter" type="update" due-to="Xavier Dury">
        JpegIptcRewriter.removeIPTC() does not remove all metadata
      </action>
      <action issue="IMAGING-171" dev="britter" type="fix" due-to="Jan Helbich">
        MicrosoftTagTest rewrite image exif fails in some environments
      </action>
      <action issue="IMAGING-169" dev="britter" type="fix" due-to="Nebu Pookins">
        PnmImageParser throws NumberFormatException instead of ImageReadException when parsing invalid images
      </action>
      <action issue="IMAGING-166" dev="britter" type="update" due-to="Michael Groß">
        ByteSourceImageTest: Local variable hides a field
      </action>
      <action issue="IMAGING-156" dev="britter" type="update">
        Refactor TagConstants
      </action>
      <action issue="IMAGING-144" dev="britter" type="fix" due-to="Paul Hartmann">
        TiffOutputSet.setGPSInDegrees should make sure, GPSVersionID is set
      </action>
      <action issue="IMAGING-126" dev="britter" type="update" due-to="Gary Lucas">
        TIFF and PNG images should not be bigger than the ones created by java ImageIO
      </action>
      <action issue="IMAGING-147" dev="britter" type="update" due-to="Stephan Koeninger">
        Add color constants
      </action>
      <action issue="IMAGING-150" dev="britter" type="update" due-to="Stephan Koeninger">
        Implement equals and hashcode on color classes
      </action>
      <action issue="IMAGING-117" dev="sebb" type="fix">
        Classes should not expose mutable arrays
      </action>
      <action issue="IMAGING-145" dev="ggregory" type="fix" due-to="Chris Carman">
        DumpImage method for JPEG reports it's coming from TIFF.
      </action>
      <action issue="IMAGING-137" dev="damjan" type="fix">
        Can not set EXIF_TAG_EXIF_VERSION tag.
      </action>
      <action issue="IMAGING-140" dev="damjan" type="fix" due-to="Gavin Shiels">
        ExifReWriter always writes EXIF segment before JFIF segment.
      </action>
      <action issue="IMAGING-131" dev="damjan" type="fix">
        Allow null parameters in PngImageParser.getBufferedImage(), and add some tests for null parameters.
      </action>
      <action issue="IMAGING-121" dev="damjan" type="fix" due-to="Piyush Kapoor">
        Null Pointer exception while extracting metadata for CR2 image.
      </action>
      <action issue="IMAGING-115" dev="damjan" type="fix">
        DhtSegment class contains mutable public arrays.
      </action>
      <action issue="IMAGING-117" dev="damjan" type="fix">
        SofnSegment.components - public mutable array.
      </action>
      <action issue="IMAGING-116" dev="damjan" type="fix">
        GenericSegment.bytes - public mutable array.
      </action>
      <action issue="IMAGING-118" dev="damjan" type="fix">
        interface RgbeConstants contains mutable array.
      </action>
      <action issue="IMAGING-114" dev="damjan" type="fix">
        ComSegment.comment is a public final byte array.
      </action>
      <action issue="IMAGING-109" dev="damjan" type="fix">
        Several files contain non-UTF8 characters.
      </action>
      <action issue="IMAGING-113" dev="damjan" type="fix">
        Cannot read multipage tiff.
      </action>
      <action issue="IMAGING-108" dev="damjan" type="fix">
        JPEG EOI marker could not be found at expected location.
      </action>
      <action issue="IMAGING-101" dev="ggregory" type="fix" due-to="Colm O hEigeartaigh">
        GIF dimensions transposed.
      </action>
      <action issue="IMAGING-23" dev="cmchen" type="fix">
        JpegXMPWriter throws NullPointerException.
      </action>
      <action issue="IMAGING-75" dev="cmchen" type="add">
        Added accessor methods for a number of ImageInfo properties.
      </action>
      <action issue="IMAGING-71" dev="cmchen" type="add" due-to="Nicolas Richeton">
        Applied patch contributed by Nicolas Richeton, adding getEXIFThumbnailSize() and getEXIFThumbnailData() methods to JpegImageMetadata.
      </action>
      <action issue="IMAGING-74" dev="cmchen" type="fix">
        Fixed a couple of platform-dependent paths in the tests.
        Constantized the magic numbers used when guessing formats.  
        Added a test for the format guessing.
      </action>
      <action issue="IMAGING-2" dev="cmchen" type="fix">
        SanselanGuessFormatTest and SanselanTestConstants use Java 1.5 method String.replace(CharSequence, CharSequence).
      </action>
      <action issue="IMAGING-80" dev="niallp" type="fix">
        Sanselan tests fail on Windows.
      </action>
      <action issue="IMAGING-18" dev="cmchen" type="fix" due-to="James E-J">
        Fix for "JpegImageMetadata getEXIFThumbnail only works on Jpeg thumbnails stored as Tiff images" issue.
        Jpeg thumbnails are read using ImageIO.
      </action>
      <action issue="IMAGING-48" dev="sebb" type="fix">
        JpegImageMetadata getEXIFThumbnail may raise a null pointer exception.
      </action>
      <action issue="IMAGING-56" dev="cmchen" type="add" due-to="damjan">
        Add support for the ICNS icon format.
      </action>
      <action issue="IMAGING-52" dev="cmchen" type="fix" due-to="damjan">
        Implement dumpImageFile for ICO files and fix a typo.
      </action>
       <action issue="IMAGING-58" dev="damjan" type="add">
        Add support for PCX, DCX, WBMP, XBM and XPM images.
      </action>
      <action issue="IMAGING-12" dev="damjan" type="fix" due-to="gwlucas">
        Tiff (exif) tags of type double written in wrong byte order.
      </action>
      <action issue="IMAGING-30" dev="damjan" type="fix" due-to="clement.escoffier">
        The isTransparent flag is not set on transparent PNGs.
      </action>
      <action issue="IMAGING-11" dev="damjan" type="fix">
        Ignore TIFF entries that have invalid offsets and/or lengths when we are not in strict mode.
      </action>
      <action issue="IMAGING-78" dev="damjan" type="fix">
        readDirectory method in TiffReader doesn't gracefully handle exceptions that can be thrown from ByteSource implementations.
      </action>
      <action issue="IMAGING-24" dev="damjan" type="fix">
        Search all tags instead of just EXIF tags when parsing TIFF metadata tags, and try to match on directory type as well.
      </action>
      <action issue="IMAGING-21" dev="damjan" type="fix">
        Don't allow very large TIFF lengths to be interpreted as negative because they have the highest order bit set.
      </action>
      <action issue="IMAGING-50" dev="damjan" type="fix">
        Make JPEG parsing highly resilient: skip all bytes after the end of a segment until the next segment (0xFF followed by non-0xFF).
      </action>
      <action issue="IMAGING-16" dev="damjan" type="fix">
        Fix reading ASCII tags in TIFF files.
      </action>
      <action issue="IMAGING-3" dev="damjan" type="fix">
        Ignore string differences in our tests when 7 bit unclean TIFF string are copied.
      </action>
      <action issue="IMAGING-41" dev="damjan" type="fix">
        Don't redefine BYTE_ORDER_BIG_ENDIAN and BYTE_ORDER_LITTLE_ENDIAN in UnicodeMetricsUTF16.
      </action>
      <action issue="IMAGING-64" dev="damjan" type="add">
        Add support for TIFF files with compression=2, (CCITT Group 3 1-Dimensional Modified Huffman run length encoding).
      </action>
      <action issue="IMAGING-35" dev="cmchen" type="fix">
        Fixed issue "FieldTypeASCII does not conform to the EXIF specification," identified by Libor Nenadál.
      </action>
      <action issue="IMAGING-31" dev="cmchen" type="fix">
        Fixed a bug in which gifs have incorrect size information in the the Logical Screen Descriptor.
        This appears to be a bug in how Microsoft Office writes gifs. The Image Descriptor has the correct value.
      </action>
      <action issue="IMAGING-13" dev="cmchen" type="fix">
        Added checks in ByteSource's getBlock() methods for invalid params.
      </action>
      <action issue="IMAGING-46" dev="cmchen" type="fix">
        Fixed a possible NPE in Sanselan.getICCProfile pointed out by Jon Weygandt.
      </action>
      <action issue="IMAGING-76" dev="cmchen" type="fix" due-to="damjan">
        Improve ICO file support.
      </action>
      <action issue="IMAGING-49" dev="damjan" type="fix">
        Preserve the byte range occupied by the Maker Notes, so rewriting it doesn't corrupt it.
      </action>
      <action issue="IMAGING-29" dev="damjan" type="fix" due-to="alexvigdor">
        Read in the full IPTC block before trying to ignore it, so we don't lose our position in the stream.
      </action>
      <action issue="IMAGING-45" dev="damjan" type="fix" due-to="pkapoor">
        Fix the GIF BitsPerPixel formula in GifImageParser's getImageInfo().
      </action>
      <action issue="IMAGING-77" dev="damjan" type="add">
        Add a type-safe high-level API for writing TIFF fields.
      </action>
      <action issue="IMAGING-51" dev="damjan" type="add">
        Add TagInfoXpText for fields like XPTITLE, and encode/decode it using UTF-16LE like Windows does.
      </action>
      <action issue="IMAGING-39" dev="damjan" type="fix">
        Fix various problems with reading and writing EXIF tags.
      </action>
      <action issue="IMAGING-60" dev="damjan" type="add" due-to="proyal">
        Added support for reading the RGBE / Radiance HDR image format.
      </action>
      <action issue="IMAGING-68" dev="damjan" type="add">
        Add a field to IptcRecord that contains its raw bytes, and a getter for this value.
      </action>
      <action issue="IMAGING-73" dev="damjan" type="add">
        Provide a way to write EXIF data into files using Sanselan.writeImage().
      </action>
      <action issue="IMAGING-22" dev="damjan" type="fix">
        Eliminate or hide public mutable final arrays in the API.
      </action>
      <action issue="IMAGING-47" dev="damjan" type="add" due-to="adrian2k7">
        Run a Findbugs analysis on "mvn site". Also audit and fix resource leaks.
      </action>
      <action issue="IMAGING-43" dev="damjan" type="fix" due-to="pkapoor">
        If the TIFF rows per strip is not present, assume it is the image length.
      </action>
      <action issue="IMAGING-65" dev="damjan" type="add">
        Provide a way to write the pixel density (DPI) into an image.
      </action>
      <action issue="IMAGING-17" dev="damjan" type="fix" due-to="pkapoor">
        Make BitInputStream sensitive to byte order. Allows 48 BPP TIFF files to load.
      </action>
      <action issue="IMAGING-38" dev="damjan" type="fix" due-to="tjoris">
        Fix the PhysicalWidthDpi calculation for JPEG images.
      </action>
      <action issue="IMAGING-19" dev="damjan" type="fix" due-to="vvd">
        Fix reading DPI for TIFF files.
      </action>
      <action issue="IMAGING-44" dev="damjan" type="fix" due-to="vvd">
        Fix reading DPI for PNG files.
      </action>
      <action issue="IMAGING-40" dev="damjan" type="fix" due-to="pkapoor">
        Add the Software TIFF tag, and get the byte order after reading the first TIFF directory.
      </action>
      <action issue="IMAGING-6" dev="damjan" type="fix">
        Correct the expected size of the decompressed TIFF image data, and improve sample depth scaling for PNG images.
      </action>
      <action issue="IMAGING-15" dev="damjan" type="fix" due-to="pkapoor">
        Stop JpegImageMetadata from throwing NPE if the exif field is null.
      </action>
      <action issue="IMAGING-67" dev="damjan" type="fix" due-to="gwlucas">
        Speed up reading paletted TIFF files.
      </action>
      <action issue="IMAGING-8" dev="damjan" type="fix">
        Allow TIFF fields to change size during encoding. Fix a broken test that assumes they never do.
      </action>
      <action issue="IMAGING-36" dev="damjan" type="fix">
        Fix sample usage links on the website.
      </action>
      <action issue="IMAGING-70" dev="damjan" type="fix" due-to="gwlucas">
        Reduce memory usage when reading TIFF files.
      </action>
      <action issue="IMAGING-33" dev="damjan" type="fix">
        Fixed the differencing predictor for tiled TIFF images.
      </action>
      <action issue="IMAGING-5" dev="damjan" type="fix">
        Update website, fix some broken links and remove old code.
      </action>
      <action issue="IMAGING-61" dev="damjan" type="add" due-to="gwlucas">
        Include a test utility for timing and memory in project example classes.
      </action>
      <action issue="IMAGING-69" dev="damjan" type="fix" due-to="gwlucas">
        Add a streamlined TIFF reader that reduces load time by a factor of 5.
      </action>
      <action issue="IMAGING-81" dev="damjan" type="add" due-to="gwlucas">
        Add more Javadoc to main package.
      </action>
      <action issue="IMAGING-82" dev="damjan" type="fix" due-to="pkapoor">
        Fix BMP width and height DPI.
      </action>
      <action issue="IMAGING-86" dev="damjan" type="fix">
        Fix the lengths for DateTimeOriginal and DateTimeDigitized TIFF/EXIF tags.
      </action>
      <action issue="IMAGING-88" dev="damjan" type="fix" due-to="craigkelly">
        Method lowerBound in org.apache.commons.imaging.common.itu_t4.T4AndT6Compression has a division error.
      </action>
      <action issue="IMAGING-89" dev="damjan" type="add">
        Detect the YCCK color space/type in JPEG files' APP14 segment.
      </action>
      <action issue="IMAGING-92" dev="damjan" type="fix" due-to="hmarmy">
        Issue trying to update GPS metadata info in a JPG.
      </action>
      <action issue="IMAGING-91" dev="damjan" type="update">
         ByteSourceInputStream.streamLength could be a long.
      </action>
      <action issue="IMAGING-95" dev="damjan" type="update" due-to="amitgupt">
         Some tiff processing takes very long.
      </action>
      <action issue="IMAGING-93" dev="damjan" type="fix" due-to="gwlucas">
         Tiled TIFF images do not correctly load partial tiles.
      </action>
      <action issue="IMAGING-90" dev="damjan" type="fix">
         Allow non-1 TIFF field lengths when parsing offset fields in non-strict mode.
      </action>
      <action issue="IMAGING-99" dev="damjan" type="fix" due-to="st.h">
         java.io.IOException: Could not read block
      </action>
      <action issue="IMAGING-94" dev="damjan" type="add" due-to="gwlucas">
         Add ability to load partial TIFF images
      </action>
      <action issue="IMAGING-223" dev="ggregory" type="update" due-to="Gary Gregory">
         Update from Java 7 to Java 8.
      </action>
    </release>
    
  </body>
</document>
