CHANGELOG

Version 0.9, released 16-Jan-2006
    Fixed calculation of $field->{text_width} ( take into account user-defined text_whitespace )
    Replaced max_font_size with max_cell_height - better way of handling Y-space
    Incorporated groups into setup_cell_definitions()
    Changed $field in setup_cell_definitions() to $cell
    Added support for reprinting group headers on a new page
    Fixed error in rendering final group footers if there is no footer defined. How did this happen?
    Added support for defining Top, Bottom, Left, Right cell borders to render - thanks to Bill Hess for patch
    Added support for splitting multiple columns of data into a group header - thanks to Bill Hess for patch
    Added upper_buffer and lower_buffer keys to group & data definitions for defining whitespace buffers
    Added support for page breaking before a group header
    Reprint higher-level 'reprinting_header' group headers when a lower-level group triggers a page break
    Broke out queuing group headers into separate assemble_group_header_queue() method
    Removed $no_group_footer variable
    Calculate size of group header queue, and if too big, re-assemble entire queue based on assumption that
        we're printing on a new page ( which could pull in more group headers that are reprinting_headers )
        - thanks for Bill Hess for tirelessly reporting this bug until I fixed it :)
    Added support for dynamic images - image path comes from the data array
    Updated TODO with final feature additions for a 1.0 release, and plans for 2.0
    
Version 0.81, released 22-Oct-2005
    
    Fixed stoopid mistake ( missing bracket close ) in previous release
    
Version 0.8, released 22-Oct-2005
    
    Added page headers and footers, dealt with in same style as data ( ie an array of cells )
    Added special tags %PAGE%, %PAGES%, and %TIME% for page headers and footers
    Added cell-level control of cell borders, including colour support
    Added legacy page footers ( default if no page footer specified )
    Added support for setting PDF info
    Don't create a new page in the constuctor - wait until we get passed some data
    Added setup_cell_definitions() to generically fill out details of all different types of cells
    Broke out calculation of Y needed into calculate_y_needed()
    Fixed typo in paper setup ( 'portait' should be 'portrait' ) - thanks to Bill Hess for spotting this one
    Added 'bsize' and 'legal' paper sizes - thanks to Bill Hess for these additions
    Removed all global variables
    Updated documentation & cleaned up POD somewhat
    
Version 0.7, released 22-Aug-2005
    
    Move down before rendering instead of after in group_header ( and not in GrandTotals header )
    Fixed small bug in calculation of Y-space needed for current data block
        ( take into account whitespace between previous row and group header )
    
Version 0.6, released 02-Aug-2005
    
    Major, major rewrite. Many new features. Squashed all bugs I know of.
    Fixed bug in resetting aggregate fields when entering a new group
    Fixed bug in colour_func when called on non-data stuff ( eg headers, footers, etc )
    Better comments in source, use constants for TRUE / FALSE
    Replaced $field->{picture} with $field->{image} hash
    Set $self->{default_font_size} to 12 if one isn't supplied
    Renamed internal variables for more consistancy
    Replaced $cell_spacing with dynamic calculation of $field->{text_whitespace} ( user can define own values )
    Replaced user-defined $self->{data}->{max_font_size} with calculated value - any max_font_size value you set will be overriden
    Added far more robust calculation of Y-space needed for current block of data
    Keep group headings with data ( ie don't print a group header at the bottom of a page ) ... FIGJAM
    Move down the page immediately *before* rendering each line, instead of after
    Added image scaling ... that actually works ( added dependancy on Image::Size )
    Added image alignment
    Recognise "center" as well as "centre" in alignment definition
    Get rid of warnings about unintialised variables ( 'no warnings' directive )
    Added support for colour background setting for cells - current options are 'box' or 'ellipse'
    Separated demo app from main package
    
Version 0.5, released 15-Jun-2005
    
    Added support for images - scaled to fit to the current cell ( not finalised - comments welcome )
    Support multiple 'render_data' operations - you can keep passing new data ( or new groups / fields / data )
    Added support for colour
    Added support colour_func - a user-defined function to set the colour based on the current data
    
Version 0.4, released 09-May-2005
    
    Check for group footer definitions in final run before actually calling group_footer() on them
    Added currency:no_fill field type ... if you don't want your amounts filled out to 2 decimal places
    Remove requirement of setting the 'text' key to the group name for aggregate results in group footers
    
Version 0.3, released 08-May-2005
    
    Bold & Centre field headers
    Fixed bug in page counting that would 'remember' ( somehow ) the page count from previous reports
    Do page footers in a separate pass when saving so we can write 'Page N of M' instead of just 'Page N'

Version 0.2, released 27-Apr-2005
    
    Fixed bug in group handling that was preventing the special 'GrandTotal' group header from being rendered
    Added a much-requested demo application
    
Version 0.1, released 26-Apr-2005

    First Version :)
    Table-based text layout engine with cell borders
    Text alignment inside cells
    Basic aggregate commands ( sum, count )
    Page headers / footers
    Group headers / footers ( unlimited )
    POD documentation
