------------------------------------------------------------
  Release Notes for Transform SWF for Java, Version 2.1.6.
------------------------------------------------------------

The release fixes a number of bugs and improves reliability when dealing with
file that are "outside" of the Flash specification. Testing is now carried out 
using JUnit and way each release is packaged was simplified.

Bug Fixes
    12776. NAME block in TrueType fonts is not decoded correctly.
    12769. JPEG SOI and EOI markers are swapped on null encoding tables.
    12768. Font name in FSDefineFont2, FSFontInfo[2] has trailing null.
    12747. Leading in FSDefineTextField is decoded as unsigned.
    12730. FSSerialNumber does not decode if string contains null.
    12729. FSProtect will not decode Flash 4 files with passwords.
    12728. FSProtect does not decode if string contains null.
     9806. Transform cannot handle obfuscated actions.

Class Changes
    Equals method added to FSCoder.
    Increased compression buffer on FSImageConstructor.
    Equals on FSDefineImage and FSDefineImage2 compares uncompressed images.
    
Testing Changes
    JUnit replaces TestNG
    Testing is simplified
    
Package Changes
    Releases simplified.
    Tools package was removed.
  
-------------
  Bug Fixes  
-------------

12776. NAME block in TrueType fonts is not decoded correctly.

The NAME block in TrueType font files which contains the name of the font, 
copyright information and other font related strings is now decoded correctly.

12769. JPEG SOI and EOI markers are swapped on null encoding tables.

The readJPEGStream methods in FSDefineJPEG2 and FSDefineJPEG3 was updated and 
the classes are now better able to decode encoding tables where the Start of 
Image (SOI) and End of Image (EOI) markers are reversed.

In FSDefineJPEG2 the order of the markers when specifying a NULL encoding table
was incorrectly reversed. The correct order, 0xFFD8 (SOI), 0xFFD9 (EOI) is now
used.

12768. Font name in FSDefineFont2, FSFontInfo[2] has trailing null.

The trailing null byte that was used to terminate the string in the FSDefineFont2, 
FSFontInfo and FSFontInfo2 classes has now been removed.

12747. Leading in FSDefineTextField is decoded as unsigned.

The leading field, which defines the spacing between lines is now correctly 
decoded as a signed integer.

12730. FSSerialNumber does not decode if string contains null.

If a serial number contains a null byte in the middle of the string it will 
still be decoded correctly.

12729. FSProtect will not decode Flash 4 files with passwords.

Flash 4 files containing a Protect data structure with an MD5 encoded password
are now decoded correctly.

12728. FSProtect does not decode if string contains null.

If a password string contains a null byte in the middle of the string it will 
still be decoded correctly.

9806. Transform cannot handle obfuscated actions.

The decoding of actions in FSButtonEvent, FSClipEvent, FSDefineButton, 
FSDoAction and FSInitialize is now able to handle causes where End of Action
markers (0x00) are injected into the sequences of actions - perhaps as an 
obfuscation technique to prematurely stop the decoding of actions.

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

1. Equals method added to FSCoder.

A method, boolean equals(Object obj), was added to FSCoder to support unit 
testing.

2. Increased compression buffer on FSImageConstructor.

Increase the buffer spaced used during compression of images for the rare 
occasion where the compressed image is larger than the original.

3. Equals on FSDefineImage and FSDefineImage2 compares uncompressed images.

The equals method on FSDefineImage and FSDefineImage2 now unzips the compressed
images before comparing objects. This allows objects that contain identical 
images but which were compressed with different parameters to pass as being 
equal.

This change was introduced primarily for testing to compare images created 
by the Flash authoring tool to be compared with images compressed by the 
Transform framework.

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

1. JUnit replaces TestNG.

The classes used to unit test the framework were refactored to use JUnit. While
TestNG is probably the more powerful of the two the simplicity and ease of use 
of JUnit is hard to beat, especially since there is good support for executing 
tests from within IDEs such as Eclipse.

2. Testing is simplified.

With the adoption of JUnit the approach to testing has been simplified. Testing 
is now a simple pass/fail approach with the JUnit tests used to verify changes 
made to the framework. This is ideal to verify correct operation of the classes,
for example when testing different image or sound files or for verifying changes
when submitting bug fixes.

More detailed testing, particularly for significant changes to the way files 
are encoded or decoded is now handled by a separate project where the way objects
are encoded is verified using the Flash authoring tool as a reference.

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

1. Releases simplified.

Releases of the framework now only include documentation, jar file and source
for the framework classes, contributed classes and examples. The goal is to
strip down releases so they are easier to use within other projects. All the 
files used to debug and test the framework  are still available from the 
Subversion repository: https://svn.berlios.de/svnroot/repos/transform/trunk

2. Tools package was removed.

With the simplification of the way the framework is tested the TextDump class
was no longer used and the package was removed from the release. If this causes
any inconvenience please contact Flagstone.
