2010-05-17 - smackay@flagstonesoftware.com

    * fixed the following bugs.~
    
        123: Using characters with high value character codes causes errors.
        124. AWT Fonts on Mac OSX are offset.

2009-07-17 - smackay@flagstonesoftware.com

    * fixed the following bugs.
    
        41. FSMovie does not set the character encoding in FSCoder.
        42. FSSoundConstructor accepts sounds with any sample rate.
        48. Extended arrays in FSShapeStyle are encoded as bit fields
       
    * Corrected documentation for FSDefineTextField so that size of fonts in
      <font> HTML tags is expressed in points not twips.

2008-12-17 - smackay@flagstonesoftware.com

    * fixed the following bugs.
    
        14438. FSGradientFill incorrectly limits number of gradients.
        14441. FSExceptionHandler does not decode correctly.
        14442. FSLayer does not merge correctly.
        14444. FSSoundConstructor does not decode MP3 frames correctly.
        14449. Text is offset when using Java 1.5 or higher.
        14685. Error encoding Flash Video files.
        14686. Error decoding ID3 tag in MP3 files.
    
2008-03-31 - smackay@flagstonesoftware.com

    * Released version 2.3.

2008-03-14 - smackay@flagstonesoftware.com

    * Fixed a bug in FSSerialNumber where the encoded length was 1 byte longer
      than it should be.
      
    * FSShapeStyle will now encode empty line and fill style arrays.
    
2008-03-14 - smackay@flagstonesoftware.com

    * Added FSVideoMetaData class for undocumented meta-data block in FLV 
      files.
      
2008-03-13 - smackay@flagstonesoftware.com
  
    * Added ScreenVideo classes: FSScreenVideoPacket, FsImageBlock.
    
    * Added method to FSImageConstructor to generate an array of FSImageBlock
      objects for generating ScreenVideo streams.
      
    * Added Unit Test for generating ScreenVideo stream.
    
    * Debugged FSScreenVideoPacket which contains fields not documented in
      flash file format specification version 7.

2008-03-01 - smackay@flagstonesoftware.com

    * Released version 2.2.1
	
    * Added classes for Flash Video files.

2008-02-29 - smackay@flagstonesoftware.com

    * Fixed Bug: 13214. Clip events are not re-encoded correctly.

    * Fixed Bug: 13213. Cannot decode WAV files with odd number of bytes in data.

    * Fixed Bug: 13222. Cannot decode clip events generated by Flash CS3.

    * Fixed Bug: 13223. Font definitions with no name do not decode.

2008-01-31 - smackay@flagstonesoftware.com

    * Added new convenience classes: FSFrame, FSHeader and FSLayer.
    
    * Updated unit tests for movie object classes are correctly encoded.
    
    * FSDefineJPEG[2,3] now contain width and height attributes.
    
    * The password string in FSProtect no longer contains a trailing null.
    
    * Renamed isUniyTransform method on FSColorTransform to isUnityTransform.
    
    * FSShapeConstructor polygon() now handles absolute coordinates and a new
      method rpolygon() was added to handle relative coordinates.
      
    * Released version 2.2.  

2007-12-31 - smackay@flagstonesoftware.com

    * released 2.1.6.

2007-12-23 - smackay@flagstonesoftware.com

    * Fixed bug 12776 so that the strings stored in a TrueType font file are
      decoded correctly.

2007-12-22 - smackay@flagstonesoftware.com

    * build.xml: Removed the tools and docs targets so the build file only
      supports the framework classes, contributed classes and examples.
      
    * developer.xml: removed patch target and added test target to compile 
      the unit test classes. Merged generation of class datasheets into the
      dest target. Also simplified the way releases are packaged.
      
    * Refactored test package classes to use JUnit instead of TestNG.
    
    * Removed com.flagstone.transform.tools package.
    
    * FSImageContructor.java: increase the buffer spaced used during compression
      of images for the rare occasion where the compressed image is larger than
      the original.
      
    * FSCoder.java: A method, boolean equals(Object obj), was added to FSCoder 
      to support unit testing.
      
    * Fixed bug 12769 where the encoding tables with reversed SOI and EOI 
      markers are now decoded correctly.
      
    * Fixed bug 9806. End Of Action markers (0x00) in the middle of a sequence 
      of actions are now handled and the complete set of actions is decoded 
      correctly. 

    * Fixed bug 12747. Leading in FSDefineTextField is now decoded as an 
      unsigned integer.
      
    * Fixed bug 12730. FSSerialNumber will now decode correctly if string 
      contains null.
      
    * Fixed bug 12729. Flash 4 files containing a Protect data structure with 
      an MD5 encoded password are now decoded correctly.
      
    * Fixed bug 12728. FSProtect with a string that contains null will be
      decoded correctly.
      
    * Equals on FSDefineImage and FSDefineImage2 compares uncompressed images.

If a password string contains a null byte in the middle of the string it will 
still be decoded correctly.
    
2007-01-05 - smackay@flagstonesoftware.com

    * Added main() method to FSMovieTest to allow tests to be run from the 
      command line.

2007-01-03 - smackay@flagstonesoftware.com

    * released version 2.1.5.

    * Fixed Bug #9807. Latency for MP3 encoded streams is not optional.
    
    * Fixed Bug #9805. Trailing FSSound objects are optional if not set.
    
    * Fixed Bug #9861. The number of gradients is now decoded correctly even
      when errors (obfuscation) is present.
      
    * Fixed bug #9797. Actions can now decoded even when End Of Action markers 
      are added to the end the action sequence or injected into the middle of
      the sequence.

2006-12-21 - smackay@flagstonesoftware.com

    * Moved HTML tables containing information on bugs and releases into the
      code for the Flagstone web site.

2006-12-14 - smackay@flagstonesoftware.com

    * FSDefineJPEGImage2, FSDefineJPEGImage3: fixed a bug where JPEG images 
      contain multiple start of image tags.
      
      Updated bug list (#9717), reporting the error.
      
    * FSShapeConstructor: fixed a bug where drawing ellipses using pixels resulted
      in distorted shapes.
      
      Updated bug list (#9718), reporting the error.   

2006-09-28 - smackay@flagstonesoftware.com
  
    * Released version 2.1.4.

2006-09-22 - smackay@flagstonesoftware.com

    * FSImageConstructor.java: fixed bug in setIndexedImage() and setColorImage()
      where the format attribute was being incorrectly checked for a valid format 
      instead of the encoding argument passed to the method.

    * Added readme files to the reports and results directories just in case 
      anyone is astonished that they are empty.
      
    * Restructured the test/data directory to reduce the number of files shipped
      with the release.
      
    * Removed the test suites for benchmarking as the included Flash files that
      now only contain a sample of data structures for a given class are too small 
      to create reliable benchmakr numbers.
      
    * Added bug 8866 to the list of issues.

2006-09-12 - smackay@flagstonesoftware.com

    * Transparent colours in indexed PNG images are now displayed correctly.
      The colour channels must be set to zero otherwise the colour will be 
      displayed opaque.
      
    * updated docs on latest bugs and next release.  

2006-09-10 - smackay@flagstonesoftware.com

    * updated docs on latest bugs and next release.
    
    * FSTextConstructor.defineTextBlock now accounts for the descent of the last
      line of text.
      
    * Contributed fix by myhlam (from the Flagstone forums) that correctly 
      encodes the object when no style information is defined.
      
    * corrected an error in the example to display text using an imported font.
    
    * updated FSDefineFont and FSDefineFont2 to start decoding a glyph based on
      the calculated position in the file using the offset table. This allow 
      files generated by pdf2swf from SWFTools to be decoded correctly. The 
      change makes the process of decoding glyphs more robust in the face of 
      errors.
      
    * The test for decoding a shape is now made in the FSDefineShape[n] class 
      rather than incorrectly in the FSShape class.

2006-09-02 - denis@fireflydesign.com

    * fixed improperly initialized identifier in FSVideoFrame(int, int, byte[]).

2006-06-29 - smackay@flagstonesoftware.com

    * added public byte[] getEncodedActions() method to allow access to actions
      encoded as binary data in the following classes: FSButtonEvent, 
      FSClipEvent, FSDefineButton, FSDoAction and FSInitialize.
    
2006-06-29 - smackay@flagstonesoftware.com

    * Restructured the files used to test the classes. The Flash files now
      contain a sample of the encoded data structures for a given class. This
      limits the size of the files which still providing useful test coverage.

2006-06-28 - smackay@flagstonesoftware.com

    * FSButtonSound: corrected a bug where the FSSound objects for the RollOver 
      and RollOut button events were swapped.

2006-06-27 - smackay@flagstonesoftware.com

    * FSProtect: fixed bug in copy constructor so null passwords do not 
      raise a NullPointerException.

2006-06-26 - smackay@flagstonesoftware.com

    * Added class FSClassTest to test package for test shared between the 
      different test classes.
      
    * Completed the test class FSSetBackgroundColorTest.
    
    * Added tests for FSColor, FSShowFrame and FSProtect.
    
    * Simplified test suites specification to remove groups and simply run 
      all the tests for a given class.
      
    * Fixed a bug in FSCoder where the buffer was not resized correctly if 
      an array of bytes larger than half the current buffer size was written.

2006-06-25 - smackay@flagstonesoftware.com

    * Corrected bug in FSPlaceObject2.equals() that did include result from
      comparing other attributes when comparing encoded actions.
      
    * The context variable, version is now publicly accessible - this should 
      only be used for testing.
      
    * Updated FSColorTest and added more test data.
      
2006-06-20 - smackay@flagstonesoftware.com

    * Fixed bug in FSDefinedJPEGImage2 and FSDefinedJPEGImage3 where the 
      encoding table could not be set to null (to create an empty table).

2006-06-11 - smackay@flagstonesoftware.com

    * Confirmed integration of TestNG into ant buils file, test.xml.
    
    * Backed out changes to JPEG image classes - again - they were added again 
      before the dev-2-2 branch was created.
      
2006-06-05 - smackay@flagstonesoftware.com

    * Fixed bug in TextDump which was not including the actions which make up
      the body of the function definition.

2006-04-03 - denis@fireflydesign.com

    * Always use 6 byte header for DefineLosslessImage2 (FSDefineImage2) because
      of bug in Flash players (same was already being done for FSDefineImage).

2006-04-03 - smackay@flagstonesoftware.com

    * Released 2.1.2.

2006-04-01 - smackay@flagstonesoftware.com

    * Fixed a bug in FSTextConstructor.defineFont() where the character code was
      being set to the index of a glyph on the array rather than the actual
      character code.
      
    * Created branch dev/dev-2-2 for development work on the new release.
    
    * Backed out changes to JPEG image classes - they are included in the 
      dev-2-2 branch.
      
2006-03-31 - smackay@flagstonesoftware.com

    * Added advanceForChar(char, int) method to FSTextConstrutor so individual
      characters can be laid out in a sequence.
      
    * Updated the FSTextConstructorTest class to display the bounding boxes when
      showing individual characters or around a block of text. Also updated
      FSTextConstructor.xml test suite. 
      
    * Added width and height attributes to FSDefineJPEGImage, FSDefineJPEGImage2
      and FSDefineJPEGImage3.
    
2006-03-30 - smackay@flagstonesoftware.com

    * Fixed bug when creating font definitions on Macintoshes.
    
    * Fixed bug in calculating the bounds of a block of text.

2006-03-27 - smackay@flagstonesoftware.com

    * Fixed bug in FSCoder when expanding size of buffer on writes.
    
    * Fixed bug in docs target of build.xml so utilities datasheets are 
      generated.
      
    * Fixed Javadoc errors in documentation for FSTextConstructor and 
      FSCharacterTable.
      
    * FSImageConstructor now displays transparent, indexed, png files correctly.

2006-03-13 - smackay@flagstonesoftware.com

    * Released 2.1.1.
    
2006-03-10 - smackay@flagstonesoftware.com

    * Fixed the inifinite loop problem when decoding MP3 files. Also updated 
      FSCodec.adjustPointer so it clamps to the start/end of buffer instead 
      of throwing an exception so we can safely handle MP3 frames that end 
      prematurely.
    
2006-03-07 - smackay@flagstonesoftware.com

    * Released 2.1.
    
2006-03-06 - smackay@flagstonesoftware.com

    * Finished release notes for 2.1.
    
    * Regenerated class datasheets fixing minor problems.

2006-03-04 - smackay@flagstonesoftware.com

    * Property values are now cloned when FSPush objects are cloned.

2006-03-03 - smackay@flagstonesoftware.com

    * Added canonical version of objects that can be safely shared since they
      contain no editable attributes: FSNull, FSVoid, FSAction, FSCall, 
      FSShowFrame, FSPathsArePostscript.

2006-03-03 - smackay@flagstonesoftware.com

    * Updated FSMovieTest.java and added a new test folder, benchmarks, for 
      holding TestNG files to run performance test on Transform classes.
      
    * Split benchmark suite for FSMovie into separate suites for encoding and 
      decoding files - they take a long time to run.
      
    * FSMovieTest added methods to benchmark encoding movies (regular and lazy).
    
    * Added the benchmark target to test.xml to run specific benchmarks.
    
    * Made constructors that initialise attributes from an FSCoder public. These
      methods will be used for testing. All classes.
      
    * Added copy constructors to all classes.
    
    * Removed private copies of constants used to identify different types of 
      object. This was left over from supporting different versions of Flash.
      
    * cleaned up initialisation of attributes.
    
    * Methods used to encode and decode objects:
   
          int length(FSCoder)
          void decode(FSCoder)
          void encode(FSCoder)
          
      along with the constructor <class>(FSCoder) are all "upgraded" to public
      to support testing.

2006-03-01 - smackay@flagstonesoftware.com

	* FSCharacterTable: Added remaining characters for Finnish and French. Added 
	  character sets for Norwegian, Swedish, Dutch and Italian.
	  
	* Added methods to FSMovie and variables to FSCoder's context to support 
	  lazy decoding of actions, shapes and glyphs (shapes in fonts).
	  
	* Added lazy decoding of actions to FSButtonEvent, FSClipEvent, FSDoAction,
	  FSDefineButton, FSInitialize.
	  
	* Added lazy decoding of shapes to FSDefineShape, FSDefineShape2,
	  FSDefineShape3, FSDefineMorphShape, FSDefineFont and FSDefineFont2.
	  
2006-02-28 - smackay@flagstonesoftware.com

    * Removed old doxygen directives from FSMovie, FSSoundConstructor and
      FSShapeConstructor, FSColorTransform.
    
    * Removed redundant exceptions declarations from method signatures:
      FileNotFoundException is covered by IOException. Applies to FSMovie
      FSSoundConstructor, FSImageConstructor.
      
    * FSTextConstructor: Added method public FSTextConstructor(int, Font) to 
      clearly separate setting a font from a file.
      
      Added a reset(int) method to allow FSTextConstructor objects to be reused
      when generating objects for more than one Flash file.

2006-02-27 - smackay@flagstonesoftware.com

    * Added FSTextConstructor.willDisplay(char[]) to allow sets of characters
      to be defined before creating any test objects. This solves the bug where
      characters were encoded in the order they were used but not in ascending
      order of character code.
      
      Added FSCharacterTable class to com.flagstone.transform.util to provide
      predefined sets of characters to use with the willDisplay() method.
      
      Added a corresponding canDisplay(char[]) method to see if a font can 
      display all of the characters in a set.
      
    * Updated FSTextConstructor test to include the new willDisplay method.

2006-02-26 - smackay@flagstonesoftware.com

    * Tidied up the FSCoder class, making all methods more reliable merging in
      functionality from Transform Utilities FSCodec. All decoding and encoding 
      of data is now performed using FSCoder. FSCodec is deprecated.
      
    * The class TransformUtil is now deprecated.  

2006-02-25 - smackay@flagstonesoftware.com

    * Optimized the TextDump tool.

2006-02-23 - smackay@flagstonesoftware.com

    * Added a new exception class, FSCoderException to report when underflow or
      overflow errors occur when encoding or decoding objects. Previously only
      the more general IOException was reported. FSCoderException contains 
      information on the location of the data structure in the file that caused
      the error making diagnosis much easier.
      
    * Added new attributes to FSCoder so errors occurring during encoding or 
      decoding can be reported to the top level methods in FSMovie without
      having to report them using exceptions since not all encode(FSCoder) or
      decode(FSCoder) methods check for errors.
      
    * Fixed an error is FSMovieTest so exceptions thrown when encoding or 
      decoding files are now triggering assertions.

2006-02-22 - smackay@flagstonesoftware.com

    * Improved the algorithm when decoding the encoding table in the classes
      FSDefineJPEGImage2 and FSDefineJPEGImage3.

2006-02-21 - smackay@flagstonesoftware.com

    * Added the remaining test classes from Tranform Utilities to the project
      and ported them to run under TestNG.
      
    * Changed FSTextConstructor() to handle filenames in upper case.
    
    * Updated the build version number to 2.0.6.
    
    * Deprecated the FSMovieListener interface, FSMovieEvent class and 
      the methods on the FSMovie class that used them.
      
    * Deprecated the flag Transform.DEBUG. Code using this flag was removed from 
      FSCoder and commented out elsewhere.

2006-02-20 - smackay@flagstonesoftware.com

    * Released 2.0.5. 
    
    Changes below took place after the release.

    * Build.xml:
          - The build target now includes all contributed classes.
          - Renamed the minor target 'optimized' to 'classes'.
          - Moved the minor target 'debug' into the developer.xml build file.
          - Added a 'contrib' minor target to separately compile the classes 
            contributed to the project.
            
    * Developer.xml: added the debug minor target from build.xml.

2006-02-19 - smackay@flagstonesoftware.com

    * Added the package, com.flagstone.transform.tools which contains useful
      programs for managing Flash files, testing, etc.
      
    * Added the tool, TextDump which contains the same engine as Describe SWF
      for generating a full description of all the data structures encoded in 
      a Flash file.
      
    * Added a test suite for converting all the files generated in the test 
      suite FSMovieTest to their text representations. These files can be 
      compared against text dumps of Flash files generated by third-parties to
      verify that files are decoded and encoded correctly.
      
    * Updated the FSColorTransform and FSCoordTransform classes so that unity 
      transforms are encoded using a mininmal representaton that is not part of 
      the specification but is commonly found in files.
      
    * FSText: the minimum number of advance bits is set to 1 so that files 
      encoded using Transform are identical to files generated by third-party
      tools. This update appears to have no functional use but simplifies the
      progress of regression testing.
      
    * FSDefineTextField: default values for alignment, leftMargin, rightMargin,
      indent and leading are now set to defaults of Transform.VALUE_NOT_SET.
      
    * FSDefineVideo: the smoothing attrbute is now encoded correctly.
    
    * FSFontInfo: the table containing the character codes is now sized 
      correctly, using only 16-bits when there are codes over 255. Previously 
      wide (16-bit) codes were always used for ShiftJIS or Unicode characters.
      
    * FSMovieObject: the extendLength attribute - previously only used when
      debugging is now used to simplify regression testing - it has no 
      functional use.
      
    * FSPlaceObject2: the ratio attribute is now set to the documented value of
      -1.0 - allowing morphing ratioes of 0 which indicate the start of the 
      morphing proces to be used.
      
    * FSPlaceObject2: now encodes coordinate and colour transforms if the 
      objects are not null.
      
    * FSSoundStreamHead2: added an attributed _reserved, which is used to 
      hold the state of a reserved field when decoding a movie so then the 
      movie is encoded the "field" is preserved. This field is supposed to 
      always be zero, but this is not the case in practice. This preserves the 
      function in case it implements an undocumented feature.

2006-02-18 - smackay@flagstonesoftware.com

    * Removed old code used to pass values to listeners when Transform was used 
      as part of Describe.
      
    * Added the test class FSMovieTest which verifies that the sets of files 
      placed in test/data/movies/swfn can be decoded and encoded with no errors.
      
    * Updated the README.txt file with information on running tests using
      FSMovieTest.

2006-02-17 - denis@fireflydesign.com

    * Fixed text bounding box calculation in FSTextConstructor.

    * Fixed clipping depth off by one problem in FSPlaceObject2.

    * Removed extra line segment in FSImageConstructor.defineEnclosingShape
      that caused very strange drawing behavior when rotating.

    * Added an new constructor to FSSoundConstructor to can be used when you
      want to set the sound data (rather than load it).

    * Fixed array out of bounds problem in FSCodec.

2006-02-12 - smackay@flagstonesoftware.com

    * Started adding code and testng suites for testing the framework and 
      individual classes.

2006-02-11 - smackay@flagstonesoftware.com

    * Reordered the ChangeLog so the most recent changes are at the start 
      of the file.
    * Moved location of documentation files that were in the root
      directory to a separate doc directory.

2006-02-10 - smackay@flagstonesoftware.com

    * Added the Unsmoothed Tiled and Unsmoothed Clipped type to the FSFillStyle
      class and updated the documentation. Updated the affected classes that
      decode fill styles: FSDefineShape, FSDefineShape2, FSDefineShape3 and 
      FSDefineMorphShape.
      
    * Updated class documentation for the FSButton adding optional colour 
      transform in the introduction to the class.
      
2006-02-05 - smackay@flagstonesoftware.com

    * Added project to Berlios.de to support project developers.
    * Merged framework.properties into build.xml to keep all build information
      in one place.
    * Reorganized locations of files to make simplify project structure.
 
2006-19-01 - smackay@flagstonesoftware.com

    * Updated the FSDefineJPEG2 and FSDefineJPEG3 classes so correctly decode
      image data.
    * Added the FSProperty class and updated FSPush so that properties tagged 
      as pre Flash Version 5 properties are correctly decoded.

2005-10-10 - smackay@flagstonesoftware.com

    * Added Transform Utilities classes.
    
2005-10-04 - smackay@flagstonesoftware.com

    * build.xml: Added build targets for each step in the build process.
    * Released version 2.0.4.
    
2005-08-13 - smackay@flagstonesoftware.com

    * Simplified package structure and build files.
    * Examples are now located in the package com.flagstone.transform.examples.
    * Class datasheets are now generated using javadoc.
    
2004-11-15 - smackay@flagstonesoftware.com

    * Replaced all tabs with spaces.
    
2004-11-04 - smackay@flagstonesoftware.com

    * Added examples to project.
    
2004-10-12 - smackay@flagstonesoftware.com

    * Released version 2.0.3.

2004-10-02 - smackay@flagstonesoftware.com

    * Changed framework to use the BSD license.

2004-09-13 - smackay@flagstonesoftware.com

    * Updated build file to automate building and testing.
    * extendLength flag on FSMovieObject is preserved when debugging.
    
2004-06-13 - smackay@flagstonesoftware.com

    * Added ChangeLog.txt to record the history of changes since the release of 
      build 1 on 6th April 2004.
    * Added constructor FSDefineMoveClip(int anIdentifier)
    * FSMovie objects are now compressed only if version attribute is > 5.
    * Added new methods to allow binary encoded actions and events to be added to
      FSPlaceObject2, FSDefineButton2, FSClipEvent, FSButtonEvent and FSDoAction.
      
