OpenPTC 1.0 Porting Kit Changes Log
-----------------------------------


Version 1.0.0 [1/3/1999]:

   - Did a final check and clean up of all source code commenting.
   - Added "upgrade.txt"/"UPGRADE" with instructions on how to upgrade
     from the previous version of the porting kit to the new version.
   - Cleaned up commenting in all source files.
   - Fixed a bug introduced in "ptc.h" including the wrong files
   - Added seperate clip areas to surfaces. Now you can set the clip
     area of a surface that is used in "Copy", "Load", "Save" and the
     "Clear" functions.
   - Converted "Timer" class to use doubles instead of floats for
     increased timer precision.
   - Renamed "Clip" class to "Clipper". Clipper::clip is more logical.
   - Made "Clip", "Copy" and "Clear" classes public. Now all
   - Added default constructors and destructors to "Copy" and "Clear"
   - Disabled copy constructors and assignment operators in the "Copy"
     and "Clear" classes by making them private.
     classes in the porting kit are public.
   - Updated "Console.cpp" and "Surface.cpp" to work with the reversed clip
     function parameters.
   - Switched the order of the parameters to all "Clip" class functions
     because it seems more natural with the area to clip first, and the
     clipping area next.
   - Renamed Clip::round to Clip::snap (internal)
   - Fixed console area setup in Console::open to use width()
     and height() instead of mode.width(), mode.height().
   - Cleaned up commenting in Console::height/pages/format etc.


Version 1.0.0 alpha [7/2/1999]:

   - Froze the porting kit and released version 1.0.0 alpha
   - Added commenting in Console.h about the size of the 
     console data arrays
   - Fixed independent source and destination area clipping
   - Cleaned up the console open functions to all act as a
     wrapper around the complex mode open function. There was
     too much code duplication between the last two console
     open function before this change.
   - Updated console documentation to reference pages parameter
   - Added "int pages" to all console open functions and a data
     access fuction int Console::pages()
   - Optimized Surface and Console classes to use m_area/area()
     in cases when an equivalent area is being generated.
   - Set the clipping back to pure integer for the single area
     clipping. floating point is only required for complex and
     interdependent source/destination area clipping.
   - Fixed an amazingly STUPID clipping bug. absolutely stupid.
     I cannot believe i coded it. its just that bad. ouch.
   - Modified clear routine to clear in black or white. At least
     this makes the clear example work semidecently before hermes
     kit is integrated into a distribution.
   - Fixed a minor bug in Clear.cpp that caused all clears to
     only clear a single pixel per line
   - Added negative delta to 0.0f delta force code in timer
   - Added destructors to all public API classes
   - Added __PTC__ signature define
   - Disabled advanced interdependent source/destination area 
     clip. Now source and destination rectangles are clipped 
     totally independently to work around the bugs in the 
     advanced clip routine (this is a temporary work around!)
   - Changed direct usage of m_format in Console.cpp to 
     this->format() for consistency across the entire class.
   - Fixed another huge bug in Console.cpp that only showed up
     when __DEBUG__ was defined in Console::check_locked
   - Fixed a major bug in Console.cpp that caused all console 
     opens to fail because the m_open flag was getting set too late
   - Added debugging define to config.h (__DEBUG__)
   - Replaced all references to the Hermes Interface Package
     with "Hermes Kit"
   - Replaced all instances of <memory.h> with <string.h>
     because some compilers have <mem.h> but all have <string.h>
   - Added required operators to Key and Mode class (=/==/!=)
   - Added "Mode" class and Console::modes and Console::open
     that accepts a mode parameter.
   - Added BaseConsole::configure as a public member
   - Added BaseConsole::information to get a platform specific
     information string
   - Added boolean emulation to porting kit
   - Added "Config.h" to configure the porting kit
   - Added BaseSurface::area helper function. Testing on the
     example programs.
   - Fixed format constructor to test for zero bits per pixel   
   - Added Console::title data access function to BaseConsole
   - Tested the Timer class extensively and fixed some very
     small tiny bugs. i'm confident that the timer class works
     correctly now.
   - Made a small bugfix in Timer::set, m_old was being set
     to 0 always, instead of 'time'.
   - Added two new constructors for "Timer", one accepting
     a float time value, and the other a copy constructor
   - Added __PTC_VERSION__ define to ptc.h
   - Added m_locked check to palette destructor
   - Added a new constructor to "Palette" that accepts a data
     initialization array
   - Moved areas to last in the parameter list for BaseSurface
     load and save area. It is much more logical this way!
   - Added commenting for hard to recognize codes, not all are
     commented yet, i need to find a reference on these codes!
   - Added commenting to Key.h about key codes
   - Fixed a major bug in Console::palette, m_palette was not
     updated with the new palette data !
   - Totally reworked the Clip.cpp, now interdendent clipping of
     source and destination rectangles should work correctly
     (this is currently untested --- beware!)
   - Fixed some nasty typos in the extension functions comments
   - Converted all text and source files to DOS text format
   - Added console extension commenting in Console.h
   - Added more commenting to Console::option
   - Fixed commenting in Console::lock about lock duration
   - Improved commenting of Console, clarified the situations
     under which console dimensions may change.
   - Added "pitch" to Surface::load and Surface::save
   - Changed surface class to use malloc instead of new
   - Verified that all commenting can be read easily in all
     editors (trimmed line lengths.)
   - Added more commenting to the console class
   - Started work on implementing proper clipping in clip.cpp
   - Added pitch to BaseSurface::load, BaseSurface::save
   - Updated and reviewed all porting kit documentation, did
     extensive rewriting of the console documentation to make
     it clearer
   - Added a lot of stricter lock/unlock checking to console
     and surface, now an error is thrown if a locked surface
     is destroyed, or a locked console is closed
   - Updated all text files from PTC 2.0 to OpenPTC 1.0
   - Removed all text files from porting kit distribution
     except license.txt, readme.txt and changes.txt 


Version 2.0.21 [17/12/98]:

   - Added #ifdef __DEBUG__ checks in Console.cpp to check
     if the console is locked in functions that are undefined
     when the console is locked
   - Added more commenting to Console.cpp and fixed a few minor
     harmless bugs


Version 2.0.20 [13/12/98]:

   - Stripped tab characters from porting kit source code
   - Added self assignment checks in all assignment operators
   - Added overloaded =/==/!= operators to "Timer" class
   - Added "Timer::resolution" function to get the resolution
     of the timer implementation
   - Fixed some compile errors that occured when __DEBUG__
     was defined (forgetting to include Error.h)
   - Updated download directories for HERMES and HIP in
     source code comments (Clear.cpp and Copy.cpp)


Version 2.0.19 [10/12/98]:

   - Fixed another nasty bug in the "Error" class cascading
     constructor (thanks to Mikko Tiihonen)


Version 2.0.18 [9/12/98]:

   - Fixed a nasty bug in the "Error" class cascading
     constructor (thanks to brn)
   - Added comments to "Timer::clock" requesting that the
     portable call to "clock" in <time.h> gets replaced
     with a higher resolution platform dependent function


Version 2.0.17 [7/12/98]:

   - Added a portable implementation of the "Timer" class
     using functions from <time.h> (untested)


Version 2.0.16 [6/12/98]:

   - Added "BaseSurface::option" so now both consoles and
     surfaces have option strings. The surface option string
     was added to control things such as dithering when
     converting between different pixel formats
   - Added "Copy::option" to pass options from surfaces
     and consoles down to the copy object


Version 2.0.15 [4/12/98]:

   - Added "Console::configure" function to read console option
     strings from a config file. Now the console constructor
     reads option strings from "ptc.cfg" if it exists and
     sends them to "Console::option" for processing


Version 2.0.14 [4/12/98]:

   - Added #ifdef __DEBUG__ checks throughout the code to assist
     in development and debugging. Common mistakes are now picked
     up before they cause problems in debug buld.
   - Added some more commenting throughout the code
   - Fixed some major bugs in the "Timer" class


Version 2.0.13 [2/12/98]:

   - Removed "Error::message" function, added constructor that
     performs the same functionality. Much cleaner this way
   - Tidied up the source code a little bit


Version 2.0.12 [1/12/98]:

   - Fixed bug in Base.h, "BaseConsole::open(const char[])" was not
     declared in BaseConsole, even though it was declared in Console!
   - Added "Console::clear()" to clear to black, much nicer to just
     be able to go console.clear() when you want to clear black
   - Changed "Error::rethrow" to "Error::message"
   - Changed "Timer::time" to "Timer::set"
   - Started work on a proper clipping scheme that will properly
     clip source and destination areas together instead of just 
     clipping them as two seperate areas. This will make
     "Surface::copy" a hell of a lot more useful
   - Updated "Surface" and "Console" classes to use new clipping
     function for source and destination clip


Version 2.0.11 [28/11/98]:

   - Fixed private inheritance bug in Surface.h (very serious bug!)
   - Added "Timer" class
   - Added "Key" class
   - Changed "Console::key" to return a "Key" object instead of an
     integer value.
   - Added "Console::flush" and "Console::finish" functions in the
     spirit of glFlush/glFinish.
   - Added key press buffer flushing code to "Console::close"
   - Updated "Index.h" and "ptc.h" to reference the new "Key" and
     "Timer" classes
   - Changed Format class direct color constructor slightly to be
     more robust with the bits per pixel check.
   - Added more commenting in the porting kit source code
   - Added lgpl.txt to the distribution 


Version 2.0.10 [05/11/98]:

   - Fixed another m_locked flag bug in Palette.cpp lock/unlock


Version 2.0.9 [04/11/98]:

   - Fixed minor bug in Palette.cpp (failing to set the m_locked flag
     to false in one construction)
   - Fixed bug in Error.cpp (class destructor failing to delete the error
     message string)


Version 2.0.8 [03/11/98]:

   - Added lock/unlock functions to Palette class
   - Changed Error class to automatically prepend error messages
     when it is rethrown


Version 2.0.8 [31/10/98]:

   - Made copy constructors of Surface and Console private to disallow
     copy construction
   - Added "Palette" class to manage palette data and lookup tables
   - Modified "Copy" object extensively to accept "Palette" objects
     for the source and destination palettes
   - Updated Surface.cpp and Console.cpp to use the new Palette class
   - Changed Error::report slightly
   - Added "Console::open(char title[])" function
   - Changed "Area" constructor to automatically switch coordinates
     when left>right or top>bottom


Version 2.0.7 [12/10/98]:

   - Seperated the example programs from the porting kit and released
     the first release of ptc example programs ptc-examples-2.0.0.zip
   - Added Console::option to pass a platform dependent option string
     to the console
   - Added "extend.txt" to describe how to extend the functionality
     of PTC for a specific platform
   - Added "options.txt" describing the usage of the new Console::option
     function to pass platform specific options to the console
   - Added "define.txt" to explain the signature #define concept


Version 2.0.6 [11/10/98]:

   - Removed palette from Clear::clear. It was not required!
   - Added "BaseSurface" and "BaseConsole" to classes list
   - Added "area.txt" to describe how the "Area" class is interpreted
   - Put comments into the "Console" class describing which functions
     are only valid while the console is open
   - Added more commenting to functions in the "Console" class
   - Fixed the Clip::clip function to check the point against both
     min and max sides 


Version 2.0.5 [01/10/98]:

   - Fixed the Clear::clear function to pass a palette
   - Added source AND destination palettes to the "Copy" object
     This means that it is theoretically possible to implement
     a quantize conversion from truecolor to indexed color


Version 2.0.4 [30/9/98]:

   - Fixed a silly bug in the Surface and Console classes in the
     hidden assignment operator members that stopped the porting kit
     from compiling under Visual C++ 5.0
   - Added lots more comments to "Console.cpp" almost finished now...
   - Removed "long64" from Types.h until it is actually used in the API


Version 2.0.3 [30/9/98]:

   - Added to comments of Console::update specifying that the contents
     of the back buffer are undefined after Console::update is called.
   - Added "classes.txt" to give a quick overview of each of the classes
     in the porting kit.
   - Added "Area", "Palette", and "Tunnel" examples to porting kit
   - Added missing newline after Error::report printf
   - Updated "Random.cpp" example program to work with the porting kit
   - Moved porting kit source into "source" directory and created 
     "examples" directory for example programs
   - Added private assignment operators to Surface and Console to have
     the effect of disallowing surface and console assignment
   - Fixed the Surface and Console classes to override all pure virtuals
   - Fixed the stupid errors that stopped 2.0.2 from compiling! 


Version 2.0.2 [29/9/98]:

   - Fixed several cut&paste bugs in Surface/Console::load
   - Added some more commenting to the Console class to highlight
     the differences between lockable and unlockable consoles
   - Added changes.txt to the porting kit distribution


Version 2.0.1 [27/9/98]:

   - Lots of changes, finalized the PTC 2.0 API
   - Added BaseSurface::palette function to get the surface palette
   - Added "Clear" and "Clip" objects to perform common functionality
   - Changed "Copy" object to no longer be a singleton
   - Added BaseSurface::Clear functions to clear surfaces
   - Implemented all classes and commented the Console class heavily
   - Added quick readme.txt explaining the porting kit


Version 2.0.0 [15/9/98]:

   - Initial alpha release of porting kit
