OpenPTC 1.0 Win32 Distribution Changes Log
------------------------------------------


Version 1.0.8 [9/4/99]:

   - Improved the primary restoring code to perfection. This latest
     fix makes the "DirectXPrimary::block" function block until the
     restore is successful, previously, a failed restore would cause
     an error to be thrown in some circumstances such as "DDERR_WRONGMODE"
     being thrown by "m_lpDDS_primary->Restore".
   - Added the "frequency [n]" option to allow control over the
     the frequency of the display mode opened. See "options.txt"
   - Added option strings to control whether the cursor is hidden or
     shown. See "options.txt" for more information.
   - Added some options to choose what method is used
     to display the console on the nearest mode, "default nearest"
     uses the fastest method (as below), "center nearest" centers
     the console on the nearest mode, and "stretch nearest"
     stretches to the nearest mode. See "options.txt" for
     more details.
   - Added code to choose between centering and stretching to
     the nearest display mode. By default the fastest method is
     used, ie. stretching is only used if there is hardware
     stretching support (quite common).
   - Implement fullscreen closest mode emulation with stretching
     and centering. This is majorly cool. If the user does not
     have the exact mode you requested, the nearest mode is used
     and the graphics card hardware is used to stretch up from
     the resolution you wanted up to the resolution of the display.
     Even better, on newer cards the stretch will be performed
     in hardware, potentially with bilinear filtering (TNT).
     Its excellent!
   - Added proper mode list support to the DirectX console, check
     out the "Modes" example now and bask in the power of a fully
     operational console mode list :)


Version 1.0.7 [7/4/99]:

   - Removed the activate/deactivate cursor code because it seems
     to be having some problems hiding the cursor again once it is
     shown on deactivate. blah.
   - Added code to memset the DDSURFACEDESC to zero before setting
     it up in DirectXPrimary::primary to create the LPDIRECTDRAWSURFACE.
     This is a minor change but it is recommended to do this in the
     ddraw documentation to avoid problems with poorly written drivers.
   - Added "WndProc" extension example to demonstrate how to work
     user managed HWND in fullscreen and windowed output.
   - Added "Win32Window::update(bool force)" to force window
     messages to get processed in situations where they must be
     processed, even if the window is user managed (for example,
     DirectXPrimary::block requires that window messages get 
     processed by Win32Window::update in order to operate).
   - Fixed DirectXHook::hook to ignore WM_CLOSE when the HWND is
     user managed (normally it closes the console to make DX close
     clean in fullscreen when ALT-F4 is pressed).
   - Fixed Win32Window::close to leave the user managed HWND alone
     and not destroy it :)
   - Changed Win32Window::update to not process user managed window
     messages. this means that when you use a HWND in Console::open
     it is your responsibility to process window messages (more
     flexibility).
   - Added support for user HWNDs in Console::open. This will give
     users a higher level of control over window management when
     they need it. See "extensions.txt" for more information.
   - Added code to show the cursor when focus is lost, and hide it
     when it is regained when the cursor should be hidden. This fixes
     some minor cursor hiding bugs, ie. no cursor when the application
     has been ALT-TAB'ed away from and the system menu is opened with
     a right click on the app in the task bar.
   - Added the workspace "Extensions" for future example programs
     that demonstrate extensions supported by OpenPTC Win32.
   - Added a extension functions for opening a console with a user
     managed HWND. "Console::open(HWND hWnd,...)".
   - Extended secondary to primary blts to not use DDBLTFX_NOTEARING
     when the primary is multipaged because it could potentially
     cause slowdown.


Version 1.0.6 [6/4/99]:

   - Fixed a major bug that was introduced in the last release.
     The problem occurs in windowed output because the Blt with
     sychronization ("DDBLTFX_NOTEARING") is not supported on
     all cards. I added code to fall back to a normal, unsynced
     blt if the hardware does not support synchonized blts.
     Now everything is stable and i am happy. heh :)


Version 1.0.5 [5/4/99]:

   - Wow! All major bugs in this distribution have been fixed!
     I'm happy to announce that OpenPTC Win32 has moved from
     ALPHA stage to BETA! :)
   - Added options to control whether vertical retrace syncing is
     enabled. These options only effect the Blt from secondary
     to primary, not the primary->Flip (flip always syncs to vrt).
     So basically, you only have control over vertical retrace
     in windowed output. By default all updates sycnchronize to
     the vertical retrace. Two options have been added to control
     retrace synchronization: "synchronized update" and 
     "unsynchronized update". See "options.txt" for details.
   - Added the "Win32Cursor" class to manage showing and hiding
     the cursor in windows.
   - Fixed the bug that caused a "DDERR_WRONGMODE" error when
     the application entry in the title bar was right clicked.
   - Implemented WM_PAINT in DirectXHook so that windowed output
     behaves correctly in situations where update is not being
     repeatedly called. This makes examples like "Pixel" and
     "Image" repaint themselves correctly when required.
   - Fixed some minor bugs that popped up in the Tunnel3D
     demo in the last release (added iostream casts to char*).
   - Added window centering and the options "center window"
     and "default window position" to turn it on and off.
     See "options.txt" for details.
   - Added a lot of options to control windowed output
     and the setup of primary and secondary surfaces.
     See "options.txt" for details.
   - Added resizable window output. Now you can resize the
     window and if you have a cool card like a Riva TNT
     (like i have right here...) the stretch will use bilinear
     interpolation! awesome! >B)
   - Fixed a majorly stupid fat bug in windowed output. Now
     everything works nicely. Previously the width/height of
     the secondary surface in windowed output was not correct,
     this caused stretching to occur when it shouldnt, and
     copying areas to the console to not work correctly.


Version 1.0.4 [3/4/99]:

   - Attached a clipper to the primary surface in windowed
     output so that it now behaves correctly when windows are
     placed on top of it, or it is moved offscreen. windowed
     output should be 100% stable now!
   - Implemented much improved windowed output that renders to
     an offscreen secondary surface then copies the contents
     to the primary surface on each call to Console::update.
     This fixes lots of nasty problems with windowed output.
   - Added code to make sure that the mouse cursor is always
     correctly hidden, however, on some systems explorer seems
     to take mouse focus back from the fullscreen app and show
     the cursor (!) when the app is run with a double click
     on the exe file in explorer. Still looking for a fix for
     this problem!
   - Made DirectXHook close the console on WM_CLOSE. This makes
     DirectX fullscreen shutdown cleanly when ALT-F4 is pressed,
     however calling exit() without first closing the console
     still causes an unclean shutdown (ie. window positions may
     be messed up).
   - Fixed windowed output to stop accidental window flashing or
     activation when the window loses focus (the ALT-TAB handling
     for fullscreen was incorrectly still in place in windowed
     mode causing some problems...)
   - Made the fullscreen window WS_EX_TOPMOST, and added code to
     make sure it gets properly minimized when the window looses
     focus in fullscreen. Now the switch out from a fullscreen mode
     should be clean (no topmost window covering others...).
   - Fixed the ALT-TAB handling code to advoid the occasional
     "DDERR_SURFACELOST" errors in the previous version. Switching
     away from a fullscreen console should be 100% stable now!
   - Fixed a cut&paste bug in DirectXConsole::option, the option
     "default bits" was not behaving correctly (thanks zoon).
   - Added code to make sure that the cursor is shown in the error
     message box after an error was reported from inside a fullscreen
     console. Before this fix, the mouse cursor was invisible over
     the error message box in some circumstances.
   - Almost (heheh) added assembler support for HERMES in Win32. It
     will be in very shortly, but a couple of things halted progress
     for the time being. See "changes.txt" in the "source/Hermes"
     directory for a list of changes i have made to improve HERMES
     under Win32.
   - Added two more extension functions to support the primary and
     secondary surfaces directly: "Console::lpDDS_primary" and
     "Console::lpDDS_secondary". See "extensions.txt" for details.
   - Added a "secondary" ddraw surface to the console. This opens the
     door for a lot of funky things like stable windowed output,
     stretching from a low resolution secondary surface to a higher
     resolution primary surface etc.


Version 1.0.3 [31/3/99]:

   - Fixed mouse cursor hiding to work more correctly, although there
     still seems to be problems when an application is launched from
     explorer with a double mouse click on some computers... (?)
   - Added code to save the position of the foreground window before
     switching modes, and to restore it on leaving the mode. This
     should fix the annoying bug where VC gets resized to the width
     and height of the display mode. If you still experience problems
     with window/icon positions with PTC, please tell me asap. so i
     can take more comprehensive measures to make sure it does not
     happen (if this does not fix it, i will save and restore the
     position of every single window and icon during mode switches!)
   - Found some minor problems in the merger Console::open functions
     not behaving exactly as i would like them to regarding console
     options in a merged distribution (ie. DirectX + GDI). To fix
     the problem for now i have constructed a little hack, to fix it
     more completely may require a redesign of the merger console.
     For now, this will do :)
   - Fixed a minor bug in the merger Console::option function. Some
     options were not working correctly.
   - Found the primary reason why ALT-TAB was exiting the application
     immediately... ALT is a keypress in PTC, and the main key press
     loop exits immediately in most examples as soon as any key is
     pressed. To get around this i have temporarily disabled ALT
     key presses and modifiers, i will enable an option in the
     future to control whether system keys should be allowed through
     or restricted to the application only.
   - Implemented DirectXHook to handle all required window messages
   - Fixed Win32Hook to correctly handle multiple hooks on the
     same HWND. Now a lot of nasty problems can be fixed...
   - Removed the DirectXConsole and GDIConsole from being exported!
     Now the ptc.dll is much smaller, these consoles were exported
     by accident! Only the main Console was supposed to be exported
     in the dll!
   - Added special defines to increase compilation speed of
     windows.h and to restrict ddraw.h to dx3 compliance.
   - Found some details with option strings that i forget to
     mention in "options.txt" last release. If the console options
     didnt work in 1.0.2, read "options.txt" again and read the
     notes about options in a merged distibution.


Version 1.0.2 [25/3/99]:

   - Simplified the image example source code.
   - Implemented proper key stroke buffering and control,
     alt, shift modifiers. Updated the "Keyboard" example to
     check the "shift" modifier.
   - Fixed a bug in the Palette class. The bug caused the first
     palette set to be the only one used in some cases, now all
     palette operations will work correctly. (note. this bug did
     not show up in the examples because they only use a single
     palette).
   - Added basic "merger kit" functionality. This is currently
     transparent to you using PTC, but in the future will let you
     choose between using the default console, DirectX console,
     or GDI console at runtime.
   - Fixed a very minor bug in the Console::lpDD/lpDD2/lpDDS
     functions. They were not being declared as PTCAPI, which is
     basically stdcall, this may have caused some problems when
     interfacing to the dll. If so, its all fixed now :)
   - Added "GDI" source tree as a placeholder for when GDI console
     support gets added to PTC for Win32.


Version 1.0.1 [22/3/99]:

   - Added documentation for Win32 PTC extensions in "extensions.txt"
   - Added option strings to the console. See "options.txt" for
     more information about the new option strings.
   - Converted all workspace and project files to Visual C++ 6.0.
     This is the best format to use as it works perfectly with
     VC6 without conversion and is backwards compatable with VC5.


Version 1.0.0 [19/3/99]:

   - Fixed surface clear clipping bug with new porting kit 1.0.1 code
   - Updated to the latest porting kit, examples kit, demos kit
     and testing kit. This implementation is OpenPTC 1.0 compliant.
   - Added console pages functionality from porting kit
   - Added "Copy" example program
   - Added "Console" example program
   - Fixed major clipping bug and upgraded clear example
   - Upgraded timer class to use QueryPerformanceCounter API
   - Problems with palette 255 entry being set to white DirectDraw bug
   - Upgraded palette functionality to work properly without a workaround
   - Upgraded DirectDraw Surface interfaces to LPDIRECTDRAWSURFACE2
   - Upgraded DirectDraw interface to LPDIRECTDRAW2 in DirectXDisplay
   - Modified PTCAPI to _stdcall and added DLLAPI (dllexport/import)
     to make sure that the dll is always properly linked to
   - Added PTCAPI exporting define to properly export api functions
   - Changed all examples over to use ptc.dll by default
   - Added dynamic library support (ptc.dll)
   - Partitioned code into Core, Win32 and DirectX directories
   - Brought over old source code from Win32 PTC 2.0.8
   - Built up Win32 implementation framework from porting kit
