------------------------------------------------------------
  Release Notes for Transform SWF for Java, Version 2.2.1
------------------------------------------------------------

The release contains bug fixes and minor updates.


Bug Fixes
    Clip events are not re-encoded correctly.
    Cannot decode WAV files with odd number of bytes in data.
    Cannot decode clip events generated by Flash CS3.
    Font definitions with no name do not decode.

Class Changes
    FSCoder no longer throws IllegalArgumentExceptions on pointer overflows.
    
Documentation Changes
    None scheduled

Testing Changes
    None scheduled
    
Package Changes
    None scheduled

  
-------------
  Bug Fixes  
-------------

1. Clip events are not re-encoded correctly.

When the code was updated in release 2.1.6 to handle cases where end of action
markers were encountered in the middle of an array of actions (which caused 
decoded to terminate prematurely) a bug was introduced in the way FSClipEvent
objects were encoded: the offset to the end of the clip event was mis-calculated
by one byte causing the encoded movie not to play correctly. This is now fixed.

2. Cannot decode WAV files with odd number of bytes in data.

WAV files that end with a DATA block which contains an odd number of bytes can
now be decoded correctly by the FSSoundConstructor.

3. Cannot decode clip events generated by Flash CS3.

There is an internal field in FSClipEvent that gives the offset to either the
next event or to the end of the event array. In Flash CS3 the offset appears to
be incorrect. Instead of the offset being set to the length of the actions for 
the handler it is 1 byte larger. The code in the FSClipEvent has been updated
to test for this condition allowing files to be decoded.
    
4.Font definitions with no name do not decode.

Font objects (FSFontInfo, FSFontInfo2, FSDefineFont2) contain a field for the 
font name. In releas 2.1.6 code was added to remove trailing null bytes but the
code did not test for cases where the font name was not set. This is now fixed.

-----------------
  Class Changes  
-----------------

1. FSCoder no longer throws IllegalArgumentExceptions on pointer overflows.

If the internal pointer used in the FSCoder class to mark the current position 
in the data buffer is moved beyond the end of the buffer an IllegalArgumentException
is no longer thrown. Instead the position of the pointer is clamped to the end 
of the buffer. Any attempt to read the data will return zero. Read errors can
be detected by checking whether the expected number of bytes were read by comparing
the pointer value at the start and end of reading a block of data.

This is an internal change and will not have any impact unless you use the 
FSCoder class directly to decode blocks of data.

-------------------------
  Documentation Changes  
-------------------------

None

-------------------
  Testing Changes  
-------------------

None

-------------------
  Package Changes  
-------------------

None

